From 63cf73490519e96183b2b89de19eaf70a9efeb40 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期四, 09 十一月 2023 20:05:58 +0800 Subject: [PATCH] new file: src/views/common/param-mergeTemplate.vue modified: src/views/technology/routing/routing-form.vue modified: vue.config.js --- vue.config.js | 2 src/views/technology/routing/routing-form.vue | 39 +++++++ src/views/common/param-mergeTemplate.vue | 232 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 268 insertions(+), 5 deletions(-) diff --git a/src/views/common/param-mergeTemplate.vue b/src/views/common/param-mergeTemplate.vue new file mode 100644 index 0000000..511206f --- /dev/null +++ b/src/views/common/param-mergeTemplate.vue @@ -0,0 +1,232 @@ +<template> + <div> + <avue-crud + ref="crud" + class="l-mes" + rowKey="oneId" + :data="tableData" + :option="option" + :span-method="spanMethod" + :page="page" + :table-loading="loading" + > + <template slot="code" slot-scope="scope"> + <avue-text-ellipsis use-tooltip :text="scope.row.code" :height="40" :width="100"> + <small slot="more">...</small> + </avue-text-ellipsis> + </template> + <template slot="paramValue" slot-scope="scope"> + <el-input @blur="checkType(scope.row)" :readonly="routingTemplateId!=null" :placeholder="'璇疯緭鍏�'+scope.row.paramType" v-model="scope.row.paramValue"/> + </template> + </avue-crud> + </div> +</template> + +<script> +export default { + props:{ + option:{ + type: Object, + default: ()=>{ + return { + height: 600, + loadingText: "鍔犺浇涓�...", + columnBtn: false, + index: true, + indexLabel: '搴忓彿', + menu: false, + menuAlign: 'center', + editBtn: false, + delBtn: false, + addBtn: false, + border: true, + size: 'small', + refreshBtn: false, + align: 'center', + column: [ + { + label: '鍙傛暟缂栧彿', + prop: 'code', + slot: true + }, + { + label: '鍙傛暟椤�', + prop: 'paramItem', + }, + { + label: '浜岀骇鍙傛暟', + prop: 'paramItemTwo', + }, + { + label: '涓夌骇鍙傛暟', + prop: 'paramItemThree', + }, + { + label: '鍙傛暟绫诲瀷', + prop: 'paramType', + formslot: true, + rules: [{ + required: true, + message: "璇烽�夋嫨鍙傛暟绫诲瀷", + trigger: "change" + }] + }, + { + label: '鍊�', + prop: 'paramValue', + slot: true, + formslot: true, + labelslot: true + }, { + label: '鍗曚綅', + prop: 'unit', + rules: [{ + required: true, + message: "鍗曚綅涓嶈兘涓虹┖", + trigger: "blur" + }] + },] + } + } + }, + tableData:{ + type: Array, + default: () => { + return [] + }, + required: true + }, + loading:{ + type: Boolean, + default: false + }, + page:{ + type: Object, + default:()=>{ + return { + total: 10, + currentPage: 1, + pageSize: 10 + } + } + }, + spanArr:{ + type: Array, + default: ()=>{ + return [{ + prop: 'code', + span: [] + }, { + prop: 'paramItem', + span: [] + }, { + prop: 'paramItemTwo', + span: [] + }] + } + }, + routingTemplateId:{ + type: String, + default: ()=>{ + return '' + } + } + }, + created(){ + // this.rowSort() + // this.rowCalc() + }, + beforeMount(){ + this.rowSort() + this.rowCalc() + }, + mounted(){ + }, + data(){ + return { + checkType(row){ + if(row.paramType == '鏁板�兼牸寮�'){ + let val = row.paramValue + const reg = /^[0-9]*$/ + if(!reg.test(val)){ + row.paramValue = '' + this.$message.warning("璇疯緭鍏ユ暟鍊兼牸寮忕殑鏁版嵁锛�") + } + } + } + } + }, + methods:{ + //鍔ㄦ�佸悎骞舵柟娉� + rowCalc() { + this.spanArr.forEach((ele, index) => { + let parent + if (index !== 0) parent = this.spanArr[ele.parent || index - 1].span + ele.span = this.rowSpan(ele.prop, parent) + }) + }, + rowSort(list) { + let propList = this.spanArr.map(ele => ele.prop) + this.spanArr.forEach((ele, index) => { + let key = ele.prop + this.tableData = this.tableData.sort((a, b) => { + let flag = true; + for (let i = 0; i < index; i++) { + let prop = this.spanArr[i].prop + flag = flag && a[prop] == b[prop] + } + if (flag) { + if (a[key] < b[key]) { return 1; } + else if (a[key] > b[key]) { return -1; } + return 0; + } + return 0; + }) + }) + }, + rowSpan(key, parent) { + let list = []; + let position = 0; + this.tableData.forEach((item, index) => { + if (index === 0) { + list.push(1) + let position = 0; + } else { + if (this.tableData[index][key] === this.tableData[index - 1][key]) { + if (parent && parent[index] !== 0) { + list.push(1) + position = index + } else { + list[position] += 1; + list.push(0) + } + } else { + list.push(1) + position = index + } + } + }) + return list + }, + spanMethod({ row, column, rowIndex, columnIndex }) { + for (let i = 0; i < this.spanArr.length; i++) { + const ele = this.spanArr[i] + if (column.property == ele.prop) { + const _row = ele.span[rowIndex]; + const _col = _row > 0 ? 1 : 0; + return { + rowspan: _row, + colspan: _col + } + } + } + } + }, +} +</script> + +<style> + .avue-crud__menu{ + display: none; + } +</style> \ No newline at end of file diff --git a/src/views/technology/routing/routing-form.vue b/src/views/technology/routing/routing-form.vue index 0293a09..723de44 100644 --- a/src/views/technology/routing/routing-form.vue +++ b/src/views/technology/routing/routing-form.vue @@ -564,7 +564,17 @@ </el-button> </div> </div> - <el-table :data="paramData" class="l-mes" height="600"> + <!-- <paramMergeTemplate + :tableData="paramData" + :page="{}" + > + </paramMergeTemplate> --> + <component + :is="paramMergeTemplate" + :tableData="paramData" + :routingTemplateId="routingTemplateId" + ></component> + <!-- <el-table :data="paramData" class="l-mes" height="600"> <el-table-column label="鍙傛暟椤�" prop="parameterItem" @@ -605,7 +615,7 @@ </el-button> </template> </el-table-column> - </el-table> + </el-table> --> </el-card> </el-tab-pane> </el-tabs> @@ -672,6 +682,7 @@ import ElRow from 'element-ui/packages/row/src/row' import ElCol from 'element-ui/packages/col/src/col' import { getOperationParam } from '../../../api/basic/template' +import paramMergeTemplate from '../../common/param-mergeTemplate.vue' import zttdraggable from 'vuedraggable' const capabilityArray = [ @@ -687,6 +698,7 @@ export default { data() { return { + paramMergeTemplate: '', itemKey: '', typeOptions: [], paramTemplateSelArr: [], @@ -772,7 +784,8 @@ operationPartDialog, RichText, editRoutingOperation, - zttdraggable + zttdraggable, + paramMergeTemplate }, mounted() { window.addEventListener( @@ -1073,6 +1086,7 @@ ).then((response) => { if (response.data.data.length > 0) { this.paramData = response.data.data + this.paramMergeTemplate = 'paramMergeTemplate' } else { this.paramData = [] } @@ -1444,7 +1458,24 @@ }, // 淇濆瓨鎵�鏈夊弬鏁扮殑淇敼 saveAllParamChange() { - const paramJson = { routingOperationParam: this.paramData } + let data = [] + this.paramData.forEach(ele=>{ + let o = { + id: null, + paramValue: ele.paramValue + } + if(ele.threeId && ele.threeId != 'null'){ + o.id = ele.threeId + }else{ + if(ele.twoId && ele.twoId != 'null'){ + o.id = ele.twoId + }else{ + o.id = ele.oneId + } + } + data.push(o) + }) + const paramJson = { routingOperationParam: data } putRoutingTemplateParam(paramJson).then((response) => { const data = response.data if (data.code == 0) { diff --git a/vue.config.js b/vue.config.js index e436b9e..2921129 100644 --- a/vue.config.js +++ b/vue.config.js @@ -3,7 +3,7 @@ * https://cli.vuejs.org/zh/config/ */ //const url = 'http://ztt-gateway:9999' -const url = 'http://ztt-gateway:9999' +const url = 'http://192.168.0.15:9999' const localUrl = 'http://localhost:8089' //const localUrl = 'http://10.88.15.95:8089' const CompressionWebpackPlugin = require('compression-webpack-plugin') -- Gitblit v1.9.3