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 |  740 +++++++++++++++++++++++++++-----------------------------
 1 files changed, 354 insertions(+), 386 deletions(-)

diff --git a/src/views/mes/MesProductionWorkOrderListView.vue b/src/views/mes/MesProductionWorkOrderListView.vue
index f9e9b5f..0f244cd 100644
--- a/src/views/mes/MesProductionWorkOrderListView.vue
+++ b/src/views/mes/MesProductionWorkOrderListView.vue
@@ -1,39 +1,78 @@
 <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="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+      <i class="anticon anticon-info-circle ant-alert-icon"></i>宸查�夋嫨&nbsp;<a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�&nbsp;&nbsp;
+      <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>
     </div>
     <a-spin :spinning="confirmLoading">
       <div>
@@ -47,34 +86,44 @@
           :dataSource="dataSource"
           :pagination="ipagination"
           :loading="loading"
-          :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type: 'radio'}"
+          :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type: 'checkbox'}"
           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>
+          @change="handleTableChange"
+          :customRow="clickSelect"
+        >
 
           <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">缂栬緫</a>
-
+            <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>
@@ -82,9 +131,12 @@
               <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>
@@ -93,87 +145,51 @@
         </a-table>
       </div>
       <a-tabs v-model="activeKey" @change="handleChangeTabs">
-        <a-tab-pane tab="宸ュ崟鎶ュ伐" :key="refKeys1[0]" :forceRender="true">
-          <div style="display: flex; align-items: center; margin-bottom: 10px;">
-          </div>
-          <j-vxe-table
-            keep-source
-            :ref="refKeys1[0]"
+        <a-tab-pane tab="宸ュ崟鎶ュ伐" :key="tabsRefKeys[0]" :forceRender="true">
+          <a-table
+            :ref="tabsRefKeys[0]"
             :loading="mesWorkReporting.loading"
             :columns="mesWorkReporting.columns"
             :dataSource="mesWorkReporting.dataSource"
-            :maxHeight="300"
-            :rowNumber="true"
-            :rowSelection="true"
-            :toolbar="false">
-            <template slot="showDetail" slot-scope="{row}">
-              <a-button type="primary" @click="handleOrderDetail(row)" size="small">
-                <a-icon type="eye" />璁㈠崟璇︽儏
-              </a-button>
-            </template>
-          </j-vxe-table>
+            :pagination="false"
+            :scroll="{ y: 300 }"
+            size="middle"
+            bordered>
+          </a-table>
         </a-tab-pane>
-        <a-tab-pane tab="鐗╂枡鎷夊姩鐢宠" :key="refKeys2[0]" :forceRender="true">
-          <div style="display: flex; align-items: center; margin-bottom: 10px;">
-          </div>
-          <j-vxe-table
-            keep-source
-            :ref="refKeys2[0]"
-            :loading="mesMaterialTransferRequest.loading"
-            :columns="mesMaterialTransferRequest.columns"
-            :dataSource="mesMaterialTransferRequest.dataSource"
-            :maxHeight="300"
-            :rowNumber="true"
-            :rowSelection="true"
-            :toolbar="false">
-            <template slot="showTransferDetail" slot-scope="{row}">
-              <a-button type="primary" @click="handleTransferDetail(row)" size="small">
-                <a-icon type="eye" />鐗╂枡鎷夊姩鏄庣粏
-              </a-button>
-            </template>
-          </j-vxe-table>
-        </a-tab-pane>
-        <a-tab-pane tab="涓婁笅鏂欐煡璇�" :key="refKeys3[0]" :forceRender="true">
-          <div style="display: flex; align-items: center; margin-bottom: 10px;">
-          </div>
-          <j-vxe-table
-            keep-source
-            :ref="refKeys3[0]"
+        <a-tab-pane tab="涓婁笅鏂欐煡璇�" :key="tabsRefKeys[1]" :forceRender="true">
+          <a-table
+            :ref="tabsRefKeys[1]"
             :loading="mesMaterialLoading.loading"
             :columns="mesMaterialLoading.columns"
             :dataSource="mesMaterialLoading.dataSource"
-            :maxHeight="300"
-            :rowNumber="true"
-            :rowSelection="true"
-            :toolbar="false">
-            <template slot="showUnloadingDetail" slot-scope="{row}">
-              <a-button type="primary" @click="handleUnLoadingDetail(row)" size="small">
-                <a-icon type="eye" />涓嬫枡璇︽儏
-              </a-button>
-            </template>
-          </j-vxe-table>
+            :pagination="false"
+            :scroll="{ y: 300 }"
+            size="middle"
+            bordered>
+          </a-table>
         </a-tab-pane>
-        <a-tab-pane tab="榻愬鎬ф鏌ヨ褰�" :key="refKeys4[0]" :forceRender="true">
-          <div style="display: flex; align-items: center; margin-bottom: 10px;">
-          </div>
-          <j-vxe-table
-            keep-source
-            :ref="refKeys4[0]"
+        <a-tab-pane tab="榻愬鎬ф鏌ヨ褰�" :key="tabsRefKeys[2]" :forceRender="true">
+          <a-table
+            :ref="tabsRefKeys[2]"
             :loading="mesKittingCompletenessCheck.loading"
             :columns="mesKittingCompletenessCheck.columns"
             :dataSource="mesKittingCompletenessCheck.dataSource"
-            :maxHeight="300"
-            :rowNumber="true"
-            :rowSelection="true"
-            :toolbar="false"
-          />
+            :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>
-    <MesMaterialTransferDetailList ref="MesMaterialTransferDetailList"></MesMaterialTransferDetailList>
+    <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>
 
@@ -183,39 +199,48 @@
 import { mixinDevice } from '@/utils/mixin'
 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import MesProductionWorkOrderModal from './modules/MesProductionWorkOrderModal'
-import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
-import { JVXETypes } from '@/components/jeecg/JVxeTable'
 import { filterMultiDictText } from '@/components/dict/JDictSelectUtil'
-import { getAction } from '@api/manage'
+import { getAction, requestPut } from '@api/manage'
 import MesProductionOrderModal from '@views/mes/modules/MesProductionOrderModal.vue'
 import MesMaterialUnloadingList from '@views/mes/MesMaterialUnloadingList.vue'
-import MesMaterialTransferDetailList from '@views/mes/MesMaterialTransferDetailList.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, JVxeTableModelMixin, JVXETypes],
+  mixins: [JeecgListMixin, mixinDevice],
   components: {
+    JSelectFactory,
     MesProductionWorkOrderModal,
     MesProductionOrderModal,
     MesMaterialUnloadingList,
-    MesMaterialTransferDetailList
+    MesProductionWorkOrderScheduleModal,
+    MesProductionWorkOrderRepublishModal,
+    MesProductionWorkOrderReportModal,
+    MesProductionWorkOrderCompletenessCheckModal
   },
   data() {
     return {
       description: '鎺掍骇宸ュ崟绠$悊椤甸潰',
       activeKey : 'mesWorkReporting',
-      // 宸ュ崟鎶ュ伐
-      refKeys1: ['mesWorkReporting'],
-      tableKeys1: ['mesWorkReporting'],
-      //鐗╂枡鎷夊姩鐢宠
-      refKeys2: ['mesMaterialTransferRequest'],
-      tableKeys2: ['mesMaterialTransferRequest'],
-      //涓婃枡
-      refKeys3: ['mesMaterialLoading'],
-      tableKeys3: ['mesMaterialLoading'],
-      //榻愬鎬ф鏌ヨ褰�
-      refKeys4: ['mesKittingCompletenessCheck'],
-      tableKeys4: ['mesKittingCompletenessCheck'],
+      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: [
         {
@@ -249,7 +274,7 @@
           dataIndex: 'planQuantity'
         },
         {
-          title: '浜х嚎(鍐椾綑)',
+          title: '浜х嚎',
           align: 'center',
           dataIndex: 'factoryId_dictText'
         },
@@ -259,7 +284,7 @@
           dataIndex: 'groupId_dictText'
         },
         {
-          title: '鐝(鍐椾綑)',
+          title: '鐝',
           align: 'center',
           dataIndex: 'shiftId_dictText'
         },
@@ -312,188 +337,65 @@
         dataSource: [],
         columns: [
           {
-            title: '鎿嶄綔',
-            key: 'action',
-            type: JVXETypes.slot,
-            slotName: 'showDetail',
-            width: '120px',
-            align: 'center'
+            title: '#',
+            dataIndex: '',
+            key: 'rowIndex',
+            width: 60,
+            align: 'center',
+            customRender: function(t, r, index) {
+              return parseInt(index) + 1
+            }
           },
           {
             title: '璁㈠崟鍙�',
-            key: 'orderCode',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'orderCode'
           },
           {
             title: '宸ュ崟鍙�',
-            key: 'workOrderCode',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'workOrderCode'
           },
           {
             title: '浜х嚎鍚嶇О',
-            key: 'factoryName',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'factoryName'
           },
           {
             title: '鎵规鍙�',
-            key: 'batchNumber',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'batchNumber'
           },
           {
             title: '鎵樺彿',
-            key: 'palletNumber',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'palletNumber'
           },
           {
             title: '鏁伴噺',
-            key: 'quantity',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'quantity'
           },
           {
             title: '鎶ュ伐浜�',
-            key: 'reporter',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'reporter'
           },
           {
             title: '鎶ュ伐鏃堕棿',
-            key: 'reportTime',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'reportTime'
           },
           {
             title: '绾胯竟浠撳悕绉�',
-            key: 'warehouseName',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'warehouseName'
           },
-          {
-            title: '鎴愬搧涓嬬嚎鎵撳嵃鐘舵��',
-            key: 'printStatus',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-        ]
-      },
-      mesMaterialTransferRequest: {
-        loading: false,
-        dataSource: [],
-        columns: [
-          {
-            title: '鎿嶄綔',
-            key: 'action',
-            type: JVXETypes.slot,
-            slotName: 'showTransferDetail',
-            width: '120px',
-            align: 'center'
-          },
-          {
-            title: '鎷夊姩鍗曞彿',
-            key: 'requestCode',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: '宸ュ崟鍙�',
-            key: 'workOrderCode',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: 'SAP棰勭暀鍙�',
-            key: 'reservationCode',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: '鍙戝竷鐘舵��',
-            key: 'publishStatus',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: '璇锋眰鐘舵��',
-            key: 'requestStatus',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: '璇锋眰鏃堕棿',
-            key: 'requestTime',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: '鍘熷簱瀛樺湴',
-            key: 'originalWarehouseName',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: '鐩爣搴撳瓨鍦�',
-            key: 'targetWarehouseName',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: '浼樺厛绾�',
-            key: 'priority',
-            type: JVXETypes.select,
-            dictCode: 'priority',
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
-          {
-            title: '鏈�鏅氶厤閫佹椂闂�',
-            key: 'latestDeliveryTime',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
+          // {
+          //   title: '鎴愬搧涓嬬嚎鎵撳嵃鐘舵��',
+          //   align: 'center',
+          //   dataIndex: 'printStatus'
+          // }
         ]
       },
       mesMaterialLoading: {
@@ -501,85 +403,60 @@
         dataSource: [],
         columns: [
           {
-            title: '鎿嶄綔',
-            key: 'action',
-            type: JVXETypes.slot,
-            slotName: 'showUnloadingDetail',
-            width: '120px',
-            align: 'center'
+            title: '#',
+            dataIndex: '',
+            key: 'rowIndex',
+            width: 60,
+            align: 'center',
+            customRender: function(t, r, index) {
+              return parseInt(index) + 1
+            }
           },
           {
             title: '宸ュ崟鍙�',
-            key: 'workOrderCode',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'workOrderCode'
           },
           {
-            title: '璁惧ID',
-            key: 'equipmentId',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            title: '璁惧',
+            align: 'center',
+            dataIndex: 'equipmentId'
           },
           {
             title: '宸ュ簭缂栫爜',
-            key: 'processCode',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'processCode'
           },
           {
             title: '宸ュ簭鍚嶇О',
-            key: 'processName',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'processName'
           },
           {
             title: '鐗╂枡缂栫爜',
-            key: 'materialNumber',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'materialNumber'
           },
           {
             title: '鐗╂枡鍚嶇О',
-            key: 'materialName',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'materialName'
           },
           {
             title: '鎵规鍙�',
-            key: 'batchNumber',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'batchNumber'
           },
           {
             title: '鏁伴噺',
-            key: 'quantity',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'quantity'
           },
           {
             title: '鍓╀綑鏁伴噺',
-            key: 'remainingQuantity',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
+            align: 'center',
+            dataIndex: 'remainingQuantity'
+          }
         ]
       },
       mesKittingCompletenessCheck: {
@@ -587,87 +464,183 @@
         dataSource: [],
         columns: [
           {
+            title: '#',
+            dataIndex: '',
+            key: 'rowIndex',
+            width: 60,
+            align: 'center',
+            customRender: function(t, r, index) {
+              return parseInt(index) + 1
+            }
+          },
+          {
             title: '宸ュ崟鍙�',
-            key: 'workOrderCode',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'workOrderCode'
           },
           {
             title: '鐗╂枡缂栧彿',
-            key: 'materialNumber',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'materialNumber'
           },
           {
             title: '鐗╂枡鍚嶇О',
-            key: 'materialName',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'materialName'
           },
           {
             title: '闇�姹傛暟閲�',
-            key: 'requiredQuantity',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'requiredQuantity'
           },
           {
             title: '瀹為檯鏁伴噺',
-            key: 'actualQuantity',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
+            align: 'center',
+            dataIndex: 'actualQuantity'
           },
           {
             title: '鏄惁榻愬',
-            key: 'checkFlag',
-            type: JVXETypes.input,
-            width: '200px',
-            placeholder: '璇疯緭鍏�${title}',
-            defaultValue: ''
-          },
+            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',
-        queryWorkReportingByWorkOrderId:'/mesworkreporting/mesWorkReporting/queryWorkReportingByWorkOrderId',
-        queryMaterialTransferRequestByWorkOrderId:'/mesmaterialtransferrequest/mesMaterialTransferRequest/queryMaterialTransferRequestByWorkOrderId',
+        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:'/meskittingcompletenesscheck/mesKittingCompletenessCheck/queryCompletenessCheckByWorkOrderId',
-        queryOrderById:'/mesproductionwork/mesProductionOrder/queryById',
+        queryCompletenessCheckByWorkOrderId:'/mes/mesKittingCompletenessCheck/queryCompletenessCheckByWorkOrderId',
+        queryOrderById:'/mes/productionOrder/queryById',
         queryUnloadingByLoadingId:'/mes/mesMaterialUnloading/queryUnloadingByLoadingId',
-        queryTransferDetailBy:'/mes/mesMaterialTransferDetail/queryTransferDetailBy'
+        publish: '/mes/mesProductionWorkOrder/publish',
+        execute: '/mes/mesProductionWorkOrder/execute',
       },
       dictOptions: {},
-      superFieldList: []
+      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 }
+        },
+        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 }
+        }
+      }
+    },
     importExcelUrl: function() {
       return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
     }
   },
   methods: {
-    async handleTransferDetail(row){
-      console.log('row---->',row)
-      const transferDetailResult = await getAction(this.url.queryTransferDetailBy,{'requestId':row.id})
-      this.$refs.MesMaterialTransferDetailList.visible = true
-      this.$refs.MesMaterialTransferDetailList.dataSource = transferDetailResult.result.records
+    handleChangeTabs(key) {
+      this.activeKey = key
+      this.selectTabData(key, this.selectedRowKeys[0])
+    },
+    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)
@@ -682,15 +655,13 @@
       this.$refs.MesProductionOrderModal.disableSubmit = true;
     },
     async onSelectChange(selectedRowKeys){
-      //mesWorkReporting,mesMaterialTransferRequest,mesMaterialLoading,mesKittingCompletenessCheck
+      //mesWorkReporting,路,mesMaterialLoading,mesKittingCompletenessCheck
       this.mesWorkReporting.loading = true
-      this.mesMaterialTransferRequest.loading = true
       this.mesMaterialLoading.loading = true
       this.mesKittingCompletenessCheck.loading = true
 
       this.selectedRowKeys = selectedRowKeys
       this.mesWorkReporting.dataSource=[]
-      this.mesMaterialTransferRequest.dataSource=[]
       this.mesMaterialLoading.dataSource=[]
       this.mesKittingCompletenessCheck.dataSource=[]
       if (selectedRowKeys.length > 0) {
@@ -699,15 +670,12 @@
           'workOrderId':selectedId
         }
         const mesWorkReportingResult = await getAction(this.url.queryWorkReportingByWorkOrderId, parm)
-        const mesMaterialTransferRequestResult = await getAction(this.url.queryMaterialTransferRequestByWorkOrderId, parm)
         const mesMaterialLoadingResult = await getAction(this.url.queryLoadingByWorkOrderId, parm)
         const mesKittingCompletenessCheckResult = await getAction(this.url.queryCompletenessCheckByWorkOrderId, parm)
         this.mesWorkReporting.dataSource = mesWorkReportingResult.result
-        this.mesMaterialTransferRequest.dataSource = mesMaterialTransferRequestResult.result
         this.mesMaterialLoading.dataSource = mesMaterialLoadingResult.result
         this.mesKittingCompletenessCheck.dataSource = mesKittingCompletenessCheckResult.result
         this.mesWorkReporting.loading = false
-        this.mesMaterialTransferRequest.loading = false
         this.mesMaterialLoading.loading = false
         this.mesKittingCompletenessCheck.loading = false
       }

--
Gitblit v1.9.3