zhangherong
16 小时以前 4dfd11f526b7b4fe578561a9ea4c27a24a88acb4
src/views/mes/MesProductionWorkOrderListView.vue
@@ -1,5 +1,5 @@
<template>
  <a-card :bordered="false" title="排产工单">
  <a-card :bordered="false">
    <!-- 查询区域 -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
@@ -14,24 +14,33 @@
              <j-input placeholder="请输入物料编号" v-model="queryParam.materialNumber"></j-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>
          </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="重发布人">
                <j-select-user-by-dep placeholder="请输入重发布人"
                                      v-model="queryParam.republisher"></j-select-user-by-dep>
              </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-row>
      </a-form>
    </div>
@@ -73,8 +82,37 @@
          </template>
          <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.equipmentInspectionFlag === '0'">
              <a-divider type="vertical" />
              <a @click="handleCompletenessCheck(record)">设备点检</a>
            </span>
            <span v-if="record.workOrderStatus === 'PUBLISHED' && 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,13 +120,17 @@
              <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>
@@ -109,26 +151,6 @@
            <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>
        </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>
@@ -173,7 +195,10 @@
    <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>
@@ -186,10 +211,13 @@
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'
export default {
  name: 'MesProductionWorkOrderList',
@@ -198,7 +226,10 @@
    MesProductionWorkOrderModal,
    MesProductionOrderModal,
    MesMaterialUnloadingList,
    MesMaterialTransferDetailList
    MesProductionWorkOrderScheduleModal,
    MesProductionWorkOrderRepublishModal,
    MesProductionWorkOrderReportModal,
    MesProductionWorkOrderCompletenessCheckModal
  },
  data() {
    return {
@@ -207,9 +238,6 @@
      // 工单报工
      refKeys1: ['mesWorkReporting'],
      tableKeys1: ['mesWorkReporting'],
      //物料拉动申请
      refKeys2: ['mesMaterialTransferRequest'],
      tableKeys2: ['mesMaterialTransferRequest'],
      //上料
      refKeys3: ['mesMaterialLoading'],
      tableKeys3: ['mesMaterialLoading'],
@@ -249,7 +277,7 @@
          dataIndex: 'planQuantity'
        },
        {
          title: '产线(冗余)',
          title: '产线',
          align: 'center',
          dataIndex: 'factoryId_dictText'
        },
@@ -259,7 +287,7 @@
          dataIndex: 'groupId_dictText'
        },
        {
          title: '班次(冗余)',
          title: '班次',
          align: 'center',
          dataIndex: 'shiftId_dictText'
        },
@@ -394,101 +422,6 @@
          {
            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}',
@@ -637,18 +570,18 @@
        ]
      },
      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: []
@@ -663,11 +596,37 @@
    }
  },
  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
    productionSchedule() {
      this.$refs.MesProductionWorkOrderScheduleModal.scheduleOpen()
    },
    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 +641,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 +656,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
      }