From fcbba75febaa36d23c6c49473ab5bcee0e1a2c04 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 08 四月 2025 09:37:11 +0800
Subject: [PATCH] 检验项目新增是否委托要求字段
---
src/views/business/productOrder/index.vue | 238 +++++++++++++++++++++++++++++++++--------------------------
1 files changed, 134 insertions(+), 104 deletions(-)
diff --git a/src/views/business/productOrder/index.vue b/src/views/business/productOrder/index.vue
index 747cfe7..80e631e 100644
--- a/src/views/business/productOrder/index.vue
+++ b/src/views/business/productOrder/index.vue
@@ -15,17 +15,6 @@
<el-input v-model="entity.sampleModel" clearable placeholder="璇疯緭鍏�" size="small"
@keyup.enter.native="refreshTable()"></el-input>
</el-form-item>
- <el-form-item>
- <el-button :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text"
- @click="more = !more">{{ !more ? '鏇村' : '鏀惰捣' }}</el-button>
- <el-button size="small" @click="refresh()">閲� 缃�</el-button>
- <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
- </el-form-item>
- <el-form-item label="鏍峰搧缂栧彿" prop="sampleCode" v-if="more">
- <el-input v-model="entity.sampleCode" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable">
- </el-input>
- </el-form-item>
<el-form-item label="涓嬪崟鏃堕棿" prop="createTime" v-if="more">
<el-date-picker v-model="entity.createTime" clearable format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
style="width:100%" type="date" value-format="yyyy-MM-dd HH:mm:ss">
@@ -41,13 +30,30 @@
@keyup.enter.native="refreshTable">
</el-input>
</el-form-item>
+ <el-form-item>
+ <el-button :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-form>
</div>
<div class="table-tab">
<div>
<ul class="tab">
- <li v-for="(m, i) in tabList" :key="i + 'afgh'" :class="{ active: i == tabIndex }" @click="handleTab(m, i)">{{ m.label }}
+ <li :class="{ active: tabIndex === 0 }" v-if="checkPermi(['get:insOrder:reviewed'])" @click="handleTab(0)">寰呭鏍�
</li>
+ <li :class="{ active: tabIndex === 1 }" v-if="checkPermi(['get:insOrder:checkout'])" @click="handleTab(1)">妫�楠屼腑
+ </li>
+ <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:insOrder:customerOrdered'])"
+ @click="handleTab(2)">濮旀墭宸叉</li>
+ <li :class="{ active: tabIndex === 3 }" v-if="checkPermi(['get:insOrder:spotCheck'])" @click="handleTab(3)">
+ 鎶芥牱宸叉</li>
+ <li :class="{ active: tabIndex === 4 }" v-if="checkPermi(['get:insOrder:sendBack'])" @click="handleTab(4)">閫�鍥�
+ </li>
+ <li :class="{ active: tabIndex === 5 }" v-if="checkPermi(['get:insOrder:revocation'])" @click="handleTab(5)">
+ 鎾ら攢</li>
+ <li :class="{ active: tabIndex === 6 }" v-if="checkPermi(['get:insOrder:all'])" @click="handleTab(6)">鍏ㄩ儴</li>
</ul>
</div>
<div>
@@ -55,7 +61,7 @@
@click="downLoad">瀵煎嚭</el-button>
<el-button v-if="tabIndex === 1" size="small" type="primary" @click="openAddIns">娣诲姞妫�楠岄」</el-button>
<el-button size="small" type="primary" @click="openPrint">鏍囩鎵撳嵃</el-button>
- <el-button size="small" type="primary" @click="playOrder(1)">涓嬪崟</el-button>
+ <el-button v-if="checkPermi(['add:insOrder'])" size="small" type="primary" @click="playOrder(1)">涓嬪崟</el-button>
</div>
</div>
<div class="table">
@@ -86,8 +92,8 @@
</el-dialog>
<!-- 鎾ら攢 -->
<el-dialog :before-close="handleClose" :visible.sync="quashDialogVisible" title="涓嬪崟鎾ら攢" width="30%">
- <p v-if="!isQuash" style="font-size:16px;color:#333333">濮旀墭缂栧彿<span
- style="color:#34BD66">{{ this.insOrderRow.entrustCode }}</span>鐨勪俊鎭槸鍚︽挙閿�</p>
+ <p v-if="!isQuash" style="font-size:16px;color:#333333">濮旀墭缂栧彿<span style="color:#34BD66">{{
+ this.insOrderRow.entrustCode }}</span>鐨勪俊鎭槸鍚︽挙閿�</p>
<el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px">
<el-form-item label="璇疯緭鍏ユ挙閿�鍘熷洜锛�">
<el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input>
@@ -105,7 +111,7 @@
</span>
</el-dialog>
<!-- 涓嬪彂 -->
- <el-dialog :before-close="handleClose" :visible.sync="issuedDialogVisible" title="妫�楠屽垎閰�" width="400px">
+ <!-- <el-dialog :before-close="handleClose" :visible.sync="issuedDialogVisible" title="妫�楠屽垎閰�" width="400px">
<div class="body" style="max-height: 60vh;">
<el-row>
<el-col class="search_thing" style="width: 95%;">
@@ -145,8 +151,8 @@
<el-button :loading="upLoad" type="primary" @click="submitForm2">纭� 瀹�</el-button>
</el-row>
</span>
- </el-dialog>
- <el-dialog :visible.sync="dataDialogVisible" title="鏁版嵁鏌ョ湅" width="80%">
+ </el-dialog> -->
+ <el-dialog :visible.sync="dataDialogVisible" title="鏁版嵁鏌ョ湅" width="80%" @close="closeDia">
<div v-if="dataDialogVisible">
<lims-table :tableData="tableDataLook" :column="tableDataLookColumn" @pagination="tableDataLookPagination"
height="500px" key="tableDataLook" :page="tableDataLookPage"
@@ -168,8 +174,8 @@
<span slot="footer" class="dialog-footer">
<el-row>
<el-button @click="handleNo">{{ deleteTilte == '鎾ら攢' ? '鍙� 娑�' : '涓嶉�氳繃' }}</el-button>
- <el-button :loading="printLoading" type="primary" @click="submitDelete">{{ deleteTilte == '鎾ら攢' ? '纭� 瀹�' : '閫�
- 杩�'}}</el-button>
+ <el-button :loading="printLoading" type="primary" @click="submitDelete">{{ deleteTilte == '鎾ら攢' ? '纭� 瀹�' :
+ '閫氳繃' }}</el-button>
</el-row>
</span>
</el-dialog>
@@ -264,8 +270,8 @@
<el-row style="margin-top: 0.01cm;font-size: 0.20cm;">
<el-col style="display: flex;align-items: center;"><span>鏍峰搧鐘舵��:
</span>
- <span style="white-space: nowrap;"><span v-if="item.insState == 0">鈭�</span><span v-if="item.insState != 0"
- class="scor"></span>寰呮
+ <span style="white-space: nowrap;"><span v-if="item.insState == 0">鈭�</span><span
+ v-if="item.insState != 0" class="scor"></span>寰呮
<span v-if="item.insState == 1">鈭�</span><span v-if="item.insState != 1" class="scor"></span>鍦ㄦ
<span v-if="item.insState == 2">鈭�</span><span v-if="item.insState != 2" class="scor"></span>宸叉
<span v-if="item.isLeave == 1">鈭�</span><span v-if="item.isLeave != 1" class="scor"></span>鐣欐牱</span>
@@ -294,6 +300,7 @@
@closePrintDialog="closePrintDialog"></print-dialog>
<!--娣诲姞閬楁紡妫�楠岄」寮规-->
<add-inspection-dia v-if="addInspectionDia" ref="addInspectionDia"></add-inspection-dia>
+ <issuedDialog ref="issuedDialog" />
<!-- <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"-->
<!-- :sonLaboratory="sonLaboratory" :state="state"-->
<!-- :typeSource="typeSource" @goback="goback" @refreshView="refreshView"/>-->
@@ -303,10 +310,10 @@
<script>
import vueQr from 'vue-qr'
import PrintJS from 'print-js'
-import file from "@/utils/file";
import PrintDialog from "@/views/business/productOrder/components/printDialog.vue";
import AddInspectionDia from "@/views/business/productOrder/components/addInspectionDia.vue";
import limsTable from "@/components/Table/lims-table.vue";
+import issuedDialog from './components/issuedDialog.vue'
import {
checkUpdate, delInsOrder,
rawAllInsOrderExport,
@@ -316,14 +323,15 @@
} from "@/api/business/productOrder";
import { selectUserCondition } from "@/api/performance/class";
import { downFile, getFileList, selectSampleAndProductByOrderId } from "@/api/business/rawMaterialOrder";
-import {mapGetters} from "vuex";
-// import Inspection from "../do/b1-inspect-order-plan/Inspection.vue";
+import { mapGetters } from "vuex";
export default {
+ name: 'ProductOrder',
components: {
limsTable,
AddInspectionDia,
PrintDialog,
- vueQr
+ vueQr,
+ issuedDialog
},
data() {
return {
@@ -335,9 +343,21 @@
tableData: [],
tableLoading: false,
column: [
- { label: '濮旀墭缂栧彿', prop: 'entrustCode', width: '160px' },
+ {
+ label: "濮旀墭缂栧彿",
+ prop: "entrustCode",
+ width: "160px",
+ dataType: "link",
+ linkMethod: "changeEntrustCode",
+ },
{ label: '濮旀墭鍗曚綅', prop: 'company' },
- { label: '鏍峰搧鍚嶇О', prop: 'sampleName' },
+ {
+ label: "鏍峰搧鍚嶇О",
+ prop: "sampleName",
+ width: "160px",
+ dataType: "link",
+ linkMethod: "selectAllByOne",
+ },
{ label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' },
{ label: '鏍峰搧鏁伴噺', prop: 'sampleNum' },
{ label: '妫�楠屼汉', prop: 'testingName' },
@@ -488,7 +508,7 @@
this.handleIssued(row);
},
disabled: (row, index) => {
- return row.state != 1 || !!row.assign
+ return row.state != 1
},
showHide: (row) => {
return this.tabIndex === 1
@@ -519,7 +539,7 @@
],
page: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
state: 0,// 0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0,3鏁版嵁鏌ョ湅
@@ -543,11 +563,12 @@
quashDialogVisible: false,
issuedDialogVisible: false,
dataDialogVisible: false, // 鏁版嵁鏌ョ湅寮规
+ currentRow: {}, // 鏁版嵁鏌ョ湅寮规
tableDataLookTableLoading: false, // 鏁版嵁鏌ョ湅寮规
tableDataLook: [],
tableDataLookPage: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
tableDataLookColumn: [
@@ -589,6 +610,7 @@
}
}
},
+ { label: "妫�楠屼汉", prop: "checkUserName" },
],
filesDialogVisible: false, // 闄勪欢鏌ョ湅寮规
tableDataFile: [],
@@ -638,7 +660,7 @@
],
pageFile: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
formData: {},
@@ -655,7 +677,7 @@
entrustCodeInfo: {},
submitCodeLoading: false,
// 浜哄憳鍒楄〃
- personList: [],
+ // personList: [],
orderId: '',
revocationInsProductIds: '',
componentDataDelete: [],
@@ -675,7 +697,7 @@
],
pageDelete: {
total: 0,
- size: 10,
+ size: 20,
current: 1
},
deleteDialogVisible: false,
@@ -685,7 +707,7 @@
label: '寰呭鏍�',
value: 0
}, {
- label: '寰呮楠�',
+ label: '妫�楠屼腑',
value: 1
},
{
@@ -742,7 +764,10 @@
},
mounted() {
this.refreshTable()
- this.getAuthorizedPerson()
+ // this.getAuthorizedPerson()
+ },
+ activated() {
+ this.refreshTable()
},
methods: {
// 鏌ヨ鍒楄〃鏁版嵁
@@ -758,7 +783,7 @@
}
const params = { ...this.entity, state: this.tabList[this.tabIndex].value }
this.tableLoading = true
- selectInsOrderParameter(params).then(res => {
+ selectInsOrderParameter({ ...this.page, ...params }).then(res => {
this.upIndex++
this.tableLoading = false
if (res.code === 200) {
@@ -779,6 +804,9 @@
},
// 鎵撳紑淇敼濮旀墭缂栧彿寮规
changeEntrustCode(row) {
+ if (this.tabIndex !== 1) {
+ return
+ }
this.entrustCodeVisible = true
this.entrustCodeInfo = { ...row }
},
@@ -872,9 +900,10 @@
},
// 瀵煎嚭璁板綍
downLoad() {
- rawAllInsOrderExport({ ...this.entity }).then(res => {
- let url = this.javaApi + '/word/' + res.data
- this.$download.saveAs(url, '濮旀墭妫�娴嬩俊鎭鍑�.xlsx');
+ const params = { ...this.entity, state: this.tabList[this.tabIndex].value }
+ rawAllInsOrderExport({ ...params }).then(res => {
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ this.$download.saveAs(blob, '濮旀墭妫�娴嬩俊鎭鍑�.xlsx');
}).catch(err => {
console.log('err---', err);
})
@@ -896,18 +925,18 @@
this.printDialog = false
},
// 鑾峰彇鎸囨淳浜哄憳涓嬫媺鍒楄〃
- getAuthorizedPerson() {
- selectUserCondition({ type: 1 }).then(res => {
- let data = []
- res.data.forEach(a => {
- data.push({
- label: a.name,
- value: a.id
- })
- })
- this.personList = data
- })
- },
+ // getAuthorizedPerson() {
+ // selectUserCondition({ type: 1 }).then(res => {
+ // let data = []
+ // res.data.forEach(a => {
+ // data.push({
+ // label: a.name,
+ // value: a.id
+ // })
+ // })
+ // this.personList = data
+ // })
+ // },
handleClose() {
this.verifyDialogVisible = false;
this.quashDialogVisible = false;
@@ -924,25 +953,25 @@
},
// 璇︽儏
selectAllByOne(row) {
- this.active = 2;
- // console.log(row);
- // //鎵撳紑寮规
- // this.dialogVisible = true;
- // //row = 鐐瑰嚮瀵瑰簲琛屽��
- // //澶嶅埗缁檉ormData
- // this.formData = this.HaveJson(row);
- this.currentId = row.id
- this.examine = 1
+ this.$router.push({
+ path: "/productOrder/add", query: {
+ examine: 1,
+ active: 2,
+ currentId: row.id,
+ tabIndex: this.tabIndex,
+ }
+ });
},
// 鏁版嵁鏌ョ湅
handleDataLook(row) {
this.dataDialogVisible = true;
- this.getDataTableList(row)
+ this.currentRow = row;
+ this.getDataTableList(this.currentRow)
},
// 鏌ヨ鏁版嵁鏌ョ湅鍒楄〃鏁版嵁
getDataTableList(row) {
this.tableDataLookTableLoading = true
- selectSampleAndProductByOrderId({ id: row.id }).then(res => {
+ selectSampleAndProductByOrderId({ id: row.id, ...this.tableDataLookPage }).then(res => {
this.tableDataLookTableLoading = false
if (res.code === 200) {
this.tableDataLook = res.data.records
@@ -954,7 +983,15 @@
},
tableDataLookPagination(page) {
this.tableDataLookPage.size = page.limit
- this.getDataTableList()
+ this.getDataTableList(this.currentRow)
+ },
+ closeDia() {
+ this.tableDataLookPage = {
+ total: 0,
+ size: 20,
+ current: 1
+ }
+ this.dataDialogVisible = false
},
// 闄勪欢鏌ョ湅
handleFileLook(row) {
@@ -982,25 +1019,21 @@
downFile({
id: row.id,
}).then(res => {
- if (res.code === 200) {
- let url = '';
- if (res.data.type == 1) {
- url = this.javaApi + '/img/' + res.data.fileUrl
- this.$download.saveAs(url, row.fileName);
- } else {
- url = this.javaApi + '/word/' + res.data.fileUrl
- this.$download.saveAs(url, row.fileName);
- }
- }
+ this.$download.saveAs(res.data.fileUrl, row.fileName);
}).catch(error => {
})
},
// 涓嬭浇鎶ュ憡
download(row) {
- let url = this.javaApi + '/word/' + row.urlS ? row.urlS : row.url;
+ let url = row.urlS ? row.urlS : row.url;
if (url) {
- this.$download.saveAs(url, this.downLoadInfo.fileName);
+ url = url.split('.')[0] + '.pdf'
+ const link = document.createElement('a');
+ link.href = this.javaApi + url;
+ link.target = '_blank';
+ document.body.appendChild(link);
+ link.click();
}
},
// 鎾ら攢
@@ -1018,7 +1051,7 @@
},
getDeleteList() {
this.tableLoadingDelete = true
- selectNoProducts({ orderId: this.orderId, revocationInsProductIds: this.revocationInsProductIds }).then(res => {
+ selectNoProducts({ orderId: this.orderId, revocationInsProductIds: this.revocationInsProductIds, ...this.pageDelete }).then(res => {
this.tableLoadingDelete = false
this.componentDataDelete = res.data.records
this.pageDelete.total = res.data.total
@@ -1082,28 +1115,29 @@
},
// 涓嬪彂
handleIssued(row) {
- this.issuedDialogVisible = true;
- selectOrderManDay({
- id: row.id
- }).then(res => {
- this.distributeData.orderId = row.id
- this.distributeData.sampleId = row.sampleId
- this.distributeData.appointed = res.data
- this.distributeData.type = row.type
- })
- upPlanUser2({
- orderId: row.id,
- }).then(res => {
- if (res.code === 200 && res.data.length > 0) {
- this.sonLaboratoryList = [];
- res.data.forEach(m => {
- this.sonLaboratoryList.push({
- value: m,
- label: m
- })
- })
- }
- })
+ // this.issuedDialogVisible = true;
+ this.$refs.issuedDialog.init(row)
+ // selectOrderManDay({
+ // id: row.id
+ // }).then(res => {
+ // this.distributeData.orderId = row.id
+ // this.distributeData.sampleId = row.sampleId
+ // this.distributeData.appointed = res.data
+ // this.distributeData.type = row.type
+ // })
+ // upPlanUser2({
+ // orderId: row.id,
+ // }).then(res => {
+ // if (res.code === 200 && res.data.length > 0) {
+ // this.sonLaboratoryList = [];
+ // res.data.forEach(m => {
+ // this.sonLaboratoryList.push({
+ // value: m,
+ // label: m
+ // })
+ // })
+ // }
+ // })
},
submitForm2() {
if (this.distributeData.appointed == null || this.distributeData.appointed == '') {
@@ -1127,10 +1161,6 @@
userId: this.distributeData.userId,
sonLaboratory: this.distributeData.sonLaboratory,
}).then(res => {
- if (res.code === 201) {
- this.upLoad = false
- return
- }
this.$message.success('淇敼鎴愬姛')
this.upLoad = false
this.issuedDialogVisible = false
@@ -1176,7 +1206,7 @@
handleVerify(row) {
this.$router.push({ path: "/productOrder/add", query: { examine: 1, active: 3, currentId: row.id } });
},
- handleTab(m, i) {
+ handleTab(i) {
this.tabIndex = i;
this.refreshTable()
},
--
Gitblit v1.9.3