zhangherong
2025-06-02 ea1497cbb477825522c79cff1b7e1f2e96003ad2
src/views/flowable/workflow/FlowTodo.vue
@@ -9,35 +9,49 @@
    <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-form-item label="流程名称">
              <a-input placeholder="请输入流程名称" v-model="queryParam.flowName"></a-input>
          <!--<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="4" :lg="6" :md="8" :sm="24">
            <a-form-item label="当前节点">
              <a-input placeholder="请输入当前节点精确查询" v-model="queryParam.name"></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-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>
              <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>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
          <template v-if="toggleSearchStatus">
            <a-col :xl="8" :lg="8" :md="12" :sm="24">
              <a-form-item label="任务时间范围">
                <j-date :show-time="false" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                        class="query-group-cust"
                        v-model="queryParam.startTime"></j-date>
                <span class="query-group-split-cust"></span>
                <j-date :show-time="false" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束时间"
                        class="query-group-cust"
                        v-model="queryParam.endTime"></j-date>
              </a-form-item>
            </a-col>
          </template>
          <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 type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
              <a-button @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>
        </a-row>
@@ -73,33 +87,36 @@
        bordered
        size="middle"
        rowKey="id"
        :scroll="{x:'max-content',y:465}"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        class="j-table-force-nowrap"
        :scroll="{ x: 'max-content' }"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
        <span slot="action" slot-scope="text, record">
            <a @click="handelDetial(record,text)">查看详情</a>
            <a @click="handelDetail(record,text)">执行/审批</a>
        </span>
      </a-table>
    </div>
    <AssignFileStreamHandle ref="modalFormApproval" :selectShenpiData="selectShenpiData"></AssignFileStreamHandle>
    <DispatchFileHandle ref="modalFormDispatchFileXq" :selectShenpiData="selectDispatchFileXqData"
                        @searchReset="searchReset"></DispatchFileHandle>
    <DispatchFileBachHandleStyle ref="modalFormDispatchFileBatch" @searchReset="searchReset"
                                 @ok="modalFormOk"></DispatchFileBachHandleStyle>
    <!--单个流程处理-->
    <InspectionOrderHandle ref="modalFormInspectionOrder" :selectShenpiData="selectInspectionOrderData"
                           @searchReset="searchReset"></InspectionOrderHandle>
    <InspectionOrderHandleBzz ref="modalFormInspectionOrderBzz" :selectShenpiData="selectInspectionOrderDataBzz"
                              @searchReset="searchReset"></InspectionOrderHandleBzz>
    <week-maintenance-approval-modal ref="weekMaintenanceApprovalModal"></week-maintenance-approval-modal>
    <repair-order-approval-modal ref="repairOrderApprovalModal"
    <week-maintenance-approval-modal ref="weekMaintenanceApprovalModal" :selectShenpiData="selectWeekMaintenanceData"
                                     @searchReset="searchReset"></week-maintenance-approval-modal>
    <repair-order-approval-modal ref="repairOrderApprovalModal" @searchReset="searchReset"
                                 :selectShenpiData="selectRepairOrderData"></repair-order-approval-modal>
    <!--批量处理-->
    <inspection-order-batch-handle ref="inspectionOrderBatchHandleRef" @searchReset="searchReset"
                                   :taskList="selectionRows"/>
    <week-maintenance-batch-approval-modal ref="weenMaintenanceBatchApprovalModalRef" @searchReset="searchReset"
                                           :taskList="selectionRows"/>
  </a-card>
</template>
@@ -109,28 +126,24 @@
  import { mixinDevice } from '@/utils/mixin'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import JDictSelectTag from '@/components/dict/JDictSelectTag.vue'
  import AssignFileStreamHandle from '@views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue'
  import DispatchFileHandle from '@views/flowable/workflow/dispatchFile/DispatchFileHandle.vue'
  import DispatchFileBachHandleStyle from '@views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue'
  import WeekMaintenanceApprovalModal from '@views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal'
  import RepairOrderApprovalModal from '@views/flowable/workflow/repairOrder/RepairOrderApprovalModal'
  import InspectionOrderHandle from '@views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue'
  import InspectionOrderHandleBzz from '@views/flowable/workflow/InspectionOrder/InspectionOrderHandleBzz.vue'
  import { getAction } from '@api/manage'
  import InspectionOrderBatchHandle from './InspectionOrder/InspectionOrderBatchHandle'
  import WeekMaintenanceBatchApprovalModal from './weekMaintenance/WeekMaintenanceBatchApprovalModal'
  export default {
    name: 'NcDeviceCharactersList',
    mixins: [JeecgListMixin, mixinDevice],
    components: {
      AssignFileStreamHandle,
      WeekMaintenanceBatchApprovalModal,
      InspectionOrderBatchHandle,
      JDictSelectTag,
      DispatchFileHandle,
      DispatchFileBachHandleStyle,
      WeekMaintenanceApprovalModal,
      RepairOrderApprovalModal,
      InspectionOrderHandle,
      InspectionOrderHandleBzz
      InspectionOrderHandle
    },
    data() {
      return {
@@ -150,44 +163,37 @@
          {
            title: '流程分类',
            align: 'center',
            dataIndex: 'category_dictText',
            width: 300
            dataIndex: 'category_dictText'
          },
          {
            title: '流程名称',
            align: 'center',
            dataIndex: 'flowName',
            width: 200
          },
          {
            title: '流程业务简要描述',
            align: 'center',
            dataIndex: 'title',
            width: 500
          },
          {
            title: '上一步处理人',
            align: 'center',
            dataIndex: 'preNodeAssignee_dictText',
            width: 150
          },
          {
            title: '前驱节点',
            align: 'center',
            dataIndex: 'preNode',
            width: 200
          },
          {
            title: '当前节点',
            align: 'center',
            dataIndex: 'name',
            width: 200
          },
          {
            title: '当前节点开始时间',
            align: 'center',
            dataIndex: 'createTime',
            width: 200
          },
          {
            title: '操作',
@@ -203,10 +209,8 @@
          isSameNode: '/assign/flow/isSameNode'
        },
        dictOptions: {},
        selectShenpiData: {},
        selectDispatchFileXqData: {},
        selectInspectionOrderData: {},
        selectInspectionOrderDataBzz: {},
        selectWeekMaintenanceData: {},
        selectBachData: {},
        selectRepairOrderData: {},
        //业务信息ID
@@ -218,22 +222,53 @@
    computed: {
      importExcelUrl: function() {
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
      },
      getTableColumnsTotalWidth() {
        return this.columns.reduce((total, item) => total + item.width, 0)
      }
    },
    methods: {
      handelDetial(item, index) {
      loadData(arg) {
        if (!this.url.list) {
          this.$message.error('请设置url.list属性!')
          return
        }
        //加载数据 若传入参数1则加载第一页的内容
        if (arg === 1) {
          this.ipagination.current = 1
        }
        var params = this.getQueryParams()//查询条件
        if (!params) {
          return false
        }
        this.loading = true
        getAction(this.url.list, params).then((res) => {
          if (res.success) {
            // console.log(res)
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
            this.dataSource = res.result.records || res.result
            if (res.result.total) {
              this.ipagination.total = res.result.total
            } else {
              this.ipagination.total = 0
            }
            if (this.selectedRowKeys.length > 0) this.selectedRowKeys = this.selectionRows = []
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          } else {
            this.$message.warning(res.message)
          }
        }).finally(() => {
          this.loading = false
        })
      },
      handelDetail(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
        let processType = this.splitAprocessType(item.category)
        console.log('processType--->', processType)
        switch (processType) {
          case 'sbdjApproval':
            this.handInspectionOrder(item)
            break
@@ -247,70 +282,57 @@
            alert('没找到该流程')
        }
      },
      batchHandle() {
        const categorySet = new Set(this.selectionRows.map(item => item.category))
        const nameSet = new Set(this.selectionRows.map(item => item.name))
        if (categorySet.size !== 1 || nameSet.size !== 1) {
          this.$notification.info({
            message: '消息',
            description: '请选择同一流程分类下的同一当前节点'
          })
          return
        }
        if (categorySet.has('eam_repair')) {
          this.$notification.info({
            message: '消息',
            description: '设备维修流程无法批量处理'
          })
          return
        }
        if (categorySet.has('sbdjApproval')) {
          this.$refs.inspectionOrderBatchHandleRef.visible = true
          this.$refs.inspectionOrderBatchHandleRef.title = this.selectionRows[0].name
          this.$refs.inspectionOrderBatchHandleRef.getAllApproveData(this.selectionRows[0])
          this.$refs.inspectionOrderBatchHandleRef.getBasicInformation(this.selectionRows[0])
        } else if (categorySet.has('WEEK_MAINTENANCE')) {
          this.$refs.weenMaintenanceBatchApprovalModalRef.handleDetail(this.selectionRows[0])
          this.$refs.weenMaintenanceBatchApprovalModalRef.title = this.selectionRows[0].name
        }
      },
      splitAprocessType(title) {
        let parts = title.split(':') // 注意冒号是全角字符,使用对应的字进行分割
        let result = parts[0]
        return result
      },
      handDrDetial(item) {
        this.selectShenpiData = item
        this.$refs.modalFormApproval.clearTableSource()
        this.$refs.modalFormApproval.getAllApproveData(item)
      handInspectionOrder(record) {
        console.log('record----->', record)
        this.selectInspectionOrderData = Object.assign({}, record)
        this.$refs.modalFormInspectionOrder.visible = true
        this.$refs.modalFormInspectionOrder.title = record.name
        this.$refs.modalFormInspectionOrder.getAllApproveData(record)
        this.$refs.modalFormInspectionOrder.getBasicInformation(record)
      },
      searchReset() {
        this.queryParam = {}
        this.loadData(1)
      },
      handDispatchFileDetial(item) {
        console.log('item----->', item)
        this.selectDispatchFileXqData = item
        this.$refs.modalFormDispatchFileXq.clearTableSource()
        this.$refs.modalFormDispatchFileXq.getAllApproveData(item)
      },
      handInspectionOrder(item) {
        console.log('item----->', item)
        if (item.taskDefKey === 'Confirmed_completed') {
          this.selectInspectionOrderDataBzz = item
          this.$refs.modalFormInspectionOrderBzz.clearTableSource()
          this.$refs.modalFormInspectionOrderBzz.getAllApproveData(item)
        } else {
          this.selectInspectionOrderData = item
          this.$refs.modalFormInspectionOrder.clearTableSource()
          this.$refs.modalFormInspectionOrder.getAllApproveData(item)
        }
      },
      batchHandle() {
        if (this.selectedRowKeys.length <= 0) {
          this.$notification.warning({
            message: '消息',
            description: '请选择一条记录'
          })
          return
        } else {
          let ids = ''
          for (var a = 0; a < this.selectedRowKeys.length; a++) {
            ids += this.selectedRowKeys[a] + ','
          }
          getAction(this.url.isSameNode + '?taskIds=' + ids).then((res) => {
            if (res.success) {
              let taskDefKey = res.result
              this.selectBachData.taskIds = ids
              this.selectBachData.taskDefKey = taskDefKey
              this.$refs.modalFormDispatchFileBatch.title = '批量处理'
              this.$refs.modalFormDispatchFileBatch.edit(this.selectBachData)
              this.$refs.modalFormDispatchFileBatch.disableSubmit = false
            } else {
              this.$notification.warning({
                message: '消息',
                description: res.message
              })
            }
          })
        }
      },
      handleWeekMaintenance(item) {
        if (item && item.dataId) {
          this.$refs.weekMaintenanceApprovalModal.handleDetail(item.dataId)
          this.selectWeekMaintenanceData = Object.assign({}, item)
          this.$refs.weekMaintenanceApprovalModal.handleDetail(item)
          this.$refs.weekMaintenanceApprovalModal.title = item.name
          this.$refs.weekMaintenanceApprovalModal.disableSubmit = false
        }
@@ -323,6 +345,7 @@
      handleRepairOrder(record) {
        this.selectRepairOrderData = Object.assign({}, record)
        this.$refs.repairOrderApprovalModal.visible = true
        this.$refs.repairOrderApprovalModal.title = record.name
        this.$refs.repairOrderApprovalModal.getAllApproveData(record)
        this.$refs.repairOrderApprovalModal.getBasicInformation(record)
      }