zouyu
5 天以前 2bd9b32aa6378ff6a841780628b844a42dbd8f01
src/views/business/rawMaterialInspection/index.vue
@@ -47,6 +47,12 @@
              @keyup.enter.native="refreshTable">
            </el-input>
          </el-form-item>
          <el-form-item label="销售订单分类" prop="orderType" v-if="(tabIndex === 3 || tabIndex === 4) && more">
            <el-select v-model="componentData.orderType" clearable size="small"
              @keyup.enter.native="refreshTable">
              <el-option v-for="(item,index) in orderTypeList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
            </el-select>
          </el-form-item>
        </el-row>
      </el-form>
    </div>
@@ -65,7 +71,7 @@
            @click="handleDown">导出</el-button>
          <el-button v-if="tabIndex === 0" :loading="btnLoading" size="small" type="primary"
            @click="openIFS">获取IFS订单</el-button>
          <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">报检</el-button>
          <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">批量报检</el-button>
          <el-button v-if="tabIndex === 0" size="small" type="primary" @click="addDeclare">新增报检信息</el-button>
        </div>
      </div>
@@ -83,17 +89,24 @@
      </div>
    </div>
    <!-- 批量报检 -->
    <el-dialog :visible.sync="declareDialogSVisible" title="确认报检" width="30%">
      <p style="font-size:16px;color:#333333">是否确认报检选择的数据?</p>
    <el-dialog :visible.sync="declareDialogSVisible" title="批量报检" width="30%" :before-close="resetBatchFormData">
      <el-form ref="declareBatchObj" :inline="true" :model="declareBatchObj" :rules="declareObjBatchRules" label-width="130px"
               label-position="right">
        <el-form-item class="declareObj-form-item" label="销售订单分类:" prop="orderType">
          <el-select v-model="declareBatchObj.orderType" prop="orderType" clearable size="small">
            <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-row>
          <el-button @click="declareDialogSVisible = false">取 消</el-button>
          <el-button @click="resetBatchFormData()">取 消</el-button>
          <el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclareS">确 定</el-button>
        </el-row>
      </span>
    </el-dialog>
    <!-- 确认报检 -->
    <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '新增报检信息' : '原材料报检'"
    <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '新增报检信息' : '销售订单报检'"
      :visible.sync="declareDialogVisible" width="800px" @close="resetFormData">
      <el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" label-width="130px"
        label-position="right">
@@ -109,8 +122,8 @@
          <el-input v-model="declareObj.partDesc" :disabled="declareType !== 'add'" 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" :disabled="declareType !== 'add'" class="addObj-info" clearable
        <el-form-item class="declareObj-form-item" label="抵达的采购数量:" prop="purQtyInStore">
          <el-input v-model="declareObj.purQtyInStore" :disabled="declareType !== 'add'" class="addObj-info" clearable
            placeholder="" size="small"></el-input>
        </el-form-item>
        <el-form-item v-if="declareType !== 'add'" class="declareObj-form-item" label="供应商编号:" prop="supplierId">
@@ -139,6 +152,11 @@
          <el-select v-model="declareObj.isExpire" prop="isExpire" :disabled="declareType !== 'add'" clearable
            size="small">
            <el-option :value="1" label="过期物料"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item class="declareObj-form-item" label="销售订单分类:" prop="orderType">
          <el-select v-model="declareObj.orderType" clearable size="small">
            <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
          </el-select>
        </el-form-item>
      </el-form>
@@ -173,6 +191,86 @@
    <!--数据查看弹框-->
    <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible" :dataDialogVisible="dataDialogVisible"
      :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible>
    <el-dialog
      title="订单拆分"
      :visible.sync="orderSplitDialogVisible"
      :before-close="resetOrderSplitData"
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="!confirmSplitOrderLoading"
      width="60%">
      <div>
        <el-divider content-position="left">订单主体</el-divider>
        <el-table
          :data="orderSplitBasicData"
          border
          :header-cell-style="{textAlign:'center'}"
          :cell-style="{textAlign:'center'}"
        >
          <el-table-column label="订单编号" prop="orderNo" :min-width="100" width="100"></el-table-column>
          <el-table-column label="零件编号" prop="partNo" :min-width="150" width="150" show-overflow-tooltip></el-table-column>
          <el-table-column label="零件描述" prop="partDesc" :min-width="150" show-overflow-tooltip></el-table-column>
          <el-table-column label="抵达的采购数量" prop="purQtyInStore" :min-width="120" width="120"></el-table-column>
          <el-table-column label="供应商编号" prop="supplierId" :min-width="100" width="100" show-overflow-tooltip></el-table-column>
          <el-table-column label="供应商名称" prop="supplierName" :min-width="100" width="100" show-overflow-tooltip></el-table-column>
          <el-table-column label="批号" prop="lotBatchNo" :min-width="100" width="100"></el-table-column>
          <el-table-column label="单位" prop="buyUnitMeas" :min-width="100" width="100"></el-table-column>
        </el-table>
        <el-divider content-position="left">拆分详情</el-divider>
        <el-row>
          <el-col :span="12">
            <el-checkbox v-model="pushToMes"><span style="font-weight: bold">同步到MES</span></el-checkbox>
<!--            <el-select v-model="splitOrderType" clearable size="mini" placeholder="请选择销售订单分类">-->
<!--              <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>-->
<!--            </el-select>-->
          </el-col>
          <el-col :span="12">
            <div style="width:100%;text-align: right;margin-bottom:5px">
              <el-upload
                style="display:inline-block;margin: 0 8px;"
                ref="upload"
                class="upload-demo"
                :headers="uploadHeader"
                :action="splitOrderAction"
                :data="{ifsId:declareObj.id}"
                :on-change="beforeUpload"
                :on-error="onError"
                :on-success="handleSuccess"
                accept=".xls,.xlsx"
                :show-file-list="false"
                :multiple="false">
                <el-button size="mini" type="primary" :loading="upLoading">导入</el-button>
              </el-upload>
              <el-button size="mini" type="primary" @click="downloadTemplate">下载模板</el-button>
            </div>
          </el-col>
        </el-row>
        <el-table
          :data="orderSplitDetailData"
          v-loading="detailDataLoading"
          :header-cell-style="{textAlign:'center'}"
          :cell-style="{textAlign:'center'}"
          border>
          <el-table-column label="零件编号" prop="partNo" :min-width="150" width="150" show-overflow-tooltip></el-table-column>
          <el-table-column label="系统编号" prop="systemNo" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="规格" prop="model" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="零件批号" prop="lotBatchNo" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="库存数量1" prop="length" :min-width="100" width="100" show-overflow-tooltip></el-table-column>
          <el-table-column label="库存数量2" prop="qtyStock" :min-width="100" width="100" show-overflow-tooltip></el-table-column>
          <el-table-column label="绝缘颜色" prop="insulationColor" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="外护颜色" prop="outerColor" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="印字信息" prop="letteringInfo" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="盘号" prop="drumNo" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="库位编号" prop="locationNo" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="库位来源" prop="stockSource" :min-width="90" width="90" show-overflow-tooltip></el-table-column>
          <el-table-column label="备注" prop="remark" :min-width="90" show-overflow-tooltip></el-table-column>
        </el-table>
      </div>
      <span slot="footer" class="dialog-footer">
    <el-button @click="resetOrderSplitData()" :disabled="confirmSplitOrderLoading">取 消</el-button>
    <el-button type="primary" @click="confirmSplitOrder()" :loading="confirmSplitOrderLoading">确 定</el-button>
  </span>
    </el-dialog>
  </div>
</template>
@@ -182,21 +280,45 @@
  addIfsInventoryQuantity,
  advancedGodown,
  concessionRelease, delIfsInventory,
  getIfsByAll,
  getIfsByFinish,
  getIfsOrder,
  getWarehouseSubmit, inspectionReport, inspectionReportOne, rawAllExport,
  revokeInspectionReport
  revokeInspectionReport,downloadTemplate,confirmSplitOrder
} from '@/api/business/materialInspection'
import {
  getIfsByAll,
  getIfsByFinish,
} from '@/api/business/ifsOrderInspection'
import { getDicts } from "@/api/system/dict/data";
import limsTable from "@/components/Table/lims-table.vue";
import {transformExcel} from '@/utils/file'
export default {
  name: 'RawMaterialInspection',
  // import 引入的组件需要注入到对象中才能使用
  components: { limsTable, DataLookVisible },
  computed:{
    splitOrderAction(){
      return this.javaApi + '/rawMaterialOrder/importSplitOrderData'
    }
  },
  data() {
    // 这里存放数据
    return {
      splitOrderType: null,
      declareBatchObj:{
        orderType:''
      },
      declareObjBatchRules:{
        orderType: [
          { required: true, message: '请选择销售订单分类', trigger: 'change' }
        ],
      },
      confirmSplitOrderLoading: false,
      detailDataLoading: false,
      pushToMes:false,//是否同步到mes
      orderSplitDialogVisible: false,
      orderSplitBasicData:[],//订单拆分主体表格数据
      orderSplitDetailData:[],//订单拆分详情表格数据
      tableData: [],
      tableLoading: false,
      column: [
@@ -236,7 +358,7 @@
          }
        },
        { label: '订单号', prop: 'orderNo' },
        { label: '抵达的采购数量', prop: 'qtyArrived', width: '140px', },
        { label: '抵达的采购数量', prop: 'purQtyInStore', width: '140px', },
        { label: '批号', prop: 'updateBatchNo' },
        { label: '零件号', prop: 'partNo' },
        { label: '零件描述', prop: 'partDesc' },
@@ -345,7 +467,8 @@
          }
        },
        { label: '订单号', prop: 'orderNo' },
        { label: '抵达的采购数量', prop: 'qtyArrived' },
        { label: '订单分类', prop: 'orderTypeName' },
        { label: '抵达的采购数量', prop: 'purQtyInStore',width:'160px' },
        { label: '报检时间', prop: 'declareDate' },
        { label: '批号', prop: 'updateBatchNo' },
        { label: '零件号', prop: 'partNo' },
@@ -452,7 +575,7 @@
        orderNo: '', // 订单号
        partNo: '', // 零件号
        partDesc: '', // 零件描述
        qtyArrived: '', // 抵达的采购数量
        purQtyInStore: '', // 抵达的采购数量
        supplierId: '', // 供应商编号
        supplierName: '', // 供应商名称
        updateBatchNo: '', // 批号
@@ -460,6 +583,7 @@
        receiverDate: '', // 接收时间
        buyUnitMeas: '', // 单位
        isExpire: '', // 单位
        orderType: null, // 销售订单分类
      },
      componentData: { // 表格数据
        updateBatchNo: null,
@@ -469,6 +593,7 @@
        date: null,
        entrustCode: '',
        inspectStatus: '',
        orderType: null,
      },
      declareDialogVisible1: false,
      upLoad: false,
@@ -505,6 +630,9 @@
        buyUnitMeas: [
          { required: false, message: '请填写单位', trigger: 'blur' }
        ],
        orderType: [
          { required: true, message: '请选择销售订单分类', trigger: 'change' }
        ],
      },
      tabList: [
        {
@@ -537,17 +665,107 @@
        { label: '未下单', value: 3 },
        { label: '让步放行', value: 4 },
      ],
      outLoading: false
      outLoading: false,
      upLoading: false,
      orderTypeList: [],
    }
  },
  mounted() {
    this.refreshTable()
    this.getOrderTypeList()
  },
  // 方法集合
  methods: {
    getOrderTypeList(){
      getDicts('inspection_type').then(res=>{
        if(res.code === 200){
          this.orderTypeList = res.data
        }
      }).catch(error=>{
        console.error(error)
      })
    },
    resetOrderSplitData(){
      this.orderSplitBasicData = []
      this.orderSplitDetailData = []
      this.pushToMes = false
      this.$nextTick(()=>{
        this.confirmSplitOrderLoading = false
        this.orderSplitDialogVisible = false
        this.refreshTable()
      })
    },
    confirmSplitOrder(){
      this.confirmSplitOrderLoading = true
      let requestData = {
        ifsId: this.declareObj.id,
        splitDetailList: this.orderSplitDetailData,
        pushToMes: this.pushToMes
      }
      confirmSplitOrder(requestData).then(res=>{
        if(res.code===200 && res.data){
          this.$message.success('订单拆分成功')
        }else if(this.pushToMes && res.code===200 && !res.data){
          this.$message.success('订单拆分成功,同步MES失败,请联系管理员')
        } else {
          let msg = res.msg || res.message
          this.$message({
            message: '订单拆分失败: '+msg,
            dangerouslyUseHTMLString: true,
            type: 'error'
          });
        }
        this.resetOrderSplitData()
      }).catch(error=>{
        console.error(error)
        this.confirmSplitOrderLoading = false
      })
    },
    handleSuccess(response) {
      if (response.code === 200) {
        this.$message.success('上传成功');
        this.orderSplitDetailData = response.data
      } else {
        let msg = response.msg || response.message
        this.$message({
          message: '上传失败: '+msg,
          dangerouslyUseHTMLString: true,
          type: 'error'
        });
      }
      this.$nextTick(()=>{
        this.upLoading = false;
        this.detailDataLoading = false
      })
    },
    onError(err, file, fileList) {
      this.$message.error('上传失败: '+err)
      this.$refs.upload.clearFiles()
    },
    beforeUpload(file) {
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error('上传文件不超过10M');
        this.$refs.upload.clearFiles()
        return false;
      } else {
        this.upLoading = true;
        this.detailDataLoading = true
        return true;
      }
    },
    downloadTemplate(){
      downloadTemplate().then(res=>{
        transformExcel(res,'订单拆分导入模板.xlsx')
      }).catch(error=>{
        console.error(error)
      })
    },
    // 切换tab表格
    handleTab(m) {
      this.tabIndex = m;
      if([0,1].includes(this.tabIndex)){
        this.componentData.orderType = null
      }
      this.refreshTable()
    },
    // 查询回调
@@ -718,28 +936,48 @@
    },
    // 提交批量报检
    submitDeclareS() {
      let ids = []
      this.multipleSelection.forEach(item => {
        ids.push(item.id)
      })
      this.declareDialogSVisible = true
      inspectionReport({ ids: ids }).then(res => {
        if (res.code === 200) {
          this.declareDialogSVisible = false
          this.$message.success('报检成功')
          this.refreshTable()
      this.$refs.declareBatchObj.validate(valid=>{
        if(valid){
          let ids = []
          this.multipleSelection.forEach(item => {
            ids.push(item.id)
          })
          this.declareDialogSVisible = true
          inspectionReport({
            ids: ids,
            orderType: this.declareBatchObj.orderType
          }).then(res => {
            if (res.code === 200) {
              this.declareDialogSVisible = false
              this.$message.success('报检成功')
              this.refreshTable()
            }
            this.submitDeclareLoading = false
          }).catch(err => {
            this.submitDeclareLoading = false
            console.log(err)
          })
        }
        this.submitDeclareLoading = false
      }).catch(err => {
        this.submitDeclareLoading = false
        console.log(err)
      })
    },
    // 打开报检确认弹框
    declare(row) {
      this.declareObj = { ...row }
      this.declareDialogVisible = true
      this.declareType = 'edit'
      if(row.updateBatchNo && row.updateBatchNo==='*'){
        this.$confirm('是否要拆分该订单?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.orderSplitBasicData = [row]
          this.orderSplitDialogVisible = true
        }).catch(() => {
          this.declareDialogVisible = true
        });
      }else{
        this.declareDialogVisible = true
      }
    },
    // 提交报检
    submitDeclare() {
@@ -765,7 +1003,8 @@
          if (valid) {
            inspectionReportOne({
              id: this.declareObj.id,
              updateBatchNo: this.declareObj.updateBatchNo
              updateBatchNo: this.declareObj.updateBatchNo,
              orderType: this.declareObj.orderType
            }).then(res => {
              if (res.code === 200) {
                this.declareDialogVisible = false
@@ -783,8 +1022,12 @@
      }
    },
    resetFormData() {
      this.$refs['declareObj'].resetFields();
      this.$refs.declareObj.resetFields();
      this.declareDialogVisible = false
    },
    resetBatchFormData() {
      this.$refs.declareBatchObj.resetFields();
      this.declareDialogSVisible = false
    },
    // 打开删除弹框
    deleteMaterial(row) {
@@ -837,7 +1080,7 @@
        orderNo: '', // 订单号
        partNo: '', // 零件号
        partDesc: '', // 零件描述
        qtyArrived: '', // 抵达的采购数量
        purQtyInStore: '', // 抵达的采购数量
        supplierId: '', // 供应商编号
        supplierName: '', // 供应商名称
        updateBatchNo: '', // 批号
@@ -845,6 +1088,7 @@
        receiverDate: '', // 接收时间
        buyUnitMeas: '', // 单位
        isExpire: '', // 单位
        orderType: null, // 销售订单分类
      }
    }
  },