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 | 281 +++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 219 insertions(+), 62 deletions(-)
diff --git a/src/views/business/materialOrder/index.vue b/src/views/business/materialOrder/index.vue
index d5e4a46..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,13 +59,15 @@
<div class="table-tab">
<div>
<ul class="tab">
- <li v-for="(m, i) in tabList" :key="m.value" :class="{ active: m.value === tabIndex }"
- @click="handleTab(m)">
- {{ m.label }}</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>
@@ -74,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">
@@ -107,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>
@@ -193,6 +194,7 @@
concessionRelease,
getIfsByAll,
getIfsByOver,
+ getIfsByQuarter,
getIfsByStateOne,
rawAllExport,
rawOrderRelease,
@@ -202,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() {
@@ -236,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: [
{
@@ -272,7 +274,7 @@
],
page: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
tableData1: [],
@@ -317,7 +319,7 @@
}
}
},
- { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived' },
+ { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore' },
{ label: '鍗曚綅', prop: 'buyUnitMeas' },
{ label: '璁㈠崟鍙�', prop: 'orderNo' },
{ label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
@@ -353,7 +355,7 @@
],
page1: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
tableData2: [],
@@ -402,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',
@@ -455,6 +475,11 @@
disabled: (row) => {
return row.isQuarter == 0
},
+ showHide: (row) => {
+ return this.checkPermi([
+ "get:raw:check:operation",
+ ]);
+ },
},
{
name: '鏁版嵁鏌ョ湅',
@@ -468,14 +493,14 @@
type: 'text',
clickFun: (row) => {
this.handleFileLook(row);
- },
+ }
},
{
name: '鎶ュ憡涓嬭浇',
type: 'text',
clickFun: (row) => {
this.download(row);
- },
+ }
},
{
name: '鍘熷璁板綍',
@@ -496,6 +521,11 @@
disabled: (row) => {
return row.inspectStatus != 2
},
+ showHide: (row) => {
+ return this.checkPermi([
+ "get:raw:check:operation",
+ ]);
+ },
},
{
name: '瀛e害鎾ら攢',
@@ -506,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: [],
@@ -555,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',
@@ -618,7 +671,7 @@
],
page3: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
tableData4: [],
@@ -661,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',
@@ -741,7 +812,7 @@
],
page4: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
entity: {
@@ -779,7 +850,7 @@
}
],
more: false,
- tabIndex: 0,
+ tabIndex: '',
multipleSelection: [],
active: 0, //1锛氫笅鍗曪紝2锛氭煡鐪�
orderType: 0, //0锛氬師鏉愭枡涓嬪崟锛�1锛氬搴︽楠屼笅鍗�
@@ -820,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) {
@@ -847,7 +938,7 @@
// 寰呬笅鍗曟煡璇�
getPurchaseOrderList() {
this.tableLoading = true
- const params = { ...this.entity, isInspect: 1, state: 0 }
+ const params = { ...this.entity, isInspect: 1, state: 0, ...this.page }
getWarehouseSubmit(params).then(res => {
this.tableLoading = false
if (res.code === 200) {
@@ -861,7 +952,7 @@
// 妫�楠屼腑鏌ヨ
getIfsByStateOneList() {
this.tableLoading1 = true
- const params = { ...this.entity, orderState: 1, state: 1 }
+ const params = { ...this.entity, orderState: 1, state: 1, ...this.page1 }
getIfsByStateOne(params).then(res => {
this.tableLoading1 = false
if (res.code === 200) {
@@ -875,7 +966,14 @@
// 宸叉楠屾煡璇�
getIfsByOverList() {
this.tableLoading2 = true
- const params = { ...this.entity, orderState: 4, state: 2 }
+ if(null != this.entity.date){
+ this.entity.beginDeclareDate = this.entity.date[0]
+ this.entity.endDeclareDate = this.entity.date[1]
+ } else {
+ this.entity.beginDeclareDate = ''
+ this.entity.endDeclareDate = ''
+ }
+ const params = { ...this.entity, orderState: 4, state: 2, ...this.page2 }
getIfsByOver(params).then(res => {
this.tableLoading2 = false
if (res.code === 200) {
@@ -889,8 +987,15 @@
// 鏌ヨ瀛e害妫�楠�
getIfsByQuarterList() {
this.tableLoading4 = true
- const params = { ...this.entity }
- getIfsByOver(params).then(res => {
+ if(null != this.entity.date){
+ this.entity.beginDeclareDate = this.entity.date[0]
+ this.entity.endDeclareDate = this.entity.date[1]
+ } else {
+ this.entity.beginDeclareDate = ''
+ this.entity.endDeclareDate = ''
+ }
+ const params = { ...this.entity, ...this.page4 }
+ getIfsByQuarter(params).then(res => {
this.tableLoading4 = false
if (res.code === 200) {
this.tableData4 = res.data.records
@@ -903,7 +1008,14 @@
// 鍏ㄩ儴
getIfsByAllList() {
this.tableLoading3 = true
- const params = { ...this.entity, isInspect: 1 }
+ if(null != this.entity.date){
+ this.entity.beginDeclareDate = this.entity.date[0]
+ this.entity.endDeclareDate = this.entity.date[1]
+ } else {
+ this.entity.beginDeclareDate = ''
+ this.entity.endDeclareDate = ''
+ }
+ const params = { ...this.entity, isInspect: 1, ...this.page3 }
getIfsByAll(params).then(res => {
this.tableLoading3 = false
if (res.code === 200) {
@@ -946,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
@@ -996,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
@@ -1017,7 +1170,6 @@
},
// 閾滄潗鏂欎笅鍗�
copper() {
- this.$router.push("/materialOrder/copperOrder");
this.$router.push({ path: "/materialOrder/copperOrder", query: { active: 1 } });
},
// 鎵撳紑鏍囩鎵撳嵃寮规
@@ -1038,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 } });
}
},
// 鎵撳紑鍏嶆寮规
@@ -1151,7 +1303,7 @@
repealQuarterRawOrder({ quarterOrderId: this.insOrderRow.quarterOrderId }).then(res => {
if (res.code === 200) {
this.$message.success('鎾ら攢鎴愬姛')
- this.refreshTable('page')
+ this.refreshTable()
}
})
}).catch(() => { })
@@ -1198,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');
@@ -1228,7 +1384,8 @@
},
// 鍒囨崲涓嬪崟tab琛ㄦ牸
handleTab(m) {
- this.tabIndex = m.value;
+ this.tabIndex = m;
+ this.multipleSelection = []
this.refreshTable()
},
// 琛ㄦ牸閫夋嫨鏂规硶
--
Gitblit v1.9.3