1、调整保养规范流程审批明细展示以及增加审批节点拒绝时的展示条件
2、保养规范页面增加详情展示(启用、待提交以及作废状态不展示)
已修改4个文件
337 ■■■■■ 文件已修改
src/views/eam/base/EamMaintenanceStandardList.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/modules/EamMaintenanceStandardModal.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/FlowTodo.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/EamMaintenanceStandardList.vue
@@ -117,12 +117,18 @@
              </a-popconfirm>
          </template>
          <template v-if="record.standardStatus != 'WAIT_SUBMIT'">
          <template v-if="record.standardStatus !== 'WAIT_SUBMIT'">
            <a-divider v-has="'standard:delete'" type="vertical" v-if="record.standardStatus=='START'"/>
          <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
            <a v-has="'standard:delete'" @click.stop="event=>event.stopPropagation()">删除</a>
          </a-popconfirm>
          </template>
          <template v-if="record.standardStatus !== 'WAIT_SUBMIT'&&record.standardStatus!=='ABOLISH'&&record.standardStatus!=='START'">
            <a-divider type="vertical"/>
            <a @click.stop="handleDetail(record)">详情</a>
          </template>
        </span>
      </a-table>
@@ -160,6 +166,9 @@
    <!-- 表单区域 -->
    <eamMaintenanceStandard-modal ref="modalForm" @ok="modalFormOk"/>
    <!--审批窗口-->
    <maintenance-standard-approval-modal ref="maintenanceStandardApprovalModal" :selectShenpiData="selectedRowData"/>
  </a-card>
</template>
@@ -170,6 +179,8 @@
  import EamMaintenanceStandardDetailList from '@views/eam/base/modules/EamMaintenanceStandardDetailList'
  import { deleteAction, getAction, templateXlsDownload } from '@api/manage'
  import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue'
  import MaintenanceStandardApprovalModal
    from '../../flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal'
  export default {
@@ -182,6 +193,7 @@
      }
    },
    components: {
      MaintenanceStandardApprovalModal,
      LxSearchEquipmentSelect,
      EamMaintenanceStandardModal,
      EamMaintenanceStandardDetailList
@@ -190,6 +202,7 @@
      return {
        description: '保养规范页面',
        disableMixinCreated: true,
        selectedRowData: {},
        // 表头
        columns: [
          {
@@ -357,13 +370,28 @@
          })
      },
      /**
       * 点击升版时触发时触发
       * @param record
       */
      handleUpgrade(record) {
        //升版
        this.$refs.modalForm.upgrade(record)
        this.$refs.modalForm.title = '升版'
        this.$refs.modalForm.disableSubmit = false
      },
      /**
       * 点击详情时触发时触发
       * @param record
       */
      handleDetail(record) {
        this.selectedRowData = Object.assign({}, record)
        this.$refs.maintenanceStandardApprovalModal.title = '详情'
        this.$refs.maintenanceStandardApprovalModal.disableSubmit = true
        this.$refs.maintenanceStandardApprovalModal.visible = true
        this.$refs.maintenanceStandardApprovalModal.handleDetail(record)
      },
      batchDel() {
        var ids = ''
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
src/views/eam/base/modules/EamMaintenanceStandardModal.vue
@@ -248,6 +248,7 @@
              title: '保养部位',
              key: 'itemPart',
              type: JVXETypes.textarea,
              placeholder: '请输入${title}',
              slotName: 'itemPart',
              align: 'center',
              validateRules: [{ required: true, message: '请输入${title}' }]
src/views/flowable/workflow/FlowTodo.vue
@@ -278,9 +278,8 @@
      handleMaintenanceStandard(record) {
        this.selectedRowData = Object.assign({}, record)
        this.$refs.maintenanceStandardApprovalModal.visible = true
        this.$refs.maintenanceStandardApprovalModal.title = '保养规范'
        this.$refs.maintenanceStandardApprovalModal.getAllApproveData(record)
        this.$refs.maintenanceStandardApprovalModal.getBasicInformation(record)
        this.$refs.maintenanceStandardApprovalModal.title = record.name
        this.$refs.maintenanceStandardApprovalModal.handleApprove(record)
      },
      /**
src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue
@@ -3,7 +3,7 @@
           :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="submitForm"
           @cancel="handleCancel" :mask-closable="false" :confirmLoading="confirmLoading">
    <a-spin :spinning="spinning">
      <a-form-model ref='form' :model='tableRowRecord' :labelCol="labelCol" :wrapperCol="wrapperCol"
      <a-form-model ref='form' :model='model' :labelCol="labelCol" :wrapperCol="wrapperCol"
                    :rules="validatorRules">
        <a-row :gutter="24" id="outer-row">
          <a-col :span="8" class="scroll-col">
@@ -12,12 +12,12 @@
                <a-row>
                  <a-col :span="span">
                    <a-form-model-item prop="standardCode" label="规范编码">
                      <a-input v-model="tableRowRecord.standardCode" readOnly/>
                      <a-input v-model="model.standardCode" readOnly/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="span">
                    <a-form-model-item prop="standardName" label="规范名称">
                      <a-input v-model="tableRowRecord.standardName" readOnly/>
                      <a-input v-model="model.standardName" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -25,12 +25,12 @@
                <a-row>
                  <a-col :span='span'>
                    <a-form-model-item label="统一编码">
                      <a-input v-model="tableRowRecord.equipmentCode" readOnly/>
                      <a-input v-model="model.equipmentCode" readOnly/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span='span'>
                    <a-form-model-item label="保养分类">
                      <a-input v-model="tableRowRecord.maintenanceCategory_dictText" readOnly/>
                      <a-input v-model="model.maintenanceCategory_dictText" readOnly/>
                    </a-form-model-item>
                  </a-col>
@@ -39,12 +39,12 @@
                <a-row>
                  <a-col :span='span'>
                    <a-form-model-item label="保养周期单位">
                      <a-input v-model="tableRowRecord.periodUnit" readOnly/>
                      <a-input v-model="model.periodUnit" readOnly/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span='span'>
                    <a-form-model-item label="保养周期">
                      <a-input v-model="tableRowRecord.maintenancePeriod" readOnly/>
                      <a-input v-model="model.maintenancePeriod" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -52,12 +52,12 @@
                <a-row>
                  <a-col :span='span'>
                    <a-form-model-item label="初始日期">
                      <a-input v-model="tableRowRecord.initialDate" readOnly/>
                      <a-input v-model="model.initialDate" readOnly/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span='span'>
                    <a-form-model-item label="规范状态">
                      <a-input v-model="tableRowRecord.standardStatus_dictText" readOnly/>
                      <a-input v-model="model.standardStatus_dictText" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -65,7 +65,7 @@
                <a-row>
                  <a-col :span="span">
                    <a-form-model-item label="规范版本">
                      <a-input v-model="tableRowRecord.standardVersion" readOnly/>
                      <a-input v-model="model.standardVersion" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -76,9 +76,8 @@
          <a-col :span="10" class="scroll-col">
            <a-tabs default-active-key="1">
              <a-tab-pane key="1" tab="保养项明细">
                <j-vxe-table ref="editableDetailTable" :rowNumber="false" :bordered="true"
                             :alwaysEdit="true" :toolbar="false" keep-source :loading="detail.loading"
                             :dataSource="detail.dataSource" :columns="detail.columns">
                <j-vxe-table ref="editableDetailTable" bordered alwaysEdit keep-source :dataSource="detail.dataSource"
                             :columns="detail.columns">
                  <template v-slot:itemCategory="props">
                    <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/>
                  </template>
@@ -94,41 +93,43 @@
          </a-col>
          <a-col :span="6" class="scroll-col">
            <a-tabs>
            <a-tabs v-if="displayRepairLeaderFlag">
              <a-tab-pane tab="维修主任审批">
                <a-row :gutter="24">
                  <a-col :span="24">
                    <a-form-model-item prop="repairManagerApproveResult" label="处理类型">
                      <j-dict-select-tag type='radio' v-model='tableRowRecord.repairManagerApproveResult'
                                         dictCode='approved_rejected'
                                         :disabled="disableSubmit||tableRowRecord.standardStatus!=='WAIT_REPAIR_DIRECTOR'"/>
                    <a-form-model-item prop="repairManagerApproveResult" label="确认类型">
                      <j-dict-select-tag type='radio' v-model='model.repairManagerApproveResult'
                                         dictCode='approve_reject'
                                         :disabled="disableSubmit||model.standardStatus!=='WAIT_REPAIR_DIRECTOR'"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item label="处理意见">
                    <a-form-model-item label="确认意见">
                      <a-textarea placeholder="请输入意见"
                                  :disabled="disableSubmit||tableRowRecord.standardStatus!=='WAIT_REPAIR_DIRECTOR'"
                                  v-model="tableRowRecord.repairManagerApproveComment"/>
                                  :disabled="disableSubmit||model.standardStatus!=='WAIT_REPAIR_DIRECTOR'"
                                  v-model="model.repairManagerApproveComment"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
              </a-tab-pane>
            </a-tabs>
            <a-tabs v-if="tableRowRecord.standardStatus&&tableRowRecord.standardStatus!=='WAIT_REPAIR_DIRECTOR'">
            <a-tabs v-if="displayTechnicalDirectorFlag">
              <a-tab-pane tab="技术主管审批">
                <a-row :gutter="24">
                  <a-col :span="24">
                    <a-form-model-item prop="technicalManagerApproveResult" label="处理类型">
                      <j-dict-select-tag type='radio' v-model='tableRowRecord.technicalManagerApproveResult'
                                         dictCode='approved_rejected'/>
                    <a-form-model-item prop="technicalManagerApproveResult" label="确认类型">
                      <j-dict-select-tag type='radio' v-model='model.technicalManagerApproveResult'
                                         dictCode='approve_reject'
                                         :disabled="disableSubmit||model.standardStatus!=='WAIT_TECHNICAL_DIRECTOR'"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item label="处理意见">
                      <a-textarea placeholder="请输入意见" v-model="tableRowRecord.technicalManagerApproveComment"/>
                    <a-form-model-item label="确认意见">
                      <a-textarea placeholder="请输入意见" v-model="model.technicalManagerApproveComment"
                                  :disabled="disableSubmit||model.standardStatus!=='WAIT_TECHNICAL_DIRECTOR'"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -142,10 +143,9 @@
</template>
<script>
  import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage'
  import { getAction, downFile, httpAction } from '@api/manage'
  import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
  import { JVXETypes } from '@comp/jeecg/JVxeTable'
  import moment from 'moment'
  export default {
    name: 'MaintenanceStandardApprovalModal',
@@ -160,14 +160,10 @@
        span: 12,
        confirmLoading: false,
        spinning: false,
        tableRowRecord: {},
        model: {},
        validatorRules: {
          repairManagerApproveResult: [
            { required: true, message: '请选择处理类型' }
          ],
          technicalManagerApproveResult: [
            { required: true, message: '请选择处理类型' }
          ]
          repairManagerApproveResult: [{ required: true, message: '请选择确认类型' }],
          technicalManagerApproveResult: [{ required: true, message: '请选择确认类型' }]
        },
        imageSrc: null,
        labelCol: {
@@ -188,10 +184,9 @@
          detailList: '/eam/eamMaintenanceStandardDetail/queryList'
        },
        detail: {
          loading: false,
          dataSource: [],
          columns: [],
          defaultColumns: [
          inspectionColumns: [
            {
              title: 'ID',
              key: 'id',
@@ -205,37 +200,90 @@
            {
              title: '项目序号',
              key: 'itemCode',
              type: JVXETypes.inputNumber,
              align: 'center',
              disabled: true
            },
            {
              title: '部位',
              key: 'itemPart',
              type: JVXETypes.textarea,
              align: 'center',
              disabled: true
              type: JVXETypes.normal,
              align: 'center'
            },
            {
              title: '保养项分类',
              key: 'itemCategory',
              type: JVXETypes.slot,
              slotName: 'itemCategory',
              align: 'center'
              align: 'center',
              disabled: true
            },
            {
              title: '保养项目',
              key: 'itemName',
              type: JVXETypes.textarea,
              align: 'center',
              disabled: true
              type: JVXETypes.normal,
              align: 'center'
            },
            {
              title: '保养规范或要求',
              key: 'itemDemand',
              type: JVXETypes.textarea,
              type: JVXETypes.normal,
              align: 'center'
            }
          ],
          secondMaintenanceColumns: [
            {
              title: 'ID',
              key: 'id',
              type: JVXETypes.hidden
            },
            {
              title: 'standardId',
              key: 'standardId',
              type: JVXETypes.hidden
            },
            {
              title: '项目序号',
              key: 'itemCode',
              type: JVXETypes.normal,
              align: 'center'
            },
            {
              title: '保养项分类',
              key: 'itemCategory',
              type: JVXETypes.slot,
              slotName: 'itemCategory',
              align: 'center',
              disabled: true
            },
            {
              title: '保养项目',
              key: 'itemName',
              type: JVXETypes.normal,
              align: 'center'
            }
          ],
          thirdMaintenanceColumns: [
            {
              title: 'ID',
              key: 'id',
              type: JVXETypes.hidden
            },
            {
              title: 'standardId',
              key: 'standardId',
              type: JVXETypes.hidden
            },
            {
              title: '保养部位',
              key: 'itemPart',
              type: JVXETypes.normal,
              align: 'center'
            },
            {
              title: '保养内容',
              key: 'itemName',
              type: JVXETypes.normal,
              align: 'center'
            },
            {
              title: '验收标准',
              key: 'itemDemand',
              type: JVXETypes.normal,
              align: 'center'
            }
          ]
        },
@@ -244,17 +292,36 @@
      }
    },
    watch: {
      'tableRowRecord.maintenanceCategory': {
      'model.maintenanceCategory': {
        handler(val) {
          if (val) {
            if (val != 'THIRD_MAINTENANCE') this.detail.columns = [...this.detail.defaultColumns.filter(item => item.key != 'itemPart')]
            else this.detail.columns = [...this.detail.defaultColumns.filter(item => item.key != 'itemCategory')]
            console.log('val', val)
            switch (val) {
              case 'POINT_INSPECTION':
                this.detail.columns = this.detail.inspectionColumns
                break
              case 'SECOND_MAINTENANCE':
                this.detail.columns = this.detail.secondMaintenanceColumns
                break
              case 'THIRD_MAINTENANCE':
                this.detail.columns = this.detail.thirdMaintenanceColumns
                break
              default:
                break
            }
          }
          else this.detail.columns = [...this.detail.defaultColumns]
        }
      }
    },
    computed: {
      displayRepairLeaderFlag() {
        return this.model.standardStatus && ['WAIT_REPAIR_DIRECTOR', 'WAIT_TECHNICAL_DIRECTOR', 'REJECTED'].includes(this.model.standardStatus)
      },
      displayTechnicalDirectorFlag() {
        return this.model.standardStatus && ['WAIT_TECHNICAL_DIRECTOR', 'REJECTED'].includes(this.model.standardStatus) && this.model.repairManagerApproveResult === '1'
      },
      encodedDictCode() {
        const dictCode = `sys_dict_item,item_text,item_value,dict_id='1940598438685134850'`
        return encodeURIComponent(dictCode)
@@ -262,39 +329,75 @@
    },
    methods: {
      /**
       * 获取流程节点和流程图
       * @param record 待办记录信息
       * 主页面点击执行审批时触发
       * @param record 主页面列表行记录
       */
      getAllApproveData(record) {
        if (record.procInstId) {
          const { processDefinitionId, processInstanceId, processDefinitionKey, procInstId } = record
          const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey }
          const that = this
          this.imageSrc = null
          downFile(this.url.diagramView, imageParam, 'get')
            .then((res => {
              const urlObject = window.URL.createObjectURL(new Blob([res]))
              that.imageSrc = urlObject
            }))
            .finally(() => {
              this.spinning = false
            })
        }
      handleApprove(record) {
        this.getBasicInformationByApi(record)
        this.getFlowChartImageByApi(record)
      },
      /**
       * 获取待办记录的基本信息
       * @param record 待办记录信息
       * 主页面点击详情时触发
       * @param record 主页面列表行记录
       */
      async getBasicInformation(record) {
      handleDetail(record) {
        this.detail.dataSource = []
        this.tableRowRecord = {}
        this.model = Object.assign({}, record)
        this.loadDetail(record.id)
      },
      /**
       * 获取基础信息
       * @param record 主页面列表行记录
       */
      getBasicInformationByApi(record) {
        this.spinning = true
        const param = { id: record.dataId }
        let res = await getAction(this.url.queryById, param)
        this.tableRowRecord = Object.assign({}, res.result.records[0])
        await this.loadDetail(record.dataId)
        this.model = {}
        this.detail.dataSource = []
        const that = this
        getAction(this.url.queryById, { id: record.dataId })
          .then(res => {
            if (res.success) {
              that.model = Object.assign({}, res.result.records[0])
              that.model.dataId = record.dataId
              that.model.taskId = record.id
              that.model.userId = record.assignee
              that.model.instanceId = record.procInstId
            }
            else {
              that.$notification.warning({
                message: '消息',
                description: res.message
              })
            }
          })
          .finally(() => {
            this.loadDetail(record.dataId)
          })
      },
      /**
       * 获取流程图
       * @param record 主页面列表行记录
       */
      getFlowChartImageByApi(record) {
        const { processDefinitionId, processInstanceId, processDefinitionKey } = record
        this.imageSrc = null
        downFile(this.url.diagramView, {
          processDefinitionId,
          processInstanceId,
          TaskDefinitionKey: processDefinitionKey
        }, 'get')
          .then((res => {
            this.imageSrc = window.URL.createObjectURL(new Blob([res]))
          }))
          .catch(err => {
            this.$notification.error({
              message: '消息',
              description: err.message
            })
          })
      },
      /**
@@ -302,14 +405,13 @@
       * @param dataId 业务ID
       */
      loadDetail(dataId) {
        if (dataId) {
          getAction(this.url.detailList, { standardId: dataId })
            .then(res => {
              if (res.success) {
                this.detail.dataSource = [...res.result]
              }
            })
        }
        getAction(this.url.detailList, { standardId: dataId })
          .then(res => {
            if (res.success) this.detail.dataSource = res.result
          })
          .finally(() => {
            this.spinning = false
          })
      },
      async submitForm() {
@@ -321,21 +423,8 @@
        this.$refs.form.validate(valid => {
          if (valid) {
            this.confirmLoading = this.spinning = true
            const flowTaskVo = {}
            flowTaskVo.dataId = this.selectShenpiData.dataId
            flowTaskVo.taskId = this.selectShenpiData.id
            flowTaskVo.userId = this.selectShenpiData.assignee
            flowTaskVo.instanceId = this.selectShenpiData.procInstId
            if (this.tableRowRecord.standardStatus == 'WAIT_REPAIR_DIRECTOR') {
              flowTaskVo.repairManagerApproveResult = this.tableRowRecord.repairManagerApproveResult
              flowTaskVo.repairManagerApproveComment = this.tableRowRecord.repairManagerApproveComment
            } else {
              flowTaskVo.technicalManagerApproveResult = this.tableRowRecord.technicalManagerApproveResult
              flowTaskVo.technicalManagerApproveComment = this.tableRowRecord.technicalManagerApproveComment
            }
            const that = this
            console.log('表单提交数据', flowTaskVo)
            httpAction(this.url.approve, flowTaskVo, 'post')
            httpAction(this.url.approve, that.model, 'post')
              .then((res) => {
                if (res.success) {
                  that.$notification.success({