From f851850e65df71a252c0e21dc8d969d5910a03f8 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期五, 22 八月 2025 10:42:54 +0800 Subject: [PATCH] 排产工单列表页面调整 --- src/views/mes/MesProductionWorkOrderListView.vue | 803 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 623 insertions(+), 180 deletions(-) diff --git a/src/views/mes/MesProductionWorkOrderListView.vue b/src/views/mes/MesProductionWorkOrderListView.vue index 4225fef..0f244cd 100644 --- a/src/views/mes/MesProductionWorkOrderListView.vue +++ b/src/views/mes/MesProductionWorkOrderListView.vue @@ -1,90 +1,129 @@ <template> - <a-card :bordered="false" title="鎺掍骇宸ュ崟"> + <a-card :bordered="false"> <!-- 鏌ヨ鍖哄煙 --> <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="宸ュ崟鍙�(浠诲姟鍙�)"> - <j-input placeholder="璇疯緭鍏ュ伐鍗曞彿(浠诲姟鍙�)" v-model="queryParam.workOrderCode"></j-input> + <a-form-item label="浜х嚎"> + <j-tree-select dict="base_factory,factory_name,id" pid-field="parent_id" + v-model="queryParam.factoryId" style="width: 100%"></j-tree-select> </a-form-item> </a-col> <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鐗╂枡缂栧彿"> - <j-input placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" v-model="queryParam.materialNumber"></j-input> + <a-form-item label="鐗╂枡缂栫爜"> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" v-model="queryParam.materialNumber"></a-input> </a-form-item> </a-col> <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="宸ュ崟鐘舵��"> - <j-dict-select-tag dictCode="work_order_status" placeholder="璇疯緭鍏ュ伐鍗曠姸鎬�" v-model="queryParam.workOrderStatus"></j-dict-select-tag> + <a-form-item label="鐗╂枡鍚嶇О"> + <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-model="queryParam.materialName"></a-input> </a-form-item> </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="閲嶅彂甯冧汉"> - <j-select-user-by-dep placeholder="璇疯緭鍏ラ噸鍙戝竷浜�" v-model="queryParam.republisher"></j-select-user-by-dep> - </a-form-item> - </a-col> + <template v-if="toggleSearchStatus"> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="宸ュ崟鐘舵��"> + <j-dict-select-tag dictCode="work_order_status" placeholder="璇烽�夋嫨宸ュ崟鐘舵��" + v-model="queryParam.workOrderStatus"></j-dict-select-tag> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="宸ュ崟鍙�(浠诲姟鍙�)"> + <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿(浠诲姟鍙�)" v-model="queryParam.workOrderCode"></a-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="鎺掍骇鏃ユ湡"> + <a-range-picker + style="width: 100%" + @change="dateRangeChange" + :value="dateRange"> + </a-range-picker> + </a-form-item> + </a-col> + </template> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + <a @click="handleToggleSearch" style="margin-left: 8px"> + {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }} + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> + </a> </span> </a-col> </a-row> + <a-row> + <a-button type="primary" @click="productionSchedule" icon="retweet" style="margin-bottom: 8px">鎺掍骇</a-button> + <a-dropdown v-if="selectedRowKeys.length > 1"> + <a-menu slot="overlay"> + <a-menu-item key="1" @click="batchPublish"> + <a-icon type="check"/> + 鍙戝竷 + </a-menu-item> + </a-menu> + <a-button style="margin-left: 8px"> + 鎵归噺鎿嶄綔 + <a-icon type="down"/> + </a-button> + </a-dropdown> + </a-row> </a-form> </div> - - <div class="table-operator"> - <a-dropdown v-if="selectedRowKeys.length > 0"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item> - </a-menu> - <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> - </a-dropdown> + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> + <i class="anticon anticon-info-circle ant-alert-icon"></i>宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� + <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> </div> - <div> - <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> - <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� - <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> - </div> + <a-spin :spinning="confirmLoading"> + <div> + <a-table + ref="table" + size="middle" + :scroll="{x:true}" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type: 'checkbox'}" + class="j-table-force-nowrap" + @change="handleTableChange" + :customRow="clickSelect" + > - <a-table - ref="table" - size="middle" - :scroll="{x:true}" - bordered - rowKey="id" - :columns="columns" - :dataSource="dataSource" - :pagination="ipagination" - :loading="loading" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - class="j-table-force-nowrap" - @change="handleTableChange"> - - <template slot="htmlSlot" slot-scope="text"> - <div v-html="text"></div> - </template> - <template slot="imgSlot" slot-scope="text,record"> - <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span> - <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> - </template> - <template slot="fileSlot" slot-scope="text"> - <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span> - <a-button - v-else - :ghost="true" - type="primary" - icon="download" - size="small" - @click="downloadFile(text)"> - 涓嬭浇 - </a-button> - </template> - - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> - + <span slot="action" slot-scope="text, record"> + <span v-if="record.workOrderStatus === 'NEW'"> + <a-popconfirm title="纭畾鍙戝竷鍚�?" @confirm="() => handlePublish(record.id)"> + <a>鍙戝竷</a> + </a-popconfirm> + </span> + <span v-if="record.workOrderStatus === 'PUBLISHED' || record.workOrderStatus === 'EXECUTING'"> + <a-divider type="vertical" /> + <a @click="handleRePublish(record)">閲嶅彂甯�</a> + </span> + <span v-if="record.workOrderStatus === 'PUBLISHED' && record.completenessCheckFlag === '0'"> + <a-divider type="vertical" /> + <a @click="handleCompletenessCheck(record)">榻愬鎬ф鏌�</a> + </span> + <span v-if="record.workOrderStatus === 'PUBLISHED' && record.completenessCheckFlag === '1' && record.equipmentInspectionFlag === '0'"> + <a-divider type="vertical" /> + <a @click="handleCompletenessCheck(record)">璁惧鐐规</a> + </span> + <span v-if="record.workOrderStatus === 'PUBLISHED' && record.completenessCheckFlag === '1' && record.equipmentInspectionFlag === '1' && record.processInspectionFlag === '0'"> + <a-divider type="vertical" /> + <a @click="handleCompletenessCheck(record)">宸ヨ壓鐐规</a> + </span> + <span v-if="record.workOrderStatus === 'PUBLISHED' && record.completenessCheckFlag === '1' && record.equipmentInspectionFlag === '1' && record.processInspectionFlag === '1'"> + <a-divider type="vertical" /> + <a-popconfirm title="纭畾寮�濮嬫墽琛屽悧?" @confirm="() => handleExecute(record.id)"> + <a>鎵ц</a> + </a-popconfirm> + </span> + <span v-if="record.workOrderStatus === 'EXECUTING'"> + <a-divider type="vertical" /> + <a @click="handleWorkReport(record)">鎶ュ伐</a> + </span> <a-divider type="vertical" /> <a-dropdown> <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> @@ -92,175 +131,579 @@ <a-menu-item> <a @click="handleDetail(record)">璇︽儏</a> </a-menu-item> - <a-menu-item> + <a-menu-item v-if="record.workOrderStatus === 'NEW'"> + <a @click="handleEdit(record)">缂栬緫</a> + </a-menu-item> + <a-menu-item v-if="record.workOrderStatus === 'NEW'"> <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> - <a>鍒犻櫎</a> + <a>鍒犻櫎</a> </a-popconfirm> </a-menu-item> </a-menu> </a-dropdown> </span> - - </a-table> - </div> - + </a-table> + </div> + <a-tabs v-model="activeKey" @change="handleChangeTabs"> + <a-tab-pane tab="宸ュ崟鎶ュ伐" :key="tabsRefKeys[0]" :forceRender="true"> + <a-table + :ref="tabsRefKeys[0]" + :loading="mesWorkReporting.loading" + :columns="mesWorkReporting.columns" + :dataSource="mesWorkReporting.dataSource" + :pagination="false" + :scroll="{ y: 300 }" + size="middle" + bordered> + </a-table> + </a-tab-pane> + <a-tab-pane tab="涓婁笅鏂欐煡璇�" :key="tabsRefKeys[1]" :forceRender="true"> + <a-table + :ref="tabsRefKeys[1]" + :loading="mesMaterialLoading.loading" + :columns="mesMaterialLoading.columns" + :dataSource="mesMaterialLoading.dataSource" + :pagination="false" + :scroll="{ y: 300 }" + size="middle" + bordered> + </a-table> + </a-tab-pane> + <a-tab-pane tab="榻愬鎬ф鏌ヨ褰�" :key="tabsRefKeys[2]" :forceRender="true"> + <a-table + :ref="tabsRefKeys[2]" + :loading="mesKittingCompletenessCheck.loading" + :columns="mesKittingCompletenessCheck.columns" + :dataSource="mesKittingCompletenessCheck.dataSource" + :pagination="false" + :scroll="{ y: 300 }" + size="middle" + bordered> + </a-table> + </a-tab-pane> + </a-tabs> + </a-spin> <mes-production-work-order-modal ref="modalForm" @ok="modalFormOk"></mes-production-work-order-modal> + <mes-production-order-modal ref="MesProductionOrderModal"></mes-production-order-modal> + <MesMaterialUnloadingList ref="MesMaterialUnloadingList"></MesMaterialUnloadingList> + <MesProductionWorkOrderScheduleModal ref="MesProductionWorkOrderScheduleModal" @ok="modalFormOk"></MesProductionWorkOrderScheduleModal> + <MesProductionWorkOrderRepublishModal ref="MesProductionWorkOrderRepublishModal" @ok="modalFormOk"></MesProductionWorkOrderRepublishModal> + <MesProductionWorkOrderReportModal ref="MesProductionWorkOrderReportModal" @ok="modalFormOk"></MesProductionWorkOrderReportModal> + <MesProductionWorkOrderCompletenessCheckModal ref="MesProductionWorkOrderCompletenessCheckModal" @ok="modalFormOk"></MesProductionWorkOrderCompletenessCheckModal> </a-card> </template> <script> - import '@/assets/less/TableExpand.less' - import { mixinDevice } from '@/utils/mixin' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import MesProductionWorkOrderModal from './modules/MesProductionWorkOrderModal' - import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' +import '@/assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import MesProductionWorkOrderModal from './modules/MesProductionWorkOrderModal' +import { filterMultiDictText } from '@/components/dict/JDictSelectUtil' +import { getAction, requestPut } from '@api/manage' +import MesProductionOrderModal from '@views/mes/modules/MesProductionOrderModal.vue' +import MesMaterialUnloadingList from '@views/mes/MesMaterialUnloadingList.vue' +import MesProductionWorkOrderScheduleModal from '@views/mes/modules/MesProductionWorkOrderScheduleModal.vue' +import MesProductionWorkOrderRepublishModal from '@views/mes/modules/MesProductionWorkOrderRepublishModal.vue' +import MesProductionWorkOrderReportModal from '@views/mes/modules/MesProductionWorkOrderReportModal.vue' +import MesProductionWorkOrderCompletenessCheckModal from '@views/mes/modules/MesProductionWorkOrderCompletenessCheckModal.vue' +import JSelectFactory from '@comp/jeecgbiz/JSelectFactory.vue' +import moment from 'moment/moment' - export default { - name: 'MesProductionWorkOrderList', - mixins:[JeecgListMixin, mixinDevice], - components: { - MesProductionWorkOrderModal - }, - data () { - return { - description: '鎺掍骇宸ュ崟绠$悊椤甸潰', - // 琛ㄥご +export default { + name: 'MesProductionWorkOrderList', + mixins: [JeecgListMixin, mixinDevice], + components: { + JSelectFactory, + MesProductionWorkOrderModal, + MesProductionOrderModal, + MesMaterialUnloadingList, + MesProductionWorkOrderScheduleModal, + MesProductionWorkOrderRepublishModal, + MesProductionWorkOrderReportModal, + MesProductionWorkOrderCompletenessCheckModal + }, + data() { + return { + description: '鎺掍骇宸ュ崟绠$悊椤甸潰', + activeKey : 'mesWorkReporting', + confirmLoading: false, + tabsRefKeys: ['mesWorkReporting', 'mesMaterialLoading', 'mesKittingCompletenessCheck'], + /* 鍒嗛〉鍙傛暟 */ + ipagination:{ + current: 1, + pageSize: 5, + pageSizeOptions: ['5', '10', '20'], + showTotal: (total, range) => { + return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�" + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + }, + { + title: '宸ュ崟鍙�(浠诲姟鍙�)', + align: 'center', + dataIndex: 'workOrderCode' + }, + { + title: '鐗╂枡缂栫爜', + align: 'center', + dataIndex: 'materialNumber' + }, + { + title: '鐗╂枡鍚嶇О', + align: 'center', + dataIndex: 'materialName' + }, + { + title: '璁″垝鐢熶骇鏁伴噺', + align: 'center', + dataIndex: 'planQuantity' + }, + { + title: '浜х嚎', + align: 'center', + dataIndex: 'factoryId_dictText' + }, + { + title: '鐝粍', + align: 'center', + dataIndex: 'groupId_dictText' + }, + { + title: '鐝', + align: 'center', + dataIndex: 'shiftId_dictText' + }, + { + title: '鎺掍骇鏃ユ湡', + align: 'center', + dataIndex: 'workOrderDate' + }, + { + title: '宸ュ崟鐘舵��', + align: 'center', + dataIndex: 'workOrderStatus_dictText' + }, + { + title: '瀹為檯鎶ュ伐鏁伴噺', + align: 'center', + dataIndex: 'actualQuantity' + }, + { + title: '鍙戝竷浜�', + align: 'center', + dataIndex: 'publisher' + }, + { + title: '鍙戝竷鏃堕棿', + align: 'center', + dataIndex: 'publishTime' + }, + { + title: '閲嶅彂甯冧汉', + align: 'center', + dataIndex: 'republisher' + }, + { + title: '閲嶅彂甯冩椂闂�', + align: 'center', + dataIndex: 'republishTime' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + fixed: 'right', + width: 147, + scopedSlots: { customRender: 'action' } + } + ], + mesWorkReporting: { + loading: false, + dataSource: [], columns: [ { title: '#', dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 } }, { - title:'宸ュ崟鍙�(浠诲姟鍙�)', - align:"center", + title: '璁㈠崟鍙�', + align: 'center', + dataIndex: 'orderCode' + }, + { + title: '宸ュ崟鍙�', + align: 'center', dataIndex: 'workOrderCode' }, { - title:'鐗╂枡缂栫爜', - align:"center", + title: '浜х嚎鍚嶇О', + align: 'center', + dataIndex: 'factoryName' + }, + { + title: '鎵规鍙�', + align: 'center', + dataIndex: 'batchNumber' + }, + { + title: '鎵樺彿', + align: 'center', + dataIndex: 'palletNumber' + }, + { + title: '鏁伴噺', + align: 'center', + dataIndex: 'quantity' + }, + { + title: '鎶ュ伐浜�', + align: 'center', + dataIndex: 'reporter' + }, + { + title: '鎶ュ伐鏃堕棿', + align: 'center', + dataIndex: 'reportTime' + }, + { + title: '绾胯竟浠撳悕绉�', + align: 'center', + dataIndex: 'warehouseName' + }, + // { + // title: '鎴愬搧涓嬬嚎鎵撳嵃鐘舵��', + // align: 'center', + // dataIndex: 'printStatus' + // } + ] + }, + mesMaterialLoading: { + loading: false, + dataSource: [], + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + }, + { + title: '宸ュ崟鍙�', + align: 'center', + dataIndex: 'workOrderCode' + }, + { + title: '璁惧', + align: 'center', + dataIndex: 'equipmentId' + }, + { + title: '宸ュ簭缂栫爜', + align: 'center', + dataIndex: 'processCode' + }, + { + title: '宸ュ簭鍚嶇О', + align: 'center', + dataIndex: 'processName' + }, + { + title: '鐗╂枡缂栫爜', + align: 'center', dataIndex: 'materialNumber' }, { - title:'鐗╂枡鍚嶇О', - align:"center", + title: '鐗╂枡鍚嶇О', + align: 'center', dataIndex: 'materialName' }, { - title:'璁″垝鐢熶骇鏁伴噺', - align:"center", - dataIndex: 'planQuantity' + title: '鎵规鍙�', + align: 'center', + dataIndex: 'batchNumber' }, { - title:'浜х嚎(鍐椾綑)', - align:"center", - dataIndex: 'factoryId_dictText' + title: '鏁伴噺', + align: 'center', + dataIndex: 'quantity' }, { - title:'鐝粍', - align:"center", - dataIndex: 'groupId_dictText' + title: '鍓╀綑鏁伴噺', + align: 'center', + dataIndex: 'remainingQuantity' + } + ] + }, + mesKittingCompletenessCheck: { + loading: false, + dataSource: [], + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } }, { - title:'鐝(鍐椾綑)', - align:"center", - dataIndex: 'shiftId_dictText' + title: '宸ュ崟鍙�', + align: 'center', + dataIndex: 'workOrderCode' }, { - title:'鎺掍骇鏃ユ湡', - align:"center", - dataIndex: 'workOrderDate' + title: '鐗╂枡缂栧彿', + align: 'center', + dataIndex: 'materialNumber' }, { - title:'宸ュ崟鐘舵��', - align:"center", - dataIndex: 'workOrderStatus_dictText' + title: '鐗╂枡鍚嶇О', + align: 'center', + dataIndex: 'materialName' }, { - title:'瀹為檯鎶ュ伐鏁伴噺', - align:"center", + title: '闇�姹傛暟閲�', + align: 'center', + dataIndex: 'requiredQuantity' + }, + { + title: '瀹為檯鏁伴噺', + align: 'center', dataIndex: 'actualQuantity' }, { - title:'鍙戝竷浜�', - align:"center", - dataIndex: 'publisher' - }, - { - title:'鍙戝竷鏃堕棿', - align:"center", - dataIndex: 'publishTime' - }, - { - title:'閲嶅彂甯冧汉', - align:"center", - dataIndex: 'republisher' - }, - { - title:'閲嶅彂甯冩椂闂�', - align:"center", - dataIndex: 'republishTime' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - fixed:"right", - width:147, - scopedSlots: { customRender: 'action' } + title: '鏄惁榻愬', + align: 'center', + dataIndex: 'checkFlag', + customRender: function(text) { + return text === '0' ? '鍚�' : text === '1' ? '鏄�' : '' + } } - ], - url: { - list: "/mesproductionworkorder/mesProductionWorkOrder/list", - delete: "/mesproductionworkorder/mesProductionWorkOrder/delete", - deleteBatch: "/mesproductionworkorder/mesProductionWorkOrder/deleteBatch", - exportXlsUrl: "/mesproductionworkorder/mesProductionWorkOrder/exportXls", - importExcelUrl: "mesproductionworkorder/mesProductionWorkOrder/importExcel", - + ] + }, + url: { + list: '/mes/mesProductionWorkOrder/list', + delete: '/mes/mesProductionWorkOrder/delete', + deleteBatch: '/mes/mesProductionWorkOrder/deleteBatch', + exportXlsUrl: '/mes/mesProductionWorkOrder/exportXls', + importExcelUrl: 'mes/mesProductionWorkOrder/importExcel', + queryWorkReportingByWorkOrderId:'/mes/mesWorkReporting/queryWorkReportingByWorkOrderId', + queryLoadingByWorkOrderId:'/mes/mesMaterialLoading/queryLoadingByWorkOrderId', + queryCompletenessCheckByWorkOrderId:'/mes/mesKittingCompletenessCheck/queryCompletenessCheckByWorkOrderId', + queryOrderById:'/mes/productionOrder/queryById', + queryUnloadingByLoadingId:'/mes/mesMaterialUnloading/queryUnloadingByLoadingId', + publish: '/mes/mesProductionWorkOrder/publish', + execute: '/mes/mesProductionWorkOrder/execute', + }, + dictOptions: {}, + superFieldList: [], + dateRange: [] + } + }, + created() { + this.getSuperFieldList() + }, + computed: { + tabsKeyMap() { + return { + mesWorkReporting: { + url: this.url.queryWorkReportingByWorkOrderId, + loading: this.mesWorkReporting.loading, + data: this.mesWorkReporting.dataSource, + setLoading: (loading) => { this.mesWorkReporting.loading = loading }, + setData: (data) => { this.mesWorkReporting.dataSource = data } }, - dictOptions:{}, - superFieldList:[], + mesMaterialLoading: { + url: this.url.queryLoadingByWorkOrderId, + loading: this.mesMaterialLoading.loading, + data: this.mesMaterialLoading.dataSource, + setLoading: (loading) => { this.mesMaterialLoading.loading = loading }, + setData: (data) => { this.mesMaterialLoading.dataSource = data } + }, + mesKittingCompletenessCheck: { + url: this.url.queryCompletenessCheckByWorkOrderId, + loading: this.mesKittingCompletenessCheck.loading, + data: this.mesKittingCompletenessCheck.dataSource, + setLoading: (loading) => { this.mesKittingCompletenessCheck.loading = loading }, + setData: (data) => { this.mesKittingCompletenessCheck.dataSource = data } + } } }, - created() { - this.getSuperFieldList(); + importExcelUrl: function() { + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` + } + }, + methods: { + handleChangeTabs(key) { + this.activeKey = key + this.selectTabData(key, this.selectedRowKeys[0]) }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; - }, - }, - methods: { - initDictConfig(){ - }, - getSuperFieldList(){ - let fieldList=[]; - fieldList.push({type:'int',value:'delFlag',text:'鍒犻櫎鏍囪',dictCode:''}) - fieldList.push({type:'string',value:'workOrderCode',text:'宸ュ崟鍙�(浠诲姟鍙�)',dictCode:''}) - fieldList.push({type:'string',value:'materialNumber',text:'鐗╂枡缂栫爜',dictCode:''}) - fieldList.push({type:'string',value:'materialName',text:'鐗╂枡鍚嶇О',dictCode:''}) - fieldList.push({type:'double',value:'planQuantity',text:'璁″垝鐢熶骇鏁伴噺',dictCode:''}) - fieldList.push({type:'string',value:'factoryId',text:'浜х嚎ID(鍐椾綑)',dictCode:''}) - fieldList.push({type:'string',value:'groupId',text:'鐝粍ID',dictCode:''}) - fieldList.push({type:'string',value:'shiftId',text:'鐝ID(鍐椾綑)',dictCode:''}) - fieldList.push({type:'datetime',value:'workOrderDate',text:'鎺掍骇鏃ユ湡'}) - fieldList.push({type:'string',value:'workOrderStatus',text:'宸ュ崟鐘舵��',dictCode:'work_order_status'}) - fieldList.push({type:'double',value:'actualQuantity',text:'瀹為檯鎶ュ伐鏁伴噺',dictCode:''}) - fieldList.push({type:'string',value:'publisher',text:'鍙戝竷浜�',dictCode:''}) - fieldList.push({type:'datetime',value:'publishTime',text:'鍙戝竷鏃堕棿'}) - fieldList.push({type:'string',value:'republisher',text:'閲嶅彂甯冧汉',dictCode:''}) - fieldList.push({type:'datetime',value:'republishTime',text:'閲嶅彂甯冩椂闂�'}) - this.superFieldList = fieldList + clickSelect(record) { + return { + on: { + click: () => { + this.selectedRowKeys = [record.id] + this.selectTabData(this.activeKey, record.id) + } + } } + }, + selectTabData(tabKey, workOrderId) { + const tab = this.tabsKeyMap[tabKey] + if (tab) { + tab.setLoading(true) + getAction(tab.url, { workOrderId: workOrderId }).then(res => { + if (res.success) { + tab.setData(res.result || []) + } + }).catch(error => { + console.error('Error loading tab data:', error) + tab.setData([]) + }).finally(() => { + tab.setLoading(false) + }) + } + }, + searchReset() { + this.queryParam = {} + this.dateRange = [] + this.loadData(1); + }, + dateRangeChange(dates, dateStrings) { + this.dateRange = dates + this.queryParam.startDate = dateStrings[0] + this.queryParam.endDate = dateStrings[1] + }, + productionSchedule() { + this.$refs.MesProductionWorkOrderScheduleModal.scheduleOpen() + }, + batchPublish() { + if (this.selectedRowKeys.length < 1) { + this.$message.warning('璇烽�夋嫨澶氭潯璁板綍锛�') + return + } + const ids = this.selectedRowKeys.join(',') + this.handlePublish(ids) + this.selectedRowKeys = [] + }, + handlePublish(id) { + requestPut(this.url.publish, null, { ids: id }).then((res) => { + if (res.success) { + this.$message.success(res.message) + this.loadData() + } else { + this.$message.warning(res.message) + } + }) + }, + handleExecute(id) { + getAction(this.url.execute, { id: id }).then((res) => { + if (res.success) { + this.$message.success(res.message) + this.loadData() + } else { + this.$message.warning(res.message) + } + }) + }, + handleRePublish(record) { + this.$refs.MesProductionWorkOrderRepublishModal.add(record) + }, + handleWorkReport(record) { + this.$refs.MesProductionWorkOrderReportModal.add(record) + }, + handleCompletenessCheck(record) { + this.$refs.MesProductionWorkOrderCompletenessCheckModal.check(record) + }, + async handleUnLoadingDetail(row){ + console.log('row---->',row) + const unloadingResult = await getAction(this.url.queryUnloadingByLoadingId,{'loadingId':row.id}) + this.$refs.MesMaterialUnloadingList.visible = true + this.$refs.MesMaterialUnloadingList.dataSource = unloadingResult.result.records + }, + async handleOrderDetail(row){ + const orderResult = await getAction(this.url.queryOrderById,{'id':row.orderId}) + this.$refs.MesProductionOrderModal.edit(orderResult.result) + this.$refs.MesProductionOrderModal.title="璁㈠崟璇︽儏"; + this.$refs.MesProductionOrderModal.disableSubmit = true; + }, + async onSelectChange(selectedRowKeys){ + //mesWorkReporting,路,mesMaterialLoading,mesKittingCompletenessCheck + this.mesWorkReporting.loading = true + this.mesMaterialLoading.loading = true + this.mesKittingCompletenessCheck.loading = true + + this.selectedRowKeys = selectedRowKeys + this.mesWorkReporting.dataSource=[] + this.mesMaterialLoading.dataSource=[] + this.mesKittingCompletenessCheck.dataSource=[] + if (selectedRowKeys.length > 0) { + const selectedId = selectedRowKeys[0] // 閫変腑琛岀殑id + let parm = { + 'workOrderId':selectedId + } + const mesWorkReportingResult = await getAction(this.url.queryWorkReportingByWorkOrderId, parm) + const mesMaterialLoadingResult = await getAction(this.url.queryLoadingByWorkOrderId, parm) + const mesKittingCompletenessCheckResult = await getAction(this.url.queryCompletenessCheckByWorkOrderId, parm) + this.mesWorkReporting.dataSource = mesWorkReportingResult.result + this.mesMaterialLoading.dataSource = mesMaterialLoadingResult.result + this.mesKittingCompletenessCheck.dataSource = mesKittingCompletenessCheckResult.result + this.mesWorkReporting.loading = false + this.mesMaterialLoading.loading = false + this.mesKittingCompletenessCheck.loading = false + } + }, + initDictConfig() { + }, + getSuperFieldList() { + let fieldList = [] + fieldList.push({ type: 'int', value: 'delFlag', text: '鍒犻櫎鏍囪', dictCode: '' }) + fieldList.push({ type: 'string', value: 'workOrderCode', text: '宸ュ崟鍙�(浠诲姟鍙�)', dictCode: '' }) + fieldList.push({ type: 'string', value: 'materialNumber', text: '鐗╂枡缂栫爜', dictCode: '' }) + fieldList.push({ type: 'string', value: 'materialName', text: '鐗╂枡鍚嶇О', dictCode: '' }) + fieldList.push({ type: 'double', value: 'planQuantity', text: '璁″垝鐢熶骇鏁伴噺', dictCode: '' }) + fieldList.push({ type: 'string', value: 'factoryId', text: '浜х嚎ID(鍐椾綑)', dictCode: '' }) + fieldList.push({ type: 'string', value: 'groupId', text: '鐝粍ID', dictCode: '' }) + fieldList.push({ type: 'string', value: 'shiftId', text: '鐝ID(鍐椾綑)', dictCode: '' }) + fieldList.push({ type: 'datetime', value: 'workOrderDate', text: '鎺掍骇鏃ユ湡' }) + fieldList.push({ type: 'string', value: 'workOrderStatus', text: '宸ュ崟鐘舵��', dictCode: 'work_order_status' }) + fieldList.push({ type: 'double', value: 'actualQuantity', text: '瀹為檯鎶ュ伐鏁伴噺', dictCode: '' }) + fieldList.push({ type: 'string', value: 'publisher', text: '鍙戝竷浜�', dictCode: '' }) + fieldList.push({ type: 'datetime', value: 'publishTime', text: '鍙戝竷鏃堕棿' }) + fieldList.push({ type: 'string', value: 'republisher', text: '閲嶅彂甯冧汉', dictCode: '' }) + fieldList.push({ type: 'datetime', value: 'republishTime', text: '閲嶅彂甯冩椂闂�' }) + this.superFieldList = fieldList } } +} </script> <style scoped> - @import '~@assets/less/common.less'; +@import '~@assets/less/common.less'; </style> \ No newline at end of file -- Gitblit v1.9.3