From 49fea21571a4060aa8570cbf220088352e2ccf15 Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期三, 16 九月 2026 17:33:01 +0800
Subject: [PATCH] docs(工作日结): 补记 2026-09-16 收工记录(origin 已推 80e0879、gitea 仍不通、未提交项与明日计划)
---
traffic-audit-web/src/directives/dialogDrag.js | 61 ++++++++++++++++++++++++++++++
1 files changed, 61 insertions(+), 0 deletions(-)
diff --git a/traffic-audit-web/src/directives/dialogDrag.js b/traffic-audit-web/src/directives/dialogDrag.js
new file mode 100644
index 0000000..90a6221
--- /dev/null
+++ b/traffic-audit-web/src/directives/dialogDrag.js
@@ -0,0 +1,61 @@
+/**
+ * v-dialog-drag锛氳 Element UI 2.x 鐨� el-dialog 鑳界敤鏍囬鏍忔嫋鍔ㄣ��
+ * Element UI 2.x 鐨� el-dialog 娌℃湁 draggable 灞炴�э紙閭f槸 Element Plus 鐨勫姛鑳斤級锛�
+ * 鎵�浠ヨ繖閲岀敤鎸囦护瀹炵幇锛氬彧鏀� .el-dialog 鐨� transform锛屼笉鏀瑰竷灞�锛�
+ * 寮圭獥鍏抽棴锛坵rapper 琚疆涓� display:none锛夋椂鑷姩澶嶄綅锛屼笅娆℃墦寮�浠嶅湪鍘熶綅銆�
+ * 鐢ㄦ硶锛�<el-dialog v-dialog-drag custom-class="xxx">
+ */
+export default {
+ inserted(el) {
+ const dialog = el.querySelector('.el-dialog')
+ const header = el.querySelector('.el-dialog__header')
+ if (!dialog || !header) return
+ let startX = 0
+ let startY = 0
+ let baseX = 0
+ let baseY = 0
+ let curX = 0
+ let curY = 0
+ let dragging = false
+
+ const reset = () => {
+ curX = 0
+ curY = 0
+ dialog.style.transform = ''
+ }
+ const onMove = (e) => {
+ if (!dragging) return
+ curX = baseX + (e.clientX - startX)
+ curY = baseY + (e.clientY - startY)
+ dialog.style.transform = 'translate(' + curX + 'px, ' + curY + 'px)'
+ if (e.preventDefault) e.preventDefault()
+ }
+ const onUp = () => {
+ if (!dragging) return
+ dragging = false
+ document.removeEventListener('mousemove', onMove)
+ document.removeEventListener('mouseup', onUp)
+ }
+ const onDown = (e) => {
+ if (e.button !== 0) return
+ const t = e.target
+ if (t && t.closest && t.closest('.el-dialog__headerbtn')) return
+ dragging = true
+ startX = e.clientX
+ startY = e.clientY
+ baseX = curX
+ baseY = curY
+ document.addEventListener('mousemove', onMove)
+ document.addEventListener('mouseup', onUp)
+ if (e.preventDefault) e.preventDefault()
+ }
+
+ header.addEventListener('mousedown', onDown)
+ if (typeof MutationObserver !== 'undefined') {
+ const mo = new MutationObserver(() => {
+ if (el.style.display === 'none') reset()
+ })
+ mo.observe(el, { attributes: true, attributeFilter: ['style'] })
+ }
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.1