From 65972957e56a31778cc1633b1032ac16627665f3 Mon Sep 17 00:00:00 2001 From: gaoshp <291585735@qq.com> Date: 星期六, 05 十月 2024 21:28:25 +0800 Subject: [PATCH] update --- src/views/console/workstation/CollDialog.vue | 97 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 72 insertions(+), 25 deletions(-) diff --git a/src/views/console/workstation/CollDialog.vue b/src/views/console/workstation/CollDialog.vue index ef32a4c..01f827b 100644 --- a/src/views/console/workstation/CollDialog.vue +++ b/src/views/console/workstation/CollDialog.vue @@ -1,11 +1,19 @@ <template> - <el-dialog title="鏁版嵁鐐�" v-model="visible" :width="'100%'" destroy-on-close @closed="$emit('closed')"> - <el-select v-model="type" placeholder="Select" size="small" style="width: 240px" @change="changeType"> - <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id" /> - </el-select> + <el-dialog title="鏁版嵁鐐�" v-model="visible" :width="'80%'" destroy-on-close @closed="$emit('closed')"> + <p style="margin-bottom: 14px;"> + <span style="margin-right: 8px;">绫诲瀷</span> + <el-select v-model="type" placeholder="Select" size="small" style="width: 240px" @change="changeType"> + <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id" /> + </el-select> + </p> + <scFormTable v-show="type" ref="table1" v-model="tabledata" stripe hideDelete :hideAdd="!type" :addTemplate="addTemplate"> <el-table-column v-for="item in cols" :key="item.prop" :prop="item.prop" :label="item.label"> + <template #header="scope"> + <span v-show="item.isRequired" style="color: red;">*</span> + <span>{{ scope.column.label }}</span> + </template> <template #default="scope"> <el-select v-model="scope.row[item.prop]" placeholder="Select" size="small" v-if="scope.row.status && item.type === 'option'"> @@ -19,12 +27,12 @@ </template> </el-table-column> - <el-table-column label="鎿嶄綔" prop="state" width="120"> + <el-table-column label="鎿嶄綔" prop="state" width="200"> <template #default="scope"> <el-button-group> - <el-button text type="primary" size="small">缂栬緫</el-button> - <el-button text type="primary">澶嶅埗</el-button> - <el-popconfirm width="220" title="纭畾灏嗛�夋嫨鐨勬暟鎹垹闄�" @confirm="del(scope.row)"> + <el-button text type="primary" size="small" @click="table_edit(scope.row)">缂栬緫</el-button> + <el-button text type="primary" size="small" @click="copy(scope.row)">澶嶅埗</el-button> + <el-popconfirm width="220" title="纭畾灏嗛�夋嫨鐨勬暟鎹垹闄�" @confirm="del(scope.$index)"> <template #reference> <el-button text type="primary" size="small">鍒犻櫎</el-button> </template> @@ -42,8 +50,6 @@ </template> <script> -import deepmerge from 'deepmerge' -import http from "@/utils/request" export default { emits: ['success', 'closed'], props: { @@ -75,13 +81,19 @@ }, methods: { changeType(val) { - console.log(val) - console.log(JSON.parse(this.typeList.find(v => v.id === val).dpHeadFull)) - try { - this.cols = JSON.parse(this.typeList.find(v => v.id === val).dpHeadFull) - } catch (error) { + this.$confirm(`鍒囨崲绫诲瀷灏嗗垹闄ゆ墍鏈夊凡閰嶇疆鏁版嵁鐐筦, '鎻愮ず', { + type: 'warning' + }).then(() => { + try { + this.cols = JSON.parse(this.typeList.find(v => v.id === val).dpHeadFull) + this.table = [] + } catch (error) { + this.cols = [] + } + }).catch(() => { - } + }) + }, //鏄剧ず open(mode = 'add', params) { @@ -106,22 +118,54 @@ }, getList(params) { this.$HTTP.get(`/api/blade-cps/workstation/listDatapointsByWorkstationId`, {}, { params }).then(res => { - // res.data.records = res?.data?.records.map(v => { - // return { - // ...v, - // statusName: v.status ? '鍚敤' : '绂佺敤' - // } - // }) + try { + this.cols = JSON.parse(res.data.dpHead) + console.log(this.cols, 'cols') + } catch (error) { + this.cols = [] + } + try { + this.tabledata = JSON.parse(res.data.dpConfig).map(v => { + v.status = null + return v + }) || []; + } catch (error) { + this.tabledata = [] + } this.type = res.data.type - this.tabledata = res.data.dpConfig || []; + // return res }) }, + table_edit(row) { + row.status = '1' + }, + del(index) { + this.tabledata.splice(index, 1) + }, + copy(row) { + this.tabledata.push(Object.assign({}, row, { status: '1' })) + }, //琛ㄥ崟鎻愪氦鏂规硶 submit() { - console.log(this.tabledata) + let isRequiredKey = this.cols.filter(v => v.isRequired).map(v => v.prop) + let flag = this.tabledata.every(item => { + return isRequiredKey.every(v => { + return item[v] !== undefined && item[v] !== null && item[v] !== '' + }) + }) + if (!flag) { + return this.$message.warning('璇锋牎楠屽繀濉」') + } + let len = [...new Set(this.tabledata.map(v => v.dpName))].length + if (len != this.tabledata.length) { + return this.$message.warning('鏁版嵁鐐瑰悕绉颁笉鑳介噸澶�') + } this.$HTTP.put('/api/blade-cps/workstation/saveDatapoints', { - dpConfig: JSON.stringify(this.tabledata), + dpConfig: JSON.stringify(this.tabledata.map(v => { + delete v.status + return v + })), workstationId: this.params.id, type: this.type }).then(res => { @@ -130,6 +174,9 @@ workstationId: this.params.id, }) } + }).finally(() => { + this.visible = false + this.$emit('success') }) }, -- Gitblit v1.9.3