From c5dcef375b689fd96175302fb7bf83641d1f57a8 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期一, 27 五月 2024 11:16:41 +0800 Subject: [PATCH] 核算统计增加工序字段 --- src/views/plan/customerorder/index.vue | 855 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 583 insertions(+), 272 deletions(-) diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue index 239db79..87bf7f7 100644 --- a/src/views/plan/customerorder/index.vue +++ b/src/views/plan/customerorder/index.vue @@ -8,39 +8,26 @@ :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" style="margin-left: 10px" > - <el-button> + <el-button style="padding: 9px 14px;"> 宸ヨ壓鏂囦欢<i class="el-icon-arrow-down el-icon--right"></i> </el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item + :key="index" :command="item.command" - v-for="item in documentTagArr" - :disabled="item.disabled"> + v-for="(item, index) in documentTagArr" + :disabled="item.disabled" + > {{ item.label }} </el-dropdown-item> </el-dropdown-menu> @@ -51,47 +38,40 @@ @command="handleCommitCommand" style="margin-left: 10px" > - <el-button> + <el-button style="padding: 9px 14px;"> 瀹℃牳鐘舵�佹敼鍙�<i class="el-icon-arrow-down el-icon--right"></i> </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;" + style="margin-left: 10px;padding: 9px 14px;" type="primary" - @click="()=>exportDialogVisible=true" + @click="() => (exportDialogVisible = true)" >瀵煎嚭鍙拌处</el-button > <el-button - v-if="permissions.plan_customerorder_return" - style="margin-left:10px;" + style="margin-left: 10px;padding: 9px 14px;" type="primary" - @click="returnOrder" - >璁㈠崟閫�鍥�</el-button + v-if="permissions.plan_customerorder_check" + @click="handleCheck" + >瀹℃牳</el-button > + <!-- <el-button + style="margin-left: 10px" + type="primary" + @click="() => ($refs.technology.init())" + >缂栧啓鎶�鏈氦搴曞崟</el-button + > --> </template> </ttable> - <!-- 寮圭獥, 鏃ユ湡閫夋嫨 --> <ConfirmPullCustomerorder v-if="showPullCustomerOrderVisible" @@ -155,7 +135,7 @@ <div> <div> <el-upload - style="margin-left:8px;display: inline;" + style="margin-left: 8px; display: inline" class="upload-demo" drag :headers="headers" @@ -176,7 +156,7 @@ <div class="el-upload__tip" slot="tip"> 鍙兘涓婁紶xlsx/xls鏂囦欢锛屼笖涓嶈秴杩�10M<el-button type="text" - style="font-size:12px;" + style="font-size: 12px" @click="downDataTemplate" >涓嬭浇妯℃澘</el-button > @@ -189,25 +169,36 @@ <span slot="footer" class="dialog-footer"> </span> </el-dialog> <!-- 瀵煎嚭 --> - <el-dialog title="瀵煎嚭鍙拌处" :visible.sync="exportDialogVisible" width="20%"> - <div style="display: flex;justify-content: center"> - <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="exportForm" class="l-mes"> + <el-dialog + title="瀵煎嚭鍙拌处" + :visible.sync="exportDialogVisible" + width="20%" + > + <div style="display: flex; justify-content: center"> + <el-form + :model="dataForm" + :inline="true" + :rules="dataRule" + ref="exportForm" + class="l-mes" + > <el-form-item label="鏃ユ湡" prop="exportTime"> <el-date-picker v-model="dataForm.exportTime" type="datetime" - style="width:100%" + style="width: 100%" placeholder="閫夋嫨鏃ユ湡鏃堕棿" - value-format="yyyy-MM-dd HH:mm:ss"> + value-format="yyyy-MM-dd HH:mm:ss" + > </el-date-picker> </el-form-item> </el-form> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="exportDialogVisible=false">鍙� 娑�</el-button> - <el-button type="primary" @click="exportStandBook">纭� 瀹�</el-button> - </span> - </el-dialog> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="exportDialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="exportStandBook">纭� 瀹�</el-button> + </span> + </el-dialog> <!-- 绠辩爜淇℃伅瀵煎嚭 --> <el-dialog title="绠辩爜淇℃伅瀵煎嚭" @@ -220,7 +211,7 @@ ref="packageExportForm" label-width="70px" class="l-mes" - style="padding:0 20px" + style="padding: 0 20px" > <el-form-item label="璁㈠崟鍙�"> <el-input v-model="packageExport.form.customerOrderNo" disabled /> @@ -260,14 +251,21 @@ </basic-container> <el-dialog title="閫夋嫨鍚屾鏃ユ湡" :visible.sync="syncDateVisible" width="20%"> - <div style="display: flex;justify-content: center"> - <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="dataForm" class="l-mes"> + <div style="display: flex; justify-content: center"> + <el-form + :model="dataForm" + :inline="true" + :rules="dataRule" + ref="dataForm" + class="l-mes" + > <el-form-item label="鏃ユ湡"> <el-date-picker v-model="dataForm.selectTime" type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿" - value-format="yyyy-MM-dd HH:mm:ss"> + value-format="yyyy-MM-dd HH:mm:ss" + > </el-date-picker> </el-form-item> </el-form> @@ -277,12 +275,104 @@ <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> + <technology-form ref="technology"></technology-form> </div> </template> <script> +import { + interrelatedOrder, + getInterrelatedOrder, + checkHanderOrder, +} from '@/api/plan/customerOrderInterrelated' import ConfirmPullCustomerorder from './confirm-pull-customerorder' import TableForm from './customerorder-form' +import TechnologyForm from './technology-form.vue' import TableFormDEesc from './customerorder-form-desc' import SampleTableForm from './sample-customerorder-form' import { mapGetters } from 'vuex' @@ -308,7 +398,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' @@ -320,12 +412,19 @@ export default { data() { return { + interrelatedOrderId: null, + interrelatedOrderData: [], + showInterrelatedOrderDialog: false, + technologyDialog:true, + uniqueStateArr: [], dataForm: { selectTime: null, - exportTime: null + exportTime: null, }, dataRule: { - exportTime:[{required:true,message:'瀵煎嚭鏃ユ湡涓嶈兘涓虹┖',trigger:'change'}] + exportTime: [ + { required: true, message: '瀵煎嚭鏃ユ湡涓嶈兘涓虹┖', trigger: 'change' }, + ], }, pickerOptions: { onPick: ({ maxDate, minDate }) => { @@ -343,7 +442,7 @@ ) } return false - } + }, }, exportDialogVisible: false, syncDateVisible: false, @@ -356,58 +455,58 @@ label: '鏍囪闆朵欢寰呴��', command: '01partUnCheck', disabled: false, - permitArr: [] + permitArr: [], }, { label: '鏍囪宸ヨ壓鏂囦欢寰呴��', command: '02technologyUnCheck', disabled: false, - permitArr: [] + permitArr: [], }, { label: '鏍囪寰呰鍒�', command: '03plan', disabled: false, - permitArr: [] + permitArr: [], }, { label: '鏍囪宸蹭笅鍙�', command: '04planed', disabled: false, - permitArr: [] + permitArr: [], }, { label: '鏍囪宸蹭綔搴�', command: '05cancel', disabled: false, - permitArr: [] - } + permitArr: [], + }, ], documentTagArr: [ { label: '鍏宠仈宸ヨ壓鏂囦欢', command: 'RELEVANCE', - disabled: false + disabled: false, }, { label: '绉婚櫎宸ヨ壓鏂囦欢', command: 'NORELEVANCE', - disabled: false - } + disabled: false, + }, ], commitStateTagArr: [ { label: '鏍囪閫氳繃', command: 'PROCESSED', disabled: false, - permitArr: ['01draft'] + permitArr: ['01draft'], }, { label: '鏍囪鍙栨秷', command: 'CANCELED', disabled: false, - permitArr: ['01draft'] - } + permitArr: ['01draft'], + }, ], ajaxFun: fetchListCustomerOrder, events: '', @@ -419,7 +518,7 @@ uploadInfo: { // 鏄惁灞曠ず涓婁紶EXCEL浠ュ強瀵瑰簲鐨剈rl isShow: false, - url: '' + url: '', }, prelang: 'operation', options: { @@ -434,8 +533,9 @@ isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 - defaultOrderBy: { column: 'createTime', direction: 'desc' }, - cancelRunCreated: true + defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' }, + cancelRunCreated: true, + reserveSelection: true,//鏄惁淇濈暀涔嬪墠閫夋嫨鐨勬暟鎹� }, table: { total: 0, @@ -453,7 +553,7 @@ isTrue: true, isSearch: true, searchInfoType: 'text', - render: { fun: this.addOrUpdateHandle } + render: { fun: this.addOrUpdateHandle }, }, { minWidth: '120', @@ -461,7 +561,7 @@ label: '宸ョ▼鍚嶇О', isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '120', @@ -470,10 +570,10 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { - minWidth: '120', + minWidth: '100', prop: 'sourceId', label: '娣诲姞鏉ユ簮', isTag: true, @@ -483,7 +583,7 @@ formatter: this.getSourceId, optList: () => { return this.sourceIdList - } + }, }, { minWidth: '200', @@ -494,7 +594,7 @@ isTrue: true, isSearch: true, searchInfoType: 'datetimerange', - formatter: this.formatDutyDate + formatter: this.formatDutyDate, }, { minWidth: '120', @@ -503,8 +603,8 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text', - formatter: this.formatDutyDate + searchInfoType: 'datetimerange', + formatter: this.formatDutyDate, }, { minWidth: '120', @@ -513,7 +613,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '120', @@ -526,12 +626,12 @@ formatter: this.getCustomerCoState, optList: () => { return this.coStateList - } + }, }, { minWidth: '120', prop: 'isAudit', - label: '瀹℃牳鐘舵��', + label: 'PLM瀹℃牳鐘舵��', sort: true, isTrue: true, isSearch: true, @@ -539,17 +639,34 @@ formatter: this.getIsAudit, optList: () => { 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', + prop: 'isOa', + label: '鏄惁鎻愪氦oa', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'select', + formatter: this.checkIsOa, + optList: () => { + return this.isOaList + }, + }, { minWidth: '120', width: '100px', @@ -558,7 +675,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '120', @@ -568,7 +685,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '120', @@ -577,7 +694,7 @@ label: '闅跺睘鍝佺墝', isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '120', @@ -586,7 +703,7 @@ label: '鍗曚綅', isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '120', @@ -596,7 +713,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '120', @@ -605,7 +722,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '140', @@ -618,7 +735,7 @@ formatter: this.getManufactureAttr, optList: () => { return this.manufactureAttrList - } + }, }, { minWidth: '140', @@ -627,7 +744,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '140', @@ -636,7 +753,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '140', @@ -645,7 +762,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '140', @@ -654,7 +771,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text' + searchInfoType: 'text', }, { minWidth: '140', @@ -665,7 +782,7 @@ isTrue: true, isSearch: true, searchInfoType: 'datetimerange', - formatter: this.formatDutyDate + formatter: this.formatDutyDate, }, ], toolbar: [], @@ -688,8 +805,27 @@ // size: 'small', // fun: this.packageExportHandle // }, + // { + // text: '瀹℃牳', + // type: 'text', + // size: 'small', + // fun: this.checkHandOrder, + // showFun: (row) => { + // return row.sourceId === '1' + // }, + // show: { + // val: [false], + // key: 'isPass', + // }, + // }, { - text: '浣滃簾', + text: '宸插叧鑱旇鍗�', + type: 'text', + size: 'small', + fun: this.showInterrelatedOrder, + }, + { + text: '鍒犻櫎', type: 'text', size: 'small', fun: this.cancelHandle, @@ -697,82 +833,89 @@ val: [ '01partUnCheck', '02technologyUnCheck', - '03plan' + '03plan', // '04planed' ], - key: 'coState' - } - } + key: 'coState', + }, + }, ], operatorConfig: { fixed: 'right', label: '鎿嶄綔', - width: 100, - minWidth: 100 - } + width: 200, + minWidth: 200, + }, }, addOrUpdateVisible: false, coStateList: [ { value: '01partUnCheck', - label: '闆朵欢寰呴��' + label: '闆朵欢寰呴��', }, { value: '02technologyUnCheck', - label: '宸ヨ壓鏂囦欢寰呴��' + label: '宸ヨ壓鏂囦欢寰呴��', }, { value: '03plan', - label: '寰呰鍒�' + label: '寰呰鍒�', }, { value: '04planed', - label: '宸蹭笅鍙�' + label: '宸蹭笅鍙�', }, { value: '05cancel', - label: '宸蹭綔搴�' + label: '宸蹭綔搴�', }, { value: '06unedit', - label: '璁㈠崟缂栬緫' - } + label: '璁㈠崟缂栬緫', + }, ], - manufactureAttrList: [{ - label: '鏅��', - value: 'N' - },{ - label: '鏍峰搧', - value: 'S' - },{ - label: '鐮斿彂', - value: 'D' - }], + manufactureAttrList: [ + { + label: '鏅��', + value: 'N', + }, + { + label: '鏍峰搧', + value: 'S', + }, + { + label: '鐮斿彂', + value: 'D', + }, + ], isAuditList: [ { value: '01draft', - label: '鑽夌' + label: '鑽夌', }, { value: '02pending', - label: '瀹℃牳涓�' + label: '瀹℃牳涓�', }, { value: '03accepted', - label: '閫氳繃' + label: '閫氳繃', }, { value: '04reject', - label: '閫�鍥�' - } + label: '閫�鍥�', + }, ], - sourceIdList: [{ - label: '鍚屾', - value: '0' - },{ - label: '鎵嬪姩', - value: '1' - }], + sourceIdList: [ + { + label: '鍚屾', + value: '0', + }, + { + label: '鎵嬪姩', + value: '1', + }, + ], stockVisible: false, partName: null, showPullCustomerOrderVisible: false, @@ -784,20 +927,20 @@ id: '', customerOrderNo: '', splitQuantity: '', - title: '' + title: '', }, rules: { splitQuantity: [ { required: true, message: '鏁伴噺涓嶈兘涓虹┖', trigger: 'blur' }, - { validator: validateSixDecimal, trigger: 'blur' } + { validator: validateSixDecimal, trigger: 'blur' }, ], - title: [{ required: true, message: '鎶ご涓嶈兘涓虹┖', trigger: 'blur' }] + title: [{ required: true, message: '鎶ご涓嶈兘涓虹┖', trigger: 'blur' }], }, titleList: [], - buttonDisable: false + buttonDisable: false, }, headers: { - Authorization: 'Bearer ' + getStore({ name: 'access_token' }) + Authorization: 'Bearer ' + getStore({ name: 'access_token' }), }, fileList: [], outBatchUploadUrl: '/mes/operationTaskProduce/upload', @@ -806,15 +949,23 @@ otcPartSyncOptionList: [ { value: true, - label: '宸插悓姝�' + label: '宸插悓姝�', }, { value: false, - label: '鏈悓姝�' - } + label: '鏈悓姝�', + }, ], showSalesPartBatch: false, - addOrUpdateEescVisible: false + addOrUpdateEescVisible: false, + isPassList: [ + { label: '鏈�氳繃', value: false }, + { label: '閫氳繃', value: true }, + ], + isOaList: [ + { label: '鏈彁浜�', value: false }, + { label: '宸叉彁浜�', value: true }, + ], } }, components: { @@ -828,10 +979,11 @@ SampleTableForm, SalesPartBatchDialog, TableFormDEesc, - CustomerorderReturnDialog + CustomerorderReturnDialog, + TechnologyForm, }, computed: { - ...mapGetters(['permissions']) + ...mapGetters(['permissions']), }, watch: { exportDialogVisible(newVal) { @@ -845,8 +997,21 @@ this.getData() } }, - immediate: true - } + 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() { this.initQueryParams() @@ -854,78 +1019,32 @@ 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 - } - */ + if (this.permissions.plan_customerorder_add) { this.table.toolbar.push({ text: '鏂板閿�鍞鍗�', type: 'primary', fun: this.addSampleCustomerOrder, disabled: false, - permitArr: [] + 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: '鑾峰彇閿�鍞鍗�', type: 'primary', fun: this.syncERP, disabled: false, - permitArr: [] + 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: '鎻愪氦瀹℃牳', + text: '鎻愪氦OA', type: 'primary', fun: this.auditCustomerOrder, disabled: false, permitArr: [], - loading: false + loading: false, }) } if (this.permissions.customerorder_set_salesparts) { @@ -933,18 +1052,144 @@ text: '璁剧疆閿�鍞欢', type: 'primary', fun: this.setSalesPart, - disabled: false + disabled: false, + permitArr: [], }) + } + if(this.permissions.plan_download_process_file){ + this.table.toolbar.push({ + text: '涓嬭浇宸ヨ壓鏂囦欢', + disabled: false, + type: 'primary', + fun: this.downloadWord, + permitArr: ['03plan','04planed'], + }) + } + if(this.permissions.plan_download_product_file){ + this.table.toolbar.push({ + text: '涓嬭浇鎺掍骇鍗�', + disabled: false, + type: 'primary', + permitArr: [], + fun: this.downloadProductionScheduling, + }) + } + if(this.permissions.plan_relevance_order){ + 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).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 }, @@ -953,7 +1198,7 @@ queryParam.push( Object.assign({ prop: 'coState', - searchInfoType: 'select' + searchInfoType: 'select', // propVal: '01partUnCheck' // propVal: '02technologyUnCheck' }) @@ -962,8 +1207,9 @@ this.getData() }, - getData() { - this.$refs.customerOrderTable.getDataList() + async getData() { + await this.$refs.customerOrderTable.getDataList() + this.$refs.customerOrderTable.toggleRowExpansion() }, // 鑾峰彇鏁版嵁鍒楄〃鍘婚櫎宸插畬鎴愮姸鎬佺殑 handleDataList(command) { @@ -974,7 +1220,6 @@ }, // 鍒涘缓涓荤敓浜ц鍒� masterPlanHandle() { - console.log(this.multipleSelection); if (this.multipleSelection && this.multipleSelection.length > 0) { if (this.judgeCoState(this.multipleSelection)) { // 鍒ゆ柇涓�涓嬪墿浣欐暟閲忔槸鍚﹀ぇ浜�0 @@ -1010,6 +1255,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) @@ -1021,16 +1278,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) }) }, // 鎵撳紑鏃ユ湡閫夋嫨妗� @@ -1087,46 +1351,34 @@ // 瀹℃牳閿�鍞鍗� auditCustomerOrder() { if (this.multipleSelection.length > 0) { - if (this.judgeCoState(this.multipleSelection)) { - let flag = true - const ids = [] - this.multipleSelection.forEach((item) => { - if (item.salesPartNo != null && item.salesPartNo !== '') { - ids.push(item.id) - } else { - flag = false - } - }) - if (flag) { - checkOA(this.multipleSelection.map((e) => e.id)).then((res) => { - console.log(res) - if (!res.data.data.success) { - this.$confirm(`${res.data.data.message}`, '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - closeOnClickModal: false, - type: 'warning' - }).then(() => { - this.auditCustomerOrderSure(ids) - }) - } else { - this.auditCustomerOrderSure(ids) - } - }) + let flag = true + const ids = [] + this.multipleSelection.forEach((item) => { + if (item.partNo != null && item.partNo !== '') { + ids.push(item.id) } else { - this.$message.error('瀛樺湪閿�鍞鍗曟湭缁戝畾閿�鍞欢锛�') + flag = false } + }) + if (flag) { + checkOA( + this.multipleSelection.map((e) => e.id) + ).then((res) => { + if (res.data.data.success) { + this.auditCustomerOrderSure(ids) + } + }).catch(error=>{ + this.$message.error(error.message) + }) } else { - this.$message.error('閿�鍞鍗曞鏍哥姸鎬佷负浣滃簾锛屼笉鍙繘琛屾搷浣滐紒') + this.$message.error('瀛樺湪閿�鍞鍗曟湭缁戝畾闆朵欢鍙凤紒') } } else { this.$message.error('璇峰厛鍕鹃�夐攢鍞鍗曪紒') } }, auditCustomerOrderSure(ids) { - const toolbar = this.table.toolbar.find( - (item) => item.text === '鎻愪氦瀹℃牳' - ) + const toolbar = this.table.toolbar.find((item) => item.text === '鎻愪氦OA') if (toolbar) { toolbar.loading = true auditCustomerOrder(ids) @@ -1136,7 +1388,7 @@ this.$message.success(resData.msg) this.getData() } else { - this.$message.error('鎻愪氦瀹℃牳澶辫触锛�') + this.$message.error('鎻愪氦OA澶辫触锛�') } toolbar.loading = false }) @@ -1148,14 +1400,13 @@ // 绠辩爜淇℃伅瀵煎嚭 packageExportHandle(row) { - console.log(row.otcQuantity) if (row.otcQuantity) { this.packageExport.visible = true this.packageExport.form = { id: row.id, customerOrderNo: row.customerOrderNo, splitQuantity: '', - title: '' + title: '', } this.$nextTick(() => { this.$refs.packageExportForm.resetFields() @@ -1171,7 +1422,7 @@ exportCustomerOrderSplit({ id: this.packageExport.form.id, splitQuantity: this.packageExport.form.splitQuantity, - title: this.packageExport.form.title + title: this.packageExport.form.title, }) .then((response) => { transform(response) @@ -1185,13 +1436,13 @@ }, // 浣滃簾 cancelHandle(row) { - this.$confirm('鏄惁纭浣滃簾閿�鍞鍗曞彿涓�' + row.customerOrderNo + '鎻愮ず', { + this.$confirm('纭浣滃簾id涓恒��' + row.id + '銆戠殑鏁版嵁?', '鎻愮ず', { confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', closeOnClickModal: false, - type: 'warning' + type: 'warning', }).then(() => { - dropByContractNo(row.customerOrderNo).then((res) => { + dropByContractNo({ id: row.id }).then((res) => { if (res.data.code === 0) { this.$message.success('浣滃簾鎴愬姛') this.getData() @@ -1226,7 +1477,7 @@ confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', closeOnClickModal: false, - type: 'warning' + type: 'warning', }) .then(() => { return delCustomerOrder(row.id) @@ -1240,7 +1491,7 @@ handleSelectionChange(val) { // 鏍规嵁鐘舵�侊紝绂佺敤琛ㄥご鎸夐挳 // 绛涢�夊嚭閫変腑璁板綍鐨勭姸鎬� - var stateArr = val.map(function(value, index) { + var stateArr = val.map(function (value, index) { return value.coState }) // 閫変腑鐘舵�佹暟缁勫厓绱犲幓閲� @@ -1262,6 +1513,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 @@ -1310,6 +1576,14 @@ }, getIsAudit(row, column, cellValue) { this.isAuditList.forEach((obj) => { + if (obj.value === cellValue) { + cellValue = obj.label + } + }) + return cellValue + }, + checkIsOa(row, column, cellValue) { + this.isOaList.forEach((obj) => { if (obj.value === cellValue) { cellValue = obj.label } @@ -1439,6 +1713,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) { @@ -1531,7 +1809,7 @@ if (!isLt10M) { this.$message({ message: '鏂囦欢澶у皬', - type: 'warning' + type: 'warning', }) } return isLt10M @@ -1543,7 +1821,7 @@ } else { this.$message({ message: '涓婁紶鎴愬姛', - type: 'success' + type: 'success', }) this.getData() } @@ -1561,7 +1839,7 @@ downDataTemplate() { uploadBatchTemplate().then((response) => { const blob = new Blob([response.data], { - type: 'application/force-download' + type: 'application/force-download', }) const filename = decodeURI('妯℃澘鏂囦欢.xlsx') // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠� @@ -1577,7 +1855,6 @@ }, // 瀵煎嚭鍙拌处 exportStandBook() { - // console.log(this.$refs.customerOrderTable.getQueryParam(),"SSS") // if (this.multipleSelection.length > 0) { // let ids = '' // this.multipleSelection.forEach((item) => { @@ -1602,10 +1879,10 @@ // } else { // this.$message.error('璇烽�夋嫨鑷冲皯涓�鏉¢攢鍞鍗�') // } - this.$refs['exportForm'].validate(valid => { - if(valid){ + this.$refs['exportForm'].validate((valid) => { + if (valid) { const exportTime = this.dataForm.exportTime - let queryParam=this.$refs.customerOrderTable.getQueryParam(); + let queryParam = this.$refs.customerOrderTable.getQueryParam() queryParam.selectTime = exportTime exportCustomerOrder(queryParam) .then((response) => { @@ -1647,7 +1924,7 @@ if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') { otcCustomerOrderSync({ selectTime: this.dataForm.selectTime, - pathCode: '1' + pathCode: '1', }) .then((response) => { this.table.toolbar.find( @@ -1675,7 +1952,41 @@ ).loading = false this.$message.error('璇峰厛閫夋嫨鏃ユ湡') } + }, + handleCheck(){ + if (this.multipleSelection.length > 0) { + for(let i=0 ;i<this.multipleSelection.length;i++){ + if(this.multipleSelection[i].sourceId==0){ + this.$message.error('璇烽�夋嫨鎵嬪姩杈撳叆鐨勯攢鍞鍗�') + return; + } + if(this.multipleSelection[i].isPass){ + this.$message.error('璇烽�夋嫨鏈鏍搁�氳繃鐨勯攢鍞鍗�') + return; + } + } + this.$confirm('纭瀹℃牳閫氳繃閫変腑鐨勯攢鍞鍗曞悧?', '鎻愮ず', { + confirmButtonText: '閫氳繃', + cancelButtonText: '鍙栨秷', + type: 'warning', + }) + .then(() => { + checkHanderOrder(this.multipleSelection) + .then((res) => { + if (res.status === 200) { + this.$message.success('瀹℃牳閫氳繃') + this.getData() + } + }) + .catch((error) => { + console.error(error) + }) + }) + .catch(() => {}) + } else { + this.$message.error('璇烽�夋嫨鑷冲皯涓�鏉¢攢鍞鍗�') + } } - } + }, } </script> -- Gitblit v1.9.3