vue前端流程设计器集成了bpmn-process-designer在线流程设计器。
bpmnjs项目下载
项目下载后的目录结构:
项目代码集成
1、将package整体拷贝到项目中。
2、将src下的内容拷贝到src目录下。
3、加入bpmnjs引入的依赖,将额外的依赖加入到package.json中。
4、将代码vue.config.js中的内容集成到项目的vue.config.js中。
1、将package整体拷贝到项目中
2、将src下的内容拷贝到src目录下

3、加入bpmnjs引入的依赖
将额外的依赖加入到package.json中
对照下源码下的依赖,将引用的依赖加入到项目中。
4、将代码vue.config.js中的内容集成到项目的vue.config.js中

5、bpmn页面代码
<template><div id="app"><my-process-designer:key="`designer-${reloadIndex}`"v-model="xmlString"v-bind="controlForm"keyboardref="processDesigner"@element-click="elementClick"@init-finished="initModeler"/><!-- 右侧侧栏--><div><div style="font-size: 18px"><i@click="setShowPanel()"class="el-icon-s-fold"v-show="!showPanel"></i><i@click="setShowPanel()"class="el-icon-s-unfold"v-show="showPanel"></i></div><div v-show="showPanel"><my-properties-panel:key="`penal-${reloadIndex}`":bpmn-modeler="modeler":prefix="controlForm.prefix"class="process-panel"/></div></div><!-- demo config --><div class="demo-control-bar"><div class="open-control-dialog" @click="controlDrawerVisible = true"><i class="el-icon-setting"></i></div></div><el-drawer:visible.sync="controlDrawerVisible"size="400px"title="偏好设置"append-to-bodydestroy-on-close><el-form:model="controlForm"size="small"label-width="100px"class="control-form"@submit.native.prevent><el-form-item label="流程ID"><el-inputv-model="controlForm.processId"@change="reloadProcessDesigner"/></el-form-item><el-form-item label="流程名称"><el-inputv-model="controlForm.processName"@change="reloadProcessDesigner"/></el-form-item><el-form-item label="流转模拟"><el-switchv-model="controlForm.simulation"inactive-text="停用"active-text="启用"@change="reloadProcessDesigner"/></el-form-item><el-form-item label="禁用双击"><el-switchv-model="controlForm.labelEditing"inactive-text="停用"active-text="启用"@change="changeLabelEditingStatus"/></el-form-item><el-form-item label="隐藏label"><el-switchv-model="controlForm.labelVisible"inactive-text="停用"active-text="启用"@change="changeLabelVisibleStatus"/></el-form-item><el-form-item label="流程引擎"><el-radio-groupv-model="controlForm.prefix"@change="reloadProcessDesigner"><el-radio label="activiti">activiti</el-radio><!-- <el-radio label="camunda">camunda</el-radio><el-radio label="flowable">flowable</el-radio> --></el-radio-group></el-form-item><el-form-item label="工具栏"><el-radio-group v-model="controlForm.headerButtonSize"><el-radio label="mini">mini</el-radio><el-radio label="small">small</el-radio><el-radio label="medium">medium</el-radio></el-radio-group></el-form-item></el-form><br /><p style="color: #999999">注:activiti 好像不支持表单配置,控制台可能会报错</p>保存</el-drawer></div></template><script>import translations from "@/translations";// 自定义渲染(隐藏了 label 标签)import CustomRenderer from "@/modules/custom-renderer";// 自定义元素选中时的弹出菜单(修改 默认任务 为 用户任务)import CustomContentPadProvider from "../../../../package/process-designer/plugins/content-pad";// 自定义左侧菜单(修改 默认任务 为 用户任务)import CustomPaletteProvider from "../../../../package/process-designer/plugins/palette";// 自定义侧边栏import MyProcessPanel from "../../../../package/process-panel/ProcessPanel";export default {// 声明当前子组件接收父组件传递的属性props: {record: {type: Object,default: null,},},name: "App",components: {},data() {return {xmlString: "",modeler: null,reloadIndex: 0,controlDrawerVisible: false,translationsSelf: translations,controlForm: {processId: "",processName: "",simulation: true,labelEditing: false,labelVisible: false,prefix: "activiti",headerButtonSize: "mini",additionalModel: [CustomContentPadProvider,CustomPaletteProvider,MyProcessPanel,],},addis: {},showPanel: true,};},created() {if(this.record.id!=''&&this.record.id!=undefined){this.controlForm.processId=this.record.processId;this.controlForm.processName=this.record.processName;this.xmlString = this.record.xmlString;}// console.log(this.translationsSelf);},methods: {setShowPanel() {console.log(!this.showPanel)this.showPanel = !this.showPanel;},initModeler(modeler) {setTimeout(() => {console.log(modeler);this.modeler = modeler;}, 10);},reloadProcessDesigner() {this.controlForm.additionalModel = [];for (let key in this.addis) {if (this.addis[key]) {this.controlForm.additionalModel.push(this.addis[key]);}}this.reloadIndex += 1;this.modeler = null; // 避免 panel 异常},changeLabelEditingStatus(status) {this.addis.labelEditing = status? { labelEditingProvider: ["value", ""] }: false;this.reloadProcessDesigner();},changeLabelVisibleStatus(status) {this.addis.customRenderer = status ? CustomRenderer : false;this.reloadProcessDesigner();},elementClick(element) {this.element = element;},},};</script><style scoped>.ant-modal-footer .ant-btn-primary{display: none;}</style><style lang="scss">//屏蔽掉右下角bpmn.io.bjs-powered-by {display: none;}body {overflow: hidden;margin: 0;box-sizing: border-box;}#app {width: 100%;height: 540px;box-sizing: border-box;display: inline-grid;grid-template-columns: auto max-content;}.demo-control-bar {position: fixed;right: 8px;bottom: 8px;z-index: 1;.open-control-dialog {width: 48px;height: 48px;display: flex;align-items: center;justify-content: center;border-radius: 4px;font-size: 32px;background: rgba(64, 158, 255, 1);color: #ffffff;cursor: pointer;}}.control-form {.el-radio {width: 100%;line-height: 32px;}}body,body * {/* 滚动条 */&::-webkit-scrollbar-track-piece {background-color: #fff; /*滚动条的背景颜色*/-webkit-border-radius: 0; /*滚动条的圆角宽度*/}&::-webkit-scrollbar {width: 10px; /*滚动条的宽度*/height: 8px; /*滚动条的高度*/}&::-webkit-scrollbar-thumb:vertical {/*垂直滚动条的样式*/height: 50px;background-color: rgba(153, 153, 153, 0.5);-webkit-border-radius: 4px;outline: 2px solid #fff;outline-offset: -2px;border: 2px solid #fff;}&::-webkit-scrollbar-thumb {/*滚动条的hover样式*/background-color: rgba(159, 159, 159, 0.3);-webkit-border-radius: 4px;}&::-webkit-scrollbar-thumb:hover {/*滚动条的hover样式*/background-color: rgba(159, 159, 159, 0.5);-webkit-border-radius: 4px;}}</style>
bpmn功能改造
1、隐藏右下角logo标志
2、用户任务动态指定
改造位置
改造代码
<template>
<div style="margin-top: 16px">
<el-form-item label="分配类型">
<el-radio-group v-model="userTaskForm.type">
<el-tooltip
class="item"
effect="dark"
content="流程设计器指定"
placement="right-start"
>
<el-radio label="0">静态分配</el-radio>
</el-tooltip>
<el-tooltip
class="item"
effect="dark"
content="程序动态指定"
placement="right-start"
>
<el-radio label="1">动态分配</el-radio>
</el-tooltip>
</el-radio-group>
</el-form-item>
<el-form-item label="处理用户" v-show="userTaskForm.type == '0'">
<el-input v-model="userTaskForm.assigneeName" clearable disabled />
<el-button
@click="selectAssignee()"
type="primary"
style="margin-top: 8px"
>选择</el-button
>
<el-button @click="clearAssignee()" type="primary" style="margin-top: 8px"
>清空</el-button
>
</el-form-item>
<el-form-item label="候选用户" v-show="userTaskForm.type == '0'">
<el-input
type="textarea"
v-model="userTaskForm.candidateUsersName"
clearable
disabled
/>
<el-button
@click="selectCandidateUsers()"
type="primary"
style="margin-top: 8px"
>选择</el-button
>
<el-button
@click="clearCandidateUsers()"
type="primary"
style="margin-top: 8px"
>清空</el-button
>
</el-form-item>
<el-form-item label="候选分组" v-show="userTaskForm.type == '0'">
<el-input
type="textarea"
v-model="userTaskForm.candidateGroupsName"
clearable
disabled
/>
<el-button
@click="selectCandidateGroups()"
type="primary"
style="margin-top: 8px"
>选择</el-button
>
<el-button
@click="selectCandidateGroups()"
type="primary"
style="margin-top: 8px"
>清空</el-button
>
</el-form-item>
<el-form-item label="指定类型" v-show="userTaskForm.type == '1'">
<el-select
v-model="userTaskForm.assign_mode"
placeholder="请选择指定类型"
@change="selectAssignMode()"
>
<el-option label="所有人员中选择(根据组织选择)" value="0"></el-option>
<el-option label="组织选择(指定组织父节点)" value="1"></el-option>
<el-option label="用户组选择(选择指定组内成员)" value="2"></el-option>
<el-option label="发起人本组织选择" value="3"></el-option>
<el-option label="部门经理" value="4"></el-option>
<el-option label="上级领导" value="5"></el-option>
<el-option label="分管领导" value="6"></el-option>
<el-option label="流程发起人" value="7"></el-option>
<el-option label="指定范围选择" value="8"></el-option>
<el-option label="代理人(选择单用户)" value="9"></el-option>
<el-option label=" 候选人(选择多用户)" value="10"></el-option>
<el-option label="候选组(选择多组织)" value="11"></el-option>
</el-select>
</el-form-item>
<el-form-item
label="用户组选择"
v-show="userTaskForm.type == '1' && userTaskForm.assign_mode == '2'"
>
<el-select
v-model="userTaskForm.assign_content"
placeholder="请选择用户组"
@change="selectAssignMode()"
>
<el-option
v-for="item in groupList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label="选择组织信息"
v-show="userTaskForm.type == '1' && userTaskForm.assign_mode == '1'"
>
<el-input
type="textarea"
v-model="userTaskForm.organize_name"
clearable
disabled
/>
<el-button
@click="selectOneOrganize()"
type="primary"
style="margin-top: 8px"
>选择</el-button
>
</el-form-item>
<el-form-item
label="选择用户信息"
v-show="
userTaskForm.type == '1' &&
(userTaskForm.assign_mode == '8' || userTaskForm.assign_mode == '10')
"
>
<el-input
type="textarea"
v-model="userTaskForm.user_names"
clearable
disabled
/>
<el-button
@click="selectMoreUser()"
type="primary"
style="margin-top: 8px"
>选择</el-button
>
</el-form-item>
<el-form-item
label="选择用户信息"
v-show="userTaskForm.type == '1' && userTaskForm.assign_mode == '9'"
>
<el-input
type="textarea"
v-model="userTaskForm.user_name"
clearable
disabled
/>
<el-button @click="selectOneUser()" type="primary" style="margin-top: 8px"
>选择</el-button
>
</el-form-item>
<el-form-item
label="选择组织信息"
v-show="userTaskForm.type == '1' && userTaskForm.assign_mode == '11'"
>
<el-input
type="textarea"
v-model="userTaskForm.organize_names"
clearable
disabled
/>
<el-button
@click="selectMoreOrganize()"
type="primary"
style="margin-top: 8px"
>选择</el-button
>
</el-form-item>
<!-- <el-form-item label="处理用户"> -->
<!-- <el-select> -->
<!-- <el-select v-model="userTaskForm.assignee">
<el-option v-for="ak in mockData" :key="'ass-' + ak" :label="`用户${ak}`" :value="`user${ak}`" />
</el-select>
<el-input
v-model="userTaskForm.assignee"
clearable
disabled
@click="updateElementTask('assignee')"
/>
<el-button @click="updateElementTask('assignee')" type="primary"
>选择</el-button
>
<el-button @click="clearAssignee('assignee')" type="primary">清空</el-button>
</el-form-item>
<el-form-item label="候选用户">
<el-select v-model="userTaskForm.candidateUsers" multiple collapse-tags @change="updateElementTask('candidateUsers')">
<el-option v-for="uk in mockData" :key="'user-' + uk" :label="`用户${uk}`" :value="`user${uk}`" />
</el-select>
</el-form-item>
<el-form-item label="候选分组">
<el-select v-model="userTaskForm.candidateGroups" multiple collapse-tags @change="updateElementTask('candidateGroups')">
<el-option v-for="gk in mockData" :key="'ass-' + gk" :label="`分组${gk}`" :value="`group${gk}`" />
</el-select>
</el-form-item>
<el-form-item label="到期时间">
<el-input v-model="userTaskForm.dueDate" clearable @change="updateElementTask('dueDate')" />
</el-form-item>
<el-form-item label="跟踪时间">
<el-input v-model="userTaskForm.followUpDate" clearable @change="updateElementTask('followUpDate')" />
</el-form-item>
<el-form-item label="优先级">
<el-input v-model="userTaskForm.priority" clearable @change="updateElementTask('priority')" />
</el-form-item> -->
<!-- 弹出框 -->
<el-dialog title="提示" :visible.sync="dialogVisible" width="30%">
<el-table :data="tableData" @row-click="cellclick" style="width: 100%">
<el-table-column prop="id" label="id" width="180"> </el-table-column>
<el-table-column prop="user_name" label="姓名" width="180">
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogVisible = false"
>确 定</el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
import axios from "axios";
import SelectOneUser from "@/views/system/User/SelectOneUser";
import SelectMoreUser from "@/views/system/User/SelectMoreUser";
import SelectOneOrganize from "@/views/system/Organize/SelectOneOrganize";
import SelectMoreOrganize from "@/views/system/Organize/SelectMoreOrganize";
import {
findUserOrOrganizeNames,
findAssignment,
saveAssignment,
findGroupList,
} from "@/api/activiti/modeler";
export default {
name: "UserTask",
props: {
id: String,
type: String,
},
data() {
return {
defaultTaskForm: {
type: "0",
assign_mode: "",
assignee: "",
candidateUsers: [],
candidateGroups: [],
dueDate: "",
followUpDate: "",
priority: "",
propertyForm: [],
},
checktype: "",
dialogVisible: false,
tableData: [],
groupList: [],
userTaskForm: {
type: "0",
},
mockData: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
};
},
watch: {
id: {
immediate: true,
handler() {
this.bpmnElement = window.bpmnInstances.bpmnElement;
this.bpmnInstances = window.bpmnInstances;
this.$nextTick(() => this.resetTaskForm());
},
},
},
mounted() {
this.initGroup();
},
methods: {
resetTaskForm() {
this.$set(this.userTaskForm, "model_id", this.bpmnElement.parent.id);
this.$set(this.userTaskForm, "node_key", this.bpmnElement?.id);
for (let key in this.defaultTaskForm) {
let value;
if (key === "candidateUsers" || key === "candidateGroups") {
value = this.bpmnElement?.businessObject[key]
? this.bpmnElement.businessObject[key].split(",")
: [];
if (value != "") {
findUserOrOrganizeNames({ type: key, ids: value.join(",") }).then(
(response) => {
console.log(response);
if (key === "candidateUsers") {
this.$set(
this.userTaskForm,
"candidateUsers",
response.data.data.myIds
);
this.$set(
this.userTaskForm,
"candidateUsersName",
response.data.data.myNames
);
} else if (key === "candidateGroups") {
this.$set(
this.userTaskForm,
"candidateGroups",
response.data.data.myIds
);
this.$set(
this.userTaskForm,
"candidateGroupsName",
response.data.data.myNames
);
}
}
);
} else {
if (key === "candidateUsers") {
this.$set(this.userTaskForm, "candidateUsers", "");
this.$set(this.userTaskForm, "candidateUsersName", "");
} else if (key === "candidateGroups") {
this.$set(this.userTaskForm, "candidateGroups", "");
this.$set(this.userTaskForm, "candidateGroupsName", "");
}
}
} else if (key === "assignee") {
value =
this.bpmnElement?.businessObject[key] || this.defaultTaskForm[key];
if (value != "") {
findUserOrOrganizeNames({ type: key, ids: value }).then(
(response) => {
this.$set(
this.userTaskForm,
"assignee",
response.data.data.myIds
);
this.$set(
this.userTaskForm,
"assigneeName",
response.data.data.myNames
);
}
);
} else {
this.$set(this.userTaskForm, "assignee", "");
this.$set(this.userTaskForm, "assigneeName", "");
}
} else {
value =
this.bpmnElement?.businessObject[key] || this.defaultTaskForm[key];
this.$set(this.userTaskForm, key, value);
}
console.log(key + "|" + value);
}
//查询节点设置信息
findAssignment({ model_id: this.userTaskForm.model_id, node_key: this.userTaskForm.node_key }).then((response) => {
this.$set(this.userTaskForm, "node_id", response.data.data.id);
this.$set(this.userTaskForm, "assign_mode", response.data.data.assign_mode);
this.$set(this.userTaskForm, "assign_content", response.data.data.assign_content);
this.$set(this.userTaskForm, "type", response.data.data.type);
this.$set(this.userTaskForm, "node_id", response.data.data.id);
if(response.data.data.assign_mode=='1'){
this.$set(this.userTaskForm, "organize_id", response.data.data.organize_id);
this.$set(this.userTaskForm, "organize_name", response.data.data.organize_name);
}else if(response.data.data.assign_mode=='8'||response.data.data.assign_mode=='10'){
this.$set(this.userTaskForm, "user_ids", response.data.data.user_ids);
this.$set(this.userTaskForm, "user_names", response.data.data.user_names);
}else if(response.data.data.assign_mode=='9'){
this.$set(this.userTaskForm, "user_id", response.data.data.user_id);
this.$set(this.userTaskForm, "user_name", response.data.data.user_name);
}else if(response.data.data.assign_mode=='11'){
this.$set(this.userTaskForm, "organize_ids", response.data.data.organize_ids);
this.$set(this.userTaskForm, "organize_names", response.data.data.organize_names);
}
});
},
async updateElementTask(key) {
await axios
.get("http://127.0.0.1:8090/getOrgUser?pageSize=10&pageNum=1")
.then((res) => {
this.tableData = res.data;
console.log("设置完");
});
this.checktype = key;
this.dialogVisible = true;
let taskAttr = Object.create(null);
if (key === "candidateUsers" || key === "candidateGroups") {
taskAttr[key] =
this.userTaskForm[key] && this.userTaskForm[key].length
? this.userTaskForm[key].join()
: null;
} else {
taskAttr[key] = this.userTaskForm[key] || null;
console.log(taskAttr[key]);
}
window.bpmnInstances.modeling.updateProperties(
this.bpmnElement,
taskAttr
);
},
cellclick(row) {
var key = this.checktype;
let taskAttr = Object.create(null);
this.userTaskForm.assignee = row.id;
this.dialogVisible = false;
if (key === "candidateUsers" || key === "candidateGroups") {
taskAttr[key] =
this.userTaskForm[key] && this.userTaskForm[key].length
? this.userTaskForm[key].join()
: null;
} else {
taskAttr[key] = this.userTaskForm[key] || null;
console.log(taskAttr[key]);
}
window.bpmnInstances.modeling.updateProperties(
this.bpmnElement,
taskAttr
);
},
clearAssignee(key) {
let value;
let taskAttr = Object.create(null);
if (key === "candidateUsers" || key === "candidateGroups") {
console.log(key);
} else {
taskAttr[key] = ""; //this.bpmnElement?.businessObject[key] || this.defaultTaskForm[key];
}
this.$set(this.userTaskForm, key, "");
window.bpmnInstances.modeling.updateProperties(
this.bpmnElement,
taskAttr
);
},
//初始化initGroup
initGroup() {
findGroupList({}).then((response) => {
this.groupList = response.data.data;
});
},
//选择办理人
selectAssignee() {
this.dialog(SelectOneUser, "assignee", {
user_id: this.userTaskForm.assignee,
user_name: this.userTaskForm.assigneeName,
});
},
//选择候选人
selectCandidateUsers() {
this.dialog(SelectMoreUser, "candidateUsers", {
user_ids: this.userTaskForm.candidateUsers,
user_names: this.userTaskForm.candidateUsersName,
});
},
//选择候选组
selectCandidateGroups() {
this.dialog(SelectMoreOrganize, "candidateGroups", {
organize_ids: this.userTaskForm.candidateGroups,
organize_names: this.userTaskForm.candidateGroupsName,
});
},
//选择单组织
selectOneOrganize() {
this.dialog(SelectOneOrganize, "oneOrganize", {
organize_id: this.userTaskForm.organize_id,
organize_name: this.userTaskForm.organize_name,
});
},
//选择多用户
selectMoreUser() {
this.dialog(SelectMoreUser, "moreUser", {
user_ids: this.userTaskForm.user_ids,
user_names: this.userTaskForm.user_names,
});
},
//选择单用户
selectOneUser() {
this.dialog(SelectOneUser, "oneUser", {
user_id: this.userTaskForm.user_id,
user_name: this.userTaskForm.user_name,
});
},
//选择多组织
selectMoreOrganize() {
this.dialog(SelectMoreOrganize, "moreOrganize", {
organize_ids: this.userTaskForm.organize_ids,
organize_names: this.userTaskForm.organize_names,
});
},
//选择用户组织弹框
dialog(component, fileType, record) {
console.log(component, fileType, record);
const that = this;
this.$dialog(
component,
// component props
{
record,
on: {
ok() {
console.log("ok 回调");
},
cancel() {
console.log("cancel 回调");
},
close() {
console.log("modal close 回调");
},
initValue(value, type) {
if (type == "1") {
if (fileType == "assignee") {
that.userTaskForm.assignee = value.split(":")[0];
that.userTaskForm.assigneeName = value.split(":")[1];
//更新文档参数
that.updateActivitiProperties(
"assignee",
value.split(":")[0]
);
that.saveAssignMode(
value.split(":")[0] + "#" + value.split(":")[1]
);
} else if (fileType == "oneUser") {
that.userTaskForm.user_id = value.split(":")[0];
that.userTaskForm.user_name = value.split(":")[1];
that.saveAssignMode(
value.split(":")[0] + "#" + value.split(":")[1]
);
}
} else if (type == "2") {
if (fileType == "candidateUsers") {
that.userTaskForm.candidateUsers = value.split(":")[0];
that.userTaskForm.candidateUsersName = value.split(":")[1];
//更新文档参数
that.updateActivitiProperties(
"candidateUsers",
value.split(":")[0]
);
that.saveAssignMode(
value.split(":")[0] + "#" + value.split(":")[1]
);
} else if (fileType == "moreUser") {
that.userTaskForm.user_ids = value.split(":")[0];
that.userTaskForm.user_names = value.split(":")[1];
that.saveAssignMode(
value.split(":")[0] + "#" + value.split(":")[1]
);
}
} else if (type == "3") {
if (fileType == "oneOrganize") {
that.userTaskForm.organize_id = value.split(":")[0];
that.userTaskForm.organize_name = value.split(":")[1];
that.saveAssignMode(
value.split(":")[0] + "#" + value.split(":")[1]
);
}
} else if (type == "4") {
if (fileType == "candidateGroups") {
that.userTaskForm.candidateGroups = value.split(":")[0];
that.userTaskForm.candidateGroupsName = value.split(":")[1];
//更新文档参数
that.updateActivitiProperties(
"candidateGroups",
value.split(":")[0]
);
that.saveAssignMode(
value.split(":")[0] + "#" + value.split(":")[1]
);
} else if (fileType == "moreOrganize") {
that.userTaskForm.organize_ids = value.split(":")[0];
that.userTaskForm.organize_names = value.split(":")[1];
that.saveAssignMode(
value.split(":")[0] + "#" + value.split(":")[1]
);
}
}
that.$forceUpdate();
},
},
},
// modal props
{
title: "操作",
width: 800,
height: 500,
centered: true,
maskClosable: false,
okText: "确认",
cancelText: "取消",
}
);
},
updateActivitiProperties(key, value) {
let taskAttr = {};
taskAttr[key] = value;
window.bpmnInstances.modeling.updateProperties(
this.bpmnElement,
taskAttr
);
},
selectAssignMode() {
let assign_mode = this.userTaskForm.assign_mode;
let assign_content = this.userTaskForm.assign_content;
if (
assign_mode == "0" ||
assign_mode == "3" ||
assign_mode == "4" ||
assign_mode == "5" ||
assign_mode == "6" ||
assign_mode == "7" ||
(assign_mode == "2" &&
assign_content != "" &&
assign_content != undefined)
) {
saveAssignment({
id: this.userTaskForm.node_id,
type: this.userTaskForm.type,
assign_mode: this.userTaskForm.assign_mode,
assign_content: this.userTaskForm.assign_content,
model_id: this.userTaskForm.model_id,
node_key: this.userTaskForm.node_key,
}).then((response) => {
console.log(response);
});
}
},
saveAssignMode(assign_content) {
saveAssignment({
id: this.userTaskForm.node_id,
type: this.userTaskForm.type,
assign_mode: this.userTaskForm.assign_mode,
model_id: this.userTaskForm.model_id,
node_key: this.userTaskForm.node_key,
assign_content: assign_content,
}).then((response) => {
console.log(response);
});
},
},
beforeDestroy() {
this.bpmnElement = null;
},
};
</script>

