From b67a17cc810f087f0708c3cb6effa91b7752140f Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期三, 06 三月 2024 14:58:43 +0800
Subject: [PATCH] 新增产量登记表页面和仪器正常弹窗页面、弹窗可拖拽功能

---
 src/common/untils/dialog.js                                                 |   51 ++++++++++
 src/main.js                                                                 |    1 
 src/views/productManage/productRegisterForm/components/addProductDialog.vue |  187 +++++++++++++++++++++++++++++++++++++
 src/views/productManage/productRegisterForm/addProductRegisterPage.vue      |   19 +++
 4 files changed, 254 insertions(+), 4 deletions(-)

diff --git a/src/common/untils/dialog.js b/src/common/untils/dialog.js
new file mode 100644
index 0000000..e0e29fe
--- /dev/null
+++ b/src/common/untils/dialog.js
@@ -0,0 +1,51 @@
+import Vue from "vue"
+
+// v-dialogDrag: 寮圭獥鎷栨嫿
+Vue.directive("dialogDrag", {
+  bind(el, binding, vnode, oldVnode) {
+    console.log(binding, vnode, oldVnode)
+    const dialogHeaderEl = el.querySelector(".el-dialog__header")
+    const dragDom = el.querySelector(".el-dialog")
+    dialogHeaderEl.style.cursor = "move"
+
+    // 鑾峰彇鍘熸湁灞炴�� ie dom鍏冪礌.currentStyle 鐏嫄璋锋瓕 window.getComputedStyle(dom鍏冪礌, null);
+    const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null)
+
+    dialogHeaderEl.onmousedown = (e) => {
+      // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
+      const disX = e.clientX - dialogHeaderEl.offsetLeft
+      const disY = e.clientY - dialogHeaderEl.offsetTop
+
+      // 鑾峰彇鍒扮殑鍊煎甫px 姝e垯鍖归厤鏇挎崲
+      let styL, styT
+
+      // 娉ㄦ剰鍦╥e涓� 绗竴娆¤幏鍙栧埌鐨勫�间负缁勪欢鑷甫50% 绉诲姩涔嬪悗璧嬪�间负px
+      if (sty.left.includes("%")) {
+        styL = +document.body.clientWidth * (+sty.left.replace(/\\%/g, "") / 100)
+        styT = +document.body.clientHeight * (+sty.top.replace(/\\%/g, "") / 100)
+      } else {
+        styL = +sty.left.replace(/\px/g, "")
+        styT = +sty.top.replace(/\px/g, "")
+      }
+
+      document.onmousemove = function (e) {
+        // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈
+        const l = e.clientX - disX
+        const t = e.clientY - disY
+
+        // 绉诲姩褰撳墠鍏冪礌
+        dragDom.style.left = `${l + styL}px`
+        dragDom.style.top = `${t + styT}px`
+
+        // 灏嗘鏃剁殑浣嶇疆浼犲嚭鍘�
+        // binding.value({x:e.pageX,y:e.pageY})
+      }
+
+      document.onmouseup = function (e) {
+        console.log(e)
+        document.onmousemove = null
+        document.onmouseup = null
+      }
+    }
+  }
+})
diff --git a/src/main.js b/src/main.js
index 8acc4e8..2b0bb22 100644
--- a/src/main.js
+++ b/src/main.js
@@ -6,6 +6,7 @@
 import "element-ui/lib/theme-chalk/index.css"
 import "@/assets/style/index.scss"
 import "@/components"
+import "@/common/untils/dialog"
 
 Vue.use(ElementUI)
 // 淇敼榛樿鐐瑰嚮閬僵灞備负涓嶅叧闂�
diff --git a/src/views/productManage/productRegisterForm/addProductRegisterPage.vue b/src/views/productManage/productRegisterForm/addProductRegisterPage.vue
index ce36553..4957b7f 100644
--- a/src/views/productManage/productRegisterForm/addProductRegisterPage.vue
+++ b/src/views/productManage/productRegisterForm/addProductRegisterPage.vue
@@ -75,7 +75,7 @@
               </el-col>
               <el-col :span="3">
                 <el-form-item label="缁勫埆" prop="group">
-                  <el-select v-model="ruleForm.group" placeholder="璇烽�夋嫨杞﹂棿" size="small">
+                  <el-select v-model="ruleForm.group" placeholder="璇烽�夋嫨缁勫埆" size="small">
                     <el-option
                       v-for="item in groupOptions"
                       :key="item.id"
@@ -168,7 +168,7 @@
           </el-form>
         </div>
         <div class="b-t-right">
-          <div class="b-t-r-icon" :class="isDeviceConnectStatus ? 'c-p' : 'c-n'">
+          <div class="b-t-r-icon" :class="isDeviceConnectStatus ? 'c-p' : 'c-n'" @click="deviceConnectClick">
             <i class="el-icon-d-arrow-left"></i>
           </div>
         </div>
@@ -211,15 +211,18 @@
         </el-table>
       </div>
     </div>
+    <!-- 浠櫒杩炴帴姝e父寮圭獥 -->
+    <addProductDialog ref="addProductDialog" />
   </div>
 </template>
 
 <script>
+import addProductDialog from "./components/addProductDialog"
 export default {
   name: "addProductRegisterPage",
   props: {},
   mixins: [],
-  components: {},
+  components: { addProductDialog },
   computed: {},
   data() {
     return {
@@ -271,7 +274,15 @@
     }
   },
   created() {},
-  methods: {}
+  methods: {
+    // 浠櫒杩炴帴寮圭獥
+    deviceConnectClick() {
+      console.log("dddd")
+      if (this.isDeviceConnectStatus) {
+        this.$refs.addProductDialog.editDialogVisible = true
+      }
+    }
+  }
 }
 </script>
 
diff --git a/src/views/productManage/productRegisterForm/components/addProductDialog.vue b/src/views/productManage/productRegisterForm/components/addProductDialog.vue
new file mode 100644
index 0000000..7dca258
--- /dev/null
+++ b/src/views/productManage/productRegisterForm/components/addProductDialog.vue
@@ -0,0 +1,187 @@
+<template>
+  <el-dialog
+    v-dialogDrag
+    :close-on-click-modal="false"
+    :visible.sync="editDialogVisible"
+    width="533px"
+    class="add-event-dialog"
+    @close="handleClose"
+  >
+    <div class="dialog-content-box">
+      <el-form
+        :model="proForm"
+        :rules="rules"
+        ref="ruleForm"
+        label-width="60px"
+        label-position="right"
+        class="demo-ruleForm"
+      >
+        <el-row>
+          <el-col :span="11">
+            <el-form-item label="鏃ユ湡" prop="date">
+              <el-date-picker
+                type="date"
+                placeholder="骞�/鏈�/鏃�"
+                v-model="proForm.date"
+                size="small"
+                style="width: 100%"
+              ></el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="9">
+            <el-form-item label="缁勫埆" prop="group">
+              <el-select v-model="proForm.group" placeholder="璇烽�夋嫨缁勫埆" size="small">
+                <el-option v-for="item in groupOptions" :key="item.id" :label="item.value" :value="item.id"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="11">
+            <el-form-item label="杞﹂棿" prop="workshop">
+              <el-select v-model="proForm.workshop" placeholder="璇烽�夋嫨杞﹂棿" size="small">
+                <el-option label="杞﹂棿涓�" value="杞﹂棿涓�"></el-option>
+                <el-option label="杞﹂棿浜�" value="杞﹂棿浜�"></el-option>
+                <el-option label="杞﹂棿涓�" value="杞﹂棿涓�"></el-option>
+                <el-option label="杞﹂棿鍥�" value="杞﹂棿鍥�"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="9">
+            <el-form-item label="瑙勬牸" prop="spec">
+              <el-input v-model="proForm.spec" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item label="搴勫彛" prop="lots">
+              <el-select v-model="proForm.lots" placeholder="璇烽�夋嫨搴勫彛" size="small" style="width: 100%">
+                <el-option label="搴勫彛涓�" value="搴勫彛涓�"></el-option>
+                <el-option label="搴勫彛浜�" value="搴勫彛浜�"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="4">
+            <el-form-item label="" label-width="20px">
+              <el-button type="primary" size="small">鍒囨崲</el-button>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item prop="tareWeight" label-width="80px">
+              <span slot="label">
+                <span class="formLabel">鐨噸</span>
+              </span>
+              <el-input v-model="proForm.tareWeight" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item prop="netWeight" label-width="80px">
+              <span slot="label">
+                <span class="formLabel">鍑�閲�</span>
+              </span>
+              <el-input v-model="proForm.netWeight" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item prop="carNum" label-width="80px">
+              <span slot="label">
+                <span class="formLabel">杞﹀彿</span>
+              </span>
+              <el-input v-model="proForm.carNum" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item prop="numTimes" label-width="80px">
+              <span slot="label">
+                <span class="formLabel">鍥炴暟</span>
+              </span>
+              <el-input v-model="proForm.numTimes" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="20">
+            <el-form-item prop="pieces" label-width="80px">
+              <span slot="label">
+                <span class="formLabel">鐗囨暟</span>
+              </span>
+              <el-input v-model="proForm.pieces" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="handleClose" size="mini">鍙栨秷</el-button>
+      <el-button type="primary" @click="onSubmit('form')" size="mini">纭畾</el-button>
+    </div>
+  </el-dialog>
+</template>
+<script>
+export default {
+  props: {},
+  components: {},
+  data() {
+    return {
+      editDialogVisible: false,
+      proForm: {},
+      rules: {
+        date: [{ required: true, message: "璇烽�夋嫨鏃ユ湡", trigger: "change" }],
+        number: [{ required: true, message: "璇疯緭鍏ョ紪鍙�", trigger: "blur" }],
+        workshop: [{ type: "date", required: true, message: "璇烽�夋嫨杞﹂棿", trigger: "change" }]
+      },
+      groupOptions: [
+        { id: 1, value: 1 },
+        { id: 2, value: 2 },
+        { id: 3, value: 3 },
+        { id: 4, value: 4 },
+        { id: 5, value: 5 },
+        { id: 6, value: 6 },
+        { id: 7, value: 7 },
+        { id: 8, value: 8 },
+        { id: 9, value: 9 }
+      ]
+    }
+  },
+  created() {},
+  methods: {
+    handleClose() {
+      this.editDialogVisible = false
+    },
+    // 纭畾
+    onSubmit(form) {
+      console.log(form)
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.add-event-dialog {
+  .formLabel {
+    font-size: 20px;
+    font-weight: 700;
+    color: #333;
+  }
+  .dialog-footer {
+    background-color: #fff;
+  }
+}
+::v-deep {
+  .el-dialog__header {
+    border-bottom: 0px solid #e5e5e5;
+  }
+  .el-dialog__body {
+    padding: 0px 20px 10px;
+  }
+  .el-form-item__label {
+    font-size: 16px;
+    color: #333;
+    font-weight: 700;
+  }
+}
+</style>
+<style>
+.add-event-dialog .el-dialog {
+  position: absolute;
+  right: 40px;
+  top: 40px;
+}
+/* .add-event-dialog .el-dialog__header {
+  display: none;
+} */
+</style>

--
Gitblit v1.8.0