lyh
昨天 6cd1cd09c6b13c071dc085e24f0980cc102b99a2
src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue
@@ -66,37 +66,37 @@
          </a-col>
          <a-col class="scroll-col"
                 :span="model.maintenanceStatus&&model.maintenanceStatus!='WAIT_MAINTENANCE'&&model.maintenanceStatus!='UNDER_MAINTENANCE'?10:16">
                 :span="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_MAINTENANCE'&&model.maintenanceStatus!=='UNDER_MAINTENANCE'?10:16">
            <a-tabs :active-key="activeTabKey" @change="handleTabChange">
              <a-tab-pane :key="1" tab="操作工"
                          v-if="selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey=='operator_task'||
                          (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')">
                          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">
                    <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="maintenance_result"
                                       placeholder="请选择保养结果"
                                       :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"
                                       :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')"
                                       @change="handleInspectionResultSelectChange($event,props.row)"
                                       style="width: 100%"/>
                  </template>
                  <template v-slot:exceptionDescription="props">
                    <a-textarea :rows="1" :autoSize="false" v-model="props.row.exceptionDescription"
                                :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='1'?'请输入异常描述':''"
                                :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'请输入异常描述':''"
                                :disabled="disableSubmit||
                                (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') ||
                                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
                                 !props.row.maintenanceResult ||
                                  props.row.maintenanceResult === '1'"/>
                  </template>
                  <template v-slot:reportFlag="props">
                    <j-dict-select-tag v-model="props.row.reportFlag" dictCode="yn" style="width: 100%"
                                       :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='1'?'请选择异常是否报修':''"
                                       :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'请选择异常是否报修':''"
                                       :disabled="disableSubmit ||
                                       (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') ||
                                       (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
                                        !props.row.maintenanceResult ||
                                         props.row.maintenanceResult === '1'"/>
                  </template>
@@ -104,53 +104,69 @@
              </a-tab-pane>
              <a-tab-pane :key="2" tab="维修工"
                          v-if="selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey=='maintenance_task'||
                          (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')">
                          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">
                    <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="maintenance_result"
                                       placeholder="请选择保养结果"
                                       :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"
                                       :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')"
                                       @change="handleInspectionResultSelectChange($event,props.row)"
                                       style="width: 100%"/>
                  </template>
                  <template v-slot:exceptionDescription="props">
                    <a-textarea :rows="1" :autoSize="false" v-model="props.row.exceptionDescription"
                                :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='1'?'请输入异常描述':''"
                                :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'请输入异常描述':''"
                                :disabled="disableSubmit ||
                                (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') ||
                                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
                                !props.row.maintenanceResult ||
                                 props.row.maintenanceResult === '1'"/>
                  </template>
                  <template v-slot:reportFlag="props">
                    <j-dict-select-tag v-model="props.row.reportFlag"
                                       :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='1'?'请选择异常是否报修':''"
                                       :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'请选择异常是否报修':''"
                                       dictCode="yn" style="width: 100%"
                                       :disabled="disableSubmit||
                                       (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') ||
                                       (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
                                       !props.row.maintenanceResult ||
                                        props.row.maintenanceResult === '1'"/>
                  </template>
                </j-vxe-table>
              </a-tab-pane>
              <template v-if="selectShenpiData.procInstId">
              <template v-if="selectShenpiData.processDefinitionKey">
                <a-tab-pane key='3' tab='流程图'>
                  <img :src="imageSrc" alt="Fetched Image"/>
                </a-tab-pane>
              </template>
              <a-tab-pane key='4' tab='流转节点'>
                <a-card>
                  <a-timeline style="padding:0 1% 0 12%" >
                    <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1">
                      <div class="bottom">
                        <p>处理人:{{item.assignee_dictText}}</p>
                        <p v-if="index1 !==0">处理时长:{{item.duration}}</p>
                        <p v-if="item.name !== '提交申请'">处理类型:{{item.sequenceFlowName}}</p>
                        <p v-if="item.description != null">处理意见:{{item.description}}</p>
                        <div class="left_qiu"><span>{{item.taskName}}</span></div>
                      </div>
                    </a-timeline-item>
                  </a-timeline>
                </a-card>
              </a-tab-pane>
              <a-button
                v-if="activeTabKey!=='3'"
                :disabled="disableSubmit ||
                (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') ||
                (activeTabKey=='1'&&selectedOperatorMaintenanceRowKeys.length == 0)||
                (activeTabKey=='2'&&selectedRepairerMaintenanceRowKeys.length == 0)"
                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
                (activeTabKey==='1'&&selectedOperatorMaintenanceRowKeys.length === 0)||
                (activeTabKey==='2'&&selectedRepairerMaintenanceRowKeys.length === 0)"
                slot="tabBarExtraContent"
                type="primary" @click="handleSelectAllInspectionResult">批量保养正常
              </a-button>
@@ -159,7 +175,7 @@
          <!--右侧审批列-->
          <a-col :span="6" class="scroll-col"
                 v-if="model.maintenanceStatus&&model.maintenanceStatus!='WAIT_MAINTENANCE'&&model.maintenanceStatus!='UNDER_MAINTENANCE'">
                 v-if="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_MAINTENANCE'&&model.maintenanceStatus!=='UNDER_MAINTENANCE'">
            <a-tabs v-if="displayAdminConfirmFlag">
              <a-tab-pane tab="管理员确认">
                <a-row>
@@ -167,19 +183,19 @@
                    <a-form-model-item prop="manageUserResult" label="确认类型">
                      <j-dict-select-tag type='radio' v-model='model.manageUserResult' dictCode='approve_reject'
                                         placeholder="请选择确认类型"
                                         :disabled="disableSubmit || model.maintenanceStatus!='WAIT_ADMIN_CONFIRM'"/>
                                         :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item label="问题描述">
                      <a-textarea placeholder="请描述问题" v-model='model.problemDescription'
                                  :disabled="disableSubmit || model.maintenanceStatus!='WAIT_ADMIN_CONFIRM'"/>
                                  :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item label="处理措施描述">
                      <a-textarea placeholder="请描述处理措施" v-model="model.dealDescription"
                                  :disabled="disableSubmit || model.maintenanceStatus!='WAIT_ADMIN_CONFIRM'"/>
                                  :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -193,13 +209,13 @@
                    <a-form-model-item prop="inspectorResult" label="确认类型">
                      <j-dict-select-tag type='radio' v-model='model.inspectorResult' dictCode='approve_reject'
                                         placeholder="请选择确认类型"
                                         :disabled="disableSubmit || model.maintenanceStatus!='WAIT_INSPECTOR_CONFIRM'"/>
                                         :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_INSPECTOR_CONFIRM'"/>
                    </a-form-model-item>
                  </a-col>
                  <a-col :span="24">
                    <a-form-model-item label="确认意见">
                      <a-textarea placeholder="请输入意见" v-model="model.inspectConfirmComment"
                                  :disabled="disableSubmit || model.maintenanceStatus!='WAIT_INSPECTOR_CONFIRM'"/>
                                  :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_INSPECTOR_CONFIRM'"/>
                    </a-form-model-item>
                  </a-col>
                </a-row>
@@ -262,11 +278,13 @@
          queryById: '/eam/secondMaintenanceOrder/list',
          detail: '/eam/secondMaintenanceOrderDetail/queryList',
          approval: '/eam/secondMaintenanceOrder/approval',
          diagramView: '/assign/flow/diagramView'
          diagramView: '/assign/flow/diagramView',
          queryHisTaskList:'/assign/flow/queryHisTaskList',
        },
        disableSubmit: false,
        selectedOperatorMaintenanceRowKeys: [],
        selectedRepairerMaintenanceRowKeys: [],
        hitaskDataSource:[],
        detail: {
          operatorMaintenanceList: [],
          repairerMaintenanceList: [],
@@ -330,10 +348,10 @@
    },
    computed: {
      displayAdminConfirmFlag() {
        return ['WAIT_ADMIN_CONFIRM', 'WAIT_INSPECTOR_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus)
        return ['WAIT_ADMIN_CONFIRM', 'WAIT_INSPECTOR_CONFIRM', 'COMPLETE', 'REJECTED'].includes(this.model.maintenanceStatus)
      },
      displayInspectorConfirmFlag() {
        return ['WAIT_INSPECTOR_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus)
        return ['WAIT_INSPECTOR_CONFIRM', 'COMPLETE', 'REJECTED'].includes(this.model.maintenanceStatus) && this.model.manageUserResult === '1'
      }
    },
    methods: {
@@ -341,12 +359,14 @@
       * 主页面点击执行审批时触发
       * @param record 主页面列表行记录
       */
      async handleDetail(record) {
      async handleApprove(record) {
        this.spinning = true
        this.model = {}
        this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = []
        this.handleTabToFirstTable()
        this.getBasicInformationByApi(record)
        this.getFlowChartImageByApi(record)
        this.getFlowTaskListByApi(record)
        this.loadDetail(record.dataId)
      },
@@ -354,10 +374,12 @@
       * 主页面点击详情时触发
       * @param record 主页面列表行记录
       */
      recordDetail(record) {
      handleDetail(record) {
        this.spinning = true
        this.activeTabKey = 1
        this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = []
        this.model = Object.assign({}, record)
        this.getFlowTaskListByApi(record)
        this.loadDetail(record.id)
      },
@@ -366,7 +388,6 @@
       * @param record 主页面列表行记录
       */
      getBasicInformationByApi(record) {
        this.spinning = true
        const that = this
        getAction(this.url.queryById, { id: record.dataId })
          .then(res => {
@@ -384,6 +405,23 @@
              })
            }
          })
      },
      /**
       * 获取流转节点
       * @param record
       */
      getFlowTaskListByApi(record) {
        console.log("sss",record)
        let parmhis={
          'procInstId': record.procInstId
        }
        getAction(this.url.queryHisTaskList,parmhis).then(res=>{
          this.hitaskDataSource=res.result
        }).finally(
          this.visible = true,
          console.log('this.approveData---->', this.approveData)
        )
      },
      /**
@@ -442,7 +480,7 @@
            that.confirmLoading = that.spinning = true
            // 仅在保养中状态传递表格列表
            if (this.model.maintenanceStatus == 'UNDER_MAINTENANCE') {
            if (this.model.maintenanceStatus === 'UNDER_MAINTENANCE') {
              for (let index = 1; index <= 2; index++) {
                if (that.$refs['editableDetailTable' + index]) {
                  this.model.tableDetailList = that.$refs['editableDetailTable' + index].getTableData()
@@ -498,19 +536,18 @@
      handleTabToFirstTable() {
        this.$nextTick(() => {
          console.log('taskDefKey', this.selectShenpiData.taskDefKey)
          if ((this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey == 'operator_task') || !this.selectShenpiData.taskDefKey) this.activeTabKey = 1
          else if (this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey == 'maintenance_task') this.activeTabKey = 2
          if ((this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey === 'operator_task') || !this.selectShenpiData.taskDefKey || (this.model.maintenanceStatus !== 'UNDER_MAINTENANCE')) this.activeTabKey = 1
          else if (this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey === 'maintenance_task') this.activeTabKey = 2
        })
      },
      //规范选择变化
      loadDetail(orderId) {
        this.spinning = true
        getAction(this.url.detail, { orderId })
          .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')
              this.detail.operatorMaintenanceList = res.result.filter(item => item.itemCategory === 'OPERATOR_MAINTENANCE')
              this.detail.repairerMaintenanceList = res.result.filter(item => item.itemCategory === 'REPAIRER_MAINTENANCE')
            }
          })
      },
@@ -523,16 +560,16 @@
      // 批量选择所有点检结果
      handleSelectAllInspectionResult() {
        let selectedRowKeys, prefix
        if (this.activeTabKey == 1) {
        if (this.activeTabKey === 1) {
          selectedRowKeys = this.selectedOperatorMaintenanceRowKeys
          prefix = 'operator'
        }
        else if (this.activeTabKey == 2) {
        else if (this.activeTabKey === 2) {
          selectedRowKeys = this.selectedRepairerMaintenanceRowKeys
          prefix = 'repairer'
        }
        else selectedRowKeys = []
        if (selectedRowKeys.length == 0) return
        if (selectedRowKeys.length === 0) return
        selectedRowKeys.forEach(key => {
          const dataItem = this.detail[prefix + 'MaintenanceList'].find(item => item.id === key)
@@ -611,4 +648,114 @@
      }
    }
  }
  /* 全局禁选样式 - 作用于整个页面 */
  html.submitting,
  html.submitting body {
    pointer-events: none !important;
    cursor: wait !important;
  }
  /* 蒙层效果增强 */
  html.submitting::before {
    content: '';
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.5);
    z-index: 9998;
  }
  /* 加载指示器 - 更明显的视觉反馈 */
  html.submitting::after {
    content: '提交中...';
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: #1890ff;
    color: white;
    padding: 10px 20px;
    border-radius: 4px;
    z-index: 9999;
  }
  /* 禁用状态按钮样式 */
  .disabled-btn {
    opacity: 0.6;
    cursor: not-allowed !important;
  }
  .shallow-hr {
    border: 0;
    height: 1px; /* 分界线的高度 */
    background-color: rgba(0, 0, 0, 0.1); /* 使用 RGBA 颜色,并设置较低的透明度 */
    margin: 20px 0; /* 分界线上下的外边距 */
  }
  .btn-custom {
    background-color: #4CAF50; /* 绿色背景 */
    color: white; /* 白色文字 */
    border: none; /* 无边框 */
    padding: 5px 15px; /* 内边距 */
    text-align: center; /* 文字居中 */
    text-decoration: none; /* 无下划线 */
    display: inline-block; /* 行内块元素 */
    font-size: 12px; /* 字体大小 */
    margin: 4px 2px; /* 外边距 */
    cursor: pointer; /* 鼠标悬停时显示手型 */
    border-radius: 4px; /* 圆角边框 */
  }
  .bold-large-label {
    font-weight: bold;
    font-size: 20px; /* 或你需要的任何大小 */
  }
  .left_qiu{
    position: absolute;
    left: -74px;
    top: 0;
    width:54px;
    border-radius: 50%;
    height:54px;
    font-size: 13px;
    margin: auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    background: #0099ff;
    transform: translate(0, 0);
  }
  /deep/ .ant-timeline-item-tail{
    left: -29px !important;
  }
  .left_qiu span{
    width: 3em;
    display: block;
    color: #fff;
    text-align: center;
  }
  .img{
    width: 75%;
  }
  .wrap{
    clear: both;
    width: 100%;
    display: flex;
    height: 50px;
    border: 1px solid #ccc;
    /* background-color: aqua; */
  }
  .box{
    width:21%;
    height:50px;
    border-right: 1px solid #ccc;
    line-height: 50px;
    /* background: red; */
    text-align:center;
    margin: auto;
  }
</style>