spring
2025-04-09 414a9c839061e06468138c9f662a4d9cf4225599
完成二次报检,过期报检
已修改5个文件
已添加1个文件
344 ■■■■ 文件已修改
src/api/business/materialInspection.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/lims-table.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/components/declareDialog.vue 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/customsInspection.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/index.vue 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/components/add.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/materialInspection.js
@@ -97,3 +97,21 @@
    responseType: "blob",
  });
}
// äºŒæ¬¡æŠ¥æ£€/过期报检新增/编辑
export function addIfsInventory(query) {
  return request({
    url: "/ifsInventoryQuantity/addIfsInventory",
    method: "post",
    data: query,
  });
}
// äºŒæ¬¡æŠ¥æ£€/过期报检删除
export function ifsInventoryQuantityDelIfsInventory(query) {
  return request({
    url: "/ifsInventoryQuantity/delIfsInventory",
    method: "delete",
    params: query,
  });
}
src/components/Table/lims-table.vue
@@ -518,4 +518,8 @@
.lims-table .highlight-danger-row-border td:last-child {
  border-right: 4px solid #f56c6c;
}
>>>.is-disabled {
  color: #C0C4CC !important;
}
</style>
src/views/business/materialOrder/components/declareDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
<template>
  <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="declareDialogVisible" width="800px"
    @close="resetFormData">
    <el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" label-width="130px"
      label-position="right">
      <el-form-item class="declareObj-form-item" label="订单号:" prop="orderNo">
        <el-input v-model="declareObj.orderNo" class="addObj-info" clearable placeholder="" size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="零件号:" prop="partNo">
        <el-input v-model="declareObj.partNo" class="addObj-info" clearable placeholder="" size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="零件描述:" prop="partDesc">
        <el-input v-model="declareObj.partDesc" class="addObj-info" clearable placeholder="" size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="抵达的采购数量:" prop="qtyArrived">
        <el-input v-model="declareObj.qtyArrived" class="addObj-info" clearable placeholder="" size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="供应商编号:" prop="supplierId">
        <el-input v-model="declareObj.supplierId" class="addObj-info" clearable placeholder="" size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="供应商名称:" prop="supplierName">
        <el-input v-model="declareObj.supplierName" class="addObj-info" clearable placeholder=""
          size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="批号:" prop="updateBatchNo">
        <el-input v-model="declareObj.updateBatchNo" class="addObj-info" clearable size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="库位号:" prop="locationNo">
        <el-input v-model="declareObj.locationNo" class="addObj-info" clearable size="small"></el-input>
      </el-form-item>
      <!-- <el-form-item class="declareObj-form-item" label="接收时间:" prop="receiverDate">
        <el-input v-model="declareObj.receiverDate" class="addObj-info" clearable disabled size="small"></el-input>
      </el-form-item> -->
      <el-form-item class="declareObj-form-item" label="单位:" prop="buyUnitMeas">
        <el-input v-model="declareObj.buyUnitMeas" clearable class="addObj-info" size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="过期时间:" prop="expirationTime">
        <el-date-picker v-model="declareObj.expirationTime" type="date" placeholder="选择日期" size="small"
          format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;">
        </el-date-picker>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="供应商批号:" prop="supplierNumber">
        <el-input v-model="declareObj.supplierNumber" clearable class="addObj-info" size="small"></el-input>
      </el-form-item>
      <el-form-item class="declareObj-form-item" label="报检类型:" prop="inspectionType">
        <el-select v-model="declareObj.inspectionType" clearable class="addObj-info" size="small" placeholder="请选择报检类型"
          disabled>
          <el-option v-for="item in dict.type.inspection_type" :key="item.value" :label="item.label"
            :value="item.value">
          </el-option>
        </el-select>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-row>
        <el-button @click="resetFormData">取 æ¶ˆ</el-button>
        <el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclare">确认报检</el-button>
      </el-row>
    </span>
  </el-dialog>
</template>
<script>
import {
  addIfsInventory
} from "@/api/business/materialInspection";
export default {
  props: ['title'],
  dicts: ["inspection_type"],
  data() {
    return {
      submitDeclareLoading: false,
      declareDialogVisible: false,
      declareObj: {},
      declareObjRules: {
        orderNo: [
          { required: false, message: '请填写订单号', trigger: 'blur' }
        ],
        partNo: [
          { required: true, message: '请填写零件号', trigger: 'blur' }
        ],
        partDesc: [
          { required: true, message: '请填写零件描述', trigger: 'blur' }
        ],
        qtyArrived: [
          { required: false, message: '请填写抵达的采购数量', trigger: 'blur' }
        ],
        supplierName: [
          { required: true, message: '请填写供应商名称', trigger: 'blur' }
        ],
        updateBatchNo: [
          { required: true, message: '请填写批号', trigger: 'blur' }
        ],
        locationNo: [
          { required: false, message: '请填写库位号', trigger: 'blur' }
        ],
        buyUnitMeas: [
          { required: false, message: '请填写单位', trigger: 'blur' }
        ],
        inspectionType: [
          { required: true, message: '请填写报检类型', trigger: 'change' }
        ],
      },
    }
  },
  methods: {
    resetFormData() {
      this.$refs['declareObj'].resetFields();
      this.declareDialogVisible = false
    },
    submitDeclare() {
      this.$refs['declareObj'].validate((valid) => {
        if (valid) {
          this.submitDeclareLoading = true
          addIfsInventory(this.declareObj).then(res => {
            this.submitDeclareLoading = false
            if (res.code === 200) {
              this.declareDialogVisible = false
              this.$message.success('提交成功')
              this.$emit('refreshTable')
            }
          }).catch(err => {
            console.log(err)
            this.submitDeclareLoading = false
          })
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    open(type, row) {
      if (row) {
        this.declareObj = row;
      } else {
        this.declareObj = {}
        this.declareObj.inspectionType = String(type)
      }
      this.declareDialogVisible = true
    },
  }
}
</script>
<style></style>
src/views/business/materialOrder/customsInspection.vue
@@ -302,7 +302,7 @@
            </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="140" prop="radius" show-overflow-tooltip></el-table-column>
        <el-table-column label="试验方法" min-width="120" prop="methodS" show-overflow-tooltip>
          <template slot="header" slot-scope="scope">
            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
src/views/business/materialOrder/index.vue
@@ -20,8 +20,11 @@
          <el-form-item label="报检类型" prop="inspectionType">
            <el-select v-model="entity.inspectionType" clearable placeholder="请选择" size="small" @change="refreshTable"
              style="width: 100%">
              <el-option label="原辅材" value="原辅材"></el-option>
              <el-option label="包材" value="包材"></el-option>
              <!-- <el-option label="原辅材" value="原辅材"></el-option>
              <el-option label="包材" value="包材"></el-option> -->
              <el-option v-for="item in dict.type.inspection_type" :key="item.value" :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item>
@@ -76,6 +79,10 @@
              @click="handleOut">导出</el-button>
            <!-- <el-button v-if="tabIndex === 0" size="small" type="primary" @click="copper">铜材料下单</el-button> -->
            <el-button v-if="tabIndex !== 0" size="small" type="primary" @click="openPrint">标签打印</el-button>
            <el-button v-if="tabIndex === 0" size="small" type="primary"
              @click="opendeclareDialog(2, '二次报检')">二次报检</el-button>
            <el-button v-if="tabIndex === 0" size="small" type="primary"
              @click="opendeclareDialog(3, '过期报检')">过期报检</el-button>
          </div>
        </div>
        <!--待下单-->
@@ -185,6 +192,8 @@
    <!--                :sonLaboratory="'原辅材'" :state="state"-->
    <!--                :typeSource="typeSource"-->
    <!--                @goback="goback" @refreshView="refreshView"/>-->
    <!-- è¿‡æœŸæŠ¥æ£€/二次报检 -->
    <declareDialog ref="declareDialog" :title="declareTitle" @refreshTable="refreshTable" />
  </div>
</template>
@@ -208,42 +217,46 @@
  revokeInspectionReport,
  updateEntrustCode
} from "@/api/business/rawMaterialOrder";
import { getWarehouseSubmit } from "@/api/business/materialInspection";
import { getWarehouseSubmit, ifsInventoryQuantityDelIfsInventory } from "@/api/business/materialInspection";
import { mapGetters } from "vuex";
import declareDialog from './components/declareDialog.vue'
// import Inspection from "../do/b1-inspect-order-plan/Inspection.vue";
export default {
  name: "MaterialOrder",
  dicts: ["inspection_type"],
  // import å¼•入的组件需要注入到对象中才能使用
  components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog },
  components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog, declareDialog },
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      inspectionTypeList: [],
      declareTitle: '',
      tableData: [],
      tableLoading: false,
      column: [
        { label: '批号', prop: 'updateBatchNo' },
        { label: '零件号', prop: 'partNo' },
        { label: '零件描述', prop: 'partDesc' },
        { label: '报检类型', prop: 'inspectionType' },
        {
          label: '报检类型', prop: 'inspectionType',
          dataType: 'tag',
          label: '物料类型',
          prop: 'isExpire',
          formatData: (params) => {
            if (params == 1) {
              return '过期物料'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.label
            }
          },
          formatType: (params) => {
            if (params == 1) {
              return 'info'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.raw.listClass
            }
          }
        },
        {
          label: '过期时间',
          prop: 'expirationTime',
        },
        { label: '抵达的采购数量', prop: 'qtyArrived' },
        { label: '单位', prop: 'buyUnitMeas' },
@@ -267,6 +280,40 @@
              type: 'text',
              clickFun: (row) => {
                this.exemption(row);
              },
            },
            {
              name: '删除',
              type: 'text',
              clickFun: (row) => {
                this.$confirm("是否删除该条数据?", "提示", {
                  confirmButtonText: "确定",
                  cancelButtonText: "取消",
                  type: "warning",
                })
                  .then(() => {
                    ifsInventoryQuantityDelIfsInventory({ id: row.id }).then((res) => {
                      if (res.code == 200) {
                        this.$message.success("删除成功");
                        this.refreshTable()
                      }
                    });
                  })
                  .catch(() => { });
              },
              disabled: (row) => {
                return !row.inspectionType || row.inspectionType < 2
              },
            },
            {
              name: '编辑',
              type: 'text',
              clickFun: (row) => {
                this.declareTitle = row.inspectionType == 2 ? '二次报检' : '过期报检'
                this.$refs.declareDialog.open(row.inspectionType, row)
              },
              disabled: (row) => {
                return !row.inspectionType || row.inspectionType < 2
              },
            },
            // {
@@ -307,25 +354,25 @@
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        { label: '下发时间', prop: 'sendTime' },
        { label: '报检类型', prop: 'inspectionType' },
        {
          label: '报检类型', prop: 'inspectionType',
          dataType: 'tag',
          label: '物料类型',
          prop: 'isExpire',
          formatData: (params) => {
            if (params == 1) {
              return '过期物料'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.label
            }
          },
          formatType: (params) => {
            if (params == 1) {
              return 'info'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.raw.listClass
            }
          }
        },
        {
          label: '过期时间',
          prop: 'expirationTime',
        },
        { label: '抵达的采购数量', prop: 'qtyArrived' },
        { label: '单位', prop: 'buyUnitMeas' },
@@ -447,25 +494,25 @@
        },
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        { label: '报检类型', prop: 'inspectionType' },
        {
          label: '报检类型', prop: 'inspectionType',
          dataType: 'tag',
          label: '物料类型',
          prop: 'isExpire',
          formatData: (params) => {
            if (params == 1) {
              return '过期物料'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.label
            }
          },
          formatType: (params) => {
            if (params == 1) {
              return 'info'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.raw.listClass
            }
          }
        },
        {
          label: '过期时间',
          prop: 'expirationTime',
        },
        { label: '单位', prop: 'buyUnitMeas' },
        { label: '接收时间', prop: 'receiverDate' },
@@ -619,25 +666,25 @@
        },
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        { label: '报检类型', prop: 'inspectionType' },
        {
          label: '报检类型', prop: 'inspectionType',
          dataType: 'tag',
          label: '物料类型',
          prop: 'isExpire',
          formatData: (params) => {
            if (params == 1) {
              return '过期物料'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.label
            }
          },
          formatType: (params) => {
            if (params == 1) {
              return 'info'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.raw.listClass
            }
          }
        },
        {
          label: '过期时间',
          prop: 'expirationTime',
        },
        { label: '单位', prop: 'buyUnitMeas' },
        { label: '接收时间', prop: 'receiverDate' },
@@ -744,25 +791,24 @@
        },
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        { label: '报检类型', prop: 'inspectionType' },
        {
          dataType: 'tag',
          label: '物料类型',
          prop: 'isExpire',
          label: '报检类型', prop: 'inspectionType', dataType: 'tag',
          formatData: (params) => {
            if (params == 1) {
              return '过期物料'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.label
            }
          },
          formatType: (params) => {
            if (params == 1) {
              return 'info'
            } else {
              return null
            let obj = this.inspectionTypeList.find(m => m.value == params)
            if (obj) {
              return obj.raw.listClass
            }
          }
        },
        {
          label: '过期时间',
          prop: 'expirationTime',
        },
        { label: '单位', prop: 'buyUnitMeas' },
        { label: '接收时间', prop: 'receiverDate' },
@@ -892,6 +938,7 @@
  },
  mounted() {
    this.refreshTable()
    this.inspectionTypeList = this.dict.type.inspection_type;
  },
  activated() {
    this.refreshTable()
@@ -1359,6 +1406,10 @@
      }
      return ''
    },
    opendeclareDialog(type, title) {
      this.declareTitle = title
      this.$refs.declareDialog.open(type)
    }
  },
}
</script>
src/views/business/productOrder/components/add.vue
@@ -352,10 +352,10 @@
              </span>
            </template>
          </el-table-column>
          <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip>
          <el-table-column label="试验条件" min-width="140" prop="radius" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-if="(active == 1 || tabIndex == 4) && (isAskOnlyRead || isSpecial)" v-model="scope.row.radius"
                :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="条件" size="small" type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="试验条件" size="small" type="textarea"
                @change="e => requestChange(e, scope.row, 'radius')">
              </el-input>
              <span v-else>{{ scope.row.radius }}</span>