zouyu
2023-09-15 a6a4092ce1899bd020bc15cff43f0977c87e6be8
src/components/view/rawInsDetail.vue
@@ -12,7 +12,7 @@
            >提 交</el-button
          >
          <el-button
            icon="el-icon-download"
            icon="el-icon-back"
            @click="
              () => {
                goBack();
@@ -51,7 +51,7 @@
              <el-input
                v-if="detailId !== null"
                :disabled="detailId !== null"
                v-model="detailInfo.rname"
                v-model="detailInfo.name"
              ></el-input>
              <el-input
                v-else
@@ -64,7 +64,7 @@
              <el-input
                v-if="detailId !== null"
                :disabled="detailId !== null"
                v-model="detailInfo.rcode"
                v-model="detailInfo.code"
              ></el-input>
              <el-input
                v-else
@@ -118,7 +118,7 @@
          <el-col :span="7">
            <el-form-item label="供应商名称:">
              <el-input
                :placeholder="detailId !== null ? '' : '请输入检验数量'"
                :placeholder="detailId !== null ? '' : '请输入供应商名称'"
                :disabled="detailId !== null"
                v-model="detailInfo.supplier"
              ></el-input>
@@ -190,9 +190,11 @@
            <el-input v-else v-model="scope.row.rpUnit" disabled></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="required" label="标准" min-width="150">
        <el-table-column prop="required" label="标准值" min-width="150">
          <template slot-scope="scope">
            <el-input
              :disabled="detailId != null"
              @blur="assertTest(scope.row)"
              v-model="scope.row.required"
              placeholder="请输入标准值"
            ></el-input>
@@ -201,6 +203,8 @@
        <el-table-column prop="internal" label="内控值" min-width="150">
          <template slot-scope="scope">
            <el-input
              @blur="assertTest(scope.row)"
              :disabled="detailId != null"
              v-model="scope.row.internal"
              placeholder="请输入内控值"
            ></el-input>
@@ -272,11 +276,11 @@
      <el-table :data="conclusionTable" style="100%">
        <el-table-column prop="code" label="物料编号"> </el-table-column>
        <el-table-column prop="name" label="物料名称"> </el-table-column>
        <el-table-column prop="names" label="检验员">
        <el-table-column v-if="detailId != null" prop="uName" label="检验员">
          <template slot-scope="scope">
            <span
              v-for="item in scope.row.names"
              :key="item && item.userName"
              v-for="item in scope.row.uName"
              :key="item && item.uName"
              :style="{ marginRight: '8px' }"
              >{{ item }}</span
            >
@@ -348,6 +352,7 @@
</template>
<script>
import { triggerRef } from "vue";
import RawIns from "./raw-ins.vue";
export default {
  components: { RawIns },
@@ -357,9 +362,8 @@
    this.detailInfo = {};
    if (this.detailId) {
      this.getDetailInfo();
    } else {
      this.getOptions();
    }
    this.getOptions();
  },
  mounted() {},
  computed: {
@@ -367,8 +371,8 @@
      const conclusion = {};
      conclusion.name = this.detailInfo.name;
      conclusion.code = this.detailInfo.code;
      conclusion.names = [
        ...new Set(this.projectTable.map(item => item.userName))
      conclusion.uName = [
        ...new Set(this.projectTable.map(item => item.uName))
      ];
      if (
        this.projectTable.filter(item => item.testState === null).length ===
@@ -382,6 +386,7 @@
      } else {
        conclusion.testState = 1;
      }
      console.log([conclusion]);
      return [conclusion];
    }
  },
@@ -409,7 +414,10 @@
        label: "name"
      },
      nodeData: "", // node点击保存当前点击数据
      clickSelectSaveIndex: "" // 点击选择存储列表索引
      clickSelectDevice: {
        index: "", // 点击选择存储当前行索引
        rpId: "" // 点击选择存储当前行项目Id
      }
    };
  },
  watch: {
@@ -418,6 +426,23 @@
    }
  },
  methods: {
    assertTest(row){
      let fuArr=['>', '<', '=']
      if(!fuArr.includes(row.required[0])){
        this.$message({
                    message: "标准值["+row.required+"]格式首位应包含>,<或者=",
                    type: 'warning'
                });
                return
      }
      if(!fuArr.includes(row.internal[0])){
        this.$message({
                    message: "内控值["+row.internal+"]格式首位应包含>,<或者=",
                    type: 'warning'
                });
                return
      }
    },
    // 设备树过滤搜索
    filterNode(value, data) {
      if (!value) return true;
@@ -434,7 +459,12 @@
          this.detailInfo = res.data;
          this.projectTable = res.data.children;
          this.projectTable.forEach(i => {
            i.testValueList = i.testValue.split(",");
            // 解决重新赋值无法编辑操作
            if (i.testValue == null) {
              this.$set(i, "testValueList", []);
            } else {
              this.$set(i, "testValueList", i.testValue.split(","));
            }
            // 取最长的列表数
            if (i.testValueList.length > this.empiricalValueAdd) {
              this.empiricalValueAdd = i.testValueList.length;
@@ -445,19 +475,45 @@
    },
    // 新增检验单
    async addNewRawInspect() {
      //TODO:
      console.log(this.projectTable);
      if(this.projectTable.length>0){
        let filterTable= this.projectTable.filter(item=>{
        return item.required===''||item.internal===''||
        item.required===null||item.internal===null||item.name===''
        })
        if(filterTable.length>0) {
          this.$message({
                    message: "项目名称,标准值和内控值不能为空!",
                    type: 'warning'
                });
          return
        }
      }
      this.projectTable.forEach(i => {
        // 将列表转换为字符串
        i.testValue = i.testValueList.join(",");
      });
      this.detailInfo.rawInsProducts = this.projectTable;
      const res = await this.$axios.post(
      this.$axios.post(
        this.$api.url.addRawInspects,
        { ...this.detailInfo },
        { headers: { "Content-Type": "application/json" } }
      );
      this.detailId = res.data;
      this.getDetailInfo();
      this.$message.success(res.message);
      ).then(res=>{
        console.log(res);
        if(res.code=="201"){
          this.$message({
                    message: res.message,
                    type: 'warning'
                });
         return
        }else{
          // this.detailId = res.data;
          // this.getDetailInfo();
          // // this.$message.success(res.message);
          // this.goBack();
        }
      });
    },
    // 修改项目的检测值改变结论
@@ -465,8 +521,8 @@
      if (this.detailId !== null) {
        const res = await this.$axios.post(this.$api.url.updaterawInsProduct, {
          DevId: row.deviceId,
          rpId: this.detailId,
          testValue: row.testValueList[index]
          rpId: row.rpId,
          testValue: row.testValueList.join(",")
        });
        this.$message.success("提交成功");
        this.getDetailInfo(); //重新刷新信息数据
@@ -475,9 +531,11 @@
    async submitSave() {
      const res = await this.$axios.post(
        this.$api.url.updateRawInspectsById + `${this.detailId}`
      );
      this.$message.success("提交成功");
      this.getDetailInfo();
      ).then(res=>{
        this.$message.success("提交成功");
        this.getDetailInfo();
        this.goBack()
      });
    },
    // 获取设备树内容
    getOptions() {
@@ -494,6 +552,7 @@
        name: "",
        required: "",
        textValue: "",
        testState:null,
        testValueList: [],
        unit: ""
      };
@@ -510,15 +569,30 @@
    // 点击表格选择触发
    clickTableSelect(scope) {
      this.centerDialogVisible = true;
      this.clickSelectSaveIndex = scope.$index;
      this.clickSelectDevice.index = scope.$index;
      this.clickSelectDevice.rpId = scope.row.rpId;
    },
    // 点击树里面的确定
    clickNodeSure() {
      this.projectTable[this.clickSelectSaveIndex].deviceId = this.nodeData.id;
      this.projectTable[
        this.clickSelectSaveIndex
      ].deviceName = this.nodeData.name;
      this.centerDialogVisible = false;
      if (this.detailId == null) {
        this.projectTable[
          this.clickSelectDevice.index
        ].deviceId = this.nodeData.id;
        this.projectTable[
          this.clickSelectDevice.index
        ].deviceName = this.nodeData.name;
        this.centerDialogVisible = false;
      } else {
        this.$axios
          .post(this.$api.url.updateDevByRpId, {
            rpId: this.clickSelectDevice.rpId,
            devId: this.nodeData.id
          })
          .then(res => {
            this.getDetailInfo();
            this.centerDialogVisible = false;
          });
      }
    },
    // 删除检验值列
    clickDeleteInspectionColumn() {