From 0bd64cdb66957d78202e96517d52cb100369b5af Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期六, 09 九月 2023 14:51:22 +0800
Subject: [PATCH] Crunchy-09/09

---
 src/components/view/rawInsDetail.vue |  293 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 227 insertions(+), 66 deletions(-)

diff --git a/src/components/view/rawInsDetail.vue b/src/components/view/rawInsDetail.vue
index cd05798..93ad190 100644
--- a/src/components/view/rawInsDetail.vue
+++ b/src/components/view/rawInsDetail.vue
@@ -51,19 +51,25 @@
               <el-input
                 v-if="detailId !== null"
                 :disabled="detailId !== null"
-                v-model="detailInfo.name"
+                v-model="detailInfo.rname"
               ></el-input>
               <el-input
                 v-else
                 v-model="detailInfo.name"
-                placeholder="璇疯緭鍏�"
+                placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О"
               ></el-input> </el-form-item
           ></el-col>
           <el-col :span="7">
             <el-form-item label="鍘熸潗鏂欑紪鐮�:">
               <el-input
+                v-if="detailId !== null"
                 :disabled="detailId !== null"
+                v-model="detailInfo.rcode"
+              ></el-input>
+              <el-input
+                v-else
                 v-model="detailInfo.code"
+                placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜"
               ></el-input>
             </el-form-item>
           </el-col>
@@ -78,7 +84,7 @@
               ></el-input>
               <el-input
                 v-else
-                v-model="detailInfo.specificationsArr"
+                v-model="detailInfo.specifications"
                 placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
               ></el-input>
             </el-form-item>
@@ -86,6 +92,12 @@
           <el-col :span="7">
             <el-form-item label="鍗曚綅:">
               <el-input
+                v-if="detailId !== null"
+                :disabled="detailId !== null"
+                v-model="detailInfo.runit"
+              ></el-input>
+              <el-input
+                v-else
                 placeholder="璇疯緭鍏ユ楠屽崟浣�"
                 :disabled="detailId !== null"
                 v-model="detailInfo.unit"
@@ -95,7 +107,7 @@
           <el-col :span="7">
             <el-form-item label="鏁伴噺:">
               <el-input
-                placeholder="璇疯緭鍏ユ楠屾暟閲�"
+                :placeholder="detailId !== null ? '' : '璇疯緭鍏ユ楠屾暟閲�'"
                 :disabled="detailId !== null"
                 v-model="detailInfo.number"
               ></el-input>
@@ -106,9 +118,9 @@
           <el-col :span="7">
             <el-form-item label="渚涘簲鍟嗗悕绉�:">
               <el-input
-                placeholder="璇疯緭鍏ユ楠屾暟閲�"
+                :placeholder="detailId !== null ? '' : '璇疯緭鍏ユ楠屾暟閲�'"
                 :disabled="detailId !== null"
-                v-model="detailInfo.number"
+                v-model="detailInfo.supplier"
               ></el-input>
             </el-form-item>
           </el-col>
@@ -116,7 +128,7 @@
             <el-form-item v-show="detailId !== null" label="鎶ユ鏃ユ湡:">
               <el-input
                 :disabled="detailId !== null"
-                v-model="detailInfo.createTime"
+                v-model="detailInfo.creatTime"
               ></el-input>
             </el-form-item>
           </el-col>
@@ -135,7 +147,14 @@
       <el-row>
         <el-col :span="12" style="line-height: 32px;">妫�楠岄」鐩�</el-col>
         <el-col :span="12" style="line-height: 32px; padding-top: 6px;">
-          <el-button v-if="detailId == null" style="float: right;"
+          <el-button
+            style="float: right;"
+            @click="clickDeleteInspectionColumn()"
+            >鍒犻櫎妫�楠屽�煎垪</el-button
+          >
+          <el-button
+            style="float: right;margin-right: 30px;"
+            @click="clickAddInspectionColumn()"
             >娣诲姞妫�楠屽�煎垪</el-button
           >
           <el-button
@@ -149,53 +168,81 @@
     </div>
     <div class="raw-project-table">
       <el-table :data="projectTable" style="width: 100%" height="320">
-        <el-table-column type="index" label="搴忓彿" width="100">
+        <el-table-column type="index" label="搴忓彿" width="60">
         </el-table-column>
-        <el-table-column prop="name" label="椤圭洰" width="212">
-          <template scope="scope">
+        <el-table-column prop="rpName" label="椤圭洰" width="212">
+          <template slot-scope="scope">
             <el-input
+              v-if="detailId == null"
               v-model="scope.row.name"
               placeholder="璇疯緭鍏ラ」鐩悕绉�"
             ></el-input>
+            <el-input v-else v-model="scope.row.rpName" disabled></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="unit" label="鍗曚綅" width="148">
-          <template scope="scope">
+          <template slot-scope="scope">
             <el-input
+              v-if="detailId == null"
               v-model="scope.row.unit"
               placeholder="璇疯緭鍏ュ崟浣�"
             ></el-input>
+            <el-input v-else v-model="scope.row.rpUnit" disabled></el-input>
           </template>
         </el-table-column>
-        <el-table-column prop="required" label="鏍囧噯" width="254">
-          <template scope="scope">
+        <el-table-column prop="required" label="鏍囧噯" min-width="150">
+          <template slot-scope="scope">
             <el-input
               v-model="scope.row.required"
               placeholder="璇疯緭鍏ユ爣鍑嗗��"
             ></el-input>
           </template>
         </el-table-column>
-        <el-table-column prop="internal" label="鍐呮帶鍊�" width="254">
-          <template scope="scope">
+        <el-table-column prop="internal" label="鍐呮帶鍊�" min-width="150">
+          <template slot-scope="scope">
             <el-input
               v-model="scope.row.internal"
               placeholder="璇疯緭鍏ュ唴鎺у��"
             ></el-input>
           </template>
         </el-table-column>
-        <el-table-column prop="testValue" label="妫�鏌ュ��" width="254">
+        <el-table-column
+          prop="testValue"
+          label="妫�娴嬪��"
+          min-width="150"
+          v-for="(item, index) in empiricalValueAdd"
+          :key="index"
+        >
           <template slot-scope="scope">
-            <el-input
-              v-model="scope.row.testValue"
-              @blur="changeState(scope.row)"
-              placeholder="璇疯緭鍏ユ娴嬪��"
-            ></el-input>
+            <el-tooltip
+              :disabled="scope.row.deviceId != null"
+              class="item"
+              effect="dark"
+              content="璇峰厛閫夋嫨璁惧锛�"
+              placement="top-start"
+            >
+              <el-input
+                :disabled="scope.row.deviceId == null"
+                v-model="scope.row.testValueList[index]"
+                @blur="changeState(scope.row, index)"
+                placeholder="璇疯緭鍏ユ娴嬪��"
+              ></el-input>
+            </el-tooltip>
           </template>
         </el-table-column>
-        <el-table-column prop="deviceName" label="璇曢獙璁惧">
-          <el-button type="text">閫夋嫨</el-button>
+        <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="100">
+          <template slot-scope="scope">
+            <el-button type="text" @click="clickTableSelect(scope)">{{
+              scope.row.deviceId == null ? "璇烽�夋嫨" : scope.row.deviceName
+            }}</el-button>
+          </template>
         </el-table-column>
-        <el-table-column prop="testState" label="缁撹">
+        <el-table-column
+          v-if="detailId !== null"
+          prop="testState"
+          label="缁撹"
+          min-width="100"
+        >
           <template slot-scope="scope">
             <span
               v-show="scope.row.testState != null"
@@ -207,8 +254,8 @@
             <span v-show="scope.row.testState == null">鏆傛湭缁撹</span>
           </template>
         </el-table-column>
-        <el-table-column v-if="detailId == null" label="鎿嶄綔" fixed="right">
-          <template scope="scope">
+        <el-table-column v-if="detailId == null" label="鎿嶄綔" width="100">
+          <template slot-scope="scope">
             <el-button type="text" @click="clickDeleteline(scope)"
               >鍒犻櫎</el-button
             >
@@ -256,6 +303,47 @@
         </el-table-column>
       </el-table>
     </div>
+    <el-dialog
+      title="璇烽�夋嫨璁惧"
+      :visible.sync="centerDialogVisible"
+      width="20%"
+    >
+      <div class="div_device_dialog">
+        <el-input
+          placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
+          v-model="filterText"
+          style="margin-bottom: 6px;"
+        >
+        </el-input>
+        <el-tree
+          class="filter-tree"
+          :data="materialOptions"
+          :props="defaultProps"
+          default-expand-all
+          highlight-current
+          @node-click="nodeClick"
+          :filter-node-method="filterNode"
+          ref="tree"
+        >
+          <div class="custom-tree-node" slot-scope="{ data }">
+            <span
+              ><i
+                :class="
+                  `node_i ${
+                    data.children ? 'el-icon-folder-opened' : 'el-icon-tickets'
+                  }`
+                "
+              ></i>
+              {{ data.name }}</span
+            >
+          </div>
+        </el-tree>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="centerDialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="clickNodeSure()">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -299,33 +387,69 @@
   },
   data() {
     return {
+      // 娣诲姞鍒�
+      empiricalValueAdd: 1,
+      // 缂栬緫鏃跺瓨鍌ㄦ渶闀跨殑鍒楁暟瀛楋紝鍋氬垹闄ゅ垽鏂�
+      empiricalValueAddMaxNumber: 0,
+      // 璁惧閫夋嫨鏍戞樉绀�
+      centerDialogVisible: false,
       // 璇︽儏椤靛氨鏄鎯呬俊鎭�
       detailInfo: {},
+      // 琛ㄦ牸
       projectTable: [],
       // 鏂板缓妫�楠屽崟鍙傛暟瀵硅薄
       rawInsParams: {},
       // 椤圭洰鍚嶇Оoptions
-      materialOptions: [],
-      specificationOptions: []
+      specificationOptions: [],
+      filterText: "",
+      materialOptions: [], // 鏍戞暟鎹�
+      defaultProps: {
+        // 璁惧鏍戞暟鎹缃�
+        children: "children",
+        label: "name"
+      },
+      nodeData: "", // node鐐瑰嚮淇濆瓨褰撳墠鐐瑰嚮鏁版嵁
+      clickSelectSaveIndex: "" // 鐐瑰嚮閫夋嫨瀛樺偍鍒楄〃绱㈠紩
     };
   },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
   methods: {
+    // 璁惧鏍戣繃婊ゆ悳绱�
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.name.indexOf(value) !== -1;
+    },
+
     // 鑾峰彇鎶ユ鍗曡鎯呬俊鎭�
     async getDetailInfo() {
-      const { data } = await this.$axios.get(
-        this.$api.url.selectRawInspectsListById + `${this.detailId}`,
-        { params: { id: this.detailId } }
-      );
-      this.detailInfo = data;
-      this.projectTable = data.rawInsProducts;
+      await this.$axios
+        .get(this.$api.url.selectRawInspectsListById + `${this.detailId}`, {
+          params: { id: this.detailId }
+        })
+        .then(res => {
+          this.detailInfo = res.data;
+          this.projectTable = res.data.children;
+          this.projectTable.forEach(i => {
+            i.testValueList = i.testValue.split(",");
+            // 鍙栨渶闀跨殑鍒楄〃鏁�
+            if (i.testValueList.length > this.empiricalValueAdd) {
+              this.empiricalValueAdd = i.testValueList.length;
+              this.empiricalValueAddMaxNumber = i.testValueList.length - 1;
+            }
+          });
+        });
     },
     // 鏂板妫�楠屽崟
     async addNewRawInspect() {
-      this.detailInfo.specifications = this.detailInfo.specificationsArr.join(
-        "-"
-      );
-      // const time = this.detailInfo.formTime
-      // this.detailInfo.formTime = `${time.getFullYear()}-${time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1}-${time.getDate() < 10 ? '0' + time.getDate() : time.getDate()}`
+      this.projectTable.forEach(i => {
+        // 灏嗗垪琛ㄨ浆鎹负瀛楃涓�
+        i.testValue = i.testValueList.join(",");
+      });
+      this.detailInfo.rawInsProducts = this.projectTable;
       const res = await this.$axios.post(
         this.$api.url.addRawInspects,
         { ...this.detailInfo },
@@ -333,18 +457,20 @@
       );
       this.detailId = res.data;
       this.getDetailInfo();
-
-      this.$message.success("鎻愪氦鎴愬姛");
+      this.$message.success(res.message);
     },
+
     // 淇敼椤圭洰鐨勬娴嬪�兼敼鍙樼粨璁�
-    async changeState(row) {
-      const res = await this.$axios.post(
-        this.$api.url.updaterawInsProduct,
-        { ...row },
-        { headers: { "Content-Type": "application/json" } }
-      );
-      this.$message.success("鎻愪氦鎴愬姛");
-      this.getDetailInfo(); //閲嶆柊鍒锋柊淇℃伅鏁版嵁
+    async changeState(row, index) {
+      if (this.detailId !== null) {
+        const res = await this.$axios.post(this.$api.url.updaterawInsProduct, {
+          DevId: row.deviceId,
+          rpId: this.detailId,
+          testValue: row.testValueList[index]
+        });
+        this.$message.success("鎻愪氦鎴愬姛");
+        this.getDetailInfo(); //閲嶆柊鍒锋柊淇℃伅鏁版嵁
+      }
     },
     async submitSave() {
       const res = await this.$axios.post(
@@ -353,30 +479,22 @@
       this.$message.success("鎻愪氦鎴愬姛");
       this.getDetailInfo();
     },
-    async getOptions() {
-      const { data } = await this.$axios.get(this.$api.url.selectDevice);
-      this.materialOptions = data;
-    },
-    checkRawName(data) {
-      this.materialOptions.forEach(item => {
-        if (item.name === data) {
-          this.detailInfo.code = item.code;
-          this.$axios
-            .get(this.$api.url.selectSpBySt, { params: { id: item.id } })
-            .then(res => {
-              this.specificationOptions = res.data;
-            });
-        }
+    // 鑾峰彇璁惧鏍戝唴瀹�
+    getOptions() {
+      this.$axios.get(this.$api.url.rawSelectDevice).then(res => {
+        this.materialOptions = res.data;
       });
     },
     // 娣诲姞琛�
     clickAddLine() {
       let obj = {
-        deviceId: 0,
+        deviceId: null,
+        deviceName: "",
         internal: "",
         name: "",
         required: "",
-        testValue: "",
+        textValue: "",
+        testValueList: [],
         unit: ""
       };
       this.projectTable.push(obj);
@@ -384,12 +502,52 @@
     // 鍒犻櫎琛�
     clickDeleteline(scope) {
       this.projectTable.splice(scope.$index, 1);
+    },
+    // 鐐瑰嚮璁惧鏍戜繚瀛樼偣鍑昏褰�
+    nodeClick(data) {
+      if (data.id != undefined) this.nodeData = data;
+    },
+    // 鐐瑰嚮琛ㄦ牸閫夋嫨瑙﹀彂
+    clickTableSelect(scope) {
+      this.centerDialogVisible = true;
+      this.clickSelectSaveIndex = scope.$index;
+    },
+    // 鐐瑰嚮鏍戦噷闈㈢殑纭畾
+    clickNodeSure() {
+      this.projectTable[this.clickSelectSaveIndex].deviceId = this.nodeData.id;
+      this.projectTable[
+        this.clickSelectSaveIndex
+      ].deviceName = this.nodeData.name;
+      this.centerDialogVisible = false;
+    },
+    // 鍒犻櫎妫�楠屽�煎垪
+    clickDeleteInspectionColumn() {
+      if (this.empiricalValueAdd - 1 === 0) {
+      } else {
+        if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) {
+          this.empiricalValueAdd = this.empiricalValueAdd - 1;
+          this.projectTable.forEach(i => {
+            i.testValueList.splice(this.empiricalValueAdd, 1);
+          });
+        }
+      }
+    },
+    // 娣诲姞妫�楠屽�煎垪
+    clickAddInspectionColumn() {
+      this.empiricalValueAdd = this.empiricalValueAdd + 1;
     }
   }
 };
 </script>
 
 <style scoped>
+.node_i {
+  color: orange;
+}
+.div_device_dialog {
+  min-height: 400px;
+  overflow: auto;
+}
 .rawInsBox {
   height: 100%;
   width: 100%;
@@ -397,6 +555,9 @@
   display: flex;
   flex-direction: column;
 }
+.el-table__fixed-body-wrapper {
+  top: 48px;
+}
 .rawInsBox .title .el-button {
   height: 32px;
   border: 1px solid rgba(190, 190, 190, 0.44);

--
Gitblit v1.9.3