zhangherong
2025-04-27 dbb3445dc720a8f36b3424e73f2e02a6b0f9deb6
src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue
@@ -2,7 +2,7 @@
  <a-card :bordered="false">
    <!-- 查询区域 -->
    <div class="table-page-search-wrapper">
    <div class="table-page-search-wrapper" v-if="isDisplayOperation">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :xl="4" :lg="7" :md="8" :sm="24">
@@ -12,17 +12,20 @@
          </a-col>
          <a-col :xl="4" :lg="7" :md="8" :sm="24">
            <a-form-item label="设备编号">
              <lx-search-equipment-select placeholder="请输入设备编号或名称搜索" v-model="queryParam.equipmentId"></lx-search-equipment-select>
              <lx-search-equipment-select placeholder="请输入设备编号或名称搜索"
                                          v-model="queryParam.equipmentId"></lx-search-equipment-select>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-item label="计划保养日期">
              <a-range-picker v-model="queryParam.maintenanceDateRange" @change="onMaintenanceDateChange" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
              <a-range-picker v-model="queryParam.maintenanceDateRange" @change="onMaintenanceDateChange"
                              format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
            </a-form-item>
          </a-col>
          <a-col :xl="4" :lg="7" :md="8" :sm="24">
            <a-form-item label="保养状态">
              <j-dict-select-tag placeholder="请选择保养状态" dict-code="week_maintenance_status" v-model="queryParam.maintenanceStatus" />
              <j-dict-select-tag placeholder="请选择保养状态" dict-code="week_maintenance_status"
                                 v-model="queryParam.maintenanceStatus"/>
            </a-form-item>
          </a-col>
          <a-col :xl="4" :lg="7" :md="8" :sm="24">
@@ -37,28 +40,28 @@
    </div>
    <!-- 操作按钮区域 -->
    <div class="table-operator">
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
    <div class="table-operator" v-if="isDisplayOperation">
      <a-button @click="handleAdd" type="primary" icon="plus" v-if="isShowAuth('eam:weekMaintenance:add')">新增</a-button>
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="handlerBatchAbolish">
            <a-icon type="delete" />
          <a-menu-item key="1" @click="handlerBatchAbolish" v-if="isShowAuth('eam:weekMaintenance:abolish')">
            <a-icon type="delete"/>
            作废
          </a-menu-item>
          <a-menu-item key="1" @click="handlerBatchCollect">
            <a-icon type="delete" />
          <a-menu-item key="2" @click="handlerBatchCollect" v-if="isShowAuth('eam:weekMaintenance:collect')">
            <a-icon type="form"/>
            领取
          </a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> 批量操作
          <a-icon type="down" />
          <a-icon type="down"/>
        </a-button>
      </a-dropdown>
    </div>
    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;" v-if="isDisplayOperation">
        <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>
@@ -74,268 +77,411 @@
        :pagination="ipagination"
        :loading="loading"
        class="j-table-force-nowrap"
        :scroll="{x:'max-content'}"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
        <span slot="action" slot-scope="text, record">
          <a v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE'" @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical" />
          <template v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE' && isShowAuth('eam:weekMaintenance:edit')">
          <a @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical"/>
          <a-popconfirm title="确定领取吗?" @confirm="() => handlerCollect(record.id)">
            <a>领取</a>
          </a-popconfirm>
          <a-divider type="vertical"/>
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
            <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
            <a-menu slot="overlay">
               <a-menu-item v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE'">
                <a-popconfirm title="确定领取吗?" @confirm="() => handlerCollect(record.id)">
                  <a>领取</a>
                </a-popconfirm>
              </a-menu-item>
              <a-menu-item v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE'">
              <a-menu-item>
                <a-popconfirm title="确定作废吗?" @confirm="() => handlerAbolish(record.id)">
                  <a>作废</a>
                </a-popconfirm>
              </a-menu-item>
              <a-menu-item >
              <a-menu-item>
                <a @click="handleDetail(record)">详情</a>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
        </span>
          </template>
          <template v-else>
              <a @click="handleDetail(record)">详情</a>
          </template>
        </span>
      </a-table>
    </div>
    <!-- table区域-end -->
    <!-- 表单区域 -->
    <eamWeekMaintenanceOrder-modal ref="modalForm" @ok="modalFormOk"></eamWeekMaintenanceOrder-modal>
    <week-maintenance-approval-modal ref="weekMaintenanceApprovalModal"
                                     :selectShenpiData="selectWeekMaintenanceData"></week-maintenance-approval-modal>
  </a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import EamWeekMaintenanceOrderModal from './modules/EamWeekMaintenanceOrderModal'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue'
import { deleteAction, getAction } from '@api/manage'
  import '@/assets/less/TableExpand.less'
  import EamWeekMaintenanceOrderModal from './modules/EamWeekMaintenanceOrderModal'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue'
  import { deleteAction, getAction } from '@api/manage'
  import WeekMaintenanceApprovalModal from '@views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal'
export default {
  name: 'EamWeekMaintenanceOrderList',
  mixins: [JeecgListMixin],
  components: {
    LxSearchEquipmentSelect,
    EamWeekMaintenanceOrderModal
  },
  data() {
    return {
      description: '周保工单管理页面',
      // 表头
      columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: 'center',
          customRender: function(t, r, index) {
            return parseInt(index) + 1
  export default {
    name: 'EamWeekMaintenanceOrderList',
    mixins: [JeecgListMixin],
    components: {
      LxSearchEquipmentSelect,
      EamWeekMaintenanceOrderModal,
      WeekMaintenanceApprovalModal
    },
    props: {
      isDisplayOperation: {
        type: Boolean,
        default: true
      }
    },
    data() {
      return {
        description: '周保工单管理页面',
        disableMixinCreated: true,
        selectWeekMaintenanceData: {},
        // 表头
        columns: [
          {
            title: '#',
            dataIndex: '',
            key: 'rowIndex',
            width: 60,
            align: 'center',
            fixed: 'left',
            customRender: function(t, r, index) {
              return parseInt(index) + 1
            }
          },
          {
            title: '工单号',
            align: 'center',
            dataIndex: 'orderNum',
            fixed: 'left',
            width: 60
          },
          {
            title: '设备编号',
            align: 'center',
            dataIndex: 'equipmentCode',
            fixed: 'left',
            width: 60
          },
          {
            title: '设备名称',
            align: 'center',
            dataIndex: 'equipmentName',
            fixed: 'left',
            width: 60
          },
          {
            title: '标准名称',
            align: 'center',
            dataIndex: 'standardId_dictText',
            width: 100
          },
          {
            title: '计划保养日期',
            align: 'center',
            dataIndex: 'maintenanceDate',
            width: 60
          },
          {
            title: '实际开始时间',
            align: 'center',
            dataIndex: 'actualStartTime',
            width: 60
          },
          {
            title: '实际结束时间',
            align: 'center',
            dataIndex: 'actualEndTime',
            width: 60
          },
          {
            title: '保养人',
            align: 'center',
            dataIndex: 'operator_dictText',
            width: 60
          },
          {
            title: '保养状态',
            align: 'center',
            dataIndex: 'maintenanceStatus_dictText',
            width: 60
          },
          {
            title: '创建方式',
            align: 'center',
            dataIndex: 'creationMethod_dictText',
            width: 60
          },
          {
            title: '确认人',
            align: 'center',
            dataIndex: 'confirmUser_dictText',
            width: 60
          },
          {
            title: '确认时间',
            align: 'center',
            dataIndex: 'confirmTime',
            width: 60
          },
          {
            title: '确认意见',
            align: 'center',
            dataIndex: 'confirmComment',
            width: 60
          },
          {
            title: '初验收人',
            align: 'center',
            dataIndex: 'initialAcceptanceUser_dictText',
            width: 60
          },
          {
            title: '初验收时间',
            align: 'center',
            dataIndex: 'initialAcceptanceTime',
            width: 60
          },
          {
            title: '初验收意见',
            align: 'center',
            dataIndex: 'initialAcceptanceComment',
            width: 60
          },
          {
            title: '终验收人',
            align: 'center',
            dataIndex: 'finalAcceptanceUser_dictText',
            width: 60
          },
          {
            title: '终验收时间',
            align: 'center',
            dataIndex: 'finalAcceptanceTime',
            width: 60
          },
          {
            title: '终验收意见',
            align: 'center',
            dataIndex: 'finalAcceptanceComment',
            width: 60
          },
          {
            title: '备注',
            align: 'center',
            dataIndex: 'remark',
            width: 60
          }
        },
        {
          title: '工单号',
          align: 'center',
          dataIndex: 'orderNum'
        },
        {
          title: '设备编号',
          align: 'center',
          dataIndex: 'equipmentCode'
        },
        {
          title: '设备名称',
          align: 'center',
          dataIndex: 'equipmentName'
        },
        {
          title: '标准名称',
          align: 'center',
          dataIndex: 'standardId_dictText'
        },
        {
          title: '计划保养日期',
          align: 'center',
          dataIndex: 'maintenanceDate'
        },
        {
          title: '实际开始时间',
          align: 'center',
          dataIndex: 'actualStartTime'
        },
        {
          title: '实际结束时间',
          align: 'center',
          dataIndex: 'actualEndTime'
        },
        {
          title: '保养人',
          align: 'center',
          dataIndex: 'operator_dictText'
        },
        {
          title: '保养状态',
          align: 'center',
          dataIndex: 'maintenanceStatus_dictText'
        },
        {
          title: '创建方式',
          align: 'center',
          dataIndex: 'creationMethod_dictText'
        },
        {
          title: '确认人',
          align: 'center',
          dataIndex: 'confirmUser_dictText'
        },
        {
          title: '确认时间',
          align: 'center',
          dataIndex: 'confirmTime'
        },
        {
          title: '保养图片',
          align: 'center',
          dataIndex: 'imageFiles'
        },
        {
          title: '备注',
          align: 'center',
          dataIndex: 'remark',
          editable: true,
        },
        {
          title: '操作',
          dataIndex: 'action',
          align: 'center',
          scopedSlots: { customRender: 'action' }
          // {
          //   title: '操作',
          //   dataIndex: 'action',
          //   align: 'center',
          //   fixed: 'right',
          //   width: 100,
          //   scopedSlots: { customRender: 'action' }
          // }
        ],
        url: {
          list: '/eam/weekMaintenanceOrder/list',
          abolish: '/eam/weekMaintenanceOrder/abolish',
          abolishBatch: '/eam/weekMaintenanceOrder/abolishBatch',
          collect: '/eam/weekMaintenanceOrder/collect',
          collectBatch: '/eam/weekMaintenanceOrder/collectBatch'
        }
      ],
      url: {
        list: '/eam/weekMaintenanceOrder/list',
        abolish: '/eam/weekMaintenanceOrder/abolish',
        abolishBatch: '/eam/weekMaintenanceOrder/abolishBatch',
        collect: '/eam/weekMaintenanceOrder/collect',
      }
    }
  },
  computed: {},
  methods: {
    onMaintenanceDateChange: function(value, dateString) {
      this.queryParam.maintenanceDateBegin = dateString[0]
      this.queryParam.maintenanceDateEnd = dateString[1]
    },
    handlerAbolish(id) {
      if(!this.url.abolish){
        this.$message.error("请设置url.abolish属性!")
    created() {
      if (!this.isDisplayOperation) {
        return
      }
      var that = this;
      deleteAction(that.url.abolish, {id: id}).then((res) => {
        if (res.success) {
          //重新计算分页问题
          that.reCalculatePage(1)
          // that.$message.success(res.message);
          that.$notification.success({
            message:'消息',
            description:res.message
          });
          that.loadData();
        } else {
          // that.$message.warning(res.message);
          that.$notification.warning({
            message:'消息',
            description:res.message
          });
        }
      });
    },
    handlerBatchAbolish() {
      if(!this.url.abolishBatch){
        this.$message.error("请设置url.abolishBatch属性!")
        return
      const operationColumn = {
        title: '操作',
        dataIndex: 'action',
        align: 'center',
        fixed: 'right',
        width: 200,
        scopedSlots: { customRender: 'action' }
      }
      if (this.selectedRowKeys.length <= 0) {
        // this.$message.warning('请选择一条记录!');
        this.$notification.warning({
          message:'消息',
          description:"请选择一条记录"
        });
        return;
      } else {
        var ids = "";
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
          ids += this.selectedRowKeys[a] + ",";
      this.columns = [...this.columns, operationColumn]
      this.loadData(1)
    },
    computed: {},
    methods: {
      onMaintenanceDateChange: function(value, dateString) {
        this.queryParam.maintenanceDateBegin = dateString[0]
        this.queryParam.maintenanceDateEnd = dateString[1]
      },
      handlerAbolish(id) {
        if (!this.url.abolish) {
          this.$message.error('请设置url.abolish属性!')
          return
        }
        var that = this;
        this.$confirm({
          title: "确认作废",
          content: "是否作废选中数据,只有待保养状态的数据才可作废成功?",
          onOk: function () {
            that.loading = true;
            deleteAction(that.url.abolishBatch, {ids: ids}).then((res) => {
              if (res.success) {
                //重新计算分页问题
                that.reCalculatePage(that.selectedRowKeys.length)
                // that.$message.success(res.message);
                that.$notification.success({
                  message:'消息',
                  description:res.message
                });
                that.loadData();
                that.onClearSelected();
              } else {
                // that.$message.warning(res.message);
                that.$notification.warning({
                  message:'消息',
                  description:res.message
                });
              }
            }).finally(() => {
              that.loading = false;
            });
        var that = this
        deleteAction(that.url.abolish, { id: id }).then((res) => {
          if (res.success) {
            //重新计算分页问题
            that.reCalculatePage(1)
            // that.$message.success(res.message);
            that.$notification.success({
              message: '消息',
              description: res.message
            })
            that.loadData()
          } else {
            // that.$message.warning(res.message);
            that.$notification.warning({
              message: '消息',
              description: res.message
            })
          }
        });
      }
    },
    //单个领取
    handlerCollect(id) {
      if(!this.url.collect){
        this.$message.error("请设置url.collect属性!")
        return
      }
      var that = this;
      getAction(that.url.collect, {id: id}).then((res) => {
        if (res.success) {
          //重新计算分页问题
          that.reCalculatePage(1)
          // that.$message.success(res.message);
          that.$notification.success({
            message:'消息',
            description:res.message
          });
          that.loadData();
        } else {
          // that.$message.warning(res.message);
          that.$notification.warning({
            message:'消息',
            description:res.message
          });
        })
      },
      handlerBatchAbolish() {
        if (!this.url.abolishBatch) {
          this.$message.error('请设置url.abolishBatch属性!')
          return
        }
      });
    },
    //批量领取
    handlerBatchCollect(){
        if (this.selectedRowKeys.length <= 0) {
          // this.$message.warning('请选择一条记录!');
          this.$notification.warning({
            message: '消息',
            description: '请选择一条记录'
          })
          return
        } else {
          var ids = ''
          for (var a = 0; a < this.selectedRowKeys.length; a++) {
            ids += this.selectedRowKeys[a] + ','
          }
          var that = this
          this.$confirm({
            title: '确认作废',
            content: '是否作废选中数据,只有待保养状态的数据才可作废成功?',
            onOk: function() {
              that.loading = true
              deleteAction(that.url.abolishBatch, { ids: ids }).then((res) => {
                if (res.success) {
                  //重新计算分页问题
                  that.reCalculatePage(that.selectedRowKeys.length)
                  // that.$message.success(res.message);
                  that.$notification.success({
                    message: '消息',
                    description: res.message
                  })
                  that.loadData()
                  that.onClearSelected()
                } else {
                  // that.$message.warning(res.message);
                  that.$notification.warning({
                    message: '消息',
                    description: res.message
                  })
                }
              }).finally(() => {
                that.loading = false
              })
            }
          })
        }
      },
      //单个领取
      handlerCollect(id) {
        if (!this.url.collect) {
          this.$message.error('请设置url.collect属性!')
          return
        }
        let that = this
        getAction(that.url.collect, { id: id }).then((res) => {
          if (res.success) {
            //重新计算分页问题
            that.reCalculatePage(1)
            // that.$message.success(res.message);
            that.$notification.success({
              message: '消息',
              description: res.message
            })
            that.loadData()
          } else {
            // that.$message.warning(res.message);
            that.$notification.warning({
              message: '消息',
              description: res.message
            })
          }
        })
      },
      //批量领取
      handlerBatchCollect() {
        if (!this.url.collectBatch) {
          this.$message.error('请设置url.abolishBatch属性!')
          return
        }
        if (this.selectedRowKeys.length <= 0) {
          // this.$message.warning('请选择一条记录!');
          this.$notification.warning({
            message: '消息',
            description: '请选择一条记录'
          })
          return
        } else {
          var ids = ''
          for (var a = 0; a < this.selectedRowKeys.length; a++) {
            ids += this.selectedRowKeys[a] + ','
          }
          var that = this
          this.$confirm({
            title: '确认领取',
            content: '是否领取选中数据,只有待保养状态的数据才可领取成功?',
            onOk: function() {
              that.loading = true
              deleteAction(that.url.collectBatch, { ids: ids }).then((res) => {
                if (res.success) {
                  //重新计算分页问题
                  that.reCalculatePage(that.selectedRowKeys.length)
                  // that.$message.success(res.message);
                  that.$notification.success({
                    message: '消息',
                    description: res.message
                  })
                  that.loadData()
                  that.onClearSelected()
                } else {
                  // that.$message.warning(res.message);
                  that.$notification.warning({
                    message: '消息',
                    description: res.message
                  })
                }
              }).finally(() => {
                that.loading = false
              })
            }
          })
        }
      },
      handleDetail(record) {
        this.selectWeekMaintenanceData = Object.assign({}, record)
        this.$refs.weekMaintenanceApprovalModal.recordDetail(record)
        this.$refs.weekMaintenanceApprovalModal.title = '详情'
        this.$refs.weekMaintenanceApprovalModal.disableSubmit = true
      }
    }
  }
}
</script>
<style scoped>
@import '~@assets/less/common.less';
  @import '~@assets/less/common.less';
</style>