spring
2025-04-10 5f13420b2258ae2741fae9b1d77963db9e43d222
src/views/business/materialOrder/customsInspection.vue
@@ -123,11 +123,21 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
          <!-- <el-col :span="6">
            <el-form-item class="addObj-form-item" label="约定时间:" prop="appointed">
              <el-date-picker v-model="addObj.appointed" :disabled="active > 1" format="yyyy-MM-dd" placeholder="选择日期"
                size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd">
              </el-date-picker>
            </el-form-item>
          </el-col> -->
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="报检类型:">
              <el-input v-model="addObj.inspectionType" class="addObj-info" clearable disabled size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="车间名称:">
              <el-input v-model="addObj.workShopName" class="addObj-info" clearable disabled size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
@@ -143,22 +153,21 @@
      <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px">
        <div v-if="active == 1">
          <el-form :inline="true" :model="addObj1" label-width="90px">
            <el-form-item label="样品型号:" style="margin-bottom: 6px;margin-top: 6px">
              <el-select v-model="model" :placeholder="active > 1 ? '' : '请输入'" allow-create clearable
                default-first-option filterable size="small" @change="changeModel">
                <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="检验标准:" style="margin-bottom: 6px;margin-top: 6px">
              <el-select v-model="standardMethodListId" :loading="methodLoad" :placeholder="active > 1 ? '' : '请输入'"
                clearable size="small" @change="changeStandardMethodListId" @focus="methodFocus">
                <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
                </el-option>
              </el-select>
            <el-form-item label="附件查看:" style="margin-bottom: 6px;margin-top: 6px">
              <el-button type="text" @click="handleFileDialog">
                <i class="el-icon-document"></i>
                车间附件查看
              </el-button>
            </el-form-item>
          </el-form>
        </div>
        <el-button type="text" @click="handleFileDialog" v-show="active != 1">
          <i class="el-icon-document"></i>
          车间附件查看
        </el-button>
        <el-dialog :visible.sync="fileDialogVisible" title="附件查看" width="80%">
          <fileList :currentNo="addObj.workShopId" v-if="fileDialogVisible" :isLook="true" />
        </el-dialog>
        <div style="margin-bottom: 6px;margin-top: 6px">
          <el-button v-show="active == 1" :disabled="sampleList.length === 2" size="small" type="primary"
            @click="handleSplitCountNum">拆分</el-button>
@@ -194,8 +203,9 @@
        </el-table-column>
        <el-table-column v-if="!(active > 1)" align="center" label="型号参数" prop="modelNum" width="130">
          <template slot-scope="scope">
            <el-input v-model="scope.row.modelNum" :disabled="active > 1 || scope.$index !== 0" clearable placeholder="非必填"
              size="small" @input="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
            <el-input v-model="scope.row.modelNum" :disabled="active > 1 || scope.$index !== 0" clearable
              placeholder="非必填" size="small"
              @input="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
          </template>
        </el-table-column>
        <el-table-column align="center" label="检验标准" min-width="100" prop="standardMethodListId">
@@ -203,7 +213,7 @@
            <el-select v-model="scope.row.standardMethodListId"
              :disabled="scope.row.model == null || active > 1 || scope.$index !== 0" :loading="methodLoad" clearable
              placeholder="检验标准" size="small" style="width: 100%;" @change="(value) => methodChange(value, scope.row)"
              @clear="productList = []" @focus="methodFocus">
              @clear="productList = []" @focus="methodFocus" multiple>
              <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
              </el-option>
            </el-select>
@@ -238,9 +248,8 @@
      </el-table>
      <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName"
        class="el-table" max-height="400px" style="margin-bottom: 10px;"
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border tooltip-effect="dark"
        @select="selectOne" @selection-change="selectProduct" @select-all="handleAll">
        <el-table-column v-if="active == 1" :selectable="selectable" type="selection" width="65"></el-table-column>
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border tooltip-effect="dark">
        <!-- <el-table-column v-if="active == 1" :selectable="selectable" type="selection" width="65"></el-table-column> -->
        <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip>
          <template slot="header" slot-scope="scope">
            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
@@ -271,16 +280,16 @@
        </el-table-column>
        <el-table-column label="要求描述" min-width="220px" prop="tell">
          <template slot-scope="scope">
            <el-input v-if="active == 1 && isAskOnlyRead" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3 }"
              clearable placeholder="要求描述" size="small" type="textarea"
            <el-input v-if="active == 1 && isAskOnlyRead" v-model="scope.row.tell"
              :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述" size="small" type="textarea"
              @change="e => requestChange(e, scope.row, 'tell')"></el-input>
            <span v-else>
              <template>{{ scope.row.tell }}</template>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip></el-table-column>
        <el-table-column label="试验方法" min-width="120" prop="methodS" show-overflow-tooltip>
        <el-table-column label="试验条件" min-width="140" prop="radius" show-overflow-tooltip></el-table-column>
        <el-table-column label="试验方法" min-width="120" prop="method" show-overflow-tooltip>
          <template slot="header" slot-scope="scope">
            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
              <span>试验方法</span>
@@ -314,8 +323,8 @@
            <div class="search_label" style="width: 80px;">要求值:</div>
            <div class="search_input">
              <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)">
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai"
                  :label="a">{{ JSON.parse(item.bsmRow.askCopy)[ai] }}</el-radio>
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a">{{
                  JSON.parse(item.bsmRow.askCopy)[ai] }}</el-radio>
              </el-radio-group>
            </div>
          </el-col>
@@ -405,16 +414,19 @@
  selectStandardProductList,
  selectStandardTreeListByPartNo
} from "@/api/business/rawMaterialOrder";
import fileList from "../../structural/capabilityAndLaboratory/workshop/components/fileList.vue"
import limsTable from "@/components/Table/lims-table.vue";
export default {
  name: "CustomsInspection",
  dicts: ['check_type', 'urgency_level'],
  components: {},
  components: { limsTable, fileList },
  props: {
  },
  data() {
    return {
      customsInspection: {},
      fileDialogVisible: false,
      orderType: '',
      active: 0,
      currentId: 0,
@@ -460,6 +472,8 @@
        typeSource: 1,
        ifsInventoryId: '',
        sampleStatus: 'In good condition',
        workShopName: '',//车间名称
        workShopId: '',//车间ID
      },
      addObjRules: { // 表单校验规则
        testQuantity: [
@@ -511,7 +525,7 @@
      totalArr: [],
      addObj1: {},
      model: null,
      standardMethodListId: null,
      standardMethodListId: [],
      inspectionItem: null,
      inspectionItemSubclass: null,
      methodS: null,
@@ -543,7 +557,7 @@
          value: 0
        },
        {
          label: '季度检验',
          label: '可靠性检验',
          value: 1
        },
      ],
@@ -586,11 +600,11 @@
    },
    'addObj.sample'(val) {
      this.model = null
      this.standardMethodListId = null
      this.standardMethodListId = []
    },
    'addObj.qtyArrived'(val) {
      this.model = null
      this.standardMethodListId = null
      this.standardMethodListId = []
    }
  },
  created() {
@@ -609,12 +623,13 @@
    this.customsInspection = this.$route.query.customsInspection
    this.getInfo();
  },
  getInfo() {
    this.getUserNowList() // 获取当前用户信息
    this.selectStandardMethods() // 获取检验标准下拉框数据
    this.getInfo() // 获取数据
  },
  // getInfo() {
  //   this.getInfo() // 获取数据
  // },
  methods: {
    handleFileDialog() {
      this.fileDialogVisible = true
    },
    save1() {
      if (this.bsm1DiaList.length > 0) {
        this.bsm1DiaList.forEach(item => {
@@ -654,6 +669,8 @@
    },
    // 获取数据
    getInfo() {
      this.getUserNowList() // 获取当前用户信息
      this.selectStandardMethods() // 获取检验标准下拉框数据
      if (this.active == 2) {
        let orderId = ''
        if (!this.customsInspection.enterOrderId && this.customsInspection.quarterOrderId) {
@@ -689,6 +706,11 @@
            this.addObj.updateBatchNo = res.data.insOrderTemplate.updateBatchNo
            this.addObj.type = String(this.addObj.type)
            this.sampleList = this.HaveJson(res.data.sampleProduct)
            this.sampleList.forEach(m => {
              if (m.standardMethodListId) {
                m.standardMethodListId = JSON.parse(m.standardMethodListId)
              }
            })
            this.getProNum()
            this.$nextTick(() => {
              this.$refs.sampleTable.doLayout()
@@ -728,14 +750,18 @@
            this.$set(this.addObj, 'buyUnitMeas', this.customsInspection.buyUnitMeas)
            this.$set(this.addObj, 'updateBatchNo', this.customsInspection.updateBatchNo)
            this.$set(this.addObj, 'partDetail', this.customsInspection.partDesc)
            this.$set(this.addObj, 'workShopName', res.data.workShopName)
            this.$set(this.addObj, 'workShopId', res.data.workShopId)
            this.$set(this.addObj, 'inspectionType', this.customsInspection.inspectionType)
            console.log(111111, this.addObj)
            if (this.orderType == 1) {
              this.$set(this.addObj, 'orderType', 'Quarterly inspection')
            }
            const str = res.data.treeName.split('-')
            this.selectTreeTem = str.join(' - ')
            this.selectTree = str.join(' - ')
            this.addListInfo(this.codeLevel, res.data) // 原辅料样品是固定的,就默认赋值一条数据,可拆分
            this.selectInsOrderTemplate() // 原辅料模板列表查询
            this.addListInfo(this.codeLevel, res.data) // 原辅材样品是固定的,就默认赋值一条数据,可拆分
            this.selectInsOrderTemplate() // 原辅材模板列表查询
          } else {
            this.dialogVisible = true
            this.dialogMessage = res.message
@@ -866,7 +892,7 @@
    save() {
      this.$refs['addObj'].validate((valid) => {
        if (valid) {
          if (!this.sampleList.every(m => m.standardMethodListId)) {
          if (!this.sampleList.every(m => m.standardMethodListId && m.standardMethodListId.length > 0)) {
            this.$message.error('请选择检验标准')
            return
          }
@@ -875,7 +901,7 @@
            item.insProduct = this.productList
          })
          this.getTotal(sampleList)
          let projectNum = this.totalArr.filter(a => a.state == 1).length
          let projectNum = this.totalArr.length
          if (projectNum == 0) {
            this.$confirm('检验项目为空,是否确认提交?', "提示", {
              confirmButtonText: "确定",
@@ -920,7 +946,7 @@
    noNeedCheck() {
      this.$refs['addObj'].validate((valid) => {
        if (valid) {
          if (!this.sampleList.every(m => m.standardMethodListId)) {
          if (!this.sampleList.every(m => m.standardMethodListId && m.standardMethodListId.length > 0)) {
            this.$message.error('请选择检验标准')
            return
          }
@@ -950,19 +976,19 @@
      })
      this.getTotal(sampleList)
      let trees = this.selectTree.split(" - ")
      if (trees.length < 3) {
      if (trees.length < 5) {
        this.$message.error('未选择对象')
        return
      }
      this.addObj.factory = trees[0]
      this.addObj.laboratory = trees[1]
      this.addObj.sampleType = trees[2]
      if ((trees[3] === undefined || trees[3] === '') || trees.length === 4) {
        this.addObj.sample = trees[2]
      this.addObj.sampleType = trees[3]
      if ((trees[5] === undefined || trees[5] === '') || trees.length === 6) {
        this.addObj.sample = trees[4]
      } else {
        this.addObj.sample = trees[3]
        this.addObj.sample = trees[5]
      }
      this.addObj.model = (trees[4] == undefined ? null : trees[4])
      this.addObj.model = (trees[6] == undefined ? null : trees[6])
      this.addObj.ifsInventoryId = this.customsInspection.id
      this.noNeedCheckLoad = true
      addExemptionOrder({
@@ -996,32 +1022,35 @@
    },
    saveMethod(sampleList) {
      let trees = this.selectTree.split(" - ")
      if (trees.length < 3) {
      if (trees.length < 5) {
        this.$message.error('未选择对象')
        return
      }
      this.addObj.factory = trees[0]
      this.addObj.laboratory = trees[1]
      this.addObj.sampleType = trees[2]
      if ((trees[3] === undefined || trees[3] === '') || trees.length === 4) {
        this.addObj.sample = trees[2]
      this.addObj.sampleType = trees[4]
      if ((trees[5] === undefined || trees[5] === '') || trees.length === 6) {
        this.addObj.sample = trees[4]
      } else {
        this.addObj.sample = trees[3]
        this.addObj.sample = trees[5]
      }
      this.addObj.model = (trees[4] == undefined ? null : trees[4])
      this.addObj.model = (trees[6] == undefined ? null : trees[6])
      this.addObj.ifsInventoryId = this.customsInspection.id
      this.saveLoad = true
      if (this.addObj.createTime) {
        delete this.addObj.createTime
      }
      addInsOrder({
        insOrder: this.addObj,
        insOrder: {
          ...this.addObj,
          workShopId: this.addObj.workShopId || ''  // 确保 workShopId 传递给后端
        },
        sampleList: sampleList.map(a => {
          if (a.insProduct.length > 0) {
            a.insProduct.forEach(c => {
              delete c.id
            })
          }
          a.standardMethodListId = JSON.stringify(a.standardMethodListId)
          a.insProduct = this.fullProductList.map(item => ({
            ...item,
            state: 1
          }))
          if (a.modelNum) {
            // 根据x号判断型号参数与样品型号的拼接位置
            // 例如×4,就为500ML×4;4×,就为4×500ML
@@ -1036,7 +1065,6 @@
          } else {
            a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
          }
          a.insProduct = a.insProduct.filter(b => b.state === 1)
          return a
        }),
      }).then(res => {
@@ -1434,18 +1462,18 @@
      this.sample.joinNum = 1
      this.sample.sample = this.addObj.sample
      this.sample.unit = this.addObj.unit
      this.sample.standardMethodListId = null
      this.sample.standardMethodListId = []
      this.sample.insProduct = []
      this.sample.id = this.count
      this.sample.childSampleList = []
      this.sample.insulating = null
      this.sample.sheath = null
      this.sample.quantity = 1
      if (codeLevel === '[5]') {
      if (codeLevel === '[7]') {
        this.sample.model = this.addObj.sample
      } else if (codeLevel === '[4]') {
      } else if (codeLevel === '[6]') {
        this.models = data.children2
      } else if (codeLevel === '[3]') {
      } else if (codeLevel === '[5]') {
        this.models = data.children1
      }
      this.sampleList.push(this.HaveJson(this.sample))
@@ -1469,12 +1497,12 @@
    // 选中表格行的回调
    rowClick(row, column, event) {
      this.currentMethod = row
      let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId)
      if (obj && obj.code == '技术要求') {
        this.isAskOnlyRead = true
      } else {
        this.isAskOnlyRead = false
      }
      // let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId)
      // if (obj && obj.code == '技术要求') {
      //   this.isAskOnlyRead = true
      // } else {
      //   this.isAskOnlyRead = false
      // }
      this.sampleId = row.id
      if (this.active !== 1) {
        this.sampleIds = []
@@ -1544,29 +1572,28 @@
        })
      }
      this.currentMethod = row
      let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId)
      if (obj && obj.code == '技术要求') {
        this.isAskOnlyRead = true
      } else {
        this.isAskOnlyRead = false
      }
      // let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId)
      // if (obj && obj.code == '技术要求') {
      //   this.isAskOnlyRead = true
      // } else {
      //   this.isAskOnlyRead = false
      // }
      this.getProductLoad = true
      let selectTreeList = this.selectTree.split(" - ")
      this.addObj.model && (selectTreeList[selectTreeList.length - 1] = this.addObj.model)
      selectStandardProductList({
        model: this.addObj.model ? this.addObj.model : row.model,
        modelNum: row.modelNum,
        standardMethodListId: val,
        standardMethodListIds: val,
        factory: selectTreeList.join(" - "),
        partNo: this.addObj.partNo,
        ifsInventoryId: this.customsInspection.id
      }).then(res => {
        this.getProductLoad = false
        res.data.forEach(a => {
          a.state = 0
        })
        this.productList = this.HaveJson(res.data)
        this.productList0 = JSON.parse(JSON.stringify(this.productList))
        // 直接将查询结果赋值给 productList
        this.fullProductList = res.data
        this.productList = res.data
        this.productList0 = res.data
        this.$refs.sampleTable.setCurrentRow(row)
        setTimeout(() => {
          this.productList.forEach(a => {
@@ -1575,25 +1602,6 @@
        }, 200)
      }).catch(err => {
        console.log('err-', err)
      })
    },
    // 选择样品型号的回调
    changeModel() {
      this.sampleList.forEach(a => {
        let obj = this.sampleIds.find(b => b == a.id)
        if (obj) {
          a.model = this.model
        }
      })
    },
    // 选择检验标准的回调
    changeStandardMethodListId() {
      this.sampleList.forEach(a => {
        let obj = this.sampleIds.find(b => b == a.id)
        if (obj) {
          a.standardMethodListId = this.standardMethodListId
          this.methodChange(this.standardMethodListId, a)
        }
      })
    },
    // 拼接样品树的字符串
@@ -1856,7 +1864,7 @@
}
>>>.warning-row {
:deep(.warning-row) {
  color: #1890FF;
}
</style>