xiangpei
2025-02-14 5a04ad14ef19b86ad4fd401af5f7d7272e8e01fe
src/views/projectProcess/detail/index.vue
@@ -37,7 +37,7 @@
        </el-form>
        <div style="position: absolute; right: 0; top: 0">
          <el-button @click="openProcessImg" v-loading="imgLoading" type="primary">流程图</el-button>
          <el-button @click="openRecord" type="info" v-loading="recordLoading">流转记录</el-button>
          <el-button @click="openRecord" type="info" v-loading="recordLoading">流程日志</el-button>
        </div>
      </div>
      <div class="table">
@@ -156,61 +156,72 @@
      </div>
    </el-dialog>
    <el-dialog
      :title="`${this.queryParams.processName}:流转记录`"
    <el-drawer
      :title="`${this.queryParams.processName}:流程日志`"
      :visible.sync="processRecordShow"
      :fullscreen="true"
      :close-on-click-modal="false"
      :destroy-on-close="true"
    >
      <div>
        <div class="block">
          <el-timeline>
            <el-timeline-item
              v-for="(item,index ) in flowRecordList"
              :key="index"
              :icon="setIcon(item.finishTime)"
              :color="setColor(item.finishTime)"
            >
              <p style="font-weight: 700">{{item.taskName}}
                <span v-if="item.comment && item.comment.type === '3'" style="color: red">(执行了驳回)</span>
                <span v-if="item.overtime && item.overtime==='red'" style="color: red">(已超时)</span>
                <span v-if="item.overtime && item.overtime==='yellow'" style="color: orange">(即将超时)</span>
              </p>
              <el-card :body-style="{ padding: '10px' }">
                <el-descriptions class="margin-top" :column="1" size="small" border>
                  <el-descriptions-item v-if="item.assigneeName" label-class-name="my-label">
                    <template slot="label"><i class="el-icon-user"></i>办理人</template>
                    {{item.assigneeName}}
                    <el-tag type="info" size="mini">{{item.deptName}}</el-tag>
                  </el-descriptions-item>
                  <el-descriptions-item v-if="item.candidate" label-class-name="my-label">
                    <template slot="label"><i class="el-icon-user"></i>候选办理</template>
                    {{item.candidate}}
                  </el-descriptions-item>
                  <el-descriptions-item label-class-name="my-label">
                    <template slot="label"><i class="el-icon-date"></i>接收时间</template>
                    {{item.createTime}}
                  </el-descriptions-item>
                  <el-descriptions-item v-if="item.finishTime" label-class-name="my-label">
                    <template slot="label"><i class="el-icon-date"></i>处理时间</template>
                    {{item.finishTime}}
                  </el-descriptions-item>
                  <el-descriptions-item v-if="item.duration"  label-class-name="my-label">
                    <template slot="label"><i class="el-icon-time"></i>耗时</template>
                    {{item.duration}}
                  </el-descriptions-item>
                  <el-descriptions-item v-if="item.comment" label-class-name="my-label">
                    <template slot="label"><i class="el-icon-tickets"></i>处理意见</template>
                    {{item.comment.comment}}
                  </el-descriptions-item>
                </el-descriptions>
              </el-card>
            </el-timeline-item>
          </el-timeline>
        </div>
      </div>
    </el-dialog>
      direction="ltr"
      :modal="false"
      size="800px"
      >
      <log-view style="padding: 10px 20px" :log-list="logList"/>
    </el-drawer>
<!--    <el-dialog-->
<!--      :title="`${this.queryParams.processName}:流转记录`"-->
<!--      :visible.sync="processRecordShow"-->
<!--      :fullscreen="true"-->
<!--      :close-on-click-modal="false"-->
<!--      :destroy-on-close="true"-->
<!--    >-->
<!--      <div>-->
<!--        <log-view :log-list="logList"/>-->
<!--&lt;!&ndash;        <div class="block">&ndash;&gt;-->
<!--&lt;!&ndash;          <el-timeline>&ndash;&gt;-->
<!--&lt;!&ndash;            <el-timeline-item&ndash;&gt;-->
<!--&lt;!&ndash;              v-for="(item,index ) in flowRecordList"&ndash;&gt;-->
<!--&lt;!&ndash;              :key="index"&ndash;&gt;-->
<!--&lt;!&ndash;              :icon="setIcon(item.finishTime)"&ndash;&gt;-->
<!--&lt;!&ndash;              :color="setColor(item.finishTime)"&ndash;&gt;-->
<!--&lt;!&ndash;            >&ndash;&gt;-->
<!--&lt;!&ndash;              <p style="font-weight: 700">{{item.taskName}}&ndash;&gt;-->
<!--&lt;!&ndash;                <span v-if="item.comment && item.comment.type === '3'" style="color: red">(执行了驳回)</span>&ndash;&gt;-->
<!--&lt;!&ndash;                <span v-if="item.overtime && item.overtime==='red'" style="color: red">(已超时)</span>&ndash;&gt;-->
<!--&lt;!&ndash;                <span v-if="item.overtime && item.overtime==='yellow'" style="color: orange">(即将超时)</span>&ndash;&gt;-->
<!--&lt;!&ndash;              </p>&ndash;&gt;-->
<!--&lt;!&ndash;              <el-card :body-style="{ padding: '10px' }">&ndash;&gt;-->
<!--&lt;!&ndash;                <el-descriptions class="margin-top" :column="1" size="small" border>&ndash;&gt;-->
<!--&lt;!&ndash;                  <el-descriptions-item v-if="item.assigneeName" label-class-name="my-label">&ndash;&gt;-->
<!--&lt;!&ndash;                    <template slot="label"><i class="el-icon-user"></i>办理人</template>&ndash;&gt;-->
<!--&lt;!&ndash;                    {{item.assigneeName}}&ndash;&gt;-->
<!--&lt;!&ndash;                    <el-tag type="info" size="mini">{{item.deptName}}</el-tag>&ndash;&gt;-->
<!--&lt;!&ndash;                  </el-descriptions-item>&ndash;&gt;-->
<!--&lt;!&ndash;                  <el-descriptions-item v-if="item.candidate" label-class-name="my-label">&ndash;&gt;-->
<!--&lt;!&ndash;                    <template slot="label"><i class="el-icon-user"></i>候选办理</template>&ndash;&gt;-->
<!--&lt;!&ndash;                    {{item.candidate}}&ndash;&gt;-->
<!--&lt;!&ndash;                  </el-descriptions-item>&ndash;&gt;-->
<!--&lt;!&ndash;                  <el-descriptions-item label-class-name="my-label">&ndash;&gt;-->
<!--&lt;!&ndash;                    <template slot="label"><i class="el-icon-date"></i>接收时间</template>&ndash;&gt;-->
<!--&lt;!&ndash;                    {{item.createTime}}&ndash;&gt;-->
<!--&lt;!&ndash;                  </el-descriptions-item>&ndash;&gt;-->
<!--&lt;!&ndash;                  <el-descriptions-item v-if="item.finishTime" label-class-name="my-label">&ndash;&gt;-->
<!--&lt;!&ndash;                    <template slot="label"><i class="el-icon-date"></i>处理时间</template>&ndash;&gt;-->
<!--&lt;!&ndash;                    {{item.finishTime}}&ndash;&gt;-->
<!--&lt;!&ndash;                  </el-descriptions-item>&ndash;&gt;-->
<!--&lt;!&ndash;                  <el-descriptions-item v-if="item.duration"  label-class-name="my-label">&ndash;&gt;-->
<!--&lt;!&ndash;                    <template slot="label"><i class="el-icon-time"></i>耗时</template>&ndash;&gt;-->
<!--&lt;!&ndash;                    {{item.duration}}&ndash;&gt;-->
<!--&lt;!&ndash;                  </el-descriptions-item>&ndash;&gt;-->
<!--&lt;!&ndash;                  <el-descriptions-item v-if="item.comment" label-class-name="my-label">&ndash;&gt;-->
<!--&lt;!&ndash;                    <template slot="label"><i class="el-icon-tickets"></i>处理意见</template>&ndash;&gt;-->
<!--&lt;!&ndash;                    {{item.comment.comment}}&ndash;&gt;-->
<!--&lt;!&ndash;                  </el-descriptions-item>&ndash;&gt;-->
<!--&lt;!&ndash;                </el-descriptions>&ndash;&gt;-->
<!--&lt;!&ndash;              </el-card>&ndash;&gt;-->
<!--&lt;!&ndash;            </el-timeline-item>&ndash;&gt;-->
<!--&lt;!&ndash;          </el-timeline>&ndash;&gt;-->
<!--&lt;!&ndash;        </div>&ndash;&gt;-->
<!--      </div>-->
<!--    </el-dialog>-->
    <el-dialog :visible.sync="superviseShow" width="1000px"  title="督办" append-to-body>
      <el-form ref="superviseForm" :model="superviseForm" :rules="superviseRules" label-width="80px">
        <el-form-item label="督办内容" prop="content">
@@ -233,16 +244,20 @@
} from "@/api/projectProcess/projectProcess";
import {flowXmlAndNode} from "@/api/flowable/definition";
import BpmnViewer from '@/components/Process/viewer';
import LogView from "@/views/projectProcess/components/LogView";
import {flowRecord} from "@/api/flowable/finished";
import {editProject} from "@/api/projectEngineering/projectInfo";
import {getProjectProcessLog} from "@/api/flowLog/flowLog";
export default {
  name: "Detail",
  components: {
    BpmnViewer
    BpmnViewer,
    LogView
  },
  data() {
    return {
      logList: [], // 流程日志
      processRecordShow: false, // 流转记录显示
      flowRecordList: [], // 流程流转数据
      recordLoading: false, // 流转记录加载
@@ -341,7 +356,7 @@
      }
    },
    openRecord() {
      this.getFlowRecordList(this.queryParams.processInsId);
      this.getFlowLogList(this.queryParams.processInsId);
    },
    openProcessImg() {
      this.imgLoading = true
@@ -363,6 +378,15 @@
        this.processRecordShow = true
      })
    },
    getFlowLogList(procInsId) {
      const params = {processInsId: procInsId, projectId: this.queryParams.projectId}
      this.recordLoading = true
      getProjectProcessLog(params).then(res => {
        this.logList = res.data;
        this.recordLoading = false
        this.processRecordShow = true
      })
    },
    unitFormatter(row) {
      if (row.handlerType === 'USER') {
        return null;