Browse Source

弹窗拖动

mh
menghao 1 month ago
parent
commit
583d9fc13c
  1. 2
      ruoyi-ui/.env.development
  2. 4
      ruoyi-ui/src/main.js
  3. 55
      ruoyi-ui/src/views/cesiumMap/index.vue
  4. 5
      ruoyi-ui/src/views/dialogs/OnlineMembersDialog.vue
  5. 2
      ruoyi-ui/vue.config.js

2
ruoyi-ui/.env.development

@ -8,7 +8,7 @@ ENV = 'development'
VUE_APP_BASE_API = '/dev-api'
# 访问地址(绕过 /dev-api 代理,用于解决静态资源/图片访问 401 认证问题)
VUE_APP_BACKEND_URL = 'http://127.0.0.1:8080'
VUE_APP_BACKEND_URL = 'http://192.168.1.104:8080'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true

4
ruoyi-ui/src/main.js

@ -78,6 +78,10 @@ Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size
})
// 全局 el-dialog 可拖动(必须在 Element 之后注册)
import dialogDrag from './plugins/dialogDrag'
Vue.use(dialogDrag)
Vue.config.productionTip = false
new Vue({

55
ruoyi-ui/src/views/cesiumMap/index.vue

@ -241,15 +241,14 @@
</span>
</el-dialog>
<!-- 导弹发射参数弹窗可拖动 -->
<!-- 导弹发射参数弹窗可拖动由全局 dialogDrag 插件处理 -->
<el-dialog
ref="missileDialog"
title="导弹发射参数"
:visible.sync="missileDialogVisible"
:modal="false"
width="300px"
custom-class="missile-params-dialog dialog-draggable"
@open="onMissileDialogOpen"
custom-class="missile-params-dialog"
>
<el-form :model="missileForm" label-width="80px" size="small">
<el-form-item label="角度(°)">
@ -621,9 +620,6 @@ export default {
missileDialogVisible(val) {
if (!val) {
this.clearMissilePreview()
if (this._missileDialogDragCleanup) {
this._missileDialogDragCleanup()
}
}
}
},
@ -3123,53 +3119,6 @@ export default {
})
},
/** 导弹参数弹窗打开后绑定标题栏拖动 */
onMissileDialogOpen() {
this.$nextTick(() => {
const dialog = document.querySelector('.missile-params-dialog')
const wrapper = dialog && dialog.closest('.el-dialog__wrapper')
if (!wrapper || !dialog) return
const header = wrapper.querySelector('.el-dialog__header')
if (!header) return
header.style.cursor = 'move'
let startX, startY, startLeft, startTop
const onMouseDown = (e) => {
if (e.button !== 0) return
startX = e.clientX
startY = e.clientY
const rect = wrapper.getBoundingClientRect()
startLeft = rect.left
startTop = rect.top
wrapper.style.position = 'fixed'
wrapper.style.left = startLeft + 'px'
wrapper.style.top = startTop + 'px'
wrapper.style.margin = '0'
document.addEventListener('mousemove', onMouseMove)
document.addEventListener('mouseup', onMouseUp)
}
const onMouseMove = (e) => {
const dx = e.clientX - startX
const dy = e.clientY - startY
wrapper.style.left = (startLeft + dx) + 'px'
wrapper.style.top = (startTop + dy) + 'px'
startLeft += dx
startTop += dy
startX = e.clientX
startY = e.clientY
}
const onMouseUp = () => {
document.removeEventListener('mousemove', onMouseMove)
document.removeEventListener('mouseup', onMouseUp)
}
header.addEventListener('mousedown', onMouseDown)
this._missileDialogDragCleanup = () => {
header.removeEventListener('mousedown', onMouseDown)
header.style.cursor = ''
delete this._missileDialogDragCleanup
}
})
},
/** 清除导弹预览(轨迹线 + 朝向图标) */
clearMissilePreview() {
if (this.viewer && this.viewer.entities) {

5
ruoyi-ui/src/views/dialogs/OnlineMembersDialog.vue

@ -3,7 +3,7 @@
<!-- 遮罩层 -->
<div class="dialog-overlay" @click="closeDialog"></div>
<!-- 弹窗内容 -->
<!-- 弹窗内容由全局 dialogDrag 插件支持拖动 -->
<div class="dialog-content">
<div class="dialog-header">
<h3>{{ $t('onlineMembersDialog.title') }}</h3>
@ -276,7 +276,7 @@ export default {
closeDialog() {
this.$emit('input', false);
},
showRollbackConfirm() {
this.showRollbackDialog = true;
},
@ -418,6 +418,7 @@ export default {
justify-content: space-between;
padding: 16px 20px;
border-bottom: 1px solid #e8e8e8;
cursor: move;
}
.dialog-header h3 {

2
ruoyi-ui/vue.config.js

@ -15,7 +15,7 @@ const CompressionPlugin = require('compression-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题
const baseUrl = 'http://127.0.0.1:8080' // 后端接口
const baseUrl = 'http://192.168.1.104:8080' // 后端接口
const port = process.env.port || process.env.npm_config_port || 80 // 端口
// 定义 Cesium 源码路径

Loading…
Cancel
Save