zenglf
2023-09-18 92ff846fb659c62037a32b1d8c15eae9df9d9b54
src/views/eam/PredictiveWorkPlanList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,490 @@
<template>
  <a-card
    title="预测性维护方案"
    :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='方案编码'>
              <a-input
                placeholder='请输入方案编码'
                v-model='queryParam.planNum'
              ></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.deviceName'
              ></a-input>
            </a-form-item>
          </a-col>
          <a-col
            :md="10"
            :sm="8"
          >
            <a-form-item label="版本状态">
              <a-radio-group
                v-model="queryParam.status"
                @change="onChange"
                default-value="2"
              >
                <a-radio-button value="1">
                  æœªç”Ÿæ•ˆ
                </a-radio-button>
                <a-radio-button value="2">
                  å·²ç”Ÿæ•ˆ
                </a-radio-button>
                <a-radio-button value="3">
                  å·²å¤±æ•ˆ
                </a-radio-button>
              </a-radio-group>
            </a-form-item>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <div class="table-operator">
      <a-button
        @click='handleAdd'
        type='primary'
        icon='plus'
      >新增
      </a-button>
      <a-button
        type='primary'
        @click='searchQuery'
        icon='search'
      >查询
      </a-button>
      <a-button
        type='primary'
        @click='searchReset'
        icon='reload'
        style='margin-left: 8px'
      >重置
      </a-button>
    </div>
    <!-- table区域-begin -->
    <div>
      <div
        class='ant-alert ant-alert-info'
        style='margin-bottom: 16px;'
      >
        <i class='anticon anticon-info-circle ant-alert-icon'></i> å·²é€‰æ‹© <a style='font-weight: 600'>{{
        selectedRowKeys.length }}</a>项
        <a
          style='margin-left: 24px'
          @click='onClearSelected'
        >清空</a>
      </div>
      <a-table
        ref='table'
        size='middle'
        bordered
        rowKey='id'
        :scroll="{ x: 'calc(1400px + 50%)', y: 900 }"
        :columns='columns'
        :dataSource='dataSource'
        :pagination='ipagination'
        :loading='loading'
        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio' }"
        :customRow='clickThenSelect'
        @change='handleTableChange'
      >
        <span
          slot="action"
          slot-scope="text, record"
        >
          <a
            v-if="record.status == '2'"
            @click="handleRevise(record)"
          >升版</a>
          <a
            v-if="record.status == '1'"
            @click="handleTakeEffect(record)"
          >生效</a>
          <a-divider type="vertical"/>
          <a
            v-if="record.status == '1'"
            @click="handleEdit(record)"
          >编辑</a>
          <a-divider type="vertical"/>
          <a-popconfirm
            v-if="record.status == '1'"
            title="确定删除吗?"
            @confirm="() => handleDelete(record.id)"
          >
            <a>删除</a>
          </a-popconfirm>
        </span>
      </a-table>
      <a-tabs
        type="card"
        defaultActiveKey="1"
      >
        <a-tab-pane
          tab='触发条件'
          key="1" forceRender
        >
          <div
            class="table-operator"
            style="margin:-16px"
          >
            <predictive-spare-parts :planId='planId' :isEdit="isEdit" :isAdd="isAdd" :isDel="isDel"  v-show="selectionRows.length==1&&selectionRows[0].monitor_type == 'smkz'"/>
            <!--            v-if="selectionRows[0].monitorType == 'smkz'"-->
            <predictive-parameters :planId='planId' :equipmentId='equipmentId' :isEdit="isEdit" :isAdd="isAdd"
            v-show="selectionRows.length==1&&selectionRows[0].monitor_type == 'cskz'"
                                   :isDel="isDel"/>
            <!--            v-if="selectionRows[0].monitorType == 'cskz'" -->
            <predictive-warn :planId='planId' :equipmentId='equipmentId' :isEdit="isEdit" :isAdd="isAdd"
            v-show="selectionRows.length==1&&selectionRows[0].monitor_type == 'bjkz'"
                             :isDel="isDel"/>
            <!--            v-if="selectionRows[0].monitorType == 'bjkz'"-->
          </div>
        </a-tab-pane>
        <a-tab-pane
          tab='维护内容'
          key="2" forceRender
        >
          <div
            class="table-operator"
            style="margin:-16px"
          >
            <repair-order-detail-list :mainId='planId' :isEdit="isEdit" :isAdd="isAdd" :isDel="isDel"/>
          </div>
        </a-tab-pane>
        <a-tab-pane
          tab='计划用料'
          key="3" forceRender
        >
          <div
            class="table-operator"
            style="margin:-16px"
          >
            <maintenance-standard-planning-material :maintenanceStandardId='planId' :isEdit="isEdit" :isAdd="isAdd"
                                                    :isDel="isDel"/>
          </div>
        </a-tab-pane>
        <a-tab-pane
          tab='危险防控'
          key="4" forceRender
        >
          <div
            class="table-operator"
            style="margin:-16px"
          >
            <maintenance-standard-safety-requirement :maintenanceStandardId='planId' :isEdit="isEdit" :isAdd="isAdd"
                                                     :isDel="isDel"/>
          </div>
        </a-tab-pane>
        <a-tab-pane
          tab='作业指导书'
          key="5" forceRender
        >
          <div
            class="table-operator"
            style="margin:-16px"
          >
            <maintenance-standard-work-instruction :maintenanceStandardId='planId' :isEdit="isEdit" :isAdd="isAdd"
                                                   :isDel="isDel"/>
          </div>
        </a-tab-pane>
      </a-tabs>
    </div>
    <predictive-work-plan-modal
      ref='modalForm'
      @ok='modalFormOk'
    ></predictive-work-plan-modal>
  </a-card>
</template>
<script>
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import { requestPut,deleteAction  } from '@/api/manage'
  import DailyMaintenanceStandardDetail from './modules/dailyMaintenanceStandard/DailyMaintenanceStandardDetail'
  //计划用料
  import MaintenanceStandardPlanningMaterial from '@/views/eam/common/MaintenanceStandardPlanningMaterial'
  //危险防控
  import MaintenanceStandardSafetyRequirement from '@/views/eam/common/MaintenanceStandardSafetyRequirement'
  //新增编辑
  import PredictiveWorkPlanModal from './modules/predictiveWorkPlan/PredictiveWorkPlanModal'
  //参数
  import PredictiveParameters from './modules/predictiveWorkPlan/PredictiveParameters'
  //报警
  import PredictiveWarn from './modules/predictiveWorkPlan/PredictiveWarn'
  //备件
  import PredictiveSpareParts from './modules/predictiveWorkPlan/PredictiveSpareParts'
  //作业指导书
  import MaintenanceStandardWorkInstruction from '@/views/eam/common/MaintenanceStandardWorkInstruction'
  //维护内容
  import RepairOrderDetailList from '@/views/eam/common/RepairOrderDetailList'
  import '@/assets/less/TableExpand.less'
  export default {
    name: 'PredictiveWorkPlanList',
    mixins: [JeecgListMixin],
    components: {
      DailyMaintenanceStandardDetail,
      PredictiveWorkPlanModal,
      MaintenanceStandardPlanningMaterial,
      MaintenanceStandardSafetyRequirement,
      MaintenanceStandardWorkInstruction,
      PredictiveSpareParts,
      PredictiveParameters,
      PredictiveWarn,
      RepairOrderDetailList
    },
    data() {
      return {
        equipmentId: '',
        columns: [
          {
            title: '#',
            dataIndex: '',
            key: 'rowIndex',
            width: 60,
            align: 'center',
            customRender: function(t, r, index) {
              return parseInt(index) + 1
            }
          },
          {
            title: '版本状态',
            align: 'center',
            dataIndex: 'statusName'
          },
          // {
          //   title: '审批状态',
          //   align: 'center',
          //   dataIndex: 'versionStatusName'
          // },
          {
            title: '版本',
            align: 'center',
            dataIndex: 'planVersion'
          },
          {
            title: '方案编码',
            align: 'center',
            dataIndex: 'num'
          },
          {
            title: '方案名称',
            align: 'center',
            dataIndex: 'name'
          },
          {
            title: '监控类型',
            align: 'center',
            dataIndex: 'monitorTypeName'
          },
          {
            title: '设备编码',
            align: 'center',
            dataIndex: 'deviceNum'
          },
          {
            title: '设备名称',
            align: 'center',
            dataIndex: 'deviceName'
          },
          {
            title: '设备型号',
            align: 'center',
            dataIndex: 'deviceModel'
          },
          {
            title: '维保方式',
            align: 'center',
            dataIndex: 'maintenanceMethodName'
          },
          {
            title: '派工方式',
            align: 'center',
            dataIndex: 'assignModeName'
          },
          {
            title: '责任班组',
            align: 'center',
            dataIndex: 'teamName'
          },
          {
            title: '创建人',
            align: 'center',
            dataIndex: 'createBy'
          },
          {
            title: '创建日期',
            align: 'center',
            dataIndex: 'createTime'
          },
          // {
          //   title: '更新人',
          //   align: 'center',
          //   dataIndex: 'updateBy',
          // },
          // {
          //   title: '更新日期',
          //   align: 'center',
          //   dataIndex: 'updateTime',
          // },
          {
            title: '操作',
            dataIndex: 'action',
            align: 'center',
            fixed: 'right',
            scopedSlots: { customRender: 'action' },
            width: 200
          }
        ],
        monitorType: '',
        planId: '',
        isEdit: false,
        isAdd: false,
        isDel: false,
        url: {
          list: '/eam/predictiveworkplan/pagePredictiveWorkPlan',
          delete: '/eam/predictiveworkplan/delete',
          versionTakeEffect: '/eam/predictiveworkplan/versionTakeEffect'
        }
      }
    },
    methods: {
      clickThenSelect(record) {
        return {
          on: {
            click: () => {
              this.onSelectChange(record.id.split(','), [record])
            }
          }
        }
      },
      onClearSelected() {
        this.selectedRowKeys = []
        this.selectionRows = []
        this.planId = ''
        this.equipmentId = ''
        this.isAdd = falses
      },
      handleDelete: function(id) {
        if (!this.url.delete) {
          this.$message.error('请设置url.delete属性!')
          return
        }
        var that = this
        deleteAction(that.url.delete, { id: id }).then((res) => {
          if (res.success) {
            //重新计算分页问题
            that.reCalculatePage(1)
            that.$message.success(res.message)
            that.loadData()
            that.onClearSelected()
          } else {
            that.$message.warning(res.message)
          }
        })
      },
      onSelectChange(selectedRowKeys, selectionRows) {
        this.selectedRowKeys = selectedRowKeys
        this.selectionRows = selectionRows
        this.planId = this.selectedRowKeys[0]
        this.equipmentId = selectionRows[0].equipment_id
        this.isAdd = selectionRows[0].status=='1';
        this.isDel = selectionRows[0].status=='1';
        this.isEdit = selectionRows[0].status=='1';
      },
      onChange(e) {
        this.queryParam.status = e.target.value
        this.loadData()
      },
      handleEdit: function(record) {
        this.$refs.modalForm.edit(record)
        this.$refs.modalForm.title = '编辑'
        this.$refs.modalForm.disableSubmit = false
        this.$refs.modalForm.isRevise = false
      },
      handleAdd: function() {
        this.$refs.modalForm.add()
        this.$refs.modalForm.title = '新增'
        this.$refs.modalForm.disableSubmit = false
        this.$refs.modalForm.isRevise = false
      },
      //升版
      handleRevise: function(record) {
        this.$refs.modalForm.edit(record)
        this.$refs.modalForm.title = '升级'
        this.$refs.modalForm.disableSubmit = false
        this.$refs.modalForm.isRevise = true
      },
      //生效
      handleTakeEffect(record) {
        const that = this
        that.confirmLoading = true
        this.$confirm({
          title: '版本生效!',
          content: '提示:版本生效后上一版本将自动失效,请谨慎操作!',
          okText: '确认',
          cancelText: '取消',
          onOk() {
            requestPut(that.url.versionTakeEffect, {
              id: record.id,
              num: record.num,
              status: '2'
            }).then((res) => {
              if (res.success) {
                that.$message.success('版本生效成功!')
                that.loadData(1)
              } else {
                that.$message.warning('版本生效失败!')
              }
            }).finally(() => {
              that.confirmLoading = false
            })
          }
        })
      },
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
  .table-operator .ant-btn {
    margin: 10px 8px 8px 10px;
  }
</style>