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