From 81e49a0cd66c718afa4b0fdf3101f65d1fda7483 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=9F=B9=E5=8F=8B?= <17852335869@163.com>
Date: Fri, 17 Feb 2023 15:51:50 +0800
Subject: [PATCH] =?UTF-8?q?1.=20=E5=B7=A5=E5=8D=95=E8=AF=A6=E6=83=85=202.?=
=?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5=203.?=
=?UTF-8?q?=E6=97=A5=E5=BF=97=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/logs.js | 7 +
src/api/maintenance/database.js | 7 +
src/api/plugin/workflow/form.js | 4 +-
src/api/wel/wel.js | 16 +
src/const/journal/journal.js | 64 ++
src/const/workflow/todo.js | 66 ++
src/styles/custom/custom.scss | 10 +-
src/views/journal/index.vue | 210 +++++
src/views/maintenance/database1.vue | 33 +-
src/views/plugin/workflow/mixins/ex-form.js | 773 ++++++++++--------
.../workflow/process/components/detail.vue | 106 ++-
.../workflow/process/components/examForm.vue | 41 +-
.../workflow/process/components/form.vue | 34 +-
src/views/plugin/workflow/process/start.vue | 39 +-
src/views/wel/index.vue | 97 ++-
src/views/work/process/leave/detail.vue | 108 +--
16 files changed, 1140 insertions(+), 475 deletions(-)
create mode 100644 src/api/wel/wel.js
create mode 100644 src/const/journal/journal.js
create mode 100644 src/const/workflow/todo.js
create mode 100644 src/views/journal/index.vue
diff --git a/src/api/logs.js b/src/api/logs.js
index 287ace9..4f76ba7 100644
--- a/src/api/logs.js
+++ b/src/api/logs.js
@@ -62,3 +62,10 @@ export const getErrorLogs = (id) => {
})
}
+export const getList = (query) => {
+ return request({
+ url: '/api/blade-log/api/list',
+ method: 'get',
+ params:query
+ })
+}
\ No newline at end of file
diff --git a/src/api/maintenance/database.js b/src/api/maintenance/database.js
index ed216d2..ae20564 100644
--- a/src/api/maintenance/database.js
+++ b/src/api/maintenance/database.js
@@ -23,4 +23,11 @@ export const getDatabaseType = () => {
url: "/api/blade-system/dict-biz/dictionary?code=database_type",
method: "get",
})
+}
+// 数据库类型
+export const getListData = () => {
+ return request({
+ url: `${prefix}/listData`,
+ method: "get",
+ })
}
\ No newline at end of file
diff --git a/src/api/plugin/workflow/form.js b/src/api/plugin/workflow/form.js
index 1efd654..0285615 100644
--- a/src/api/plugin/workflow/form.js
+++ b/src/api/plugin/workflow/form.js
@@ -101,10 +101,11 @@ export const getTaskTypeData = (query) => {
})
}
// 系统名称/数据库
-export const getTaskAndDataBase = () => {
+export const getTaskAndDataBase = (query) => {
return request({
url: '/api/blade-workflow/projectInfo/projectAndDataBase',
method: 'get',
+ params:query
})
}
// 系统名称/数据表
@@ -116,3 +117,4 @@ export const getModuleAndDataTable = (query) => {
})
}
+
diff --git a/src/api/wel/wel.js b/src/api/wel/wel.js
new file mode 100644
index 0000000..c781735
--- /dev/null
+++ b/src/api/wel/wel.js
@@ -0,0 +1,16 @@
+import request from '@/router/axios';
+const prefix = '/api/blade-workflow/homePage'
+// 查询
+export const getAboutMy = () => {
+ return request({
+ url: `${prefix}/aboutMy`,
+ method: 'get',
+ })
+}
+// 折线图
+export const getFlowListMonth = () => {
+ return request({
+ url: `${prefix}/flowListMonth`,
+ method: 'get',
+ })
+}
diff --git a/src/const/journal/journal.js b/src/const/journal/journal.js
new file mode 100644
index 0000000..fdd5963
--- /dev/null
+++ b/src/const/journal/journal.js
@@ -0,0 +1,64 @@
+export const tableOption = {
+ index: true,
+ indexLabel: "序号",
+ indexWidth:120,
+ labelPosition: "top",
+ selection: false,
+ border: false,
+ headerAlign: "left",
+ align: "left",
+ menuAlign:'left',
+ menuHeaderAlign:'left',
+ menuBtn: true,
+ editBtn: false,
+ delBtn: false,
+ addBtn: false,
+ tip: false,
+ searchMenuSpan: 3, //控制搜索按钮
+ columnBtn: false,
+ refreshBtn: false,
+ header: false,
+ dialogCustomClass:"custom",
+ menu: false,
+ column: [
+
+ {
+ type: "input",
+ label: "用户",
+ prop: "createBy",
+ align: "left",
+ overHidden: true,
+ },
+ {
+ type: "input",
+ label: "操作模块",
+ prop: "aa",
+ align: "left",
+ overHidden: true,
+ },
+ {
+ label: "操作时间",
+ type: "datetime",
+ overHidden: true,
+ prop: "createTime",
+ format: "yyyy-MM-dd HH:mm",
+ valueFormat: "yyyy-MM-dd HH:mm:ss",
+ addDisplay:false,
+ editDisplay: false
+ },
+ {
+ type: "input",
+ label: "IP地址",
+ prop: "remoteIp",
+ align: "left",
+ overHidden: true,
+ },
+ {
+ type: "input",
+ label: "操作详情",
+ prop: "title",
+ align: "left",
+ overHidden: true,
+ },
+ ],
+}
\ No newline at end of file
diff --git a/src/const/workflow/todo.js b/src/const/workflow/todo.js
new file mode 100644
index 0000000..87b8c1d
--- /dev/null
+++ b/src/const/workflow/todo.js
@@ -0,0 +1,66 @@
+export const tableOption = {
+ index: true,
+ indexLabel: "序号",
+ indexWidth: 120,
+ labelPosition: "top",
+ selection: false,
+ border: false,
+ headerAlign: "left",
+ align: "left",
+ menuAlign: "left",
+ menuHeaderAlign: "left",
+ menuBtn: true,
+ editBtn: false,
+ delBtn: false,
+ addBtn: false,
+ tip: false,
+ searchMenuSpan: 3, //控制搜索按钮
+ columnBtn: false,
+ refreshBtn: false,
+ header: false,
+ dialogCustomClass: "custom",
+ column: [
+ {
+ label: "流程名称",
+ prop: "processDefinitionName",
+ overHidden: true,
+ },
+ {
+ label: "流程标识",
+ prop: "processDefinitionKey",
+ overHidden: true,
+ },
+ {
+ label: "流水号",
+ prop: "serialNumber",
+ bind: "variables.serialNumber",
+ overHidden: true,
+ },
+ {
+ label: "流程分类",
+ row: true,
+ type: "tree",
+ dicUrl: "/api/blade-workflow/design/category/tree",
+ props: {
+ label: "name",
+ value: "id",
+ },
+ prop: "category",
+ },
+ {
+ label: "当前节点",
+ prop: "taskName",
+ },
+ {
+ label: "申请人",
+ prop: "startUsername",
+ },
+ {
+ label: "申请时间",
+ prop: "createTime",
+ type: "datetime",
+ format: "yyyy-MM-dd HH:mm",
+ width: 165,
+ },
+ ],
+};
diff --git a/src/styles/custom/custom.scss b/src/styles/custom/custom.scss
index 391351a..e550908 100644
--- a/src/styles/custom/custom.scss
+++ b/src/styles/custom/custom.scss
@@ -101,11 +101,11 @@
height: 50px;
line-height: 50px;
}
- .el-col-md-8 {
- width: 29%;
- }
- .el-col-md-8:nth-child(3n + 2) {
- margin: 0 100px;
+ // .el-col-md-8 {
+ // width: calc(100% / 3.6);
+ // }
+ .el-col-md-7:nth-child(3n + 2) {
+ margin: 0 70px;
}
// input输入框
.el-input--small .el-input__inner {
diff --git a/src/views/journal/index.vue b/src/views/journal/index.vue
new file mode 100644
index 0000000..934eb48
--- /dev/null
+++ b/src/views/journal/index.vue
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/maintenance/database1.vue b/src/views/maintenance/database1.vue
index ca0200c..14d87aa 100644
--- a/src/views/maintenance/database1.vue
+++ b/src/views/maintenance/database1.vue
@@ -4,15 +4,15 @@
@@ -30,27 +30,27 @@
@@ -105,6 +105,7 @@ import {
getList,
dowmLoadTemplate,
getDatabaseType,
+ getListData,
} from "@/api/maintenance/database.js";
import { tableOption } from "@/const/maintenance/database.js";
import { getToken } from "@/util/auth";
@@ -127,7 +128,10 @@ export default {
headers: {
"Blade-Auth": "",
},
+ deptsList: [],
databaseTypeList: [],
+ companysList: [],
+ dataBaseNamesList: [],
};
},
filters: {
@@ -150,9 +154,16 @@ export default {
},
methods: {
dicBiz() {
+ // 数据库类型
getDatabaseType().then((res) => {
this.databaseTypeList = res.data.data;
});
+ getListData().then((res) => {
+ const { companys, dataBaseNames, depts } = res.data.data;
+ this.companysList = companys;
+ this.deptsList = depts;
+ this.dataBaseNamesList = dataBaseNames;
+ });
},
// 列表
onLoad() {
diff --git a/src/views/plugin/workflow/mixins/ex-form.js b/src/views/plugin/workflow/mixins/ex-form.js
index e6782a8..c862cf0 100644
--- a/src/views/plugin/workflow/mixins/ex-form.js
+++ b/src/views/plugin/workflow/mixins/ex-form.js
@@ -1,78 +1,121 @@
-import { getFormByProcessId, getFormByProcessDefKey, startProcess, detail, completeTask, transferTask, delegateTask, rollbackTask, terminateProcess, addMultiInstance, withdrawTask } from '@/api/plugin/workflow/process'
+import {
+ getFormByProcessId,
+ getFormByProcessDefKey,
+ startProcess,
+ detail,
+ completeTask,
+ transferTask,
+ delegateTask,
+ rollbackTask,
+ terminateProcess,
+ addMultiInstance,
+ withdrawTask,
+} from "@/api/plugin/workflow/process";
-import Layout from '@/page/index/'
-import defaultValues from './default-values'
+import Layout from "@/page/index/";
+import defaultValues from "./default-values";
-import Print from '../util/print'
-import Watermark from '../util/watermark'
+import Print from "../util/print";
+import Watermark from "../util/watermark";
-import { mapGetters } from 'vuex'
+import { mapGetters } from "vuex";
export default {
mixins: [defaultValues],
computed: {
- ...mapGetters(['tag', 'userInfo', 'permission']),
+ ...mapGetters(["tag", "userInfo", "permission"]),
},
data() {
return {
process: {}, // 流程定义/流程实例信息
buttonList: [], // 配置按钮信息
flow: [], // 流转信息
- userSelectType: '', // 人员选择类型 transfer转办 delegate委托 copy抄送 assignee审核人
- checkType: 'radio', // 人员选择check类型 radio单选 checkbox多选
- comment: '', // 评论
+ userSelectType: "", // 人员选择类型 transfer转办 delegate委托 copy抄送 assignee审核人
+ checkType: "radio", // 人员选择check类型 radio单选 checkbox多选
+ comment: "", // 评论
bpmnOption: {}, // 流程图配置信息
- defaultChecked: '', // 人员选择默认选中
+ defaultChecked: "", // 人员选择默认选中
waiting: true, // 骨架屏加载中
- }
+ };
},
methods: {
// 动态路由跳转
- dynamicRoute(row, type, async = false,parent) {
- const { id, taskId, processInstanceId, processId, formKey, formUrl, processDefKey } = row
- let param = Buffer.from(JSON.stringify({
- processId: id,
+ dynamicRoute(row, type, async = false, parent) {
+ const {
+ id,
taskId,
- processInsId: processInstanceId || processId,
- processDefKey
- })).toString('base64')
+ processInstanceId,
+ processId,
+ formKey,
+ formUrl,
+ processDefKey,
+ } = row;
+ let param = Buffer.from(
+ JSON.stringify({
+ processId: id,
+ taskId,
+ processInsId: processInstanceId || processId,
+ processDefKey,
+ })
+ ).toString("base64");
- if (formKey && formKey.startsWith('wf_ex_')) {
- if (formUrl) { // 配置了自定义路由
- this.$router.push(formUrl + `?p=${param}`)
- } else { // 动态添加路由
- this.$router.addRoutes([{
- path: `/workflow/process/external`,
- component: Layout,
- children: [{
- path: `${formKey.substring(6)}/${type}`,
- name: type == 'start' ? '发起流程' : '流程详情',
- component: () =>
- import( /* webpackChunkName: "views" */ `@/views/plugin/workflow/process/external/${formKey.substring(6)}/${type}.vue`),
- }]
- }])
- this.$router.push(`/workflow/process/external/${formKey.substring(6)}/${type}?p=${param}`)
+ if (formKey && formKey.startsWith("wf_ex_")) {
+ if (formUrl) {
+ // 配置了自定义路由
+ this.$router.push(formUrl + `?p=${param}`);
+ } else {
+ // 动态添加路由
+ this.$router.addRoutes([
+ {
+ path: `/workflow/process/external`,
+ component: Layout,
+ children: [
+ {
+ path: `${formKey.substring(6)}/${type}`,
+ name: type == "start" ? "发起流程" : "流程详情",
+ component: () =>
+ import(
+ /* webpackChunkName: "views" */ `@/views/plugin/workflow/process/external/${formKey.substring(
+ 6
+ )}/${type}.vue`
+ ),
+ },
+ ],
+ },
+ ]);
+ this.$router.push(
+ `/workflow/process/external/${formKey.substring(
+ 6
+ )}/${type}?p=${param}`
+ );
}
} else {
if (async) {
return new Promise((resolve) => {
- resolve({ row, type, param })
- })
+ resolve({ row, type, param });
+ });
} else {
- this.$router.push(`/workflow/process/${type}/${param}?parent=${parent}`)
+ this.$router.push(
+ `/workflow/process/${type}/${param}?parent=${parent}`
+ );
}
}
},
// 根据可读可写,过滤avue column
- filterAvueColumn(column, taskForm, isExForm = false, props = { label: 'label', prop: 'prop' }) {
- const _this = this
+ filterAvueColumn(
+ column,
+ taskForm,
+ isExForm = false,
+ props = { label: "label", prop: "prop" }
+ ) {
+ const _this = this;
- if (!column || column.length == 0) return { column, vars: [] }
+ if (!column || column.length == 0) return { column, vars: [] };
- const values = []
- const vars = []
- column.forEach(col => {
- let c = taskForm.find(s => s.id == col[props.prop])
+ const values = [];
+ const vars = [];
+ column.forEach((col) => {
+ let c = taskForm.find((s) => s.id == col[props.prop]);
if (c && c.readable) {
// /**
// * @deprecated 与节点配置可读可写冲突
@@ -81,42 +124,57 @@ export default {
// if ((this.process.isOwner && this.process.status == 'todo') || !this.process.hasOwnProperty('isOwner')) c = { readable: true, writable: true }
// else c = { readable: true, writable: false }
// }
- if (!isExForm) { // 非外置表单 处理事件
- let event = ['change', 'blur', 'click', 'focus']
- event.forEach(e => {
- if (col[e]) col[e] = eval((col[e] + '').replace(/this/g, '_this'))
- })
- if (col.event) Object.keys(col.event).forEach(key => col.event[key] = eval((col.event[key] + '').replace(/this/g, '_this')))
+ if (!isExForm) {
+ // 非外置表单 处理事件
+ let event = ["change", "blur", "click", "focus"];
+ event.forEach((e) => {
+ if (col[e])
+ col[e] = eval((col[e] + "").replace(/this/g, "_this"));
+ });
+ if (col.event)
+ Object.keys(col.event).forEach(
+ (key) =>
+ (col.event[key] = eval(
+ (col.event[key] + "").replace(/this/g, "_this")
+ ))
+ );
}
- if (c.writable) { // 可写,记录需要提交的字段、处理字段默认值
- vars.push(col[props.prop])
- if (col.value) col.value = _this.getDefaultValues(col.value)
- } else { // 不可写,清除校验、默认值
- if (col.type == 'dynamic') {
- col.children.addBtn = false
- col.children.delBtn = false
+ if (c.writable) {
+ // 可写,记录需要提交的字段、处理字段默认值
+ vars.push(col[props.prop]);
+ if (col.value) col.value = _this.getDefaultValues(col.value);
+ } else {
+ // 不可写,清除校验、默认值
+ if (col.type == "dynamic") {
+ col.children.addBtn = false;
+ col.children.delBtn = false;
} else {
- col.readonly = true
- col.disabled = true
+ col.readonly = true;
+ col.disabled = true;
}
- delete col.rules
- delete col.value
+ delete col.rules;
+ delete col.value;
// delete col.event
// event.forEach(e => delete col[e])
}
- if (col.type == 'dynamic') { // 处理子表单
- col.children.column = _this.filterAvueColumn(col.children.column, taskForm).column
+ if (col.type == "dynamic") {
+ // 处理子表单
+ col.children.column = _this.filterAvueColumn(
+ col.children.column,
+ taskForm
+ ).column;
}
- if (col.rules && col.pattern) { // 处理正则
- col.rules.forEach(c => {
- if (c.pattern) c.pattern = new RegExp(col.pattern)
- })
+ if (col.rules && col.pattern) {
+ // 处理正则
+ col.rules.forEach((c) => {
+ if (c.pattern) c.pattern = new RegExp(col.pattern);
+ });
}
- values.push(col)
+ values.push(col);
}
- })
- return { column: values, vars }
+ });
+ return { column: values, vars };
},
/**
* 获取流程发起表单
@@ -125,34 +183,38 @@ export default {
*/
getStartForm(processId) {
return new Promise((resolve, reject) => {
- getFormByProcessId({ processId }).then(res => {
- const { process } = res.data.data
- process.hideComment = true
- this.process = process
- this.tag.label = '发起流程 - ' + process.name
- resolve(res.data.data)
- }).catch(() => {
- reject()
- })
- })
+ getFormByProcessId({ processId })
+ .then((res) => {
+ const { process } = res.data.data;
+ process.hideComment = true;
+ this.process = process;
+ this.tag.label = "发起流程 - " + process.name;
+ resolve(res.data.data);
+ })
+ .catch(() => {
+ reject();
+ });
+ });
},
/**
- * 获取流程发起表单
- * @param processDefKey 流程定义key
- * @returns Promise({"process": "流程定义信息", "startForm": "开始节点表单"})
- */
+ * 获取流程发起表单
+ * @param processDefKey 流程定义key
+ * @returns Promise({"process": "流程定义信息", "startForm": "开始节点表单"})
+ */
getStartFormByProcessDefKey(processDefKey) {
return new Promise((resolve, reject) => {
- getFormByProcessDefKey({ processDefKey }).then(res => {
- const { process } = res.data.data
- process.hideComment = true
- this.process = process
- this.tag.label = '发起流程 - ' + process.name
- resolve(res.data.data)
- }).catch(() => {
- reject()
- })
- })
+ getFormByProcessDefKey({ processDefKey })
+ .then((res) => {
+ const { process } = res.data.data;
+ process.hideComment = true;
+ this.process = process;
+ this.tag.label = "发起流程 - " + process.name;
+ resolve(res.data.data);
+ })
+ .catch(() => {
+ reject();
+ });
+ });
},
/**
* 发起流程
@@ -160,38 +222,52 @@ export default {
*/
handleStartProcess(isExForm = false) {
return new Promise((resolve) => {
- this.loading = true
+ this.loading = true;
this.$refs.form.validate((valid, done, msg) => {
- let form = this.deepClone(this.form)
+ let form = this.deepClone(this.form);
if (this.$refs.examineForm && this.$refs.examineForm.examineForm) {
- const { copyUser, assignee } = this.$refs.examineForm.examineForm
- form = { ...form, copyUser, assignee }
+ const { copyUser, assignee } = this.$refs.examineForm.examineForm;
+ form = { ...form, copyUser, assignee };
}
if (valid) {
- startProcess(form).then(() => {
- if (isExForm === true) {
- resolve(done)
- } else {
- this.$message.success("发起成功")
- this.handleCloseTag('/plugin/workflow/process/send')
- done()
- this.loading = false
- }
- }).catch(() => {
- done()
- this.loading = false
- })
+ // 追加
+ // if(this.tableData.length>0) {
+ // form = {...form, uploadrecord: this.tableData}
+ // }
+ // if (form.uploadrecord.length > 0) {
+ // for (const key in form.uploadrecord) {
+ // if(this.userInfo.real_name === form.uploadrecord[key].createUser) {
+ // form.uploadrecord[key].remark = form.beizhu
+ // }
+ // }
+ // }
+
+ startProcess(form)
+ .then(() => {
+ if (isExForm === true) {
+ resolve(done);
+ } else {
+ this.$message.success("发起成功");
+ this.handleCloseTag("/plugin/workflow/process/send");
+ done();
+ this.loading = false;
+ }
+ })
+ .catch(() => {
+ done();
+ this.loading = false;
+ });
} else {
- done()
- this.loading = false
+ done();
+ this.loading = false;
if (msg) {
- const key = Object.keys(msg)[0]
- const rules = msg[key]
- this.$message.error(rules.map(r => r.message).join(' | '))
+ const key = Object.keys(msg)[0];
+ const rules = msg[key];
+ this.$message.error(rules.map((r) => r.message).join(" | "));
}
}
- })
- })
+ });
+ });
},
/**
* 获取流程任务详情
@@ -201,24 +277,27 @@ export default {
*/
getTaskDetail(taskId, processInsId) {
return new Promise((resolve, reject) => {
- detail({ taskId, processInsId }).then(res => {
- const { process, form, flow, button } = res.data.data
- const { xml } = process
+ detail({ taskId, processInsId })
+ .then((res) => {
+ const { process, form, flow, button } = res.data.data;
+ const { xml } = process;
- const bpmnOption = {
- mode: 'view', xml,
- flows: this.handleResolveFlows(flow)
- }
- this.process = process
- this.flow = flow
- this.buttonList = button
- this.bpmnOption = bpmnOption
- this.tag.label = '流程详情 - ' + process.processDefinitionName
- resolve({ process, form, flow, button, bpmnOption })
- }).catch(() => {
- reject()
- })
- })
+ const bpmnOption = {
+ mode: "view",
+ xml,
+ flows: this.handleResolveFlows(flow),
+ };
+ this.process = process;
+ this.flow = flow;
+ this.buttonList = button;
+ this.bpmnOption = bpmnOption;
+ this.tag.label = "流程详情 - " + process.processDefinitionName;
+ resolve({ process, form, flow, button, bpmnOption });
+ })
+ .catch(() => {
+ reject();
+ });
+ });
},
/**
* 任务审核
@@ -226,276 +305,332 @@ export default {
*/
handleCompleteTask(pass, variables) {
return new Promise((resolve, reject) => {
- const { comment, copyUser, assignee, attachment } = this.$refs.examineForm.examineForm
+ const { comment, copyUser, assignee, attachment } =
+ this.$refs.examineForm.examineForm;
if (!pass && !comment) {
- this.$message.error("请填写批复意见")
- this.submitLoading = false
- reject()
- return
+ this.$message.error("请填写批复意见");
+ this.submitLoading = false;
+ reject();
+ return;
}
- const { taskId, processInstanceId, processDefinitionName, processDefinitionId } = this.process
+ const {
+ taskId,
+ processInstanceId,
+ processDefinitionName,
+ processDefinitionId,
+ } = this.process;
const param = {
- taskId, processInstanceId, processDefinitionName, processDefinitionId, pass,
- comment, copyUser, assignee, variables, attachment
- }
- completeTask(param).then(() => {
- resolve()
- }).catch(() => {
- reject()
- })
- })
+ taskId,
+ processInstanceId,
+ processDefinitionName,
+ processDefinitionId,
+ pass,
+ comment,
+ copyUser,
+ assignee,
+ variables,
+ attachment,
+ uploadrecord: this.form.uploadrecord,
+ };
+ completeTask(param)
+ .then(() => {
+ resolve();
+ })
+ .catch(() => {
+ reject();
+ });
+ });
},
/**
* 驳回到指定节点
* @param nodeId 节点id
*/
handleRollbackTask(nodeId) {
- const { taskId } = this.process
+ const { taskId } = this.process;
rollbackTask({ comment: this.comment, nodeId, taskId }).then(() => {
- this.$message.success("回退成功")
- this.handleCloseTag('/plugin/workflow/process/todo')
- })
+ this.$message.success("回退成功");
+ this.handleCloseTag("/plugin/workflow/process/todo");
+ });
},
/**
* 终止流程
*/
handleTerminateProcess() {
- const comment = this.comment
+ const comment = this.comment;
if (!comment) {
- this.$message.error("请填写批复意见")
- return
+ this.$message.error("请填写批复意见");
+ return;
}
- this.$confirm('确定要终止此流程吗?', '警告', {
- type: 'warning'
- }).then(() => {
- const { taskId } = this.process
+ this.$confirm("确定要终止此流程吗?", "警告", {
+ type: "warning",
+ })
+ .then(() => {
+ const { taskId } = this.process;
- terminateProcess({ taskId, comment }).then(() => {
- this.$message.success("操作成功")
- this.handleCloseTag('/plugin/workflow/process/todo')
+ terminateProcess({ taskId, comment }).then(() => {
+ this.$message.success("操作成功");
+ this.handleCloseTag("/plugin/workflow/process/todo");
+ });
})
- }).catch(() => {
-
- })
+ .catch(() => {});
},
// 人员选择弹窗
handleUserSelect({ type, checkType }) {
- if (!this.comment && ['transfer', 'delegate'].includes(type)) {
- this.$message.error("请填写批复意见")
- return
+ if (!this.comment && ["transfer", "delegate"].includes(type)) {
+ this.$message.error("请填写批复意见");
+ return;
}
- if (type == 'assignee') this.defaultChecked = this.$refs.examineForm.examineForm.assignee
- else if (type == 'copy') this.defaultChecked = this.$refs.examineForm.examineForm.copyUser
+ if (type == "assignee")
+ this.defaultChecked = this.$refs.examineForm.examineForm.assignee;
+ else if (type == "copy")
+ this.defaultChecked = this.$refs.examineForm.examineForm.copyUser;
- this.$refs['user-select'].visible = true
- this.userSelectType = type
- this.checkType = checkType
+ this.$refs["user-select"].visible = true;
+ this.userSelectType = type;
+ this.checkType = checkType;
},
// 选人回调
handleUserSelectConfirm(id, name) {
- const { comment, copyUser } = this.$refs.examineForm.examineForm
- const { taskId, processInstanceId, processDefinitionName, processDefinitionId } = this.process
+ const { comment, copyUser } = this.$refs.examineForm.examineForm;
+ const {
+ taskId,
+ processInstanceId,
+ processDefinitionName,
+ processDefinitionId,
+ } = this.process;
- const type = this.userSelectType
+ const type = this.userSelectType;
const param = {
- taskId, processInstanceId, processDefinitionName, processDefinitionId,
+ taskId,
+ processInstanceId,
+ processDefinitionName,
+ processDefinitionId,
assignee: id,
- comment, copyUser
- }
- if (type == 'transfer') {
- transferTask(param).then(() => { // 转办
- this.$message.success("转办成功")
- this.handleCloseTag('/plugin/workflow/process/todo')
- })
- } else if (type == 'delegate') { // 委托
+ comment,
+ copyUser,
+ };
+ if (type == "transfer") {
+ transferTask(param).then(() => {
+ // 转办
+ this.$message.success("转办成功");
+ this.handleCloseTag("/plugin/workflow/process/todo");
+ });
+ } else if (type == "delegate") {
+ // 委托
delegateTask(param).then(() => {
- this.$message.success("委托成功")
- this.handleCloseTag('/plugin/workflow/process/todo')
- })
- } else if (type == 'addInstance') { // 加签
+ this.$message.success("委托成功");
+ this.handleCloseTag("/plugin/workflow/process/todo");
+ });
+ } else if (type == "addInstance") {
+ // 加签
addMultiInstance(param).then(() => {
- this.$message.success("加签成功")
- })
- } else if (type == 'copy') { // 抄送
- this.$refs.examineForm.examineForm.copyUser = id
- this.$refs.examineForm.examineForm.$copyUser = name
- } else if (type == 'assignee') { // 指定下一步审批人
- this.$refs.examineForm.examineForm.assignee = id
- this.$refs.examineForm.examineForm.$assignee = name
+ this.$message.success("加签成功");
+ });
+ } else if (type == "copy") {
+ // 抄送
+ this.$refs.examineForm.examineForm.copyUser = id;
+ this.$refs.examineForm.examineForm.$copyUser = name;
+ } else if (type == "assignee") {
+ // 指定下一步审批人
+ this.$refs.examineForm.examineForm.assignee = id;
+ this.$refs.examineForm.examineForm.$assignee = name;
}
- this.$refs['user-select'].visible = false
+ this.$refs["user-select"].visible = false;
},
handleWithdrawTask() {
- const { taskId } = this.process
- this.$confirm('撤销:撤销终止此流程
撤回:撤回到发起人重新提交,若当前流程不存在发起人节点,功能同撤销
', '请选择撤销/撤回操作', {
- type: 'warning',
- distinguishCancelAndClose: true,
- confirmButtonText: '撤销',
- cancelButtonText: '撤回',
- dangerouslyUseHTMLString: true
- }).then(() => {
- withdrawTask({ taskId, withdrawType: 'wf_withdraw_end' }).then(() => {
- this.$message.success("操作成功")
- this.handleCloseTag('/plugin/workflow/process/todo')
- })
- }).catch((action) => {
- if (action == 'cancel') {
- withdrawTask({ taskId, withdrawType: 'wf_withdraw_start' }).then(() => {
- this.$message.success("操作成功")
- this.handleCloseTag('/plugin/workflow/process/todo')
- })
+ const { taskId } = this.process;
+ this.$confirm(
+ '撤销:撤销终止此流程
撤回:撤回到发起人重新提交,若当前流程不存在发起人节点,功能同撤销
',
+ "请选择撤销/撤回操作",
+ {
+ type: "warning",
+ distinguishCancelAndClose: true,
+ confirmButtonText: "撤销",
+ cancelButtonText: "撤回",
+ dangerouslyUseHTMLString: true,
}
- })
+ )
+ .then(() => {
+ withdrawTask({ taskId, withdrawType: "wf_withdraw_end" }).then(() => {
+ this.$message.success("操作成功");
+ this.handleCloseTag("/plugin/workflow/process/todo");
+ });
+ })
+ .catch((action) => {
+ if (action == "cancel") {
+ withdrawTask({ taskId, withdrawType: "wf_withdraw_start" }).then(
+ () => {
+ this.$message.success("操作成功");
+ this.handleCloseTag("/plugin/workflow/process/todo");
+ }
+ );
+ }
+ });
},
- handlePrint() { // 打印
+ handlePrint() {
+ // 打印
const loading = this.$loading({
lock: true,
- text: 'Loading',
- spinner: 'el-icon-loading',
- background: 'rgba(0, 0, 0, 0.7)'
+ text: "Loading",
+ spinner: "el-icon-loading",
+ background: "rgba(0, 0, 0, 0.7)",
});
- const option = this.deepClone(this.option)
- this.option.detail = true
+ const option = this.deepClone(this.option);
+ this.option.detail = true;
if (this.option.column) {
- this.option.column.forEach(col => {
- this.handleTemporaryPrintOption(col)
- })
+ this.option.column.forEach((col) => {
+ this.handleTemporaryPrintOption(col);
+ });
}
if (this.option.group) {
- this.option.group.forEach(g => {
- g.column.forEach(col => {
- this.handleTemporaryPrintOption(col)
- })
- })
+ this.option.group.forEach((g) => {
+ g.column.forEach((col) => {
+ this.handleTemporaryPrintOption(col);
+ });
+ });
}
// 汇总表单打印
- const summaryOption = this.deepClone(this.summaryOption)
+ const summaryOption = this.deepClone(this.summaryOption);
if (this.summaryOption && this.summaryOption.group) {
- this.summaryOption.group.forEach(g => {
- g.collapse = false
- g.column.forEach(col => {
- this.handleTemporaryPrintOption(col)
- })
+ this.summaryOption.group.forEach((g) => {
+ g.collapse = false;
+ g.column.forEach((col) => {
+ this.handleTemporaryPrintOption(col);
+ });
setTimeout(() => {
- g.collapse = true
- })
- })
+ g.collapse = true;
+ });
+ });
}
setTimeout(() => {
- loading.close()
+ loading.close();
// const watermarkText = this.userInfo.user_name + " " + this.userInfo.dept_name
// Watermark.set({ watermark_txt: watermarkText }) // 添加水印
- Print('#printBody')
- this.option = option
- this.summaryOption = summaryOption
- Watermark.remove() // 删除水印
- }, 500)
+ Print("#printBody");
+ this.option = option;
+ this.summaryOption = summaryOption;
+ Watermark.remove(); // 删除水印
+ }, 500);
},
// 生成打印临时option
handleTemporaryPrintOption(obj) {
- if (!obj.type) return
- obj.span = 24
- if (obj.type == 'dynamic') {
- obj.children.type = 'form'
- obj.children.column.forEach(col => {
- this.handleTemporaryPrintOption(col)
- })
+ if (!obj.type) return;
+ obj.span = 24;
+ if (obj.type == "dynamic") {
+ obj.children.type = "form";
+ obj.children.column.forEach((col) => {
+ this.handleTemporaryPrintOption(col);
+ });
}
},
// 关闭当前tag,并跳转
handleCloseTag(path) {
- this.$store.commit('DEL_TAG', this.tag)
- if (path) this.$router.push(path)
+ this.$store.commit("DEL_TAG", this.tag);
+ if (path) this.$router.push(path);
},
handleResolveFlows(flow) {
- const flows = []
+ const flows = [];
- flow.forEach(f => {
- let { assigneeName, createTime, endTime, comments } = f
+ flow.forEach((f) => {
+ let { assigneeName, createTime, endTime, comments } = f;
- if ((/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent))) { // safari
- createTime = createTime.replace(/-/g, '/')
- endTime = endTime.replace(/-/g, '/')
+ if (
+ /Safari/.test(navigator.userAgent) &&
+ !/Chrome/.test(navigator.userAgent)
+ ) {
+ // safari
+ createTime = createTime.replace(/-/g, "/");
+ endTime = endTime.replace(/-/g, "/");
}
const ff = {
id: f.historyActivityId,
- class: (!endTime && f.historyActivityType != 'candidate') ? 'nodePrimary' : ''
- }
- let tooltip = ''
+ class:
+ !endTime && f.historyActivityType != "candidate"
+ ? "nodePrimary"
+ : "",
+ };
+ let tooltip = "";
if (assigneeName) {
- tooltip = `${assigneeName}
`
- if (createTime) tooltip += `${this.dateFormat(new Date(createTime), 'yyyy-MM-dd hh:mm')}
`
+ tooltip = `${assigneeName}
`;
+ if (createTime)
+ tooltip += `${this.dateFormat(
+ new Date(createTime),
+ "yyyy-MM-dd hh:mm"
+ )}
`;
if (comments && comments.length > 0) {
- let comment
- let { type, fullMessage } = comments.find(c => c.action == 'AddComment') || {}
+ let comment;
+ let { type, fullMessage } =
+ comments.find((c) => c.action == "AddComment") || {};
- if (type == 'assigneeComment') {
- comment = '变更审核人:' + fullMessage
- ff.class = 'nodeWarn'
+ if (type == "assigneeComment") {
+ comment = "变更审核人:" + fullMessage;
+ ff.class = "nodeWarn";
}
- if (type == 'dispatchComment') {
- comment = '调度:' + fullMessage
- ff.class = 'nodeWarn'
+ if (type == "dispatchComment") {
+ comment = "调度:" + fullMessage;
+ ff.class = "nodeWarn";
}
- if (type == 'transferComment') {
- comment = '转办:' + fullMessage
- ff.class = 'nodeWarn'
+ if (type == "transferComment") {
+ comment = "转办:" + fullMessage;
+ ff.class = "nodeWarn";
}
- if (type == 'delegateComment') {
- comment = '委托:' + fullMessage
- ff.class = 'nodeWarn'
+ if (type == "delegateComment") {
+ comment = "委托:" + fullMessage;
+ ff.class = "nodeWarn";
}
- if (type == 'rollbackComment') {
- comment = '驳回:' + fullMessage
- ff.class = 'nodeError'
+ if (type == "rollbackComment") {
+ comment = "驳回:" + fullMessage;
+ ff.class = "nodeError";
}
- if (type == 'terminateComment') {
- comment = '终止:' + fullMessage
- ff.class = 'nodeError'
+ if (type == "terminateComment") {
+ comment = "终止:" + fullMessage;
+ ff.class = "nodeError";
}
- if (type == 'addMultiInstanceComment') {
- comment = '加签:' + fullMessage
- ff.class = 'nodeWarn'
+ if (type == "addMultiInstanceComment") {
+ comment = "加签:" + fullMessage;
+ ff.class = "nodeWarn";
}
- if (type == 'deleteMultiInstanceComment') {
- comment = '减签:' + fullMessage
- ff.class = 'nodeError'
+ if (type == "deleteMultiInstanceComment") {
+ comment = "减签:" + fullMessage;
+ ff.class = "nodeError";
}
- if (type == 'withdrawComment') {
- comment = '撤销:' + fullMessage
- ff.class = 'nodeWarn'
+ if (type == "withdrawComment") {
+ comment = "撤销:" + fullMessage;
+ ff.class = "nodeWarn";
}
- if (type == 'deleteProcessComment') {
- comment = '删除流程:' + fullMessage
- ff.class = 'nodeError'
+ if (type == "deleteProcessComment") {
+ comment = "删除流程:" + fullMessage;
+ ff.class = "nodeError";
}
- if (type == 'comment') {
- comment = '审批:' + fullMessage
- ff.class = 'nodeSuccess'
+ if (type == "comment") {
+ comment = "审批:" + fullMessage;
+ ff.class = "nodeSuccess";
}
- if (comment) tooltip += `${comment}`
+ if (comment)
+ tooltip += `${comment}`;
}
- ff.tooltip = tooltip
+ ff.tooltip = tooltip;
}
- if (f.historyActivityType == 'sequenceFlow') ff.class = 'lineWarn'
- else if (!ff.class && f.historyActivityType != 'candidate') ff.class = 'nodeSuccess'
+ if (f.historyActivityType == "sequenceFlow") ff.class = "lineWarn";
+ else if (!ff.class && f.historyActivityType != "candidate")
+ ff.class = "nodeSuccess";
- const index = flows.findIndex(fl => fl.id == f.historyActivityId)
- if (index != -1) flows.splice(index, 1, ff)
- else flows.push(ff)
- })
- return flows
+ const index = flows.findIndex((fl) => fl.id == f.historyActivityId);
+ if (index != -1) flows.splice(index, 1, ff);
+ else flows.push(ff);
+ });
+ return flows;
},
// 上传组件预览
handleUploadPreview(file, column, done) {
- const { url } = file
- const video = /\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|ogg|mp4)/
- const img = /\.(gif|jpg|jpeg|png|GIF|JPG|PNG)/
- if (video.test(url) || img.test(url)) done()
- else window.open(url)
+ const { url } = file;
+ const video = /\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|ogg|mp4)/;
+ const img = /\.(gif|jpg|jpeg|png|GIF|JPG|PNG)/;
+ if (video.test(url) || img.test(url)) done();
+ else window.open(url);
},
- }
-}
\ No newline at end of file
+ },
+};
diff --git a/src/views/plugin/workflow/process/components/detail.vue b/src/views/plugin/workflow/process/components/detail.vue
index 6b2dedf..a22bc9c 100644
--- a/src/views/plugin/workflow/process/components/detail.vue
+++ b/src/views/plugin/workflow/process/components/detail.vue
@@ -34,8 +34,8 @@
>
@@ -59,13 +59,13 @@
width="240"
>
-
-
+
@@ -85,6 +85,7 @@
:comment.sync="comment"
:process="process"
@user-select="handleUserSelect"
+ @uploadSuccess="uploadSuccess"
>
@@ -131,11 +132,20 @@
diff --git a/src/views/plugin/workflow/process/components/form.vue b/src/views/plugin/workflow/process/components/form.vue
index 80c568b..1757296 100644
--- a/src/views/plugin/workflow/process/components/form.vue
+++ b/src/views/plugin/workflow/process/components/form.vue
@@ -25,7 +25,7 @@
v-model="form.yunweigongsi"
placeholder="请选择运维公司"
@change="companyChange"
- :disabled="companyList.length===1"
+ :disabled="companyList.length === 1"
>
@@ -93,7 +93,7 @@
@@ -193,7 +193,6 @@ export default {
option: {},
process: {},
loading: false,
- tableData: [],
companyList: [], //公司
deptList: [], //部门
taskParentList: [], //任务父类
@@ -205,22 +204,19 @@ export default {
getCompany().then((res) => {
this.companyList = res.data.data;
if (this.companyList.length > 0) {
- const id = this.companyList[0].id
+ const id = this.companyList[0].id;
this.form.yunweigongsi = id;
- this.companyChange(id)
+ this.companyChange(id);
}
});
getTaskParent().then((res) => {
this.taskParentList = res.data.data;
- if(this.$route.query.parent) {
- const id = this.$route.query.parent
- this.form.renwufulei = id
- this.taskParentChange(id)
+ if (this.$route.query.parent) {
+ const id = this.$route.query.parent;
+ this.form.renwufulei = id;
+ this.taskParentChange(id);
}
});
- getTaskAndDataBase().then((res) => {
- this.taskAndDataBaseList = res.data.data;
- });
},
methods: {
// 运维公司-查部门
@@ -232,6 +228,9 @@ export default {
const guanlibumen = this.findObject(this.option.column, "guanlibumen");
guanlibumen.dicData = res.data.data;
});
+ getTaskAndDataBase({ id }).then((res) => {
+ this.taskAndDataBaseList = res.data.data;
+ });
},
// 任务父类
taskParentChange(id) {
@@ -276,7 +275,10 @@ export default {
},
// 文件上传后
uploadAfter(res, done, loading, column) {
- this.tableData.push(res);
+ if (typeof this.form.uploadrecord == "string") {
+ this.form.uploadrecord = this.form.uploadrecord.split("");
+ }
+ this.form.uploadrecord.push(res);
done();
this.$message.success("上传成功!");
},
@@ -287,7 +289,7 @@ export default {
cancelButtonText: "取消",
type: "warning",
}).then(() => {
- this.tableData.splice(index, 1);
+ this.form.uploadrecord.splice(index, 1);
});
},
getForm(processId, processDefKey) {
diff --git a/src/views/plugin/workflow/process/start.vue b/src/views/plugin/workflow/process/start.vue
index 506f39e..2daafc3 100644
--- a/src/views/plugin/workflow/process/start.vue
+++ b/src/views/plugin/workflow/process/start.vue
@@ -9,10 +9,15 @@
{{ item.remark }}
-
![]()
+
- 立即创建
+
+ 立即创建
+
@@ -22,12 +27,12 @@
@@ -106,11 +111,11 @@ export default {
color: #666;
text-align: center;
line-height: 37px;
- cursor:pointer;
+ cursor: pointer;
}
}
.item:nth-child(4) {
margin-right: 0;
}
}
-
\ No newline at end of file
+
diff --git a/src/views/wel/index.vue b/src/views/wel/index.vue
index c00b8b4..7d02a8c 100644
--- a/src/views/wel/index.vue
+++ b/src/views/wel/index.vue
@@ -30,7 +30,7 @@
-
+
@@ -59,49 +72,48 @@