clay : 触发器的http请求有没有已经实现 #50
|
|
@ -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"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -26,7 +25,7 @@ service.defaults.withCredentials = true; // 让ajax携带cookie
|
||||||
service.interceptors.request.use(
|
service.interceptors.request.use(
|
||||||
// 每次请求都自动携带Cookie
|
// 每次请求都自动携带Cookie
|
||||||
config => {
|
config => {
|
||||||
config.headers['authorization'] = sessionStorage.getItem("token") // 让每个请求携带自定义token 请根据实际情况自行修改
|
config.headers['authorization'] = localStorage.getItem("token") // 让每个请求携带自定义token 请根据实际情况自行修改
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
|
|
@ -38,8 +37,8 @@ service.interceptors.response.use(
|
||||||
rsp => {
|
rsp => {
|
||||||
let data = rsp.data
|
let data = rsp.data
|
||||||
if (data.code === 401){
|
if (data.code === 401){
|
||||||
sessionStorage.clear()
|
localStorage.clear()
|
||||||
window.open("/")
|
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:{
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,7 @@ export default {
|
||||||
uploadParams: {},
|
uploadParams: {},
|
||||||
uploadFileUrl: getBaseUrl() + "/flowable/process/file",
|
uploadFileUrl: getBaseUrl() + "/flowable/process/file",
|
||||||
headers: {
|
headers: {
|
||||||
authorization: sessionStorage.getItem("token")
|
authorization: localStorage.getItem("token")
|
||||||
},
|
},
|
||||||
context: null,
|
context: null,
|
||||||
rollBackId: null,
|
rollBackId: null,
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -44,13 +44,13 @@ export default {
|
||||||
components: {UserPicker},
|
components: {UserPicker},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
token: sessionStorage.getItem("token"),
|
token: localStorage.getItem("token"),
|
||||||
select: [],
|
select: [],
|
||||||
loginUser: {}
|
loginUser: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
let user = sessionStorage.getItem("userInfo")
|
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)
|
||||||
|
|
@ -58,7 +58,7 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getToken() {
|
getToken() {
|
||||||
sessionStorage.clear()
|
localStorage.clear()
|
||||||
axios.post(
|
axios.post(
|
||||||
"http://gateway.mytwins.top/auth/workflow/login",
|
"http://gateway.mytwins.top/auth/workflow/login",
|
||||||
// "http://localhost:8000/auth/workflow/login",
|
// "http://localhost:8000/auth/workflow/login",
|
||||||
|
|
@ -69,9 +69,9 @@ export default {
|
||||||
uuid: "string"
|
uuid: "string"
|
||||||
}
|
}
|
||||||
).then(res => {
|
).then(res => {
|
||||||
sessionStorage.setItem("userInfo",JSON.stringify(this.loginUser))
|
localStorage.setItem("userInfo",JSON.stringify(this.loginUser))
|
||||||
this.token = res.data.data
|
this.token = res.data.data
|
||||||
sessionStorage.setItem("token", this.token)
|
localStorage.setItem("token", this.token)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
selectedUser(select) {
|
selectedUser(select) {
|
||||||
|
|
@ -90,7 +90,7 @@ export default {
|
||||||
},
|
},
|
||||||
//显示角色选择框
|
//显示角色选择框
|
||||||
showRolePicker() {
|
showRolePicker() {
|
||||||
sessionStorage.clear()
|
localStorage.clear()
|
||||||
this.$refs.userPicker.showUserPicker()
|
this.$refs.userPicker.showUserPicker()
|
||||||
},
|
},
|
||||||
to(path) {
|
to(path) {
|
||||||
|
|
|
||||||
|
|
@ -90,8 +90,8 @@ export const TRIGGER_PROPS = {
|
||||||
],
|
],
|
||||||
retry: 1,
|
retry: 1,
|
||||||
handlerByScript: false,
|
handlerByScript: false,
|
||||||
success: 'function handlerSuccess(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: '',
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ export default {
|
||||||
disabled: false,
|
disabled: false,
|
||||||
uploadFileUrl: getBaseUrl() + "/flowable/process/file",
|
uploadFileUrl: getBaseUrl() + "/flowable/process/file",
|
||||||
headers: {
|
headers: {
|
||||||
authorization: sessionStorage.getItem("token")
|
authorization: localStorage.getItem("token")
|
||||||
},
|
},
|
||||||
uploadParams: {},
|
uploadParams: {},
|
||||||
dialogImageUrl: '',
|
dialogImageUrl: '',
|
||||||
|
|
|
||||||
|
|
@ -24,16 +24,19 @@
|
||||||
<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="index">
|
<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">
|
||||||
|
|
@ -47,16 +50,19 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(param, index) in config.http.params" :key="index">
|
<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"
|
||||||
|
placeholder="请选择表单字段">
|
||||||
<el-option v-for="form in forms" :key="form.id" :label="form.title" :value="form.id"></el-option>
|
<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>
|
||||||
|
|
||||||
|
|
@ -69,7 +75,9 @@
|
||||||
<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>
|
||||||
|
<p>👉 (上线注意)占不支持ES高级语法</p>
|
||||||
|
<p>👉 (上线注意)不支持浏览器的内置函数</p>
|
||||||
<!-- <div>支持函数-->
|
<!-- <div>支持函数-->
|
||||||
<!-- <span style="color: dodgerblue">setFormByName(-->
|
<!-- <span style="color: dodgerblue">setFormByName(-->
|
||||||
<!-- <span style="color: #939494">'表单字段名', '表单字段值'</span>-->
|
<!-- <span style="color: #939494">'表单字段名', '表单字段值'</span>-->
|
||||||
|
|
@ -79,6 +87,9 @@
|
||||||
</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"/>
|
||||||
|
|
@ -95,17 +106,20 @@
|
||||||
<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
|
||||||
|
default-first-option placeholder="请输入收件人">
|
||||||
<el-option v-for="sender in config.email.to" :key="sender" :label="sender" :value="sender"></el-option>
|
<el-option v-for="sender in config.email.to" :key="sender" :label="sender" :value="sender"></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-select size="small" style="width: 100%;" v-model="config.email.cc" filterable multiple allow-create default-first-option placeholder="请输入收件人">
|
<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-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>
|
||||||
|
|
@ -114,6 +128,8 @@
|
||||||
|
|
||||||
<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},
|
||||||
|
|
@ -131,8 +147,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
addItem(items) {
|
addItem(items) {
|
||||||
|
|
@ -146,6 +161,48 @@ export default {
|
||||||
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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue