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