王震
2023-09-24 941fff624eddc4b9f369f1b91f65fdb50309851d
src/components/view/rawInsDetail.vue
@@ -6,8 +6,7 @@
            <el-col :span="12" style="text-align: right;">
               <el-button icon="el-icon-circle-plus-outline" v-show="detailId === null" @click="addNewRawInspect"
                  style="background-color: #004ea2; color: #ffffff;">提 交</el-button>
               <el-button icon="el-icon-back" @click="
              () => {
               <el-button icon="el-icon-back" @click="() => {
                goBack();
              }
            ">返 回</el-button>
@@ -19,7 +18,8 @@
            <el-row>
               <el-col :span="7">
                  <el-form-item label="来料日期:">
                     <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.formTime"></el-input>
                     <el-input v-if="detailId !== null" :disabled="detailId !== null"
                        v-model="detailInfo.formTime"></el-input>
                     <el-date-picker v-else type="date" value-format="yyyy-MM-dd" v-model="detailInfo.formTime"
                        placeholder="选择日期">
                     </el-date-picker>
@@ -27,12 +27,15 @@
               </el-col>
               <el-col :span="7">
                  <el-form-item label="原材料名称:">
                     <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.name"></el-input>
                     <el-input v-else v-model="detailInfo.name" placeholder="请输入原材料名称"></el-input> </el-form-item></el-col>
                     <el-input v-if="detailId !== null" :disabled="detailId !== null"
                        v-model="detailInfo.name"></el-input>
                     <el-input v-else v-model="detailInfo.name" 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.code"></el-input>
                     <el-input v-else v-model="detailInfo.code" placeholder="请输入原材料编码"></el-input>
                     <el-input v-if="detailId !== null" :disabled="detailId !== null"
                        v-model="detailInfo.code"></el-input>
                     <el-input @blur="blurCode" v-else v-model="detailInfo.code" placeholder="请输入原材料编码"></el-input>
                  </el-form-item>
               </el-col>
            </el-row>
@@ -46,8 +49,10 @@
               </el-col>
               <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"></el-input>
                     <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"></el-input>
                  </el-form-item>
               </el-col>
               <el-col :span="7">
@@ -82,7 +87,8 @@
            <el-col :span="12" style="line-height: 32px;">检验项目</el-col>
            <el-col :span="12" style="line-height: 32px; padding-top: 6px;">
               <el-button style="float: right;" @click="clickDeleteInspectionColumn()">删除检验值列</el-button>
               <el-button style="float: right;margin-right: 30px;" @click="clickAddInspectionColumn()">添加检验值列</el-button>
               <el-button style="float: right;margin-right: 30px;"
                  @click="clickAddInspectionColumn()">添加检验值列</el-button>
               <el-button v-if="detailId == null" style="float: right;margin-right: 30px;"
                  @click="clickAddLine()">添加检验行</el-button>
            </el-col>
@@ -94,7 +100,10 @@
            </el-table-column>
            <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-if="detailId == null" v-model="scope.row.name" placeholder="请输入项目名称"></el-input> -->
                  <el-autocomplete v-if="detailId == null" class="inline-input" v-model="scope.row.name"
                     :fetch-suggestions="querySearch" placeholder="请输入项目名称" @select="handleSelect(scope.row)"
                     @blur="handleSelect(scope.row)"></el-autocomplete>
                  <el-input v-else v-model="scope.row.rpName" disabled></el-input>
               </template>
            </el-table-column>
@@ -159,8 +168,8 @@
            <el-table-column prop="name" label="物料名称"> </el-table-column>
            <el-table-column v-if="detailId != null" prop="uName" label="检验员">
               <template slot-scope="scope">
                  <span v-for="item in scope.row.uName" :key="item && item.uName"
                     :style="{ marginRight: '8px' }">{{ item }}</span>
                  <span v-for="item in scope.row.uName" :key="item && item.uName" :style="{ marginRight: '8px' }">{{
                     item }}</span>
               </template>
            </el-table-column>
            <el-table-column prop="testState" label="检验结论">
@@ -173,7 +182,7 @@
            </el-table-column>
            <el-table-column v-if="detailId !== null" label="操作" width="120">
               <template>
                  <el-button type="text" size="small" @click.once="submitSave">上报</el-button>
                  <el-button type="text" size="small" @click="submitSave">上报</el-button>
               </template>
            </el-table-column>
         </el-table>
@@ -182,12 +191,10 @@
         <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">
            <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'
                  <span><i :class="`node_i ${data.children ? 'el-icon-folder-opened' : 'el-icon-tickets'
                  }`
                "></i>
                     {{ data.name }}</span>
@@ -244,6 +251,8 @@
            centerDialogVisible: false,
            // 详情页就是详情信息
            detailInfo: {},
         //产品信息
         ifsInfo: {},
            // 表格
            projectTable: [],
            // 新建检验单参数对象
@@ -261,7 +270,8 @@
            clickSelectDevice: {
               index: "", // 点击选择存储当前行索引
               rpId: "" // 点击选择存储当前行项目Id
            }
         },
         restaurants: []
         };
      },
      watch: {
@@ -270,6 +280,56 @@
         }
      },
      methods: {
      blurCode() {
         // this.detailId=10
         let data = {
            code: this.detailInfo.code
         }
         console.log(data);
         this.$axios.post(
            this.$api.url.rawInspectChooseIFS, {
            code: this.detailInfo.code
         }
         ).then(res => {
            this.ifsInfo = res.data
            console.log("ifs", this.ifsInfo);
            this.$set(this.detailInfo, "formTime", this.ifsInfo.formTime)
            this.detailInfo.formTime = this.ifsInfo.formTime
            this.detailInfo.name = this.ifsInfo.name
            this.detailInfo.supplier = this.ifsInfo.supplier
            this.detailInfo.unit = this.ifsInfo.unit
            this.detailInfo.userName = this.ifsInfo.userName
            this.detailInfo.number = this.ifsInfo.number
            this.detailInfo.specifications = this.ifsInfo.specifications
            this.restaurants = JSON.parse(JSON.stringify(this.ifsInfo.rawInsProducts))
            this.restaurants.forEach(item => {
               this.$set(item, "value", item.name)
            })
            console.log("restaurants", this.restaurants);
         })
      },
      querySearch(queryString, cb) {
         var restaurants = this.restaurants;
         var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
         // 调用 callback 返回建议列表的数据
         cb(results);
      },
      createFilter(queryString) {
         return (restaurant) => {
            return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
         };
      },
      handleSelect(row) {
         let select = this.restaurants.filter(item => {
            return item.name === row.name
         })[0]
         if (select != undefined) {
            this.$set(row, "internal", select.internal)
            this.$set(row, "required", select.required)
            this.$set(row, "unit", select.unit)
            //检验值
         }
      },
         assertTest(row) {
            // let fuArr=['>', '<', '=']
            // if(!fuArr.includes(row.required[0])){
@@ -379,14 +439,39 @@
               this.getDetailInfo(); //重新刷新信息数据
            }
         },
         async submitSave() {
            const res = await this.$axios.post(
       submitSave() {
         let pro = this.projectTable.filter(item => {
            return item.testState === 0;
         })
         if (pro.length > 0) {
            this.$prompt('请输入不合格数量', '不合格数量', {
               confirmButtonText: '确定',
               cancelButtonText: '取消',
               inputPattern: /^\d+$/,
               inputErrorMessage: '请输入正确数字格式'
            }).then(({ value }) => {
               this.$axios.post(
                  this.$api.url.updateRawInspectsById+`${this.detailId}`, {"number": value }
               ).then(res => {
                  this.$message.success("提交成功");
                  this.getDetailInfo();
                  this.goBack()
               });
            }).catch(() => {
               this.$message({
                  type: 'info',
                  message: '取消输入'
               });
            });
         }else{
          this.$axios.post(
               this.$api.url.updateRawInspectsById + `${this.detailId}`
            ).then(res => {
               this.$message.success("提交成功");
               this.getDetailInfo();
               this.goBack()
            });
         }
         },
         // 获取设备树内容
         getOptions() {