From f294efb8c01ad8b0704a92d51c14dbd55d898874 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 23 十月 2025 16:49:46 +0800
Subject: [PATCH] 拆分原材料和外购成品的业务流程(报检、下单、检验)
---
src/views/business/rawMaterialInspection/index.vue | 670 +++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 470 insertions(+), 200 deletions(-)
diff --git a/src/views/business/rawMaterialInspection/index.vue b/src/views/business/rawMaterialInspection/index.vue
index 78cf124..33984bf 100644
--- a/src/views/business/rawMaterialInspection/index.vue
+++ b/src/views/business/rawMaterialInspection/index.vue
@@ -4,60 +4,54 @@
<el-form :model="componentData" ref="componentData" size="small" :inline="true">
<el-row>
<el-form-item label="鎵瑰彿" prop="updateBatchNo">
- <el-input v-model="componentData.updateBatchNo" clearable placeholder="璇疯緭鍏�"
- size="small"
- @keyup.enter.native="refreshTable"></el-input>
+ <el-input v-model="componentData.updateBatchNo" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="refreshTable"></el-input>
</el-form-item>
<el-form-item label="闆朵欢鍙�" prop="partNo">
- <el-input v-model="componentData.partNo" clearable placeholder="璇疯緭鍏�"
- size="small"
- @keyup.enter.native="refreshTable">
+ <el-input v-model="componentData.partNo" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="refreshTable">
</el-input>
</el-form-item>
<el-form-item label="闆朵欢鎻忚堪" prop="partDesc">
- <el-input v-model="componentData.partDesc" clearable placeholder="璇疯緭鍏�"
- size="small"
- @keyup.enter.native="refreshTable">
+ <el-input v-model="componentData.partDesc" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="refreshTable">
</el-input>
</el-form-item>
<el-form-item label="渚涘簲鍟�" prop="supplierName" v-if="(tabIndex === 3 || tabIndex === 4)">
- <el-input v-model="componentData.supplierName" clearable placeholder="璇疯緭鍏�"
- size="small"
- @keyup.enter.native="refreshTable">
+ <el-input v-model="componentData.supplierName" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="refreshTable">
</el-input>
</el-form-item>
<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" icon="el-icon-search" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
- <el-button size="mini" @click="refresh()" icon="el-icon-refresh">閲� 缃�</el-button>
+ <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-form-item>
</el-row>
<el-row>
<el-form-item label="妫�楠岀姸鎬�" prop="inspectStatus" v-if="(tabIndex === 3 || tabIndex === 4) && more">
- <el-select v-model="componentData.inspectStatus" clearable
- size="small" style="width: 100%;" @change="refreshTable()">
+ <el-select v-model="componentData.inspectStatus" clearable size="small" style="width: 100%;"
+ @change="refreshTable()">
<el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
</el-select>
</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"
+ <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" @change="refreshTable()"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="濮旀墭缂栧彿" prop="entrustCode" v-if="(tabIndex === 3 || tabIndex === 4) && more">
- <el-input v-model="componentData.entrustCode" clearable placeholder="璇疯緭鍏�"
- size="small"
- @keyup.enter.native="refreshTable">
+ <el-input v-model="componentData.entrustCode" clearable placeholder="璇疯緭鍏�" size="small"
+ @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>
@@ -66,87 +60,109 @@
<div class="table-tab">
<div>
<ul class="tab">
- <li v-for="m in tabList" :key="m.value" :class="{active:m.value===tabIndex}" @click="handleTab(m)">{{m.label}}</li>
+ <li :class="{ active: tabIndex === 0 }" @click="handleTab(0)">寰呮姤妫�</li>
+ <li :class="{ active: tabIndex === 1 }" @click="handleTab(1)">寰呬笅鍗�</li>
+ <li :class="{ active: tabIndex === 3 }" @click="handleTab(3)">宸插畬鎴�</li>
+ <li :class="{ active: tabIndex === 4 }" v-if="checkPermi(['get:Ifs:ByAll'])" @click="handleTab(4)">鍏ㄩ儴</li>
</ul>
</div>
<div>
- <el-button v-show="tabIndex === 4" :loading="outLoading" size="small" type="primary" @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-show="tabIndex === 4" :loading="outLoading" size="small" type="primary"
+ @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="addDeclare">鏂板鎶ユ淇℃伅</el-button>
</div>
</div>
<!--寰呮姤妫�銆佸緟涓嬪崟-->
<div class="table">
- <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0 || tabIndex === 1"
- :isSelection="true" :handleSelectionChange="selectMethod"
- @pagination="pagination" :height="'calc(100vh - 290px)'"
- :page="page" :tableLoading="tableLoading"></lims-table>
+ <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0 || tabIndex === 1" :isSelection="true"
+ :handleSelectionChange="selectMethod" @pagination="pagination" :height="'calc(100vh - 290px)'" :page="page"
+ :tableLoading="tableLoading"></lims-table>
</div>
<!--宸插畬鎴愩�佸叏閮�-->
<div class="table">
<lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 3 || tabIndex === 4"
- @pagination="pagination1" :height="'calc(100vh - 290px)'"
- :page="page1" :tableLoading="tableLoading1"></lims-table>
+ @pagination="pagination1" :height="'calc(100vh - 290px)'" :page="page1"
+ :tableLoading="tableLoading1"></lims-table>
</div>
</div>
<!-- 鎵归噺鎶ユ -->
- <el-dialog :visible.sync="declareDialogSVisible" title="纭鎶ユ" width="30%">
- <p style="font-size:16px;color:#333333">鏄惁纭鎶ユ閫夋嫨鐨勬暟鎹紵</p>
- <span slot="footer" class="dialog-footer">
- <el-row>
- <el-button @click="declareDialogSVisible = false">鍙� 娑�</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' ? '鏂板鎶ユ淇℃伅' : '鍘熸潗鏂欐姤妫�'"
- :visible.sync="declareDialogVisible"
- width="800px" @close="resetForm">
- <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" :disabled="declareType !== 'add'" 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" :disabled="declareType !== 'add'" 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" :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 placeholder="" size="small"></el-input>
- </el-form-item>
- <el-form-item v-if="declareType !== 'add'" class="declareObj-form-item" label="渚涘簲鍟嗙紪鍙�:" prop="supplierId">
- <el-input v-model="declareObj.supplierId" :disabled="declareType !== 'add'" 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" :disabled="declareType !== 'add'" 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 v-if="declareType !== 'add'" class="declareObj-form-item" label="搴撲綅鍙�:" prop="locationNo">
- <el-input v-model="declareObj.locationNo" :disabled="declareType !== 'add'" class="addObj-info" clearable size="small"></el-input>
- </el-form-item>
- <el-form-item v-if="declareType !== 'add'" 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" :disabled="declareType !== 'add'" clearable class="addObj-info" size="small"></el-input>
- </el-form-item>
- <el-form-item class="declareObj-form-item" label="鐗╂枡绫诲瀷锛�" prop="isExpire">
- <el-select v-model="declareObj.isExpire" prop="isExpire"
- :disabled="declareType !== 'add'"
- clearable size="small">
- <el-option :value="1" label="杩囨湡鐗╂枡"></el-option>
+ <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="resetForm">鍙� 娑�</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' ? '鏂板鎶ユ淇℃伅' : '閿�鍞鍗曟姤妫�'"
+ :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" :disabled="declareType !== 'add'" 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" :disabled="declareType !== 'add'" 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" :disabled="declareType !== 'add'" class="addObj-info" clearable
+ placeholder="" size="small"></el-input>
+ </el-form-item>
+ <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">
+ <el-input v-model="declareObj.supplierId" :disabled="declareType !== 'add'" 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" :disabled="declareType !== 'add'" 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 v-if="declareType !== 'add'" class="declareObj-form-item" label="搴撲綅鍙�:" prop="locationNo">
+ <el-input v-model="declareObj.locationNo" :disabled="declareType !== 'add'" class="addObj-info" clearable
+ size="small"></el-input>
+ </el-form-item>
+ <el-form-item v-if="declareType !== 'add'" 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" :disabled="declareType !== 'add'" clearable class="addObj-info"
+ size="small"></el-input>
+ </el-form-item>
+ <el-form-item class="declareObj-form-item" label="鐗╂枡绫诲瀷锛�" prop="isExpire">
+ <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>
+ <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>
@@ -155,27 +171,103 @@
<el-dialog :visible.sync="deleteVisible" title="纭鍒犻櫎" width="30%">
<p style="font-size:16px;color:#333333">鏄惁纭鍒犻櫎锛�</p>
<span slot="footer" class="dialog-footer">
- <el-row>
- <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
- <el-button :loading="deleteLoading" type="primary" @click="submitDelete">纭� 瀹�</el-button>
- </el-row>
- </span>
+ <el-row>
+ <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
+ <el-button :loading="deleteLoading" type="primary" @click="submitDelete">纭� 瀹�</el-button>
+ </el-row>
+ </span>
</el-dialog>
<!-- 鎾ら攢鎶ユ -->
<el-dialog :visible.sync="declareDialogVisible1" title="鎶ユ鎾ら攢" width="30%">
<p style="font-size:16px;color:#333333">鎵瑰彿<span
- style="color:#34BD66">{{insOrderRow.updateBatchNo}}</span>鐨勪俊鎭槸鍚�<span style="color: #FF4902">鎾ら攢鎶ユ</span></p>
+ style="color:#34BD66">{{ insOrderRow.updateBatchNo }}</span>鐨勪俊鎭槸鍚�<span style="color: #FF4902">鎾ら攢鎶ユ</span></p>
<span slot="footer" class="dialog-footer">
- <el-row>
- <el-button @click="declareDialogVisible1 = false">鍙� 娑�</el-button>
- <el-button :loading="upLoad" type="primary" @click="submitDeclare1">纭� 瀹�</el-button>
- </el-row>
- </span>
+ <el-row>
+ <el-button @click="declareDialogVisible1 = false">鍙� 娑�</el-button>
+ <el-button :loading="upLoad" type="primary" @click="submitDeclare1">纭� 瀹�</el-button>
+ </el-row>
+ </span>
</el-dialog>
<!--鏁版嵁鏌ョ湅寮规-->
- <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible"
- :dataDialogVisible="dataDialogVisible"
- :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible>
+ <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">鍚屾鍒癕ES</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>
@@ -185,20 +277,44 @@
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},
+ components: { limsTable, DataLookVisible },
+ computed:{
+ splitOrderAction(){
+ return this.javaApi + '/rawMaterialOrder/importSplitOrderData'
+ }
+ },
data() {
// 杩欓噷瀛樻斁鏁版嵁
return {
+ declareBatchObj:{
+ orderType:''
+ },
+ declareObjBatchRules:{
+ orderType: [
+ { required: true, message: '璇烽�夋嫨閿�鍞鍗曞垎绫�', trigger: 'change' }
+ ],
+ },
+ confirmSplitOrderLoading: false,
+ detailDataLoading: false,
+ pushToMes:false,//鏄惁鍚屾鍒癿es
+ orderSplitDialogVisible: false,
+ orderSplitBasicData:[],//璁㈠崟鎷嗗垎涓讳綋琛ㄦ牸鏁版嵁
+ orderSplitDetailData:[],//璁㈠崟鎷嗗垎璇︽儏琛ㄦ牸鏁版嵁
tableData: [],
tableLoading: false,
column: [
@@ -237,12 +353,12 @@
}
}
},
- {label: '璁㈠崟鍙�', prop: 'orderNo'},
- {label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived',width: '140px',},
- {label: '鎵瑰彿', prop: 'updateBatchNo'},
- {label: '闆朵欢鍙�', prop: 'partNo'},
- {label: '闆朵欢鎻忚堪', prop: 'partDesc'},
- {label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName'},
+ { label: '璁㈠崟鍙�', prop: 'orderNo' },
+ { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore', width: '140px', },
+ { label: '鎵瑰彿', prop: 'updateBatchNo' },
+ { label: '闆朵欢鍙�', prop: 'partNo' },
+ { label: '闆朵欢鎻忚堪', prop: 'partDesc' },
+ { label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName' },
{
dataType: 'tag',
label: '鐗╂枡绫诲瀷',
@@ -262,11 +378,12 @@
}
}
},
- {label: '鍗曚綅', prop: 'buyUnitMeas'},
- {label: '鎺ユ敹鏃堕棿', prop: 'receiverDate'},
- {label: '鎶ユ鏃堕棿', prop: 'declareDate'},
+ { label: '鍗曚綅', prop: 'buyUnitMeas' },
+ { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
+ { label: '鎶ユ鏃堕棿', prop: 'declareDate' },
{
dataType: 'action',
+ fixed: 'right',
label: '鎿嶄綔',
operation: [
{
@@ -303,14 +420,13 @@
}
],
page: {
- total:0,
- size:10,
- current:1
+ total: 0,
+ size: 20,
+ current: 1
},
tableData1: [],
tableLoading1: false,
column1: [
- {label: '濮旀墭缂栧彿', prop: 'entrustCode', width: '160px'},
{
dataType: 'tag',
label: '妫�楠岀姸鎬�',
@@ -346,18 +462,38 @@
}
}
},
- {label: '璁㈠崟鍙�', prop: 'orderNo'},
- {label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived'},
- {label: '涓嬪彂鏃堕棿', prop: 'sendTime'},
- {label: '鎵瑰彿', prop: 'updateBatchNo'},
- {label: '闆朵欢鍙�', prop: 'partNo'},
- {label: '闆朵欢鎻忚堪', prop: 'partDesc'},
- {label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName'},
- {label: '涓嶅悎鏍兼弿杩�', prop: 'unqualifiedDesc'},
- {label: '鍏嶆', prop: 'isExemption'},
- {label: '鏍峰搧鍚嶇О', prop: 'sampleName'},
- {label: '鏍峰搧鍨嬪彿', prop: 'sampleModel'},
- {label: '妫�楠屼汉', prop: 'userName'},
+ { label: '璁㈠崟鍙�', prop: 'orderNo' },
+ { label: '璁㈠崟鍒嗙被', prop: 'orderTypeName' },
+ { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore',width:'160px' },
+ { label: '鎶ユ鏃堕棿', prop: 'declareDate' },
+ { label: '鎵瑰彿', prop: 'updateBatchNo' },
+ { label: '闆朵欢鍙�', prop: 'partNo' },
+ { label: '闆朵欢鎻忚堪', prop: 'partDesc' },
+ { label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName' },
+ { label: '涓嶅悎鏍兼弿杩�', prop: 'unqualifiedDesc' },
+ {
+ dataType: 'tag',
+ label: '鍏嶆',
+ prop: 'isExemption',
+ formatData: (params) => {
+ if (params == 1) {
+ return '鍏嶆'
+ } else {
+ return null
+ }
+ },
+ formatType: (params) => {
+ if (params == 1) {
+ return 'success'
+ } else {
+ return null
+ }
+ }
+ },
+ { label: '濮旀墭缂栧彿', prop: 'entrustCode', width: '160px' },
+ { label: '鏍峰搧鍚嶇О', prop: 'sampleName' },
+ { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' },
+ { label: '妫�楠屼汉', prop: 'userName' },
{
dataType: 'tag',
label: '鐗╂枡绫诲瀷',
@@ -377,9 +513,9 @@
}
}
},
- {label: '鍗曚綅', prop: 'buyUnitMeas'},
- {label: '鎺ユ敹鏃堕棿', prop: 'receiverDate'},
- {label: '鎶ユ鏃堕棿', prop: 'declareDate'},
+ { label: '鍗曚綅', prop: 'buyUnitMeas' },
+ { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
+ { label: '涓嬪彂鏃堕棿', prop: 'sendTime' },
{
dataType: 'action',
fixed: 'right',
@@ -425,17 +561,17 @@
}
],
page1: {
- total:0,
- size:10,
- current:1
+ total: 0,
+ size: 20,
+ current: 1
},
- more:false,
+ more: false,
declareObj: {
id: null,
orderNo: '', // 璁㈠崟鍙�
partNo: '', // 闆朵欢鍙�
partDesc: '', // 闆朵欢鎻忚堪
- qtyArrived: '', // 鎶佃揪鐨勯噰璐暟閲�
+ purQtyInStore: '', // 鎶佃揪鐨勯噰璐暟閲�
supplierId: '', // 渚涘簲鍟嗙紪鍙�
supplierName: '', // 渚涘簲鍟嗗悕绉�
updateBatchNo: '', // 鎵瑰彿
@@ -443,15 +579,17 @@
receiverDate: '', // 鎺ユ敹鏃堕棿
buyUnitMeas: '', // 鍗曚綅
isExpire: '', // 鍗曚綅
+ orderType: null, // 閿�鍞鍗曞垎绫�
},
componentData: { // 琛ㄦ牸鏁版嵁
updateBatchNo: null,
partNo: null,
partDesc: null,
supplierName: null,
- date: '',
+ date: null,
entrustCode: '',
inspectStatus: '',
+ orderType: null,
},
declareDialogVisible1: false,
upLoad: false,
@@ -488,6 +626,9 @@
buyUnitMeas: [
{ required: false, message: '璇峰~鍐欏崟浣�', trigger: 'blur' }
],
+ orderType: [
+ { required: true, message: '璇烽�夋嫨閿�鍞鍗曞垎绫�', trigger: 'change' }
+ ],
},
tabList: [
{
@@ -514,23 +655,113 @@
dataLookInfo: {}, // 鏁版嵁鏌ョ湅寮规鏁版嵁
declareType: '', // 鎿嶄綔鎶ユ鐨勭被鍨�
queryStatusList: [
- {label: '妫�楠屼腑', value: 0},
- {label: '鍚堟牸', value: 1},
- {label: '涓嶅悎鏍�', value: 2},
- {label: '鏈笅鍗�', value: 3},
- {label: '璁╂鏀捐', value: 4},
+ { label: '妫�楠屼腑', value: 0 },
+ { label: '鍚堟牸', value: 1 },
+ { label: '涓嶅悎鏍�', value: 2 },
+ { 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.value;
+ this.tabIndex = m;
+ if([0,1].includes(this.tabIndex)){
+ this.componentData.orderType = null
+ }
this.refreshTable()
},
// 鏌ヨ鍥炶皟
@@ -547,9 +778,9 @@
}
},
// 寰呮姤妫�銆佸緟涓嬪崟鏌ヨ
- getWarehouseSubmitApi () {
+ getWarehouseSubmitApi() {
this.tableLoading = true
- const params = {...this.componentData, isInspect: this.tabIndex, state: this.tabIndex === 0 ? null : 0, ...this.page}
+ const params = { ...this.componentData, isInspect: this.tabIndex, state: this.tabIndex === 0 ? null : 0, ...this.page }
getWarehouseSubmit(params).then(res => {
this.tableLoading = false
if (res.code === 200) {
@@ -561,9 +792,16 @@
})
},
// 宸插畬鎴愰儴鏌ヨ
- getIfsByFinishList () {
+ getIfsByFinishList() {
this.tableLoading1 = true
- getIfsByFinish({...this.componentData, ...this.page1}).then(res => {
+ if(null != this.componentData.date){
+ this.componentData.beginDeclareDate = this.componentData.date[0]
+ this.componentData.endDeclareDate = this.componentData.date[1]
+ } else {
+ this.componentData.beginDeclareDate = ''
+ this.componentData.endDeclareDate = ''
+ }
+ getIfsByFinish({ ...this.componentData, ...this.page1 }).then(res => {
this.tableLoading1 = false
if (res.code === 200) {
this.tableData1 = res.data.records
@@ -574,9 +812,16 @@
})
},
// 鍏ㄩ儴鏌ヨ
- getIfsByAllList () {
+ getIfsByAllList() {
this.tableLoading1 = true
- getIfsByAll({...this.componentData, ...this.page1}).then(res => {
+ if(null != this.componentData.date){
+ this.componentData.beginDeclareDate = this.componentData.date[0]
+ this.componentData.endDeclareDate = this.componentData.date[1]
+ } else {
+ this.componentData.beginDeclareDate = ''
+ this.componentData.endDeclareDate = ''
+ }
+ getIfsByAll({ ...this.componentData, ...this.page1 }).then(res => {
this.tableLoading1 = false
if (res.code === 200) {
this.tableData1 = res.data.records
@@ -591,22 +836,22 @@
this.resetForm('componentData')
this.refreshTable()
},
- pagination (page) {
+ pagination(page) {
this.page.size = page.limit
this.refreshTable()
},
- pagination1 (page) {
+ pagination1(page) {
this.page1.size = page.limit
this.refreshTable()
},
// 鎵撳紑鎾ら攢鎶ユ寮规
- cancelDeclare (row) {
+ cancelDeclare(row) {
this.declareDialogVisible1 = true
this.insOrderRow = row
},
// 鎻愪氦鎾ら攢鎶ユ鐢宠
- submitDeclare1 () {
- revokeInspectionReport({id: this.insOrderRow.id}).then(res => {
+ submitDeclare1() {
+ revokeInspectionReport({ id: this.insOrderRow.id }).then(res => {
if (res.code === 200) {
this.declareDialogVisible1 = false
this.refreshTable('page')
@@ -622,13 +867,13 @@
this.dataDialogVisible = true;
},
// 鐩存帴鏀捐
- goPass (row) {
+ goPass(row) {
this.$confirm('鏄惁鏀捐褰撳墠鏁版嵁?', '鎻愮ず', {
confirmButtonText: '纭畾',
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- concessionRelease({ifsInventoryId: row.id}).then(res => {
+ concessionRelease({ ifsInventoryId: row.id }).then(res => {
if (res.code === 200) {
this.$message({
type: 'success',
@@ -645,13 +890,13 @@
});
},
// 鎻愬墠鍏ュ簱
- advancedGodown (row) {
+ advancedGodown(row) {
this.$confirm('褰撳墠鍘熸潗鏂欐槸鍚︽彁鍓嶅叆搴�?', '鎻愮ず', {
confirmButtonText: '纭畾',
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- advancedGodown({ifsInventoryId: row.id}).then(res => {
+ advancedGodown({ ifsInventoryId: row.id }).then(res => {
if (res.code === 200) {
this.$message({
type: 'success',
@@ -668,17 +913,17 @@
});
},
// 鍏抽棴鏁版嵁鏌ョ湅寮规
- closeDataLook () {
+ closeDataLook() {
this.dataDialogVisible = false
},
// 鎵嬪姩鎶ユ
- addDeclare () {
+ addDeclare() {
this.clear()
this.declareDialogVisible = true
this.declareType = 'add'
},
// 閫夋嫨鎶ユ鏁版嵁
- declareS () {
+ declareS() {
if (this.multipleSelection.length > 0) {
this.declareDialogSVisible = true
} else {
@@ -686,32 +931,52 @@
}
},
// 鎻愪氦鎵归噺鎶ユ
- 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()
+ submitDeclareS() {
+ 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.declareObj = { ...row }
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 () {
+ submitDeclare() {
if (this.declareType === 'add') {
this.$refs['declareObj'].validate((valid) => {
if (valid) {
@@ -734,7 +999,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
@@ -751,19 +1017,23 @@
});
}
},
- resetForm () {
- this.$refs['declareObj'].resetFields();
+ resetFormData() {
+ this.$refs.declareObj.resetFields();
this.declareDialogVisible = false
},
+ resetBatchFormData() {
+ this.$refs.declareBatchObj.resetFields();
+ this.declareDialogSVisible = false
+ },
// 鎵撳紑鍒犻櫎寮规
- deleteMaterial (row) {
+ deleteMaterial(row) {
this.deleteVisible = true
this.deleteInfo = row
},
// 纭鍒犻櫎
- submitDelete () {
+ submitDelete() {
this.deleteLoading = true
- delIfsInventory({id: this.deleteInfo.id}).then(res => {
+ delIfsInventory({ id: this.deleteInfo.id }).then(res => {
this.deleteVisible = false
this.$message.success('鍒犻櫎鎴愬姛')
this.refreshTable()
@@ -781,6 +1051,7 @@
openIFS() {
this.btnLoading = true
getIfsOrder().then(res => {
+ this.resetForm('componentData')
this.refreshTable()
this.btnLoading = false
}).catch(err => {
@@ -789,17 +1060,14 @@
})
},
// 鍏ㄩ儴瀵煎嚭
- handleDown(){
- let entity = {...this.componentData}
- delete entity.orderBy
+ handleDown() {
this.outLoading = true
rawAllExport({
- entity:entity
+ ...this.componentData
}).then(res => {
this.outLoading = false
- this.$message.success('瀵煎嚭鎴愬姛')
- let url = this.javaApi + '/word/' + res.data
- this.$download.saveAs(url, "鍘熸潗鏂欐娴嬩俊鎭鍑�.xlsx");
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ this.$download.saveAs(blob, "鍘熸潗鏂欐娴嬩俊鎭鍑�.xlsx");
})
},
clear() {
@@ -808,7 +1076,7 @@
orderNo: '', // 璁㈠崟鍙�
partNo: '', // 闆朵欢鍙�
partDesc: '', // 闆朵欢鎻忚堪
- qtyArrived: '', // 鎶佃揪鐨勯噰璐暟閲�
+ purQtyInStore: '', // 鎶佃揪鐨勯噰璐暟閲�
supplierId: '', // 渚涘簲鍟嗙紪鍙�
supplierName: '', // 渚涘簲鍟嗗悕绉�
updateBatchNo: '', // 鎵瑰彿
@@ -816,6 +1084,7 @@
receiverDate: '', // 鎺ユ敹鏃堕棿
buyUnitMeas: '', // 鍗曚綅
isExpire: '', // 鍗曚綅
+ orderType: null, // 閿�鍞鍗曞垎绫�
}
}
},
@@ -827,6 +1096,7 @@
display: flex;
justify-content: space-between;
}
+
.tab {
list-style-type: none;
display: flex;
--
Gitblit v1.9.3