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