cuilei
昨天 f851850e65df71a252c0e21dc8d969d5910a03f8
src/views/mes/MesProductionWorkOrderListView.vue
@@ -5,26 +5,40 @@
      <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="物料名称">
              <a-input placeholder="请输入物料名称" v-model="queryParam.materialName"></a-input>
            </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="请输入工单状态"
                <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="重发布人">
                <j-select-user-by-dep placeholder="请输入重发布人"
                                      v-model="queryParam.republisher"></j-select-user-by-dep>
              <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>
@@ -41,8 +55,24 @@
        </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>
@@ -56,156 +86,110 @@
          :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="handleDetail(record)">详情</a>
          <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'">
            <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>
          <span v-if="record.workOrderStatus === 'NEW'">
            <a-divider type="vertical" />
            <a-popconfirm title="确定发布吗?" @confirm="() => handlePublish(record.id)">
                <a>发布</a>
            </a-popconfirm>
            <a-divider type="vertical" />
            <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>
            <a-menu slot="overlay">
              <a-menu-item>
                <a @click="handleDetail(record)">详情</a>
              </a-menu-item>
              <a-menu-item v-if="record.workOrderStatus === 'NEW'">
                <a @click="handleEdit(record)">编辑</a>
              </a-menu-item>
              <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>
        </span>
        </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"></MesProductionWorkOrderScheduleModal>
    <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>
@@ -215,45 +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, 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: [
        {
@@ -350,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: {
@@ -539,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: {
@@ -625,86 +464,154 @@
        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: '/mesproductionworkorder/mesProductionWorkOrder/publish',
        execute: '/mesproductionworkorder/mesProductionWorkOrder/execute',
        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: {
    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) => {
@@ -732,11 +639,8 @@
    handleWorkReport(record) {
      this.$refs.MesProductionWorkOrderReportModal.add(record)
    },
    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
    handleCompletenessCheck(record) {
      this.$refs.MesProductionWorkOrderCompletenessCheckModal.check(record)
    },
    async handleUnLoadingDetail(row){
      console.log('row---->',row)
@@ -751,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) {
@@ -768,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
      }