From 363678a54142e62fdd4ca39a0db5c54af1a704dc Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期四, 29 二月 2024 15:39:59 +0800 Subject: [PATCH] 生产调度修改 --- src/views/plan/customerorder/index.vue | 354 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 231 insertions(+), 123 deletions(-) diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue index 03bd22c..1e5ebda 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" @@ -38,8 +23,9 @@ </el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item + :key="index" :command="item.command" - v-for="item in documentTagArr" + v-for="(item,index) in documentTagArr" :disabled="item.disabled"> {{ item.label }} </el-dropdown-item> @@ -56,42 +42,21 @@ </el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item + :key="index" :command="item.command" - v-for="item in commitStateTagArr" + v-for="(item,index) in commitStateTagArr" :disabled="item.disabled" >{{ item.label }}</el-dropdown-item > </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> - <!-- 寮圭獥, 鏃ユ湡閫夋嫨 --> <ConfirmPullCustomerorder v-if="showPullCustomerOrderVisible" @@ -277,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' @@ -308,7 +298,8 @@ exportCustomerOrder, exportCustomerOrderSplit, syncOrder, - dropByContractNo + dropByContractNo, + downloadWordFile } from '../../../api/plan/customerorder' import DocumentTable from '@/views/common/document.vue' import { remote } from '@/api/admin/dict' @@ -320,6 +311,10 @@ export default { data() { return { + interrelatedOrderId: null, + interrelatedOrderData: [], + showInterrelatedOrderDialog: false, + uniqueStateArr: [], dataForm: { selectTime: null, exportTime: null @@ -434,7 +429,7 @@ isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 - defaultOrderBy: { column: 'createTime', direction: 'desc' }, + defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' }, cancelRunCreated: true }, table: { @@ -473,7 +468,7 @@ searchInfoType: 'text' }, { - minWidth: '120', + minWidth: '100', prop: 'sourceId', label: '娣诲姞鏉ユ簮', isTag: true, @@ -531,7 +526,7 @@ { minWidth: '120', prop: 'isAudit', - label: '瀹℃牳鐘舵��', + label: 'PLM瀹℃牳鐘舵��', sort: true, isTrue: true, isSearch: true, @@ -541,15 +536,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', @@ -689,7 +688,26 @@ // fun: this.packageExportHandle // }, { - text: '浣滃簾', + 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', fun: this.cancelHandle, @@ -707,8 +725,8 @@ operatorConfig: { fixed: 'right', label: '鎿嶄綔', - width: 100, - minWidth: 100 + width: 200, + minWidth: 200 } }, addOrUpdateVisible: false, @@ -768,10 +786,10 @@ ], sourceIdList: [{ label: '鍚屾', - value: '0' + value: "0" },{ label: '鎵嬪姩', - value: '1' + value: "1" }], stockVisible: false, partName: null, @@ -814,7 +832,8 @@ } ], showSalesPartBatch: false, - addOrUpdateEescVisible: false + addOrUpdateEescVisible: false, + isPassList: [{label:'鏈�氳繃',value: false},{label: '閫氳繃',value: true}] } }, components: { @@ -846,6 +865,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() { @@ -854,36 +884,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', @@ -891,14 +891,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: '鑾峰彇閿�鍞鍗�', @@ -908,16 +900,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: '鎻愪氦瀹℃牳', @@ -933,18 +915,110 @@ text: '璁剧疆閿�鍞欢', type: 'primary', fun: this.setSalesPart, - disabled: false + disabled: false, + permitArr: [] }) } + this.table.toolbar.push({ + text: '涓嬭浇Word', + disabled: false, + type: 'primary', + fun: this.downloadWord, + permitArr: ['03plan','04planed'], + }) + 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 + }, + + //涓嬭浇word + 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 }, @@ -974,8 +1048,6 @@ }, // 鍒涘缓涓荤敓浜ц鍒� masterPlanHandle() { - console.log(this.multipleSelection); - if (this.multipleSelection && this.multipleSelection.length > 0) { if (this.judgeCoState(this.multipleSelection)) { // 鍒ゆ柇涓�涓嬪墿浣欐暟閲忔槸鍚﹀ぇ浜�0 @@ -1011,6 +1083,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) @@ -1022,16 +1106,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) }) }, // 鎵撳紑鏃ユ湡閫夋嫨妗� @@ -1099,8 +1190,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: '纭畾', @@ -1149,7 +1240,6 @@ // 绠辩爜淇℃伅瀵煎嚭 packageExportHandle(row) { - console.log(row.otcQuantity) if (row.otcQuantity) { this.packageExport.visible = true this.packageExport.form = { @@ -1186,13 +1276,13 @@ }, // 浣滃簾 cancelHandle(row) { - this.$confirm('鏄惁纭浣滃簾閿�鍞鍗曞彿涓�' + row.customerOrderNo + '鎻愮ず', { + this.$confirm('纭浣滃簾id涓恒��' + row.id + '銆戠殑鏁版嵁?','鎻愮ず' , { confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', closeOnClickModal: false, type: 'warning' }).then(() => { - dropByContractNo(row.customerOrderNo).then((res) => { + dropByContractNo({id:row.id}).then((res) => { if (res.data.code === 0) { this.$message.success('浣滃簾鎴愬姛') this.getData() @@ -1263,6 +1353,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 @@ -1440,6 +1545,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) { @@ -1578,7 +1687,6 @@ }, // 瀵煎嚭鍙拌处 exportStandBook() { - // console.log(this.$refs.customerOrderTable.getQueryParam(),"SSS") // if (this.multipleSelection.length > 0) { // let ids = '' // this.multipleSelection.forEach((item) => { -- Gitblit v1.9.3