From 36653c98622c8a74cb850575b2001457121b794c Mon Sep 17 00:00:00 2001 From: 王震 <10952869+daywangzhen@user.noreply.gitee.com> Date: 星期四, 25 一月 2024 16:16:22 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before --- src/views/quality/finishedProductInspection/index.vue | 552 +++++++++++++++++++++++++++++-------------------------- 1 files changed, 291 insertions(+), 261 deletions(-) diff --git a/src/views/quality/finishedProductInspection/index.vue b/src/views/quality/finishedProductInspection/index.vue index 821a642..d71804a 100644 --- a/src/views/quality/finishedProductInspection/index.vue +++ b/src/views/quality/finishedProductInspection/index.vue @@ -2,7 +2,7 @@ <div class="content-main"> <div class="rawPage"> <basic-container> - <ttable + <ttable :table="table" @handleSelectionChange="handleSelectionChange" :prelang="prelang" @@ -33,280 +33,310 @@ import ttable from '@/views/common/ztt-table.vue' import * as fecha from 'element-ui/lib/utils/date' import finishedProductInspectionAdd from './finishedProduct-form' - import { page,deletePro,exportExaminationProducts,queryById } from '@/api/quality/finishedProduct' + import { page,deletePro,exportExaminationProducts,queryById,downloadReport } from '@/api/quality/finishedProduct' import { transform } from '@/util/fileTransform' + import { mapGetters } from 'vuex' import printTemplate from './finishedProducter-print.vue' import PrintJS from 'print-js' - import { title } from 'process' + import { transformZip } from '@/util/fileTransform' export default { - components: { - finishedProductInspectionAdd, - ttable, - printTemplate - }, - data() { - return { - printFormData: null, - printDialogVisible: false, - result:[{label:'鍏ㄩ儴',value: ''},{label:'鍚堟牸',value: '1'},{label:'涓嶅悎鏍�',value: '0'}], - type: [1], - prelang: 'finishedProduct', - ajaxFun: page, - options: { - height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾 - stripe: true, // 鏄惁涓烘枒椹汗 table - highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈 - border: true, // 鏄惁鏈夌旱鍚戣竟妗� - lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇 - fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮� - multiSelect: true, // - seqNo: true, - isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 - isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H - isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 - defaultOrderBy: { column: 'createTime', direction: 'desc' }, - }, - table: { - total: 0, - currentPage: 1, - pageSize: 20, - data: [], - // 鏍囬 - column: [ - { - minWidth: '120', - prop: 'finInsNo', - label: '浜у搧妫�楠岀紪鍙�', - isTrue: true, - isSearch: true, - searchInfoType: 'text', - render: { fun: this.addOrUpdateHandle } - }, + components: { + finishedProductInspectionAdd, + ttable, + printTemplate + }, + data() { + return { + multipleSelection: [], + printFormData: null, + printDialogVisible: false, + result:[{label:'鍏ㄩ儴',value: ''},{label:'鍚堟牸',value: '1'},{label:'涓嶅悎鏍�',value: '0'}], + type: [1], + prelang: 'finishedProduct', + ajaxFun: page, + options: { + height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾 + stripe: true, // 鏄惁涓烘枒椹汗 table + highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈 + border: true, // 鏄惁鏈夌旱鍚戣竟妗� + lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇 + fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮� + multiSelect: true, // + seqNo: true, + isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 + isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H + isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 + defaultOrderBy: { column: 'createTime', direction: 'desc' }, + }, + table: { + total: 0, + currentPage: 1, + pageSize: 20, + data: [], + // 鏍囬 + column: [ { - minWidth: '120', - prop: 'orderNumber', - label: '鎶ュ伐鍗曞彿', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'customerName', - label: '瀹㈡埛鍚嶇О', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '130', - width: '150', - prop: 'projectName', - label: '宸ョ▼鍚嶇О', - sort: true, - isTrue: true, - isSearch: true, - searchInfoType: 'text', - }, - { - minWidth: '120', - prop: 'outBatchNo', - label: '鎵规鍙�', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'materialCode', - label: '浜у搧缂栫爜', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'material', - label: '浜у搧澶х被', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'specs', - label: '瑙勬牸鍨嬪彿', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'unit', - label: '鍗曚綅', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'quantity', - label: '鏁伴噺', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'createTime', - label: '妫�楠屾棩鏈�', - sort: true, - isTrue: true, - isSearch: true, - searchInfoType: 'datetimerange', - formatter: this.formatDateTime, - }, - { - minWidth: '120', - prop: 'result', - label: '妫�娴嬬粨鏋�', - isTrue: true, - isSearch: true, - searchInfoType: 'select', - formatter: this.formatResult, - optList: () => { - return this.result - } - }, - ], - toolbar: [ - /* { - text: '鏂板', - type: 'primary', - fun: this.addOrUpdateHandle - }, */ - { - text: '瀵煎嚭', - type: 'primary', - fun: this.exportExcel - } - ], - operator: [{ - text: '鎵撳嵃', - type: 'text', - size: 'small', - fun: this.showPrint, - show: { - val: [ - '1', - '0' - ], - key: 'result' - } - },{ - text: '浣滃簾', - type: 'text', - size: 'small', - fun: this.deleteHandle - }], - operatorConfig: { - fixed: 'right', - label: '鎿嶄綔', - width: 100, - minWidth: 100 + minWidth: '120', + prop: 'finInsNo', + label: '浜у搧妫�楠岀紪鍙�', + isTrue: true, + isSearch: true, + searchInfoType: 'text', + render: { fun: this.addOrUpdateHandle } }, + { + minWidth: '120', + prop: 'productNo', + label: '鎶ュ伐鍗曞彿', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'orderNumber', + label: '璁㈠崟鍙�', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'customerName', + label: '瀹㈡埛鍚嶇О', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '130', + prop: 'projectName', + label: '宸ョ▼鍚嶇О', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text', + }, + { + minWidth: '120', + prop: 'outBatchNo', + label: '鎵规鍙�', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'materialCode', + label: '浜у搧缂栧彿', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + width: '150', + prop: 'material', + label: '浜у搧鍚嶇О', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'specs', + label: '瑙勬牸鍨嬪彿', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'unit', + label: '鍗曚綅', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'quantity', + label: '鏁伴噺', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'createTime', + label: '妫�楠屾棩鏈�', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'datetimerange', + formatter: this.formatDateTime, + }, + { + minWidth: '120', + prop: 'result', + label: '妫�娴嬬粨鏋�', + isTrue: true, + isSearch: true, + searchInfoType: 'select', + formatter: this.formatResult, + optList: () => { + return this.result + } + }, + ], + toolbar: [], + operator: null, + operatorConfig: { + fixed: 'right', + label: '鎿嶄綔', + width: 100, + minWidth: 100 }, - } - }, - created() { }, - watch:{ + }, + } + }, + created() { + if(this.permissions.quality_finishedProductInspection_download){ + this.table.toolbar.push({ + text: '涓嬭浇妫�楠屾姤鍛�', + type: 'primary', + fun: this.downloadProReport + }) + } + if(this.permissions.quality_finishedProductInspection_del){ + this.table.operator = [{ + text: '浣滃簾', + type: 'text', + size: 'small', + fun: this.deleteHandle + }] + } + }, + computed: { + ...mapGetters(['permissions']) + }, + watch:{ printFormData(newVal){ if(newVal){ this.printFormData = newVal } } }, - methods: { - //鎵撳嵃鎸夐挳 - printFun() { - const style = '@page {margin: 10mm 5mm; margin-bottom: 0;margin-top:0;} ' +'@media print {.title{font-size:30pt;font-weight: 400;font-family: 榛戜綋;!important;}' ; - PrintJS({ - printable: "printRaw", - type: "html", - scanStyles: false, - maxWidth: 1200, - header: "浜у搧妫�娴嬫姤鍛�", - style:style, - css:'./title.css', - targetStyles: ["*"], - ignoreElements: ["no-ignore"], - orientation: 'portrait' - }); - }, - //鏌ョ湅鎶ュ憡鎸夐挳 - showPrint(row){ - queryById(row.id).then(res=>{ - this.printFormData = res.data.data - this.printFormData.createTime = row.createTime - this.printFormData.updateTime = row.updateTime - this.printDialogVisible = true - }).catch(error=>{ + methods: { + downloadProReport(){ + let selection = this.multipleSelection + if(!selection || selection.length < 1){ + this.$message.error("璇峰厛閫夋嫨妫�楠屾暟鎹�") + return + }else{ + let arr = selection.filter(s=>{ + return s.result==null || s.result=='' }) - }, - exportExcel(){ - let queryParam=this.$refs.finishedProduct.getQueryParam(); - delete queryParam.criteria - exportExaminationProducts(queryParam).then((res)=>{ - transform(res) - }) - }, - deleteHandle(row){ - this.$confirm('纭鍒犻櫎璇ユ暟鎹悧锛�', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning', - }).then(()=>{ - deletePro(row.id).then(res=>{ - if(res.data.code == 0){ - this.$message.success("鍒犻櫎鎴愬姛") - }else{ - this.$message.error("鍒犻櫎澶辫触") - } - this.getData() - }) - }) - }, - // 鏂板 / 淇敼 - addOrUpdateHandle(row) { - this.$router.push({ - name: 'finishedProductForm', - query: { - id: row == null ? null : row.id, - }, - params: { - resultVal: row == null ? null : row.result - } - }) - }, - formatResult(row, column, cellValue){ - if(cellValue != undefined || cellValue != null){ - if(cellValue == 0){ - return "<span style='color:#E84738;'>涓嶅悎鏍�</span>" - }else if(cellValue == 1){ - return "<span style='color:#34BD66;'>鍚堟牸</span>" - } + if(arr.length > 0){ + this.$message.error("鍙兘閫夋嫨宸叉娴嬬殑鏁版嵁") + return } - }, - formatDateTime(row, column, cellValue) { - return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' - }, - handleSelectionChange(){ }, - getData() { - this.$refs.finishedProduct.getDataList() - }, - } - - } + let ids = [] + selection.forEach(ele=>{ + ids.push(ele.id) + }) + downloadReport({ids : ids}).then(res=>{ + transformZip(res) + }).catch(error=>{ + console.log(error) + }) + } + }, + //鎵撳嵃鎸夐挳 + printFun() { + const style = '@page {margin: 10mm 5mm; margin-bottom: 0;margin-top:0;} ' +'@media print {.title{font-size:30pt;font-weight: 400;font-family: 榛戜綋;!important;}' ; + PrintJS({ + printable: "printRaw", + type: "html", + scanStyles: false, + maxWidth: 1200, + header: "浜у搧妫�娴嬫姤鍛�", + style:style, + css:'./title.css', + targetStyles: ["*"], + ignoreElements: ["no-ignore"], + orientation: 'portrait' + }); + }, + //鏌ョ湅鎶ュ憡鎸夐挳 + showPrint(row){ + queryById(row.id).then(res=>{ + this.printFormData = res.data.data + this.printFormData.createTime = row.createTime + this.printFormData.updateTime = row.updateTime + this.printDialogVisible = true + }).catch(error=>{ + }) + }, + exportExcel(){ + let queryParam=this.$refs.finishedProduct.getQueryParam(); + delete queryParam.criteria + exportExaminationProducts(queryParam).then((res)=>{ + transform(res) + }) + }, + deleteHandle(row){ + this.$confirm('纭鍒犻櫎璇ユ暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + }).then(()=>{ + deletePro(row.id).then(res=>{ + if(res.data.code == 0){ + this.$message.success("鍒犻櫎鎴愬姛") + }else{ + this.$message.error("鍒犻櫎澶辫触") + } + this.getData() + }) + }) + }, + // 鏂板 / 淇敼 + addOrUpdateHandle(row) { + if(!this.permissions.quality_finishedProductInspection_edit && row.id!=null){ + this.$message.error("璇ヨ鑹叉病鏈夋搷浣滄潈闄�") + return + } + this.$router.push({ + name: 'finishedProductForm', + query: { + id: row == null ? null : row.id, + }, + params: { + resultVal: row == null ? null : row.result + } + }) + }, + formatResult(row, column, cellValue){ + if(cellValue != undefined || cellValue != null){ + if(cellValue == 0){ + return "<span style='color:#E84738;'>涓嶅悎鏍�</span>" + }else if(cellValue == 1){ + return "<span style='color:#34BD66;'>鍚堟牸</span>" + } + } + }, + formatDateTime(row, column, cellValue) { + return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' + }, + handleSelectionChange(val){ + this.multipleSelection = val + }, + getData() { + this.$refs.finishedProduct.getDataList() + }, + } +} </script> <style scope="scope"> @@ -393,4 +423,4 @@ flex: 1; overflow-y: scroll; } */ -</style> \ No newline at end of file +</style> -- Gitblit v1.9.3