From 0177daf2022ff2b760e8cd00df8bba105f96db81 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期三, 28 二月 2024 09:29:12 +0800 Subject: [PATCH] 销售订单&原材料检验 --- src/api/plan/customerOrderInterrelated.js | 25 +++ src/views/quality/processconfiguration/index.vue | 6 src/views/plan/customerorder/index.vue | 166 +++++++++++++++++++++-- src/api/quality/rawMaterial.js | 8 + src/views/accounting/jmreport/index.vue | 82 +++++++++++ src/api/accounting/personReport.js | 9 + src/views/quality/rawMaterial/index.vue | 70 +++++++++ 7 files changed, 347 insertions(+), 19 deletions(-) diff --git a/src/api/accounting/personReport.js b/src/api/accounting/personReport.js new file mode 100644 index 0000000..4536637 --- /dev/null +++ b/src/api/accounting/personReport.js @@ -0,0 +1,9 @@ +import request from '@/router/axios' + +export function pageList(query) { + return request({ + url: '/mes/product/personReport', + method: 'get', + params: query + }) +} diff --git a/src/api/plan/customerOrderInterrelated.js b/src/api/plan/customerOrderInterrelated.js new file mode 100644 index 0000000..7ce04ff --- /dev/null +++ b/src/api/plan/customerOrderInterrelated.js @@ -0,0 +1,25 @@ +import request from '@/router/axios' + +export function interrelatedOrder(data) { + return request({ + url: '/mes/customerOrderInterrelated/interrelatedOrder', + method: 'post', + data: data + }) +} + +export function getInterrelatedOrder(id) { + return request({ + url: '/mes/customerOrderInterrelated/getInterrelatedOrder/'+id, + method: 'get', + }) +} + +export function checkHanderOrder(orderId) { + return request({ + url: '/mes/customerOrderInterrelated/checkHanderOrder/' + orderId, + method: 'post', + }) + } + + diff --git a/src/api/quality/rawMaterial.js b/src/api/quality/rawMaterial.js index 407f523..65279b7 100644 --- a/src/api/quality/rawMaterial.js +++ b/src/api/quality/rawMaterial.js @@ -8,6 +8,14 @@ }) } +export function checkPutIFS(id,data) { + return request({ + url: '/mes/rawInspect/check/'+id, + method: 'post', + data: data + }) +} + export function selectDevice() { return request({ url: '/mes/rawInsProduct/selectDevice', diff --git a/src/views/accounting/jmreport/index.vue b/src/views/accounting/jmreport/index.vue new file mode 100644 index 0000000..0d5f8ab --- /dev/null +++ b/src/views/accounting/jmreport/index.vue @@ -0,0 +1,82 @@ +<template> + <div class="mod-config"> + <basic-container> + <ttable + :table="table" + @handleSelectionChange="handleSelectionChange" + :prelang="prelang" + :options="options" + :ajaxFun="ajaxFun" + ref="reportWorkTable"> + <template #toolbar></template> + </ttable> + </basic-container> + </div> +</template> + +<script> +import { mapGetters } from 'vuex' +import ttable from '@/views/common/ztt-table.vue' +import { pageList } from '@/api/accounting/personReport' +export default { + components: { + ttable + }, + computed: { + ...mapGetters(['permissions']) + }, + data(){ + return { + multipleSelection: [], + ajaxFun: pageList, + 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' }, + cancelRunCreated: true + }, + table: { + total: 0, + currentPage: 1, + pageSize: 20, + data: [], + // 鏍囬 + column: [ + { + minWidth: '100', + width: '100px', + prop: 'contractNo', + label: '鍚堝悓缂栧彿', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text', + }, + ], + toolbar: [], + operator: null + }, + prelang: "operation", + } + }, + methods:{ + // table鑷甫浜嬩欢 + handleSelectionChange(val) { + this.multipleSelection = val + }, + } +} +</script> + +<style> + +</style> diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue index 7990386..e69e1ae 100644 --- a/src/views/plan/customerorder/index.vue +++ b/src/views/plan/customerorder/index.vue @@ -8,6 +8,7 @@ :prelang="prelang" :options="options" :ajaxFun="ajaxFun" + :toolbarMaxLength="4" :paramArr="type" ref="customerOrderTable" > @@ -241,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' @@ -285,6 +311,9 @@ export default { data() { return { + interrelatedOrderId: null, + interrelatedOrderData: [], + showInterrelatedOrderDialog: false, uniqueStateArr: [], dataForm: { selectTime: null, @@ -400,7 +429,7 @@ isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 - defaultOrderBy: { column: 'createTime', direction: 'desc' }, + defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' }, cancelRunCreated: true }, table: { @@ -497,7 +526,7 @@ { minWidth: '120', prop: 'isAudit', - label: '瀹℃牳鐘舵��', + label: 'PLM瀹℃牳鐘舵��', sort: true, isTrue: true, isSearch: true, @@ -507,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', @@ -655,6 +688,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', @@ -673,8 +725,8 @@ operatorConfig: { fixed: 'right', label: '鎿嶄綔', - width: 100, - minWidth: 100 + width: 200, + minWidth: 200 } }, addOrUpdateVisible: false, @@ -780,7 +832,8 @@ } ], showSalesPartBatch: false, - addOrUpdateEescVisible: false + addOrUpdateEescVisible: false, + isPassList: [{label:'鏈�氳繃',value: false},{label: '閫氳繃',value: true}] } }, components: { @@ -812,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() { @@ -862,6 +926,13 @@ 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: '涓荤敓浜ц鍒�', @@ -872,6 +943,57 @@ } }, methods: { + checkHandOrder(val){ + this.$confirm('纭瀹℃牳閫氳繃璇ラ攢鍞鍗曞悧?', '鎻愮ず', { + confirmButtonText: '閫氳繃', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + checkHanderOrder(val.id).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) @@ -960,6 +1082,18 @@ } else { 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) { @@ -1404,6 +1538,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) { diff --git a/src/views/quality/processconfiguration/index.vue b/src/views/quality/processconfiguration/index.vue index 79b88e5..84e9848 100644 --- a/src/views/quality/processconfiguration/index.vue +++ b/src/views/quality/processconfiguration/index.vue @@ -322,7 +322,11 @@ text: '瀹℃牳缁撴灉', type: 'text', size: 'small', - fun: this.AuditResult + fun: this.AuditResult, + show: { + key: 'type', + val: ['杩囩▼妫�楠�','浜у搧妫�楠�','鍖呰妫�楠�'] + } }) } this.table.operator = arr.length>0 ? arr : null diff --git a/src/views/quality/rawMaterial/index.vue b/src/views/quality/rawMaterial/index.vue index cad0189..fc085ef 100644 --- a/src/views/quality/rawMaterial/index.vue +++ b/src/views/quality/rawMaterial/index.vue @@ -54,7 +54,7 @@ </template> <script> import ttable from '@/views/common/ztt-table.vue' -import { getRawInspectList,delObj,exportRawMaterial,getObj,downloadReport } from '@/api/quality/rawMaterial' +import { getRawInspectList,delObj,exportRawMaterial,getObj,downloadReport,checkPutIFS } from '@/api/quality/rawMaterial' import RawMaterialForm from './rawMaterial-form' import * as fecha from 'element-ui/lib/utils/date' import { mapGetters } from 'vuex' @@ -112,6 +112,18 @@ searchInfoType: 'select', optList: () => { return this.typeList + } + }, + { + minWidth: '120', + prop: 'checkState', + label: '瀹℃牳鐘舵��', + isTrue: true, + isSearch: true, + searchInfoType: 'select', + formatter: this.checkStateFormat, + optList: () => { + return this.checkStateList } }, { @@ -237,6 +249,7 @@ insStateList: [{label:'鍏ㄩ儴',value:''},{label:'宸叉娴�',value:'1'},{label:'鏈娴�',value:'0'}], StateList: [{label:'鍏ㄩ儴',value:''},{label:'宸插悎鏍�',value:'1'},{label:'涓嶅悎鏍�',value:'0'}], typeList: [{label:'鍏ㄩ儴',value:''},{label:'棣栨',value:'棣栨'},{label:'杩旀',value:'杩旀'}], + checkStateList: [{label:'鏈鏍�',value:'0'},{label:'瀹℃牳閫氳繃',value:'1'},{label:'瀹℃牳涓嶉�氳繃',value:'2'}], } }, components: { @@ -262,13 +275,28 @@ }) } + this.table.operator = [{ + text: '瀹℃牳', + type: 'text', + size: 'small', + fun: this.examineHandle, + showFun: (row)=>{return row.type==='棣栨'}, + show: { + key: 'checkState', + val: ['0'] + } + }] if(this.permissions.quality_rawMaterial_del){ - this.table.operator = [{ + this.table.operator.push({ text: '浣滃簾', type: 'text', size: 'small', - fun: this.deleteHandle - }] + fun: this.deleteHandle, + show: { + key: 'judgeState', + val: ['',null] + } + }) } }, computed: { @@ -282,6 +310,32 @@ } }, methods:{ + examineHandle(val){ + this.$confirm('鏄惁瀹℃牳閫氳繃璇ユ楠岄」?', '鎻愮ず', { + distinguishCancelAndClose: true, + confirmButtonText: '閫氳繃', + cancelButtonText: '涓嶉�氳繃', + type: 'warning' + }).then(() => { + checkPutIFS(val.id,{result: 1}).then(res=>{ + if(res.status===200){ + console.log(res) + } + }).catch(error=>{ + console.error(error) + }) + }).catch((action) => { + if(action === 'cancel'){ + checkPutIFS(val.id,{result: 2}).then(res=>{ + if(res.status===200){ + console.log(res) + } + }).catch(error=>{ + console.error(error) + }) + } + }); + }, downloadReport(){ let selection = this.multipleSelection if(!selection || selection.length < 1){ @@ -420,6 +474,14 @@ return "<span style='color:#34BD66;'>鍚堟牸</span>" } }, + checkStateFormat(row, column, cellValue){ + this.checkStateList.forEach((obj) => { + if (obj.value === cellValue) { + cellValue = obj.label + } + }) + return cellValue + }, formatDateTime(row, column, cellValue) { return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' }, -- Gitblit v1.9.3