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