From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001 From: 田源 <tianyuan@vci-tech.com> Date: 星期四, 03 四月 2025 14:35:02 +0800 Subject: [PATCH] 添加非密字段显示 --- Source/UBCS-WEB/src/components/work/BusinessWork.vue | 257 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 225 insertions(+), 32 deletions(-) diff --git a/Source/UBCS-WEB/src/components/work/BusinessWork.vue b/Source/UBCS-WEB/src/components/work/BusinessWork.vue index 97e3f18..6a65f49 100644 --- a/Source/UBCS-WEB/src/components/work/BusinessWork.vue +++ b/Source/UBCS-WEB/src/components/work/BusinessWork.vue @@ -1,54 +1,250 @@ <template> <div> - <el-button @click="add"></el-button> - <el-table :data="data"> - <el-table-column - fixed - type="selection" - width="55"> + <el-button @click="HandlerSave" v-if="hasEditor" size="small" type="primary" style="margin-bottom: 10px">淇濆瓨</el-button> + <el-table + v-loading="isLoading" + :data="tableData" + max-height="700" + style="" + @cell-click="handleCellClick" + > + <el-table-column fixed label="搴忓彿" type="index" width="55"> </el-table-column> <el-table-column - fixed - label="搴忓彿" - type="index" - width="55"> + v-for="item in this.tableHeadData" + :key="item.id" + :label="item.label" + :prop="item.prop" + :sortable="item.sortable" + :formatter="item.formatter" + :width="item.width" + :show-overflow-tooltip="true" + align="center" + > + <template slot-scope="{ row }"> + <el-input + v-if="editingRow === row && editShow== item.prop && item.edit == 'input'" v-model="row[item.prop]" + @blur="editingRows=null"></el-input> + <el-input-number size="small" controls-position="right" + v-if="editingRow === row && editShow== item.prop && item.edit == 'number'" v-model="row[item.prop]" + @blur="editingRows=null" :style="{width:(item.width-10)+'px'}"></el-input-number> + <el-select filterable default-first-option slot="prepend" @change="changeSelect" + v-if="editingRow === row && editShow== item.prop && item.edit == 'select' " v-model="row[item.prop]" @blur="editingRows=null"> + <el-option + v-for="optionItem in item.dicData" + :key="optionItem.key" + :label="optionItem.value" + :value="optionItem.key"> + </el-option> + </el-select> + <el-switch + v-if="editingRow === row && editShow== item.prop && (item.edit === 'switch' || item.edit === 'truefalse')" v-model="row[item.prop]" active-value="true" + inactive-value="false"> + </el-switch> + <el-date-picker + v-if="editingRow === row && editShow== item.prop && (item.edit == 'date' || item.edit == 'datetime') " v-model="row[item.prop]" @blur="editingRows=null" + :type="item.edit" :format="item.dateFormate" :value-format="item.dateFormate" + placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + <vciWebRefer + :key="item.prop" :data-key="item.prop" + v-if="editingRow === row && editShow== item.prop && item.edit == 'refer'" + :referConfig="item.referConfig || {}" + :value="row[item.referConfig.field] || row[item.prop]" + :text="row[item.referConfig.showField]" :disabled="item.disabled" :display="item.display" + @setReferValue="setReferValue" + ></vciWebRefer> + <span v-else v-html="formatter(row,item)"></span> + </template> </el-table-column> </el-table> </div> </template> <script> -import {businese,add} from '@/api/work/businese' +import {businese} from '@/api/work/businese' +import {FlowTable, batchUpdateCode} from "@/api/GetItem"; +import {validatenull} from "@/util/validate"; +import {getDictionary} from "@/api/system/dict"; +import vciWebRefer from "../refer/vciWebRefer.vue"; + export default { name: "BusinessWork", - props:['oid','templateId'], + components: { vciWebRefer }, + props:['ids','templateId',"taskId","modelKey","codeClassifyOid",'stageAttrs'], data() { return { - data:[ - { - label:'app' - } - ] + BuinessOids:[], + isLoading:false, + tableHeadData:[], + tableData:[], + editingRow: null, + editShow: "", + editAttr: "", + hasEditor:false, + columnType: { + text: "input", + combox: "select", + truefalse: "switch", + number: "number", + textarea: "textarea", + datetime: "datetime", + date: "date", + refer: "refer" + } + } + }, + watch:{ + ids:{ + handler(newval,oldval){ + this.BuinessOids=newval; + this.CrudHeaderRend() + this.BuinseseRend() + }, + deep:true + }, + stageAttrs(newval,oldval){ + this.hasEditor=newval.length>0; } }, created() { - businese({oid: this.oid, - templateOid: this.templateId}).then(res=>{ - console.log(res) - }) + + }, + mounted() { }, methods:{ - add(){ - // businese({oid: this.oid[2], - // templateOid: this.templateId}).then(res=>{ - // console.log(res) - // }) - add({ + HandlerSave(){ + if(!validatenull(this.editingRow)) { + this.editingRow = null; + //淇濆瓨 + let datas = this.tableData.map(item => { + let newitem = { + codeClassifyOid: item.codeclsfid, + templateOid: this.templateId, + editInProcess: true, + data: item, + oid: item.oid, + ts: item.ts + } + return newitem; + }) + batchUpdateCode(datas).then(res => { + if (res.data.success) { + this.$message.success("淇敼鎴愬姛"); + this.BuinseseRend() + } + }) + } + }, + //琛ㄦ牸澶存覆鏌� + CrudHeaderRend() { + if (this.codeClassifyOid != "") { + var data=new FormData() + data.append('templateId', this.templateId) + data.append('taskId', this.taskId) + data.append('modelKey', this.modelKey) + data.append('codeClassifyOid', this.codeClassifyOid) + FlowTable({ + 'templateId': this.templateId, + 'taskId': this.taskId, + 'modelKey': this.modelKey, + 'codeClassifyOid': this.codeClassifyOid + }).then((res) => { + this.options = res.data.tableDefineVO.seniorQueryColumns; + this.List = res.data.tableDefineVO.cols[0]; + this.tableHeadData=[]; + this.List.forEach((item) => { + let editAttr=this.stageAttrs.filter(stageitem => stageitem.attrId == item.field || (item.fieldType=='combox' && stageitem.attrId+'Text' == item.field)|| (item.fieldType=='refer' && stageitem.attrId+'name' == item.field)); + let columnItem = { + label: item.title, + prop: item.field, + type: this.columnType[item.type], + sortable: item.sort, + width: item.minWidth + }; + if(item.field == 'id' && validatenull(item.templet)){ + //浼佷笟缂栫爜鐨勯粯璁ゆ坊鍔犺秴閾炬帴,鏆傛湭瀹炵幇 + columnItem.formatter = ''; + }else { + if (item.templet && typeof (item.templet) == 'string' && !validatenull(item.templet) && item.templet.indexOf("function(row,column)") > -1) { + columnItem.formatter = eval("(" + item.templet + ")"); + } else if (item.fieldType == "truefalse") { + columnItem.formatter = function (row, column) { + return row[column.property] == 'true' || row[column.property] == '1' ? '鏄�' : '鍚�' + } + } + + } + if(editAttr.length>0) { + columnItem.edit= this.columnType[item.fieldType] + if (columnItem.edit == 'select') { + //闇�瑕佽幏鍙栦笅鎷夋鏁版嵁 + columnItem.dicData = item.data || this.geDictData(item.comboxKey) + columnItem.formatter = function (row, column) { + let d=column.dicData.find((value, keys, arr) => { + return value.key == row[column.prop.replace('Text','')]; + }) + return row[column.prop] =(d && d.value) || row[column.prop] + } + } + if (columnItem.edit == 'refer') { + columnItem.referConfig = { + title: item.title, + showField: item.showField || item.field, + field: item.sortField || item.field, + options: item.referConfig + } + columnItem.display=!item.hidden; + columnItem.disabled=item.readOnly + } + } + + this.tableHeadData.push(Object.assign(item, columnItem)) + }); + }); + } + }, + //琛ㄦ牸鏁版嵁 + BuinseseRend(){ + businese({ btmType:'wupin', - 'conditionMap[oid]':'D49A28F3-3740-D0EF-A3C6-5A71CA6978CC' + 'conditionMap[oid]':this.BuinessOids.toString() }).then(res=>{ - console.log(res) + this.tableData = res.data.data; }) + }, + // 寮傛鑾峰彇瀛楀吀鏁版嵁 + geDictData(dictKey) { + getDictionary({code: dictKey}).then((res) => { + if (res.data && res.data.code === 200) { + return (res.data.data || []).map((itm) => { + itm.value = itm.dictValue; + itm.key = itm.dictKey; + return itm; + }); + } + }); + }, + // 鐩戝惉鍗曞厓鏍肩偣鍑讳簨浠跺苟瀛樺偍姝e湪缂栬緫鐨勮 + handleCellClick(row, column, cell, event) { + this.editingRow = row; + this.editShow = column.property; + }, + formatter(row, column){ + if(column.formatter){ + return column.formatter(row,column) + }else{ + return row[column.prop] + } + }, + setReferValue(data) { + if (data.field) { + this.editingRow[data.field] = data.value || ""; + this.editingRow[data.showField] = data.text || ""; + } + }, + changeSelect(data){ + this.editingRow[this.editShow.replace('Text','')] = data; } } } @@ -57,6 +253,3 @@ <style scoped> </style> - -<!--mdmEngineController/getTableDataByOids?page=1&limit=-1&btmType=wupin&conditionMap%5B%27oid%27%5D=90DC514B-396D-9664-67D0-1587640FE15E&_=1687773044552--> -<!--mdmEngineController/getTableDataByOids?conditionMap%5Boid%5D=D49A28F3-3740-D0EF-A3C6-5A71CA6978CC--> -- Gitblit v1.9.3