From 38e6f27a8082e1173e3c02a33da5da39b6c6872c Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期三, 31 七月 2024 13:33:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/do/b6-device-management/b6-data-acquisition-config.vue |  359 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 331 insertions(+), 28 deletions(-)

diff --git a/src/components/do/b6-device-management/b6-data-acquisition-config.vue b/src/components/do/b6-device-management/b6-data-acquisition-config.vue
index 32d89ba..83bb496 100644
--- a/src/components/do/b6-device-management/b6-data-acquisition-config.vue
+++ b/src/components/do/b6-device-management/b6-data-acquisition-config.vue
@@ -4,6 +4,7 @@
       <el-row class="title">
         <el-col :span="6" style="padding-left: 20px;text-align: left;">鏁伴噰閰嶇疆</el-col>
         <el-col :span="18" style="text-align: right;">
+          <el-button size="medium" type="primary" @click="fileConfiguration">鏂囦欢閰嶇疆</el-button>
           <el-button size="medium" @click="$parent.closeDataVue()">
             <span style="color: #3A7BFA;">杩斿洖</span>
           </el-button>
@@ -12,10 +13,21 @@
     </div>
     <div class="table">
       <el-table :data="tableList.slice((page.current - 1) * page.size, page.current * page.size)"
-                border tooltip-effect="dark" style="width: 100%;" height="100%">
+                border tooltip-effect="dark" style="width: 100%;" height="100%" :span-method="spanMethod">
         <el-table-column type="index" label="搴忓彿" align="center" width="65"></el-table-column>
-        <el-table-column prop="insProductItem" align="center" label="妫�楠岄」鐩�">
-        </el-table-column>
+        <el-table-column prop="deviceName" align="center" min-width="100" label="璁惧鍚嶇О"></el-table-column>
+        <el-table-column prop="fileType" align="center" label="鏂囦欢鍚庣紑"></el-table-column>
+        <el-table-column prop="collectUrl" align="center" min-width="100" show-overflow-tooltip label="閲囬泦鍦板潃"></el-table-column>
+        <el-table-column prop="storageUrl" align="center" min-width="100" show-overflow-tooltip label="瀛樺偍鍦板潃"></el-table-column>
+        <el-table-column prop="ip" align="center" label="IP鍦板潃" min-width="100"></el-table-column>
+        <el-table-column prop="sample" align="center" label="妫�楠屽璞�" show-overflow-tooltip min-width="150"></el-table-column>
+        <el-table-column prop="inspectionItem" align="center" label="妫�楠岄」" min-width="100"></el-table-column>
+        <el-table-column prop="inspectionItemSubclass" align="center" label="妫�楠岄」瀛愰」" min-width="100"></el-table-column>
+        <el-table-column prop="referx" align="center" label="鍙傜収X" min-width="100"></el-table-column>
+        <el-table-column prop="x" align="center" label="X"></el-table-column>
+        <el-table-column prop="refery" align="center" label="鍙傜収Y" min-width="100"></el-table-column>
+        <el-table-column prop="y" align="center" label="Y"></el-table-column>
+        <el-table-column prop="formula" align="center" label="鍏紡"></el-table-column>
         <el-table-column prop="section" label="鎿嶄綔" width="120">
           <template slot-scope="scope">
             <el-button type="text" @click="dataConfig(scope.row)">鏁伴噰閰嶇疆</el-button>
@@ -54,11 +66,11 @@
           <el-form-item class="fomItemInput" label="鍙傜収X:">
             <el-input v-model="domain.referx"></el-input>
           </el-form-item>
-          <el-form-item class="fomItemInput" label="鍙傜収Y:">
-            <el-input v-model="domain.refery"></el-input>
-          </el-form-item>
           <el-form-item class="fomItemInput" label="X:">
             <el-input v-model="domain.x" onkeyup="value=value.replace(/[^-0-9]/g,'')"></el-input>
+          </el-form-item>
+          <el-form-item class="fomItemInput" label="鍙傜収Y:">
+            <el-input v-model="domain.refery"></el-input>
           </el-form-item>
           <el-form-item class="fomItemInput" label="Y:">
             <el-input v-model="domain.y" onkeyup="value=value.replace(/[^-0-9]/g,'')"></el-input>
@@ -70,9 +82,30 @@
             <el-button @click="addDomain" size="small" type="primary" style="position: absolute; bottom: -65px;left: 62px" v-if="index === domains.length-1">鏂板鍩熷悕</el-button>
           </el-form-item>
         </div>
-        <div class="fomItem1">
-          <el-form-item class="fomItemInput" label="鍏紡:">
-            <el-input v-model="configForm.formula" @change="evalResult"></el-input>
+        <div class="fomItem2">
+          <el-form-item class="fomItemInput1">
+            <template v-slot="label">
+              鍏紡锛�
+              <el-tooltip class="itemFomItem" effect="dark" content="姹傚弬鏁版渶澶у�硷紝鍙傛暟涓暟鏈�灏戜袱涓紝濡傦細MAX(1,2)" placement="top">
+                <label>MAX()</label>
+              </el-tooltip>
+              <el-tooltip class="itemFomItem" effect="dark" content="姹傚弬鏁版渶灏忓�硷紝鍙傛暟涓暟鏈�灏戜袱涓紝濡傦細MIN(1,2)" placement="top">
+                <label>MIN()</label>
+              </el-tooltip>
+              <el-tooltip class="itemFomItem" effect="dark" content="姹傚拰锛屽弬鏁颁釜鏁版渶灏戜袱涓紝濡傦細SUM(1,2)" placement="top">
+                <label>SUM()</label>
+              </el-tooltip>
+              <el-tooltip class="itemFomItem" effect="dark" content="姹傜粷瀵瑰�硷紝鍙傛暟涓暟鏈�灏戜竴涓紝濡傦細ABS(1)" placement="top">
+                <label>ABS()</label>
+              </el-tooltip>
+              <el-tooltip class="itemFomItem" effect="dark" content="姹傚钩鍧囧�硷紝鍙傛暟涓暟鏈�灏戜袱涓釜锛屽锛欰VERAGE(1,2)" placement="top">
+                <label>AVERAGE()</label>
+              </el-tooltip>
+              <el-tooltip class="itemFomItem" effect="dark" content="姹備腑鍊硷紝鍙傛暟涓暟鏈�灏戜袱涓釜锛屽锛歁EDIAN(1,2)" placement="top">
+                <label>MEDIAN()</label>
+              </el-tooltip>
+              <el-input type="textarea" autosi:autosize="{ minRows: 2, maxRows: 4}"ze placeholder="璇疯緭鍏ュ唴瀹�" v-model="configForm.formula" @change="evalResult"> </el-input>
+            </template>
           </el-form-item>
         </div>
       </el-form>
@@ -83,29 +116,74 @@
 				</el-row>
 			</span>
     </el-dialog>
+    <el-dialog title="鏁伴噰閰嶇疆" :visible.sync="dialogVisible4" width="400px">
+      <div class="search_thing" style="margin-bottom: 14px;">
+				<div class="search_label"><span style="color:red;margin-right: 4px;">*</span>IP锛�</div>
+				<el-input size="small" placeholder="璇疯緭鍏�" clearable
+						v-model="configForm.ip"></el-input>
+			</div>
+      <div class="search_thing" style="margin-bottom: 14px;">
+				<div class="search_label"><span style="color:red;margin-right: 4px;">*</span>閲囬泦鍦板潃锛�</div>
+				<el-input size="small" placeholder="璇疯緭鍏�" clearable
+						v-model="configForm.collectUrl"></el-input>
+			</div>
+      <div class="search_thing" style="margin-bottom: 14px;">
+				<div class="search_label">鍌ㄥ瓨鍦板潃锛�</div>
+				<el-input size="small" placeholder="璇疯緭鍏�" clearable
+						v-model="configForm.storageUrl"></el-input>
+			</div>
+      <div class="search_thing" style="margin-bottom: 14px;">
+				<div class="search_label"><span style="color:red;margin-right: 4px;">*</span>鏂囦欢鍚庣紑锛�</div>
+        <el-select v-model="configForm.fileType" size="small" placeholder="璇烽�夋嫨" style="width: 100%;">
+          <el-option
+            v-for="item in fileTypeOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+			</div>
+      <div v-if="configForm.fileType == '.mdb'" class="search_thing" style="margin-bottom: 14px;">
+				<div class="search_label">濮旀墭瀛楁锛�</div>
+				<el-input size="small" placeholder="璇疯緭鍏�" clearable
+						v-model="configForm.mdbEntrustCode"></el-input>
+			</div>
+      <div v-if="configForm.fileType == '.mdb'" class="search_thing" style="margin-bottom: 14px;">
+				<div class="search_label">鏍峰搧瀛楁锛�</div>
+				<el-input size="small" placeholder="璇疯緭鍏�" clearable
+						v-model="configForm.mdbSampleCode"></el-input>
+			</div>
+      <span slot="footer" class="dialog-footer">
+				<el-row>
+					<el-button @click="dialogVisible4=false">鍙� 娑�</el-button>
+					<el-button type="primary" @click="submitForm4" :loading="upLoad4">纭� 瀹�</el-button>
+				</el-row>
+			</span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+
 export default {
   name: "dataAcquisitionConfig",
   // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
-  components: {},
+  components: {
+  },
   props: {
-    tableList: {
-      type: Array,
+    deviceId: {
+      type: Number,
       default: () => []
     }
   },
   mounted() {
-    this.tableList.forEach(i => {
-      let data = i.insProductItem.split(',')
-      i.insProductItem = data[data.length - 1]
-    })
+    this.init()
   },
   data() {
     // 杩欓噷瀛樻斁鏁版嵁
     return {
+      dialogVisible4: false,
+      tableList: [],
       page: {
         current: 1,
         size: 20,
@@ -123,6 +201,7 @@
         }
       ],
       upLoad3:false,
+      upLoad4:false,
       fileTypeOptions: [
         {label: 'csv', value: '.csv'},
         {label: 'db', value: '.db'},
@@ -131,18 +210,206 @@
         {label: 'excel', value: '.xlsx'},
         {label: 'txt', value: '.txt'},
         {label: 'png', value: '.png'},
-      ]
+      ],
+      spanList: [],
+      specialSpanList: [],
+      spanConfig: {
+            special: {
+              main: "inspectionItemSubclass",
+              rows:[
+              {
+                name:'deviceName',
+                index:1
+              },
+              {
+                name:'fileType',
+                index:2
+              },
+              {
+                name:'collectUrl',
+                index:3
+              },
+              {
+                name:'storageUrl',
+                index:4
+              },
+              {
+                name:'ip',
+                index:5
+              },
+              {
+                name:'inspectionItem',
+                index:6
+              },
+              {
+                name:'inspectionItemSubclass',
+                index:7
+              },
+              {
+                name:'formula',
+                index:13
+              },
+              {
+                name:'inspectionItemSubclass',
+                index:14
+              }
+            ]
+            }
+      },
+      deleteList: []
     }
   },
   // 鏂规硶闆嗗悎
   methods: {
+    rowspan(spanArr, position, spanName) {
+        this.tableList.forEach((item, index) => {
+          if (index === 0) {
+            spanArr.push(1);
+            position = 0;
+          } else {
+            if (
+              this.tableList[index][spanName] ===
+              this.tableList[index - 1][spanName]
+            ) {
+              spanArr[position] += 1;
+              spanArr.push(0);
+            } else {
+              spanArr.push(1);
+              position = index;
+            }
+          }
+        });
+      },
+    spanMethod({
+        row,
+        column,
+        rowIndex,
+        columnIndex
+      }) {
+        // 涓�鑸殑鍚堝苟琛�
+        if (this.spanConfig != undefined && this.spanConfig.rows && this.spanConfig.rows.length > 0) {
+          let i = null;
+          let obj = this.spanConfig.rows.find((item, index) => {
+            i = index;
+            return item.index == columnIndex
+          })
+          if (obj) {
+            const _row = this.spanList[i].arr[rowIndex];
+            const _col = _row > 0 ? 1 : 0;
+            return {
+              rowspan: _row,
+              colspan: _col,
+            };
+          }
+        }
+        // 鐗规畩鐨勫悎骞惰
+        if (this.spanConfig != undefined && this.spanConfig.special && this.spanConfig.special.main &&
+          this.spanConfig.special.rows && this.spanConfig.special.rows.length > 0) {
+          let i = null;
+          let obj = this.spanConfig.special.rows.find((item, index) => {
+            i = index;
+            return item.index == columnIndex
+          })
+          if (obj) {
+            const _row = this.specialSpanList[i].arr[rowIndex];
+            const _col = _row > 0 ? 1 : 0;
+            return {
+              rowspan: _row,
+              colspan: _col,
+            };
+          }
+        }
+      },
+    fileConfiguration() {
+      this.dialogVisible4 = true
+      if(this.tableList[0]) {
+          this.$set(this.configForm, 'fileType', this.tableList[0].fileType)
+          this.$set(this.configForm, 'collectUrl', this.tableList[0].collectUrl)
+          this.$set(this.configForm, 'storageUrl', this.tableList[0].storageUrl)
+          this.$set(this.configForm, 'ip', this.tableList[0].ip)
+        }
+    },
+    init() {
+      // this.tableList = []
+      this.$axios.get(this.$api.deviceScope.queryDataAcquisitionConfiguration + "?deviceId=" + this.deviceId + "&isDevice=" + false).then(res => {
+        this.tableList = res.data
+        this.tableList.forEach(i => {
+          // replace(/=/g, ' ')
+          i.sample = i.sample.replace(/"/g, '').replace(/],/g, '锛�').replace(/\[/g, '').replace(/]/g, '')
+        })
+        if(this.tableList[0]) {
+          this.$set(this.configForm, 'fileType', this.tableList[0].fileType)
+          this.$set(this.configForm, 'collectUrl', this.tableList[0].collectUrl)
+          this.$set(this.configForm, 'storageUrl', this.tableList[0].storageUrl)
+          this.$set(this.configForm, 'ip', this.tableList[0].ip)
+          this.$set(this.configForm, 'mdbEntrustCode', this.tableList[0].mdbEntrustCode)
+          this.$set(this.configForm, 'mdbSampleCode', this.tableList[0].mdbSampleCode)
+        }
+        // 涓�鑸殑鍚堝苟琛�
+        if (this.spanConfig != undefined && this.spanConfig.rows && this.spanConfig.rows.length >
+            0) {
+            this.spanList = [];
+            this.spanConfig.rows.forEach((item, index) => {
+              this.spanList.push({
+                arr: [],
+                position: 0
+              })
+              this.rowspan(this.spanList[index].arr, this.spanList[index].position, item.name);
+            })
+          }
+          // 鐗规畩鐨勫悎骞惰
+          if (this.spanConfig != undefined && this.spanConfig.special && this.spanConfig.special
+            .main && this.spanConfig.special.rows && this.spanConfig.special.rows.length > 0) {
+            this.specialSpanList = []
+            this.spanConfig.special.rows.forEach((item, index) => {
+              this.specialSpanList.push({
+                arr: [],
+                position: 0
+              })
+              this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this
+                .spanConfig.special.main);
+            })
+          }
+      })
+    },
+    submitForm4() {
+      const obj = Object.assign({
+        deviceId: this.deviceId,
+        fileType: this.configForm.fileType,
+        collectUrl: this.configForm.collectUrl,
+        storageUrl: this.configForm.storageUrl,
+        ip: this.configForm.ip,
+        isDevice: true,
+        mdbEntrustCode: this.configForm.mdbEntrustCode,
+        mdbSampleCode: this.configForm.mdbSampleCode
+      })
+      this.upLoad4 = true
+      this.$axios.post(this.$api.deviceScope.saveDataAcquisitionConfiguration + "?deviceId=" + this.deviceId, obj, {headers: {
+            'Content-Type': 'application/json'
+          }}).then(res => {
+            if(res.code == 200) {
+              this.tableList = res.data
+              this.dialogVisible4 = false
+              this.init()
+              this.$message.success('鎿嶄綔鎴愬姛')
+            }
+            this.upLoad4 = false
+      }).catch(err => {
+        this.upLoad4 = false
+      })
+    },
     dataConfig (row) {
       this.configForm = {
         deviceId: row.deviceId,
-        insProductItem: row.insProductItem.trim()
+        inspectionItem: row.inspectionItem.trim(),
+        inspectionItemSubclass: row.inspectionItemSubclass,
+        structureItemParameterId: row.structureItemParameterId
       }
       this.dialogVisible3 = true
-      this.$axios.get(this.$api.deviceScope.queryDataAcquisitionConfiguration + "?deviceId=" + row.deviceId + "&insProductItem=" + row.insProductItem.trim()).then(res => {
+      this.$axios.get(this.$api.deviceScope.queryDataAcquisitionConfiguration + "?deviceId=" + this.deviceId +
+      "&inspectionItem=" + row.inspectionItem.trim() +
+      "&isDevice=" + true +
+      "&inspectionItemSubclass=" + row.inspectionItemSubclass.trim()).then(res => {
         const data = res.data
         if(data[0]) {
           this.domains.splice(0, 1)
@@ -176,10 +443,12 @@
               i.y = null
             }
             i.formula = this.configForm.formula
-            i.deviceId = this.configForm.deviceId
-            i.insProductItem = this.configForm.insProductItem
+            i.deviceId = this.deviceId
+            i.inspectionItem = this.configForm.inspectionItem
+            i.inspectionItemSubclass = this.configForm.inspectionItemSubclass
+            i.structureItemParameterId = this.configForm.structureItemParameterId
           })
-          this.$axios.post(this.$api.deviceScope.saveDataAcquisitionConfiguration, {dataConfigList: this.domains},{headers: {
+          this.$axios.post(this.$api.deviceScope.saveDataAcquisitionConfiguration + "?deviceId=" + this.deviceId, {dataConfigList: this.domains, isDevice: false},{headers: {
             'Content-Type': 'application/json'
           }}).then(res => {
             this.dialogVisible3 = false
@@ -192,6 +461,14 @@
                 id: ''
               }
             ]
+            if(this.deleteList.length > 0) {
+              this.$axios.delete(this.$api.deviceScope.deleteDataAcquisitionConfiguration + "?ids=" + this.deleteList.join()).then(res => {
+                if(res.code == 200) {
+                  this.init()
+                }
+              })
+            }
+            this.init()
             this.$message.success('娣诲姞鎴愬姛')
           })
         } else {
@@ -203,11 +480,12 @@
       // 鍒犻櫎鍏紡formItem
       const index = this.domains.indexOf(item)
       if (index !== -1 && this.domains.length > 1) {
-        this.$axios.get(this.$api.deviceScope.deleteDataAcquisitionConfiguration + "?id=" + item.id).then(res => {
-          if(res.code == 200) {
-            this.domains.splice(index, 1)
-          }
-        })
+        if(item.id){
+          this.deleteList.push(item.id)
+          this.domains.splice(index, 1)
+        } else {
+          this.domains.splice(index, 1)
+        }
       } else {
         this.$message.error('涓嶅厑璁稿垹闄ゆ渶鍚庝竴鏉℃暟鎹紒');
       }
@@ -222,7 +500,8 @@
         id: ''
       });
     },
-    evalResult () {
+    evalResult (val) {
+      this.configForm.formula = val
       // 鏍规嵁鍏紡璁$畻鍑虹粨鏋�
     },
     sizeChange(val) {
@@ -232,6 +511,7 @@
       this.page.current = val
     },
     closeForm () {
+      this.deleteList = []
       this.domains = [{
         referx: '',
         refery: '',
@@ -247,6 +527,21 @@
 </script>
 
 <style scoped>
+.itemFomItem {
+  margin-left: 20px;
+}
+
+.search_thing {
+		width: 350px;
+		display: flex;
+		align-items: center;
+	}
+  .search_label {
+		width: 110px;
+
+		font-size: 14px;
+		text-align: right;
+	}
 .data-acquisition-config {
   width: 100%;
   height: 100%;
@@ -273,10 +568,18 @@
   display: flex;
   height: 74px;
 }
+.fomItem2 {
+  display: flex;
+  width: 100%;
+}
 .fomItemInput {
   width: 180px;
   margin-right: 6px;
 }
+.fomItemInput1 {
+  width: 100%;
+  margin-right: 6px;
+}
 >>>.el-form-item__label {
   padding-bottom: 0 !important;
 }

--
Gitblit v1.9.3