zouyu
5 天以前 0f102473c642142976d537af4c505b8a7161d6c5
src/views/business/rawMaterialInspection/index.vue
@@ -25,8 +25,8 @@
          <el-form-item>
            <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
              style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button>
            <el-button size="mini" type="primary" @click="refreshTable()">查 询</el-button>
            <el-button size="mini" @click="refresh()" >重 置</el-button>
            <el-button size="mini" type="primary" @click="refreshTable()">查询</el-button>
            <el-button size="mini" @click="refresh()" >重置</el-button>
          </el-form-item>
        </el-row>
        <el-row>
@@ -38,7 +38,7 @@
          </el-form-item>
          <el-form-item label="下发时间" prop="date" v-if="(tabIndex === 3 || tabIndex === 4) && more">
            <el-date-picker v-model="componentData.date" end-placeholder="结束日期" format="yyyy-MM-dd" placeholder="选择日期"
              range-separator="至" size="small" start-placeholder="开始日期" style="width: 100%;" type="daterange"
              range-separator="至" size="small" start-placeholder="开始日期" style="width: 100%;" type="daterange" @change="refreshTable()"
              value-format="yyyy-MM-dd">
            </el-date-picker>
          </el-form-item>
@@ -109,8 +109,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">
@@ -173,6 +173,83 @@
    <!--数据查看弹框-->
    <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-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>
@@ -186,17 +263,29 @@
  getIfsByFinish,
  getIfsOrder,
  getWarehouseSubmit, inspectionReport, inspectionReportOne, rawAllExport,
  revokeInspectionReport
  revokeInspectionReport,downloadTemplate,confirmSplitOrder
} from '@/api/business/materialInspection'
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 {
      confirmSplitOrderLoading: false,
      detailDataLoading: false,
      pushToMes:false,//是否同步到mes
      orderSplitDialogVisible: false,
      orderSplitBasicData:[],//订单拆分主体表格数据
      orderSplitDetailData:[],//订单拆分详情表格数据
      tableData: [],
      tableLoading: false,
      column: [
@@ -236,7 +325,7 @@
          }
        },
        { label: '订单号', prop: 'orderNo' },
        { label: '抵达的采购数量', prop: 'qtyArrived', width: '140px', },
        { label: '抵达的采购数量', prop: 'purQtyInStore', width: '140px', },
        { label: '批号', prop: 'updateBatchNo' },
        { label: '零件号', prop: 'partNo' },
        { label: '零件描述', prop: 'partDesc' },
@@ -265,6 +354,7 @@
        { label: '报检时间', prop: 'declareDate' },
        {
          dataType: 'action',
          fixed: 'right',
          label: '操作',
          operation: [
            {
@@ -344,7 +434,7 @@
          }
        },
        { label: '订单号', prop: 'orderNo' },
        { label: '抵达的采购数量', prop: 'qtyArrived' },
        { label: '抵达的采购数量', prop: 'purQtyInStore' },
        { label: '报检时间', prop: 'declareDate' },
        { label: '批号', prop: 'updateBatchNo' },
        { label: '零件号', prop: 'partNo' },
@@ -451,7 +541,7 @@
        orderNo: '', // 订单号
        partNo: '', // 零件号
        partDesc: '', // 零件描述
        qtyArrived: '', // 抵达的采购数量
        purQtyInStore: '', // 抵达的采购数量
        supplierId: '', // 供应商编号
        supplierName: '', // 供应商名称
        updateBatchNo: '', // 批号
@@ -489,7 +579,7 @@
        partDesc: [
          { required: true, message: '请填写零件描述', trigger: 'blur' }
        ],
        qtyArrived: [
        purQtyInStore: [
          { required: false, message: '请填写抵达的采购数量', trigger: 'blur' }
        ],
        supplierName: [
@@ -536,7 +626,8 @@
        { label: '未下单', value: 3 },
        { label: '让步放行', value: 4 },
      ],
      outLoading: false
      outLoading: false,
      upLoading: false,
    }
  },
  mounted() {
@@ -544,6 +635,85 @@
  },
  // 方法集合
  methods: {
    resetOrderSplitData(){
      this.orderSplitBasicData = []
      this.orderSplitDetailData = []
      this.pushToMes = false
      this.$nextTick(()=>{
        this.confirmSplitOrderLoading = false
        this.orderSplitDialogVisible = false
        this.refreshTable()
      })
    },
    confirmSplitOrder(){
      if(this.orderSplitDetailData.length===0){
        this.$message.error('请先导入拆分数据')
        return
      }
      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;
@@ -737,8 +907,21 @@
    // 打开报检确认弹框
    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() {
@@ -821,11 +1004,9 @@
    },
    // 全部导出
    handleDown() {
      let entity = { ...this.componentData }
      delete entity.orderBy
      this.outLoading = true
      rawAllExport({
        entity: entity
        ...this.componentData
      }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/octet-stream' });
@@ -838,7 +1019,7 @@
        orderNo: '', // 订单号
        partNo: '', // 零件号
        partDesc: '', // 零件描述
        qtyArrived: '', // 抵达的采购数量
        purQtyInStore: '', // 抵达的采购数量
        supplierId: '', // 供应商编号
        supplierName: '', // 供应商名称
        updateBatchNo: '', // 批号