From 83be7ca0c138b64b3447cc207b63c7933690f6ec Mon Sep 17 00:00:00 2001 From: 曹睿 <360930172@qq.com> Date: 星期二, 25 二月 2025 09:08:58 +0800 Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-before into dev --- src/views/business/reportPreparation/index.vue | 1016 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,016 insertions(+), 0 deletions(-) diff --git a/src/views/business/reportPreparation/index.vue b/src/views/business/reportPreparation/index.vue new file mode 100644 index 0000000..60a78b9 --- /dev/null +++ b/src/views/business/reportPreparation/index.vue @@ -0,0 +1,1016 @@ +<template> + <div class="app-container"> + <div> + <el-form :model="entity" ref="entity" size="small" :inline="true"> + <el-form-item label="鎶ュ憡缂栧彿" prop="code"> + <el-input v-model="entity.code" clearable placeholder="璇疯緭鍏�" + size="small" @keyup.enter.native="refreshTable()"></el-input> + </el-form-item> + <el-form-item label="鐘舵��" prop="queryStatus"> + <el-select v-model="entity.queryStatus" clearable size="small" @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="typeSource"> + <el-select v-model="entity.typeSource" clearable size="small" @change="refreshTable()"> + <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option> + </el-select> + </el-form-item> + <el-form-item label="妫�楠岀被鍒�" prop="orderType"> + <el-select v-model="entity.orderType" clearable size="small" @change="refreshTable()"> + <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button size="mini" @click="refresh()">閲嶇疆</el-button> + <el-button size="mini" type="primary" @click="refreshTable()">鏌ヨ</el-button> + <el-button :loading="outLoading" size="mini" type="primary" @click="handleDowns">鎵归噺涓嬭浇</el-button> + </el-form-item> + </el-form> + </div> + <div> + <lims-table :tableData="valueTableData" :column="column" :page="page" :tableLoading="tableLoading" + :isSelection="true" :handleSelectionChange="handleChange" + :height="'calc(100vh - 290px)'" @pagination="pagination" key="valueTableData"> + <div slot="action" slot-scope="scope"> + <el-button size="small" type="text" @click="viewIssued(scope.row)">鏌ョ湅鎶ュ憡</el-button> + <el-upload ref='upload1' + style="display: inline;margin: 0 6px" + :action="fileAction1 +'?id='+ scope.row.id" + :auto-upload="true" + :before-upload="fileBeforeUpload1" + :headers="uploadHeader" :on-error="onError1" + :on-success="handleSuccessUp1" + :show-file-list="false" + accept='.doc,.docx'> + <el-button size="small" type="text" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName">涓婁紶</el-button> + </el-upload> + <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handleRestore(scope.row)">杩樺師</el-button> + <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">閫�鍥炰换鍔�</el-button> + <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handle(scope.row)">鎻愪氦</el-button> + <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 ||scope.row.isExamine == 1 || userName !== scope.row.examineUser" @click="handleIssued(scope.row)">瀹℃牳</el-button> + <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || userName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">鎵瑰噯</el-button> + <el-popover placement="bottom" trigger="hover" style="margin-left: 6px"> + <template #reference> + <el-button link type="text" size="small">鏇村</el-button> + </template> + <div> + <el-button style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">涓嬭浇</el-button> + <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">鍘熷璁板綍</el-button> + <el-button type="text" size="small" @click="handleFileLook(scope.row)">闄勪欢涓婁紶</el-button> + </div> + </el-popover> + </div> + </lims-table> + </div> + <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="claimVisible" title="鍦ㄧ嚎缂栧埗" + width="22cm"> + <div class="full-screen"> + <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" + @click="fullscreen=true;"></i> + <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;"> + </div> + <Word v-if="claimVisible" ref="Word" :class="{fullscreen:fullscreen}" :value="value" style="height:70vh" /> + <span slot="footer" class="dialog-footer"> + <el-button @click="claimVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="confirmClaim">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="issuedVisible" title="鎶ュ憡瀹℃牳" + width="80vw"> + <div class="full-screen"> + <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> + <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > + </div> + <div v-if="issuedVisible" style="height: 80vh;"> + <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> + </div> + <span slot="footer" class="dialog-footer"> + <el-button :disabled="loadingIssued" @click="issuedReasonVisible=true">涓嶉�氳繃</el-button> + <el-button type="primary" @click="subIssued">閫� 杩�</el-button> + </span> + </el-dialog> + <el-dialog :modal-append-to-body="false" :visible.sync="issuedReasonVisible" title="涓嶉�氳繃鍘熷洜" width="400px"> + <div class="search_thing"> + <div class="search_label">涓嶉�氳繃鍘熷洜锛�</div> + <div class="search_input"><el-input v-model="reason" clearable placeholder="璇疯緭鍏�" size="small"></el-input></div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button :disabled="loadingIssuedReason" @click="issuedReasonVisible=false">鍙栨秷</el-button> + <el-button :loading="loadingIssuedReason" type="primary" @click="handleIssuedReason">纭畾</el-button> + </span> + </el-dialog> + <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="approveVisible" title="鎶ュ憡鎵瑰噯" width="80vw"> + <div class="full-screen"> + <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> + <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > + </div> + <div v-if="approveVisible" style="height: 80vh;"> + <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> + </div> + <span slot="footer" class="dialog-footer"> + <el-button :disabled="loadingApprove" @click="approveReasonVisible=true">涓嶆壒鍑�</el-button> + <el-button :loading="loadingApprove" type="primary" @click="subApprove">鎵� 鍑�</el-button> + </span> + </el-dialog> + <el-dialog :modal-append-to-body="false" :visible.sync="approveReasonVisible" title="涓嶆壒鍑嗗師鍥�" width="400px"> + <div class="search_thing"> + <div class="search_label">涓嶆壒鍑嗗師鍥狅細</div> + <div class="search_input"><el-input v-model="reason" clearable placeholder="璇疯緭鍏�" size="small"></el-input></div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button :disabled="loadingApproveReason" @click="approveReasonVisible=false">鍙栨秷</el-button> + <el-button :loading="loadingApproveReason" type="primary" @click="handleApproveReason">纭畾</el-button> + </span> + </el-dialog> + <el-dialog :close-on-click-modal="false" :visible.sync="addApproverDia" title="鎸囧畾鎵瑰噯浜哄憳" + width="400px" + @close="closeAddApproverDia"> + <div class="body" style="display: flex;padding: 10px;align-items: center;"> + <div class="search_label" style="width: 150px;"><span class="required-span">*</span>鎵瑰噯浜猴細</div> + <div class="search_input" style="width: 100%;"> + <el-select v-model="approver" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeAddApproverDia">鍙� 娑�</el-button> + <el-button :loading="loadingIssued" type="primary" @click="submitAddApprover">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog :close-on-click-modal="false" :visible.sync="addVerifyDia" + title="鎸囧畾瀹℃牳浜哄憳" + width="400px" + @close="closeAddVerifyDia"> + <div class="body" style="display: flex;padding: 10px;align-items: center;"> + <div class="search_label" style="width: 150px;"><span class="required-span">*</span>瀹℃牳浜猴細</div> + <div class="search_input" style="width: 100%;"> + <el-select v-model="verifyUser" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeAddVerifyDia">鍙� 娑�</el-button> + <el-button :loading="loadingVerify" type="primary" @click="handleSubmit">纭� 瀹�</el-button> + </span> + </el-dialog> + <!--浜т笟閾句俊鎭煡鐪�--> +<!-- <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>--> + <!--鎶ュ憡鏌ョ湅--> + <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="鎶ュ憡鏌ョ湅" + width="80vw"> + <div class="full-screen"> + <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> + <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > + </div> + <div v-if="viewIssuedVisible" style="height: 80vh;"> + <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> + </div> + </el-dialog> + <!--闄勪欢鏌ョ湅--> + <el-dialog :visible.sync="filesDialogVisible" title="闄勪欢鏌ョ湅" width="80%" @closed="closeFilesLook"> + <div style="margin-bottom: 10px"> + <el-upload ref='upload' + :action="fileAction" + :auto-upload="true" + :before-upload="fileBeforeUpload" :data="{orderId: filesLookInfo.insOrderId}" + :headers="uploadHeader" :on-error="onError" + :on-success="handleSuccessUp" + :show-file-list="false" + accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> + <el-button size="small" style="height: 38px" type="primary">闄勪欢涓婁紶</el-button> + </el-upload> + </div> + <lims-table :tableData="tableDataFile" :column="columnFile" @pagination="paginationFile" height="500px" + key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> + </el-dialog> + </div> +</template> + +<script> +import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue"; +// import ShowInfo from "../do/b1-material-ins-order/showInfo.vue"; +import file from "@/utils/file"; +import { + downAll, + examineReport, + pageInsReport, + ratifyReport, + sendBackTask, + upReportUrl, + writeReport +} from "@/api/business/insReport"; +import {mapGetters} from "vuex"; +import {selectUserCondition} from "@/api/business/inspectionTask"; +import limsTable from "@/components/Table/lims-table.vue"; +import {delfile, downFile, getFileList} from "@/api/business/rawMaterialOrder"; +export default { + components: {limsTable, onlyoffice}, + data() { + return { + entity: { + queryStatus: null, + code: null, + typeSource: null, + }, + page: { + current: 1, + size: 20, + total: 0 + }, + upIndex: 0, + statusList: [], + claimVisible: false, + issuedVisible: false, + issuedReasonVisible: false, + approveVisible: false, + approveReasonVisible: false, + fullscreen: false, + loadingApproveReason: false, + loadingApprove: false, + loadingIssuedReason: false, + loadingIssued: false, + value: ``, + reason: '', + currentInfo: null, + option:null, + mutiList:[], + outLoading:false, + inLoading:false, + addApproverDia: false, // 鎸囧畾瀹℃壒浜哄憳寮规 + approver: '', // 瀹℃壒浜哄憳 + approverId: '', // 瀹℃壒浜哄憳 + approverList: [], + addVerifyDia: false, // 鎸囧畾瀹℃牳浜哄憳寮规 + verifyUser: null, // 瀹℃牳浜哄憳 + loadingVerify: false, // 瀹℃牳浜哄憳 + typeSourceList: [ + {label: '鎴愬搧涓嬪崟', value: 0}, + {label: '鍘熸潗鏂欎笅鍗�', value: 1}, + ], + orderTypeList: [ + {label: '濮旀墭璇曢獙', value: 'Customer-ordered test'}, + {label: '鎶芥', value: '鎶芥'}, + {label: '杩涘巶妫�楠�', value: '杩涘巶妫�楠�'}, + {label: '瀛e害妫�楠�', value: 'Quarterly inspection'}, + ], + showInfoDialog: false, // 浜т笟閾句俊鎭煡鐪� + isReport: 1, + activeFace: 0, // 1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0 + customsInspection: {}, + currentId: null, + examine: null, + viewIssuedVisible: false, + queryStatusList: [ + {label: '寰呮彁浜�', value: 0}, + {label: '寰呭鏍�', value: 1}, + {label: '寰呮壒鍑�', value: 2}, + ], + state: 0, + orderId: 0, + inspectorList: [],//妫�楠屼汉鍛樺垪琛� + InspectionKey: 1, + typeSource: null,// 0:鎴愬搧涓嬪崟锛�1锛氬師鏉愭枡涓嬪崟 + sonLaboratory: '', // 璇曢獙瀹� + filesDialogVisible: false, + filesLookInfo: {}, + tableDataFile: [], + tableLoadingFile: false, + columnFile: [ + { + dataType: 'tag', + label: '绫诲瀷', + prop: 'type', + formatData: (params) => { + if (params == 1) { + return '鍥剧墖' + } else if (params == 2) { + return '鏂囦欢' + } else { + return '' + } + }, + formatType: (params) => { + if (params == 1) { + return 'success' + } else if (params == 2) { + return 'warning' + } else { + return '' + } + } + }, + { label: '闄勪欢鍚嶇О', prop: 'fileName' }, + { label: '涓婁紶浜�', prop: 'name' }, + { label: '涓婁紶鏃堕棿', prop: 'createTime' }, + { + dataType: 'action', + fixed: 'right', + label: '鎿嶄綔', + width: '170px', + operation: [ + { + name: '涓嬭浇', + type: 'text', + clickFun: (row) => { + this.handleDown(row); + } + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.delete(row); + } + }, + ] + } + ], + pageFile: { + total: 0, + size: 10, + current: 1 + }, + isCopper: null, + tableLoading: false, + valueTableData: [], + column: [ + { + label: "鎶ュ憡缂栧彿", + prop: "code", + width: "160px", + dataType: "link", + linkMethod: "selectAllByOne", + }, + { + label: "涓嬪崟绫诲埆", + prop: "typeSource", + width: "100px", + dataType: "tag", + formatData: (params) => { + if (params == 0) { + return "鎴愬搧涓嬪崟"; + } else { + return "鍘熸潗鏂欎笅鍗�"; + } + }, + }, + { + label: "妫�楠岀被鍨�", + prop: "orderType", + width: "100px", + dataType: "tag", + formatData: (params) => { + return this.orderTypeList.find((m) => m.value == params).label; + }, + formatType: (params) => { + return this.orderTypeList.find((m) => m.value == params).type; + }, + }, + { label: "鍒涘缓鏃堕棿", prop: "createTime" }, + { label: "鎻愪氦浜�", prop: "writeUserName" }, + { label: "鎻愪氦鏃堕棿", prop: "writeTime" }, + { + label: "鎻愪氦鐘舵��", + prop: "state", + width: "100px", + dataType: "tag", + formatData: (params) => { + if (params == 0) { + return "寰呮彁浜�"; + } else { + return "宸叉彁浜�"; + } + }, + formatType: (params) => { + if (params == 0) { + return "danger"; + } else { + return "success"; + } + }, + }, + { label: "瀹℃牳浜�", prop: "examineUser" }, + { label: "瀹℃牳鏃堕棿", prop: "examineTime" }, + { + label: "瀹℃牳鐘舵��", + prop: "isExamine", + width: "100px", + dataType: "tag", + formatData: (params) => { + if (params == 0) { + return "涓嶉�氳繃"; + } else { + return "閫氳繃"; + } + }, + formatType: (params) => { + if (params == 0) { + return "danger"; + } else { + return "success"; + } + }, + }, + { label: "瀹℃牳澶囨敞", prop: "examineTell" }, + { label: "鎵瑰噯浜�", prop: "ratifyUser" }, + { label: "鎵瑰噯鏃堕棿", prop: "ratifyTime" }, + { + label: "鎵瑰噯鐘舵��", + prop: "isRatify", + width: "100px", + dataType: "tag", + formatData: (params) => { + if (params == 0) { + return "涓嶆壒鍑�"; + } else { + return "鎵瑰噯"; + } + }, + formatType: (params) => { + if (params == 0) { + return "danger"; + } else { + return "success"; + } + }, + }, + { label: "鎵瑰噯澶囨敞", prop: "ratifyTell" }, + { + fixed: "right", + dataType: "slot", + slot: "action", + width: '360px', + label: "鎿嶄綔" + } + ], + userName: '', + } + }, + computed: { + ...mapGetters(["nickName", "userId"]), + action() { + return this.javaApi + '/insReport/upAll' + }, + fileAction() { + return this.javaApi + '/unqualifiedHandler/uploadFileByUnqualified' + }, + fileAction1() { + return this.javaApi + '/insReport/inReport' + } + }, + mounted() { + this.refreshTable() + }, + methods: { + refreshTable() { + this.tableLoading = true + pageInsReport({ + ...this.page,...this.entity + }).then(res => { + this.tableLoading = false + this.page.total = res.data.body.total + this.valueTableData = res.data.body.records + }) + }, + pagination({ page, limit }) { + this.page.current = page; + this.page.size = limit; + this.refreshTable(); + }, + refresh() { + this.resetForm('entity') + this.refreshTable(); + }, + handleChange(arr){ + this.mutiList = arr + }, + // 鏌ョ湅妫�楠屾暟鎹� + viewInspectInfo (row) { + //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃 + let inspectorList = [] + if(row.userName){ + inspectorList = row.userName.split(',') + } + inspectorList.push(this.nickName) + this.$router.push({ + path: "/inspectionTask/inspection", + query: { + sonLaboratory: row.sonLaboratory, + state: 3, + typeSource: row.typeSource, + orderId: row.insOrderId, + inspectorList: inspectorList, + }, + }) + }, + // 鎵撳紑鏌ョ湅闄勪欢寮规 + handleFileLook (row) { + this.filesLookInfo = row + this.filesDialogVisible = true + this.getFileList() + }, + // 鏌ヨ闄勪欢鏌ョ湅鍒楄〃鍥炶皟 + getFileList() { + this.tableLoadingFile = true + getFileList({insOrderId: this.filesLookInfo.insOrderId}).then(res => { + this.tableLoadingFile = false + if (res.code === 200) { + this.tableDataFile = res.data.records + this.pageFile.total = res.data.total + } + }).catch(err => { + this.tableLoadingFile = false + }) + }, + paginationFile(page) { + this.pageFile.size = page.limit + this.getFileList() + }, + closeFilesLook () { + this.filesDialogVisible = false + }, + handleSuccessUp(response, ) { + this.upLoading = false; + if (response.code == 200) { + this.$message.success('涓婁紶鎴愬姛'); + this.getFileList() + } + }, + handleSuccessUp1(response, ) { + if (response.code == 200) { + this.$message.success('涓婁紶鎴愬姛'); + } + }, + // 涓嬭浇闄勪欢鐨勬枃浠� + handleDown(row){ + downFile({ + id: row.id, + }).then(res => { + if (res.code === 200) { + let url = ''; + if(res.data.type==1){ + url = this.javaApi+'/img/'+res.data.fileUrl + file.downloadIamge(url,row.fileName) + }else{ + url = this.javaApi+'/word/'+res.data.fileUrl + const link = document.createElement('a'); + link.href = url; + link.download = row.fileName; + link.click(); + } + } + }).catch(error => { + + }) + }, + // 鍒犻櫎闄勪欢鏂囦欢 + delete(row) { + this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + delfile({ id: row.id }).then(res => { + if (res.code === 500) { + return + } + this.$message.success('鍒犻櫎鎴愬姛') + this.getList() + }).catch(e => { + this.$message.error('鍒犻櫎澶辫触') + }) + }).catch(() => { }) + }, + // 鏌ョ湅浜т笟閾句俊鎭� + openInfoDialog (row) { + this.showInfoDialog = true + this.$nextTick(() => { + this.$refs.showInfoDialog.getInfo(row.ifsInventoryId) + }) + }, + handleDowns(){ + if(this.mutiList.length==0){ + this.$message.error('璇烽�夋嫨鎶ュ憡') + return + } + let str = this.mutiList.map(m=>m.id).join(',') + this.outLoading = true + downAll({ids: str}).then(res => { + this.outLoading = false + this.$message.success('瀵煎嚭鎴愬姛') + // const blob = new Blob([res],{ type: 'application/octet-stream' }); + // const url = URL.createObjectURL(blob); + // const link = document.createElement('a'); + // link.href = url; + // link.download = '鎶ュ憡.zip'; + // link.click(); + const link = document.createElement('a'); + link.href = this.javaApi + res.message; + link.target = '_blank'; + document.body.appendChild(link); + link.click(); + }) + }, + beforeUpload(file){ + const isZip = file.type === 'application/zip' || file.name.endsWith('.zip'); + if (!isZip) { + this.$message.error('涓婁紶鏂囦欢鍙兘鏄� ZIP 鏍煎紡!'); + } + if(isZip){ + this.inLoading = true; + } + return isZip; + }, + fileBeforeUpload(file) { + let flag = true + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + flag = false + } + if (!flag) { + return Promise.reject(flag); //姝g‘鐨勭粓姝� + } + }, + fileBeforeUpload1(file) { + let flag = true + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload1.clearFiles() + flag = false + } + if (!flag) { + return Promise.reject(flag); //姝g‘鐨勭粓姝� + } + }, + handleSuccess(response,){ + this.inLoading = false; + if (response.code == 200) { + this.$message.success('瀵煎叆鎴愬姛') + this.refreshTable() + }else{ + this.$message.error(response.message) + } + }, + onError(err, file, fileList,type) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + }, + onError1(err, file, fileList,type) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload1.clearFiles() + }, + confirmClaim() { + // console.log(this.$refs.Word.getValue()) + }, + selectAllByOne(row) { + this.isCopper = row.isCopper + this.customsInspection = row + this.activeFace = 2; + this.examine = 1; + this.isReport = 1 + this.currentId = parseInt(row.insOrderId) + switch (row.isCopper) { + case 0: + // 鍘熸潗鏂� + this.$router.push({ + path: "/materialOrder/customsInspection", query: { + customsInspection: row, + active: this.activeFace, + currentId: row.insOrderId, + isReport: this.isReport + } + }); + break; + case null: + // 鎴愬搧 + this.$router.push({ + path: "/productOrder/add", query: { + examine: this.examine, + active: this.activeFace, + currentId: row.insOrderId + } + }); + break; + case 1: + // 閾滄潗 + this.$router.push({ + path: "/materialOrder/copperOrder", query: { + active: this.activeFace, + currentId: row.insOrderId + } + }); + break; + } + }, + download(row) { + let url = row.urlS ? row.urlS : row.url; + const link = document.createElement('a'); + link.href = this.javaApi + url; + link.target = '_blank'; + document.body.appendChild(link); + link.click(); + }, + // 杩樺師鎿嶄綔 + handleRestore(row) { + upReportUrl({ + id: row.id + }).then(res => { + if (res.code === 200) { + this.$message.success('鎿嶄綔鎴愬姛') + this.refreshTable('page') + } + }) + }, + // 瀹℃牳鎸夐挳 + handleIssued(row) { + this.currentInfo = row; + let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS + let fileType = "docx" + if (row.tempUrlPdf != null || row.tempUrlPdf === '') { + fileName = row.tempUrlPdf + fileType = "pdf" + } + fileName = fileName.replace('/word/','') + const userName = this.nickName + this.option = { + url: this.javaApi + "/word/" + fileName, + isEdit: false, + fileType: fileType, + title: fileName, + lang: 'zh-CN', + isPrint: false, + user_id: 1, + user_name: userName, + editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName + } + this.issuedVisible = true; + }, + // 鏌ョ湅鎶ュ憡 + viewIssued(row) { + this.currentInfo = row; + let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS + let fileType = "docx" + if (row.tempUrlPdf != null || row.tempUrlPdf === '') { + fileName = row.tempUrlPdf + fileType = "pdf" + } + fileName = fileName.replace('/word/','') + const userName = this.nickName + this.option = { + url: this.javaApi + "/word/" + fileName, + isEdit: false, + fileType: fileType, + title: fileName, + lang: 'zh-CN', + isPrint: false, + user_id: 1, + user_name: userName, + editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName + } + this.viewIssuedVisible = true; + }, + // 閫�鍥炲埌浠诲姟 + sendBackTask(row) { + this.$confirm('纭閫�鍥炲埌妫�楠屼换鍔�?閫�鍥炲悗闇�閲嶆柊鎻愪氦澶嶆牳', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.upLoad = true + sendBackTask({id: row.id}).then(res => { + this.upLoad = false + this.$message.success('閫�鍥炴垚鍔燂紒') + this.refreshTable('page') + }).catch(err => { + this.upLoad = false + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 瀹℃牳閫氳繃 + submitAddApprover () { + if (!this.approver) { + this.$message.error('璇烽�夋嫨瀹℃壒浜�') + return + } + this.loadingIssued = true; + examineReport({ + id: this.currentInfo.id, + userId: this.approver, + isExamine: 1 + }).then(res => { + this.loadingIssued = false; + this.$message.success('鎻愪氦鎴愬姛') + this.refreshTable('page') + this.currentInfo = null; + this.addApproverDia = false + this.issuedVisible = false; + }).catch(e => { + this.$message.error('鎻愪氦澶辫触') + this.loadingIssued = false; + }) + }, + closeAddApproverDia () { + this.addApproverDia = false + this.approver = '' + }, + // 鐐瑰嚮閫氳繃锛岄渶瑕侀�夋嫨鎵瑰噯浜哄憳 + subIssued() { + this.getAuthorizedPerson() + this.addApproverDia = true + }, + // 鑾峰彇浜哄憳鍒楄〃 + getAuthorizedPerson() { + selectUserCondition({ type: 0 }).then((res) => { + let data = []; + res.data.forEach((a) => { + data.push({ + label: a.name, + value: a.id, + }); + }); + this.approverList = data; + }) + }, + // 鎵瑰噯鎸夐挳 + handleApprove(row) { + this.currentInfo = row; + let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS + let fileType = "docx" + if (row.tempUrlPdf != null || row.tempUrlPdf === '') { + fileName = row.tempUrlPdf + fileType = "pdf" + } + fileName = fileName.replace('/word/','') + const userName = this.nickName + this.option = { + url: this.javaApi + "/word/" + fileName, + isEdit: false, + fileType: fileType, + title: fileName, + lang: 'zh-CN', + isPrint: false, + user_id: 1, + user_name: userName, + editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName + } + this.approveVisible = true; + }, + // 鎵瑰噯閫氳繃 + subApprove() { + this.loadingApprove = true; + ratifyReport({ + id: this.currentInfo.id, + isRatify: 1 + }).then(res => { + this.loadingApprove = false; + this.$message.success('宸叉壒鍑�') + this.refreshTable('page') + this.currentInfo = null; + this.approveVisible = false; + }) + }, + handle (row) { + this.getAuthorizedPerson() + this.currentInfo = row; + this.addVerifyDia = true + }, + // 鎻愪氦瀹℃牳浜烘搷浣� + handleSubmit(row) { + this.loadingVerify = true + writeReport({ + id: this.currentInfo.id, + userId: this.verifyUser, + }).then(res => { + this.loadingVerify = false + this.addVerifyDia = false + this.$message.success('鎻愪氦鎴愬姛') + this.refreshTable('page') + }).catch(e => { + this.loadingVerify = false + this.$message.error('鎻愪氦澶辫触') + }) + }, + closeAddVerifyDia () { + this.addVerifyDia = false + this.verifyUser = '' + }, + // 瀹℃牳涓嶉�氳繃鍘熷洜鎻愪氦 + handleIssuedReason() { + if (!this.reason) { + return this.$message.error('璇疯緭鍏ュ師鍥�') + } + this.loadingIssuedReason = true; + examineReport({ + id: this.currentInfo.id, + isExamine: 0, + examineTell: this.reason + }).then(res => { + this.loadingIssuedReason = false; + this.$message.success('鎿嶄綔鎴愬姛') + this.refreshTable('page') + this.currentInfo = null; + this.reason = ''; + this.issuedVisible = false; + this.issuedReasonVisible = false; + }).catch(e => { + this.$message.error('鎿嶄綔澶辫触') + this.loadingIssuedReason = false; + }) + }, + // 涓嶆壒鍑嗗師鍥犳彁浜� + handleApproveReason() { + if (!this.reason) { + return this.$message.error('璇疯緭鍏ュ師鍥�') + } + this.loadingApproveReason = true + ratifyReport({ + id: this.currentInfo.id, + isRatify: 0, + examineTell: this.reason + }).then(res => { + this.loadingApproveReason = false + this.$message.success('鎿嶄綔鎴愬姛') + this.refreshTable('page') + this.currentInfo = null; + this.reason = ''; + this.approveVisible = false; + this.approveReasonVisible = false; + }).catch(e => { + this.$message.error('鎿嶄綔澶辫触') + this.loadingIssuedReason = false; + }) + } + } +} +</script> +<style scoped> +.title { + height: 60px; + line-height: 60px; +} + +.search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; +} + +.search_thing { + display: flex; + align-items: center; + height: 50px; +} + +.search_label { + width: 120px; + font-size: 14px; + text-align: right; +} + +.search_input { + width: calc(100% - 120px); +} + +.table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 10px - 40px); + padding: 20px; +} + +.el-form-item { + margin-bottom: 16px; +} + +.full-screen { + position: absolute; + right: 52px; + top: 22px; +} + +.btns { + position: absolute; + right: 40px; + top: 50%; + transform: translate(0, -50%); + display: flex; + align-items: center; +} + +.fullscreen { + height: 82vh +} +</style> -- Gitblit v1.9.3