From aa8684dfcf2ddbbadbd045770ff540e64c26bbee Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期三, 06 三月 2024 17:53:45 +0800 Subject: [PATCH] 销售订单-下载排产单 --- src/views/plan/customerorder/index.vue | 363 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 246 insertions(+), 117 deletions(-) diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue index 5949caa..6cad8e6 100644 --- a/src/views/plan/customerorder/index.vue +++ b/src/views/plan/customerorder/index.vue @@ -8,26 +8,11 @@ :prelang="prelang" :options="options" :ajaxFun="ajaxFun" + :toolbarMaxLength="4" :paramArr="type" ref="customerOrderTable" > <template #toolbar> - <!-- <el-dropdown - v-if="permissions.customerorder_state_change" - @command="handleCommand" - > - <el-button> - 鐘舵�佹敼鍙�<i class="el-icon-arrow-down el-icon--right"></i> - </el-button> - <el-dropdown-menu slot="dropdown"> - <el-dropdown-item - :command="item.command" - v-for="item in stateTagArr" - :disabled="item.disabled"> - {{ item.label }} - </el-dropdown-item> - </el-dropdown-menu> - </el-dropdown> --> <el-dropdown v-if="permissions.customerorder_doc_relate" @command="documentHandle" @@ -65,32 +50,11 @@ > </el-dropdown-menu> </el-dropdown> - <!-- <el-button - v-if="permissions.customerorder_push_otc" - style="margin-left:10px;" - type="primary" - @click="pushOtc" - >鎺ㄩ�丒RP</el-button - > --> - <!-- <el-button - style="margin-left:10px;" - type="primary" - @click="importOutPutBatch" - >瀵煎叆浜у嚭鎵规</el-button - > --> <el-button style="margin-left:10px;" type="primary" @click="()=>exportDialogVisible=true" - >瀵煎嚭鍙拌处</el-button - > - <!-- <el-button - v-if="permissions.plan_customerorder_return" - style="margin-left:10px;" - type="primary" - @click="returnOrder" - >璁㈠崟閫�鍥�</el-button - > --> + >瀵煎嚭鍙拌处</el-button> </template> </ttable> <!-- 寮圭獥, 鏃ユ湡閫夋嫨 --> @@ -278,10 +242,35 @@ <el-button type="primary" @click="startSync">纭� 瀹�</el-button> </span> </el-dialog> + <el-dialog + title="宸插叧鑱旈攢鍞鍗�" + :visible.sync="showInterrelatedOrderDialog" + width="60%"> + <el-table border height="100" :data="interrelatedOrderData"> + <el-table-column type="index" align="center" label="搴忓彿"></el-table-column> + <el-table-column prop="contractNo" show-overflow-tooltip align="center" label="鍚堝悓缂栧彿"></el-table-column> + <el-table-column prop="entityName" show-overflow-tooltip align="center" label="宸ョ▼鍚嶇О"></el-table-column> + <el-table-column prop="sourceId" show-overflow-tooltip align="center" label="娣诲姞鏉ユ簮"> + <template scope="scope"> + <el-tag v-if="scope.row.sourceId == 0" type="success">鍚屾</el-tag> + <el-tag v-if="scope.row.sourceId == 1" type="info">鎵嬪姩</el-tag> + </template> + </el-table-column> + <el-table-column prop="placeOrderDate" show-overflow-tooltip align="center" label="涓嬪崟鏃ユ湡"></el-table-column> + <el-table-column prop="customerName" show-overflow-tooltip align="center" label="瀹㈡埛鍚嶇О"></el-table-column> + <el-table-column prop="coState" min-width="100" show-overflow-tooltip align="center" label="閿�鍞鍗曠姸鎬�"></el-table-column> + <el-table-column prop="partNo" show-overflow-tooltip align="center" label="浜у搧缂栧彿"></el-table-column> + <el-table-column prop="productName" show-overflow-tooltip align="center" label="浜у搧鍚嶇О"></el-table-column> + <el-table-column prop="productType" show-overflow-tooltip align="center" label="闅跺睘鍝佺墝"></el-table-column> + <el-table-column prop="otcUnit" show-overflow-tooltip align="center" label="鍗曚綅"></el-table-column> + <el-table-column prop="buyQtyDue" show-overflow-tooltip align="center" label="鏁伴噺"></el-table-column> + </el-table> + </el-dialog> </div> </template> <script> +import {interrelatedOrder,getInterrelatedOrder,checkHanderOrder} from '@/api/plan/customerOrderInterrelated' import ConfirmPullCustomerorder from './confirm-pull-customerorder' import TableForm from './customerorder-form' import TableFormDEesc from './customerorder-form-desc' @@ -309,7 +298,9 @@ exportCustomerOrder, exportCustomerOrderSplit, syncOrder, - dropByContractNo + dropByContractNo, + downloadProduct, + downloadWordFile } from '../../../api/plan/customerorder' import DocumentTable from '@/views/common/document.vue' import { remote } from '@/api/admin/dict' @@ -321,6 +312,10 @@ export default { data() { return { + interrelatedOrderId: null, + interrelatedOrderData: [], + showInterrelatedOrderDialog: false, + uniqueStateArr: [], dataForm: { selectTime: null, exportTime: null @@ -435,7 +430,7 @@ isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 - defaultOrderBy: { column: 'createTime', direction: 'desc' }, + defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' }, cancelRunCreated: true }, table: { @@ -474,7 +469,7 @@ searchInfoType: 'text' }, { - minWidth: '120', + minWidth: '100', prop: 'sourceId', label: '娣诲姞鏉ユ簮', isTag: true, @@ -532,7 +527,7 @@ { minWidth: '120', prop: 'isAudit', - label: '瀹℃牳鐘舵��', + label: 'PLM瀹℃牳鐘舵��', sort: true, isTrue: true, isSearch: true, @@ -542,15 +537,19 @@ return this.isAuditList } }, - // { - // minWidth: '80', - // prop: 'sourceId', - // label: '璁㈠崟鏉ユ簮', - // sort: true, - // isTrue: true, - // isSearch: true, - // searchInfoType: 'text' - // }, + { + minWidth: '120', + prop: 'isPass', + label: '瀹℃牳閫氳繃鐘舵��', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'select', + formatter: this.checkIsPass, + optList: () => { + return this.isPassList + } + }, { minWidth: '120', width: '100px', @@ -690,6 +689,25 @@ // fun: this.packageExportHandle // }, { + text: '瀹℃牳', + type: 'text', + size: 'small', + fun: this.checkHandOrder, + showFun: (row)=>{return row.sourceId==='1'}, + show: { + val: [ + false, + ], + key: 'isPass' + } + }, + { + text: '宸插叧鑱旇鍗�', + type: 'text', + size: 'small', + fun: this.showInterrelatedOrder, + }, + { text: '鍒犻櫎', type: 'text', size: 'small', @@ -708,8 +726,8 @@ operatorConfig: { fixed: 'right', label: '鎿嶄綔', - width: 100, - minWidth: 100 + width: 200, + minWidth: 200 } }, addOrUpdateVisible: false, @@ -769,10 +787,10 @@ ], sourceIdList: [{ label: '鍚屾', - value: '0' + value: "0" },{ label: '鎵嬪姩', - value: '1' + value: "1" }], stockVisible: false, partName: null, @@ -815,7 +833,8 @@ } ], showSalesPartBatch: false, - addOrUpdateEescVisible: false + addOrUpdateEescVisible: false, + isPassList: [{label:'鏈�氳繃',value: false},{label: '閫氳繃',value: true}] } }, components: { @@ -847,6 +866,17 @@ } }, immediate: true + }, + interrelatedOrderId(newVal){ + if(newVal){ + getInterrelatedOrder(newVal).then(res=>{ + if(res.status===200){ + this.interrelatedOrderData = res.data.data + } + }).catch(error=>{ + console.error(error) + }) + } } }, mounted() { @@ -855,36 +885,6 @@ created() { // this.getManufactureAttrs() this.getTitles() - /** - * { - text: '鑾峰彇閿�鍞鍗�', - type: 'primary', - fun: this.pullCustomerOrder, - disabled: false, - permitArr: [] - }, - { - text: '鑾峰彇IFS琛屽彿', - type: 'primary', - fun: this.pullIfsLineNo, - disabled: false, - permitArr: [], - loading: false - }, - { - text: '鎻愪氦瀹℃牳', - type: 'primary', - fun: this.auditCustomerOrder, - disabled: false, - permitArr: [], - loading: false - }, - { - text: '涓荤敓浜ц鍒�', - disabled: false, - fun: this.masterPlanHandle - } - */ this.table.toolbar.push({ text: '鏂板閿�鍞鍗�', type: 'primary', @@ -892,14 +892,6 @@ disabled: false, permitArr: [] }) - // this.table.toolbar.push({ - // text: '鍚屾ERP', - // type: 'primary', - // fun: this.syncERP, - // loading: false, - // disabled: false, - // permitArr: [] - // }) if (this.permissions.customerorder_from_otc) { this.table.toolbar.push({ text: '鑾峰彇閿�鍞鍗�', @@ -909,16 +901,6 @@ permitArr: [] }) } - // if (this.permissions.customerorder_ifs_line) { - // this.table.toolbar.push({ - // text: '鑾峰彇ERP琛屽彿', - // type: 'primary', - // fun: this.pullIfsLineNo, - // disabled: false, - // permitArr: [], - // loading: false - // }) - // } if (this.permissions.customerorder_submit_oa) { this.table.toolbar.push({ text: '鎻愪氦瀹℃牳', @@ -934,18 +916,131 @@ text: '璁剧疆閿�鍞欢', type: 'primary', fun: this.setSalesPart, - disabled: false + disabled: false, + permitArr: [] }) } + this.table.toolbar.push({ + text: '涓嬭浇宸ヨ壓鏂囦欢', + disabled: false, + type: 'primary', + fun: this.downloadWord, + permitArr: ['03plan','04planed'], + }) + this.table.toolbar.push({ + text: '涓嬭浇鎺掍骇鍗�', + disabled: false, + type: 'primary', + permitArr: [], + fun: this.downloadProductionScheduling, + }) + this.table.toolbar.push({ + text: '鍏宠仈璁㈠崟', + disabled: false, + type: 'primary', + fun: this.interrelatedOrderFun, + permitArr: [], + }) if (this.permissions.customerorder_create_masterplan) { this.table.toolbar.push({ text: '涓荤敓浜ц鍒�', disabled: false, - fun: this.masterPlanHandle + fun: this.masterPlanHandle, + permitArr: [] }) } }, methods: { + checkHandOrder(val){ + this.$confirm('纭瀹℃牳閫氳繃璇ラ攢鍞鍗曞悧?', '鎻愮ず', { + confirmButtonText: '閫氳繃', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + checkHanderOrder(val).then(res=>{ + if(res.status===200){ + this.$message.success("瀹℃牳閫氳繃") + this.getData() + } + }).catch(error=>{ + console.error(error) + }) + }).catch(() => {}); + }, + interrelatedOrderFun(){ + if(this.multipleSelection.length!=2){ + this.$message.error("璇烽�夋嫨涓ゆ潯閿�鍞鍗�") + return + } + let autoId = null + let handId = null + this.multipleSelection.forEach(ele=>{ + if(ele.sourceId==0){ + autoId = ele.id + }else if(ele.sourceId==1){ + handId = ele.id + } + }) + if(autoId==null || handId==null){ + this.$message.error("娣诲姞鏉ユ簮椤讳负鎵嬪姩鍜屽悓姝�") + return + } + interrelatedOrder({ + customerOrderAutoId: autoId, + customerOrderHandId: handId + }).then(res=>{ + if(res.status===200){ + this.$message.success("鍏宠仈鎴愬姛") + } + }).catch(error=>{ + console.error(error) + }) + }, + //灞曠ず宸插叧鑱旇鍗� + showInterrelatedOrder(currentOrder){ + this.interrelatedOrderId = currentOrder.id + this.showInterrelatedOrderDialog = true + }, + //涓嬭浇鎺掍骇閫氱煡鍗� + downloadProductionScheduling(){ + let ids = this.multipleSelection.map(obj => obj.id) + if(ids.length<1){ + this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�") + return + } + downloadProduct({ids: ids}).then(res=>{ + if(res.status===200){ + transform(res) + } + }).catch(error=>{ + console.error(error) + }) + }, + //涓嬭浇宸ヨ壓鏂囦欢 + downloadWord(){ + let ids = this.multipleSelection.map(ele=>ele.id) + if(ids.length<1){ + this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�") + return + } + downloadWordFile(ids).then(response=>{ + // 澶勭悊杩斿洖鐨勬枃浠舵祦 + const blob = response.data + const link = document.createElement('a') + link.href = URL.createObjectURL(blob) + const disposition = response.headers["content-disposition"] + let temp = disposition.substring(disposition.lastIndexOf('=') + 1) + link.download = decodeURI(temp) + document.body.appendChild(link) + link.click() + window.setTimeout(function() { + URL.revokeObjectURL(blob) + document.body.removeChild(link) + }, 0) + }).catch(error=>{ + console.error(error); + }) + }, getOtcPartSyncOptionList() { return this.otcPartSyncOptionList }, @@ -975,8 +1070,6 @@ }, // 鍒涘缓涓荤敓浜ц鍒� masterPlanHandle() { - console.log(this.multipleSelection); - if (this.multipleSelection && this.multipleSelection.length > 0) { if (this.judgeCoState(this.multipleSelection)) { // 鍒ゆ柇涓�涓嬪墿浣欐暟閲忔槸鍚﹀ぇ浜�0 @@ -1012,6 +1105,18 @@ this.$message.error('璇烽�夋嫨閿�鍞鍗�') } }, + checkIsPass(row, column, cellValue){ + this.isPassList.forEach((obj) => { + if (obj.value === cellValue) { + if(obj.value){ + cellValue = "<span style='color:#34BD66;'>"+obj.label+"</span>" + }else{ + cellValue = "<span style='color:#E84738;'>"+obj.label+"</span>" + } + } + }) + return cellValue + }, formatDutyDate(row, column, cellValue) { if (cellValue) { const dutyDateList = /\d{4}-\d{1,2}-\d{1,2}/g.exec(cellValue) @@ -1023,16 +1128,23 @@ }, // 鏂板 / 淇敼 addOrUpdateHandle(row) { - this.addOrUpdateVisible = true - this.$nextTick(() => { - this.$refs.addOrUpdate.init(row ? row.id : row) - }) + if(row.isPass){ + this.addOrUpdateVisible = true + this.$nextTick(() => { + this.$refs.addOrUpdate.init(row ? row.id : row) + }) + }else{ + this.addSampleVisible = true + this.$nextTick(() => { + this.$refs.addSampleForm.init(row ? row.contractNo : null) + }) + } }, // 鏂板鏍峰搧璁㈠崟 addSampleCustomerOrder() { this.addSampleVisible = true this.$nextTick(() => { - this.$refs.addSampleForm.init(0) + this.$refs.addSampleForm.init(null) }) }, // 鎵撳紑鏃ユ湡閫夋嫨妗� @@ -1100,8 +1212,8 @@ } }) if (flag) { - checkOA(this.multipleSelection.map((e) => e.id)).then((res) => { - console.log(res) + + checkOA(this.multipleSelection.map((e) => e.id),{}).then((res) => { if (!res.data.data.success) { this.$confirm(`${res.data.data.message}`, '鎻愮ず', { confirmButtonText: '纭畾', @@ -1150,7 +1262,6 @@ // 绠辩爜淇℃伅瀵煎嚭 packageExportHandle(row) { - console.log(row.otcQuantity) if (row.otcQuantity) { this.packageExport.visible = true this.packageExport.form = { @@ -1264,6 +1375,21 @@ this.stateTagArr[i].disabled = false } else { this.stateTagArr[i].disabled = true + } + } + // 寰幆琛ㄥご鎸夐挳锛屽垽鏂瘡涓寜閽殑permitArr鏄惁瀹屽叏鍖呭惈閫変腑鐘舵�侊紝鑻ュ畬鍏ㄥ寘鍚紝鍒欐寜閽寒锛屽惁鍒欐寜閽伆 + var toolbar = this.table.toolbar + for (var j = 0; j < toolbar.length; j++) { + if ( + uniqueStateArr.every((val) => + toolbar[j].permitArr.length <= 0 + ? true + : toolbar[j].permitArr.includes(val) + ) + ) { + toolbar[j].disabled = false + } else { + toolbar[j].disabled = true } } this.multipleSelection = val @@ -1441,6 +1567,10 @@ } else { if (this.judgeCoState(this.multipleSelection)) { if (event == 'RELEVANCE') { + if(!this.multipleSelection[0].isPass){ + this.$message.error("璇峰厛瀹℃牳閫氳繃锛屽啀鍏宠仈宸ヨ壓鏂囦欢") + return + } const firstPartNo = this.multipleSelection[0].partNo this.multipleSelection.forEach((item) => { if (item.isDocument) { @@ -1579,7 +1709,6 @@ }, // 瀵煎嚭鍙拌处 exportStandBook() { - // console.log(this.$refs.customerOrderTable.getQueryParam(),"SSS") // if (this.multipleSelection.length > 0) { // let ids = '' // this.multipleSelection.forEach((item) => { -- Gitblit v1.9.3