Compare commits
5 Commits
d4e536e8ee
...
62309940c4
| Author | SHA1 | Date |
|---|---|---|
|
|
62309940c4 | |
|
|
059ac66d7a | |
|
|
18de970ffc | |
|
|
528b63a0d2 | |
|
|
055d757581 |
|
|
@ -17,7 +17,7 @@
|
||||||
created() {
|
created() {
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
let beforeUrl = sessionStorage.getItem('router-path')
|
let beforeUrl = localStorage.getItem('router-path')
|
||||||
if(beforeUrl === undefined || beforeUrl === ''){
|
if(beforeUrl === undefined || beforeUrl === ''){
|
||||||
//this.$router.push("/workPanel")
|
//this.$router.push("/workPanel")
|
||||||
}else {
|
}else {
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,11 @@ import { Notification, MessageBox, Message } from "element-ui";
|
||||||
// 第三方插件
|
// 第三方插件
|
||||||
import "element-ui/lib/theme-chalk/index.css";
|
import "element-ui/lib/theme-chalk/index.css";
|
||||||
|
|
||||||
Vue.prototype.$axios = axios;
|
|
||||||
// 字体图标
|
// 字体图标
|
||||||
|
|
||||||
export function getBaseUrl(){
|
export function getBaseUrl(){
|
||||||
return "http://gateway.mytwins.top"
|
// return "http://gateway.mytwins.top"
|
||||||
// return "http://192.168.101.8:8000"
|
return "http://192.168.101.8:8000"
|
||||||
// return "http://localhost:8000"
|
// return "http://localhost:8000"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -39,6 +38,7 @@ service.interceptors.response.use(
|
||||||
let data = rsp.data
|
let data = rsp.data
|
||||||
if (data.code === 401){
|
if (data.code === 401){
|
||||||
localStorage.clear()
|
localStorage.clear()
|
||||||
|
window.location.href = "/"
|
||||||
}
|
}
|
||||||
if (data.code === 1000){
|
if (data.code === 1000){
|
||||||
return data
|
return data
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ export default {
|
||||||
computed:{
|
computed:{
|
||||||
_value :{
|
_value :{
|
||||||
get(){
|
get(){
|
||||||
return this.value;
|
return this.value || "";
|
||||||
},
|
},
|
||||||
set(val){
|
set(val){
|
||||||
this.value = val;
|
this.value = val;
|
||||||
|
|
@ -72,7 +72,7 @@ export default {
|
||||||
})
|
})
|
||||||
this.$refs.codeEdit.codemirror.on("change", (cm) => {
|
this.$refs.codeEdit.codemirror.on("change", (cm) => {
|
||||||
this._value = cm.getValue()
|
this._value = cm.getValue()
|
||||||
this.$emit("input",this._value)
|
this.$emit("input",cm.getValue())
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
|
|
||||||
|
|
@ -18,19 +18,6 @@ import WDialog from '@/components/common/WDialog'
|
||||||
import Tip from '@/components/common/Tip'
|
import Tip from '@/components/common/Tip'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Vue.use(ElementUI);
|
Vue.use(ElementUI);
|
||||||
Vue.use(AvatarEllipsis);
|
Vue.use(AvatarEllipsis);
|
||||||
Vue.use(Ellipsis);
|
Vue.use(Ellipsis);
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ router.beforeEach((to, from, next) => {
|
||||||
head[0].appendChild(meta)
|
head[0].appendChild(meta)
|
||||||
}
|
}
|
||||||
next();
|
next();
|
||||||
sessionStorage.setItem('router-path', to.path)
|
localStorage.setItem('router-path', to.path)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
<div class="user">
|
<div class="user">
|
||||||
<el-button type="primary" round size="small" @click="showRolePicker()" icon="el-icon-user">选择本次登录者</el-button>
|
<el-button type="primary" round size="small" @click="showRolePicker()" icon="el-icon-user">选择本次登录者</el-button>
|
||||||
<div v-if="token !== '' && token !== null">
|
<div v-if="token !== '' && token !== null">
|
||||||
|
<el-avatar size="large" :src="loginUser.avatar"></el-avatar>
|
||||||
<span>{{ loginUser.name }}</span>
|
<span>{{ loginUser.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -45,17 +46,11 @@ export default {
|
||||||
return {
|
return {
|
||||||
token: localStorage.getItem("token"),
|
token: localStorage.getItem("token"),
|
||||||
select: [],
|
select: [],
|
||||||
loginUser: {
|
loginUser: {}
|
||||||
id: 381496,
|
|
||||||
name: "clay",
|
|
||||||
selected: false,
|
|
||||||
sex: null,
|
|
||||||
type: "user"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
let user = sessionStorage.getItem("user")
|
let user = localStorage.getItem("userInfo")
|
||||||
if (user !== null && user !== '') {
|
if (user !== null && user !== '') {
|
||||||
this.loginUser = JSON.parse(user)
|
this.loginUser = JSON.parse(user)
|
||||||
this.select.push(this.loginUser)
|
this.select.push(this.loginUser)
|
||||||
|
|
@ -74,7 +69,7 @@ export default {
|
||||||
uuid: "string"
|
uuid: "string"
|
||||||
}
|
}
|
||||||
).then(res => {
|
).then(res => {
|
||||||
console.log(res)
|
localStorage.setItem("userInfo",JSON.stringify(this.loginUser))
|
||||||
this.token = res.data.data
|
this.token = res.data.data
|
||||||
localStorage.setItem("token", this.token)
|
localStorage.setItem("token", this.token)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,60 +1,60 @@
|
||||||
//审批节点默认属性
|
//审批节点默认属性
|
||||||
export const APPROVAL_PROPS = {
|
export const APPROVAL_PROPS = {
|
||||||
assignedType: "ASSIGN_USER",
|
assignedType: "ASSIGN_USER", //审批类型
|
||||||
mode: "AND",
|
mode: "AND", //会签模式
|
||||||
sign: false,
|
sign: false, //是否签字
|
||||||
headerBgc: '#ff943e',
|
headerBgc: '#ff943e', //节点背景颜色
|
||||||
nobody: {
|
nobody: { //没有审批的的时候需要的操作
|
||||||
handler: "TO_PASS",
|
handler: "TO_PASS", //操作
|
||||||
assignedUser:[]
|
assignedUser: [] //审批人列表
|
||||||
},
|
},
|
||||||
timeLimit:{
|
timeLimit: { //边界事件
|
||||||
timeout:{
|
timeout: { //超时提醒时间
|
||||||
unit: "H",
|
unit: "H",
|
||||||
value: 0
|
value: 0
|
||||||
},
|
},
|
||||||
handler:{
|
handler: { //超时提醒触发时候的操作
|
||||||
type: "REFUSE",
|
type: "REFUSE", //操作
|
||||||
notify:{
|
notify: {
|
||||||
once: true,
|
once: true, //是否循环
|
||||||
hour: 1
|
hour: 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
assignedUser:[],
|
assignedUser: [], // 审批人列表
|
||||||
formPerms:[],
|
formPerms: [], //表单权限
|
||||||
selfSelect: {
|
selfSelect: { //用户自选
|
||||||
multiple: false
|
multiple: false //用户自选时是否是多选
|
||||||
},
|
},
|
||||||
leaderTop: {
|
leaderTop: { //领导
|
||||||
endCondition: "TOP",
|
endCondition: "TOP",
|
||||||
endLevel: 1,
|
endLevel: 1,
|
||||||
},
|
},
|
||||||
leader:{
|
leader: { //第几级领导
|
||||||
level: 1
|
level: 1
|
||||||
},
|
},
|
||||||
roleList:[],
|
roleList: [], //角色列表
|
||||||
refuse: {
|
refuse: { //拒绝的操作
|
||||||
type: 'TO_END', //驳回规则 TO_END TO_NODE TO_BEFORE
|
type: 'TO_END', //驳回规则 TO_END TO_NODE TO_BEFORE
|
||||||
target: '' //驳回到指定ID的节点
|
target: '' //驳回到指定ID的节点
|
||||||
},
|
},
|
||||||
formUser: ''
|
formUser: '' //表单用户
|
||||||
}
|
}
|
||||||
|
|
||||||
//根节点默认属性
|
//根节点默认属性
|
||||||
export const ROOT_PROPS = {
|
export const ROOT_PROPS = {
|
||||||
assignedUser: [],
|
assignedUser: [], //审批人
|
||||||
formPerms:[]
|
formPerms: [] //表单权限
|
||||||
}
|
}
|
||||||
|
|
||||||
//条件节点默认属性
|
//条件节点默认属性
|
||||||
export const CONDITION_PROPS = {
|
export const CONDITION_PROPS = {
|
||||||
groupsType:"OR", //条件组逻辑关系 OR、AND
|
groupsType: "OR", //条件组逻辑关系 OR、AND
|
||||||
groups:[
|
groups: [
|
||||||
{
|
{
|
||||||
groupType:"AND", //条件组内条件关系 OR、AND
|
groupType: "AND", //条件组内条件关系 OR、AND
|
||||||
cids:[], //条件ID集合
|
cids: [], //条件ID集合
|
||||||
conditions:[] //组内子条件
|
conditions: [] //组内子条件
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
expression: "" //自定义表达式,灵活构建逻辑关系
|
expression: "" //自定义表达式,灵活构建逻辑关系
|
||||||
|
|
@ -64,38 +64,39 @@ export const CONDITION_PROPS = {
|
||||||
export const CC_PROPS = {
|
export const CC_PROPS = {
|
||||||
shouldAdd: false,
|
shouldAdd: false,
|
||||||
assignedUser: [],
|
assignedUser: [],
|
||||||
formPerms:[]
|
formPerms: []
|
||||||
}
|
}
|
||||||
|
|
||||||
//触发器节点默认属性
|
//触发器节点默认属性
|
||||||
export const TRIGGER_PROPS = {
|
export const TRIGGER_PROPS = {
|
||||||
type: 'WEBHOOK',
|
type: 'WEBHOOK',
|
||||||
http:{
|
http: {
|
||||||
method: 'GET', //请求方法 支持GET/POST
|
method: 'GET', //请求方法 支持GET/POST
|
||||||
url: '', //URL地址,可以直接带参数
|
url: '', //URL地址,可以直接带参数
|
||||||
headers: [ //http header
|
headers: [ //http header
|
||||||
{
|
{
|
||||||
name: '',
|
name: '',
|
||||||
isField: true,
|
isField: true,
|
||||||
value: '' //支持表达式 ${xxx} xxx为表单字段名称
|
value: '' //支持表达式 ${xxx} xxx为表单字段id
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
contentType: 'FORM', //请求参数类型
|
contentType: 'FORM', //请求参数类型
|
||||||
params:[ //请求参数
|
params: [ //请求参数
|
||||||
{
|
{
|
||||||
name: '',
|
name: '',
|
||||||
isField: true, //是表单字段还是自定义
|
isField: true, //是表单字段还是自定义
|
||||||
value: '' //支持表达式 ${xxx} xxx为表单字段名称
|
value: '' //支持表达式 ${xxx} xxx为表单字段id
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
retry: 1,
|
retry: 1,
|
||||||
handlerByScript: false,
|
handlerByScript: false,
|
||||||
success: 'function handlerOk(res) {\n return true;\n}',
|
success: 'function handlerSuccess(res) {\n return {\n state: true, \n msg: "请求成功!" \n };\n}',
|
||||||
fail: 'function handlerFail(res) {\n return true;\n}'
|
fail: 'function handlerFail(res) {\n return {\n state: true, \n msg: "请求失败!" \n };\n}'
|
||||||
},
|
},
|
||||||
email:{
|
email: {
|
||||||
subject: '',
|
subject: '',
|
||||||
to: [],
|
to: [],
|
||||||
|
cc: [],
|
||||||
content: ''
|
content: ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,9 @@
|
||||||
<el-radio v-for="item in approvalTypes" :label="item.type" :key="item.type">{{ item.name }}</el-radio>
|
<el-radio v-for="item in approvalTypes" :label="item.type" :key="item.type">{{ item.name }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<div v-if="nodeProps.assignedType === 'ASSIGN_USER'">
|
<div v-if="nodeProps.assignedType === 'ASSIGN_USER'">
|
||||||
<el-button size="mini" icon="el-icon-plus" type="primary" @click="selectUser" round>选择人员</el-button>
|
<el-button size="mini" icon="el-icon-plus" type="primary" @click="$refs.userPicker.showUserPicker()" round>选择人员</el-button>
|
||||||
<avatar-ellipsis :row="3" :user-info="nodeProps.assignedUser"/>
|
<user-picker title="请选择系统角色" :multiple="false" ref="userPicker" :v-model="assignedUser" @ok="selectedUser"/>
|
||||||
|
<avatar-ellipsis :row="3" :user-info="assignedUser"/>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="nodeProps.assignedType === 'SELF_SELECT'">
|
<div v-else-if="nodeProps.assignedType === 'SELF_SELECT'">
|
||||||
<el-radio-group size="mini" v-model="nodeProps.selfSelect.multiple">
|
<el-radio-group size="mini" v-model="nodeProps.selfSelect.multiple">
|
||||||
|
|
@ -40,7 +41,8 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="nodeProps.assignedType === 'ROLE'">
|
<div v-else-if="nodeProps.assignedType === 'ROLE'">
|
||||||
<el-button size="mini" icon="el-icon-plus" type="primary" @click="selectRole" round>选择系统角色</el-button>
|
<el-button size="mini" icon="el-icon-plus" type="primary" @click="$refs.rolePicker.showRolePicker()" round>选择系统角色</el-button>
|
||||||
|
<role-picker title="请选择人员" :multiple="false" ref="rolePicker" :v-model="roleList" @ok="selectedRole"/>
|
||||||
<role-items v-model="nodeProps.roleList"/>
|
<role-items v-model="nodeProps.roleList"/>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="nodeProps.assignedType === 'FORM_USER'">
|
<div v-else-if="nodeProps.assignedType === 'FORM_USER'">
|
||||||
|
|
@ -64,12 +66,11 @@
|
||||||
<el-radio label="TO_ADMIN">转交审批管理员</el-radio>
|
<el-radio label="TO_ADMIN">转交审批管理员</el-radio>
|
||||||
<el-radio label="TO_USER">转交到指定人员</el-radio>
|
<el-radio label="TO_USER">转交到指定人员</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
|
||||||
<div style="margin-top: 10px" v-if="nodeProps.nobody.handler === 'TO_USER'">
|
<div style="margin-top: 10px" v-if="nodeProps.nobody.handler === 'TO_USER'">
|
||||||
<el-button size="mini" icon="el-icon-plus" type="primary" @click="selectNoSetUser" round>选择人员</el-button>
|
<el-button size="mini" icon="el-icon-plus" type="primary" @click="$refs.toUserPicker.showUserPicker()" round>选择人员</el-button>
|
||||||
<org-items v-model="nodeProps.assignedUser"/>
|
<user-picker title="请指定用户" :multiple="false" ref="toUserPicker" :v-model="nobodyAssignedUser" @ok="selectNoSetUser"/>
|
||||||
|
<avatar-ellipsis :row="3" :user-info="nobodyAssignedUser"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<div v-if="showMode">
|
<div v-if="showMode">
|
||||||
|
|
@ -118,23 +119,22 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="🙅 如果审批被驳回 👇">
|
<el-form-item label="🙅 如果审批被驳回 👇">
|
||||||
<el-radio-group v-model="nodeProps.refuse.type">
|
<el-radio-group v-model="nodeProps.refuse.type">
|
||||||
<el-radio label="TO_INITIAL">直接结束流程</el-radio>
|
<el-radio label="TO_INITIAL">重新开始流程</el-radio>
|
||||||
<el-radio label="TO_BEFORE">驳回到上级审批节点</el-radio>
|
<el-radio label="TO_BEFORE">驳回到上级审批节点</el-radio>
|
||||||
<!-- <el-radio label="TO_NODE">驳回到指定节点</el-radio>-->
|
<el-radio label="TO_NODE">驳回到指定节点</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<div v-if="nodeProps.refuse.type === 'TO_NODE'">
|
<div v-if="nodeProps.refuse.type === 'TO_NODE'">
|
||||||
<span>指定节点:</span>
|
<span>指定节点:</span>
|
||||||
<el-select style="margin-left: 10px; width: 150px;" placeholder="选择跳转步骤" size="small"
|
<el-select style="margin-left: 10px; width: 150px;" placeholder="选择跳转步骤" size="small"
|
||||||
v-model="nodeProps.refuse.target">
|
v-model="nodeProps.refuse.target">
|
||||||
<el-option v-for="(node, i) in nodeOptions" :key="i" :label="node.name" :value="node.id"></el-option>
|
<el-option v-for="(node, index) in nodeOptions" :key="index" :label="node.name"
|
||||||
|
:value="node.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<role-picker title="请选择人员" multiple ref="rolePicker" :v-model="roleList" @ok="selectedRole"/>
|
|
||||||
<user-picker title="请选择系统角色" multiple ref="userPicker" :v-model="assignedUser" @ok="selectedUser"/>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -143,12 +143,11 @@
|
||||||
import RolePicker from "@/components/common/RolePicker";
|
import RolePicker from "@/components/common/RolePicker";
|
||||||
import UserPicker from "@/components/common/UserPicker";
|
import UserPicker from "@/components/common/UserPicker";
|
||||||
import RoleItems from "../RoleItems";
|
import RoleItems from "../RoleItems";
|
||||||
import OrgItems from "../OrgItems";
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "ApprovalNodeConfig",
|
name: "ApprovalNodeConfig",
|
||||||
components: {RoleItems, OrgItems, RolePicker, UserPicker},
|
components: {RoleItems, RolePicker, UserPicker},
|
||||||
props: {
|
props: {
|
||||||
config: {
|
config: {
|
||||||
type: Object,
|
type: Object,
|
||||||
|
|
@ -184,7 +183,15 @@ export default {
|
||||||
this.config.assignedUser = val
|
this.config.assignedUser = val
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
roleList:{
|
nobodyAssignedUser: {
|
||||||
|
get() {
|
||||||
|
return this.config.nobody.assignedUser || [];
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.config.nobody.assignedUser = val
|
||||||
|
}
|
||||||
|
},
|
||||||
|
roleList: {
|
||||||
get() {
|
get() {
|
||||||
return this.config.roleList || [];
|
return this.config.roleList || [];
|
||||||
},
|
},
|
||||||
|
|
@ -199,7 +206,7 @@ export default {
|
||||||
},
|
},
|
||||||
nodeOptions() {
|
nodeOptions() {
|
||||||
let values = [];
|
let values = [];
|
||||||
const excType = ["ROOT", "EMPTY", "CONDITION", "CONDITIONS", "CONCURRENT", "CONCURRENTS"];
|
const excType = ["ROOT", "EMPTY", "CONDITION", "CONDITIONS", "CONCURRENT", "CONCURRENTS", "CC", "END", "TRIGGER"];
|
||||||
this.$store.state.nodeMap.forEach((v) => {
|
this.$store.state.nodeMap.forEach((v) => {
|
||||||
if (excType.indexOf(v.type) === -1) {
|
if (excType.indexOf(v.type) === -1) {
|
||||||
values.push({id: v.id, name: v.name});
|
values.push({id: v.id, name: v.name});
|
||||||
|
|
@ -216,7 +223,6 @@ export default {
|
||||||
case "LEADER_TOP":
|
case "LEADER_TOP":
|
||||||
return this.nodeProps.formUser !== "";
|
return this.nodeProps.formUser !== "";
|
||||||
case "FORM_USER":
|
case "FORM_USER":
|
||||||
return true;
|
|
||||||
case "ROLE":
|
case "ROLE":
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
|
|
@ -225,15 +231,17 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
selectUser() {
|
selectNoSetUser(select) {
|
||||||
this.$refs.userPicker.showUserPicker()
|
let userInfoList = []
|
||||||
},
|
for (let val of select) {
|
||||||
selectNoSetUser() {
|
let userInfo = {
|
||||||
|
id: val.id,
|
||||||
},
|
name: val.name,
|
||||||
//弹出角色选择器,选择系统角色
|
avatar: val.avatar,
|
||||||
selectRole() {
|
}
|
||||||
this.$refs.rolePicker.showRolePicker();
|
userInfoList.push(userInfo)
|
||||||
|
}
|
||||||
|
this.nobodyAssignedUser = userInfoList
|
||||||
},
|
},
|
||||||
selectedRole(select) {
|
selectedRole(select) {
|
||||||
this.roleList = select
|
this.roleList = select
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ export default {
|
||||||
return this.config.shouldAdd || false
|
return this.config.shouldAdd || false
|
||||||
},
|
},
|
||||||
set(val){
|
set(val){
|
||||||
console.log("asdjhajdhasjdhasdhasjdad")
|
|
||||||
this.config.shouldAdd = val
|
this.config.shouldAdd = val
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div v-if="config.type === 'WEBHOOK'">
|
<div v-if="config.type === 'WEBHOOK'">
|
||||||
<el-form-item label="请求地址" prop="text">
|
<el-form-item label="请求地址" prop="text">
|
||||||
<el-input placeholder="请输入URL地址" size="medium" v-model="config.http.url" >
|
<el-input placeholder="请输入URL地址" size="medium" v-model="config.http.url">
|
||||||
<el-select v-model="config.http.method" style="width: 85px;" slot="prepend" placeholder="URL">
|
<el-select v-model="config.http.method" style="width: 85px;" slot="prepend" placeholder="URL">
|
||||||
<el-option label="GET" value="GET"></el-option>
|
<el-option label="GET" value="GET"></el-option>
|
||||||
<el-option label="POST" value="POST"></el-option>
|
<el-option label="POST" value="POST"></el-option>
|
||||||
|
|
@ -23,22 +23,25 @@
|
||||||
<span style="margin-right: 10px">Header请求头</span>
|
<span style="margin-right: 10px">Header请求头</span>
|
||||||
<el-button type="text" @click="addItem(config.http.headers)"> + 添加</el-button>
|
<el-button type="text" @click="addItem(config.http.headers)"> + 添加</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(header, index) in config.http.headers" :key="header.name">
|
<div v-for="(header, index) in config.http.headers" :key="index">
|
||||||
- <el-input placeholder="参数名" size="small" style="width: 100px;" v-model="header.name" />
|
-
|
||||||
|
<el-input placeholder="参数名" size="small" style="width: 100px;" v-model="header.name"/>
|
||||||
<el-radio-group size="small" style="margin: 0 5px;" v-model="header.isField">
|
<el-radio-group size="small" style="margin: 0 5px;" v-model="header.isField">
|
||||||
<el-radio-button :label="true">表单</el-radio-button>
|
<el-radio-button :label="true">表单</el-radio-button>
|
||||||
<el-radio-button :label="false">固定</el-radio-button>
|
<el-radio-button :label="false">固定</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<el-select v-if="header.isField" style="width: 180px;" v-model="header.value" size="small" placeholder="请选择表单字段">
|
<el-select v-if="header.isField" style="width: 180px;" v-model="header.value" size="small"
|
||||||
|
placeholder="请选择表单字段">
|
||||||
<el-option v-for="form in forms" :key="form.id" :label="form.title" :value="form.title"></el-option>
|
<el-option v-for="form in forms" :key="form.id" :label="form.title" :value="form.title"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input v-else placeholder="请设置字段值" size="small" v-model="header.value" style="width: 180px;"/>
|
<el-input v-else placeholder="请设置字段值" size="small" v-model="header.value" style="width: 180px;"/>
|
||||||
<el-icon class="el-icon-delete" @click="delItem(config.http.headers, index)" style="margin-left: 5px; color: #c75450; cursor: pointer"/>
|
<el-icon class="el-icon-delete" @click="delItem(config.http.headers, index)"
|
||||||
|
style="margin-left: 5px; color: #c75450; cursor: pointer"/>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Header请求参数" prop="text">
|
<el-form-item label="Header请求参数" prop="text">
|
||||||
<div slot="label">
|
<div slot="label">
|
||||||
<span style="margin-right: 10px">Header请求参数 </span>
|
<span style="margin-right: 10px">请求参数 </span>
|
||||||
<el-button style="margin-right: 20px" type="text" @click="addItem(config.http.params)"> + 添加</el-button>
|
<el-button style="margin-right: 20px" type="text" @click="addItem(config.http.params)"> + 添加</el-button>
|
||||||
<span>参数类型 - </span>
|
<span>参数类型 - </span>
|
||||||
<el-radio-group size="mini" style="margin: 0 5px;" v-model="config.http.contentType">
|
<el-radio-group size="mini" style="margin: 0 5px;" v-model="config.http.contentType">
|
||||||
|
|
@ -46,39 +49,47 @@
|
||||||
<el-radio-button label="FORM">form</el-radio-button>
|
<el-radio-button label="FORM">form</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(param, index) in config.http.params" :key="param.name">
|
<div v-for="(param, index) in config.http.params" :key="index">
|
||||||
- <el-input placeholder="参数名" size="small" style="width: 100px;" v-model="param.name" />
|
-
|
||||||
|
<el-input placeholder="参数名" size="small" style="width: 100px;" v-model="param.name"/>
|
||||||
<el-radio-group size="small" style="margin: 0 5px;" v-model="param.isField">
|
<el-radio-group size="small" style="margin: 0 5px;" v-model="param.isField">
|
||||||
<el-radio-button :label="true">表单</el-radio-button>
|
<el-radio-button :label="true">表单</el-radio-button>
|
||||||
<el-radio-button :label="false">固定</el-radio-button>
|
<el-radio-button :label="false">固定</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<el-select v-if="param.isField" style="width: 180px;" v-model="param.value" size="small" placeholder="请选择表单字段">
|
<el-select v-if="param.isField" style="width: 180px;" v-model="param.value" size="small"
|
||||||
<el-option v-for="form in forms" :key="form.id" :label="form.title" :value="form.title"></el-option>
|
placeholder="请选择表单字段">
|
||||||
|
<el-option v-for="form in forms" :key="form.id" :label="form.title" :value="form.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input v-else placeholder="请设置字段值" size="small" v-model="param.value" style="width: 180px;"/>
|
<el-input v-else placeholder="请设置字段值" size="small" v-model="param.value" style="width: 180px;"/>
|
||||||
<el-icon class="el-icon-delete" @click="delItem(config.http.params, index)" style="margin-left: 5px; color: #c75450; cursor: pointer"/>
|
<el-icon class="el-icon-delete" @click="delItem(config.http.params, index)"
|
||||||
|
style="margin-left: 5px; color: #c75450; cursor: pointer"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="请求结果处理" prop="text">-->
|
<!-- <el-form-item label="请求结果处理" prop="text">-->
|
||||||
<div slot="label">
|
<div slot="label">
|
||||||
<span>请求结果处理</span>
|
<span>请求结果处理</span>
|
||||||
<span style="margin-left: 20px">自定义脚本: </span>
|
<span style="margin-left: 20px">自定义脚本: </span>
|
||||||
<el-switch v-model="config.http.handlerByScript"></el-switch>
|
<el-switch v-model="config.http.handlerByScript"></el-switch>
|
||||||
</div>
|
</div>
|
||||||
<span class="item-desc" v-if="config.http.handlerByScript">
|
<span class="item-desc" v-if="config.http.handlerByScript">
|
||||||
👉 返回值为 ture 则流程通过,为 false 则流程将被驳回
|
<p>👉 返回值为 ture 则流程通过,为 false 则流程将被驳回</p>
|
||||||
<div>支持函数
|
<p>👉 (上线注意)占不支持ES高级语法</p>
|
||||||
<span style="color: dodgerblue">setFormByName(
|
<p>👉 (上线注意)不支持浏览器的内置函数</p>
|
||||||
<span style="color: #939494">'表单字段名', '表单字段值'</span>
|
<!-- <div>支持函数-->
|
||||||
)</span>
|
<!-- <span style="color: dodgerblue">setFormByName(-->
|
||||||
可改表单数据
|
<!-- <span style="color: #939494">'表单字段名', '表单字段值'</span>-->
|
||||||
</div>
|
<!-- )</span>-->
|
||||||
|
<!-- 可改表单数据-->
|
||||||
|
<!-- </div>-->
|
||||||
</span>
|
</span>
|
||||||
<span class="item-desc" v-else>👉 无论请求结果如何,均通过</span>
|
<span class="item-desc" v-else>👉 无论请求结果如何,均通过</span>
|
||||||
<div v-if="config.http.handlerByScript">
|
<div v-if="config.http.handlerByScript">
|
||||||
|
<div>
|
||||||
|
<el-button @click="testHander">测试</el-button>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>请求成功😀:</span>
|
<span>请求成功😀:</span>
|
||||||
<code-edit v-model="config.http.success"/>
|
<code-edit v-model="config.http.success"/>
|
||||||
|
|
@ -88,19 +99,27 @@
|
||||||
<code-edit v-model="config.http.fail"/>
|
<code-edit v-model="config.http.fail"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="config.type === 'EMAIL'">
|
<div v-else-if="config.type === 'EMAIL'">
|
||||||
<el-form-item label="邮件主题" prop="text">
|
<el-form-item label="邮件主题" prop="text">
|
||||||
<el-input placeholder="请输入邮件主题" size="medium" v-model="config.email.subject" />
|
<el-input placeholder="请输入邮件主题" size="medium" v-model="config.email.subject"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收件方" prop="text">
|
<el-form-item label="收件方" prop="text">
|
||||||
<el-select size="small" style="width: 100%;" v-model="config.email.to" filterable multiple allow-create default-first-option placeholder="请输入收件人">
|
<el-select size="small" style="width: 100%;" v-model="config.email.to" filterable multiple allow-create
|
||||||
<el-option v-for="item in config.email.to" :key="item" :label="item" :value="item"></el-option>
|
default-first-option placeholder="请输入收件人">
|
||||||
|
<el-option v-for="sender in config.email.to" :key="sender" :label="sender" :value="sender"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="抄送方" prop="text">
|
||||||
|
<el-select size="small" style="width: 100%;" v-model="config.email.cc" filterable multiple allow-create
|
||||||
|
default-first-option placeholder="请输入收件人">
|
||||||
|
<el-option v-for="item in config.email.cc" :key="item" :label="item" :value="item"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="邮件正文" prop="text">
|
<el-form-item label="邮件正文" prop="text">
|
||||||
<el-input type="textarea" v-model="config.email.content" :rows="4" placeholder="邮件内容,支持变量提取表单数据 ${表单字段名} "></el-input>
|
<el-input type="textarea" v-model="config.email.content" :rows="4"
|
||||||
|
placeholder="邮件内容,支持变量提取表单数据 ${表单字段名} "></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
@ -109,44 +128,87 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import CodeEdit from "@/components/common/CodeEdit";
|
import CodeEdit from "@/components/common/CodeEdit";
|
||||||
|
import axios from "axios";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TriggerNodeConfig",
|
name: "TriggerNodeConfig",
|
||||||
components: {CodeEdit},
|
components: {CodeEdit},
|
||||||
props:{
|
props: {
|
||||||
config:{
|
config: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: ()=>{
|
default: () => {
|
||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed:{
|
computed: {
|
||||||
forms(){
|
forms() {
|
||||||
return this.$store.state.design.formItems || []
|
return this.$store.state.design.formItems || []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
addItem(items){
|
addItem(items) {
|
||||||
if (items.length > 0 && (items[items.length - 1].name.trim() === ''
|
if (items.length > 0 && (items[items.length - 1].name.trim() === ''
|
||||||
|| items[items.length - 1].value.trim() === '')){
|
|| items[items.length - 1].value.trim() === '')) {
|
||||||
this.$message.warning("请完善之前项后在添加")
|
this.$message.warning("请完善之前项后在添加")
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
items.push({name: '', value: '', isField: true})
|
items.push({name: '', value: '', isField: true})
|
||||||
},
|
},
|
||||||
delItem(items, index){
|
delItem(items, index) {
|
||||||
items.splice(index, 1)
|
items.splice(index, 1)
|
||||||
},
|
},
|
||||||
|
testHander() {
|
||||||
|
let http = this.config.http;
|
||||||
|
if (http.url == null || http.url === '') {
|
||||||
|
this.$message.error("请填写请求路径!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let headers = {}
|
||||||
|
for (let header of http.headers) {
|
||||||
|
if (header.isField) {
|
||||||
|
this.$message.error("测试只支持固定参数")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (header.name !== "" && header.value !== "") {
|
||||||
|
this.$set(headers, header.name, header.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (http.contentType === "FORM") {
|
||||||
|
this.$set(headers, "Content-Type", "multipart/form-data")
|
||||||
|
} else {
|
||||||
|
this.$set(headers, "Content-Type", "application/json")
|
||||||
|
}
|
||||||
|
console.log("==================[测试打印内容]==================")
|
||||||
|
axios.request({
|
||||||
|
method: http.method,
|
||||||
|
url: http.url,
|
||||||
|
headers: headers
|
||||||
|
}).then(res => {
|
||||||
|
console.log(res)
|
||||||
|
if (res.status === 200) {
|
||||||
|
let data = res.data
|
||||||
|
let successFun = eval("(false ||" + http.success + ")");
|
||||||
|
let result = successFun(data);
|
||||||
|
console.log(result, "成功函数执行的返回结果")
|
||||||
|
} else {
|
||||||
|
let failFun = eval("(false ||" + http.fail + ")");
|
||||||
|
let result = failFun(res);
|
||||||
|
console.log(result, "失败函数执行的返回结果")
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
console.log("==================[测试打印结束]==================")
|
||||||
|
})
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.item-desc{
|
.item-desc {
|
||||||
color: #939494;
|
color: #939494;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ export default {
|
||||||
computed: {
|
computed: {
|
||||||
selectUser() {
|
selectUser() {
|
||||||
return {
|
return {
|
||||||
show: this.config.props.assignedType !== 'ASSIGN_USER',
|
show: this.config.props.assignedType !== 'ASSIGN_USER' && this.config.props.shouldAdd,
|
||||||
multiple: true
|
multiple: true
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue