From 5b25f08e47f876ff86061014e3df353eb22a8d3a Mon Sep 17 00:00:00 2001
From: gaoshp <291585735@qq.com>
Date: 星期日, 31 三月 2024 22:04:10 +0800
Subject: [PATCH] 新建工位

---
 src/views/console/workstation/index.vue  |    8 -
 src/api/model/workstation.js             |    9 ++
 src/views/console/workstation/Dialog.vue |  190 ++++++++++++++++++++++++++++------------------
 package.json                             |    5 
 4 files changed, 128 insertions(+), 84 deletions(-)

diff --git a/package.json b/package.json
index f5156b8..21c48d2 100644
--- a/package.json
+++ b/package.json
@@ -15,10 +15,12 @@
 		"core-js": "3.29.0",
 		"cropperjs": "1.5.13",
 		"crypto-js": "4.1.1",
+		"deepmerge": "^1.5.2",
 		"echarts": "5.4.1",
 		"element-plus": "2.2.32",
 		"nprogress": "0.2.0",
 		"qrcodejs2": "0.0.2",
+		"qs": "6.7.0",
 		"sortablejs": "1.15.0",
 		"tinymce": "6.3.2",
 		"vue": "3.2.47",
@@ -27,8 +29,7 @@
 		"vuedraggable": "4.0.3",
 		"vuex": "4.1.0",
 		"xgplayer": "2.32.2",
-		"xgplayer-hls": "2.5.2",
-		"qs": "6.7.0"
+		"xgplayer-hls": "2.5.2"
 	},
 	"devDependencies": {
 		"@babel/core": "7.21.00",
diff --git a/src/api/model/workstation.js b/src/api/model/workstation.js
index d2b797f..1c03096 100644
--- a/src/api/model/workstation.js
+++ b/src/api/model/workstation.js
@@ -1,7 +1,7 @@
 /*
  * @Date: 2024-03-24 11:37:47
  * @LastEditors: gaoshp
- * @LastEditTime: 2024-03-31 16:51:53
+ * @LastEditTime: 2024-03-31 21:34:40
  * @FilePath: /cps-web/src/api/model/workstation.js
  */
 import config from "@/config"
@@ -25,6 +25,13 @@
 			return await http.get(this.url, params);
 		}
 	},
+    calendarList: {
+		url: `${config.API_URL}/blade-cps/calendar/list`,
+		name: "鑾峰彇鐢熶骇鏃ュ巻",
+		get: async function(params){
+			return await http.get(this.url, params);
+		}
+	},
 	saveWorkstationGroup: {
 		url: `${config.API_URL}/blade-cps/group`,
 		name: "淇濆瓨宸ヤ綅缁�",
diff --git a/src/views/console/workstation/Dialog.vue b/src/views/console/workstation/Dialog.vue
index 5295498..86700f0 100644
--- a/src/views/console/workstation/Dialog.vue
+++ b/src/views/console/workstation/Dialog.vue
@@ -7,107 +7,123 @@
                     鍩虹淇℃伅
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="宸ュ彿" prop="userName">
-                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
                     <el-form-item label="宸ヤ綅缂栧彿" prop="userName">
-                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                        <el-input style="width: 240px" v-model="form.userName" placeholder="宸ヤ綅缂栧彿" clearable></el-input>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
                     <el-form-item label="宸ヤ綅鍚嶇О" prop="userName">
-                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                        <el-input style="width: 240px" v-model="form.userName" placeholder="宸ヤ綅鍚嶇О" clearable></el-input>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
                     <el-form-item label="宸ヤ綅绫诲瀷" prop="userName">
-                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options.types" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
                     <el-form-item label="鎵�灞炲伐浣嶇粍" prop="userName">
-                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                        <el-tree-select v-model="form.userName" :data="options.group" :render-after-expand="false"
+                            style="width: 240px" />
+                        <!-- <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select> -->
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
                     <el-form-item label="鐘舵��" prop="userName">
-                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options.status" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="24">
-                    <el-form-item label="澶村儚" prop="avatar">
-                        <sc-upload v-model="form.avatar" title="涓婁紶澶村儚"></sc-upload>
+                    <el-form-item label="宸ヤ綅鍥剧墖" prop="avatar">
+                        <sc-upload v-model="form.avatar" title="宸ヤ綅鍥剧墖"></sc-upload>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="鐢熶骇鏃ュ巻" prop="userName">
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options.calendarList" :key="item.id" :label="item.name"
+                                :value="item.id" />
+                        </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="24" style="padding:12px 0;">
                     鏈哄櫒淇℃伅
                 </el-col>
-                
+
                 <el-col :span="12">
-                    <el-form-item label="宸ュ彿" prop="userName">
-                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                    <el-form-item label="閫夋嫨鏈哄櫒" prop="userName">
+                        <!-- <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options.linkWays" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select> -->
+                        <el-radio-group v-model="form.userName">
+                            <el-radio v-for="item in options.linkWays" :key="item.value" :value="item.value">{{item.label}}</el-radio>
+                        </el-radio-group>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="濮撳悕" prop="name">
-                        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ畬鏁寸殑鐪熷疄濮撳悕" clearable></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="鎵嬫満鍙�" prop="name">
-                        <el-input v-model="form.name" placeholder="璇疯緭鍏ユ墜鏈哄彿" clearable></el-input>
+                    <el-form-item label="鏈哄櫒缂栧彿" prop="userName">
+                        <el-input style="width: 240px" v-model="form.userName" placeholder="鏈哄櫒缂栧彿" clearable></el-input>
                     </el-form-item>
                 </el-col>
                 <el-col :span="24" style="padding:12px 0;">
                     鎵╁睍淇℃伅
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="鐘舵��" prop="name">
-                        <el-select v-model="form.group" multiple filterable style="width: 100%">
-                            <el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id" />
+                    <el-form-item label="宸ョ" prop="userName">
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options.work_type" :key="item.dictKey" :label="item.dictValue"
+                                :value="item.dictKey" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="宀椾綅" prop="dept">
-                        <el-select v-model="form.group" multiple filterable style="width: 100%">
-                            <el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id" />
+                    <el-form-item label="鍔犲伐灞炴��" prop="userName">
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options.machining_type" :key="item.dictKey" :label="item.dictValue"
+                                :value="item.dictKey" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="閭" prop="name">
-                        <el-input v-model="form.name" placeholder="璇疯緭鍏ラ偖绠�" clearable></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="閮ㄩ棬" prop="dept">
-                        <el-select v-model="form.group" multiple filterable style="width: 100%">
-                            <el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id" />
+                    <el-form-item label="绋嬪簭浼犺緭鏂瑰紡" prop="userName">
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option   label="FTP"  value="1" />
+                            <el-option   label="涓插彛"  value="" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="PIN鐮�" prop="name">
-                        <el-input v-model="form.name" placeholder="璇疯緭鍏IN鐮�" clearable></el-input>
+                    <el-form-item label="FTP鐩綍" prop="userName">
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="鍏ヨ亴鏃堕棿" prop="name">
-                        <el-date-picker style="width: 100%;" v-model="value1" type="date" placeholder="Pick a day"
-                            :size="size" />
+                    <el-form-item label="宸ヤ綔鍙�" prop="userName">
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="鍏宠仈璐﹀彿" prop="name">
-                        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ叧鑱旇处鍙�" clearable></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="鏁版嵁鏉冮檺閰嶇疆" prop="name">
-                        <el-input v-model="form.name" placeholder="璇疯緭鍏ユ暟鎹潈闄愰厤缃�" clearable></el-input>
+                    <el-form-item label="鏁版嵁鏉冮檺" prop="userName">
+                        <el-select v-model="type" style="width: 240px">
+                            <el-option v-for="item in options" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select>
                     </el-form-item>
                 </el-col>
             </el-row>
@@ -120,16 +136,38 @@
 </template>
 
 <script>
+import deepmerge from 'deepmerge'
+import http from "@/utils/request"
 export default {
     emits: ['success', 'closed'],
+    props: {
+        option: {
+            type: Object
+        }
+    },
+    computed: {
+        options() {
+            let group = deepmerge([], this.option.group)
+            group[0].disabled = true
+            return {
+                ...this.option,
+                group,
+                calendarList: this.calendarList,
+                linkWays: this.linkWays,
+                work_type: this.work_type,
+                machining_type: this.machining_type
+            }
+        }
+    },
     data() {
         return {
             mode: "add",
             titleMap: {
-                add: '娣诲姞鍛樺伐',
-                edit: '淇敼鍛樺伐',
-                show: '鏌ョ湅'
+                add: '鏂板缓宸ヤ綅',
+                edit: '缂栬緫宸ヤ綅',
+                // show: '鏌ョ湅'
             },
+            params: {},
             visible: false,
             isSaveing: false,
             //琛ㄥ崟鏁版嵁
@@ -183,39 +221,41 @@
                 ]
             },
             //鎵�闇�鏁版嵁閫夐」
-            groups: [],
-            groupsProps: {
-                value: "id",
-                multiple: true,
-                checkStrictly: true
-            },
-            depts: [],
-            deptsProps: {
-                value: "id",
-                checkStrictly: true
-            }
+            calendarList: [],
+            work_type: [],
+            machining_type: [],
+            linkWays: [
+                {
+                    label: '鍏宠仈鏈哄櫒',
+                    value: '0'
+                }, {
+                    label: '鍒涘缓鍚屽悕鏈哄櫒',
+                    value: '1'
+                }
+            ]
         }
     },
-    mounted() {
-        // this.getGroup()
-        // this.getDept()
+    created() {
+        this.$API.workstation.calendarList.get().then(res => {
+            this.calendarList = res.data
+        })
+        this.$API.system.dic.getDic.get({ code: 'work_type' }).then(res => {
+            this.work_type = res.data
+        })
+        this.$API.system.dic.getDic.get({ code: 'machining_type' }).then(res => {
+            this.machining_type = res.data
+        })
     },
     methods: {
         //鏄剧ず
-        open(mode = 'add') {
+        open(mode = 'add', params) {
             this.mode = mode;
             this.visible = true;
+            this.params = params
             return this
         },
-        //鍔犺浇鏍戞暟鎹�
-        async getGroup() {
-            var res = await this.$API.system.role.list.get();
-            this.groups = res.data.rows;
-        },
-        async getDept() {
-            var res = await this.$API.system.dept.list.get();
-            this.depts = res.data;
-        },
+
+
         //琛ㄥ崟鎻愪氦鏂规硶
         submit() {
             this.$refs.dialogForm.validate(async (valid) => {
diff --git a/src/views/console/workstation/index.vue b/src/views/console/workstation/index.vue
index 4c73802..8dfffa3 100644
--- a/src/views/console/workstation/index.vue
+++ b/src/views/console/workstation/index.vue
@@ -237,7 +237,7 @@
 
 			</el-tabs>
 		</el-card>
-		<Dialog ref="dialog"></Dialog>
+		<Dialog ref="dialog" :option="{types,status,group}"></Dialog>
 	</el-main>
 </template>
 
@@ -480,11 +480,7 @@
 			this.$refs.dialog.open()
 		},
 		table_edit(row) {
-			if (row.isSet) {
-				row.isSet = false
-			} else {
-				row.isSet = true
-			}
+			this.$refs.dialog.open('edit',row)
 		},
 		table_del(row, index,type) {
 			this.$API.workstation.deleteWork.delete({

--
Gitblit v1.9.3