From 0f102473c642142976d537af4c505b8a7161d6c5 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 31 十月 2025 15:30:17 +0800
Subject: [PATCH] 原材料报检拆分功能V1
---
src/views/business/materialOrder/index.vue | 245 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 189 insertions(+), 56 deletions(-)
diff --git a/src/views/business/materialOrder/index.vue b/src/views/business/materialOrder/index.vue
index 325eaf0..98a7af4 100644
--- a/src/views/business/materialOrder/index.vue
+++ b/src/views/business/materialOrder/index.vue
@@ -5,51 +5,51 @@
<el-form :model="entity" ref="entity" size="small" :inline="true">
<el-form-item label="鎵瑰彿" prop="updateBatchNo">
<el-input v-model="entity.updateBatchNo" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable">
+ @keyup.enter.native="goSearch">
</el-input>
</el-form-item>
- <el-form-item label="濮旀墭缂栧彿" prop="entrustCode">
+ <el-form-item label="濮旀墭缂栧彿" prop="entrustCode" v-if="tabIndex !== 0">
<el-input v-model="entity.entrustCode" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable">
+ @keyup.enter.native="goSearch">
</el-input>
</el-form-item>
<el-form-item label="闆朵欢鍙�" prop="partNo">
<el-input v-model="entity.partNo" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable">
+ @keyup.enter.native="goSearch">
</el-input>
</el-form-item>
<el-form-item label="闆朵欢鎻忚堪" prop="partDesc">
<el-input v-model="entity.partDesc" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable">
+ @keyup.enter.native="goSearch">
</el-input>
</el-form-item>
<el-form-item>
<el-button v-if="tabIndex === 2 || 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" type="primary" @click="goSearch">鏌ヨ</el-button>
<el-button size="mini" @click="refresh()">閲嶇疆</el-button>
</el-form-item>
<el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName"
v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
<el-input v-model="entity.supplierName" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable">
+ @keyup.enter.native="goSearch">
</el-input>
</el-form-item>
<el-form-item label="鏍峰搧鍨嬪彿" prop="sampleModel"
v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
<el-input v-model="entity.sampleModel" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable">
+ @keyup.enter.native="goSearch">
</el-input>
</el-form-item>
<el-form-item label="妫�楠岀姸鎬�" prop="inspectStatus"
v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
- <el-select v-model="entity.inspectStatus" clearable size="small" @change="refreshTable()">
+ <el-select v-model="entity.inspectStatus" clearable size="small" @change="goSearch">
<el-option v-for="(a, i) in inspectStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="涓嬪彂鏃堕棿" prop="date" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
- <el-date-picker v-model="entity.date" end-placeholder="缁撴潫鏃ユ湡" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡"
+ <el-date-picker v-model="entity.date" end-placeholder="缁撴潫鏃ユ湡" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" @change="goSearch"
range-separator="鑷�" size="small" start-placeholder="寮�濮嬫棩鏈�" type="daterange" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
@@ -59,15 +59,15 @@
<div class="table-tab">
<div>
<ul class="tab">
- <li :class="{ active: tabIndex === 0 }" @click="handleTab(0)">寰呬笅鍗�</li>
- <li :class="{ active: tabIndex === 1 }" @click="handleTab(1)">妫�楠屼腑</li>
- <li :class="{ active: tabIndex === 2 }" @click="handleTab(2)">宸叉楠�</li>
- <li :class="{ active: tabIndex === 4 }" @click="handleTab(4)">瀛e害妫�楠�</li>
+ <li :class="{ active: tabIndex === 0 }" v-if="checkPermi(['get:raw:await'])" @click="handleTab(0)">寰呬笅鍗�</li>
+ <li :class="{ active: tabIndex === 1 }" v-if="checkPermi(['get:raw:testing'])" @click="handleTab(1)">妫�楠屼腑</li>
+ <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:raw:check'])" @click="handleTab(2)">宸叉楠�</li>
+ <li :class="{ active: tabIndex === 4 }" v-if="checkPermi(['get:raw:quarterCheck'])" @click="handleTab(4)">瀛e害妫�楠�</li>
<li :class="{ active: tabIndex === 3 }" v-if="checkPermi(['get:Ifs:ByAll'])" @click="handleTab(3)">鍏ㄩ儴</li>
</ul>
</div>
<div>
- <el-button v-show="tabIndex === 3 || tabIndex === 2" :loading="outLoading" size="small" type="primary"
+ <el-button v-show="tabIndex === 3" :loading="outLoading" size="small" type="primary"
@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>
@@ -76,8 +76,8 @@
<!--寰呬笅鍗�-->
<div class="table">
<lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" @pagination="pagination"
- :rowClassName="changeRowClass" :height="'calc(100vh - 290px)'" key="tableData" :page="page"
- :tableLoading="tableLoading"></lims-table>
+ ref="tableData" :rowClassName="changeRowClass" :height="'calc(100vh - 290px)'"
+ key="tableData" :page="page" :tableLoading="tableLoading"></lims-table>
</div>
<!--妫�楠屼腑-->
<div class="table">
@@ -109,8 +109,7 @@
<el-dialog :visible.sync="exemptionVisible" title="纭鍏嶆" width="42%">
<div style="display: flex">
<span style="width: 90px; line-height: 32px">瑙勬牸鍨嬪彿锛�</span>
- <el-input v-model="exemptionInfo.partDetail" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable"></el-input>
+ <el-input v-model="exemptionInfo.partDetail" clearable placeholder="璇疯緭鍏�" size="small"></el-input>
</div>
<span slot="footer" class="dialog-footer">
<el-row>
@@ -205,10 +204,11 @@
updateEntrustCode
} from "@/api/business/rawMaterialOrder";
import { getWarehouseSubmit } from "@/api/business/materialInspection";
+import {mapGetters} from "vuex";
// import Inspection from "../do/b1-inspect-order-plan/Inspection.vue";
export default {
- name: "b1-material-inspection-order",
+ name: "MaterialOrder",
// import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog },
data() {
@@ -239,14 +239,13 @@
}
}
},
- { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived' },
+ { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore' },
{ label: '鍗曚綅', prop: 'buyUnitMeas' },
{ label: '璁㈠崟鍙�', prop: 'orderNo' },
{ label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
{ label: '鎶ユ鏃堕棿', prop: 'declareDate' },
{
dataType: 'action',
- fixed: 'right',
label: '鎿嶄綔',
operation: [
{
@@ -275,7 +274,7 @@
],
page: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
tableData1: [],
@@ -320,7 +319,7 @@
}
}
},
- { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived' },
+ { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore' },
{ label: '鍗曚綅', prop: 'buyUnitMeas' },
{ label: '璁㈠崟鍙�', prop: 'orderNo' },
{ label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
@@ -356,7 +355,7 @@
],
page1: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
tableData2: [],
@@ -405,14 +404,32 @@
}
},
{ label: '璁㈠崟鍙�', prop: 'orderNo' },
- { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived' },
+ { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore' },
{ label: '涓嬪彂鏃堕棿', prop: 'sendTime' },
{ label: '鎵瑰彿', prop: 'updateBatchNo' },
{ label: '闆朵欢鍙�', prop: 'partNo' },
{ label: '闆朵欢鎻忚堪', prop: 'partDesc' },
{ label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName' },
{ label: '涓嶅悎鏍兼弿杩�', prop: 'unqualifiedDesc' },
- { label: '鍏嶆', prop: 'isExemption' },
+ {
+ 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: 'sampleName',
@@ -458,6 +475,11 @@
disabled: (row) => {
return row.isQuarter == 0
},
+ showHide: (row) => {
+ return this.checkPermi([
+ "get:raw:check:operation",
+ ]);
+ },
},
{
name: '鏁版嵁鏌ョ湅',
@@ -471,14 +493,14 @@
type: 'text',
clickFun: (row) => {
this.handleFileLook(row);
- },
+ }
},
{
name: '鎶ュ憡涓嬭浇',
type: 'text',
clickFun: (row) => {
this.download(row);
- },
+ }
},
{
name: '鍘熷璁板綍',
@@ -499,6 +521,11 @@
disabled: (row) => {
return row.inspectStatus != 2
},
+ showHide: (row) => {
+ return this.checkPermi([
+ "get:raw:check:operation",
+ ]);
+ },
},
{
name: '瀛e害鎾ら攢',
@@ -509,13 +536,18 @@
disabled: (row) => {
return row.quarterOrderId == null || row.quarterReportId != null
},
+ showHide: (row) => {
+ return this.checkPermi([
+ "get:raw:check:operation",
+ ]);
+ },
},
]
}
],
page2: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
tableData3: [],
@@ -558,14 +590,32 @@
}
},
{ label: '璁㈠崟鍙�', prop: 'orderNo' },
- { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived' },
+ { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore' },
{ label: '涓嬪彂鏃堕棿', prop: 'sendTime' },
{ label: '鎵瑰彿', prop: 'updateBatchNo' },
{ label: '闆朵欢鍙�', prop: 'partNo' },
{ label: '闆朵欢鎻忚堪', prop: 'partDesc' },
{ label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName' },
{ label: '涓嶅悎鏍兼弿杩�', prop: 'unqualifiedDesc' },
- { label: '鍏嶆', prop: 'isExemption' },
+ {
+ 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: 'sampleName',
@@ -621,7 +671,7 @@
],
page3: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
tableData4: [],
@@ -664,14 +714,32 @@
}
},
{ label: '璁㈠崟鍙�', prop: 'orderNo' },
- { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived' },
+ { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore' },
{ label: '涓嬪彂鏃堕棿', prop: 'sendTime' },
{ label: '鎵瑰彿', prop: 'updateBatchNo' },
{ label: '闆朵欢鍙�', prop: 'partNo' },
{ label: '闆朵欢鎻忚堪', prop: 'partDesc' },
{ label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName' },
{ label: '涓嶅悎鏍兼弿杩�', prop: 'unqualifiedDesc' },
- { label: '鍏嶆', prop: 'isExemption' },
+ {
+ 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: 'sampleName',
@@ -744,7 +812,7 @@
],
page4: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
entity: {
@@ -782,7 +850,7 @@
}
],
more: false,
- tabIndex: 0,
+ tabIndex: '',
multipleSelection: [],
active: 0, //1锛氫笅鍗曪紝2锛氭煡鐪�
orderType: 0, //0锛氬師鏉愭枡涓嬪崟锛�1锛氬搴︽楠屼笅鍗�
@@ -823,11 +891,31 @@
outLoading: false
}
},
+ computed: {
+ ...mapGetters(['nickName'])
+ },
mounted() {
+ if (this.checkPermi(['get:raw:await'])) {
+ this.tabIndex = 0
+ } else {
+ this.tabIndex = 2
+ }
+ this.refreshTable()
+ },
+ activated () {
this.refreshTable()
},
// 鏂规硶闆嗗悎
methods: {
+ // 鐐瑰嚮鏌ヨ鍥炶皟
+ goSearch() {
+ this.page.current = 1
+ this.page1.current = 1
+ this.page2.current = 1
+ this.page3.current = 1
+ this.page4.current = 1
+ this.refreshTable()
+ },
// 鏌ヨ鍥炶皟
refreshTable() {
if (this.tabIndex === 0) {
@@ -970,10 +1058,7 @@
if (row.userName) {
inspectorList = row.userName.split(',')
}
- let user = JSON.parse(localStorage.getItem('user'))
- if (user) {
- inspectorList.push(user.name)
- }
+ inspectorList.push(this.nickName)
this.inspectorList = inspectorList
this.insInfo = row
this.InspectInfoDialog = true
@@ -1020,16 +1105,60 @@
}).catch(() => { })
},
viewInsInfo0() {
- this.state = 3;
- this.typeSource = this.insInfo.typeSource
- this.orderId = this.insInfo.enterOrderId
+ let inspectorList = []
+ inspectorList.push(this.nickName)
this.InspectInfoDialog = false
+ if (this.checkPermi(['business:inspectionView'])) {
+ this.$router.push({
+ name: "InspectionView",
+ query: {
+ sonLaboratory: '鍘熸潗鏂�',
+ state: 3,
+ typeSource: this.insInfo.typeSource,
+ orderId: this.insInfo.enterOrderId,
+ inspectorList: inspectorList,
+ },
+ })
+ } else {
+ this.$router.push({
+ path: "/inspectionTask/inspection",
+ query: {
+ sonLaboratory: '鍘熸潗鏂�',
+ state: 3,
+ typeSource: this.insInfo.typeSource,
+ orderId: this.insInfo.enterOrderId,
+ inspectorList: inspectorList,
+ },
+ })
+ }
},
viewInsInfo1() {
- this.state = 3;
- this.typeSource = this.insInfo.typeSource
- this.orderId = this.insInfo.quarterOrderId
+ let inspectorList = []
+ inspectorList.push(this.nickName)
this.InspectInfoDialog = false
+ if (this.checkPermi(['business:inspectionView'])) {
+ this.$router.push({
+ name: "InspectionView",
+ query: {
+ sonLaboratory: '鍘熸潗鏂�',
+ state: 3,
+ typeSource: this.insInfo.typeSource,
+ orderId: this.insInfo.quarterOrderId,
+ inspectorList: inspectorList,
+ },
+ })
+ } else {
+ this.$router.push({
+ path: "/inspectionTask/inspection",
+ query: {
+ sonLaboratory: '鍘熸潗鏂�',
+ state: 3,
+ typeSource: this.insInfo.typeSource,
+ orderId: this.insInfo.quarterOrderId,
+ inspectorList: inspectorList,
+ },
+ })
+ }
},
goback() {
this.state = 0
@@ -1041,7 +1170,6 @@
},
// 閾滄潗鏂欎笅鍗�
copper() {
- this.$router.push("/materialOrder/copperOrder");
this.$router.push({ path: "/materialOrder/copperOrder", query: { active: 1 } });
},
// 鎵撳紑鏍囩鎵撳嵃寮规
@@ -1062,20 +1190,20 @@
},
// 涓嬪崟
playOrder(row) {
- this.$router.push({ path: "/materialOrder/customsInspection", query: { orderType: 0, customsInspection: row, active: 1 } });
+ this.$router.push({ path: "/materialOrder/customsInspectionOrder", query: { orderType: 0, customsInspection: row, active: 1 } });
},
// 瀛e害妫�楠屼笅鍗�
playOrderSec(row) {
- this.$router.push({ path: "/materialOrder/customsInspection", query: { orderType: 1, customsInspection: row, active: 1 } });
+ this.$router.push({ path: "/materialOrder/customsInspectionOrder", query: { orderType: 1, customsInspection: row, active: 1 } });
},
// 鐐瑰嚮鏍峰搧鍚嶇О鏌ョ湅璇︽儏
selectAllByOne(row) {
if (row.isCopper == 1) {
this.currentId = row.enterOrderId
- this.$router.push({ path: "/materialOrder/copperOrder", query: { customsInspection: row, active: 2, currentId: this.currentId } });
+ this.$router.push({ path: "/materialOrder/CopperView", query: { customsInspection: row, active: 2, currentId: this.currentId } });
} else {
this.currentId = row.insOrderId
- this.$router.push({ path: "/materialOrder/customsInspection", query: { customsInspection: row, active: 2, currentId: this.currentId } });
+ this.$router.push({ path: "/materialOrder/customsInspectionView", query: { customsInspection: row, active: 2, currentId: this.currentId } });
}
},
// 鎵撳紑鍏嶆寮规
@@ -1175,7 +1303,7 @@
repealQuarterRawOrder({ quarterOrderId: this.insOrderRow.quarterOrderId }).then(res => {
if (res.code === 200) {
this.$message.success('鎾ら攢鎴愬姛')
- this.refreshTable('page')
+ this.refreshTable()
}
})
}).catch(() => { })
@@ -1222,10 +1350,14 @@
},
// 瀵煎嚭
handleOut() {
- let entity = this.tabIndex === 3 ? { ...this.entity, isInspect: 2 } : { ...this.entity, state: 2, orderState: 4, }
- delete entity.orderBy
this.outLoading = true
- rawAllExport({ entity: entity }).then(res => {
+ let params = {}
+ if (this.multipleSelection.length > 0) {
+ params.ids = this.multipleSelection.map(item => item.id).join(',');
+ } else {
+ params = {...this.entity}
+ }
+ rawAllExport(params).then(res => {
this.outLoading = false
const blob = new Blob([res], { type: 'application/octet-stream' });
this.$download.saveAs(blob, '鍘熸潗鏂欐娴嬩俊鎭鍑�.xlsx');
@@ -1253,6 +1385,7 @@
// 鍒囨崲涓嬪崟tab琛ㄦ牸
handleTab(m) {
this.tabIndex = m;
+ this.multipleSelection = []
this.refreshTable()
},
// 琛ㄦ牸閫夋嫨鏂规硶
--
Gitblit v1.9.3