Commit 9747d75b authored by 刘殿昕's avatar 刘殿昕

四个缺省页,二级菜单,超管router,流程!流程!流程!

parent 7d09c890
...@@ -38,5 +38,8 @@ export const lang = { ...@@ -38,5 +38,8 @@ export const lang = {
online_component_tool: "在线组件中心", online_component_tool: "在线组件中心",
process_design: "流程设计", process_design: "流程设计",
process_management: "流程管理", process_management: "流程管理",
new: "新建" new: "新建",
// technical-support
technical_support: "技术支持"
} }
\ No newline at end of file
<template>
<div class="side_nav_bar">
<h3 class="side_nav_bar_title" @click="titleAction">
<img :src="titleIcon" width="20" style="margin-right: 10px;" />
<span v-text="title"></span>
</h3>
<div v-for="(nav, index) in navList" :key="'nav' + index">
<div class="side_nav_bar_first_title">{{ nav.name }}</div>
<ul class="side_nav_bar_list">
<router-link
tag="li"
v-for="(item, indexs) in nav.child"
:class="{ current: $route.path.indexOf(item.path) > -1 }"
:key="index + 'a' + indexs"
:to="item.path"
>
<span v-text="item.name"></span>
</router-link>
</ul>
</div>
</div>
</template>
<script>
export default {
name: "sideNavBar",
props: {
title: {
type: String,
default: () => "我的服务",
},
titleIcon: {
type: String,
default: () => require("@/assets/imgs/tool_fuwu.png"),
},
titlePath: {
type: String,
default: () => "",
},
navList: {
type: Array,
default: () => [],
},
imgSrc: {
type: String,
default: "tool_fuwu",
},
},
methods: {
titleAction() {
if (this.titlePath) {
this.$router.push(this.titlePath);
}
},
},
};
</script>
<style scoped>
.side_nav_bar {
background-color: #0d1847;
}
.side_nav_bar_title {
height: 40px;
background-color: #182665;
border-radius: 10px;
overflow: hidden;
margin: 20px 15px 20px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.side_nav_bar_title > span {
font-size: 16px;
color: #c3caf8;
}
.side_nav_bar_first_title {
color: #c3caf8;
font-size: 14px;
padding: 10px 0 10px 34px;
position: relative;
}
.side_nav_bar_first_title::before {
content: "";
position: absolute;
left: 22px;
top: 12px;
width: 4px;
height: 16px;
background-color: #515fe7;
border-radius: 2px;
}
.side_nav_bar_list > li {
padding: 12px 10px 12px 42px;
border-left: 5px solid #0d1847;
font-size: 14px;
line-height: 24px;
color: #e6ebfe;
cursor: pointer;
}
.side_nav_bar_list > li:hover,
.side_nav_bar_list > li.current {
border-left: 5px solid #e56600;
background-color: #182665;
color: #e6ebfe;
}
</style>
...@@ -329,7 +329,6 @@ export default { ...@@ -329,7 +329,6 @@ export default {
for (let i = 0; i < val.length; i++) { for (let i = 0; i < val.length; i++) {
this.filterLists[i + 1].name = val[i]; this.filterLists[i + 1].name = val[i];
} }
console.log(this.filterLists);
}, },
}, },
}, },
......
...@@ -14,16 +14,37 @@ ...@@ -14,16 +14,37 @@
<div class="node-container"> <div class="node-container">
<p class="label_head">节点类型</p> <p class="label_head">节点类型</p>
<p class="label_explanation">请拖拽添加到流程中</p> <p class="label_explanation">请拖拽添加到流程中</p>
<div class="node-item" :class="{'node-item-begin': item.value.meta.type == 1, 'node-item-end': item.value.meta.type == 2, 'node-item-default': item.value.meta.type == 3}" v-for="(item, index) in nodeItemList" :key="index" @mousedown="evt => nodeItemMouseDown(evt, item.value)"> <div
class="node-item"
:class="{'node-item-begin': item.value.meta.type == 1, 'node-item-end': item.value.meta.type == 2, 'node-item-default': item.value.meta.type == 3}"
v-for="(item, index) in nodeItemList"
:key="index"
@mousedown="evt => nodeItemMouseDown(evt, item.value)"
>
<span>{{item.label}}</span> <span>{{item.label}}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="flow-container" ref="flowContainer"> <div class="flow-container" ref="flowContainer">
<super-flow ref="superFlow" :node-list="nodeList" :link-list="linkList" :link-menu="linkMenu" line-color="#c4d8f8" onLineColor="#94a8c8" :origin="origin"> <super-flow
ref="superFlow"
:node-list="nodeList"
:link-list="linkList"
:link-menu="linkMenu"
line-color="#c4d8f8"
onLineColor="#94a8c8"
:origin="origin"
>
<template v-slot:node="{meta}"> <template v-slot:node="{meta}">
<div :class="{'flow-node-begin': nodeParams(meta.id).type == 1, 'flow-node-end': nodeParams(meta.id).type == 2, 'flow-node-default': nodeParams(meta.id).type == 3 && meta.id != nodeItem.id, 'flow-node-default-active': nodeParams(meta.id).type == 3 && meta.id == nodeItem.id }" :id="meta.id"> <div
<div class="node_span" @click="clickItem(meta.id)" @blur="blurItem">{{nodeParams(meta.id).name}}</div> :class="{'flow-node-begin': nodeParams(meta.id).type == 1, 'flow-node-end': nodeParams(meta.id).type == 2, 'flow-node-default': nodeParams(meta.id).type == 3 && meta.id != nodeItem.id, 'flow-node-default-active': nodeParams(meta.id).type == 3 && meta.id == nodeItem.id }"
:id="meta.id"
>
<div
class="node_span"
@click="clickItem(meta.id)"
@blur="blurItem"
>{{nodeParams(meta.id).name}}</div>
</div> </div>
</template> </template>
</super-flow> </super-flow>
...@@ -52,11 +73,23 @@ ...@@ -52,11 +73,23 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="nodeParams(nodeItem.id).plugins && nodeParams(nodeItem.id).plugins.length > 0">
<div class="checked_line"></div>
</div>
</div> </div>
<el-dialog :visible.sync="dialog_general" top="25vh" width="420px" :modal-append-to-body="false" title="常规设置" :close-on-click-modal="false"> <el-dialog
:visible.sync="dialog_general"
top="25vh"
width="420px"
:modal-append-to-body="false"
title="常规设置"
:close-on-click-modal="false"
>
<div class="general_settings"> <div class="general_settings">
<p class="general_title">节点编号:</p> <p class="general_title">节点编号:</p>
<p class="general_val">{{ nodeParams(nodeItem.id).node_code }}</p> <p
class="general_val"
>{{ nodeParams(nodeItem.id).node_code == "暂无(保存后将自动生成节点编号)" ? "" : nodeParams(nodeItem.id).node_code }}</p>
<p class="general_title">节点名称:</p> <p class="general_title">节点名称:</p>
<p class="general_input"> <p class="general_input">
<el-input v-model="node_name" placeholder="请输入节点名称"></el-input> <el-input v-model="node_name" placeholder="请输入节点名称"></el-input>
...@@ -67,7 +100,14 @@ ...@@ -67,7 +100,14 @@
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="dialog_interface" top="25vh" width="80vw" :modal-append-to-body="false" title="接口插件" :close-on-click-modal="false"> <el-dialog
:visible.sync="dialog_interface"
top="25vh"
width="80vw"
:modal-append-to-body="false"
title="接口插件"
:close-on-click-modal="false"
>
<div class="interface_plugin"> <div class="interface_plugin">
<div class="interface_msg"> <div class="interface_msg">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
...@@ -76,16 +116,46 @@ ...@@ -76,16 +116,46 @@
<div class="interface_plugin_item"> <div class="interface_plugin_item">
<div class="fwcs_fwdz">服务地址:</div> <div class="fwcs_fwdz">服务地址:</div>
<div class="fwcs_fwdz_inner"> <div class="fwcs_fwdz_inner">
<el-input placeholder="请输入内容" @input="getUrl" v-model="serviceUrl" class="input-with-select"> <el-input
placeholder="请输入内容"
@input="getUrl"
v-model="serviceUrl"
class="input-with-select"
>
<el-select v-model="select" slot="prepend" placeholder="请选择"> <el-select v-model="select" slot="prepend" placeholder="请选择">
<el-option v-for="item in optionType" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option
v-for="item in optionType"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</el-input> </el-input>
<el-button @click="clickFwcs()" class="fwcs_btn_fwcs">连接测试</el-button> <el-button @click="clickFwcs()" class="fwcs_btn_fwcs">连接测试</el-button>
</div> </div>
<el-tabs v-model="activeName" class="fwcs_tabs" @tab-click="clickTab"> <el-tabs v-model="activeName" class="fwcs_tabs" @tab-click="clickTab">
<el-tab-pane label="请求参数" name="0"> <el-tab-pane label="请求参数" name="0">
<CesTable ref="fwcs_sjfw_qq" size="mini" :border="true" :headers="sjfwQqcs" url :datas="datasSj" :searchShow="false" :addRowBtn="false" :autoAdd="true" :isDialog="false" :isSelection="false" :isIndex="true" :radius="true" :emptyText="emptyText" :stripe="false" :paginationShow="false" :pageSizeShow="false" headerCellClassName="th_pink" @changeTable="changeTable"></CesTable> <CesTable
ref="fwcs_sjfw_qq"
size="mini"
:border="true"
:headers="sjfwQqcs"
url
:datas="datasSj"
:searchShow="false"
:addRowBtn="false"
:autoAdd="true"
:isDialog="false"
:isSelection="false"
:isIndex="true"
:radius="true"
:emptyText="emptyText"
:stripe="false"
:paginationShow="false"
:pageSizeShow="false"
headerCellClassName="th_pink"
@changeTable="changeTable"
></CesTable>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="请求体" name="1"> <el-tab-pane label="请求体" name="1">
<div class="sjfw_qqt"> <div class="sjfw_qqt">
...@@ -100,7 +170,12 @@ ...@@ -100,7 +170,12 @@
<el-col :span="6"> <el-col :span="6">
<div class="sqxx_title">授权方式:</div> <div class="sqxx_title">授权方式:</div>
<el-select v-model="sqfsVal" placeholder="请选择" class="sqxx_select"> <el-select v-model="sqfsVal" placeholder="请选择" class="sqxx_select">
<el-option v-for="item in optionsSq" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option
v-for="item in optionsSq"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="2" class="center_line_c"> <el-col :span="2" class="center_line_c">
...@@ -116,9 +191,47 @@ ...@@ -116,9 +191,47 @@
<div v-show="resultShow && resSuccess" class="add_params"> <div v-show="resultShow && resSuccess" class="add_params">
<div class="split_line"></div> <div class="split_line"></div>
<div class="sjfw_qqcstx">请求参数信息填写:</div> <div class="sjfw_qqcstx">请求参数信息填写:</div>
<CesTable ref="fwcs_sjfw_qqcs" size="mini" :border="true" :headers="sjfwQqcstx" url :datas="datasQqcs" :searchShow="false" :addRowBtn="false" :autoAdd="false" :isDialog="false" :isSelection="false" :isIndex="true" :radius="true" :emptyText="emptyText" :stripe="false" :paginationShow="false" :pageSizeShow="false" headerCellClassName="th_pink"></CesTable> <CesTable
ref="fwcs_sjfw_qqcs"
size="mini"
:border="true"
:headers="sjfwQqcstx"
url
:datas="datasQqcs"
:searchShow="false"
:addRowBtn="false"
:autoAdd="false"
:isDialog="false"
:isSelection="false"
:isIndex="true"
:radius="true"
:emptyText="emptyText"
:stripe="false"
:paginationShow="false"
:pageSizeShow="false"
headerCellClassName="th_pink"
></CesTable>
<div class="sjfw_fhcstx">返回参数信息填写:</div> <div class="sjfw_fhcstx">返回参数信息填写:</div>
<CesTable ref="fwcs_sjfw_fhcs" size="mini" :border="true" :headers="sjfwFhcstx" url :datas="datasFhcs" :searchShow="false" :addRowBtn="false" :autoAdd="false" :isDialog="false" :isSelection="false" :isIndex="true" :radius="true" :emptyText="emptyText" :stripe="false" :paginationShow="false" :pageSizeShow="false" headerCellClassName="th_pink"></CesTable> <CesTable
ref="fwcs_sjfw_fhcs"
size="mini"
:border="true"
:headers="sjfwFhcstx"
url
:datas="datasFhcs"
:searchShow="false"
:addRowBtn="false"
:autoAdd="false"
:isDialog="false"
:isSelection="false"
:isIndex="true"
:radius="true"
:emptyText="emptyText"
:stripe="false"
:paginationShow="false"
:pageSizeShow="false"
headerCellClassName="th_pink"
></CesTable>
</div> </div>
<div v-show="resultShow && !resSuccess"> <div v-show="resultShow && !resSuccess">
<div class="skfw_csfwxx">测试服务信息:</div> <div class="skfw_csfwxx">测试服务信息:</div>
...@@ -135,7 +248,14 @@ ...@@ -135,7 +248,14 @@
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="dialog_process" top="25vh" width="500px" :modal-append-to-body="false" title="流程服务" :close-on-click-modal="false"> <el-dialog
:visible.sync="dialog_process"
top="25vh"
width="600px"
:modal-append-to-body="false"
title="流程服务"
:close-on-click-modal="false"
>
<div class="process_service"> <div class="process_service">
<div class="process_msg"> <div class="process_msg">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
...@@ -149,11 +269,18 @@ ...@@ -149,11 +269,18 @@
</p> </p>
<div class="dia_footer"> <div class="dia_footer">
<el-button class="cancel" @click="processCancel">取消</el-button> <el-button class="cancel" @click="processCancel">取消</el-button>
<el-button class="submit" @click="processSubmit">确定</el-button> <el-button class="submit" @click="processSubmit">添加</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="dialog_timeout" top="25vh" width="500px" :modal-append-to-body="false" title="超时管理" :close-on-click-modal="false"> <el-dialog
:visible.sync="dialog_timeout"
top="25vh"
width="600px"
:modal-append-to-body="false"
title="超时管理"
:close-on-click-modal="false"
>
<div class="timeout_service"> <div class="timeout_service">
<div class="timeout_msg"> <div class="timeout_msg">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
...@@ -165,8 +292,13 @@ ...@@ -165,8 +292,13 @@
<div class="timeout_input_group"> <div class="timeout_input_group">
<div class="input_left">最大时长</div> <div class="input_left">最大时长</div>
<el-input-number v-model="max_time_0" controls-position="right" :min="0"></el-input-number> <el-input-number v-model="max_time_0" controls-position="right" :min="0"></el-input-number>
<el-select v-model="max_time_type_0" class="input_right_select" placeholder="请选择申请时长"> <el-select v-model="max_time_type_0" class="input_right_select" placeholder="请输入">
<el-option v-for="item in durationOptions" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option
v-for="item in durationOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</div> </div>
<div class="timeout_check"> <div class="timeout_check">
...@@ -179,12 +311,17 @@ ...@@ -179,12 +311,17 @@
<div class="timeout_input_group"> <div class="timeout_input_group">
<div class="input_left">最大时长</div> <div class="input_left">最大时长</div>
<el-input-number v-model="max_time_1" controls-position="right" :min="0"></el-input-number> <el-input-number v-model="max_time_1" controls-position="right" :min="0"></el-input-number>
<el-select v-model="max_time_type_1" class="input_right_select" placeholder="请选择申请时长"> <el-select v-model="max_time_type_1" class="input_right_select" placeholder="请输入">
<el-option v-for="item in durationOptions" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option
v-for="item in durationOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</div> </div>
<div class="timeout_check"> <div class="timeout_check">
<el-checkbox v-model="max_time_check_1">超时提醒</el-checkbox> <el-checkbox v-model="max_time_check_1">超时终止流程</el-checkbox>
</div> </div>
</div> </div>
</div> </div>
...@@ -202,12 +339,34 @@ import CesTable from "@/components/table/table-um"; ...@@ -202,12 +339,34 @@ import CesTable from "@/components/table/table-um";
import Codes from "@/components/general/codes"; import Codes from "@/components/general/codes";
const drawerType = { const drawerType = {
node: 0, node: 0,
link: 1 link: 1,
}; };
export default { export default {
components: { components: {
CesTable, CesTable,
Codes Codes,
},
props: {
node_list: {
type: Array,
default: () => [],
},
link_list: {
type: Array,
default: () => [],
},
node_params_list: {
type: Array,
default: () => [],
},
},
watch: {
node_list: {
handler(val) {
this.setVal();
},
deep: true,
},
}, },
data() { data() {
return { return {
...@@ -248,14 +407,14 @@ export default { ...@@ -248,14 +407,14 @@ export default {
} else { } else {
this.$refs.linkSetting.clearValidate(); this.$refs.linkSetting.clearValidate();
} }
} },
}, },
linkSetting: { linkSetting: {
desc: "" desc: "",
}, },
nodeSetting: { nodeSetting: {
name: "", name: "",
desc: "" desc: "",
}, },
dragConf: { dragConf: {
isDown: false, isDown: false,
...@@ -265,7 +424,7 @@ export default { ...@@ -265,7 +424,7 @@ export default {
clientX: 0, clientX: 0,
clientY: 0, clientY: 0,
ele: null, ele: null,
info: null info: null,
}, },
nodeItemList: [ nodeItemList: [
{ {
...@@ -276,9 +435,9 @@ export default { ...@@ -276,9 +435,9 @@ export default {
meta: { meta: {
label: "普通节点", label: "普通节点",
name: "普通节点", name: "普通节点",
type: 3 type: 3,
} },
} },
}, },
{ {
label: "开始", label: "开始",
...@@ -288,9 +447,9 @@ export default { ...@@ -288,9 +447,9 @@ export default {
meta: { meta: {
label: "开始", label: "开始",
name: "开始", name: "开始",
type: 1 type: 1,
} },
} },
}, },
{ {
label: "结束", label: "结束",
...@@ -300,27 +459,27 @@ export default { ...@@ -300,27 +459,27 @@ export default {
meta: { meta: {
label: "结束", label: "结束",
name: "结束", name: "结束",
type: 2 type: 2,
} },
} },
} },
], ],
nodeParamsList: [], nodeParamsList: [],
linkMenu: [ linkMenu: [
[ [
{ {
label: "删除", label: "删除",
selected: link => { selected: (link) => {
console.log(link); console.log(link);
link.remove(); link.remove();
} },
} },
] ],
], ],
dialog_general: false, dialog_general: false,
nodeItem: { nodeItem: {
id: "", id: "",
name: "" name: "",
}, },
node_name: "", node_name: "",
show_options_pop: false, show_options_pop: false,
...@@ -329,7 +488,7 @@ export default { ...@@ -329,7 +488,7 @@ export default {
{ label: "GET", value: 1 }, { label: "GET", value: 1 },
{ label: "POST", value: 2 }, { label: "POST", value: 2 },
{ label: "PUT", value: 3 }, { label: "PUT", value: 3 },
{ label: "DELETE", value: 4 } { label: "DELETE", value: 4 },
], ],
select: 1, select: 1,
serviceUrl: "", serviceUrl: "",
...@@ -342,9 +501,9 @@ export default { ...@@ -342,9 +501,9 @@ export default {
label: "请求字段编码", label: "请求字段编码",
prop: "requestEncoding", prop: "requestEncoding",
type: "input", type: "input",
align: "left" align: "left",
}, },
{ label: "请求值", prop: "requestValue", type: "input", align: "left" } { label: "请求值", prop: "requestValue", type: "input", align: "left" },
], ],
datasSj: [], datasSj: [],
optionsSq: [{ label: "Bearer Token", value: "Bearer" }], optionsSq: [{ label: "Bearer Token", value: "Bearer" }],
...@@ -358,13 +517,13 @@ export default { ...@@ -358,13 +517,13 @@ export default {
prop: "show_type", prop: "show_type",
type: "", type: "",
align: "left", align: "left",
width: "140" width: "140",
}, },
{ {
label: "字段名称*", label: "字段名称*",
prop: "label", prop: "label",
type: "input", type: "input",
align: "left" align: "left",
}, },
{ {
label: "是否必须*", label: "是否必须*",
...@@ -372,10 +531,13 @@ export default { ...@@ -372,10 +531,13 @@ export default {
type: "select", type: "select",
align: "left", align: "left",
width: 100, width: 100,
selectArr: [{ label: "", value: 1 }, { label: "", value: 0 }], selectArr: [
hasDefault: true { label: "", value: 1 },
{ label: "", value: 0 },
],
hasDefault: true,
}, },
{ label: "字段说明", prop: "descript", type: "input", align: "left" } { label: "字段说明", prop: "descript", type: "input", align: "left" },
], ],
sjfwFhcstx: [ sjfwFhcstx: [
{ label: "字段编码", prop: "name", type: "", align: "left" }, { label: "字段编码", prop: "name", type: "", align: "left" },
...@@ -385,9 +547,9 @@ export default { ...@@ -385,9 +547,9 @@ export default {
label: "字段名称*", label: "字段名称*",
prop: "label", prop: "label",
type: "input", type: "input",
align: "left" align: "left",
}, },
{ label: "字段说明", prop: "descript", type: "input", align: "left" } { label: "字段说明", prop: "descript", type: "input", align: "left" },
], ],
datasQqcs: [], datasQqcs: [],
datasFhcs: [], datasFhcs: [],
...@@ -405,14 +567,14 @@ export default { ...@@ -405,14 +567,14 @@ export default {
durationOptions: [ durationOptions: [
{ value: 1, label: "分钟" }, { value: 1, label: "分钟" },
{ value: 2, label: "小时" }, { value: 2, label: "小时" },
{ value: 3, label: "" } { value: 3, label: "" },
], ],
max_time_0: undefined, max_time_0: undefined,
max_time_1: undefined, max_time_1: undefined,
max_time_type_0: 1, max_time_type_0: 1,
max_time_type_1: 1, max_time_type_1: 1,
max_time_check_0: false, max_time_check_0: false,
max_time_check_1: false max_time_check_1: false,
}; };
}, },
mounted() { mounted() {
...@@ -447,7 +609,7 @@ export default { ...@@ -447,7 +609,7 @@ export default {
top, top,
right, right,
bottom, bottom,
left left,
} = this.$refs.flowContainer.getBoundingClientRect(); } = this.$refs.flowContainer.getBoundingClientRect();
// 判断鼠标是否进入 flow container // 判断鼠标是否进入 flow container
if ( if (
...@@ -474,15 +636,18 @@ export default { ...@@ -474,15 +636,18 @@ export default {
let query = { width: 120, height: 48, meta: {} }; let query = { width: 120, height: 48, meta: {} };
query.meta.type = conf.info.meta.type; query.meta.type = conf.info.meta.type;
if (!conf.info.meta.id) { if (!conf.info.meta.id) {
query.meta.id = parseInt(Math.random() * 1000 * 1000); query.meta.id =
parseInt(Math.random() * 1000 * 1000) +
"a" +
parseInt(Math.random() * 1000 * 1000);
} }
console.log(query); console.log(query);
this.$refs.superFlow.addNode({ this.$refs.superFlow.addNode({
coordinate, coordinate,
...query ...query,
}); });
if ( if (
this.nodeParamsList.findIndex(item => { this.nodeParamsList.findIndex((item) => {
return item.id == query.meta.id; return item.id == query.meta.id;
}) == -1 }) == -1
) { ) {
...@@ -492,21 +657,22 @@ export default { ...@@ -492,21 +657,22 @@ export default {
label: "开始", label: "开始",
name: "开始", name: "开始",
type: 1, type: 1,
id: query.meta.id id: query.meta.id,
}; };
} else if (conf.info.meta.type == 2) { } else if (conf.info.meta.type == 2) {
obj = { obj = {
label: "结束", label: "结束",
name: "结束", name: "结束",
type: 2, type: 2,
id: query.meta.id id: query.meta.id,
}; };
} else if (conf.info.meta.type == 3) { } else if (conf.info.meta.type == 3) {
obj = { obj = {
label: "普通节点", label: "普通节点",
name: "普通节点", name: "普通节点",
type: 3, type: 3,
id: query.meta.id id: query.meta.id,
plugins: [],
}; };
} }
this.nodeParamsList.push(obj); this.nodeParamsList.push(obj);
...@@ -531,7 +697,7 @@ export default { ...@@ -531,7 +697,7 @@ export default {
clientY: clientY, clientY: clientY,
info, info,
ele, ele,
isDown: true isDown: true,
}); });
ele.style.position = "fixed"; ele.style.position = "fixed";
ele.style.margin = "0"; ele.style.margin = "0";
...@@ -546,14 +712,14 @@ export default { ...@@ -546,14 +712,14 @@ export default {
}, },
blurItem() { blurItem() {
this.nodeItem = { this.nodeItem = {
id: "" id: "",
}; };
console.log(this.nodeItem); console.log(this.nodeItem);
}, },
getData() { getData() {
return { return {
obj: this.$refs.superFlow.toJSON(), obj: this.$refs.superFlow.toJSON(),
params: this.nodeParamsList params: this.nodeParamsList,
}; };
}, },
handleChange() {}, handleChange() {},
...@@ -565,14 +731,14 @@ export default { ...@@ -565,14 +731,14 @@ export default {
} else { } else {
self.$message({ self.$message({
message: "开始和结束节点不可被编辑", message: "开始和结束节点不可被编辑",
type: "warning" type: "warning",
}); });
return false; return false;
} }
} else { } else {
self.$message({ self.$message({
message: "请选择节点", message: "请选择节点",
type: "warning" type: "warning",
}); });
return false; return false;
} }
...@@ -580,17 +746,19 @@ export default { ...@@ -580,17 +746,19 @@ export default {
showGeneralSettings() { showGeneralSettings() {
if (this.checkNodeCouldEdit()) { if (this.checkNodeCouldEdit()) {
let self = this; let self = this;
self.node_name = self.nodeParamsList.find(item => { self.node_name = self.nodeParamsList.find((item) => {
return item.id == self.nodeItem.id; return item.id == self.nodeItem.id;
}).name; }).name;
self.dialog_general = true; self.dialog_general = true;
} }
}, },
showInterfacePlugin() { showInterfacePlugin(query) {
this.dialog_interface = true; if (this.checkNodeCouldEdit()) {
this.dialog_interface = true;
}
}, },
nodeParams(id) { nodeParams(id) {
let index = this.nodeParamsList.findIndex(item => { let index = this.nodeParamsList.findIndex((item) => {
return item.id == id; return item.id == id;
}); });
if (index != -1) { if (index != -1) {
...@@ -605,7 +773,7 @@ export default { ...@@ -605,7 +773,7 @@ export default {
generalSubmit() { generalSubmit() {
let self = this; let self = this;
if (self.nodeItem.type == 3) { if (self.nodeItem.type == 3) {
let index = self.nodeParamsList.findIndex(item => { let index = self.nodeParamsList.findIndex((item) => {
return item.id == self.nodeItem.id; return item.id == self.nodeItem.id;
}); });
if (index != -1) { if (index != -1) {
...@@ -613,7 +781,7 @@ export default { ...@@ -613,7 +781,7 @@ export default {
} else { } else {
self.$message({ self.$message({
message: "修改失败", message: "修改失败",
type: "error" type: "error",
}); });
} }
} }
...@@ -676,17 +844,34 @@ export default { ...@@ -676,17 +844,34 @@ export default {
? this.$refs.jsonCodes.getCodesVal() ? this.$refs.jsonCodes.getCodesVal()
: ""; : "";
let contentType = this.sjfwQqt; let contentType = this.sjfwQqt;
let method = "";
switch (this.select) {
case 1:
method = "GET";
break;
case 2:
method = "POST";
break;
case 3:
method = "PUT";
break;
case 4:
method = "DELETE";
break;
default:
break;
}
let query = { let query = {
method: this.select, method: method,
url: this.serviceUrl, url: this.serviceUrl,
headers: headers, headers: headers,
params: requestData, params: requestData,
body: bodys, body: bodys,
content_type: contentType, content_type: contentType,
data_service_type1: 5, data_service_type1: 5,
data_service_type2: 12 data_service_type2: 12,
}; };
this.$api.workbench.fwzcFwcs(query).then(response => { this.$api.workbench.fwzcFwcs(query).then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
let data = response.data.data; let data = response.data.data;
this.body_fields = data.body_fields; this.body_fields = data.body_fields;
...@@ -720,25 +905,26 @@ export default { ...@@ -720,25 +905,26 @@ export default {
this.checkTable(requestData, 0); this.checkTable(requestData, 0);
this.checkTable(responseData, 1); this.checkTable(responseData, 1);
if (this.requestRules == 0 && this.responseRules == 0) { if (this.requestRules == 0 && this.responseRules == 0) {
this.request_fields = requestData;
this.response_fields = responseData;
let self = this; let self = this;
let index = this.nodeParamsList.findIndex(item => { self.request_fields = requestData;
return (item.id = self.nodeItem.id); self.response_fields = responseData;
let index = self.nodeParamsList.findIndex((item) => {
return item.id == self.nodeItem.id;
}); });
console.log(self.nodeParamsList[index]);
self.nodeParamsList[index].plugins.push({ self.nodeParamsList[index].plugins.push({
plugin_type: 1, plugin_type: 1,
url: self.serviceUrl, url: self.serviceUrl,
req_type: Number(self.select), req_type: Number(self.select),
auth_method: self.sqfsVal, auth_method: self.sqfsVal,
auth_token: self.tokenVal, auth_token: self.tokenVal,
query_fields: query_fields: JSON.stringify(
self.dataType == "body" ? self.request_fields : self.body_fields, self.dataType == "body" ? self.request_fields : self.body_fields
body_fields: ),
self.dataType == "param" body_fields: JSON.stringify(
? self.request_fields self.dataType == "param" ? self.request_fields : self.param_fields
: self.param_fields, ),
response_fields: self.response_fields response_fields: JSON.stringify(self.response_fields),
}); });
console.log(self.nodeParamsList); console.log(self.nodeParamsList);
self.dialog_interface = false; self.dialog_interface = false;
...@@ -770,20 +956,32 @@ export default { ...@@ -770,20 +956,32 @@ export default {
} }
}, },
showProcessService() { showProcessService() {
this.dialog_process = true; if (this.checkNodeCouldEdit()) {
this.dialog_process = true;
}
}, },
processCancel() { processCancel() {
this.dialog_process = false; this.dialog_process = false;
}, },
processSubmit() {}, processSubmit() {
if (this.service != "") {
}
},
showTimeoutManagement() { showTimeoutManagement() {
this.dialog_timeout = true; if (this.checkNodeCouldEdit()) {
this.dialog_timeout = true;
}
}, },
timeoutCancel() { timeoutCancel() {
this.dialog_timeout = false; this.dialog_timeout = false;
}, },
timeoutSubmit() {} timeoutSubmit() {},
} setVal() {
this.nodeList = JSON.parse(JSON.stringify(this.node_list));
this.linkList = JSON.parse(JSON.stringify(this.link_list));
this.nodeParamsList = JSON.parse(JSON.stringify(this.node_params_list));
},
},
}; };
</script> </script>
...@@ -882,6 +1080,11 @@ export default { ...@@ -882,6 +1080,11 @@ export default {
} }
} }
} }
.checked_line {
width: 64px;
height: 1px;
background-color: #e5e8f5;
}
} }
} }
.node-item { .node-item {
...@@ -1218,7 +1421,7 @@ export default { ...@@ -1218,7 +1421,7 @@ export default {
.timeout_row { .timeout_row {
display: flex; display: flex;
.timeout_input_group { .timeout_input_group {
width: 300px; width: 400px;
display: flex; display: flex;
.input_left { .input_left {
display: inline-block; display: inline-block;
...@@ -1238,6 +1441,19 @@ export default { ...@@ -1238,6 +1441,19 @@ export default {
border-radius: 0; border-radius: 0;
color: #242c43; color: #242c43;
} }
.el-input-number__decrease {
display: none;
}
.el-input-number__increase {
display: none;
}
&.is-controls-right {
.el-input__inner {
padding-left: 15px;
padding-right: 15px;
text-align: left;
}
}
} }
.input_right_select.el-select { .input_right_select.el-select {
width: 80px; width: 80px;
......
<template> <template>
<div class="fwgl_container"> <div class="fwgl_container">
<side-nav-bar <sideNavBar
v-if="is_admin == 3 || is_admin == 4 || is_admin == 1"
title="运营管控中心" title="运营管控中心"
imgSrc="tool_fuwu" imgSrc="tool_fuwu"
:nav-list="navList" :nav-list="navList"
:title-path="navList[0] && navList[0].path" :title-path="navList[0] && navList[0].path"
></side-nav-bar> ></sideNavBar>
<sideNavBarClass
v-else-if="is_admin == 2"
title="运营管控中心"
imgSrc="tool_fuwu"
:nav-list="navList"
:title-path="navList[0] && navList[0].path"
></sideNavBarClass>
<div class="main_container"> <div class="main_container">
<router-view :key="'type_' + $route.params.type"></router-view> <router-view :key="'type_' + $route.params.type"></router-view>
</div> </div>
...@@ -14,10 +22,11 @@ ...@@ -14,10 +22,11 @@
<script> <script>
import sideNavBar from "@/components/side-nav-bar"; import sideNavBar from "@/components/side-nav-bar";
import sideNavBarClass from "@/components/general/side-nav-bar-class";
export default { export default {
components: { components: {
sideNavBar, sideNavBar,
sideNavBarClass,
}, },
data: () => ({ data: () => ({
userNav: [ userNav: [
...@@ -32,24 +41,46 @@ export default { ...@@ -32,24 +41,46 @@ export default {
], ],
userNav1: [ userNav1: [
{ {
name: "组织服务数据分析", name: "运营分析",
path: `/data_analysis/org_service`, path: `/data_analysis/org_service`,
child: [
{
name: "服务分析",
path: `/data_analysis/org_service`,
},
{
name: "应用分析",
path: `/data_analysis/org_application`,
},
],
}, },
{ {
name: "组织应用数据分析", name: "运行管控",
path: `/data_analysis/org_application`, path: `/data_analysis/operation_overview`,
child: [
{
name: "运行概况",
path: `/data_analysis/operation_overview`,
},
{
name: "服务管控",
path: `/data_analysis/service_control`,
},
],
}, },
],
userNav2: [
{ {
name: "运行概况-组织", name: "服务分析",
path: `/data_analysis/operation_overview`, path: `/data_analysis/super_service`,
}, },
{ {
name: "服务管控-组织", name: "应用分析",
path: `/data_analysis/service_control`, path: `/data_analysis/super_application`,
}, },
], ],
userNav2: [],
navList: [], navList: [],
is_admin: 0,
}), }),
watch: { watch: {
// "$route.fullPath"(path) { // "$route.fullPath"(path) {
...@@ -58,16 +89,15 @@ export default { ...@@ -58,16 +89,15 @@ export default {
}, },
methods: { methods: {
initNavList() { initNavList() {
if ( this.is_admin = this.$store.state.userInfo.is_admin;
this.$store.state.userInfo.is_admin == 3 || if (this.is_admin == 3 || this.is_admin == 4) {
this.$store.state.userInfo.is_admin == 4
) {
this.navList = this.userNav; this.navList = this.userNav;
} else if (this.$store.state.userInfo.is_admin == 2) { } else if (this.is_admin == 2) {
this.navList = this.userNav1; this.navList = this.userNav1;
this.$router.push({ name: "orgServiceDataAnalysis" }); this.$router.push({ name: "orgServiceDataAnalysis" });
} else if (this.$store.state.userInfo.is_admin == 1) { } else if (this.is_admin == 1) {
this.navList = this.userNav2; this.navList = this.userNav2;
this.$router.push({ name: "superServiceDataAnalysis" });
} }
}, },
}, },
......
<template>
<div>
<el-breadcrumb separator="/" class="bread_crumb1">
<el-breadcrumb-item :to="{ path: '/data_analysis' }">{{ $t("lang.data_analysis") }}</el-breadcrumb-item>
<el-breadcrumb-item>{{ $t("lang.my_application_data_analysis") }}</el-breadcrumb-item>
</el-breadcrumb>
<BlockRadius class="default">
<div class="default_img">
<h1 class="default_title">开发中,敬请期待!</h1>
<h3 class="default_msg">
如需技术支持
<br />请联系管理员
</h3>
</div>
</BlockRadius>
</div>
</template>
<script>
import BlockRadius from "@/components/general/block-radius";
export default {
methods: {
getData() {},
},
components: {
BlockRadius,
},
};
</script>
<style lang="less" scoped>
.default {
height: calc(100vh - 160px);
display: flex;
align-items: center;
justify-content: center;
margin: 0 20px;
.default_img {
width: 1282px;
height: 629px;
background-image: url("~@/assets/imgs/img_default_jszc.png");
.default_title {
color: #264dd9;
font-size: 44px;
font-weight: bold;
margin-bottom: 40px;
}
.default_msg {
color: #58617a;
font-size: 24px;
line-height: 44px;
}
}
}
</style>
\ No newline at end of file
<template>
<div>
<el-breadcrumb separator="/" class="bread_crumb1">
<el-breadcrumb-item :to="{ path: '/data_analysis' }">
{{
$t("lang.data_analysis")
}}
</el-breadcrumb-item>
<el-breadcrumb-item>
{{
$t("lang.my_service_data_analysis")
}}
</el-breadcrumb-item>
</el-breadcrumb>
<BlockRadius class="default">
<div class="default_img">
<h1 class="default_title">开发中,敬请期待!</h1>
<h3 class="default_msg">
如需技术支持
<br />请联系管理员
</h3>
</div>
</BlockRadius>
</div>
</template>
<script>
import BlockRadius from "@/components/general/block-radius";
export default {
methods: {
getData() {},
},
components: {
BlockRadius,
},
};
</script>
<style lang="less" scoped>
.default {
height: calc(100vh - 160px);
display: flex;
align-items: center;
justify-content: center;
margin: 0 20px;
.default_img {
width: 1282px;
height: 629px;
background-image: url("~@/assets/imgs/img_default_jszc.png");
.default_title {
color: #264dd9;
font-size: 44px;
font-weight: bold;
margin-bottom: 40px;
}
.default_msg {
color: #58617a;
font-size: 24px;
line-height: 44px;
}
}
}
</style>
\ No newline at end of file
...@@ -5,7 +5,32 @@ ...@@ -5,7 +5,32 @@
<service-shop-menu></service-shop-menu> <service-shop-menu></service-shop-menu>
</el-aside> </el-aside>
<el-main> <el-main>
<service-list :filterNames="filterNames" :name="name" :url="url" :urlFilter="urlFilter"></service-list> <service-list
v-show="urlFilter != '7' && urlFilter != '10'"
:filterNames="filterNames"
:name="name"
:url="url"
:urlFilter="urlFilter"
></service-list>
<div v-show="urlFilter == '7' || urlFilter == '10'">
<el-breadcrumb separator="/" class="bread_crumb1 bread_left">
<el-breadcrumb-item :to="{ path: '/shop' }">
{{
$t("lang.service_shop")
}}
</el-breadcrumb-item>
<el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
</el-breadcrumb>
<BlockRadius class="default">
<div class="default_img">
<h1 class="default_title">开发中,敬请期待!</h1>
<h3 class="default_msg">
如需技术支持
<br />请联系管理员
</h3>
</div>
</BlockRadius>
</div>
</el-main> </el-main>
</el-container> </el-container>
</div> </div>
...@@ -14,16 +39,18 @@ ...@@ -14,16 +39,18 @@
<script> <script>
import ServiceShopMenu from "@/components/service-list/service_shop_menu"; import ServiceShopMenu from "@/components/service-list/service_shop_menu";
import ServiceList from "@/components/service-list/service_list"; import ServiceList from "@/components/service-list/service_list";
import BlockRadius from "@/components/general/block-radius";
export default { export default {
components: { components: {
ServiceShopMenu, ServiceShopMenu,
ServiceList ServiceList,
BlockRadius,
}, },
data: () => ({ data: () => ({
urlFilter: "", urlFilter: "",
url: "", url: "",
name: "", name: "",
filterNames: [] filterNames: [],
}), }),
mounted() { mounted() {
this.getVal(this.$route.path); this.getVal(this.$route.path);
...@@ -76,16 +103,39 @@ export default { ...@@ -76,16 +103,39 @@ export default {
this.filterNames = []; this.filterNames = [];
break; break;
} }
} },
}, },
watch: { watch: {
"$route.path": { "$route.path": {
handler(val) { handler(val) {
this.getVal(val); this.getVal(val);
} },
} },
} },
}; };
</script> </script>
<style scoped> <style lang="less" scoped>
.default {
height: calc(100vh - 180px);
display: flex;
align-items: center;
justify-content: center;
margin: 0;
.default_img {
width: 1282px;
height: 629px;
background-image: url("~@/assets/imgs/img_default_jszc.png");
.default_title {
color: #264dd9;
font-size: 44px;
font-weight: bold;
margin-bottom: 40px;
}
.default_msg {
color: #58617a;
font-size: 24px;
line-height: 44px;
}
}
}
</style> </style>
\ No newline at end of file
<template> <template>
<div class="contain"></div> <div class="contain">
<div class="technical_head">{{ $t("lang.technical_support") }}</div>
<BlockRadius class="default">
<div class="default_img">
<h1 class="default_title">开发中,敬请期待!</h1>
<h3 class="default_msg">
如需技术支持
<br />请联系管理员
</h3>
</div>
</BlockRadius>
</div>
</template> </template>
<script> <script>
import BlockRadius from "@/components/general/block-radius";
export default { export default {
data() { data() {
return {}; return {};
}, },
components: {}, components: {
BlockRadius,
},
computed: {}, computed: {},
created() {}, created() {},
mounted() {}, mounted() {},
...@@ -15,6 +29,38 @@ export default { ...@@ -15,6 +29,38 @@ export default {
}; };
</script> </script>
<style> <style lang="less" scoped>
.contain {
width: calc(100% - 80px);
margin: 0 auto;
margin-top: -157px;
margin-bottom: 20px;
.technical_head {
color: #626de9;
font-size: 14px;
padding: 20px;
}
.default {
height: calc(100vh - 180px);
display: flex;
align-items: center;
justify-content: center;
.default_img {
width: 1282px;
height: 629px;
background-image: url("~@/assets/imgs/img_default_jszc.png");
.default_title {
color: #264dd9;
font-size: 44px;
font-weight: bold;
margin-bottom: 40px;
}
.default_msg {
color: #58617a;
font-size: 24px;
line-height: 44px;
}
}
}
}
</style> </style>
<template>
<div class="design_contain">
<el-breadcrumb separator="/" class="bread_crumb1">
<el-breadcrumb-item :to="{ path: '/workplace' }">{{ $t("lang.online_component_tool") }}</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/progress/designer' }">{{ $t("lang.process_design") }}</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/progress/designer' }">{{ $t("lang.process_management") }}</el-breadcrumb-item>
<el-breadcrumb-item>{{ $t("lang.new") }}</el-breadcrumb-item>
</el-breadcrumb>
<BlockRadius class="block_item">
<steps
:active-step="step"
:done="done"
:show-done="true"
done-title="保存成功"
done-sub-title="可返回流程管理列表查看该流程,并进行流程的部署和发布。"
class="apaas_steps"
>
<step
title="基本信息"
:step="0"
:active-icon="require('@/assets/imgs/progress_ic_xinxitx.png')"
class="apaas_step"
>
<div class="step_in">
<el-form :model="basic_form" :rules="rules" ref="basicInformation" class="form_left">
<el-form-item prop="name">
<p class="formname">流程名称:</p>
<el-input v-model="basic_form.name" placeholder="请输入流程名称"></el-input>
</el-form-item>
<el-form-item prop="workplace">
<p class="formname">工作区域:</p>
<el-select
v-model="basic_form.workplace"
@change="changeWorkPlace"
placeholder="请选择工作区域"
>
<el-option
v-for="(item, index) in workplace_list"
:label="item.name"
:value="item.id"
:key="index"
></el-option>
</el-select>
</el-form-item>
<el-form-item prop="desc">
<p class="formname">流程描述:</p>
<el-input
type="textarea"
:autosize="{ minRows: 6, maxRows: 10}"
v-model="basic_form.desc"
placeholder="请输入流程描述"
></el-input>
</el-form-item>
</el-form>
<div class="btn_footer">
<el-button class="cancel" @click="cancel">取消</el-button>
<el-button class="next" @click="next">下一步</el-button>
</div>
</div>
</step>
<step
title="流程设计"
:step="1"
:active-icon="require('@/assets/imgs/progress_ic_liucheng.png')"
class="apaas_step"
>
<div class="step_in">
<WorkFlow
ref="workFlow"
:node_list="node_list"
:link_list="link_list"
:node_params_list="node_params_list"
class="work_flow"
/>
<div class="btn_footer">
<el-button class="cancel" @click="cancel">取消</el-button>
<div>
<el-button class="cancel" @click="back">上一步</el-button>
<el-button class="next" @click="complete">完成</el-button>
</div>
</div>
</div>
</step>
<step
title
step-title="完成"
:step="2"
:active-icon="require('@/assets/imgs/progress_ic_wancheng.png')"
class="apaas_step"
></step>
<template slot="action">
<el-button type="primary" @click="backToList">返回列表</el-button>
</template>
</steps>
</BlockRadius>
</div>
</template>
<script>
import WorkFlow from "@/components/work-flow/super-flow";
import BlockRadius from "@/components/general/block-radius";
import Steps from "@/components/app-build-steps/app-build-steps";
import Step from "@/components/app-build-steps/app-build-step";
export default {
components: {
WorkFlow,
BlockRadius,
Steps,
Step,
},
data: () => {
return {
step: 0,
done: false,
basic_form: {
name: "",
workplace: "",
desc: "",
},
node_list: [],
link_list: [],
node_params_list: [],
rules: {
name: [
{ required: true, message: "请输入流程名称", trigger: "blur" },
{ max: 16, message: "不能超过16个字符", trigger: "blur" },
],
workplace: [
{ required: true, message: "请选择工作区域", trigger: "blur" },
],
desc: [
{ required: true, message: "请输入流程描述", trigger: "blur" },
{ max: 400, message: "不能超过400个字符", trigger: "blur" },
],
},
workplace_list: [],
};
},
methods: {
verification() {
let self = this;
let data = JSON.parse(JSON.stringify(self.$refs.workFlow.getData()));
console.log(JSON.stringify(data));
let start_num = 0;
let end_num = 0;
let start_id = "";
let end_id = "";
let start_before = 0;
let end_after = 0;
let in_edge = 0;
let out_edge = 0;
let datas = { ...data.obj };
console.log(data);
datas.nodeList.forEach((item) => {
let da = data.params.find((nodep) => {
return nodep.id == item.meta.id;
});
item.meta = da;
if (item.meta.type == 1) {
start_num++;
start_id = item.id;
}
if (item.meta.type == 2) {
end_num++;
end_id = item.id;
}
if (
datas.linkList.findIndex((el) => {
return el.startId == item.id;
}) == -1 &&
item.id != end_id
) {
in_edge++;
} else if (
datas.linkList.findIndex((el) => {
return el.endId == item.id;
}) == -1 &&
item.id != start_id
) {
out_edge++;
}
});
datas.linkList.forEach((item) => {
if (start_id == item.endId) {
start_before++;
}
if (end_id == item.startId) {
end_after++;
}
});
if (start_num != 1 || end_num != 1) {
this.$message({
message: "开始节点与结束节点均应有且只有一个",
type: "warning",
});
return false;
} else if (start_before != 0) {
this.$message({
message: "开始节点前面不应连接其它节点",
type: "warning",
});
return false;
} else if (end_after != 0) {
this.$message({
message: "结束节点后面不应连接其它节点",
type: "warning",
});
return false;
} else if (in_edge != 0 || out_edge != 0) {
this.$message({
message: "请保证每个节点都被连接",
type: "warning",
});
return false;
} else {
return datas;
}
},
backToList() {
this.$router.push("/message/directed_push");
},
changeWorkPlace() {},
cancel() {
this.$router.go(-1);
},
next() {
this.$refs["basicInformation"].validate((valid) => {
if (valid) {
this.step++;
} else {
}
});
},
back() {
this.step--;
},
complete() {
let self = this;
let res = self.verification();
if (res) {
let query = {
name: self.basic_form.name,
workarea: self.basic_form.workplace,
describe: self.basic_form.desc,
...res,
};
this.$api.workbench.addProcess(query).then((response) => {
if (response.data.success == 1) {
}
});
}
},
getNameSpaceList() {
this.$api.workbench.getProcessNamespaceList().then((response) => {
if (response.data.success == 1) {
this.workplace_list = response.data.data.workareas;
}
});
},
getProcessDetail() {
this.$api.workbench
.getProcessDetail({ id: this.$route.params.id })
.then((response) => {
if (response.data.success == 1) {
this.node_list = [];
this.link_list = [];
this.node_params_list = [];
this.node_list.forEach((item) => {
item.meta.id =
parseInt(Math.random() * 1000 * 1000) +
"a" +
parseInt(Math.random() * 1000 * 1000);
this.node_params_list.push(item.meta);
});
}
});
},
},
mounted() {
this.getNameSpaceList();
this.getProcessDetail();
},
};
</script>
<style scoped>
.design_contain {
width: 100%;
height: calc(100% - 20px);
padding: 0 20px;
}
.block_item {
height: calc(100% - 56px);
}
.step_in {
height: 100%;
}
.form_left {
width: 55%;
height: calc(100% - 70px);
}
.btn_footer {
width: calc(100% - 20px);
height: 40px;
padding: 0 10px;
display: flex;
justify-content: space-between;
}
.cancel {
background-color: #e3e5ef;
color: #0f2683;
}
.next {
background-color: #0f2683;
color: #f8f9fd;
}
.work_flow {
height: calc(100% - 70px);
}
</style>
<style>
.block_item .el-textarea__inner {
border-radius: 8px;
background-color: #f7f8f9;
border: solid 1px #e3e5ef;
}
.block_item .el-input__inner {
background-color: #f7f8f9;
border: solid 1px #e3e5ef;
}
.block_item .el-select {
width: 100%;
}
</style>
...@@ -7,8 +7,20 @@ ...@@ -7,8 +7,20 @@
<el-breadcrumb-item>{{ $t("lang.new") }}</el-breadcrumb-item> <el-breadcrumb-item>{{ $t("lang.new") }}</el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
<BlockRadius class="block_item"> <BlockRadius class="block_item">
<steps :active-step="step" :done="done" :show-done="true" done-title="保存成功" done-sub-title="可返回流程管理列表查看该流程,并进行流程的部署和发布。" class="apaas_steps"> <steps
<step title="基本信息" :step="0" :active-icon="require('@/assets/imgs/progress_ic_xinxitx.png')" class="apaas_step"> :active-step="step"
:done="done"
:show-done="true"
done-title="保存成功"
done-sub-title="可返回流程管理列表查看该流程,并进行流程的部署和发布。"
class="apaas_steps"
>
<step
title="基本信息"
:step="0"
:active-icon="require('@/assets/imgs/progress_ic_xinxitx.png')"
class="apaas_step"
>
<div class="step_in"> <div class="step_in">
<el-form :model="basic_form" :rules="rules" ref="basicInformation" class="form_left"> <el-form :model="basic_form" :rules="rules" ref="basicInformation" class="form_left">
<el-form-item prop="name"> <el-form-item prop="name">
...@@ -17,13 +29,27 @@ ...@@ -17,13 +29,27 @@
</el-form-item> </el-form-item>
<el-form-item prop="workplace"> <el-form-item prop="workplace">
<p class="formname">工作区域:</p> <p class="formname">工作区域:</p>
<el-select v-model="basic_form.workplace" @change="changeWorkPlace" placeholder="请选择工作区域"> <el-select
<el-option v-for="item in workplace_list" :label="item" :value="item" :key="item"></el-option> v-model="basic_form.workplace"
@change="changeWorkPlace"
placeholder="请选择工作区域"
>
<el-option
v-for="(item, index) in workplace_list"
:label="item.name"
:value="item.id"
:key="index"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="desc"> <el-form-item prop="desc">
<p class="formname">流程描述:</p> <p class="formname">流程描述:</p>
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 10}" v-model="basic_form.desc" placeholder="请输入流程描述"></el-input> <el-input
type="textarea"
:autosize="{ minRows: 6, maxRows: 10}"
v-model="basic_form.desc"
placeholder="请输入流程描述"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="btn_footer"> <div class="btn_footer">
...@@ -32,7 +58,12 @@ ...@@ -32,7 +58,12 @@
</div> </div>
</div> </div>
</step> </step>
<step title="流程设计" :step="1" :active-icon="require('@/assets/imgs/progress_ic_liucheng.png')" class="apaas_step"> <step
title="流程设计"
:step="1"
:active-icon="require('@/assets/imgs/progress_ic_liucheng.png')"
class="apaas_step"
>
<div class="step_in"> <div class="step_in">
<WorkFlow ref="workFlow" class="work_flow" /> <WorkFlow ref="workFlow" class="work_flow" />
<div class="btn_footer"> <div class="btn_footer">
...@@ -44,7 +75,13 @@ ...@@ -44,7 +75,13 @@
</div> </div>
</div> </div>
</step> </step>
<step title step-title="完成" :step="2" :active-icon="require('@/assets/imgs/progress_ic_wancheng.png')" class="apaas_step"></step> <step
title
step-title="完成"
:step="2"
:active-icon="require('@/assets/imgs/progress_ic_wancheng.png')"
class="apaas_step"
></step>
<template slot="action"> <template slot="action">
<el-button type="primary" @click="backToList">返回列表</el-button> <el-button type="primary" @click="backToList">返回列表</el-button>
...@@ -65,7 +102,7 @@ export default { ...@@ -65,7 +102,7 @@ export default {
WorkFlow, WorkFlow,
BlockRadius, BlockRadius,
Steps, Steps,
Step Step,
}, },
data: () => { data: () => {
return { return {
...@@ -74,22 +111,22 @@ export default { ...@@ -74,22 +111,22 @@ export default {
basic_form: { basic_form: {
name: "", name: "",
workplace: "", workplace: "",
desc: "" desc: "",
}, },
rules: { rules: {
name: [ name: [
{ required: true, message: "请输入流程名称", trigger: "blur" }, { required: true, message: "请输入流程名称", trigger: "blur" },
{ max: 16, message: "不能超过16个字符", trigger: "blur" } { max: 16, message: "不能超过16个字符", trigger: "blur" },
], ],
workplace: [ workplace: [
{ required: true, message: "请选择工作区域", trigger: "blur" } { required: true, message: "请选择工作区域", trigger: "blur" },
], ],
desc: [ desc: [
{ required: true, message: "请输入流程描述", trigger: "blur" }, { required: true, message: "请输入流程描述", trigger: "blur" },
{ max: 400, message: "不能超过400个字符", trigger: "blur" } { max: 400, message: "不能超过400个字符", trigger: "blur" },
] ],
}, },
workplace_list: [] workplace_list: [],
}; };
}, },
methods: { methods: {
...@@ -107,8 +144,8 @@ export default { ...@@ -107,8 +144,8 @@ export default {
let out_edge = 0; let out_edge = 0;
let datas = { ...data.obj }; let datas = { ...data.obj };
console.log(data); console.log(data);
datas.nodeList.forEach(item => { datas.nodeList.forEach((item) => {
let da = data.params.find(nodep => { let da = data.params.find((nodep) => {
return nodep.id == item.meta.id; return nodep.id == item.meta.id;
}); });
item.meta = da; item.meta = da;
...@@ -121,14 +158,14 @@ export default { ...@@ -121,14 +158,14 @@ export default {
end_id = item.id; end_id = item.id;
} }
if ( if (
datas.linkList.findIndex(el => { datas.linkList.findIndex((el) => {
return el.startId == item.id; return el.startId == item.id;
}) == -1 && }) == -1 &&
item.id != end_id item.id != end_id
) { ) {
in_edge++; in_edge++;
} else if ( } else if (
datas.linkList.findIndex(el => { datas.linkList.findIndex((el) => {
return el.endId == item.id; return el.endId == item.id;
}) == -1 && }) == -1 &&
item.id != start_id item.id != start_id
...@@ -136,7 +173,7 @@ export default { ...@@ -136,7 +173,7 @@ export default {
out_edge++; out_edge++;
} }
}); });
datas.linkList.forEach(item => { datas.linkList.forEach((item) => {
if (start_id == item.endId) { if (start_id == item.endId) {
start_before++; start_before++;
} }
...@@ -147,25 +184,30 @@ export default { ...@@ -147,25 +184,30 @@ export default {
if (start_num != 1 || end_num != 1) { if (start_num != 1 || end_num != 1) {
this.$message({ this.$message({
message: "开始节点与结束节点均应有且只有一个", message: "开始节点与结束节点均应有且只有一个",
type: "warning" type: "warning",
}); });
return false;
} else if (start_before != 0) { } else if (start_before != 0) {
this.$message({ this.$message({
message: "开始节点前面不应连接其它节点", message: "开始节点前面不应连接其它节点",
type: "warning" type: "warning",
}); });
return false;
} else if (end_after != 0) { } else if (end_after != 0) {
this.$message({ this.$message({
message: "结束节点后面不应连接其它节点", message: "结束节点后面不应连接其它节点",
type: "warning" type: "warning",
}); });
return false;
} else if (in_edge != 0 || out_edge != 0) { } else if (in_edge != 0 || out_edge != 0) {
this.$message({ this.$message({
message: "请保证每个节点都被连接", message: "请保证每个节点都被连接",
type: "warning" type: "warning",
}); });
return false;
} else {
return datas;
} }
console.log(datas);
}, },
backToList() { backToList() {
this.$router.push("/message/directed_push"); this.$router.push("/message/directed_push");
...@@ -175,9 +217,8 @@ export default { ...@@ -175,9 +217,8 @@ export default {
this.$router.go(-1); this.$router.go(-1);
}, },
next() { next() {
this.$refs["basicInformation"].validate(valid => { this.$refs["basicInformation"].validate((valid) => {
if (valid) { if (valid) {
console.log("sss")
this.step++; this.step++;
} else { } else {
} }
...@@ -187,9 +228,32 @@ export default { ...@@ -187,9 +228,32 @@ export default {
this.step--; this.step--;
}, },
complete() { complete() {
this.verification(); let self = this;
} let res = self.verification();
} if (res) {
let query = {
name: self.basic_form.name,
workarea: self.basic_form.workplace,
describe: self.basic_form.desc,
...res,
};
this.$api.workbench.addProcess(query).then((response) => {
if (response.data.success == 1) {
}
});
}
},
getNameSpaceList() {
this.$api.workbench.getProcessNamespaceList().then((response) => {
if (response.data.success == 1) {
this.workplace_list = response.data.data.workareas;
}
});
},
},
mounted() {
this.getNameSpaceList();
},
}; };
</script> </script>
......
...@@ -57,6 +57,23 @@ const workbench = { ...@@ -57,6 +57,23 @@ const workbench = {
getServiceTopology() { getServiceTopology() {
return axios.get(`/apaas/istio/v3/api/namespaces/graph`) return axios.get(`/apaas/istio/v3/api/namespaces/graph`)
}, },
// add process
addProcess(params) {
return axios.post(`/apaas/serviceapp/v3/workflows/add`, params)
},
// edit process
editProcess(params) {
return axios.post(`/apaas/serviceapp/v3/workflows/update`, params)
},
// get process detail
getProcessDetail(params) {
return axios.get(`/apaas/serviceapp/v3/workflows/detail?id=${params.id}`)
},
// get process namespace list
getProcessNamespaceList() {
return axios.get(`/apaas/serviceapp/v3/workflows/searchConditions`)
},
} }
export default workbench; export default workbench;
...@@ -284,6 +284,11 @@ export default new Router({ ...@@ -284,6 +284,11 @@ export default new Router({
name: "process_design", name: "process_design",
component: () => import("@/pages/workbench/component-center/process-management/process-design/index"), component: () => import("@/pages/workbench/component-center/process-management/process-design/index"),
}, // 流程设计 }, // 流程设计
{
path: "/progress/designer/design_edit/:id",
name: "process_design_edit",
component: () => import("@/pages/workbench/component-center/process-management/process-design/edit"),
}, // 流程编辑
], ],
}, // 流程设计 }, // 流程设计
{ {
...@@ -445,6 +450,16 @@ export default new Router({ ...@@ -445,6 +450,16 @@ export default new Router({
name: "serviceControl", name: "serviceControl",
component: () => import("@/pages/data-analysis/service-control"), component: () => import("@/pages/data-analysis/service-control"),
}, },
{
path: "/data_analysis/super_service", // 数据分析中心服务-组织
name: "superServiceDataAnalysis",
component: () => import("@/pages/data-analysis/super-service"),
},
{
path: "/data_analysis/super_application", // 数据分析中心应用-组织
name: "superApplicationDataAnalysis",
component: () => import("@/pages/data-analysis/super-application"),
},
], ],
}, },
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment