xiangpei
2025-01-17 e563871312e934fedf153c4b83ca5ba3b147c36c
src/views/projectProcess/detail/index.vue
@@ -6,7 +6,7 @@
          <h2>项目名称:{{detailData.projectName}}</h2>
        </div>
        <div class="project-info">
          <div class="project-info-item"></div>
          <div class="project-info-item">流程名称:{{queryParams.processName}}</div>
          <div class="project-info-item">项目代码:{{detailData.projectCode}}</div>
          <div class="project-info-item">
            <div style="color: black">
@@ -18,7 +18,7 @@
      </div>
      <div class="search-warp">
        <div @click="changeTab(1, 'all')" :class="{'item-warm': true, 'all-color': true, 'active': 1 === selectTabId}">全部事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.totalTaskNum}})</span></div>
        <div @click="changeTab(2, 'todo')" :class="{'item-warm': true, 'all-color': true, 'active': 2 === selectTabId}">代办事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.todoTaskNum}})</span></div>
        <div @click="changeTab(2, 'todo')" :class="{'item-warm': true, 'all-color': true, 'active': 2 === selectTabId}">待办事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.todoTaskNum}})</span></div>
        <div @click="changeTab(3, 'todo')" :class="{'item-warm': true, 'current-color': true, 'active': 3 === selectTabId}">当前环节</div>
        <div @click="changeTab(4, 'remaining')" :class="{'item-warm': true, 'remaining-color': true, 'active': 4 === selectTabId}">剩余事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.remainingTaskNum}})</span></div>
        <div @click="changeTab(5, 'timely')" :class="{'item-warm': true, 'timely-color': true, 'active': 5 === selectTabId}">按时完成(0)</div>
@@ -48,11 +48,6 @@
          >
          </el-table-column>
          <el-table-column
            prop="processName"
            label="流程名称"
          >
          </el-table-column>
          <el-table-column
            prop="promoterUnitName"
            label="发起单位"
          >
@@ -63,16 +58,36 @@
          >
          </el-table-column>
          <el-table-column
            align="center"
            prop="handlerType"
            label="处理方类型"
          >
            <template slot-scope="scope">
              <el-tag v-if="scope.row.handlerType === 'USER'">人员账号</el-tag>
              <el-tag type="success" v-else-if="scope.row.handlerType === 'DEPT'">单位</el-tag>
              <el-tag type="info" v-else-if="scope.row.handlerType === 'ROLE'">角色</el-tag>
            </template>
          </el-table-column>
          <el-table-column
            prop="handlerUnitName"
            label="处理单位"
            :formatter="unitFormatter"
          >
          </el-table-column>
          <el-table-column
            prop="handlerName"
            label="候选处理人"
            :formatter="candidateFormatter"
          >
          </el-table-column>
          <el-table-column
            prop="handlerName"
            label="实际处理人"
            :formatter="finalFinishedFormatter"
          >
          </el-table-column>
          <el-table-column
            align="center"
            prop="taskStatus"
            label="任务状态"
          >
@@ -111,7 +126,7 @@
} from "@/api/projectProcess/projectProcess";
export default {
  name: "index",
  name: "Detail",
  data() {
    return {
      loading: false,
@@ -127,27 +142,63 @@
        currentPage: 1,
        projectId: null,
        processDefId: null,
        processName: '' // 流程名称
      }
    }
  },
  mounted() {
    this.queryParams.projectId = this.$route.query.projectId
    this.queryParams.processDefId = this.$route.query.processDefId
    console.log(this.$route.query, "参数")
    let params = JSON.parse(sessionStorage.getItem("projectProDetail"))
    console.log(params, "参数")
    if (!params || ! params.projectId) {
      this.queryParams.projectId = this.$route.query.projectId
      this.queryParams.processDefId = this.$route.query.processDefId
      this.queryParams.processName = this.$route.query.processName
      sessionStorage.setItem("projectProDetail", JSON.stringify(this.queryParams))
    } else {
      this.queryParams = params
    }
    this.loading = true
    this.getProjectProcessInfo()
  },
  methods: {
    unitFormatter(row) {
      if (row.handlerType === 'USER') {
        return null;
      } else if (row.handlerType === 'DEPT') {
        return row.handlerUnitName.join("、")
      } else if (row.handlerType === 'ROLE') {
        return row.handlerUnitName.join('、')
      }
    },
    candidateFormatter(row) {
      if (row.handlerType === 'USER') {
        return row.handlerName.join('、')
      } else if (row.handlerType === 'DEPT') {
        return row.handlerUnitName.join('、')
      } else if (row.handlerType === 'ROLE') {
        return row.handlerUnitName.join('、')
      }
    },
    finalFinishedFormatter(row) {
      // 不是已完成的状态没有实际处理人,已完成的状态只有一个人
      if (row.taskStatus !== '已完成') {
        return null
      } else {
        return row.actualHandlerUserName
      }
    },
    showHandle(row) {
      console.log(this.$store.state.user, "用户信息")
      if (row.taskStatus === '待办') {
        if (row.handlerType === "USER") {
          return this.$store.state.user.id === row.handlerId
          console.log(row.handlerId.indexOf(this.$store.state.user.id) !== -1, "我是不是")
          return row.handlerId.indexOf(this.$store.state.user.id) !== -1
        } else if (row.handlerType === "DEPT") {
          console.log(this.$store.state.user.deptId, "部门id", row.handlerUnitId)
          return this.$store.state.user.deptId === row.handlerUnitId
          return row.handlerUnitId.indexOf(this.$store.state.user.deptId) !== -1
          // return this.$store.state.user.name === '市发展改革委' || this.$store.state.user.name === '市住建局'
        } else if (row.handlerType === "ROLE") {
          return this.$auth.hasRole(row.handlerUnitName)
          return row.handlerUnitId.some(roleId => this.$store.state.user.roleIds.indexOf(roleId) !== -1)
        }
      } else {
        return false
@@ -160,14 +211,19 @@
        taskId: row.taskId
      }
      getTaskIsAuditing(params).then(res => {
        console.log("row",row)
        this.$router.push({
          path: '/flowable/task/myProcess/send/index',
          query: {
            deployId: row.deployId,
            procDefId: row.processDefId,
            procInsId: row.processInsId,
            processName: row.taskName,
            flowName: this.queryParams.processName,
            projectName: this.detailData.projectName,
            taskId: row.taskId,
            showAuditing: res.data
            showAuditing: res.data,
            goBackParams: this.queryParams
          }
        })
      })
@@ -175,29 +231,36 @@
    goToProcessDetail(row) {
      this.$router.push({ path: '/flowable/task/myProcess/detail/index',
        query: {
          projectName: this.detailData.projectName,
          flowName: this.queryParams.processName,
          procInsId: row.processInsId,
          deployId: row.deployId,
          taskId: row.taskId
          taskId: row.taskId,
          goBackParams: this.queryParams
        }})
    },
    search() {
      this.queryParams.currentPage = 1;
      this.tableLoading = true
      this.getList()
    },
    sizeChange(pageSize) {
      this.tableLoading = true
      this.queryParams.pageSize = pageSize;
      this.getList()
    },
    pageChange(pageNum) {
      this.tableLoading = true
      this.queryParams.currentPage = pageNum;
      this.getList()
    },
    getList() {
      this.tableLoading = true
      // 获取任务列表
      getProjectProcessDetailTaskList(this.queryParams).then(res => {
        this.tableLoading =false
        this.taskList = res.data
        this.total = res.total
        this.tableLoading =false
      })
    },
    // 查询详情
@@ -210,14 +273,12 @@
      })
    },
    changeTab(id, event) {
      this.tableLoading = true
      let beforeId = this.selectTabId
      this.selectTabId = id
      this.queryParams.taskType = event
      if (beforeId !== id) {
        this.getList()
      }
    }
  }
}