From 5ccf3b19b39f00b6e71836238c7c91634cdc23c0 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 06 三月 2024 16:35:27 +0800 Subject: [PATCH] 更新value-table列表点击功能 --- src/components/tool/value-table.vue | 8 + src/main.js | 2 src/components/view/a6-device-overview.vue | 1 static/js/menu.js | 2 src/components/view/a6-device-management.vue | 14 +- src/components/view/b1-inspection-order.vue | 348 +++++++++++++++++++++++++++++++++++++++++++++++++ src/view/index.vue | 3 7 files changed, 366 insertions(+), 12 deletions(-) diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue index abc5878..011aa1c 100644 --- a/src/components/tool/value-table.vue +++ b/src/components/tool/value-table.vue @@ -63,10 +63,12 @@ <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == scope.row[a.label]" :type="b.type" size="medium">{{b.label}}</el-tag> </div> + <!-- 鍙搷浣滆杩涜鐐瑰嚮浜嬩欢 --> + <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;" @click="$emit(showLink(a.label, data.linkEvent),scope.row)">{{scope.row[a.label]}}</span> <span v-else>{{scope.row[a.label]}}</span> </template> </el-table-column> - <el-table-column fixed="right" align="center" label="鎿嶄綔" :width="60 + data.do.length * 35" + <el-table-column fixed="right" align="center" label="鎿嶄綔" :width="60 + data.do.length * 40" v-if="data.do.length > 0"> <template slot-scope="scope"> <el-button v-for="(a, ai) in data.do" :key="ai" :type="a.type" @@ -388,6 +390,10 @@ var str = ob[val] return str == undefined ? null : ob[val].select }, + showLink(val, ob){ + var str = ob[val] + return str == undefined ? null : ob[val].method + }, showAddReq(label) { if (this.data.requiredAdd == undefined) { return diff --git a/src/components/view/a6-device-management.vue b/src/components/view/a6-device-management.vue index 9b41352..9793aaf 100644 --- a/src/components/view/a6-device-management.vue +++ b/src/components/view/a6-device-management.vue @@ -347,11 +347,6 @@ showSelect: false, select: false, do: [{ - id: 'details', - font: '璇︽儏', - type: 'text', - method: 'selectAllByOne' - }, { id: 'delete', font: '鍒犻櫎', type: 'text', @@ -378,6 +373,11 @@ label: '淇濅慨' }] } + }, + linkEvent:{ + deviceName:{ + method:'selectAllByOne' + } }, selectField: {}, requiredAdd:['largeCategory','subclass','deviceName','internalCode','specificationModel','manufacturer'], @@ -438,10 +438,10 @@ add = true } } - if(!del){ + if(!up){ this.componentData.do.splice(1, 1) } - if(!up){ + if(!del){ this.componentData.do.splice(0, 1) } this.addPower = add diff --git a/src/components/view/a6-device-overview.vue b/src/components/view/a6-device-overview.vue index d330033..acfeafb 100644 --- a/src/components/view/a6-device-overview.vue +++ b/src/components/view/a6-device-overview.vue @@ -42,6 +42,7 @@ grid-template-columns: repeat(auto-fit, 375px); /* justify-content: center; */ grid-gap: 16px; + min-height: 300px; } .card li{ width: 375px; diff --git a/src/components/view/b1-inspection-order.vue b/src/components/view/b1-inspection-order.vue new file mode 100644 index 0000000..9f1829b --- /dev/null +++ b/src/components/view/b1-inspection-order.vue @@ -0,0 +1,348 @@ +<style scoped> + .title { + height: 60px; + line-height: 60px; + } + + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + + .search_thing { + width: 350px; + display: flex; + align-items: center; + } + + .search_label { + width: 110px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 110px); + } + + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 10px - 40px); + padding: 20px; + } + .tab{ + list-style-type: none; + display: flex; + margin-bottom: 12px; + } + .tab li{ + line-height: 24px; + padding: 6px 14px; + font-size: 14px; + color: #333333; + border: 1px solid #EEEEEE; + cursor: pointer; + } + .tab li:nth-child(1){ + border-radius: 8px 0 0 8px; + } + .tab li:nth-child(4){ + border-radius: 0 8px 8px 0; + } + .tab li.active{ + border-color: #3A7BFA; + color: #3A7BFA; + } + + .el-form-item{ + margin-bottom: 16px; + } + .picName{ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-break: break-all; + width: 120px; + } +</style> + +<template> + <div class="role_manage"> + <div> + <el-row class="title"> + <el-col :span="12" style="padding-left: 20px;">妫�楠屼笅鍗�</el-col> + <el-col :span="12" style="text-align: right;"> + <el-button size="medium" type="primary" @click="playOrder">涓嬪崟</el-button> + </el-col> + </el-row> + </div> + <div class="search"> + <div class="search_thing"> + <div class="search_label">濮旀墭缂栧彿锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="componentData.entity.deviceName" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing"> + <div class="search_label">鏍峰搧鍚嶇О锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="componentData.entity.specificationModel" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + </div> + <div class="table"> + <ul class="tab"> + <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> + </ul> + <!-- 璇硶 瀛愮粍浠堕�氳繃 this.$emit +浼犲叆鏂规硶鍚� 璋冪敤鐖剁粍浠舵柟娉� 渚嬪 this.$emit锛坰electAllByOne锛� 灏遍渶鍦ㄧ埗缁勪欢澹版槑骞朵紶鍏� @selectAllByOne="selectAllByOne"--> + <ValueTable + ref="ValueTable" + :url="$api.deviceScope.selectDeviceParameter" + :componentData="componentData" + :key="upIndex" + style="height: calc(100% - 44px)" + @selectAllByOne="selectAllByOne" + @handleDataLook="handleDataLook" + @download="download" + @handleVerify="handleVerify" + @handlEquash="handlEquash" + @handleIssued="handleIssued" /> + </div> + <!-- 瀹℃牳 --> + <el-dialog + title="涓嬪崟瀹℃牳" + :visible.sync="dialogVisible0" + width="30%" + :before-close="handleClose"> + <p style="font-size:16px;color:#333333">濮旀墭缂栧彿<span style="color:#34BD66">ZTMS2023071001</span>鐨勪俊鎭槸鍚﹂�氳繃</p> + <span slot="footer" class="dialog-footer"> + <el-row v-if="!isPass"> + <el-button @click="handleClose">閫� 鍥�</el-button> + <el-button type="primary" @click="submitForm" :loading="upLoad">閫� 杩�</el-button> + </el-row> + <el-row v-else> + <el-button @click="handleClose">杩� 鍥�</el-button> + <el-button type="primary" @click="submitForm" :loading="upLoad">纭� 瀹�</el-button> + </el-row> + </span> + </el-dialog> + </div> +</template> + +<script> + import ValueTable from '../tool/value-table.vue' + export default { + components: { + ValueTable + }, + data() { + return { + //鏄惁閫氳繃 true鏄� false涓嶆槸 + isPass: true, + formData: {}, + value: '', + options: [], + labelPosition: 'right', + dialogVisible0: false, + componentData: { + entity: { + deviceStatus: null, + deviceName: null, + specificationModel: null, + largeCategory: null, + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: true, + showSelect: false, + select: false, + do: [{ + id: 'details', + font: '璇︽儏', + type: 'text', + method: 'selectAllByOne' + }, { + id: 'dataLook', + font: '鏁版嵁鏌ョ湅', + type: 'text', + method: 'handleDataLook' + },{ + id: 'download', + font: '鎶ュ憡涓嬭浇', + type: 'text', + method: 'download' + },{ + id: 'verify', + font: '瀹℃牳', + type: 'text', + method: 'handleVerify' + },{ + id: 'quash', + font: '鎾ら攢', + type: 'text', + method: 'handlEquash' + },{ + id: 'issued', + font: '涓嬪彂', + type: 'text', + method: 'handleIssued' + }], + tagField: { + deviceStatus: { + select: [{ + value: 0, + type: 'success', + label: '姝e父' + },{ + value: 1, + type: 'warning', + label: '鎶ュ簾' + },{ + value: 2, + type: 'danger', + label: '淇濅慨' + }] + } + }, + selectField: {}, + requiredAdd:['largeCategory','subclass','deviceName','internalCode','specificationModel','manufacturer'], + requiredUp:['largeCategory','subclass','deviceName','internalCode','specificationModel','manufacturer'] + }, + entityCopy: {}, + upIndex: 0, + addDia: true, + addPower: true, + //璁惧绫诲瀷鍒楄〃 + equipmentList:[], + // 璐熻矗浜哄垪琛� + responsiblePersonList:[], + // 鎺堟潈浜哄垪琛� + authorizerList:[], + // 璁惧鐘舵�佸垪琛� + deviceStatusList:[], + upLoad:false, + tabList:[ + { + label:'妫�楠屽鐞�', + value:0 + }, + { + label:'寰呭鏍�', + value:1 + }, + { + label:'閫�鍥�', + value:2 + }, + { + label:'鎾ら攢', + value:3 + }, + ], + tabIndex:0, + } + }, + mounted() { + this.entityCopy = this.HaveJson(this.componentData.entity) + this.getPower() + }, + methods: { + refreshTable() { + this.$refs['ValueTable'].selectList() + }, + refresh() { + this.componentData.entity = this.HaveJson(this.entityCopy) + this.upIndex++ + }, + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')) + let up = false + let del = false + let add = false + for (var i = 0; i < power.length; i++) { + if(power[i].menuMethod=='upDeviceParameter'){ + up = true + } + if(power[i].menuMethod=='delDeviceParameter'){ + del = true + } + if(power[i].menuMethod=='addDeviceParameter'){ + add = true + } + } + if(!del){ + this.componentData.do.splice(1, 1) + } + if(!up){ + this.componentData.do.splice(0, 1) + } + this.addPower = add + }, + handleClose(){ + this.dialogVisible0 = false; + this.upLoad = false; + }, + // 璇︽儏 + selectAllByOne(row){ + //鎵撳紑寮规 + this.dialogVisible = true; + //row = 鐐瑰嚮瀵瑰簲琛屽�� + //澶嶅埗缁檉ormData + this.formData=this.HaveJson(row); + }, + // 鏁版嵁鏌ョ湅 + handleDataLook(row){}, + // 涓嬭浇鎶ュ憡 + download(row){}, + // 瀹℃牳 + handleVerify(row){ + this.dialogVisible0 = true; + }, + // 鎾ら攢 + handlEquash(row){}, + // 涓嬪彂 + handleIssued(row){}, + submitForm(){ + this.upLoad = true; + let authorizedPerson = this.formData.authorizedPerson.length>0?this.formData.authorizedPerson.join(','):'' + delete this.formData.createTime + delete this.formData.updateTime + delete this.formData.createUser + delete this.formData.updateUser + this.formData.authorizedPerson = authorizedPerson + this.$axios.post(this.$api.deviceScope.upDeviceParameter, this.formData, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.upLoad = false + return + } + this.$message.success('淇敼鎴愬姛') + this.upLoad = false + this.refreshTable() + this.dialogVisible = false + }).catch(e => { + this.$message.error('淇敼澶辫触') + this.dialogVisible = false + this.upLoad = false + }) + }, + // 涓嬪崟 + playOrder(){}, + handleTab(m,i){ + this.tabIndex = i; + } + } + } +</script> diff --git a/src/main.js b/src/main.js index a3e2693..1c3d79a 100644 --- a/src/main.js +++ b/src/main.js @@ -13,7 +13,7 @@ //鏈湴 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; -const javaApi = 'http://127.0.0.1:8001'; +const javaApi = 'http://192.168.0.133:8003'; //鑳滀簯鏈嶅姟鍣� // Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn"; // const javaApi = 'http://122.114.52.69:8001'; diff --git a/src/view/index.vue b/src/view/index.vue index 40bd6df..83766bf 100644 --- a/src/view/index.vue +++ b/src/view/index.vue @@ -345,7 +345,6 @@ const componentConfig = requireComponent(fileName); comObj[names] = componentConfig.default || componentConfig; }); - import menu from '../../static/js/menu.js'; import menus from '../../static/js/menu.js' import nullFace from '../view/404.vue' comObj['nullFace'] = nullFace @@ -486,4 +485,4 @@ } } }; -</script> \ No newline at end of file +</script> diff --git a/static/js/menu.js b/static/js/menu.js index b4e757b..4373533 100644 --- a/static/js/menu.js +++ b/static/js/menu.js @@ -17,7 +17,7 @@ c: [{ v: "妫�楠屼笅鍗�", i: "font icon-24gl-clipboardList", - u: "", + u: "b1-inspection-order", p: "" }, { v: "妫�楠屼换鍔�", -- Gitblit v1.9.3