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