已添加6个文件
已修改20个文件
2940 ■■■■■ 文件已修改
src/views/eam/base/EamMaintenanceStandardList.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/EamRepairDepartList.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/equipment/EamEquipmentLedger.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/maintenance/EamInspectionOrderList.vue 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderDetailModal.vue 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/repair/EamRepairPersonList.vue 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/repair/EamReportRepairList.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/repair/modules/EamRepairPersonForm.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/repair/modules/EamRepairPersonModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/repair/modules/EamRepairPersonModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/technical/EamTechnicalStatusEvaluationOrderChangeList.vue 389 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/technical/EamTechnicalStatusEvaluationOrderList.vue 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/technical/modules/EamTechnicalStatusEvaluationOrderChangeModal.vue 226 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/modeler/modelerDesign.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/FlowCompleted.vue 404 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/FlowLedger.vue 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/FlowTodo.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationApprovalModal.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue 364 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/EamMaintenanceStandardList.vue
@@ -102,8 +102,8 @@
              <a-divider v-has="'standard:edit'" type="vertical"/>
              <a-popconfirm title="确定发起流程吗?" @confirm="() => startProcess(record.id)">
                  <a v-has="'standard:saveFlow'" @click.stop="event=>event.stopPropagation()">发起流程</a>
              <a-popconfirm title="确定提交吗?" @confirm="() => startProcess(record.id)">
                  <a v-has="'standard:saveFlow'" @click.stop="event=>event.stopPropagation()">提交</a>
              </a-popconfirm>
src/views/eam/base/EamRepairDepartList.vue
@@ -7,11 +7,6 @@
        <a-row style="margin-left: 14px">
          <a-button @click="handleAdd(1)" type="primary">添加维修部门</a-button>
          <a-button @click="handleAdd(2)" type="primary">添加下级</a-button>
          <a-button type="primary" icon="download" @click="handleExportXls('维修部门信息')">导出</a-button>
          <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
                    :action="importExcelUrl" @change="handleImportExcel">
            <a-button type="primary" icon="import">导入</a-button>
          </a-upload>
          <a-button @click="handleDelete" v-if="selectedKeys.length>0">删除</a-button>
          <a-button title="删除多条数据" @click="batchDel" v-if="checkedKeys.length>0">批量删除</a-button>
          <!--<a-button @click="refresh" type="default" icon="reload" :loading="loading">刷新</a-button>-->
src/views/eam/equipment/EamEquipmentLedger.vue
@@ -102,7 +102,7 @@
        <!--使用部门-->
        <template slot="factoryOrgCode" slot-scope="text,record">
          {{[record.gsfactoryOrgCode_dictText,record.zxfactoryOrgCode_dictText,record.gqfactoryOrgCode_dictText,record.factoryOrgCode_dictText].filter(item=>item).join('/')}}
          {{[record.zxfactoryOrgCode_dictText,record.gqfactoryOrgCode_dictText,record.factoryOrgCode_dictText].filter(item=>item).join('/')}}
        </template>
        <!--安装位置-->
@@ -220,7 +220,6 @@
          },
          {
            title: '使用部门',
            align: 'center',
            dataIndex: 'factoryOrgCode',
            scopedSlots: { customRender: 'factoryOrgCode' }
          },
src/views/eam/maintenance/EamInspectionOrderList.vue
@@ -97,7 +97,14 @@
          </a-dropdown>
          </template>
          <a v-else @click="handleDetail(record)">详情</a>
          <template v-else>
            <template v-if="record.inspectionStatus=='COMPLETE'">
              <a @click="handlePrint(record)">预览</a>
              <a-divider type="vertical"/>
            </template>
             <a @click="handleDetail(record)">详情</a>
          </template>
        </span>
      </a-table>
    </div>
@@ -143,22 +150,26 @@
            align: 'center',
            customRender: function(t, r, index) {
              return parseInt(index) + 1
            }
            },
            fixed: 'left'
          },
          {
            title: '统一编码',
            align: 'center',
            dataIndex: 'equipmentCode'
            dataIndex: 'equipmentCode',
            fixed: 'left'
          },
          {
            title: '设备名称',
            align: 'center',
            dataIndex: 'equipmentName'
            dataIndex: 'equipmentName',
            fixed: 'left'
          },
          {
            title: '设备型号',
            align: 'center',
            dataIndex: 'equipmentModel'
            dataIndex: 'equipmentModel',
            fixed: 'left'
          },
          {
            title: '工单号',
@@ -176,7 +187,8 @@
            dataIndex: 'inspectionDate',
            customRender: function(text) {
              return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text)
            }
            },
            width: 150
          },
          {
            title: '点检过期日期',
@@ -184,7 +196,8 @@
            dataIndex: 'expirationTime',
            customRender: function(text) {
              return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text)
            }
            },
            width: 150
          },
          {
            title: '创建方式',
@@ -204,7 +217,8 @@
          {
            title: '点检时间',
            align: 'center',
            dataIndex: 'operateTime'
            dataIndex: 'operateTime',
            width: 150
          },
          {
            title: '维修工',
@@ -214,12 +228,14 @@
          {
            title: '确认时间',
            align: 'center',
            dataIndex: 'confirmTime'
            dataIndex: 'confirmTime',
            width: 150
          },
          {
            title: 'HF编码',
            align: 'center',
            dataIndex: 'hfCode'
            dataIndex: 'hfCode',
            width: 250
          }
        ],
        url: {
@@ -244,7 +260,8 @@
        title: '操作',
        dataIndex: 'action',
        align: 'center',
        scopedSlots: { customRender: 'action' }
        scopedSlots: { customRender: 'action' },
        fixed: 'right'
      }
      this.columns = [...this.columns, operationColumn]
      this.loadData(1)
@@ -261,8 +278,7 @@
        this.$refs.modalFormXq.visible = true
        this.$refs.modalFormXq.title = '详情'
        this.$refs.modalFormXq.disableSubmit = true
        this.$refs.modalFormXq.getAllApproveData(record)
        this.$refs.modalFormXq.getBasicInformation({ ...record, dataId: record.id })
        this.$refs.modalFormXq.handleDetail(record)
      },
      handleInspection(id) {
@@ -303,6 +319,7 @@
          }
        })
      },
      batchZf(type) {
        var ids = ''
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
@@ -335,6 +352,7 @@
          }
        })
      },
      batchLq(type) {
        var ids = ''
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
@@ -368,6 +386,12 @@
          }
        })
      },
      handlePrint(record) {
        let href = `${window._CONFIG['domianURL']}/jmreport/view/1105664887569121280?equipmentCode=` + record.equipmentCode
        window.open(href, '_blank')
      },
      onInspectionDateChange: function(value, dateString) {
        this.queryParam.inspectionDateBegin = dateString[0]
        this.queryParam.inspectionDateEnd = dateString[1]
src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue
@@ -50,6 +50,10 @@
            <a-icon type="form"/>
            é¢†å–
          </a-menu-item>
          <a-menu-item key="3" @click="handlerBatchRestore">
            <a-icon type="form"/>
            è¿˜åŽŸ
          </a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> æ‰¹é‡æ“ä½œ
          <a-icon type="down"/>
@@ -81,18 +85,31 @@
            <a-divider type="vertical"/>
            <a @click="handleDetail(record)">详情</a>
            <a-divider type="vertical"/>
            <a-popconfirm title="确定作废吗?" @confirm="() => handlerAbolish(record.id)">
              <a>作废</a>
            </a-popconfirm>
            <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
            <a-menu slot="overlay">
              <a-menu-item>
                <a-popconfirm title="确定作废吗?" @confirm="() => handleAbolish(record.id)">
                  <a>作废</a>
                </a-popconfirm>
              </a-menu-item>
               <a-menu-item>
                <a @click="handleDetail(record)">详情</a>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
          </template>
          <template v-else>
            <a @click="handleDetail(record)">详情</a>
            <a-divider v-if="record.maintenanceStatus === 'ABOLISH'" type="vertical"/>
            <a-popconfirm v-if="record.maintenanceStatus === 'ABOLISH'" title="确定还原吗?" @confirm="() => handlerRestore(record.id)">
              <a>还原</a>
            </a-popconfirm>
            <a-divider type="vertical" v-if="record.maintenanceStatus === 'COMPLETE'"/>
            <a v-if="record.maintenanceStatus === 'COMPLETE'" @click="handlePrint(record)">打印</a>
          </template>
@@ -246,8 +263,10 @@
          list: '/eam/secondMaintenanceOrder/list',
          abolish: '/eam/secondMaintenanceOrder/abolish',
          collect: '/eam/secondMaintenanceOrder/collect',
          restore:'/eam/secondMaintenanceOrder/restore',
          abolishBatch: '/eam/secondMaintenanceOrder/abolishBatch',
          collectBatch: '/eam/secondMaintenanceOrder/collectBatch'
          collectBatch: '/eam/secondMaintenanceOrder/collectBatch',
          restoreBatch: '/eam/secondMaintenanceOrder/restoreBatch',
        }
      }
    },
@@ -368,6 +387,76 @@
          }
        })
      },
      //还原
      handlerRestore(id){
        let that = this
        this.loading = true
        getAction(that.url.restore, { id })
          .then((res) => {
            if (res.success) {
              that.$notification.success({
                message: '消息',
                description: res.message
              })
              that.loadData()
            } else {
              that.$notification.warning({
                message: '消息',
                description: res.message
              })
              this.loading = false
            }
          })
      },
      //批量还原
      handlerBatchRestore(){
        if (!this.url.restoreBatch) {
          this.$message.error('请设置url.restoreBatch属性!')
          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.restoreBatch, { 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
              })
            }
          })
        }
      },
      //批量领取
      handlerBatchCollect() {
        if (!this.url.collectBatch) {
src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderDetailModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
<template>
  <j-modal :title="title" :width="1200" :visible="visible" switchFullscreen centered
           :okButtonProps="{ class:{'jee-hidden': true} }" @cancel="handleCancel"
           cancelText="关闭">
    <a-spin :spinning="spinning">
      <a-tabs default-active-key="1">
        <a-tab-pane tab="操作工" key="1">
          <j-vxe-table rowNumber bordered keep-source :height="500" :dataSource="detail.operatorMaintenanceList"
                       :columns="detail.columns"/>
        </a-tab-pane>
        <a-tab-pane tab="维修工" key="2" forceRender>
          <j-vxe-table rowNumber bordered keep-source :height="500" :dataSource="detail.repairerMaintenanceList"
                       :columns="detail.columns"/>
        </a-tab-pane>
      </a-tabs>
    </a-spin>
  </j-modal>
</template>
<script>
  import { getAction, httpAction } from '@/api/manage'
  import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
  import { JVXETypes } from '@comp/jeecg/JVxeTable'
  export default {
    name: 'EamSecondMaintenanceBatchOrderDetailModal',
    components: { MaintenanceEquipmentSelect },
    data() {
      return {
        title: '预览明细',
        visible: false,
        spinning: false,
        url: {
          standardDetail: '/eam/eamMaintenanceStandardDetail/queryList'
        },
        detail: {
          operatorMaintenanceList: [],
          repairerMaintenanceList: [],
          columns: [
            {
              title: 'ID',
              key: 'id',
              type: JVXETypes.hidden
            },
            {
              title: 'orderId',
              key: 'orderId',
              type: JVXETypes.hidden
            },
            {
              title: '序号',
              key: 'itemCode',
              type: JVXETypes.normal,
              width: 60,
              align: 'center'
            },
            {
              title: '保养项',
              key: 'itemName',
              type: JVXETypes.normal,
              align: 'center'
            }
          ]
        }
      }
    },
    methods: {
      /**
       * èŽ·å–ä¿å…»è§„èŒƒæ•°æ®
       * @param standardId è§„范Id
       */
      loadStandardDetail(standardId) {
        this.spinning = true
        getAction(this.url.standardDetail, { standardId })
          .then(res => {
            if (res.success) {
              this.detail.operatorMaintenanceList = res.result.filter(item => item.itemCategory == 'OPERATOR_MAINTENANCE')
              this.detail.repairerMaintenanceList = res.result.filter(item => item.itemCategory == 'REPAIRER_MAINTENANCE')
            }
          })
          .finally(() => {
            this.spinning = false
          })
      },
      handleCancel() {
        this.close()
      },
      close() {
        this.$emit('close')
        this.visible = false
      }
    }
  }
</script>
src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue
@@ -2,21 +2,41 @@
  <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered
           :mask-closable="false" @ok="handleOk" @cancel="handleCancel" cancelText="关闭">
    <a-spin :spinning="spinning">
      <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit toolbar @added="addNewRow"
      <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit toolbar
                   :toolbarConfig="detail.toolbarConfig" keep-source :height="500"
                   :dataSource="detail.dataSource" :columns="detail.columns"/>
                   :dataSource="detail.dataSource" :columns="detail.columns">
        <!--统一编码-->
        <template v-slot:equipmentId="props">
          <maintenance-equipment-select placeholder="请输入统一编码或名称搜索" v-model="props.row.equipmentId"
                                        maintenanceCategory="SECOND_MAINTENANCE" :allowClear="false"
                                        @autocompleteForm="autocompleteForm($event,props.row)"/>
        </template>
        <!-- ä¿å…»æ—¥æœŸ-->
        <template v-slot:maintenanceDate="props">
          <a-date-picker v-model="props.row.maintenanceDate" value-format="YYYY-MM-DD"/>
        </template>
        <!-- æ“ä½œ-->
        <template v-slot:action="props">
          <a :disabled="!props.row.equipmentId" @click="handlePreviewDetail(props.row.standardId)">预览明细</a>
        </template>
      </j-vxe-table>
    </a-spin>
    <eam-second-maintenance-batch-order-detail-modal ref="detailModal"/>
  </j-modal>
</template>
<script>
  import { getAction, httpAction } from '@/api/manage'
  import { postAction } from '@/api/manage'
  import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
  import { JVXETypes } from '@comp/jeecg/JVxeTable'
  import EamSecondMaintenanceBatchOrderDetailModal from './EamSecondMaintenanceBatchOrderDetailModal'
  export default {
    name: 'EamSecondMaintenanceBatchOrderModal',
    components: { MaintenanceEquipmentSelect },
    components: { EamSecondMaintenanceBatchOrderDetailModal, MaintenanceEquipmentSelect },
    data() {
      return {
        title: '操作',
@@ -36,39 +56,63 @@
            },
            {
              title: '工单号',
              dataIndex: 'orderNum',
              key: 'orderNum',
              align: 'center',
              type: JVXETypes.inputNumber,
              disabled: true,
              placeholder: '工单号系统自动生成'
              placeholder: '${title}系统自动生成',
              width: 200
            },
            {
              title: '统一编码',
              dataIndex: 'equipmentId',
              key: 'equipmentId',
              align: 'center',
              type: JVXETypes.slot,
              slotName: 'equipmentId'
              slotName: 'equipmentId',
              width: 300,
              validateRules: [
                { required: true, message: '请输入${title}或名称搜索' },
                { unique: true, message: '${title}不能重复' }
              ]
            },
            {
              title: '规范名称',
              dataIndex: 'standardName',
              key: 'standardName',
              align: 'center',
              type: JVXETypes.input,
              disabled: true,
              placeholder: '选择设备后自动带出'
              type: JVXETypes.normal,
              width: 200
            },
            {
              title: '保养日期',
              dataIndex: 'maintenanceDate',
              key: 'maintenanceDate',
              align: 'center',
              type: JVXETypes.date
              type: JVXETypes.slot,
              width: 200,
              slotName: 'maintenanceDate',
              validateRules: [{ required: true, message: '请选择${title}' }]
            },
            {
              title: '保养周期',
              dataIndex: 'maintenancePeriod',
              key: 'maintenancePeriod',
              align: 'center',
              type: JVXETypes.inputNumber,
              defaultValue: '6'
              type: JVXETypes.normal,
              width: 150
            },
            {
              title: '备注',
              key: 'remark',
              align: 'center',
              type: JVXETypes.textarea,
              placeholder: '请输入备注',
              width: 300
            },
            {
              title: '操作',
              align: 'center',
              type: JVXETypes.slot,
              width: 150,
              slotName: 'action',
              fixed: 'right'
            }
          ],
          toolbarConfig: {
@@ -89,57 +133,52 @@
        this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = []
      },
      addNewRow({ row }) {
        console.log('row', row)
        row.maintenancePeriod = 6
        this.$refs.editableDetailTable.updateData()
      handlePreviewDetail(standardId) {
        this.$refs.detailModal.visible = true
        this.$refs.detailModal.loadStandardDetail(standardId)
      },
      autocompleteForm(selectObj) {
        this.$set(this.model, 'standardName', selectObj.standardName)
        this.$set(this.model, 'standardId', selectObj.id)
        this.$set(this.model, 'equipmentId', selectObj.equipmentId)
        if (!this.model.id) this.loadStandardDetail(selectObj.id)
      autocompleteForm(selectObj, record) {
        this.$set(record, 'standardName', selectObj.standardName)
        this.$set(record, 'standardId', selectObj.id)
        this.$set(record, 'equipmentId', selectObj.equipmentId)
        this.$set(record, 'maintenancePeriod', selectObj.maintenancePeriod)
        this.$refs.editableDetailTable.validateTable()
      },
      async handleOk() {
        const that = this
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = that.spinning = true
            let httpUrl = ''
            let method = ''
            if (!this.model.id) {
              httpUrl += this.url.add
              method = 'post'
        const requests = this.$refs.editableDetailTable.getTableData()
        if (requests.length == 0) {
          this.$notification.warning({
            message: '消息',
            description: '请至少新增一条记录'
          })
          return
        }
        const errMap = await this.$refs.editableDetailTable.validateTable()
        if (errMap) return
        this.confirmLoading = this.spinning = true
        postAction(this.url.batchAdd, requests)
          .then((res) => {
            if (res.success) {
              this.$notification.success({
                message: '消息',
                description: res.message
              })
              this.$emit('ok')
              this.close()
            } else {
              httpUrl += this.url.edit
              method = 'put'
              this.$notification.warning({
                message: '消息',
                description: res.message
              })
            }
            httpAction(httpUrl, this.model, method)
              .then((res) => {
                if (res.success) {
                  that.$notification.success({
                    message: '消息',
                    description: res.message
                  })
                  that.$emit('ok')
                  that.close()
                } else {
                  that.$notification.warning({
                    message: '消息',
                    description: res.message
                  })
                }
              })
              .finally(() => {
                that.confirmLoading = that.spinning = false
              })
          } else {
            return false
          }
        })
          })
          .finally(() => {
            this.confirmLoading = this.spinning = false
          })
      },
      handleCancel() {
@@ -154,3 +193,9 @@
    }
  }
</script>
<style scoped lang="less">
  /deep/ .ant-select-dropdown-menu {
    text-align: left;
  }
</style>
src/views/eam/repair/EamRepairPersonList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,195 @@
<template>
  <a-card :bordered="false">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
        </a-row>
      </a-form>
    </div>
    <!-- æŸ¥è¯¢åŒºåŸŸ-END -->
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator">
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('故障维修人员')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
        <a-button type="primary" icon="import">导入</a-button>
      </a-upload>
      <!-- é«˜çº§æŸ¥è¯¢åŒºåŸŸ -->
      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> æ‰¹é‡æ“ä½œ <a-icon type="down" /></a-button>
      </a-dropdown>
    </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"
        :scroll="{x:true}"
        bordered
        rowKey="id"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        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>
        <span slot="action" slot-scope="text, record">
          <a @click="handleEdit(record)">编辑</a>
          <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>
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
                </a-popconfirm>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
        </span>
      </a-table>
    </div>
    <eam-repair-person-modal ref="modalForm" @ok="modalFormOk"></eam-repair-person-modal>
  </a-card>
</template>
<script>
  import '@/assets/less/TableExpand.less'
  import { mixinDevice } from '@/utils/mixin'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import EamRepairPersonModal from './modules/EamRepairPersonModal'
  export default {
    name: 'EamRepairPersonList',
    mixins:[JeecgListMixin, mixinDevice],
    components: {
      EamRepairPersonModal
    },
    data () {
      return {
        description: '故障维修人员管理页面',
        // è¡¨å¤´
        columns: [
          {
            title: '#',
            dataIndex: '',
            key:'rowIndex',
            width:60,
            align:"center",
            customRender:function (t,r,index) {
              return parseInt(index)+1;
            }
          },
          {
            title:'维修工单Id',
            align:"center",
            dataIndex: 'repairId'
          },
          {
            title:'维修人',
            align:"center",
            dataIndex: 'repairUser'
          },
          {
            title:'是否是主维修人',
            align:"center",
            dataIndex: 'repairPrimary'
          },
          {
            title:'维修时长',
            align:"center",
            dataIndex: 'repairDuration'
          },
          {
            title:'备注',
            align:"center",
            dataIndex: 'remark'
          },
          {
            title: '操作',
            dataIndex: 'action',
            align:"center",
            fixed:"right",
            width:147,
            scopedSlots: { customRender: 'action' }
          }
        ],
        url: {
          list: "/eam/eamRepairPerson/list",
          delete: "/eam/eamRepairPerson/delete",
          deleteBatch: "/eam/eamRepairPerson/deleteBatch",
          exportXlsUrl: "/eam/eamRepairPerson/exportXls",
          importExcelUrl: "eam/eamRepairPerson/importExcel",
        },
        dictOptions:{},
        superFieldList:[],
      }
    },
    created() {
    this.getSuperFieldList();
    },
    computed: {
      importExcelUrl: function(){
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
      },
    },
    methods: {
      initDictConfig(){
      },
      getSuperFieldList(){
        let fieldList=[];
        fieldList.push({type:'string',value:'repairId',text:'维修工单Id',dictCode:''})
        fieldList.push({type:'string',value:'repairUser',text:'维修人',dictCode:''})
        fieldList.push({type:'string',value:'repairPrimary',text:'是否是主维修人',dictCode:''})
        fieldList.push({type:'string',value:'repairDuration',text:'维修时长',dictCode:''})
        fieldList.push({type:'string',value:'remark',text:'备注',dictCode:''})
        this.superFieldList = fieldList
      }
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
</style>
src/views/eam/repair/EamReportRepairList.vue
@@ -58,7 +58,7 @@
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator" v-if="isDisplayOperation">
      <a-button @click="handleAdd" type="primary" icon="plus" v-if="isShowAuth('eam:reportRepair:add')">新增</a-button>
      <a-button @click="handleAdd" type="primary" icon="plus" >新增</a-button>
      <!--<a-button type="primary" icon="download" @click="handleExportXls('故障报修')">导出</a-button>-->
      <!--<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"-->
      <!--@change="handleImportExcel">-->
@@ -66,7 +66,7 @@
      <!--</a-upload>-->
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel" v-if="isShowAuth('eam:reportRepair:abolish')">
          <a-menu-item key="1" @click="batchDel">
            <a-icon type="delete"/>
            ä½œåºŸ
          </a-menu-item>
@@ -103,15 +103,15 @@
        </template>
        <span slot="action" slot-scope="text, record" v-if="record.reportStatus=='WAIT_REPAIR'">
          <a @click="handleEdit(record)" v-if="isShowAuth('eam:reportRepair:edit')">编辑</a>
          <a @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical" v-if="isShowAuth('eam:reportRepair:edit')"/>
          <a-divider type="vertical"/>
          <a @click="handleAssign(record)" v-if="isShowAuth('eam:reportRepair:assign')">指派</a>
          <a @click="handleAssign(record)" >指派</a>
          <a-divider type="vertical" v-if="isShowAuth('eam:reportRepair:assign')"/>
          <a-divider type="vertical" />
          <a-popconfirm title="确定作废吗?" @confirm="() => handleDelete(record.id)" v-if="isShowAuth('eam:reportRepair:abolish')">
          <a-popconfirm title="确定作废吗?" @confirm="() => handleDelete(record.id)" >
            <a>作废</a>
          </a-popconfirm>
        </span>
src/views/eam/repair/modules/EamRepairPersonForm.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
<template>
  <a-spin :spinning="confirmLoading">
    <j-form-container :disabled="formDisabled">
      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="维修工单Id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairId">
              <a-input v-model="model.repairId" placeholder="请输入维修工单Id"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="维修人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairUser">
              <a-input v-model="model.repairUser" placeholder="请输入维修人"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="是否是主维修人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairPrimary">
              <a-input v-model="model.repairPrimary" placeholder="请输入是否是主维修人"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="维修时长" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairDuration">
              <a-input v-model="model.repairDuration" placeholder="请输入维修时长"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
              <a-input v-model="model.remark" placeholder="请输入备注"  ></a-input>
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </j-form-container>
  </a-spin>
</template>
<script>
  import { httpAction, getAction } from '@/api/manage'
  import { validateDuplicateValue } from '@/utils/util'
  export default {
    name: 'EamRepairPersonForm',
    components: {
    },
    props: {
      //表单禁用
      disabled: {
        type: Boolean,
        default: false,
        required: false
      }
    },
    data () {
      return {
        model:{
         },
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        confirmLoading: false,
        validatorRules: {
        },
        url: {
          add: "/eam/eamRepairPerson/add",
          edit: "/eam/eamRepairPerson/edit",
          queryById: "/eam/eamRepairPerson/queryById"
        }
      }
    },
    computed: {
      formDisabled(){
        return this.disabled
      },
    },
    created () {
       //备份model原始值
      this.modelDefault = JSON.parse(JSON.stringify(this.model));
    },
    methods: {
      add () {
        this.edit(this.modelDefault);
      },
      edit (record) {
        this.model = Object.assign({}, record);
        this.visible = true;
      },
      submitForm () {
        const that = this;
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let httpurl = '';
            let method = '';
            if(!this.model.id){
              httpurl+=this.url.add;
              method = 'post';
            }else{
              httpurl+=this.url.edit;
               method = 'put';
            }
            httpAction(httpurl,this.model,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
            })
          }
        })
      },
    }
  }
</script>
src/views/eam/repair/modules/EamRepairPersonModal.Style#Drawer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
<template>
  <a-drawer
    :title="title"
    :width="width"
    placement="right"
    :closable="false"
    @close="close"
    destroyOnClose
    :visible="visible">
    <eam-repair-person-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></eam-repair-person-form>
    <div class="drawer-footer">
      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
    </div>
  </a-drawer>
</template>
<script>
  import EamRepairPersonForm from './EamRepairPersonForm'
  export default {
    name: 'EamRepairPersonModal',
    components: {
      EamRepairPersonForm
    },
    data () {
      return {
        title:"操作",
        width:800,
        visible: false,
        disableSubmit: false
      }
    },
    methods: {
      add () {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.add();
        })
      },
      edit (record) {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.edit(record);
        });
      },
      close () {
        this.$emit('close');
        this.visible = false;
      },
      submitCallback(){
        this.$emit('ok');
        this.visible = false;
      },
      handleOk () {
        this.$refs.realForm.submitForm();
      },
      handleCancel () {
        this.close()
      }
    }
  }
</script>
<style lang="less" scoped>
/** Button按钮间距 */
  .ant-btn {
    margin-left: 30px;
    margin-bottom: 30px;
    float: right;
  }
  .drawer-footer{
    position: absolute;
    bottom: -8px;
    width: 100%;
    border-top: 1px solid #e8e8e8;
    padding: 10px 16px;
    text-align: right;
    left: 0;
    background: #fff;
    border-radius: 0 0 2px 2px;
  }
</style>
src/views/eam/repair/modules/EamRepairPersonModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
<template>
  <j-modal
    :title="title"
    :width="width"
    :visible="visible"
    switchFullscreen
    @ok="handleOk"
    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
    @cancel="handleCancel"
    cancelText="关闭">
    <eam-repair-person-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></eam-repair-person-form>
  </j-modal>
</template>
<script>
  import EamRepairPersonForm from './EamRepairPersonForm'
  export default {
    name: 'EamRepairPersonModal',
    components: {
      EamRepairPersonForm
    },
    data () {
      return {
        title:'',
        width:800,
        visible: false,
        disableSubmit: false
      }
    },
    methods: {
      add () {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.add();
        })
      },
      edit (record) {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.edit(record);
        })
      },
      close () {
        this.$emit('close');
        this.visible = false;
      },
      handleOk () {
        this.$refs.realForm.submitForm();
      },
      submitCallback(){
        this.$emit('ok');
        this.visible = false;
      },
      handleCancel () {
        this.close()
      }
    }
  }
</script>
src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue
@@ -1,86 +1,151 @@
<template>
  <j-modal
    :title="title"
    :width="800"
    fullscreen
    :visible="visible"
    centered
    :confirmLoading="confirmLoading"
    switchFullscreen
    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
    @ok="handleOk"
    @cancel="close"
    :mask-closable="false"
    @cancel="handleCancel"
    cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
        <a-row>
          <a-col :span="12">
            <a-form-model-item prop="equipmentId" label="设备编号">
              <lx-search-equipment-select placeholder="请输入设备编号或名称搜索" v-model="model.equipmentId"/>
            </a-form-model-item>
          </a-col>
      <j-form-container :disabled="disableSubmit">
        <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol"
                      :wrapperCol="wrapperCol" slot="detail">
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item prop="equipmentId" label="设备编号">
                <lx-search-equipment-select placeholder="请输入设备编号或名称搜索" v-model="model.equipmentId"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="是否加工">
                <j-dict-select-tag dict-code="is_processed" type="radio" v-model="model.isProcessed"
                                   @change="handleRadioChange($event,'faultStartTime,breakdownFlag,' +
                                    'faultDescription,batchNumber,processingPart,quantity')"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="故障开始时间">
                <a-date-picker :disabled="!Boolean(+model.isProcessed)" v-model="model.faultStartTime" value-format="YYYY-MM-DD" style="width:100%"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="是否停机">
                <j-dict-select-tag :disabled="!Boolean(+model.isProcessed)" dict-code="yn" placeholder="请选择是否停机" v-model="model.breakdownFlag"/>
              </a-form-model-item>
            </a-col>
          </a-row>
          <a-col :span="12">
            <a-form-model-item prop="faultName" label="故障简称">
              <a-select placeholder="请选择故障简称" v-model="model.faultName" @change="handleFaultNameChange">
                <a-select-option v-for="item in faultReasonList" :key="item.faultName">
                  {{ item.faultName }}
                </a-select-option>
              </a-select>
            </a-form-model-item>
          </a-col>
        </a-row>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="故障现象">
                <a-input  :disabled="!Boolean(+model.isProcessed)" placeholder="请输入故障现象" v-model="model.faultDescription"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="批次号">
                <a-input  :disabled="!Boolean(+model.isProcessed)" placeholder="请输入批次号" v-model="model.batchNumber"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="加工零件号">
                <a-input  :disabled="!Boolean(+model.isProcessed)" placeholder="请输入加工零件号" v-model="model.processingPart"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="件数">
                <a-input-number  :disabled="!Boolean(+model.isProcessed)" placeholder="请输入件数" v-model="model.quantity" :min="0" style="width: 100%"/>
              </a-form-model-item>
            </a-col>
          </a-row>
        <a-row>
          <a-col :span="12">
            <a-form-model-item label="故障分类">
              <a-input placeholder="请输入故障分类" v-model="model.faultType_dictText" readOnly/>
            </a-form-model-item>
          </a-col>
        </a-row>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="设备事故">
                <j-dict-select-tag dict-code="yn" placeholder="请选择设备事故" v-model="model.isAccidentsRegister"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="废品件号">
                <a-input placeholder="请输入废品件号" v-model="model.scrapPartNumber"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="废品件数">
                <a-input-number placeholder="请输入废品件数" v-model="model.scrapPartQuantity" :min="0" style="width: 100%"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="废品价值">
                <a-input placeholder="请输入废品价值" v-model="model.scrapPartValue"/>
              </a-form-model-item>
            </a-col>
          </a-row>
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="故障描述" prop="faultDescription" :labelCol="labelColLong"
                               :wrapperCol="wrapperColLong">
              <a-textarea placeholder="请输入故障描述" v-model="model.faultDescription"/>
            </a-form-model-item>
          </a-col>
        </a-row>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="是否有设备操作证">
                <j-dict-select-tag dict-code="yn" placeholder="请选择是否有设备操作证" v-model="model.operationCertificate"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="是否断电重启">
                <j-dict-select-tag dict-code="yn" placeholder="请选择是否断电重启" v-model="model.powerOffRestart"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="是否为批次首件">
                <j-dict-select-tag dict-code="yn" placeholder="请选择是否为批次首件" v-model="model.batchFirstPiece"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="变动因素">
                <j-dict-select-tag dict-code="yn" placeholder="请选择变动因素" v-model="model.variableFactors"/>
              </a-form-model-item>
            </a-col>
          </a-row>
        <a-row>
          <a-col :span="12">
            <a-form-model-item prop="faultStartTime" label="故障开始时间">
              <a-date-picker showTime placeholder="请选择故障开始时间" v-model="model.faultStartTime"
                             :allow-clear="false" value-format="YYYY-MM-DD HH:mm:ss" :disabledDate="disabledDate"
                             :disabledTime="disabledTime"/>
            </a-form-model-item>
          </a-col>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="变动因素内容">
                <j-dict-select-tag dict-code="variable_factors_value" placeholder="请选择变动因素内容" v-model="model.variableFactorsValue"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="执行程序">
                <a-input placeholder="请输入执行程序" v-model="model.executeNc"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="事故现象">
                <a-input placeholder="请输入事故现象" v-model="model.accidentPhenomenon"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="采取措施">
                <a-input placeholder="请输入采取措施" v-model="model.measure"/>
              </a-form-model-item>
            </a-col>
          </a-row>
          <a-col :span="12">
            <a-form-model-item prop="breakdownFlag" label="是否停机">
              <a-radio-group v-model="model.breakdownFlag">
                <a-radio v-for="item in breakdownFlagList" :value="item.value">{{ item.label }}</a-radio>
              </a-radio-group>
            </a-form-model-item>
          </a-col>
        </a-row>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="造成结果">
                <a-input placeholder="请输入造成结果" v-model="model.causingResults"/>
              </a-form-model-item>
            </a-col>
        <a-row>
          <a-col :span="24">
            <a-form-model-item prop="imageFiles" label="报修图片" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <lx-upload :returnUrl="false" :isMultiple="true" file-type="image" :number="3"
                         v-model="model.imageFilesResult"/>
            </a-form-model-item>
          </a-col>
        </a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="备注">
                <a-input placeholder="请输入备注" v-model="model.measure"/>
              </a-form-model-item>
            </a-col>
          </a-row>
        <a-row>
          <a-col :span="24">
            <a-form-model-item prop="remark" label="备注" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-textarea placeholder="请输入备注" v-model="model.remark"/>
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
        </a-form-model>
      </j-form-container>
    </a-spin>
  </j-modal>
</template>
@@ -105,7 +170,10 @@
      return {
        title: '操作',
        visible: false,
        //详情控制
        disableSubmit: false,
        model: {},
        customSpan: 6,
        labelCol: {
          xs: { span: 24 },
          sm: { span: 8 }
@@ -148,11 +216,12 @@
    },
    methods: {
      add() {
        this.editable = true
        //初始化默认值
        this.edit({
          faultDescription: '',
          breakdownFlag: this.breakdownFlagList.find(item => item.label === '否').value
        })
        this.model = {
          isProcessed: 0,
        }
        this.visible = true
      },
      edit(record) {
@@ -210,6 +279,23 @@
        }
      },
      /**\
       * å•选框值发生改变时触发
       * @param value å•选框值
       * @param key å•选框关联字段
       */
      handleRadioChange(value, key) {
        //key包含,说明是多选框
        if (key.includes(',')) {
          const keys = key.split(',')
          keys.forEach(key => {
            if (value === '0') delete this.model[key]
          })
        }else {
          if (value === '0') delete this.model[key]
        }
      },
      /**
       * ç¦ç”¨æ—¥æœŸ
       * @params current è¢«ç¦ç”¨çš„æ—¶é—´
@@ -243,7 +329,10 @@
        this.$emit('close')
        this.visible = false
        if (this.$refs.form) this.$refs.form.clearValidate()
      }
      },
      handleCancel() {
        this.close()
      },
    }
  }
</script>
src/views/eam/technical/EamTechnicalStatusEvaluationOrderChangeList.vue
@@ -1,46 +1,35 @@
<template>
  <a-card :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.delFlag"></a-input>
          <a-col :xl="5" :lg="6" :md="8" :sm="12">
            <a-form-item label="统一编码">
              <lx-search-equipment-select placeholder="请输入统一编码或名称搜索" v-model="queryParam.equipmentId"/>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-item label="工单ID">
              <a-input placeholder="请输入工单ID" v-model="queryParam.orderId"></a-input>
            </a-form-item>
          </a-col>
        <template v-if="toggleSearchStatus">
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
          <a-col :xl="4" :lg="6" :md="8" :sm="12">
            <a-form-item label="变更单号">
              <a-input placeholder="请输入变更单号" v-model="queryParam.changeOrderNum"></a-input>
              <a-input placeholder="请输入变更单号" v-model="queryParam.changeOrderNum"/>
            </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.applicant"></a-input>
          <a-col :xl="5" :lg="6" :md="8" :sm="12">
            <a-form-item label="申请时间">
              <a-range-picker v-model="queryParam.dates" @change="handleDateRangeChange" value-format="YYYY-MM-DD"/>
            </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.factoryOrgCode"></a-input>
          <a-col :xl="4" :lg="6" :md="8" :sm="12">
            <a-form-item label="变更状态">
              <j-dict-select-tag dict-code="    technical_status_evaluation_order_change_status" placeholder="请选择变更状态"
                                 v-model="queryParam.changeStatus"/>
            </a-form-item>
          </a-col>
          </template>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
          <a-col :xl="4" :lg="6" :md="8" :sm="12">
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
              <a-button type="primary" @click="searchQuery" icon="search">查询</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>
@@ -48,78 +37,58 @@
      </a-form>
    </div>
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator">
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('技术状态鉴定工单变更')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
        <a-button type="primary" icon="import">导入</a-button>
      </a-upload>
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> æ‰¹é‡æ“ä½œ <a-icon type="down" /></a-button>
      </a-dropdown>
    </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"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        class="j-table-force-nowrap"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
    <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
             :pagination="ipagination" :loading="loading" :scroll="{x:'max-content'}" @change="handleTableChange">
        <span slot="action" slot-scope="text, record">
          <tamplate v-if="record.changeStatus=='WAIT_SUBMIT'">
          <a @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical" />
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
            <a-menu slot="overlay">
              <a-menu-item>
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
                </a-popconfirm>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
        </span>
          <a-divider type="vertical"/>
      </a-table>
    </div>
          <a-popconfirm title="确定提交吗?" @confirm="handleSubmit(record.id)">
             <a>提交</a>
          </a-popconfirm>
          <a-divider type="vertical"/>
          <a-popconfirm title="确定作废吗?" @confirm="handleAbolish(record.id)">
            <a>作废</a>
          </a-popconfirm>
          </tamplate>
          <a @click="handleDetail(record)"
             v-if="record.changeStatus!='WAIT_SUBMIT'&&record.changeStatus!='ABOLISH'">详情</a>
        </span>
    </a-table>
    <!-- table区域-end -->
    <!-- è¡¨å•区域 -->
    <eamTechnicalStatusEvaluationOrderChange-modal ref="modalForm" @ok="modalFormOk"></eamTechnicalStatusEvaluationOrderChange-modal>
    <eamTechnicalStatusEvaluationOrderChange-modal ref="modalForm" @ok="modalFormOk"/>
    <!--变更流程弹窗-->
    <technical-status-evaluation-order-change-approval-modal ref="evaluationOrderChangeApprovalModal"
                                                             :selectShenpiData="selectedRowData"/>
  </a-card>
</template>
<script>
  import '@/assets/less/TableExpand.less'
  import EamTechnicalStatusEvaluationOrderChangeModal from './modules/EamTechnicalStatusEvaluationOrderChangeModal'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import LxSearchEquipmentSelect from '../equipment/modules/LxSearchEquipmentSelect'
  import { getAction } from '@/api/manage'
  import TechnicalStatusEvaluationOrderChangeApprovalModal
    from '../../flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal'
  export default {
    name: "EamTechnicalStatusEvaluationOrderChangeList",
    mixins:[JeecgListMixin],
    name: 'EamTechnicalStatusEvaluationOrderChangeList',
    mixins: [JeecgListMixin],
    components: {
      TechnicalStatusEvaluationOrderChangeApprovalModal,
      LxSearchEquipmentSelect,
      EamTechnicalStatusEvaluationOrderChangeModal
    },
    data () {
    data() {
      return {
        description: '技术状态鉴定工单变更管理页面',
        // è¡¨å¤´
@@ -127,129 +96,195 @@
          {
            title: '#',
            dataIndex: '',
            key:'rowIndex',
            width:60,
            align:"center",
            customRender:function (t,r,index) {
              return parseInt(index)+1;
            }
           },
           {
            title: '删除标记',
            align:"center",
            dataIndex: 'delFlag'
           },
           {
            title: '工单ID',
            align:"center",
            key: 'rowIndex',
            width: 60,
            align: 'center',
            customRender: function(t, r, index) {
              return parseInt(index) + 1
            },
            fixed: 'left'
          },
          {
            title: '统一编码',
            align: 'center',
            dataIndex: 'equipmentCode',
            fixed: 'left'
          },
          {
            title: '设备名称',
            align: 'center',
            dataIndex: 'equipmentName',
            fixed: 'left'
          },
          {
            title: '设备型号',
            align: 'center',
            dataIndex: 'equipmentModel',
            fixed: 'left'
          },
          {
            title: '工单号',
            align: 'center',
            dataIndex: 'orderId'
           },
           {
          },
          {
            title: '变更单号',
            align:"center",
            align: 'center',
            dataIndex: 'changeOrderNum'
           },
           {
          },
          {
            title: '申请人',
            align:"center",
            dataIndex: 'applicant'
           },
           {
            align: 'center',
            dataIndex: 'applicant_dictText'
          },
          {
            title: '申请部门',
            align:"center",
            dataIndex: 'factoryOrgCode'
           },
           {
            align: 'center',
            dataIndex: 'factoryOrgCode_dictText'
          },
          {
            title: '申请日期',
            align:"center",
            align: 'center',
            dataIndex: 'applyDate'
           },
           {
            title: '变更状态;待提交、待主管审核、待部门确认、待保障部确认、已作废、已完成',
            align:"center",
            dataIndex: 'changeStatus'
           },
           {
            title: '变更原因;生产任务急无法停机、设备故障正处于维修状态、设备已报废、设备大修、搬迁、改造',
            align:"center",
            dataIndex: 'applyReason'
           },
           {
          },
          {
            title: '变更状态',
            align: 'center',
            dataIndex: 'changeStatus_dictText'
          },
          {
            title: '变更原因',
            align: 'center',
            dataIndex: 'applyReason_dictText'
          },
          {
            title: '变更鉴定日期',
            align:"center",
            dataIndex: 'deferredMaintenanceDate'
           },
           {
            align: 'center',
            dataIndex: 'deferredEvaluationDate'
          },
          {
            title: '主管领导签字',
            align:"center",
            dataIndex: 'equipmentManagerSignature'
           },
           {
            align: 'center',
            dataIndex: 'equipmentManagerSignature_dictText'
          },
          {
            title: '主管领导签字时间',
            align:"center",
            align: 'center',
            dataIndex: 'equipmentManagerSignatureTime'
           },
           {
            title: '部门领导签字;根据变更原因类型区分不同的人审批',
            align:"center",
            dataIndex: 'departManagerSignature'
           },
           {
          },
          {
            title: '部门领导签字',
            align: 'center',
            dataIndex: 'departManagerSignature_dictText'
          },
          {
            title: '部门领导签字时间',
            align:"center",
            align: 'center',
            dataIndex: 'departManagerSignatureTime'
           },
           {
            title: '部门领导意见',
            align:"center",
            dataIndex: 'departManagerComment'
           },
           {
          },
          {
            title: '生产保障部领导签字',
            align:"center",
            dataIndex: 'productionSupportSignature'
           },
           {
            align: 'center',
            dataIndex: 'productionSupportSignature_dictText'
          },
          {
            title: '生产保障部领导签字时间',
            align:"center",
            align: 'center',
            dataIndex: 'productionSupportSignatureTime'
           },
           {
            title: '生产保障部领导意见',
            align:"center",
            dataIndex: 'productionSupportComment'
           },
           {
          },
          {
            title: 'HF编码',
            align:"center",
            align: 'center',
            dataIndex: 'hfCode'
           },
          },
          {
            title: '操作',
            dataIndex: 'action',
            align:"center",
            align: 'center',
            scopedSlots: { customRender: 'action' },
            fixed: 'right',
            width: 200
          }
        ],
        url: {
          list: "/eam/eamTechnicalStatusEvaluationOrderChange/list",
          delete: "/eam/eamTechnicalStatusEvaluationOrderChange/delete",
          deleteBatch: "/eam/eamTechnicalStatusEvaluationOrderChange/deleteBatch",
          exportXlsUrl: "eam/eamTechnicalStatusEvaluationOrderChange/exportXls",
          importExcelUrl: "eam/eamTechnicalStatusEvaluationOrderChange/importExcel",
       },
    }
  },
  computed: {
    importExcelUrl: function(){
      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
    }
  },
        selectedRowData: {},
        url: {
          list: '/eam/eamTechnicalStatusEvaluationOrderChange/list',
          edit: '/eam/eamTechnicalStatusEvaluationOrderChange/edit',
          submit: '/eam/eamTechnicalStatusEvaluationOrderChange/submit',
          abolish: '/eam/eamTechnicalStatusEvaluationOrderChange/abolish'
        }
      }
    },
    methods: {
      /**
       * æäº¤æ—¶è§¦å‘
       * @param id
       */
      handleSubmit(id) {
        const that = this
        that.loading = true
        getAction(this.url.submit, { id })
          .then(res => {
            if (res.success) {
              that.$notification.success({
                message: '消息',
                description: res.message
              })
              that.loadData()
              that.loading = false
            } else {
              that.$notification.warning({
                message: '消息',
                description: res.message
              })
            }
          })
      },
      /**
       * ä½œåºŸæ—¶è§¦å‘
       * @param id
       */
      handleAbolish(id) {
        const that = this
        that.loading = true
        getAction(this.url.abolish, { id })
          .then(res => {
            if (res.success) {
              that.$notification.success({
                message: '消息',
                description: res.message
              })
              that.loadData()
            } else {
              that.$notification.warning({
                message: '消息',
                description: res.message
              })
              that.loading = false
            }
          })
      },
      /**
       * ç‚¹å‡»è¯¦æƒ…时触发时触发
       * @param record
       */
      handleDetail(record) {
        this.$refs.evaluationOrderChangeApprovalModal.title = '详情'
        this.$refs.evaluationOrderChangeApprovalModal.disableSubmit = true
        this.$refs.evaluationOrderChangeApprovalModal.visible = true
        this.$refs.evaluationOrderChangeApprovalModal.handleDetail(record)
      },
      /**
       * ç”³è¯·æ—¶é—´å‘生改变时触发
       * @param dateStringArray
       */
      handleDateRangeChange(dateStringArray) {
        this.queryParam.dateBegin = dateStringArray[0]
        this.queryParam.dateEnd = dateStringArray[1]
      }
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
</style>
</script>
src/views/eam/technical/EamTechnicalStatusEvaluationOrderList.vue
@@ -46,29 +46,38 @@
        <span slot="action" slot-scope="text, record">
          <template v-if="record.evaluationStatus === 'WAIT_EVALUATION'">
            <a-popconfirm title="确定领取吗?"
                          @confirm="handleReceive(record.id)">
            <a-popconfirm title="确定领取吗?" @confirm="handleReceive(record.id)">
            <a>领取</a>
          </a-popconfirm>
           <a-divider type="vertical"/>
          </template>
            <a @click="handleDetail(record)">详情</a>
          <template v-if="record.evaluationStatus == 'WAIT_EVALUATION'||record.evaluationStatus=='LOCKED'">
             <a @click="handleOrderChange(record)">变更</a>
             <a-divider type="vertical"/>
          </template>
          <a @click="handleDetail(record)">详情</a>
        </span>
    </a-table>
    <!-- table区域-end -->
    <!-- è¡¨å•区域 -->
    <!--工单弹窗-->
    <eamTechnicalStatusEvaluationOrder-modal ref="modalForm" @ok="modalFormOk"/>
    <technical-status-evaluation-approval-modal ref="technicalStatusEvaluationApprovalModal"
                                                :selectShenpiData="selectedOrderData"/>
    <!--工单变更弹窗-->
    <eamTechnicalStatusEvaluationOrderChange-modal ref="orderChangeModal" @ok="modalFormOk"/>
  </a-card>
</template>
<script>
  import EamTechnicalStatusEvaluationOrderModal from './modules/EamTechnicalStatusEvaluationOrderModal'
  import EamTechnicalStatusEvaluationOrderChangeModal from './modules/EamTechnicalStatusEvaluationOrderChangeModal'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import { getAction } from '@/api/manage'
  import LxSearchEquipmentSelect from '../equipment/modules/LxSearchEquipmentSelect'
@@ -81,7 +90,8 @@
    components: {
      TechnicalStatusEvaluationApprovalModal,
      LxSearchEquipmentSelect,
      EamTechnicalStatusEvaluationOrderModal
      EamTechnicalStatusEvaluationOrderModal,
      EamTechnicalStatusEvaluationOrderChangeModal
    },
    data() {
      return {
@@ -263,6 +273,10 @@
      }
    },
    methods: {
      /**
       * ç‚¹å‡»é¢†å–时触发
       * @param id
       */
      handleReceive(id) {
        let that = this
        this.loading = true
@@ -284,11 +298,25 @@
          })
      },
      /**
       * ç‚¹å‡»å˜æ›´æ—¶è§¦å‘
       * @param record
       */
      handleOrderChange(record) {
        this.$refs.orderChangeModal.title = '变更'
        this.$refs.orderChangeModal.add(record)
      },
      /**
       * ç‚¹å‡»è¯¦æƒ…时触发
       * @param record
       */
      handleDetail(record) {
        this.selectedOrderData = Object.assign({}, record)
        this.$refs.technicalStatusEvaluationApprovalModal.recordDetail(record)
        this.$refs.technicalStatusEvaluationApprovalModal.title = '详情'
        this.$refs.technicalStatusEvaluationApprovalModal.visible = true
        this.$refs.technicalStatusEvaluationApprovalModal.disableSubmit = true
        this.$refs.technicalStatusEvaluationApprovalModal.recordDetail(record)
      }
    }
  }
src/views/eam/technical/modules/EamTechnicalStatusEvaluationOrderChangeModal.vue
@@ -1,162 +1,140 @@
<template>
  <j-modal
    :title="title"
    :width="800"
    :visible="visible"
    :confirmLoading="confirmLoading"
    switchFullscreen
    @ok="handleOk"
    @cancel="handleCancel"
    cancelText="关闭">
  <j-modal :title="title" :width="1300" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen
           @ok="handleOk" @cancel="handleCancel" cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag" label="删除标记">
          <a-input-number v-model="model.delFlag"/>
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderId" label="工单ID">
          <a-input placeholder="请输入工单ID" v-model="model.orderId" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="changeOrderNum" label="变更单号">
          <a-input placeholder="请输入变更单号" v-model="model.changeOrderNum" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="applicant" label="申请人">
          <a-input placeholder="请输入申请人" v-model="model.applicant" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryOrgCode" label="申请部门">
          <a-input placeholder="请输入申请部门" v-model="model.factoryOrgCode" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="applyDate" label="申请日期">
          <a-input placeholder="请输入申请日期" v-model="model.applyDate" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="changeStatus" label="变更状态;待提交、待主管审核、待部门确认、待保障部确认、已作废、已完成">
          <a-input placeholder="请输入变更状态;待提交、待主管审核、待部门确认、待保障部确认、已作废、已完成" v-model="model.changeStatus" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="applyReason" label="变更原因;生产任务急无法停机、设备故障正处于维修状态、设备已报废、设备大修、搬迁、改造">
          <a-input placeholder="请输入变更原因;生产任务急无法停机、设备故障正处于维修状态、设备已报废、设备大修、搬迁、改造" v-model="model.applyReason" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="deferredMaintenanceDate" label="变更鉴定日期">
          <a-input placeholder="请输入变更鉴定日期" v-model="model.deferredMaintenanceDate" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentManagerSignature" label="主管领导签字">
          <a-input placeholder="请输入主管领导签字" v-model="model.equipmentManagerSignature" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentManagerSignatureTime" label="主管领导签字时间">
          <a-input placeholder="请输入主管领导签字时间" v-model="model.equipmentManagerSignatureTime" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="departManagerSignature" label="部门领导签字;根据变更原因类型区分不同的人审批">
          <a-input placeholder="请输入部门领导签字;根据变更原因类型区分不同的人审批" v-model="model.departManagerSignature" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="departManagerSignatureTime" label="部门领导签字时间">
          <a-input placeholder="请输入部门领导签字时间" v-model="model.departManagerSignatureTime" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="departManagerComment" label="部门领导意见">
          <a-input placeholder="请输入部门领导意见" v-model="model.departManagerComment" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productionSupportSignature" label="生产保障部领导签字">
          <a-input placeholder="请输入生产保障部领导签字" v-model="model.productionSupportSignature" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productionSupportSignatureTime" label="生产保障部领导签字时间">
          <a-input placeholder="请输入生产保障部领导签字时间" v-model="model.productionSupportSignatureTime" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productionSupportComment" label="生产保障部领导意见">
          <a-input placeholder="请输入生产保障部领导意见" v-model="model.productionSupportComment" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="hfCode" label="HF编码">
          <a-input placeholder="请输入HF编码" v-model="model.hfCode" />
        </a-form-model-item>
      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
        <a-row>
          <a-col :span="8">
            <a-form-model-item label="工单号">
              <a-input placeholder="选择设备后自动带出" disabled v-model="model.orderId"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="8">
            <a-form-model-item label="变更单号">
              <a-input placeholder="系统自动生成" disabled v-model="model.changeOrderNum"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="8">
            <a-form-model-item label="统一编码">
              <technical-status-equipment-select placeholder="请输入统一编码或名称搜索" v-model="model.equipmentId" disabled/>
            </a-form-model-item>
          </a-col>
          <a-col :span="8">
            <a-form-model-item prop="deferredEvaluationDate" label="变更鉴定日期">
              <a-date-picker v-model="model.deferredEvaluationDate" value-format="YYYY-MM-DD" style="width: 100%"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="8">
            <a-form-model-item prop="applyReason" label="变更原因">
              <j-dict-select-tag v-model="model.applyReason" placeholder="请选择变更原因"
                                 dict-code="technical_status_evaluation_order_change_reason"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="备注" :labelCol="{span:2}" :wrapperCol="{span:21}">
              <a-textarea v-model="model.remark" placeholder="请输入备注"/>
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </a-spin>
  </j-modal>
</template>
<script>
  import { httpAction } from '@/api/manage'
  import moment from "moment"
  import { postAction } from '@/api/manage'
  import TechnicalStatusEquipmentSelect from '../../equipment/modules/TechnicalStatusEquipmentSelect'
  export default {
    name: "EamTechnicalStatusEvaluationOrderChangeModal",
    data () {
    name: 'EamTechnicalStatusEvaluationOrderChangeModal',
    components: { TechnicalStatusEquipmentSelect },
    data() {
      return {
        title:"操作",
        title: '操作',
        visible: false,
        model: {},
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
          sm: { span: 6 }
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
          sm: { span: 15 }
        },
        confirmLoading: false,
        validatorRules:{
        validatorRules: {
          deferredEvaluationDate: [{ required: true, message: '请选择日期', trigger: 'change' }],
          applyReason: [{ required: true, message: '请选择变更原因', trigger: 'change' }]
        },
        url: {
          add: "/eam/eamTechnicalStatusEvaluationOrderChange/add",
          edit: "/eam/eamTechnicalStatusEvaluationOrderChange/edit",
        },
          add: '/eam/eamTechnicalStatusEvaluationOrderChange/add',
          edit: '/eam/eamTechnicalStatusEvaluationOrderChange/edit'
        }
      }
    },
    created () {
    },
    methods: {
      add () {
        //初始化默认值
        this.edit({});
      add({ id, equipmentId }) {
        this.model = Object.assign({ orderId: id, equipmentId })
        this.visible = true
      },
      edit (record) {
        this.model = Object.assign({}, record);
        this.visible = true;
      edit(record) {
        this.model = Object.assign({}, record)
        this.visible = true
      },
      close () {
        this.$emit('close');
        this.visible = false;
        this.$refs.form.clearValidate();
      },
      handleOk () {
        const that = this;
      handleOk() {
        const that = this
        // è§¦å‘表单验证
         this.$refs.form.validate(valid => {
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let httpurl = '';
            let method = '';
            if(!this.model.id){
              httpurl+=this.url.add;
              method = 'post';
            }else{
              httpurl+=this.url.edit;
               method = 'put';
            that.confirmLoading = true
            let httpUrl
            if (!that.model.id) {
              httpUrl = that.url.add
            } else {
              httpUrl = that.url.edit
            }
            httpAction(httpurl,this.model,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
              that.close();
            })
          }else{
             return false;
            postAction(httpUrl, that.model)
              .then((res) => {
                if (res.success) {
                  that.$notification.success({
                    message: '消息',
                    description: res.message
                  })
                  if (!that.model.id) {
                    that.$router.push('/eam/technical/order/change')
                    return
                  }
                  that.close()
                  that.$emit('ok')
                } else {
                  that.$notification.warning({
                    message: '消息',
                    description: res.message
                  })
                }
              })
              .finally(() => {
                that.confirmLoading = false
              })
          } else {
            return false
          }
        })
      },
      handleCancel () {
      handleCancel() {
        this.close()
      },
      close() {
        this.$emit('close')
        this.visible = false
        this.$refs.form.clearValidate()
      }
    }
  }
</script>
<style lang="less" scoped>
</style>
</script>
src/views/flowable/modeler/modelerDesign.vue
@@ -8,7 +8,6 @@
          v-model="queryParams.name"
          placeholder="请输入名称"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
src/views/flowable/workflow/FlowCompleted.vue
@@ -1,8 +1,3 @@
<!--
 Description: å·¥ä½œæµ-我的已办 List
 Author: ä½œè€… liuyh
 Date:   2025-02-27
-->
<template>
  <a-card :bordered="false">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
@@ -17,13 +12,11 @@
          </a-col>
          <a-col :xl="10" :lg="11" :md="12" :sm="24">
            <a-form-item label="操作时间">
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                      class="query-group-cust"
                      v-model="queryParam.startTime"></j-date>
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间" class="query-group-cust"
                      v-model="queryParam.startTime"/>
              <span class="query-group-split-cust"></span>
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束时间"
                      class="query-group-cust"
                      v-model="queryParam.endTime"></j-date>
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束时间" class="query-group-cust"
                      v-model="queryParam.endTime"/>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -37,264 +30,169 @@
    </div>
    <!-- æŸ¥è¯¢åŒºåŸŸ-END -->
    <!-- table区域-begin -->
    <div>
      <a-table
        ref="table"
        size="middle"
        :scroll="{x:true}"
        bordered
        rowKey="id"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        class="j-table-force-nowrap"
        @change="handleTableChange">
    <a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
             :dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap"
             @change="handleTableChange">
        <span slot="action" slot-scope="text, record">
            <a @click="handelDetial(record,text)">详情</a>
            <a @click="handleDetail(record)">详情</a>
        </span>
    </a-table>
      </a-table>
    </div>
    <third-maintenance-approval-modal ref="thirdMaintenanceApprovalModal" :selectShenpiData="selectedRowData"/>
  </a-card>
</template>
<script>
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import ThirdMaintenanceApprovalModal from './thirdMaintenance/ThirdMaintenanceApprovalModal'
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import JDictSelectTag from '@/components/dict/JDictSelectTag.vue'
export default {
  name: 'NcDeviceCharactersList',
  mixins: [JeecgListMixin, mixinDevice],
  components: {
    JDictSelectTag,
  },
  data() {
    return {
      description: '工作流-已办',
      // è¡¨å¤´
      columns: [
        {
          title: '序号',
          dataIndex: '',
          key: 'rowIndex',
          width: 200,
          align: 'center',
          customRender: function(t, r, index) {
            return parseInt(index) + 1
  export default {
    name: 'FlowCompleted',
    mixins: [JeecgListMixin],
    components: {
      ThirdMaintenanceApprovalModal
    },
    data() {
      return {
        description: '工作流-已办',
        // è¡¨å¤´
        columns: [
          {
            title: '序号',
            dataIndex: '',
            key: 'rowIndex',
            width: 60,
            align: 'center',
            customRender: function(t, r, index) {
              return parseInt(index) + 1
            }
          },
          {
            title: '流程分类',
            align: 'center',
            dataIndex: 'category_dictText'
          },
          {
            title: '流程名称',
            align: 'center',
            dataIndex: 'procDefName'
          },
          {
            title: '流程业务简要描述',
            align: 'center',
            dataIndex: 'description'
          },
          {
            title: '流程发起人名称',
            align: 'center',
            dataIndex: 'proposer_dictText'
          },
          {
            title: '任务名称',
            align: 'center',
            dataIndex: 'taskName'
          },
          {
            title: '操作时间',
            align: 'center',
            dataIndex: 'finishTime',
            width: 200
          },
          {
            title: '操作',
            dataIndex: 'action',
            scopedSlots: { customRender: 'action' },
            align: 'center',
            fixed: 'right',
            width: 200
          }
        ],
        url: {
          list: '/assign/flow/finishedList'
        },
        {
          title: '流程分类',
          align: 'center',
          dataIndex: 'category_dictText',
          width: 200
        },
        {
          title: '流程名称',
          align: 'center',
          dataIndex: 'procDefName',
          width: 200
        },
        {
          title: '流程业务简要描述',
          align: 'center',
          dataIndex: 'description',
          width: 300
        },
        {
          title: '流程发起人名称',
          align: 'center',
          dataIndex: 'proposer_dictText',
          width: 250
        },
        {
          title: '任务名称',
          align: 'center',
          dataIndex: 'taskName',
          width: 250
        },
        {
          title: '操作时间',
          align: 'center',
          dataIndex: 'finishTime',
          width: 300
        },
        {
          title: '操作',
          dataIndex: 'action',
          scopedSlots: { customRender: 'action' },
          align: 'center',
          width: 200,
          fixed: 'right'
        }
      ],
      url: {
        list: '/assign/flow/finishedList'
      },
      dictOptions: {},
      selectShenpiData: {},
      selectDispatchFileXqData: {},
      selectWeekMaintenanceData: {},
      selectInspectionOrderXqData: {},
      selectRepairOrderData: {},
      selectOutBoundOrderData: {},
      selectLossBoundOrderData: {},
      selectStocktakingBoundOrderData: {}
    }
  },
  created() {
  },
  computed: {
    importExcelUrl: function() {
      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
    }
  },
  methods: {
    handelDetial(item, index) {
      console.log('点击了详情')
      console.log('item----->', item)
      console.log('index----->', index)
      let approcesstype = this.splitAprocessType(item.category)
      console.log('approcesstype--->', approcesstype)
      switch (approcesstype) {
        case 'drApproval':
          this.handDrDetial(item)
          break
        case 'ggApproval':
          this.handDispatchFileDetial(item)
          break
        case 'sbdjApproval':
          this.handInspectionOrder(item)
          break
        case 'WEEK_MAINTENANCE':
          this.handleWeekMaintenance(item)
          break
        case 'eam_repair':
          this.handleRepairOrder(item)
          break
        case 'toolOutStorageApproval':
          this.handleToolOutStorageApproval(item)
          break
        case 'toolsStocktakingBound':
          this.handleToolStocktakingApproval(item)
          break
        case 'toolsLossApproval':
          this.handleToolLossApproval(item)
          break
        default:
          alert('没找到该流程')
        selectedRowData: {}
      }
    },
    methods: {
      handleDetail(record) {
        console.log('点击了详情')
        console.log('record----->', record)
        let processType = this.splitProcessType(record.category)
        console.log('processType--->', processType)
        switch (processType) {
          case 'sbdjApproval':
            this.handInspectionOrder(record)
            break
          case 'eam_repair':
            this.handleRepairOrder(record)
            break
          case 'third_maintenance':
            this.handleThirdMaintenance(record)
            break
          default:
            alert('没找到该流程')
        }
      },
    splitAprocessType(title) {
      let parts = title.split(':') // æ³¨æ„å†’号是全角字符,使用对应的字进行分割
      let result = parts[0]
      return result
    },
    handDrDetial(item) {
      this.selectShenpiData = item
      this.selectShenpiData.assignee_dictText = item.todoUsers_dictText
      this.selectShenpiData.procInstId = item.procInsId
      this.selectShenpiData.title = item.description
      this.$refs.modalFormApproval.clearTableSource()
      this.$refs.modalFormApproval.getAllApproveData(item)
    },
    handDispatchFileDetial(item) {
      console.log('item----->', item)
      this.selectDispatchFileXqData = item
      this.selectDispatchFileXqData.assignee_dictText = item.todoUsers_dictText
      this.selectDispatchFileXqData.procInstId = item.procInsId
      this.selectDispatchFileXqData.processInstanceId = item.procInsId
      this.selectDispatchFileXqData.title = item.description
      this.$refs.modalFormDispatchFileXq.clearTableSource()
      this.$refs.modalFormDispatchFileXq.getAllApproveData(item)
    },
    handleWeekMaintenance(record) {
      this.selectWeekMaintenanceData = Object.assign({}, record)
      this.$refs.weekMaintenanceApprovalModal.handleDetail(record)
      this.$refs.weekMaintenanceApprovalModal.title = '详情'
      this.$refs.weekMaintenanceApprovalModal.disableSubmit = true
    },
      /**
       * ç‚¹å‡»ä¸‰ä¿æµç¨‹è¯¦æƒ…时触发
       * @param record
       */
      handleThirdMaintenance(record) {
        this.selectedRowData = Object.assign({}, record)
        this.$refs.thirdMaintenanceApprovalModal.visible = true
        this.$refs.thirdMaintenanceApprovalModal.title = record.name
        this.$refs.thirdMaintenanceApprovalModal.disableSubmit = true
        this.$refs.thirdMaintenanceApprovalModal.handleDetail(record)
      },
    handInspectionOrder(record) {
      console.log('record----->', record)
      this.selectInspectionOrderXqData = Object.assign({}, record)
      const { todoUsers_dictText, procInsId, description, taskName } = this.selectInspectionOrderXqData
      this.selectInspectionOrderXqData.assignee_dictText = todoUsers_dictText
      this.selectInspectionOrderXqData.procInstId = procInsId
      this.selectInspectionOrderXqData.processInstanceId = procInsId
      this.selectInspectionOrderXqData.title = description
      this.$refs.modalFormInspectionOrderXq.visible = true
      this.$refs.modalFormInspectionOrderXq.title = taskName
      this.$refs.modalFormInspectionOrderXq.disableSubmit = true
      this.$refs.modalFormInspectionOrderXq.getAllApproveData({
        ...record,
        procInstId: procInsId,
        processInstanceId: procInsId
      })
      this.$refs.modalFormInspectionOrderXq.getBasicInformation(record)
    },
      /**
       * ç‚¹å‡»ç‚¹æ£€æµç¨‹è¯¦æƒ…时触发
       * @param record
       */
      handInspectionOrder(record) {
        console.log('record----->', record)
        this.selectInspectionOrderXqData = Object.assign({}, record)
        const { todoUsers_dictText, procInsId, description, taskName } = this.selectInspectionOrderXqData
        this.selectInspectionOrderXqData.assignee_dictText = todoUsers_dictText
        this.selectInspectionOrderXqData.procInstId = procInsId
        this.selectInspectionOrderXqData.processInstanceId = procInsId
        this.selectInspectionOrderXqData.title = description
        this.$refs.modalFormInspectionOrderXq.visible = true
        this.$refs.modalFormInspectionOrderXq.title = taskName
        this.$refs.modalFormInspectionOrderXq.disableSubmit = true
        this.$refs.modalFormInspectionOrderXq.getAllApproveData({
          ...record,
          procInstId: procInsId,
          processInstanceId: procInsId
        })
        this.$refs.modalFormInspectionOrderXq.getBasicInformation(record)
      },
    /**
     * ç‚¹å‡»è®¾å¤‡ç»´ä¿®åˆ†ç±»æµç¨‹è¯¦æƒ…时触发
     * @param record
     */
    handleRepairOrder(record) {
      this.selectRepairOrderData = Object.assign({}, record)
      const { procInsId, taskName } = this.selectRepairOrderData
      this.$refs.repairOrderApprovalModal.visible = true
      this.$refs.repairOrderApprovalModal.disableSubmit = true
      this.$refs.repairOrderApprovalModal.title = taskName
      this.$refs.modalFormInspectionOrderXq.getAllApproveData({
        ...record,
        procInstId: procInsId,
        processInstanceId: procInsId
      })
      this.$refs.repairOrderApprovalModal.getBasicInformation(record)
    },
      /**
       * ç‚¹å‡»è®¾å¤‡ç»´ä¿®åˆ†ç±»æµç¨‹è¯¦æƒ…时触发
       * @param record
       */
      handleRepairOrder(record) {
        this.selectRepairOrderData = Object.assign({}, record)
        const { procInsId, taskName } = this.selectRepairOrderData
        this.$refs.repairOrderApprovalModal.visible = true
        this.$refs.repairOrderApprovalModal.disableSubmit = true
        this.$refs.repairOrderApprovalModal.title = taskName
        this.$refs.modalFormInspectionOrderXq.getAllApproveData({
          ...record,
          procInstId: procInsId,
          processInstanceId: procInsId
        })
        this.$refs.repairOrderApprovalModal.getBasicInformation(record)
      },
    handleToolOutStorageApproval(item) {
      this.selectOutBoundOrderData = Object.assign({}, item)
      item.procInstId = item.procInsId
      item.processInstanceId = item.procInsId
      this.selectOutBoundOrderData.assignee_dictText = item.todoUsers_dictText
      this.$refs.outBoundOrderHandle.auditVisible = false
      this.$refs.outBoundOrderHandle.clearTableSource()
      this.$refs.outBoundOrderHandle.getAllApproveData(item)
    },
    handleToolStocktakingApproval(item) {
      this.selectStocktakingBoundOrderData = Object.assign({}, item)
      item.procInstId = item.procInsId
      item.processInstanceId = item.procInsId
      this.selectStocktakingBoundOrderData.assignee_dictText = item.todoUsers_dictText
      this.$refs.stocktakingBoundHandle.auditVisible = false
      this.$refs.stocktakingBoundHandle.disableSubmit = true
      this.$refs.stocktakingBoundHandle.clearTableSource()
      this.$refs.stocktakingBoundHandle.getAllApproveData(item)
    },
    handleToolLossApproval(item) {
      this.selectLossBoundOrderData = Object.assign({}, item)
      item.procInstId = item.procInsId
      item.processInstanceId = item.procInsId
      this.selectStocktakingBoundOrderData.assignee_dictText = item.todoUsers_dictText
      this.$refs.lossBoundHandle.auditVisible = false
      this.$refs.lossBoundHandle.disableSubmit = true
      this.$refs.lossBoundHandle.clearTableSource()
      this.$refs.lossBoundHandle.getAllApproveData(item)
      splitProcessType(title) {
        let parts = title.split(':') // æ³¨æ„å†’号是全角字符,使用对应的字进行分割
        let result = parts[0]
        return result
      }
    }
  }
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
</script>
src/views/flowable/workflow/FlowLedger.vue
@@ -1,31 +1,26 @@
<!--
 Description: å·¥ä½œæµ-总台账 List
 Author: ä½œè€… liuyh
 Date:   2025-02-27
-->
<template>
  <a-card :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-col :xl="4" :lg="6" :md="8" :sm="24">
            <a-form-item label="流程分类">
              <j-dict-select-tag placeholder="请选择流程分类" v-model="queryParam.category"
                                 dictCode="flow_type"></j-dict-select-tag>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
          <a-col :xl="4" :lg="6" :md="8" :sm="24">
            <a-form-item label="流程名称">
              <a-input placeholder="请输入流程名称" v-model="queryParam.flowName"></a-input>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
          <a-col :xl="4" :lg="6" :md="8" :sm="24">
            <a-form-item label="简要描述">
              <a-input placeholder="请输入简要描述" v-model="queryParam.title"></a-input>
            </a-form-item>
          </a-col>
          <a-col :xl="10" :lg="11" :md="12" :sm="24">
          <a-col :xl="8" :lg="12" :md="12" :sm="24">
            <a-form-item label="操作时间">
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间" class="query-group-cust"
                      v-model="queryParam.startTime"></j-date>
@@ -34,7 +29,7 @@
                      v-model="queryParam.endTime"></j-date>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
          <a-col :xl="4" :lg="6" :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 @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
@@ -74,10 +69,10 @@
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import JDictSelectTag from '@/components/dict/JDictSelectTag.vue'
  import '@/assets/less/TableExpand.less'
  import { mixinDevice } from '@/utils/mixin'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import JDictSelectTag from '@/components/dict/JDictSelectTag.vue'
  export default {
    name: 'FlowLedger',
@@ -113,7 +108,7 @@
          {
            title: '流程业务简要描述',
            align: 'center',
            dataIndex: 'description',
            dataIndex: 'description'
          },
          {
            title: '申请人',
@@ -189,11 +184,11 @@
        console.log('approcesstype--->', approcesstype)
        switch (approcesstype) {
          case 'drApproval':
            item.description=item.description
            item.description = item.description
            this.handDrDetial(item)
            break
          case 'ggApproval':
            item.description=item.description
            item.description = item.description
            this.handDispatchFileDetial(item)
            break
          case 'sbdjApproval':
@@ -208,27 +203,6 @@
        let parts = title.split(':') // æ³¨æ„å†’号是全角字符,使用对应的字进行分割
        let result = parts[0]
        return result
      },
      handDrDetial(item) {
        this.selectShenpiData = item
        this.selectShenpiData.assignee_dictText=item.todoUsers_dictText
        this.selectShenpiData.createTime=item.startTime
        this.selectShenpiData.procInstId=item.processInstanceId
        this.$refs.modalFormApproval.clearTableSource()
        this.$refs.modalFormApproval.getAllApproveData(item)
      },
      handDispatchFileDetial(item){
        this.selectDispatchFileXqData = item
        this.selectDispatchFileXqData.assignee_dictText=item.todoUsers_dictText
        this.selectDispatchFileXqData.createTime=item.startTime
        this.selectDispatchFileXqData.procInstId=item.processInstanceId
        this.$refs.modalFormDispatchFileXq.clearTableSource()
        this.$refs.modalFormDispatchFileXq.getAllApproveData(item)
      },
      handInspectionOrderDetail(item) {
        this.selectInspectionOrderXqData = item
src/views/flowable/workflow/FlowTodo.vue
@@ -78,20 +78,30 @@
      </a-table>
    </div>
    <!--保养规范-->
    <maintenance-standard-approval-modal ref="maintenanceStandardApprovalModal" @modalFormOk="modalFormOk"
                                         :selectShenpiData="selectedRowData"/>
    <!--点检-->
    <inspection-order-handle ref="inspectionOrderHandle" :selectShenpiData="selectedRowData"
                             @modalFormOk="modalFormOk"/>
    <!--技术鉴定工单-->
    <technical-status-evaluation-approval-modal ref="technicalStatusApprovalModal" :selectShenpiData="selectedRowData"
                                                @modalFormOk="modalFormOk"/>
    <!--二保工单-->
    <second-maintenance-approval-modal ref="secondMaintenanceApprovalModal" :selectShenpiData="selectedRowData"
                                       @modalFormOk="modalFormOk"/>
    <!--三保工单-->
    <third-maintenance-approval-modal ref="thirdMaintenanceApprovalModal" :selectShenpiData="selectedRowData"
                                      @modalFormOk="modalFormOk"/>
    <!--技术鉴定工单变更-->
    <technical-status-evaluation-order-change-approval-modal ref="evaluationOrderChangeApprovalModal"
                                                             :selectShenpiData="selectedRowData"
                                                             @modalFormOk="modalFormOk"/>
  </a-card>
</template>
@@ -104,11 +114,14 @@
    from './TechnicalStatusEvaluation/TechnicalStatusEvaluationApprovalModal'
  import SecondMaintenanceApprovalModal from './secondMaintenance/SecondMaintenanceApprovalModal'
  import ThirdMaintenanceApprovalModal from './thirdMaintenance/ThirdMaintenanceApprovalModal'
  import TechnicalStatusEvaluationOrderChangeApprovalModal
    from './TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal'
  export default {
    name: 'FlowTodo',
    mixins: [JeecgListMixin],
    components: {
      TechnicalStatusEvaluationOrderChangeApprovalModal,
      ThirdMaintenanceApprovalModal,
      SecondMaintenanceApprovalModal,
      TechnicalStatusEvaluationApprovalModal,
@@ -192,33 +205,30 @@
      }
    },
    methods: {
      handelDetail(item, index) {
        let processType = this.splitProcessType(item.category)
      handelDetail(record) {
        let processType = this.splitProcessType(record.category)
        console.log('processType', processType)
        switch (processType) {
          case 'maintenance_standard':
            this.handleMaintenanceStandard(item)
            this.handleMaintenanceStandard(record)
            break
          case 'sbdjApproval':
            this.handInspectionOrder(item)
            this.handInspectionOrder(record)
            break
          case 'eam_repair':
            this.handleRepairOrder(item)
            this.handleRepairOrder(record)
            break
          case 'second_maintenance':
            this.handleSecondMaintenance(item)
            this.handleSecondMaintenance(record)
            break
          case 'third_maintenance':
            this.handleThirdMaintenance(item)
            this.handleThirdMaintenance(record)
            break
          case 'TECHNICAL_STATUS_EVALUATION':
            this.handleTechnicalStatusEvaluation(item)
            this.handleTechnicalStatusEvaluation(record)
            break
          case 'toolsStocktakingBound':
            this.handleToolStocktakingApproval(item)
            break
          case 'toolsLossApproval':
            this.handleToolLossApproval(item)
          case 'EVALUATION_ORDER_CHANGE_PROCESS':
            this.handleEvaluationOrderChange(record)
            break
          default:
            alert('没找到该流程')
@@ -248,6 +258,13 @@
        this.$refs.technicalStatusApprovalModal.handleDetail(record)
      },
      handleEvaluationOrderChange(record) {
        this.selectedRowData = Object.assign({}, record)
        this.$refs.evaluationOrderChangeApprovalModal.visible = true
        this.$refs.evaluationOrderChangeApprovalModal.title = record.name
        this.$refs.evaluationOrderChangeApprovalModal.handleApprove(record)
      },
      /**
       * ç‚¹å‡»äºŒä¿æµç¨‹æ‰§è¡Œå®¡æ‰¹æ—¶è§¦å‘
       * @param record
@@ -267,8 +284,7 @@
        this.selectedRowData = Object.assign({}, record)
        this.$refs.inspectionOrderHandle.visible = true
        this.$refs.inspectionOrderHandle.title = record.name
        this.$refs.inspectionOrderHandle.getAllApproveData(record)
        this.$refs.inspectionOrderHandle.getBasicInformation(record)
        this.$refs.inspectionOrderHandle.handleApprove(record)
      },
      /**
@@ -278,8 +294,8 @@
      handleThirdMaintenance(record) {
        this.selectedRowData = Object.assign({}, record)
        this.$refs.thirdMaintenanceApprovalModal.visible = true
        this.$refs.thirdMaintenanceApprovalModal.handleDetail(record)
        this.$refs.thirdMaintenanceApprovalModal.title = record.name
        this.$refs.thirdMaintenanceApprovalModal.handleDetail(record)
      },
      /**
src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
@@ -3,21 +3,20 @@
           :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="submitForm"
           @cancel="handleCancel" :mask-closable="false" :confirmLoading="confirmLoading" fullscreen>
    <a-spin :spinning="spinning">
      <a-form-model ref='form' :model='tableRowRecord' :labelCol="labelCol" :wrapperCol="wrapperCol"
                    :rules="validatorRules">
        <a-row :gutter="48">
          <a-col :span="8">
      <a-form-model ref='form' :model='model' :labelCol="labelCol" :wrapperCol="wrapperCol" :rules="validatorRules">
        <a-row :gutter="48" id="outer-row">
          <a-col :span="8" class="scroll-col">
            <a-tabs>
              <a-tab-pane tab="基础信息">
                <a-row>
                  <a-col :span='span'>
                    <a-form-model-item label="工单号">
                      <a-input readOnly v-model="tableRowRecord.orderNum"/>
                      <a-input readOnly v-model="model.orderNum"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span='span'>
                    <a-form-model-item label="设备编号">
                      <MaintenanceEquipmentSelect v-model="tableRowRecord.equipmentId"
                      <MaintenanceEquipmentSelect v-model="model.equipmentId"
                                                  :maintenanceCategory="'POINT_INSPECTION'"
                                                  disabled @autocompleteForm="autoCompleteForm"/>
                    </a-form-model-item>
@@ -28,12 +27,12 @@
                <a-row>
                  <a-col :span='span'>
                    <a-form-model-item label="规范名称">
                      <a-input readOnly v-model="tableRowRecord.standardName"/>
                      <a-input readOnly v-model="model.standardName"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span='span'>
                    <a-form-model-item label="规范编码">
                      <a-input readOnly v-model="tableRowRecord.standardCode"/>
                      <a-input readOnly v-model="model.standardCode"/>
                    </a-form-model-item>
                  </a-col>
@@ -42,12 +41,12 @@
                <a-row>
                  <a-col :span='span'>
                    <a-form-model-item label="点检日期">
                      <a-input v-model="tableRowRecord.inspectionDate" readOnly/>
                      <a-input v-model="model.inspectionDate" readOnly/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span='span'>
                    <a-form-model-item label="点检过期时间">
                      <a-input v-model="tableRowRecord.expirationTime" readOnly/>
                    <a-form-model-item label="过期时间">
                      <a-input v-model="model.expirationTime" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -55,12 +54,12 @@
                <a-row>
                  <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-col :span='span'>
                    <a-form-model-item label="点检人">
                      <a-input v-model="tableRowRecord.operator_dictText" readOnly/>
                      <a-input v-model="model.operator_dictText" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -68,7 +67,7 @@
                <a-row>
                  <a-col :span="span*2">
                    <a-form-model-item label="备注" :labelCol="{span:4}" :wrapperCol="{span:20}">
                      <a-textarea v-model="tableRowRecord.remark" rows="3" readOnly/>
                      <a-textarea v-model="model.remark" rows="3" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -76,11 +75,11 @@
            </a-tabs>
          </a-col>
          <a-col :span="!isDisplayConfirm?16:10">
          <a-col :span="!isDisplayConfirm?16:10" class="scroll-col">
            <a-tabs :active-key="activeTabKey" @change="handleTabChange">
              <a-tab-pane key="1" tab="日点检">
                <j-vxe-table ref="editableDetailTable1" :rowNumber="false" rowSelection bordered
                             alwaysEdit :toolbar="false" keep-source :height="300" :loading="detail.loading"
                             alwaysEdit :toolbar="false" keep-source :height="500"
                             :dataSource="detail.dayInspectionList" :columns="detail.columns"
                             @selectRowChange="handleTableSelectRowChange($event,'Day')">
                  <template v-slot:inspectionResult="props">
@@ -91,7 +90,7 @@
                  </template>
                  <template v-slot:exceptionDescription="props">
                    <a-textarea style="height: 32px" v-model="props.row.exceptionDescription"
                    <a-textarea :rows="1" style="resize: none" v-model="props.row.exceptionDescription"
                                :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'请输入异常描述':''"
                                :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'"/>
                  </template>
@@ -107,7 +106,7 @@
              <a-tab-pane key="2" tab="周点检" forceRender>
                <j-vxe-table ref="editableDetailTable2" :rowNumber="false" rowSelection bordered
                             alwaysEdit :toolbar="false" keep-source :height="300" :loading="detail.loading"
                             alwaysEdit :toolbar="false" keep-source :height="500"
                             :dataSource="detail.weekInspectionList" :columns="detail.columns"
                             @selectRowChange="handleTableSelectRowChange($event,'Week')">
                  <template v-slot:inspectionResult="props">
@@ -119,7 +118,7 @@
                  </template>
                  <template v-slot:exceptionDescription="props">
                    <a-textarea style="height: 32px" v-model="props.row.exceptionDescription"
                    <a-textarea :rows="1" style="resize: none" v-model="props.row.exceptionDescription"
                                :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'请输入异常描述':''"
                                :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'"/>
                  </template>
@@ -148,23 +147,23 @@
            </a-tabs>
          </a-col>
          <a-col v-if="isDisplayConfirm" :span="6">
          <a-col v-if="isDisplayConfirm" :span="6" class="scroll-col">
            <a-tabs>
              <a-tab-pane tab="维修工确认">
                <a-row>
                  <a-col :span="24">
                    <a-form-model-item prop="confirmDealType" label="处理类型">
                      <j-dict-select-tag type='radio' v-model='tableRowRecord.confirmDealType'
                      <j-dict-select-tag type='radio' v-model='model.confirmDealType'
                                         dictCode='approved_rejected'
                                         :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"/>
                                         :disabled="disableSubmit||model.inspectionStatus!=='WAIT_CONFIRM'"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item prop="confirmComment" label="处理意见">
                      <a-textarea placeholder="请输入处理意见"
                                  :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"
                                  v-model="tableRowRecord.confirmComment"/>
                    <a-form-model-item label="处理意见">
                      <a-textarea placeholder="请输入意见"
                                  :disabled="disableSubmit||model.inspectionStatus!=='WAIT_CONFIRM'"
                                  v-model="model.confirmComment"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -196,23 +195,20 @@
        span: 12,
        confirmLoading: false,
        spinning: false,
        tableRowRecord: {},
        model: {},
        validatorRules: {
          confirmDealType: [
            { required: true, message: '请选择处理类型' }
          ],
          confirmComment: [
            { required: true, message: '请输入处理意见' }
          ]
        },
        imageSrc: null,
        labelCol: {
          xs: { span: 24 },
          sm: { span: 9 }
          sm: { span: 8 }
        },
        wrapperCol: {
          xs: { span: 30 },
          sm: { span: 15 }
          sm: { span: 16 }
        },
        visible: false,
        // è¡¨å¤´
@@ -292,52 +288,75 @@
    },
    computed: {
      isDisplayConfirm() {
        return ['WAIT_CONFIRM', 'COMPLETE'].includes(this.tableRowRecord.inspectionStatus)
        return ['WAIT_CONFIRM', 'COMPLETE'].includes(this.model.inspectionStatus)
      },
      isDisableOperation() {
        return this.disableSubmit || this.tableRowRecord.inspectionStatus !== 'UNDER_INSPECTION'
        return this.disableSubmit || this.model.inspectionStatus !== 'UNDER_INSPECTION'
      }
    },
    methods: {
      /**
       * èŽ·å–æµç¨‹èŠ‚ç‚¹å’Œæµç¨‹å›¾
       * @param record å¾…办记录信息
       */
      getAllApproveData(record) {
        if (record.procInstId) {
          const { processDefinitionId, processInstanceId, processDefinitionKey, procInstId } = record
          const param = { procInstId }
          const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey }
          const that = this
      handleApprove(record) {
        this.spinning = true
        this.activeTabKey = '1'
        this.detail.dayInspectionList = this.detail.weekInspectionList = []
        this.getBasicInformationByApi(record)
        this.getFlowChartImageByApi(record)
      },
          downFile(this.url.diagramView, imageParam, 'get')
            .then((res => {
              const urlObject = window.URL.createObjectURL(new Blob([res]))
              that.imageSrc = urlObject
            }))
            .catch(err => {
              that.$notification.error({
                message: '消息',
                description: res.message
              })
            })
        }
      handleDetail(record) {
        this.spinning = true
        this.activeTabKey = '1'
        this.detail.dayInspectionList = this.detail.weekInspectionList = []
        this.model = Object.assign({}, record)
        this.getDayInspectionOrderListByApi(record.id)
        this.getWeekInspectionOrderListByApi(record.standardId)
      },
      /**
       * èŽ·å–å¾…åŠžè®°å½•çš„åŸºæœ¬ä¿¡æ¯
       * @param record å¾…办记录信息
       * èŽ·å–åŸºç¡€ä¿¡æ¯
       * @param record ä¸»é¡µé¢åˆ—表行记录
       */
      async getBasicInformation(record) {
        this.activeTabKey = '1'
        this.detail.dayInspectionList = this.detail.weekInspectionList = []
        this.spinning = true
        const param = { id: record.dataId }
        let res = await getAction(this.url.queryById, param)
        this.tableRowRecord = Object.assign({}, res.result)
        this.getDayInspectionOrderListByApi(record.dataId)
        console.log('record', record)
        this.getWeekInspectionOrderListByApi(this.tableRowRecord.standardId)
      getBasicInformationByApi(record) {
        const that = this
        getAction(this.url.queryById, { id: record.dataId })
          .then(res => {
            if (res.success) {
              that.model = Object.assign({}, res.result)
              that.model.dataId = record.dataId
              that.model.taskId = record.id
              that.model.userId = record.assignee
              that.model.instanceId = record.procInstId
              this.getDayInspectionOrderListByApi(record.dataId)
              this.getWeekInspectionOrderListByApi(this.model.standardId)
            }
            else {
              that.$notification.warning({
                message: '消息',
                description: res.message
              })
            }
          })
      },
      /**
       * èŽ·å–æµç¨‹å›¾
       * @param record ä¸»é¡µé¢åˆ—表行记录
       */
      getFlowChartImageByApi(record) {
        const { processDefinitionId, processInstanceId, processDefinitionKey } = record
        const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey }
        const that = this
        downFile(this.url.diagramView, imageParam, 'get')
          .then((res => {
            that.imageSrc = window.URL.createObjectURL(new Blob([res]))
          }))
          .catch(err => {
            that.$notification.error({
              message: '消息',
              description: err.message
            })
          })
      },
      /**
@@ -349,7 +368,7 @@
          getAction(this.url.detailList, { orderId })
            .then(res => {
              if (res.success) {
                this.detail.dayInspectionList = [...res.result]
                this.detail.dayInspectionList = res.result
              }
            })
            .finally(() => {
@@ -363,8 +382,7 @@
       * @param standardId è§„范id
       */
      getWeekInspectionOrderListByApi(standardId) {
        console.log('standardId-------------------------', standardId)
        getAction(this.url.weekInspectionOrderList, { standardId, inspectionDate: this.tableRowRecord.inspectionDate })
        getAction(this.url.weekInspectionOrderList, { standardId, inspectionDate: this.model.inspectionDate })
          .then(res => {
            if (res.success) {
              this.detail.weekInspectionList = res.result.list
@@ -376,6 +394,10 @@
          })
      },
      /**
       * tab栏切换时触发
       * @param tabKey åˆ‡æ¢åŽçš„tabKey
       */
      handleTabChange(tabKey) {
        if (this.activeTabKey == '1') this.$refs.editableDetailTable1.clearValidate()
        this.activeTabKey = tabKey
@@ -400,17 +422,10 @@
        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
            flowTaskVo.confirmDealType = this.tableRowRecord.confirmDealType
            flowTaskVo.confirmComment = this.tableRowRecord.confirmComment
            flowTaskVo.tableDetailList = this.$refs.editableDetailTable1.getTableData()
            if (!this.detail.weekInspectionFinishedFlag) flowTaskVo.tableWeekDetailList = this.$refs.editableDetailTable2.getTableData()
            this.model.tableDetailList = this.$refs.editableDetailTable1.getTableData()
            if (!this.detail.weekInspectionFinishedFlag) this.model.tableWeekDetailList = this.$refs.editableDetailTable2.getTableData()
            const that = this
            postAction(this.url.approve, flowTaskVo)
            postAction(this.url.approve, this.model)
              .then((res) => {
                if (res.success) {
                  that.$notification.success({
@@ -437,9 +452,9 @@
      },
      autoCompleteForm({ standardName, maintenancePeriod, standardCode }) {
        this.$set(this.tableRowRecord, 'standardName', standardName)
        this.$set(this.tableRowRecord, 'maintenancePeriod', maintenancePeriod)
        this.$set(this.tableRowRecord, 'standardCode', standardCode)
        this.$set(this.model, 'standardName', standardName)
        this.$set(this.model, 'maintenancePeriod', maintenancePeriod)
        this.$set(this.model, 'standardCode', standardCode)
      },
      // æ‰¹é‡é€‰æ‹©æ‰€æœ‰ç‚¹æ£€ç»“æžœ
@@ -512,8 +527,29 @@
    }
  }
</script>
<style scoped>
<style scoped lang="less">
  /deep/ .ant-select-dropdown-menu {
    text-align: left;
  }
  /deep/ .ant-spin-nested-loading {
    height: 100%;
    .ant-spin-container {
      height: 100%;
      .ant-form {
        height: 100%;
        #outer-row {
          height: 100%;
          .scroll-col {
            height: 100%;
            overflow: auto;
          }
        }
      }
    }
  }
</style>
src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue
@@ -5,9 +5,9 @@
    <a-spin :spinning="spinning">
      <a-form-model ref='form' :model='tableRowRecord' :labelCol="labelCol" :wrapperCol="wrapperCol"
                    :rules="validatorRules">
        <a-row :gutter="48">
          <a-col :span="10">
            <a-tabs default-active-key="1">
        <a-row :gutter="24" id="outer-row">
          <a-col :span="8" class="scroll-col">
            <a-tabs>
              <a-tab-pane tab="基础信息" key="1">
                <a-row>
                  <a-col :span="span">
@@ -70,8 +70,12 @@
                  </a-col>
                </a-row>
              </a-tab-pane>
            </a-tabs>
          </a-col>
              <a-tab-pane key="2" tab="保养项明细" forceRender>
          <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">
@@ -80,20 +84,16 @@
                  </template>
                </j-vxe-table>
              </a-tab-pane>
            </a-tabs>
          </a-col>
          <a-col :span="8">
            <a-tabs>
              <template v-if="selectShenpiData.procInstId">
                <a-tab-pane tab='流程图'>
                <a-tab-pane tab='流程图' forceRender>
                  <img :src="imageSrc" width="100%" v-if="imageSrc"/>
                </a-tab-pane>
              </template>
            </a-tabs>
          </a-col>
          <a-col :span="6">
          <a-col :span="6" class="scroll-col">
            <a-tabs>
              <a-tab-pane tab="维修主任审批">
                <a-row :gutter="24">
@@ -106,8 +106,8 @@
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item prop="repairManagerApproveComment" label="处理意见">
                      <a-textarea placeholder="请输入处理意见"
                    <a-form-model-item label="处理意见">
                      <a-textarea placeholder="请输入意见"
                                  :disabled="disableSubmit||tableRowRecord.standardStatus!=='WAIT_REPAIR_DIRECTOR'"
                                  v-model="tableRowRecord.repairManagerApproveComment"/>
                    </a-form-model-item>
@@ -127,8 +127,8 @@
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item prop="technicalManagerApproveComment" label="处理意见">
                      <a-textarea placeholder="请输入处理意见" v-model="tableRowRecord.technicalManagerApproveComment"/>
                    <a-form-model-item label="处理意见">
                      <a-textarea placeholder="请输入意见" v-model="tableRowRecord.technicalManagerApproveComment"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -165,14 +165,8 @@
          repairManagerApproveResult: [
            { required: true, message: '请选择处理类型' }
          ],
          repairManagerApproveComment: [
            { required: true, message: '请输入处理意见' }
          ],
          technicalManagerApproveResult: [
            { required: true, message: '请选择处理类型' }
          ],
          technicalManagerApproveComment: [
            { required: true, message: '请输入处理意见' }
          ]
        },
        imageSrc: null,
@@ -373,8 +367,29 @@
    }
  }
</script>
<style scoped>
<style scoped lang="less">
  /deep/ .ant-select-dropdown-menu {
    text-align: left;
  }
  /deep/ .ant-spin-nested-loading {
    height: 100%;
    .ant-spin-container {
      height: 100%;
      .ant-form {
        height: 100%;
        #outer-row {
          height: 100%;
          .scroll-col {
            height: 100%;
            overflow: auto;
          }
        }
      }
    }
  }
</style>
src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationApprovalModal.vue
@@ -1,5 +1,5 @@
<template>
  <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading"
  <j-modal :title="title" :visible="visible" :confirmLoading="confirmLoading"
           :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" fullscreen @ok="handleOk"
           @cancel="handleCancel" centered cancelText="关闭">
    <a-spin :spinning="spinning">
@@ -317,7 +317,6 @@
  import { downFile, getAction, httpAction } from '@/api/manage'
  import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
  import { JVXETypes } from '@comp/jeecg/JVxeTable'
  import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect'
  import TechnicalStatusEquipmentSelect from '../../../eam/equipment/modules/TechnicalStatusEquipmentSelect'
  export default {
@@ -325,7 +324,6 @@
    mixins: [JVxeTableModelMixin],
    components: {
      TechnicalStatusEquipmentSelect,
      MaintenanceEquipmentSelect
    },
    props: {
      selectShenpiData: {
src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,364 @@
<template>
  <j-modal :title="title" :width="1300" :fullscreen="fullScreen" :visible="visible" :confirmLoading="confirmLoading"
           :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="handleOk"
           @cancel="handleCancel" cancelText="关闭">
    <a-spin :spinning="spinning">
      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
        <a-row id="outer-row" :gutter="24">
          <!--左侧基础信息列-->
          <a-col :span="!disableSubmit?8:14" class="scroll-col">
            <a-tabs>
              <a-tab-pane tab="基础信息">
                <a-row>
                  <a-col :span="12">
                    <a-form-model-item label="工单号">
                      <a-input v-model="model.orderId_dictText" readOnly/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="12">
                    <a-form-model-item label="变更单号">
                      <a-input v-model="model.changeOrderNum" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
                <a-row>
                  <a-col :span="12">
                    <a-form-model-item label="统一编码">
                      <technical-status-equipment-select v-model="model.equipmentId"
                                                         @autocompleteForm="autocompleteForm" disabled/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="12">
                    <a-form-model-item label="申请人">
                      <a-input v-model="model.applicant_dictText" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
                <a-row>
                  <a-col :span="12">
                    <a-form-model-item label="申请部门">
                      <a-input v-model="model.factoryOrgCode_dictText" readOnly/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="12">
                    <a-form-model-item label="变更原因">
                      <a-input v-model="model.applyReason_dictText" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
                <a-row>
                  <a-col :span="12">
                    <a-form-model-item label="变更鉴定日期">
                      <a-input v-model="model.deferredEvaluationDate" readOnly/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
                <a-row>
                  <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="备注">
                    <a-textarea v-model="model.remark" readOnly/>
                  </a-form-model-item>
                </a-row>
              </a-tab-pane>
            </a-tabs>
          </a-col>
          <!-- ä¸­é—´æ˜Žç»†é¡¹åˆ—-->
          <a-col v-if="selectShenpiData.procInstId" :span="10" class="scroll-col">
            <a-tabs>
              <a-tab-pane key='1' tab='流程图'>
                <img :src="imageSrc" alt="Fetched Image" style="width: 100%" v-if="imageSrc"/>
              </a-tab-pane>
            </a-tabs>
          </a-col>
          <!--右侧审批列-->
          <a-col :span="!disableSubmit?6:10" class="scroll-col">
            <a-tabs v-if="displayEquipmentManagerFlag">
              <a-tab-pane tab="使用单位室级领导确认">
                <a-row>
                  <a-col :span="24">
                    <a-form-model-item prop="equipmentManagerSignatureResult" label="确认类型" :labelCol="rightColLabelCol"
                                       :wrapperCol="rightColWrapperCol">
                      <j-dict-select-tag type='radio' v-model='model.equipmentManagerSignatureResult'
                                         dictCode='approve_reject'
                                         :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='EQUIPMENT_MANAGER_SIGNING')"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item label="确认意见" :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol">
                      <a-textarea placeholder="请输入意见" v-model="model.equipmentManagerComment"
                                  :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='EQUIPMENT_MANAGER_SIGNING')"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
              </a-tab-pane>
            </a-tabs>
            <a-tabs v-if="displayDepartManagerFlag">
              <a-tab-pane tab="部门领导确认">
                <a-row>
                  <a-col :span="24">
                    <a-form-model-item prop="departManagerSignatureResult" label="确认类型" :labelCol="rightColLabelCol"
                                       :wrapperCol="rightColWrapperCol">
                      <j-dict-select-tag type='radio' v-model='model.departManagerSignatureResult'
                                         dictCode='approve_reject'
                                         :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='DEPART_MANAGER_SIGNING')"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item label="确认意见" :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol">
                      <a-textarea placeholder="请输入意见" v-model="model.departManagerComment"
                                  :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='DEPART_MANAGER_SIGNING')"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
              </a-tab-pane>
            </a-tabs>
            <a-tabs v-if="displayProductionSupportFlag">
              <a-tab-pane tab="生产保障部领导确认">
                <a-row>
                  <a-col :span="24">
                    <a-form-model-item prop="productionSupportSignatureResult" label="确认类型"
                                       :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol">
                      <j-dict-select-tag type='radio' v-model='model.productionSupportSignatureResult'
                                         dictCode='approve_reject'
                                         :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='PRODUCTION_SUPPORT_SIGNING')"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item label="确认意见" :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol">
                      <a-textarea placeholder="请输入意见" v-model="model.productionSupportComment"
                                  :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='PRODUCTION_SUPPORT_SIGNING')"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
              </a-tab-pane>
            </a-tabs>
          </a-col>
        </a-row>
      </a-form-model>
    </a-spin>
  </j-modal>
</template>
<script>
  import { downFile, getAction, postAction } from '@/api/manage'
  import TechnicalStatusEquipmentSelect from '../../../eam/equipment/modules/TechnicalStatusEquipmentSelect'
  export default {
    name: 'TechnicalStatusEvaluationOrderChangeApprovalModal',
    components: {
      TechnicalStatusEquipmentSelect
    },
    props: {
      selectShenpiData: {
        type: Object
      }
    },
    data() {
      return {
        title: '操作',
        visible: false,
        model: {},
        labelCol: {
          xs: { span: 24 },
          sm: { span: 8 }
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 }
        },
        labelColLong: {
          xs: { span: 24 },
          sm: { span: 4 }
        },
        wrapperColLong: {
          xs: { span: 24 },
          sm: { span: 20 }
        },
        rightColLabelCol: {
          xs: { span: 24 },
          sm: { span: 6 }
        },
        rightColWrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 }
        },
        confirmLoading: false,
        spinning: false,
        imageSrc: null,
        fullScreen: true,
        validatorRules: {
          equipmentManagerSignatureResult: [{ required: true, message: '请选择确认类型' }],
          departManagerSignatureResult: [{ required: true, message: '请选择确认类型' }],
          productionSupportSignatureResult: [{ required: true, message: '请选择确认类型' }]
        },
        url: {
          queryById: '/eam/eamTechnicalStatusEvaluationOrderChange/queryById',
          approval: '/eam/eamTechnicalStatusEvaluationOrderChange/approval',
          diagramView: '/assign/flow/diagramView'
        },
        disableSubmit: false,
        selectedRowKeys: []
      }
    },
    computed: {
      displayEquipmentManagerFlag() {
        return this.model.changeStatus && ['EQUIPMENT_MANAGER_SIGNING', 'DEPART_MANAGER_SIGNING', 'PRODUCTION_SUPPORT_SIGNING', 'COMPLETED'].includes(this.model.changeStatus)
      },
      displayDepartManagerFlag() {
        return this.model.changeStatus && ['DEPART_MANAGER_SIGNING', 'PRODUCTION_SUPPORT_SIGNING', 'COMPLETED'].includes(this.model.changeStatus)
      },
      displayProductionSupportFlag() {
        return this.model.changeStatus && ['PRODUCTION_SUPPORT_SIGNING', 'COMPLETED'].includes(this.model.changeStatus)
      }
    },
    methods: {
      /**
       * ä¸»é¡µé¢ç‚¹å‡»æ‰§è¡Œå®¡æ‰¹æ—¶è§¦å‘
       * @param record ä¸»é¡µé¢åˆ—表行记录
       */
      handleApprove(record) {
        this.fullScreen = true
        this.model = {}
        this.getBasicInformationByApi(record)
        this.getFlowChartImageByApi(record)
      },
      /**
       * ä¸»é¡µé¢ç‚¹å‡»è¯¦æƒ…时触发
       * @param record ä¸»é¡µé¢åˆ—表行记录
       */
      handleDetail(record) {
        this.fullScreen = false
        this.model = Object.assign({}, record)
      },
      /**
       * èŽ·å–åŸºç¡€ä¿¡æ¯
       * @param record ä¸»é¡µé¢åˆ—表行记录
       */
      getBasicInformationByApi(record) {
        this.spinning = true
        const that = this
        getAction(this.url.queryById, { id: record.dataId })
          .then(res => {
            if (res.success) {
              that.model = Object.assign({}, res.result)
              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
              })
            }
          })
      },
      /**
       * èŽ·å–æµç¨‹å›¾
       * @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
            })
          })
      },
      async handleOk() {
        const that = this
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = that.spinning = true
            postAction(this.url.approval, this.model)
              .then((res) => {
                if (res.success) {
                  that.$notification.success({
                    message: '消息',
                    description: res.message
                  })
                  that.$emit('modalFormOk')
                  that.close()
                } else {
                  that.$notification.warning({
                    message: '消息',
                    description: res.message
                  })
                }
              })
              .finally(() => {
                that.confirmLoading = that.spinning = false
              })
          } else {
            return false
          }
        })
      },
      autocompleteForm(selectObj) {
        this.$set(this.model, 'equipmentId', selectObj.equipmentId)
        this.spinning = false
      },
      handleCancel() {
        this.close()
      },
      close() {
        this.$emit('close')
        this.visible = false
        this.$refs.form.clearValidate()
      }
    }
  }
</script>
<style scoped lang="less">
  /deep/ .ant-spin-nested-loading {
    height: 100%;
    .ant-spin-container {
      height: 100%;
      .ant-form {
        height: 100%;
        #outer-row {
          height: 100%;
          .scroll-col {
            height: 100%;
            overflow: auto;
          }
        }
      }
    }
  }
</style>
src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue
@@ -72,7 +72,7 @@
                          v-if="selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey=='operator_task'||
                          (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')">
                <j-vxe-table ref="editableDetailTable1" :rowNumber="false" rowSelection bordered
                             alwaysEdit keep-source :height="300"
                             alwaysEdit keep-source
                             :dataSource="detail.operatorMaintenanceList" :columns="detail.columns"
                             @selectRowChange="handleTableSelectRowChange($event,'Operator')">
                  <template v-slot:maintenanceResult="props">
@@ -107,7 +107,7 @@
                          v-if="selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey=='maintenance_task'||
                          (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')">
                <j-vxe-table ref="editableDetailTable2" :rowNumber="false" rowSelection bordered
                             alwaysEdit kee-source :height="300"
                             alwaysEdit kee-source
                             :dataSource="detail.repairerMaintenanceList" :columns="detail.columns"
                             @selectRowChange="handleTableSelectRowChange($event,'Repairer')">
                  <template v-slot:maintenanceResult="props">
src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue
@@ -62,7 +62,7 @@
          <a-col :span="model.maintenanceStatus&&model.maintenanceStatus!='WAIT_MAINTENANCE'?10:16" class="scroll-col">
            <a-tabs v-model="activeTabKey" @change="$refs.editableDetailTable.clearValidate()">
              <a-tab-pane key="1" tab="保养项明细">
                <j-vxe-table ref="editableDetailTable" rowSelection bordered alwaysEdit keep-source :height="300"
                <j-vxe-table ref="editableDetailTable" rowSelection bordered alwaysEdit keep-source
                             :dataSource="detail.dataSource" :columns="detail.columns"
                             @selectRowChange="handleTableSelectRowChange">
                  <!--保养结果-->