|
|
@@ -0,0 +1,178 @@
|
|
|
+<template>
|
|
|
+ <basic-container>
|
|
|
+ <avue-crud :option="option"
|
|
|
+ :data="data"
|
|
|
+ ref="crud"
|
|
|
+ v-model="form"
|
|
|
+ :page="page"
|
|
|
+ @search-change="searchChange"
|
|
|
+ @search-reset="searchReset"
|
|
|
+ @selection-change="selectionChange"
|
|
|
+ @on-load="onLoad">
|
|
|
+ <template slot-scope="scope" slot="menu">
|
|
|
+ <el-button type="text"
|
|
|
+ size="small"
|
|
|
+ v-if="permission.work_send_detail"
|
|
|
+ plain
|
|
|
+ class="none-border"
|
|
|
+ @click.stop="handleDetail(scope.row)">详情
|
|
|
+ </el-button>
|
|
|
+ <el-button type="text"
|
|
|
+ size="small"
|
|
|
+ v-if="permission.work_send_follow"
|
|
|
+ plain
|
|
|
+ class="none-border"
|
|
|
+ @click.stop="handleImage(scope.row,scope.index)">跟踪
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{row}"
|
|
|
+ slot="processDefinitionVersion">
|
|
|
+ <el-tag>v{{row.processDefinitionVersion}}</el-tag>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{row}"
|
|
|
+ slot="processIsFinished">
|
|
|
+ <el-tag>{{row.processIsFinished==='finished' ? '已完成' : '未完成'}}</el-tag>
|
|
|
+ </template>
|
|
|
+ </avue-crud>
|
|
|
+ <el-dialog title="流程图"
|
|
|
+ :visible.sync="flowBox"
|
|
|
+ fullscreen=true>
|
|
|
+ <iframe
|
|
|
+ :src=flowUrl
|
|
|
+ width="100%"
|
|
|
+ height="700"
|
|
|
+ title="流程图"
|
|
|
+ frameBorder="no"
|
|
|
+ border="0"
|
|
|
+ marginWidth="0"
|
|
|
+ marginHeight="0"
|
|
|
+ scrolling="no"
|
|
|
+ allowTransparency="yes">
|
|
|
+ </iframe>
|
|
|
+ <span slot="footer"
|
|
|
+ class="dialog-footer">
|
|
|
+ <el-button @click="flowBox = false">关 闭</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ </basic-container>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import {sendList} from "@/api/work/work";
|
|
|
+ import {mapGetters} from "vuex";
|
|
|
+
|
|
|
+ export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ form: {},
|
|
|
+ selectionId: '',
|
|
|
+ selectionList: [],
|
|
|
+ page: {
|
|
|
+ pageSize: 10,
|
|
|
+ currentPage: 1,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ flowBox: false,
|
|
|
+ flowUrl: '',
|
|
|
+ workBox: false,
|
|
|
+ option: {
|
|
|
+ tip: false,
|
|
|
+ border: true,
|
|
|
+ index: true,
|
|
|
+ selection: true,
|
|
|
+ editBtn: false,
|
|
|
+ addBtn: false,
|
|
|
+ viewBtn: false,
|
|
|
+ delBtn: false,
|
|
|
+ dialogWidth: 300,
|
|
|
+ dialogHeight: 400,
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: "流程分类",
|
|
|
+ type: "select",
|
|
|
+ row: true,
|
|
|
+ dicUrl: "/api/blade-system/dict/dictionary?code=flow",
|
|
|
+ props: {
|
|
|
+ label: "dictValue",
|
|
|
+ value: "dictKey"
|
|
|
+ },
|
|
|
+ slot: true,
|
|
|
+ prop: "category",
|
|
|
+ search: true,
|
|
|
+ hide: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '流程名称',
|
|
|
+ prop: 'processDefinitionName',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '当前步骤',
|
|
|
+ prop: 'taskName',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '流程版本',
|
|
|
+ prop: 'processDefinitionVersion',
|
|
|
+ slot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '流程进度',
|
|
|
+ prop: 'processIsFinished',
|
|
|
+ slot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '申请时间',
|
|
|
+ prop: 'createTime',
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ data: []
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(["permission"]),
|
|
|
+ ids() {
|
|
|
+ let ids = [];
|
|
|
+ this.selectionList.forEach(ele => {
|
|
|
+ ids.push(ele.id);
|
|
|
+ });
|
|
|
+ return ids.join(",");
|
|
|
+ },
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ searchReset() {
|
|
|
+ this.onLoad(this.page);
|
|
|
+ },
|
|
|
+ searchChange(params) {
|
|
|
+ this.onLoad(this.page, params);
|
|
|
+ },
|
|
|
+ selectionChange(list) {
|
|
|
+ this.selectionList = list;
|
|
|
+ },
|
|
|
+ handleDetail(row) {
|
|
|
+ this.$router.push({path: `/work/process/${this.routes[row.category]}/detail?processInstanceId=${row.processInstanceId}&businessId=${row.businessId}`});
|
|
|
+ },
|
|
|
+ handleImage(row) {
|
|
|
+ this.flowUrl = `/api/blade-flow/process/diagram-view?processInstanceId=${row.processInstanceId}`;
|
|
|
+ this.flowBox = true;
|
|
|
+ },
|
|
|
+ onLoad(page, params = {}) {
|
|
|
+ const values = {
|
|
|
+ ...params,
|
|
|
+ category: (params.category) ? `flow_${params.category}` : null
|
|
|
+ }
|
|
|
+ sendList(page.currentPage, page.pageSize, values).then(res => {
|
|
|
+ const data = res.data.data;
|
|
|
+ this.page.total = data.total;
|
|
|
+ this.data = data.records;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+ .none-border {
|
|
|
+ border: 0;
|
|
|
+ background-color: transparent !important;
|
|
|
+ }
|
|
|
+</style>
|