Commit 10e7603c authored by 赵伟庚's avatar 赵伟庚

up 3.0,6

parent 25906d10
......@@ -51,7 +51,7 @@ pipeline:
base: hub.wodcloud.com/wod/ui-base:2.0-apaasv3
dockerfile: .beagle/dockerfile
repo: wod/apaas-ui
version: v3.0.5
version: v3.0.6
channel: alpha
args: "TARGETOS=linux,TARGETARCH=amd64" ## 不同架构的构建参数
registry: registry.cn-qingdao.aliyuncs.com
......@@ -70,8 +70,8 @@ pipeline:
dns: 223.5.5.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-alpha
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-alpha
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6
registry: registry.cn-qingdao.aliyuncs.com
secrets:
- source: REGISTRY_USER_ALIYUN
......@@ -88,7 +88,7 @@ pipeline:
dns: 223.5.5.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0
registry: registry.cn-qingdao.aliyuncs.com
secrets:
......@@ -108,7 +108,7 @@ pipeline:
base: hub.wodcloud.com/wod/ui-base:2.0-apaasv3-arm64
dockerfile: .beagle/dockerfile
repo: wod/apaas-ui
version: v3.0.5
version: v3.0.6
channel: alpha-arm64
args: "TARGETOS=linux,TARGETARCH=arm64"
registry: registry.cn-qingdao.aliyuncs.com
......@@ -127,8 +127,8 @@ pipeline:
dns: 223.5.5.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-alpha-arm64
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-arm64
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-alpha-arm64
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-arm64
registry: registry.cn-qingdao.aliyuncs.com
secrets:
- source: REGISTRY_USER_ALIYUN
......@@ -145,7 +145,7 @@ pipeline:
dns: 223.5.5.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-arm64
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-arm64
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0-arm64
registry: registry.cn-qingdao.aliyuncs.com
secrets:
......@@ -164,7 +164,7 @@ pipeline:
base: hub.wodcloud.com/wod/ui-base:2.0-apaasv3-ppc64le
dockerfile: .beagle/dockerfile
repo: wod/apaas-ui
version: v3.0.5
version: v3.0.6
channel: alpha-ppc64le
args: "TARGETOS=linux,TARGETARCH=ppc64le"
registry: registry.cn-qingdao.aliyuncs.com
......@@ -182,8 +182,8 @@ pipeline:
dns: 223.5.5.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-alpha-ppc64le
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-ppc64le
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-alpha-ppc64le
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-ppc64le
registry: registry.cn-qingdao.aliyuncs.com
secrets:
- source: REGISTRY_USER_ALIYUN
......@@ -199,7 +199,7 @@ pipeline:
dns: 223.5.5.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-ppc64le
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-ppc64le
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0-ppc64le
registry: registry.cn-qingdao.aliyuncs.com
secrets:
......@@ -218,7 +218,7 @@ pipeline:
base: hub.wodcloud.com/wod/ui-base:2.0-apaasv3-mips64le
dockerfile: .beagle/dockerfile
repo: wod/apaas-ui
version: v3.0.5
version: v3.0.6
channel: alpha-mips64le
args: "TARGETOS=linux,TARGETARCH=mips64le"
registry: registry.cn-qingdao.aliyuncs.com
......@@ -236,8 +236,8 @@ pipeline:
dns: 223.5.5.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-alpha-mips64le
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-mips64le
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-alpha-mips64le
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-mips64le
registry: registry.cn-qingdao.aliyuncs.com
secrets:
- source: REGISTRY_USER_ALIYUN
......@@ -253,7 +253,7 @@ pipeline:
dns: 223.5.5.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-mips64le
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-mips64le
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0-mips64le
registry: registry.cn-qingdao.aliyuncs.com
secrets:
......@@ -270,7 +270,7 @@ pipeline:
namespace: apaas-v3
deployment: apaas-ui
container: apaas-ui
registry: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.5-alpha
registry: registry.cn-qingdao.aliyuncs.com/wod/apaas-ui:v3.0.6-alpha
when:
branch:
- dev
......@@ -63,7 +63,7 @@
</el-tooltip>
</td>
<td>
务领域:
务领域:
<el-tooltip class="item" effect="dark" :content="baseInfo.fwly" placement="top-start">
<span>{{baseInfo.fwly}}</span>
......
......@@ -77,9 +77,9 @@ export default {
watch: {},
methods: {
goUrl(parame) {
if (this.url != "") {
this.$router.push(this.url + "/" + parame);
}
// if (this.url != "") {
// }
this.$router.push('/shop/yysdDetail/' + parame);
},
},
mounted() {},
......
<template>
<div class="com_cell">
<div class="com_cell_up" @click="goUrl(cellData.id)">
<div class="com_cell_up" @click="goUrl(cellData)">
<div class="com_cell_up_img_init">
<img :src="cellData.cover" class="com_cell_up_img" />
</div>
......@@ -69,9 +69,9 @@
<el-col
:span="10"
class="com_other1"
:title="`${cellData.data_service_type1 != 36 ? '务领域:' : '产品领域:'}${cellData.sectors_name}`"
:title="`${cellData.data_service_type1 != 36 ? '务领域:' : '产品领域:'}${cellData.sectors_name}`"
>
<span class="name_title">{{ cellData.data_service_type1 != 36 ? '务领域:' : '产品领域:' }}</span>
<span class="name_title">{{ cellData.data_service_type1 != 36 ? '务领域:' : '产品领域:' }}</span>
{{ cellData.sectors_name }}
</el-col>
<el-col
......@@ -119,9 +119,10 @@ export default {
watch: {},
methods: {
goUrl(parame) {
if (this.url != "") {
this.$router.push(this.url + "/" + parame);
}
// if (this.url != "") {
// this.$router.push(this.url + "/" + parame);
// }
this.$router.push("/shop/sjfwDetail/" + parame.id)
},
getTags(arr) {
if (arr && arr.length != 0) {
......@@ -132,7 +133,6 @@ export default {
}
},
},
mounted() {},
};
</script>
......
<template>
<div>
<div v-if="urlFilter == 'app'" ref="commodityList" class="commodity_card">
<commodity-card
v-for="item in datas"
:key="item.id"
:cellData="item"
:url="url"
></commodity-card>
</div>
<div v-else class="commodity_cell">
<commodity-cell
v-for="item in datas"
:cellData="item"
:url="url"
:key="item.id"
:urlFilter="urlFilter"
></commodity-cell>
</div>
</div>
</template>
<script>
import CommodityCell from "@/components/service-list/commodity-cell-new.vue";
import CommodityCard from "@/components/service-list/commodity-card-new.vue";
export default {
components: {
"commodity-cell": CommodityCell,
"commodity-card": CommodityCard,
},
props: {
datas: {
type: Array,
default: () => {
[];
},
},
total: {
type: Number,
default: 0,
},
url: { type: String, default: "" },
urlFilter: { type: String, default: "" },
},
data: () => ({
}),
computed: {},
methods: {
},
mounted() {},
watch: {
datas: {
handler(val) {},
},
url: {
handler() {
},
},
},
};
</script>
<style scoped>
.com-pagination {
margin-top: 20px;
font-size: 14px;
padding: 0 5%;
display: flex;
justify-content: space-between;
align-items: center;
}
.com_page_num {
width: 140px;
margin-right: 20px;
display: flex;
justify-content: space-around;
align-items: center;
}
.com_page_num_sel {
width: 50px;
font-size: 14px;
position: relative;
top: 1px;
}
.com_page_item {
display: flex;
justify-content: flex-end;
align-items: center;
}
.commodity_card {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.commodity_card_list {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.commodity_card_item {
margin: 10px 0;
}
.commodity_card_item_in {
margin: 0 auto;
}
.commodity_cell {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
</style>
<style>
.com_page_control .el-button {
border: 0;
}
.com_page_num .el-input__inner {
border: 0;
padding: 0;
}
</style>
\ No newline at end of file
<template>
<!--
name: page type
url: detail page url
urlFilter: get filter data from this url
author: dixin
This component only for service shop list, so the explanation only look by me
-->
<div>
<div class="head_flex">
<el-breadcrumb separator="/" class="bread_crumb1 bread_left">
<el-breadcrumb-item :to="{ path: '/shop' }">
{{ urlFilter == 'app' ? "服务超市" : "服务商店"}}
</el-breadcrumb-item>
<el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
</el-breadcrumb>
<div class="input_right">
<el-input
v-model="search"
prefix-icon="el-icon-search"
placeholder="请输入关键字搜索服务"
@input="searchVal"
></el-input>
</div>
</div>
<block-radius :borRadius="12" :paddingNum="0">
<!-- filter -->
<div v-if="urlFilter" class="classification">
<div
v-for="(item, index) in filterLists"
:key="'cd' + index"
class="classification_line"
>
<div
class="classification_line_if"
v-if="item.childDomains && item.childDomains.length != 0"
>
<div class="classification_line_title">{{ item.name }}<span class="maohao"></span></div>
<!-- <div
:class="
index == filterLists.length - 1
? 'classification_line_items'
: 'classification_line_items classification_line_items_border'
"
> -->
<div class="classification_line_items">
<div
:class="
openList[index] == 'up'
? 'classification_line_hid'
: 'classification_line_show'
"
>
<ul :id="item.id" class="classification_line_items_ul">
<li class="classification_line_items_li" :key="'cda' + index">
<div class="classification_span">
<span
@click="clickAll(index)"
:class="
activeOptions[index].length == 0
? 'classification_act'
: ''
"
>全部</span
>
</div>
</li>
<li
v-for="(items, indexs) in item.childDomains"
:class="
items.childDomains &&
openChildren[index].state == true &&
openChildren[index].index == items.id
? 'classification_line_items_li_act classification_line_items_li'
: 'classification_line_items_li'
"
:key="'cds' + indexs"
>
<div class="classification_span">
<span
@click="clickItem(index, indexs, items)"
:class="
activeOptions[index].indexOf(items.id) != -1
? 'classification_act'
: ''
"
>{{ items.name }}</span
>
<!-- if item have children, we will use an arrow to prompt -->
<i
v-if="
items.childDomains &&
openChildren[index].state == true &&
openChildren[index].index == items.id
"
@click="clickItemChild(index, indexs, items)"
class="el-icon-caret-top"
></i>
<i
v-else-if="
items.childDomains &&
openChildren[index].state == false &&
openChildren[index].index == items.id
"
@click="clickItemChild(index, indexs, items)"
class="el-icon-caret-bottom"
></i>
<i
v-else-if="items.childDomains"
@click="clickItemChild(index, indexs, items)"
class="el-icon-caret-bottom"
></i>
</div>
</li>
</ul>
<!-- if the word over the width, we will supply a button for show all word -->
<div
v-if="item.showOpen"
class="classification_line_items_open"
@click="clickOpen(index)"
>
<span v-if="openList[index] == 'down'">收起</span>
<span v-if="openList[index] == 'up'">更多</span>
<i
v-if="openList[index] == 'down'"
class="el-icon-caret-top"
></i>
<i
v-if="openList[index] == 'up'"
class="el-icon-caret-bottom"
></i>
</div>
</div>
<!-- filter children -->
<div v-if="openChildren[index].state">
<ul class="classification_children_ul">
<li
class="classification_children_li"
v-for="itemChildren in openChildren[index].act"
:key="itemChildren.id"
>
<div
class="classification_span"
@click="
clickChildren(
itemChildren.id,
index,
openChildren[index].index
)
"
>
<span
:class="
activeChildOptions[index].indexOf(itemChildren.id) !=
-1
? 'classification_act'
: ''
"
>{{ itemChildren.name }}</span
>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</block-radius>
<!-- filter button -->
<div class="btn_group">
<div
v-for="(item, index) in buttonFilter"
:key="item.name"
size="small"
:class="
index == activeBtn
? 'button_filter button_filter_act'
: 'button_filter'
"
@click="clickButtonFilter(index)"
>
{{ item.name }}
</div>
<div class="list_total">{{total}}条数据</div>
<!-- <div v-if="urlFilter == 'app'" class="btn_right_check">
<el-checkbox v-model="couldTwice" @change="changeTwice">
支持二次开发
</el-checkbox>
</div> -->
</div>
<!-- <div
class="gray_line"
v-if="
filterLists[0].childDomains.length != 0 ||
filterLists[1].childDomains.length != 0 ||
filterLists[2].childDomains.length != 0
"
></div> -->
<!-- the list -->
<div class="shop_list">
<commodity-list
ref="commodity_list"
:datas="lists && lists.length != 0 ? lists : []"
:url="url"
:urlFilter="urlFilter"
></commodity-list>
</div>
<div class="pagination_box">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="page"
:page-sizes="[10, 20, 50]"
:page-size="limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</template>
<script>
import CommodityList from "@/components/service-list/commodity-list_new.vue";
import BlockRadius from "@/components/general/block-radius";
export default {
components: {
"commodity-list": CommodityList,
BlockRadius,
},
props: {
urlFilter: {
type: String,
default: "",
},
url: { type: String, default: "" },
name: { type: String, default: "" },
filterNames: {
type: Array,
default: () => {
[];
},
},
},
data: () => ({
search: "",
openList: [0, 0, 0, 0],
openChildren: [
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
],
activeOptions: [[], [], [], []],
activeChildOptions: [[], [], [], []],
pageOptions: [
{
value: "10",
label: "10",
},
{
value: "20",
label: "20",
},
{
value: "50",
label: "50",
},
],
buttonFilter: [
{
name: "综合排序",
},
{
name: "最新更新",
},
{
name: "最高人气",
},
{
name: "最好评价",
},
],
activeBtn: 0,
lists: [],
total: 0,
filterLists: [
{
id: 110,
name: "",
prop: "",
childDomains: [],
},
{
id: 10,
name: "",
prop: "serviceTypeInfo",
childDomains: [],
},
{
id: 11,
name: "",
prop: "serviceDomain",
childDomains: [],
},
{
id: 100,
name: "",
prop: "organizations",
childDomains: [],
},
],
page: 1,
limit: 10,
couldTwice: false,
refresh_app_1: false,
refresh_app_2: false,
refresh_app_3: false,
time_app: null,
times: null,
isKaiGuan: true,
}),
mounted() {
window.addEventListener("resize", this.judgeHeight);
// window.addEventListener("scroll", this.menu, true);
},
destroyed() {
window.removeEventListener("resize", this.judgeHeight);
// window.removeEventListener("scroll", this.menu, true);
},
watch: {
urlFilter: {
handler(val) {
if (val) {
this.openChildren = [
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
];
this.activeOptions = [[], [], [], []];
this.activeChildOptions = [[], [], [], []];
if (val == "app") {
this.$set(this.filterLists, 0, {
id: 110,
name: "部署来源",
prop: "",
childDomains: [
{
id: 2,
name: "平台应用",
prop: "",
childDomains: null,
},
{
id: 1,
name: "开发者应用",
prop: "",
childDomains: null,
},
],
});
} else {
this.$set(this.filterLists, 0, {
id: 110,
name: "",
prop: "",
childDomains: [],
});
}
this.getShopFilter();
this.getShopList()
}
},
},
filterNames: {
handler(val) {
for (let i = 0; i < val.length; i++) {
this.filterLists[i + 1].name = val[i];
}
this.activeBtn = 0;
},
},
},
methods: {
// menu() {
// if (this.isKaiGuan) {
// let scroll =
// this.getScrollTop() + this.getWindowHeight() - this.getScrollHeight();
// if (scroll > -10) {
// if (
// (this.total != 0 && this.page * this.limit < this.total) ||
// this.total == 0
// ) {
// this.page++;
// this.getShopList();
// }
// }
// }
// },
//滚动条在Y轴上的滚动距离
handleSizeChange(val) {
this.limit = val;
this.page = 1
this.getShopList()
},
handleCurrentChange(val) {
this.page = val;
this.getShopList()
},
getScrollTop() {
var documentScrollTop = 0;
documentScrollTop = document.documentElement.scrollTop;
return documentScrollTop;
},
//文档的总高度
getScrollHeight() {
var documentScrollHeight = 0;
documentScrollHeight = document.documentElement.scrollHeight;
return documentScrollHeight;
},
//浏览器视口的高度
getWindowHeight() {
var windowHeight = 0;
windowHeight = document.documentElement.clientHeight;
return windowHeight;
},
getShopList() {
this.isKaiGuan = false;
if (this.urlFilter == "app") {
let query = {
online_state: this.activeOptions[0].join(","),
appTypes: this.activeOptions[1].join(","),
businessArea: this.activeOptions[2].join(","),
orgSource: this.activeOptions[3].join(","),
developable: Number(this.couldTwice),
order: this.activeBtn + 1,
page: this.page,
limit: this.limit,
search: this.search,
};
this.$api.serviceShop.getAppList(query).then((response) => {
if (response.data.success == "1") {
// this.lists =
// this.page == 1
// ? response.data.data
// : this.lists.concat(response.data.data);
this.lists = response.data.data
this.total = response.data.total;
this.isKaiGuan = true;
} else {
console.log(response.data.errMsg);
}
});
} else {
let query = {
serviceName: this.search,
serviceType1: this.urlFilter,
serviceType2s: this.activeOptions[1].join(","),
serviceType3s: this.activeChildOptions[1].join(","),
dataDomains: this.activeOptions[2].join(","),
organizeIds: this.activeOptions[3].join(","),
orderBy: this.activeBtn,
Page: this.page,
Size: this.limit,
};
this.$api.serviceShop.getServiceShopList(query).then((response) => {
if (response.data.success == "1") {
// this.lists =
// this.page == 1
// ? response.data.data
// : this.lists.concat(response.data.data);
this.lists = response.data.data
this.total = response.data.total;
this.isKaiGuan = true;
} else {
console.log(response.data.errMsg);
}
});
}
},
getShopFilter() {
if (this.urlFilter == "app") {
this.getAppArea();
this.getAppType();
this.getAppOrg();
this.time_app = setInterval(() => {
if (this.refresh_app_1 && this.refresh_app_2 && this.refresh_app_3) {
this.judgeHeight();
clearInterval(this.time_app);
}
}, 50);
} else {
let query = {
type: this.urlFilter,
};
this.$api.serviceShop.getServiceShopFilter(query).then((response) => {
if (response.data.success == 1) {
let data = response.data.data;
this.filterLists[1].childDomains = data.serviceTypeInfo
? data.serviceTypeInfo
: [];
this.filterLists[2].childDomains = data.serviceDomain
? data.serviceDomain
: [];
this.filterLists[3].childDomains = data.organizations
? data.organizations
: [];
if (this.urlFilter == "7") {
this.filterLists[1].childDomains = [];
}
setTimeout(() => {
this.judgeHeight();
}, 0);
} else {
console.log(response.data.errMsg);
}
});
}
},
judgeHeight() {
this.$nextTick(() => {
let list = this.filterLists;
for (let i = 0; i < list.length; i++) {
if (list[i].childDomains.length != 0) {
let offHeight = Math.ceil(
document.getElementById(list[i].id).offsetHeight
);
if (offHeight > 60) {
list[i].showOpen = true;
this.openList[i] = "up";
} else {
list[i].showOpen = false;
}
}
}
this.filterLists = [...list];
});
},
clickOpen(index) {
let list = this.openList;
if (list[index] == "up") {
this.$set(this.openList, index, "down");
} else if (list[index] == "down") {
this.$set(this.openList, index, "up");
}
// 这里不能像上面那样整体更新,因为啥我也不知道,我太菜
},
clickItem(index, indexs, items) {
let i = this.activeOptions[index].indexOf(items.id);
if (i == -1) {
this.activeOptions[index].push(items.id);
} else {
this.activeOptions[index].splice(i, 1);
if (items.childDomains) {
items.childDomains.forEach((e) => {
let i = this.activeChildOptions[index].indexOf(e.id);
if (i != -1) {
this.activeChildOptions[index].splice(i, 1);
}
});
}
}
this.getFilterValue();
},
clickItemChild(index, indexs, items) {
if (items.childDomains) {
if (this.openChildren[index].index == items.id) {
this.$set(this.openChildren, index, {
index: indexs,
state: !this.openChildren[index].state,
act: items.childDomains,
});
} else {
this.$set(this.openChildren, index, {
index: items.id,
state: true,
act: items.childDomains,
});
}
} else {
this.$set(this.openChildren, index, {
index: null,
state: false,
act: null,
});
}
},
clickButtonFilter(index) {
this.activeBtn = index;
this.page = 1;
this.getShopList();
},
clickChildren(id, index, fatherId) {
let i = this.activeChildOptions[index].indexOf(id);
let j = this.activeOptions[index].indexOf(fatherId);
if (i == -1) {
this.activeChildOptions[index].push(id);
if (j == -1) {
this.activeOptions[index].push(fatherId);
}
} else {
this.activeChildOptions[index].splice(i, 1);
}
this.getFilterValue();
},
getFilterValue() {
this.page = 1;
this.getShopList();
},
// search debonce 500ms
searchVal() {
if (this.times !== null) clearTimeout(this.times);
this.times = setTimeout(() => {
this.page = 1;
this.getShopList();
}, 500);
},
// getNewList(val) {
// console.log(val);
// this.page = 1;
// this.limit = 10;
// this.getShopList();
// },
clickAll(item) {
this.$set(this.activeOptions, item, []);
this.$set(this.activeChildOptions, item, []);
this.page = 1;
this.getShopList();
},
changeTwice() {
this.getShopList();
},
getAppArea() {
this.$api.serviceShop.getAppArea().then((response) => {
if (response.data.success == 1) {
this.filterLists[2].childDomains = response.data.data;
this.refresh_app_2 = true;
} else {
console.log(response.data.errMsg);
}
});
},
getAppType() {
this.$api.serviceShop.getAppType().then((response) => {
if (response.data.success == 1) {
this.filterLists[1].childDomains = response.data.data;
this.refresh_app_1 = true;
} else {
console.log(response.data.errMsg);
}
});
},
getAppOrg() {
this.$api.serviceShop.getAppOrg().then((response) => {
if (response.data.success == 1) {
this.filterLists[3].childDomains = response.data.data;
this.refresh_app_3 = true;
} else {
console.log(response.data.errMsg);
}
});
},
},
};
</script>
<style scoped>
.head_flex {
display: flex;
justify-content: space-between;
position: relative;
height: 40px;
top: -14px;
}
.bread_left {
width: 300px;
}
.input_right {
width: 360px;
position: relative;
height: 36px;
top: 6px;
}
.gray_line {
width: 100%;
margin: 20px auto;
height: 1px;
background-color: #e9ecf3;
}
.classification {
padding: 12px 16px 12px 32px;
}
.classification_line {
width: 100%;
}
.classification_line_if {
width: 100%;
display: flex;
align-items: flex-start;
}
.classification_line_title {
display: inline-block;
width: 90px;
padding: 12px 0;
text-align: left;
color: #8890a7;
font-size: 12px;
}
.classification_line_items {
width: calc(100% - 90px);
}
.classification_line_items_border {
border-bottom: 1px #e9ecf3 solid;
}
.classification_line_hid {
height: 40px;
width: 100%;
overflow: hidden;
display: inline-flex;
align-items: flex-start;
}
.classification_line_show {
width: 100%;
display: inline-flex;
align-items: flex-start;
}
.classification_line_items_ul {
display: inline-block;
width: calc(100% - 30px);
font-size: 0;
}
.classification_line_items_li {
display: inline-block;
padding: 12px 18px;
font-size: 12px;
}
.classification_line_items_li_act {
background-color: #fbfbfb;
border-left: 1px #e9ecf3 solid;
border-right: 1px #e9ecf3 solid;
}
.classification_span {
color: #58617a;
display: inline-block;
cursor: pointer;
}
.classification_act {
color: #fff;
position: relative;
z-index: 1;
}
.classification_act::after {
content: "";
position: absolute;
width: calc(100% + 16px);
height: calc(100% + 8px);
background-color: #3f4f9c;
border-radius: 3px;
top: -4px;
left: -8px;
z-index: -1;
}
.classification_line_items_open {
display: inline-block;
width: 60px;
padding: 12px 0;
cursor: pointer;
font-size: 12px;
text-align: right;
}
.classification_children_ul {
display: inline-block;
width: 100%;
background-color: #fbfbfb;
border-top: 1px #e9ecf3 solid;
}
.classification_children_li {
display: inline-block;
padding: 12px 18px;
color: #58617a;
}
.button_filter {
color: #8890a7;
font-size: 12px;
display: inline-block;
margin-right: 31px;
position: relative;
cursor: pointer;
}
.button_filter::after {
content: "";
width: 1px;
height: 16px;
background-color: #e3e5ef;
position: absolute;
right: -15px;
}
.button_filter:nth-child(4):after {
content: "";
width: 0;
}
.button_filter_act {
color: #515fe7;
}
.btn_group {
margin-top: 15px;
margin-bottom: 15px;
margin-left: 15px;
position: relative;
}
.list_total {
position: absolute;
right: 16px;
top: 0;
}
.btn_right_check {
position: absolute;
right: 20px;
top: 10px;
}
</style>
<style>
.head_flex .input_right .el-input__inner {
border-radius: 6px;
border: solid 1px #e7eaf6;
}
.head_flex .input_right .el-input--prefix .el-input__inner {
padding-left: 40px;
}
.head_flex .input_right .el-input__prefix{
left: 10px;
}
.head_flex .input_right .el-input--prefix .el-input__inner {
outline: none;
}
.head_flex .input_right .el-input__inner:focus-within {
border: 1px solid #626de9;
}
.head_flex .btn_right_check .el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #626de9;
border-color: #626de9;
}
.head_flex
.btn_right_check
.el-checkbox__input.is-checked
+ .el-checkbox__label {
color: #626de9;
}
.head_flex .btn_right_check .el-checkbox__input.is-focus .el-checkbox__inner {
border-color: #626de9;
}
</style>
<style scoped>
.shop_list {
margin-bottom: 40px;
}
.pagination_box {
width: 1008px;
height: 50px;
position: fixed;
bottom: 0;
background-color: #f6f7fb;
text-align: center;
line-height: 50px;
}
.pagination_box /deep/.el-pagination>.btn-prev,
.pagination_box /deep/.el-pagination>.btn-next,
.pagination_box /deep/.el-pagination>.el-pager>li {
background-color: transparent!important;
}
</style>
<template>
<div class="service_shop_menu">
<ul class="service_shop_menu_list">
<li v-for="(item, index) in menuList" :key="index" @click="active(item)">
<!-- <img
v-if="item.visit_url == actives"
:src="item.active != '' ? require('@/assets/imgs/' + item.active + '.png') : ''"
class="menu_img"
/>
<img v-else :src="require('@/assets/imgs/' + item.default + '.png')" class="menu_img" /> -->
<span
:class="item.id == currentId ? 'menu_item_active':'menu_item'"
>{{ item.name }}</span>
</li>
</ul>
</div>
</template>
<script>
export default {
props: {},
data() {
return {
};
},
computed: {
// getActive() {
// return this.$store.state.serviceShopMenu;
// },
},
watch: {
// getActive(newVal) {
// this.getActiveMenu(newVal);
// },
},
props: {
menuList: {
type: Array,
default: []
},
currentId: {
type: [Number,String],
default: null
}
},
mounted() {
// this.getShopMenu();
// this.$store.commit("serviceShopMenuAct", this.$route.path);
// this.actives = this.$store.state.serviceShopMenu;
},
methods: {
active(val) {
this.$store.commit("serviceShopMenuAct", val.id);
// this.$router.push(val);
if (val.id == 'cloud') {
// this.$router.push(val.url)
}else {
// this.$router.push(`/shop/data_service_list/${val.id}`)
}
this.$emit("changeActive",val)
},
// getActiveMenu(val) {
// this.actives = val;
// console.log(this.actives)
// },
getShopMenu() {
this.$api.workbench.getServiceTypeList().then(response => {
if (response.data.success == 1) {
let arr = response.data.data;
this.menuList = arr;
this.actives = arr[0].id
this.menuList.push(...this.otherlist)
} else {
console.log(response.data.errMsg);
}
});
},
},
};
</script>
<style scoped>
.service_shop_menu {
background-color: #0d1847;
position: fixed;
top: 76px;
left: calc(50% - 600px);
width: 176px;
padding: 8px;
background-color: #ffffff;
box-shadow: 0px 3px 6px 0px
rgba(15, 19, 65, 0.04);
border-radius: 8px;
}
.service_shop_menu_list > li {
box-sizing: border-box;
height: 40px;
padding: 8px 0 0 22px;
margin-bottom: 16px;
font-size: 15px;
line-height: 24px;
cursor: pointer;
}
.service_shop_menu_list > li:nth-last-child(1) {
margin-bottom: 0;
}
.service_shop_menu_list > li:hover,
.service_shop_menu_list > li.current {
background-color: rgba(242, 246, 253, 0.4);
color: #515fe7;
}
.menu_img {
/* width: 24px; */
margin-right: 6px;
}
.menu_item {
position: relative;
font-weight: bold;
font-size: 15px;
color: #96a0c5;
top: -6px;
}
.menu_item_active {
position: relative;
font-weight: bold;
font-size: 15px;
color: #515fe7;
top: -6px;
}
</style>
......@@ -132,6 +132,27 @@
@click="deleteLocal(scope)"
>{{ btn.label }}</em>
<em
class="cur_pointer"
v-else-if="btn.disflag && !btn.select"
:class="btn.disabledRule(scope.row) ? btn.type : 'disabled_btn ' + btn.type"
:style="{
color: btn.label == '删除' ? '#830f53' : '#0f2683',
}"
@click="handleClick(btn.type, scope.row)"
>{{ btn.label }}</em>
<em
class="cur_pointer"
v-else-if="btn.disflag && btn.select"
:class="btn.disabledRule(scope.row) ? btn.type : 'disabled_btn ' + btn.type"
:style="{
color: btn.label == '删除' ? '#830f53' : '#0f2683',
}"
v-show="btn.disabledRule(scope.row)"
@click="handleClick(btn.type, scope.row)"
>{{ btn.label }}</em>
<em
class="cur_pointer"
v-else
......@@ -142,7 +163,8 @@
@click="handleClick(btn.type, scope.row)"
>{{ btn.label }}</em>
<em v-if="btn.line" style="padding:0 20px;color:#edf0ff">{{ btn.line }}</em>
<em v-if="btn.line && !btn.select" style="padding:0 20px;color:#edf0ff">{{ btn.line }}</em>
<em v-if="btn.line && btn.select && btn.disabledRule(scope.row)" style="padding:0 20px;color:#edf0ff">{{ btn.line }}</em>
</b>
</span>
<!--href 链接-->
......
......@@ -4,7 +4,7 @@
<div class="legend">
<div class="legend_title">拓扑图图例</div>
<div class="legend_inner">
<div class="legend_in_tit">服务类型</div>
<div class="legend_in_tit">服务分类</div>
<div id="nodes" ref="legendNodes" class="legend_nodes"></div>
<div class="legend_in_tit">调用状态</div>
<div id="edges" ref="legendEdges" class="legend_edges"></div>
......
......@@ -63,8 +63,8 @@ export default {
filtdata: [],
filter_name_arr: {
organizations: "数据来源机构",
serviceDomain: "数据领域",
serviceTypeInfo: "数据服务类型",
serviceDomain: "业务领域",
serviceTypeInfo: "服务类型",
},
select_able_arr: [],
selected_arr: [],
......@@ -166,22 +166,22 @@ export default {
var temp = 21
this.filter_name_arr = {
organizations: "服务来源组织",
serviceDomain: "务领域",
serviceDomain: "务领域",
serviceTypeInfo: "服务类型",
}
}else if(this.$route.query.ad_type == 'hotdata'){
var temp = 5
this.filter_name_arr = {
organizations: "数据来源机构",
serviceDomain: "数据领域",
serviceTypeInfo: "数据服务类型",
serviceDomain: "业务领域",
serviceTypeInfo: "服务类型",
}
}else{
var temp = 6
this.filter_name_arr = {
organizations: "服务来源组织",
serviceDomain: "务领域",
serviceTypeInfo: "时空服务类型",
serviceDomain: "务领域",
serviceTypeInfo: "服务类型",
}
}
this.$http
......
......@@ -12,7 +12,7 @@
</template>
<script>
import ServiceShopMenu from "@/components/service-list/service_shop_menu-new";
import ServiceShopMenu from "@/components/service-list/service_shop_menu_new";
import ShopCloud from "@/components/shop-cloud/shop-cloud-new";
export default {
components: {
......
<template>
<div class="shop_list_cont">
<el-container>
<el-aside width="176px">
<service-shop-menu @changeActive="changeActive" :menuList="menuList" :currentId="currentId"></service-shop-menu>
</el-aside>
<el-main class="main_init">
<!-- <service-list
:filterNames="filterNames"
:name="name"
:url="url"
:urlFilter="urlFilter"
></service-list> -->
<service-list
:filterNames="filterNames"
:name="name"
:urlFilter="urlFilter"
v-show="showFlag"
></service-list>
<shop-cloud v-show="!showFlag" name="云资源服务"></shop-cloud>
</el-main>
</el-container>
</div>
</template>
<script>
import ServiceShopMenu from "@/components/service-list/service_shop_menu_new";
import ServiceList from "@/components/service-list/service_list_new";
import BlockRadius from "@/components/general/block-radius";
import ShopCloud from "@/components/shop-cloud/shop-cloud-new";
export default {
components: {
ServiceShopMenu,
ServiceList,
BlockRadius,
ShopCloud
},
data: () => ({
urlFilter: "",
url: "",
name: "",
filterNames: [],
currentId: null,
menuList: [],
otherlist: [
{
id: 'app',
name: "应用商店",
},
{
id: "cloud",
name: "云资源服务",
}
],
showFlag: true
}),
mounted() {
// this.getVal(this.$route.query);
this.getShopMenu()
},
methods: {
getVal(val) {
console.log(val,'========')
if (val.indexOf('app') > -1) {
let obj = {
id: 'app',
name: "应用商店",
}
this.changeActive(obj)
}else if (val.indexOf('cloud') > -1) {
let obj = {
id: "cloud",
name: "云资源服务",
}
this.changeActive(obj)
}else {
this.changeActive(this.menuList[0])
}
},
getShopMenu() {
let obj = {}
this.$api.workbench.getServiceTypeList().then(response => {
if (response.data.success == 1) {
let arr = response.data.data;
obj = arr[0] || {}
this.menuList = arr;
this.menuList.push(...this.otherlist)
if (this.$route.params.id) {
this.currentId = this.$route.params.id
if (this.$route.params.id == 'app') {
this.showFlag = true
this.name = '应用商店'
this.urlFilter = this.$route.params.id.toString()
this.filterNames = ["应用类型", "应用领域", "应用来源机构"];
}else if(this.$route.params.id == 'cloud') {
this.showFlag = false
}
}else {
this.currentId = obj.id
this.name = obj.name
this.urlFilter = obj.id.toString()
if (obj.id != 'app' && obj.id != 'cloud') {
this.filterNames = ["服务类型", "业务领域", "服务来源组织"]
}else {
if (obj.id == 'app') {
this.filterNames = ["应用类型", "应用领域", "应用来源机构"];
}
}
}
} else {
console.log(response.data.errMsg);
}
});
},
changeActive(item) {
this.currentId = item.id
if (item.id !='cloud') {
if (item.id != 'app') {
this.$router.push('/shop/data_service_list')
}
this.showFlag = true
this.name = item.name
this.urlFilter = item.id.toString()
if (item.id != 'app') {
this.filterNames = ["服务类型", "业务领域", "服务来源组织"]
}else {
this.filterNames = ["应用类型", "应用领域", "应用来源机构"];
}
}else {
this.showFlag = false
}
console.log(this.showFlag)
}
},
watch: {
"$route.path": {
handler(val) {
this.getVal(val);
},
},
},
};
</script>
<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;
.default_title {
color: #264dd9;
font-size: 44px;
font-weight: bold;
margin-bottom: 30px;
}
.default_msg {
color: #58617a;
font-size: 24px;
line-height: 44px;
}
}
}
</style>
<style scoped>
.default_img {
background: url("~@/assets/imgs/img_default_quesheng.png") no-repeat center
center;
}
.shop_list_cont {
width: 1200px;
margin: 0 auto;
position: relative;
}
.main_init {
padding: 16px 0 16px 16px;
}
</style>
\ No newline at end of file
......@@ -3,8 +3,8 @@
<div class="apass_breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item to="/shop">服务超市</el-breadcrumb-item>
<el-breadcrumb-item to="/shop/data_service_list/5">
数据服务
<el-breadcrumb-item to="/shop/data_service_list">
{{ typeName }}
</el-breadcrumb-item>
<el-breadcrumb-item>服务详情信息</el-breadcrumb-item>
</el-breadcrumb>
......@@ -36,6 +36,7 @@ export default {
detailData: [],
providerData: null,
commentsData: null,
typeName: ""
}),
computed: {
id() {
......@@ -59,7 +60,8 @@ export default {
service_id: this.id,
app_id: 0,
name: datas.name,
// type: "",
type:datas.data_service_type2_name=="流程类"?"workflow":"",
workflows_id:datas.data_service_type2_name=="流程类"?datas.workflows_id:"",
openness: datas.openness,
view_count: datas.view_count,
apply_count: datas.apply_count,
......@@ -80,7 +82,7 @@ export default {
user_name: datas.register_user_info.user_name,
phone: datas.register_user_info.phone,
};
this.detailData = [
{
name: "获取流程",
......@@ -185,6 +187,11 @@ export default {
},
},
];
this.typeName = datas.data_service_type1_name
let template = [2,3,4,5,8,9,10,11]
if (template.indexOf(datas.serv_template) > -1 ) {
this.detailData = this.detailData.slice(0,1)
}
let arr1 = datas.serviceRequestSpcs.spcs_type_1 || [];
let arr2 = datas.serviceRequestSpcs.spcs_type_2 || [];
let arr = arr1.concat(arr2);
......
......@@ -57,7 +57,7 @@
></el-input>
</el-form-item>
<el-form-item prop="area">
<p class="formname">务领域:</p>
<p class="formname">务领域:</p>
<el-select
v-model="form.area"
placeholder="请选择"
......@@ -294,7 +294,7 @@ export default {
}
],
area: [
{ required: true, message: "请选择务领域", trigger: "change" }
{ required: true, message: "请选择务领域", trigger: "change" }
],
origin: [
{ required: true, message: "请选择所属组织", trigger: "blur" }
......@@ -322,7 +322,7 @@ export default {
trigger: "blur"
}
],
area: [{ required: true, message: "请选择务领域", trigger: "blur" }],
area: [{ required: true, message: "请选择务领域", trigger: "blur" }],
origin: [
{ required: true, message: "请选择所属组织", trigger: "blur" }
],
......
......@@ -549,7 +549,7 @@ export default {
name: "",
first: [
{
name: "服务类型",
name: "服务分类",
text: "",
},
{
......@@ -581,7 +581,7 @@ export default {
info: "",
},
{
title: "务领域:",
title: "务领域:",
info: "",
},
{
......
......@@ -206,11 +206,11 @@ export default {
name: "",
first: [
{
name: "服务类型",
name: "服务分类",
text: ""
},
{
name: "务领域",
name: "务领域",
text: ""
},
{
......
......@@ -227,7 +227,7 @@ export default {
callback: this.detailItem,
},
{
label: "所属领域",
label: "业务领域",
prop: "sectors_name",
align: "center",
},
......@@ -251,7 +251,7 @@ export default {
align: "center",
},
{
label: "所属类型",
label: "服务分类",
prop: "data_service_type1_name",
align: "center",
},
......@@ -351,7 +351,7 @@ export default {
callback: this.detailItem,
},
{
label: "所属领域",
label: "业务领域",
prop: "sectors_name",
align: "center",
},
......@@ -378,7 +378,7 @@ export default {
align: "center",
},
{
label: "所属类型",
label: "服务分类",
prop: "data_service_type1_name",
align: "center",
},
......@@ -611,7 +611,7 @@ export default {
callback: this.detailItem,
},
{
label: "所属领域",
label: "业务领域",
prop: "sectors_name",
align: "center",
},
......@@ -643,7 +643,7 @@ export default {
align: "center",
},
{
label: "所属类型",
label: "服务分类",
prop: "data_service_type1_name",
align: "center",
},
......@@ -711,7 +711,7 @@ export default {
prop: "name",
},
{
label: "所属领域",
label: "业务领域",
prop: "sectors_name",
align: "center",
},
......@@ -750,7 +750,7 @@ export default {
align: "center",
},
{
label: "所属类型",
label: "服务分类",
prop: "data_service_type1_name",
align: "center",
},
......@@ -1014,7 +1014,7 @@ export default {
callback: this.detailItem,
},
{
label: "所属领域",
label: "业务领域",
prop: "sectors_name",
align: "center",
},
......@@ -1046,7 +1046,7 @@ export default {
align: "center",
},
{
label: "所属类型",
label: "服务分类",
prop: "data_service_type1_name",
align: "center",
},
......@@ -1126,7 +1126,7 @@ export default {
prop: "name",
},
{
label: "所属领域",
label: "业务领域",
prop: "sectors_name",
align: "center",
},
......@@ -1165,7 +1165,7 @@ export default {
align: "center",
},
{
label: "所属类型",
label: "服务分类",
prop: "data_service_type1_name",
align: "center",
},
......
......@@ -791,7 +791,7 @@ export default {
name: "",
first: [
{
name: "服务类型",
name: "服务分类",
text: "",
},
{
......@@ -1216,7 +1216,7 @@ export default {
info: "",
},
{
title: "务领域:",
title: "务领域:",
info: "",
},
{
......
......@@ -23,7 +23,7 @@
<el-input type="textarea" v-model="form.desc"></el-input>
</el-form-item>
<el-form-item prop="area">
<p class="formname">务领域:</p>
<p class="formname">务领域:</p>
<el-select v-model="form.area" placeholder="请选择">
<el-option
v-for="item in area_arr"
......@@ -209,7 +209,7 @@ export default {
{ max: 200, message: '长度小于200个字符', trigger: 'blur' }
],
area:[
{ required: true, message: '请选择务领域', trigger: 'change' },
{ required: true, message: '请选择务领域', trigger: 'change' },
],
resource:[
{ required: true, message: '请选择开放程度', trigger: 'change' },
......
<!--
serviceTemplate: 服务注册模版,请参考pages/workbench/product-type/class_edit.vue
-->
<template>
<div class="fwcs">
<!-- 面包屑--智能制图 -->
<el-breadcrumb
v-if="is_map != 0"
separator="/"
class="bread_crumb"
>
<el-breadcrumb-item :to="{ path: '/workplace' }">
在线组件工具
</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/intelligent_drawing' }">
智能制图
</el-breadcrumb-item>
<el-breadcrumb-item>发布信息填写</el-breadcrumb-item>
</el-breadcrumb>
<!-- 面包屑--流程设计 -->
<el-breadcrumb
v-else-if="process_id != ''"
separator="/"
class="bread_crumb"
>
<el-breadcrumb-item :to="{ path: '/workplace' }">
在线组件工具
</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/progress/designer' }">
流程设计
</el-breadcrumb-item>
<el-breadcrumb-item>发布信息填写</el-breadcrumb-item>
</el-breadcrumb>
<!-- 面包屑--服务注册 -->
<el-breadcrumb
v-else
separator="/"
class="bread_crumb"
>
<el-breadcrumb-item :to="{ path: '/fwzc' }">服务注册</el-breadcrumb-item>
<el-breadcrumb-item v-if="!jcxxtx">服务测试</el-breadcrumb-item>
<el-breadcrumb-item
v-else
:to="{ path: '/fwzc' }"
>服务测试</el-breadcrumb-item>
<el-breadcrumb-item v-if="jcxxtx">基础信息填写</el-breadcrumb-item>
</el-breadcrumb>
<!-- 基础信息填写 -->
<div v-if="!jcxxtx">
<block-radius>
<!-- 服务分类 -->
<el-row>
<el-button
v-for="(item, index) in btnList"
:key="item.id"
@click="clickBtn(index,item)"
:class="activeBtn == index ? 'fwcs_btn_act' : 'fwcs_btn_dis'"
>
{{ item.name }}
</el-button>
</el-row>
<div class="gray_line"></div>
<!-- 接口协议 https || grpc || websocket -->
<div class="fwcs_fwdz" v-if="process_id == '' && is_map == 0">
接口协议:
</div>
<el-radio-group
v-model="jkxy"
class="jkxy"
@change="test"
v-if="process_id == '' && is_map == 0"
>
<el-radio v-for="(e,i) in jkxyList" :key="'xy' + i" :label="e.value">{{e.label}}</el-radio>
</el-radio-group>
<!-- 服务类型 -->
<div v-if="currentClass && currentClass.childDomains && currentClass.childDomains.length > 0">
<div class="sqxx_title">服务类型:</div>
<el-select
@change="changeZhType"
v-model="zhyyVal"
placeholder="请选择"
class="zhyy_select"
>
<el-option
v-for="item in currentClass.childDomains"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</div>
<!-- 综合服务-流程服务的模版 模版10 -->
<div
v-if="serviceTemplate == 10"
class="lc_alert"
>
<i class="el-icon-warning-outline"></i>
<p>
说明:支持多个流程服务接口的注册,若流程服务包含多个接口,每个接口需分别注册为独立的服务地址才可使用。<br />
示例:http(s)://www.apaas.com(自有域名)/xxx,其中xxx为该流程服务的不同接口后缀,需分别进行单个接口的注册。<br />
比如:服务地址1:http(s)://www.apaas.com(自有域名)/create(用于新建流程实例)
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;服务地址2:http(s)://www.apaas.com(自有域名)/query
(用于查询流程状态)
</p>
</div>
<!-- 模版6 7 8 9 11 -->
<div v-show="
serviceTemplate == 6 ||
serviceTemplate == 7 ||
serviceTemplate == 8 ||
serviceTemplate == 9 ||
serviceTemplate == 10 ||
serviceTemplate == 11 ||
jkxy !== 1
">
<div class="fwcs_fwdz">
上传接口文档
<span class="title_bc">(请上传所有服务地址完整接口文档)</span>
</div>
<upload-file
:multiple="false"
:unique="false"
:max="1"
type="zip"
:readOnly="false"
:drag="true"
@getNewList="getNewListOne"
class="lc_upf"
up_fz="支持.pdf,.docx,.doc,.zip,.rar 格式文件"
accepts=".pdf, .docx, .doc, .zip, .rar"
:list="jkwds"
></upload-file>
</div>
<!-- 模版7 -->
<div v-if="serviceTemplate == 7">
<div class="fwcs_fwdz">返回数据格式</div>
<el-radio-group
v-model="gz_fhsjgs"
class="gz_fhsjgs_rad"
>
<el-radio label="JSON">JSON</el-radio>
<el-radio label="xml">XML</el-radio>
</el-radio-group>
</div>
<!-- 服务地址 除流程类模版 -->
<div v-if="serviceTemplate != 10">
<div
class="fwcs_fwdz"
>
服务地址:
</div>
<div
class="fwcs_fwdz_inner"
>
<el-input
placeholder="请输入内容"
@input="getUrl"
v-model="serviceUrl"
class="input-with-select"
>
<el-select
v-if="serviceTemplate == 2 || serviceTemplate == 3 || serviceTemplate == 4 || serviceTemplate == 5"
v-model="select"
slot="prepend"
placeholder="请选择"
>
<!-- 模版2 3 4 5 -->
<el-option
v-for="item in optionType1"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<!-- 模版6 7 -->
<el-select
v-else-if="serviceTemplate == 6 || serviceTemplate == 7"
v-model="select"
slot="prepend"
placeholder="请选择"
>
<el-option
v-for="item in optionType2"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<!-- -->
<el-select
v-else
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-select>
</el-input>
<el-button
@click="clickFwcs()"
class="fwcs_btn_fwcs"
>
服务测试
</el-button>
</div>
</div>
<!-- grpc -->
<div
v-if="jkxy == 2"
class="fwcs_fwdz"
>
IP+端口号:
</div>
<div
v-if="jkxy == 2"
class="fwcs_fwdz_inner"
>
<el-input
placeholder="请输入内容"
@input="getUrl"
v-model="serviceUrl"
class="input-with-select"
>
</el-input>
<el-button
@click="clickFwcs()"
class="fwcs_btn_fwcs"
>
服务测试
</el-button>
</div>
<!-- websocket -->
<div
v-if="jkxy == 3"
class="fwcs_fwdz"
>
服务地址:
</div>
<div
v-if="jkxy == 3"
class="fwcs_fwdz_inner"
>
<el-input
placeholder="请输入内容"
@input="getUrl"
v-model="serviceUrl"
class="input-with-select"
>
</el-input>
<el-button
@click="clickFwcs()"
class="fwcs_btn_fwcs"
>
服务测试
</el-button>
</div>
<!-- 模版1 6 7的请求参数 -->
<div v-if="(serviceTemplate == 1 || serviceTemplate == 6 || serviceTemplate == 7) && jkxy == 1">
<el-tabs
v-model="activeName"
class="fwcs_tabs"
@tab-click="clickTab"
>
<el-tab-pane
label="请求参数"
name="0"
>
<ces-table
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"
></ces-table>
</el-tab-pane>
<el-tab-pane
label="请求体"
name="1"
>
<div class="sjfw_qqt">
<el-radio-group v-model="sjfwQqt">
<el-radio label="JSON">JSON</el-radio>
</el-radio-group>
</div>
<v-apaas-code
:key="'code' + code_1_index"
ref="jsonCodes"
></v-apaas-code>
</el-tab-pane>
<el-tab-pane
label="授权信息"
name="2"
>
<el-row class="sqxx_row">
<el-col :span="8">
<div class="sqxx_title">授权方式:</div>
<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-select>
<div
class="registration"
style="width: 100%"
>
<p>注册说明:</p>
<p>1、服务提供方按需填写服务的地址、请求参数和返回参数进行正常注册。</p>
<p>2、服务被调用时,平台会提供一个动态token,由服务提供方访问身份认证地址,进行认证。由平台返回身份认证结果,由服务提供方依据结果判断是否可以提供服务。</p>
<p>3、详细流程和接口说明,请点击下载 <a
:href="fwdesc"
download
>服务注册说明</a></p>
</div>
</el-col>
<el-col
:span="2"
class="center_line_c"
>
<div class="center_line"></div>
</el-col>
<el-col :span="14">
<div v-if="sqfsVal==1||sqfsVal==3">
<div class="sqxx_title">Token名称:</div>
<el-input
v-model="tokenName"
placeholder="请输入token名称"
></el-input>
<div class="sqxx_title">Token值:</div>
<el-input
v-model="tokenVal"
placeholder="请输入Token值"
></el-input>
</div>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane
label="请求头Header"
name="3"
>
<ces-table
ref="fwcs_zhfw_qqtcs"
size="mini"
:border="true"
:headers="sjfwQqtcs"
url
:datas="datasQqu"
: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"
></ces-table>
</el-tab-pane>
</el-tabs>
</div>
<!-- 模版8 9请求参数 -->
<div v-if="(serviceTemplate == 8 || serviceTemplate == 9) && jkxy == 1">
<el-tabs
v-model="activeZh"
class="fwcs_tabs"
@tab-click="clickTab"
>
<el-tab-pane
label="请求参数"
name="0"
>
<ces-table
ref="fwcs_zhfw_qq"
size="mini"
:border="true"
:headers="sjfwQqcs"
url
:datas="datasZh"
: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"
></ces-table>
</el-tab-pane>
<el-tab-pane
label="请求体"
name="1"
>
<div class="sjfw_qqt">
<el-radio-group
v-model="zhfwQqt"
@change="changeZhfwQqt"
>
<el-radio label="JSON">JSON</el-radio>
<el-radio label="form-data">form-data</el-radio>
<el-radio label="x-www-form-urlencoded">x-www-form-urlencoded</el-radio>
</el-radio-group>
</div>
<div v-show="zhfwQqt == 'JSON'">
<v-apaas-code
:key="'code' + code_2_index"
ref="zhfwJsonCodes"
></v-apaas-code>
</div>
<div v-show="zhfwQqt == 'form-data'">
<ces-table
ref="fwcs_zhfw_qq_form"
size="mini"
:border="true"
:headers="zhfwQqcsForm"
url
:datas="datasZhForm"
: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"
@primary-del="delItemQq"
></ces-table>
</div>
<div v-show="zhfwQqt == 'x-www-form-urlencoded'">
<ces-table
ref="fwcs_zhfw_www"
size="mini"
:border="true"
:headers="sjfwQqcs"
url
:datas="datasZhwww"
: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"
></ces-table>
</div>
</el-tab-pane>
<el-tab-pane
label="请求头Header"
name="2"
>
<ces-table
ref="fwcs_zhfw_qqtcs"
size="mini"
:border="true"
:headers="sjfwQqtcs"
url
:datas="datasQqu"
: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"
></ces-table>
</el-tab-pane>
</el-tabs>
</div>
</block-radius>
<!-- 请求结果 -->
<block-radius v-show="resultShow">
<div v-show="
(serviceTemplate == 1 || serviceTemplate == 7 || serviceTemplate == 8 || serviceTemplate == 9) &&
resSuccess
">
<div class="sjfw_qqcstx">请求参数信息填写:</div>
<ces-table
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"
></ces-table>
<div class="sjfw_fhcstx">返回参数信息填写:</div>
<ces-table
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"
></ces-table>
</div>
<div v-show="
(serviceTemplate == 2 || serviceTemplate == 3 || serviceTemplate == 4 || serviceTemplate == 5 ||
serviceTemplate == 6||
serviceTemplate == 11) &&
resSuccess
">
<div class="skfw_csfwxx">测试服务信息:</div>
<div class="test_succ">
<div class="skcs_jg">
<img
src="@/assets/imgs/test_icon_success.png"
class="skcs_jg_img"
/>&nbsp;测试成功
</div>
</div>
</div>
<div v-show="
!resSuccess
">
<div class="skfw_csfwxx">测试服务信息:</div>
<div class="test_succ">
<div class="skcs_jg">
<img
src="@/assets/imgs/test_icon_error.png"
class="skcs_jg_img"
/>&nbsp;测试失败
</div>
</div>
</div>
<div class="btn_footer">
<el-button
class="reset"
v-if="serviceTemplate == 1 && resSuccess"
@click="resetSjfw"
>
重置
</el-button>
<el-button
:disabled="!resSuccess"
:class="resSuccess ? 'next' : ''"
@click="nextJcxx"
>
下一步
</el-button>
</div>
</block-radius>
<div v-if="serviceTemplate == 10">
<!-- 综合服务流程类 -->
<block-radius
v-for="(itemOne, indexOne) in liucheng_list"
:key="`liucheng_${indexOne}`"
>
<div class="one_service">
<div class="one_name">服务接口名称:</div>
<div class="one_name_in">
<el-form
:model="itemOne"
:rules="rulesOne"
:ref="`ruleFormOne_${indexOne}`"
>
<el-form-item prop="one_input">
<el-input
v-model="itemOne.one_input"
placeholder="请输入内容"
>
</el-input>
</el-form-item>
</el-form>
</div>
<div class="one_url">服务地址{{ indexOne + 1 }}</div>
<div class="fwcs_fwdz_inner">
<el-input
placeholder="请输入内容"
@input="
(val) => {
getUrlOne(val, indexOne);
}
"
v-model="itemOne.serviceUrl"
class="input-with-select"
>
<el-select
v-model="itemOne.select"
slot="prepend"
placeholder="请选择"
>
<el-option
v-for="item in optionType"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-input>
<el-button
@click="clickFwcsOne(indexOne)"
class="fwcs_btn_fwcs"
>服务测试</el-button>
</div>
<el-tabs
v-model="itemOne.activeName"
class="fwcs_tabs"
@tab-click="clickTabOne"
>
<el-tab-pane
label="请求参数"
name="0"
>
<ces-table
:ref="`one_qqcs_${indexOne}`"
size="mini"
:border="true"
:headers="sjfwQqcs"
url
:datas="itemOne.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="
(val) => {
changeTableOne(val, indexOne);
}
"
></ces-table>
</el-tab-pane>
<el-tab-pane
label="请求体"
name="1"
>
<div class="sjfw_qqt">
<el-radio-group v-model="itemOne.sjfwQqt">
<el-radio label="JSON">JSON</el-radio>
</el-radio-group>
</div>
<v-apaas-code
:key="'code' + indexOne"
:ref="`one_json_${indexOne}`"
></v-apaas-code>
</el-tab-pane>
<el-tab-pane
label="授权信息"
name="2"
>
<el-row class="sqxx_row">
<el-col :span="8">
<div class="sqxx_title">授权方式:</div>
<el-select
v-model="itemOne.sqfsVal"
placeholder="请选择"
class="sqxx_select"
>
<el-option
v-for="item in optionsSq"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<div
class="registration"
style="width: 100%"
>
<p>注册说明:</p>
<p>1、服务提供方按需填写服务的地址、请求参数和返回参数进行正常注册。</p>
<p>2、服务被调用时,平台会提供一个动态token,由服务提供方访问身份认证地址,进行认证。由平台返回身份认证结果,由服务提供方依据结果判断是否可以提供服务。</p>
<p>3、详细流程和接口说明,请点击下载 <a
:href="fwdesc"
download
>服务注册说明</a></p>
</div>
</el-col>
<el-col
:span="2"
class="center_line_c"
>
<div class="center_line_one"></div>
</el-col>
<el-col :span="14">
<div v-if="itemOne.sqfsVal==1||itemOne.sqfsVal==3">
<div class="sqxx_title">Token名称:</div>
<el-input
v-model="itemOne.tokenName"
placeholder="请输入Token名称"
></el-input>
<div class="sqxx_title">Token值:</div>
<el-input
v-model="itemOne.tokenVal"
placeholder="请输入Token值"
></el-input>
</div>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane
label="请求头Header"
name="3"
>
<ces-table
ref="fwcs_zhfw_qqtcs"
size="mini"
:border="true"
:headers="sjfwQqtcs"
url
:datas="datasQqu"
: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"
></ces-table>
</el-tab-pane>
</el-tabs>
<div v-show="itemOne.resultShow">
<div v-show="itemOne.resSuccess">
<div class="sjfw_qqcstx">请求参数信息填写:</div>
<ces-table
:ref="`one_qqxx_${indexOne}`"
size="mini"
:border="true"
:headers="sjfwQqcstx"
url
:datas="itemOne.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"
></ces-table>
<div class="sjfw_fhcstx">返回参数信息填写:</div>
<ces-table
:ref="`one_fhxx_${indexOne}`"
size="mini"
:border="true"
:headers="sjfwFhcstx"
url
:datas="itemOne.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"
></ces-table>
</div>
<div v-show="!itemOne.resSuccess">
<div class="skfw_csfwxx">测试服务信息:</div>
<div class="test_succ">
<div class="skcs_jg">
<img
src="@/assets/imgs/test_icon_error.png"
class="skcs_jg_img"
/>&nbsp;测试失败
</div>
</div>
</div>
</div>
<div class="btn_footer_one">
<el-button
v-if="
indexOne + 1 == liucheng_list.length && itemOne.resSuccess
"
class="new_one"
@click="newOne(indexOne)"
>新增服务地址</el-button>
<el-button
v-if="!(indexOne == liucheng_list.length || liucheng_list.length == 1)"
class="del_one"
@click="delOne(indexOne)"
>移除</el-button>
<el-button
v-if="itemOne.resultShow"
class="reset_one"
@click="resetOne(indexOne)"
>重置</el-button>
<el-button
v-if="
indexOne + 1 == liucheng_list.length && itemOne.resSuccess
"
class="next_one"
@click="nextOne"
>
下一步
</el-button>
</div>
</div>
</block-radius>
</div>
</div>
<!-- 服务信息填写 -->
<div v-else>
<block-radius>
<div class="fwcs_add">
<el-form
ref="form"
:model="form"
:rules="process_id == '' ? rules : rules_process"
>
<el-form-item prop="name">
<p class="formname">服务名称:</p>
<el-input
v-model="form.name"
placeholder="请输入服务名称"
class="form_in"
></el-input>
</el-form-item>
<el-form-item prop="desc">
<p class="formname">服务描述:</p>
<el-input
type="textarea"
v-model="form.desc"
placeholder="请输入服务描述"
class="form_in"
></el-input>
</el-form-item>
<el-form-item prop="area">
<p class="formname">业务领域:</p>
<el-select
v-model="form.area"
placeholder="请选择"
class="form_in"
>
<el-option
v-for="item in optionsArea"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item prop="origin">
<p class="formname">所属组织:</p>
<el-input
v-model="form.origin"
class="form_in"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item>
<p class="formname">服务封面:</p>
<upload-file
:multiple="false"
:max="1"
type="cropper"
:readOnly="false"
:list="cover"
@getNewList="getNewList"
></upload-file>
</el-form-item>
<el-form-item v-if="jkxy == 1">
<p class="formname">接口编码:</p>
<el-input
v-model="form.code"
class="form_in"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item prop="resource">
<p class="formname">开放程度:</p>
<el-radio-group v-model="form.resource">
<el-radio :label="1">共享</el-radio>
<el-radio :label="2">受限</el-radio>
<el-radio :label="3">敏感</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
v-if="is_map != 0"
class="btn_footer"
>
<el-button
class="previous"
@click="goBack('map')"
>
{{ mapBackText }}
</el-button>
<el-button
class="registe"
:disabled="mapR"
@click="registeMap"
>
服务发布
</el-button>
</el-form-item>
<el-form-item
v-else-if="process_id != ''"
class="btn_footer"
>
<el-button
class="previous"
@click="goBack('process')"
>
返回流程管理
</el-button>
<el-button
class="registe"
:disabled="proR"
@click="registeProcess"
>
服务发布
</el-button>
</el-form-item>
<el-form-item
v-else
class="btn_footer"
>
<el-button
class="previous"
@click="previous"
>上一步</el-button>
<el-button
class="registe"
:disabled="fwR"
@click="registe"
>服务注册</el-button>
</el-form-item>
</el-form>
</div>
</block-radius>
</div>
<div style="display: none">
<iframe
id="listener"
:src="addPortalItemUrl"
></iframe>
</div>
<apass-dialog
ref="alertChange"
:title="dialogInfo.title"
:msg="dialogInfo.msg"
:submit="dialogInfo.submit"
:cancelHide="true"
></apass-dialog>
</div>
</template>
<script>
const gisServiceUrl = window.serviceConfig.gisServiceRoot;
const gisPortalSiteName = window.serviceConfig.gisPortalSiteName
? window.serviceConfig.gisPortalSiteName
: "portal";
import BlockRadius from "@/components/general/block-radius";
import CesTable from "@/components/table/table-um";
import Codes from "@/components/general/codes";
import uploadFile from "@/components/general/upload_file";
import helper from "@/services/helper";
import apassDialog from "@/components/apass-dialog";
export default {
components: {
BlockRadius,
CesTable,
apassDialog,
"v-apaas-code": Codes,
uploadFile
},
data() {
return {
serviceTemplate: 1, // 当前选中的分类 请求回列表后要先赋一下值 索引0的item
currentClass: null,
liucheng_list: [
{
one_input: "",
select: "GET",
serviceUrl: "",
datasSj: [],
sjfwQqt: "JSON",
sqfsVal: 0,
tokenVal: "",
noSearchUrl: "",
resultShow: false,
resSuccess: false,
requestRules: 0,
responseRules: 0,
request_fields: [],
response_fields: [],
checkPass: false,
dataType: "",
body_fields: [],
param_fields: []
}
],
rulesOne: {
one_input: [
{ required: true, message: "请输入服务名称", trigger: "blur" },
{ min: 0, max: 15, message: "服务名称不超过15个字", trigger: "blur" }
]
},
addPortalItemUrl:
gisServiceUrl +
"/" +
gisPortalSiteName +
"/apaasplat/viewer/addPortalItem.html",
btnList: [],
activeBtn: null,
serviceUrl: "",
select: "GET",
optionType: [
{ label: "GET", value: "GET" },
{ label: "POST", value: "POST" },
{ label: "PUT", value: "PUT" },
{ label: "DELETE", value: "DELETE" }
],
optionType1: [{ label: "GET", value: "GET" }],
optionType2: [
{ label: "GET", value: "GET" },
{ label: "POST", value: "POST" }
],
activeName: "0",
activeZh: "0",
sjfwQqcs: [
{
label: "请求字段编码",
prop: "requestEncoding",
type: "input",
align: "left"
},
{ label: "请求值", prop: "requestValue", type: "input", align: "left" }
],
sjfwQqcstx: [
{ label: "字段编码", prop: "name", type: "", align: "left" },
{ label: "示例值", prop: "example", type: "input", align: "left" },
{
label: "字段类型",
prop: "show_type",
type: "",
align: "left",
width: "140"
},
{
label: "字段名称*",
prop: "label",
type: "input",
align: "left"
},
{
label: "是否必须*",
prop: "is_must",
type: "select",
align: "left",
width: 100,
selectArr: [
{ label: "", value: 1 },
{ label: "", value: 0 }
],
hasDefault: true
},
{ label: "字段说明", prop: "descript", type: "input", align: "left" }
],
sjfwFhcstx: [
{ label: "字段编码", prop: "name", type: "", align: "left" },
{ label: "示例值", prop: "example", type: "input", align: "left" },
{ label: "字段类型", prop: "show_type", type: "", align: "left" },
{
label: "字段名称*",
prop: "label",
type: "input",
align: "left"
},
{ label: "字段说明", prop: "descript", type: "input", align: "left" }
],
zhfwQqcsForm: [
{ label: "请求字段编码", prop: "key", type: "input", align: "left" },
{
label: "参数类型",
prop: "field_type",
type: "select",
align: "center",
width: 100,
selectArr: [
{ label: "text", value: "text" },
{ label: "file", value: "file" }
]
},
{
label: "请求值",
prop: "val",
type: "upload",
align: "center",
uploadKey: "field_type"
},
{
label: "操作",
type: "Button",
align: "center",
width: 100,
btnList: [
{
type: "primary-del",
label: "删除"
}
]
}
],
sjfwQqtcs:[
{
label: "key",
prop: "requestEncoding",
type: "input",
align: "left"
},
{ label: "value", prop: "requestValue", type: "input", align: "left" }
],
datasQqu:[],
datasZhForm: [],
datasZhwww: [],
emptyText: "暂无数据",
resultShow: false,
resSuccess: false,
optionsSq: [
{ label: "无授权", value: 0 },
{ label: "厂商静态token鉴权", value: 1 },
{ label: "动态token鉴权", value: 2 },
],
sqfsVal: 0,
tokenName: "Authorization",
tokenVal: "",
sjfwQqt: "JSON",
zhfwQqt: "JSON",
zhyyVal: "",
optionsZhyy: [],
zhyyVal: "",
jkxy: 1,
jkxyList: [
{
label: "http(s)",
value: 1,
},
{
label: "grpc",
value: 2,
},
{
label: "websocket",
value: 3,
},
],
jcxxtx: false,
form: {
name: "",
desc: "",
area: "",
origin: "",
code: "自动生成",
resource: 1
},
rules: {
name: [
{ required: true, message: "请输入服务名称", trigger: "blur" },
{ min: 0, max: 15, message: "服务名称不超过15个字", trigger: "blur" }
],
desc: [
{ required: true, message: "请输入服务描述", trigger: "blur" },
{
min: 0,
max: 200,
message: "服务描述不超过200个字",
trigger: "blur"
}
],
area: [
{ required: true, message: "请选择业务领域", trigger: "change" }
],
origin: [
{ required: true, message: "请选择所属组织", trigger: "blur" }
],
resource: [
{ required: true, message: "请选择开放程度", trigger: "blur" }
]
},
rules_process: {
name: [
{ required: true, message: "请输入服务名称", trigger: "blur" },
{
min: 0,
max: 100,
message: "服务名称不超过100个字",
trigger: "blur"
}
],
desc: [
{ required: true, message: "请输入服务描述", trigger: "blur" },
{
min: 0,
max: 400,
message: "服务描述不超过400个字",
trigger: "blur"
}
],
area: [{ required: true, message: "请选择业务领域", trigger: "blur" }],
origin: [
{ required: true, message: "请选择所属组织", trigger: "blur" }
],
resource: [
{ required: true, message: "请选择开放程度", trigger: "blur" }
]
},
cover: [],
optionsArea: [],
datasSj: [],
datasZh: [],
datasQqcs: [],
datasFhcs: [],
request_fields: [],
response_fields: [],
noSearchUrl: "",
requestRules: 0,
responseRules: 0,
is_map: 0,
mapBackText: "返回智能制图",
process_id: "",
param_fields: [],
body_fields: [],
dialogInfo: {
title: "时空服务参数已修改",
msg: "",
submit: null
},
is_portal: false,
portal_id: "",
dataType: "",
jkwds: [],
gz_fhsjgs: "JSON",
code_1_index: 0,
code_2_index: 0,
user_id: "",
fwR: false,
mapR: false,
proR: false,
fwdesc: "/apaas/service/v3/service/manager/register/instruction",
};
},
computed: {},
watch: {},
methods: {
test() {
console.log(this.jkxy)
},
getCurrentUser() {
this.$api.user.getNowUser().then(({ data }) => {
if (data.success == 1) {
this.$store.commit("userInfofun", data.data);
} else {
console.log(data.errMsg);
}
});
},
clickBtn(val,item) {
this.jkxy = 1
this.resultShow = false;
this.activeBtn = val;
this.select = "GET";
this.serviceUrl = "";
this.noSearchUrl = "";
this.gz_fhsjgs = "JSON";
this.zhyyVal = item.childDomains && item.childDomains.length > 0 ? item.childDomains[0].id : ''
this.datasSj = [];
this.tokenVal = "";
this.datasZh = [];
this.zhfwQqt = "JSON";
this.datasZhForm = [];
this.datasZhwww = [];
this.liucheng_list = [
{
one_input: "",
select: "GET",
serviceUrl: "",
datasSj: [],
sjfwQqt: "JSON",
sqfsVal: 0,
tokenVal: "",
noSearchUrl: "",
resultShow: false,
resSuccess: false,
requestRules: 0,
responseRules: 0,
request_fields: [],
response_fields: [],
checkPass: false,
dataType: "",
body_fields: [],
param_fields: []
}
];
this.activeName = "0";
this.code_1_index += 1;
this.code_2_index += 1;
this.jkwds = [];
this.serviceTemplate = item.childDomains && item.childDomains.length > 0 ? item.childDomains[0].serv_template : item.serv_template
this.currentClass = item
},
getUrl(enUrl) {
enUrl = enUrl.replace(/\s*/g, "");
let url = decodeURI(enUrl);
let arr = [];
if (url.indexOf("?") != -1) {
this.noSearchUrl = url.substring(0, url.indexOf("?"));
let search = url.substring(url.indexOf("?") + 1);
let vars = search.split("&");
for (let i = 0; i < vars.length; i++) {
if (vars[i] != "") {
let pair = vars[i].split("=");
arr[i] = {};
arr[i].requestEncoding = pair[0] ? pair[0] : "";
arr[i].requestValue = pair[1] ? pair[1] : "";
}
}
} else {
this.noSearchUrl = enUrl;
}
this.serviceUrl = url;
if (this.serviceTemplate == 1 || this.serviceTemplate == 7) {
this.datasSj = arr;
} else if (this.serviceTemplate == 8 || this.serviceTemplate == 9 || this.serviceTemplate == 10 || this.serviceTemplate == 11) {
this.datasZh = arr;
}
},
clickFwcs() {
let headers = {};
let requestData = {};
let requestHeaderDataObj = {};
let request = []
let bodys = "";
let contentType = "";
if (this.jkxy != 1) {
}else {
if (this.serviceTemplate == 1 || this.serviceTemplate == 7) {
if (this.sqfsVal == 1 || this.sqfsVal == 3) {
if (this.tokenName == "") {
this.$message.error("请输入token名称");
return;
}
if (this.tokenVal == "") {
this.$message.error("请输入token值");
return;
}
}
let request = this.$refs.fwcs_sjfw_qq.getTableData();
for (let i = 0; i < request.length; i++) {
if (
request[i] &&
request[i].requestEncoding &&
request[i].requestValue &&
request[i].requestEncoding != "" &&
request[i].requestValue != ""
) {
if (
Object.keys(requestData).indexOf(request[i].requestEncoding) == -1
) {
requestData[request[i].requestEncoding] = [];
requestData[request[i].requestEncoding][0] =
request[i].requestValue;
} else {
requestData[request[i].requestEncoding].push(
request[i].requestValue
);
}
}
}
} else if (this.serviceTemplate == 2 || this.serviceTemplate == 3 || this.serviceTemplate == 4 || this.serviceTemplate == 5) {
} else if (this.serviceTemplate == 8 || this.serviceTemplate == 9 || this.serviceTemplate == 10) {
let request = this.$refs.fwcs_zhfw_qq.getTableData();
for (let i = 0; i < request.length; i++) {
if (
request[i] &&
request[i].requestEncoding &&
request[i].requestValue &&
request[i].requestEncoding != "" &&
request[i].requestValue != ""
) {
if (
Object.keys(requestData).indexOf(request[i].requestEncoding) == -1
) {
requestData[request[i].requestEncoding] = [];
requestData[request[i].requestEncoding][0] =
request[i].requestValue;
} else {
requestData[request[i].requestEncoding].push(
request[i].requestValue
);
}
}
}
}
if(this.serviceTemplate == 1 || this.serviceTemplate == 6 || this.serviceTemplate == 7 || this.serviceTemplate == 8 || this.serviceTemplate == 9 || this.serviceTemplate == 10){
let requestHeader = this.$refs.fwcs_zhfw_qqtcs.getTableData();
for (let i = 0; i < requestHeader.length; i++) {
if (
requestHeader[i] &&
requestHeader[i].requestEncoding &&
requestHeader[i].requestValue &&
requestHeader[i].requestEncoding != "" &&
requestHeader[i].requestValue != ""
) {
console.log(Object.keys(requestHeaderDataObj).indexOf(requestHeader[i].requestEncoding) == -1)
if (
Object.keys(requestHeaderDataObj).indexOf(requestHeader[i].requestEncoding) == -1
) {
requestHeaderDataObj[requestHeader[i].requestEncoding] = [];
requestHeaderDataObj[requestHeader[i].requestEncoding][0] = requestHeader[i].requestValue;
} else {
requestHeaderDataObj[requestHeader[i].requestEncoding].push(
requestHeader[i].requestValue
);
}
}
}
headers = Object.assign(headers, requestHeaderDataObj)
}
if (this.serviceTemplate == 1 || this.serviceTemplate == 7) {
bodys = this.$refs.jsonCodes ? this.$refs.jsonCodes.getCodesVal() : "";
contentType = this.sjfwQqt;
} else if (this.serviceTemplate == 8 || this.serviceTemplate == 9 || this.serviceTemplate == 10 || this.serviceTemplate == 11) {
if (this.activeZh == "1") {
contentType = this.zhfwQqt;
if (this.zhfwQqt == "JSON") {
bodys = this.$refs.zhfwJsonCodes
? this.$refs.zhfwJsonCodes.getCodesVal()
: "";
} else if (this.zhfwQqt == "form-data") {
let request = this.$refs.fwcs_zhfw_qq_form.getTableData().concat();
request.pop();
bodys = JSON.stringify(request);
} else if (this.zhfwQqt == "x-www-form-urlencoded") {
let request = this.$refs.fwcs_zhfw_www.getTableData().concat();
let arr = [];
request.pop();
request.forEach(item => {
arr.push({
key: item.requestEncoding,
val: item.requestValue,
field_type: "text"
});
});
bodys = JSON.stringify(arr);
}
}
}
}
let query = {
interface_typ: this.jkxy,
method: this.select,
url: this.serviceUrl,
req_auth_mthod: this.sqfsVal,
req_auth_token:
this.sqfsVal == 1 || this.sqfsVal == 3 ? this.tokenVal : "",
req_auth_token_name:
this.sqfsVal == 1 || this.sqfsVal == 3 ? this.tokenName : "",
headers: headers,
params: requestData,
body: bodys,
content_type: contentType,
data_service_type1: this.currentClass.id,
data_service_type2:
this.zhyyVal == "" ? 0
: this.zhyyVal,
response_type: this.serviceTemplate == 7 ? this.gz_fhsjgs : "JSON"
};
this.$api.workbench.fwzcFwcs(query).then(response => {
if (response.data.success == 1) {
let data = response.data.data;
this.body_fields = data.body_fields;
this.param_fields = data.param_fields;
if (data.body_fields && data.body_fields.length != 0) {
this.datasQqcs = data.body_fields;
this.dataType = "body";
} else {
this.datasQqcs = data.param_fields;
this.dataType = "param";
}
this.datasFhcs = data.response_fields;
this.resSuccess = true;
this.resultShow = true;
} else {
this.resSuccess = false;
this.resultShow = true;
console.log(response.data.errMsg);
}
});
},
clickTab() {},
resetSjfw() {
this.clickFwcs();
},
nextJcxx() {
if (
this.serviceTemplate == 1 ||
this.serviceTemplate == 6 ||
this.serviceTemplate == 7 ||
this.serviceTemplate == 8 ||
this.serviceTemplate == 9
) {
if (this.serviceTemplate == 6 || this.serviceTemplate == 7) {
if (this.jkwds.length == 0) {
this.$message.error("请上传接口文档");
} else {
if (
this.serviceTemplate == 6 ||
this.serviceTemplate == 8
) {
this.request_fields = [];
this.response_fields = [];
this.jcxxtx = true;
this.getOrganization();
} else {
let requestData = this.$refs.fwcs_sjfw_qqcs.getTableData();
let responseData = this.$refs.fwcs_sjfw_fhcs.getTableData();
this.requestRules = 0;
this.responseRules = 0;
this.checkTable(requestData, 0);
this.checkTable(responseData, 1);
if (this.requestRules == 0 && this.responseRules == 0) {
this.request_fields = requestData;
this.response_fields = responseData;
this.jcxxtx = true;
this.getOrganization();
} else if (this.requestRules != 0) {
this.$message.error("请完善请求参数信息中的字段名称");
} else if (this.responseRules != 0) {
this.$message.error("请完善返回参数信息中的字段名称");
}
}
}
} else {
let requestData = this.$refs.fwcs_sjfw_qqcs.getTableData();
let responseData = this.$refs.fwcs_sjfw_fhcs.getTableData();
this.requestRules = 0;
this.responseRules = 0;
this.checkTable(requestData, 0);
this.checkTable(responseData, 1);
if (this.requestRules == 0 && this.responseRules == 0) {
this.request_fields = requestData;
this.response_fields = responseData;
this.jcxxtx = true;
this.getOrganization();
} else if (this.requestRules != 0) {
this.$message.error("请完善请求参数信息中的字段名称");
} else if (this.responseRules != 0) {
this.$message.error("请完善返回参数信息中的字段名称");
}
}
} else if (this.serviceTemplate == 2 || this.serviceTemplate == 3 || this.serviceTemplate == 4 || this.serviceTemplate == 5) {
let value = helper.getQueryString("id", this.serviceUrl);
console.log(value);
if (value && value != "") {
this.getItemInfo(value);
} else {
this.form.name = "";
this.form.desc = "";
this.form.area = "";
this.cover = [];
}
this.request_fields = [];
this.response_fields = [];
this.jcxxtx = true;
this.getOrganization();
} else {
this.request_fields = [];
this.response_fields = [];
this.jcxxtx = true;
this.getOrganization();
}
},
checkTable(arr, rule) {
let self = this;
for (let i = 0; i < arr.length; i++) {
if (arr[i].name && arr[i].name != "") {
if (!arr[i].label || arr[i].label == "") {
if (rule == 0) {
this.requestRules = 1;
} else if (rule == 1) {
this.responseRules = 1;
}
return false;
}
}
if (arr[i].children && arr[i].children.length != 0) {
self.checkTable(arr[i].children, rule);
}
}
},
// edit form
getNewList(val) {
this.cover[0] = val[0].url;
},
previous() {
this.datasQqcs = this.request_fields;
this.datasFhcs = this.response_fields;
this.jcxxtx = false;
},
getNewListOne(val) {
this.jkwds[0] = val[0].url;
},
getOrganization() {
if (this.$store.state.userInfo && this.$store.state.userInfo.user_id) {
let query = {
id: this.$store.state.userInfo.user_id
};
this.$api.user.getUserDetail(query).then(request => {
if (request.data.success == 1) {
this.form.origin = request.data.data.department;
this.oid = request.data.data.department_id;
} else {
console.log(response.data.errMsg);
}
});
} else {
let self = this;
self.$api.user.getNowUser().then(({ data }) => {
if (data.success == 1) {
self.$store.commit("userInfofun", data.data);
let query = {
id: self.$store.state.userInfo.user_id
};
self.$api.user.getUserDetail(query).then(request => {
if (request.data.success == 1) {
self.form.origin = request.data.data.department;
self.oid = request.data.data.department_id;
} else {
console.log(response.data.errMsg);
}
});
} else {
console.log(data.errMsg);
}
});
}
},
registeMap() {
this.$refs.form.validate(valid => {
if (valid) {
if (this.cover.length != 0) {
this.mapR = true;
let query = {};
if (this.is_map == 1 || this.is_map == 5) {
query = {
name: this.form.name,
sectors: this.form.area,
organization: this.form.origin,
cover: this.cover[0],
openness: this.form.resource,
descript: this.form.desc,
data_service_type1: 6,
data_service_type2: this.zhyyVal,
encode_method: this.form.code,
portal_id: this.portal_id,
doc_file: "",
urls: [
{
name: "",
response_type: "JSON",
req_auth_mthod: 0,
req_auth_token: "",
req_auth_token_name: "",
method: "GET",
url: this.serviceUrl,
request_fields: [],
request_query_fields: [],
response_fields: [],
content_type: "JSON"
}
]
};
} else if (this.is_map == 4) {
query = {
name: this.form.name,
sectors: this.form.area,
organization: this.form.origin,
cover: this.cover[0],
openness: this.form.resource,
descript: this.form.desc,
data_service_type1: 21,
data_service_type2: 34,
encode_method: this.form.code,
portal_id: this.portal_id,
urls: [
{
name: "",
response_type: "JSON",
req_auth_mthod: 0,
req_auth_token: "",
req_auth_token_name: "",
method: "GET",
url: this.serviceUrl,
request_fields: [],
request_query_fields: [],
response_fields: [],
content_type: "JSON"
}
]
};
}
this.$api.workbench.serviceAdd(query).then(response => {
this.mapR = false;
if (response.data.success == 1) {
this.$message.success("服务发布成功");
this.$router.push("/fwgl/" + this.$store.getters.level);
} else {
console.log(response.data.errMsg);
this.$message.error(response.data.errMsg);
}
});
} else {
this.$message.error("请上传服务封面");
}
} else {
this.$message.error("请完善服务基本信息");
}
});
},
registeProcess() {
this.$refs.form.validate(valid => {
if (valid) {
if (this.cover.length != 0) {
this.proR = true;
let query = {
workflows_id: Number(this.process_id), // 服务流程id
service_name: this.form.name, // 服务名称
describe: this.form.desc, // 服务描述
sector: this.form.area, // 服务领域id
oid: this.oid, // 组织id
encode_method: this.form.code, // 接口编码
cover: this.cover[0], // 服务封面
openness: this.form.resource // 开放程度,1共享/2受限/3敏感
};
this.$api.workbench.releaseProcess(query).then(response => {
this.proR = false;
if (response.data.success == 1) {
this.$message.success("服务发布成功");
this.$router.push("/fwgl/" + this.$store.getters.level);
} else {
console.log(response.data.errMsg);
this.$message.error(response.data.errMsg);
}
});
} else {
this.$message.error("请上传服务封面");
}
} else {
this.$message.error("请完善服务基本信息");
}
});
},
registe() {
if (this.serviceTemplate == 10) {
this.registeOne();
} else {
this.registePt();
}
},
registePt() {
this.$refs.form.validate(valid => {
if (valid) {
if (
(this.serviceTemplate == 6 && this.jkwds.length == 0) ||
(this.serviceTemplate == 7 && this.jkwds.length == 0)
) {
this.$message.error("请上传接口文档");
} else {
if (this.cover.length != 0) {
let contentType = "";
if (
(this.serviceTemplate == 2 || this.serviceTemplate == 3 || this.serviceTemplate == 4 || this.serviceTemplate == 5) &&
!this.is_portal &&
window.serviceConfig &&
window.serviceConfig.state == "needLogin"
) {
this.addPortalItem();
} else {
this.fwR = true;
if (
this.serviceTemplate == 1 ||
this.serviceTemplate == 6 ||
this.serviceTemplate == 7
) {
contentType = this.sjfwQqt;
} else if (this.serviceTemplate == 8 || this.serviceTemplate == 9 || this.serviceTemplate == 10 || this.serviceTemplate == 11) {
if (this.activeZh == "1") {
contentType = this.zhfwQqt;
}
}
let query = {
serv_template: this.serviceTemplate,
interface_typ: this.jkxy,
proxy_address: this.serviceUrl,
name: this.form.name,
sectors: this.form.area,
organization: this.form.origin,
cover: this.cover[0],
openness: this.form.resource,
descript: this.form.desc,
data_service_type1: this.currentClass.id,
data_service_type2:
this.zhyyVal == "" ? 0 : this.zhyyVal,
portal_id: this.portal_id,
doc_file: this.jkwds.length != 0 ? this.jkwds[0] : "",
urls: [
{
name: "",
response_type:
this.serviceTemplate == 7 ? this.gz_fhsjgs : "JSON",
req_auth_mthod: this.sqfsVal,
req_auth_token: this.sqfsVal == 1 ? this.tokenVal : "",
req_auth_token_name:
this.sqfsVal == 1 ? this.tokenName : "",
method: this.jkxy == 1 ? this.select : '',
url: this.serviceUrl,
request_fields:
this.dataType == "body"
? this.request_fields
: this.body_fields,
request_query_fields:
this.dataType == "param"
? this.request_fields
: this.param_fields,
response_fields: this.response_fields,
content_type: contentType
}
]
};
if (this.jkxy == 1) {
query.encode_method = this.form.code
}
this.$api.workbench.serviceAdd(query).then(response => {
this.fwR = false;
if (response.data.success == 1) {
this.$message.success("服务注册成功");
this.$router.push("/fwgl/" + this.$store.getters.level);
} else {
console.log(response.data.errMsg);
this.$message.error(response.data.errMsg);
}
});
}
} else {
this.$message.error("请上传服务封面");
}
}
} else {
this.$message.error("请完善服务基本信息");
}
});
},
registeOne() {
this.$refs.form.validate(valid => {
if (valid) {
if (this.cover.length != 0) {
if (this.jkwds.length == 0 && this.jkxy == 1) {
this.$message.error("请上传接口文档");
} else {
this.fwR = true;
let urls = [];
this.liucheng_list.forEach(item => {
urls.push({
req_name: item.one_input,
response_type: "JSON",
req_auth_mthod: item.sqfsVal,
req_auth_token: item.sqfsVal == 1 ? item.tokenVal : "",
req_auth_token_name: item.sqfsVal == 1 ? item.tokenName : "",
method: this.jkxy == 1 ? item.select : '',
url: item.serviceUrl,
request_fields:
item.dataType == "body"
? item.request_fields
: item.body_fields,
request_query_fields:
item.dataType == "param"
? item.request_fields
: item.param_fields,
response_fields: item.response_fields,
content_type: "JSON"
});
});
let query = {
serv_template: this.serviceTemplate,
interface_typ: this.jkxy,
proxy_address: this.jkxy == 1? '' : this.serviceUrl,
name: this.form.name,
sectors: this.form.area,
organization: this.form.origin,
cover: this.cover[0],
openness: this.form.resource,
descript: this.form.desc,
data_service_type1: this.currentClass.id,
data_service_type2: this.zhyyVal == "" ? 0 : this.zhyyVal,
portal_id: this.portal_id,
urls: urls,
doc_file: this.jkwds.length != 0 ? this.jkwds[0] : ""
};
if (this.jkxy == 1) {
query.encode_method = this.form.code
}
this.$api.workbench.serviceAdd(query).then(response => {
this.fwR = false;
if (response.data.success == 1) {
this.$message.success("服务注册成功");
this.$router.push("/fwgl/" + this.$store.getters.level);
} else {
console.log(response.data.errMsg);
this.$message.error(response.data.errMsg);
}
});
}
} else {
this.$message.error("请上传服务封面");
}
} else {
this.$message.error("请完善服务基本信息");
}
});
},
changeTable(val) {
let search = "?";
for (let i = 0; i < val.length; i++) {
if (val[i].requestEncoding != "") {
search =
search +
val[i].requestEncoding +
"=" +
(val[i].requestValue ? val[i].requestValue : "") +
"&";
}
}
let searchDel = search.substring(0, search.length - 1);
this.serviceUrl = this.noSearchUrl + searchDel;
},
delItemQq(val) {
let arr = this.$refs.fwcs_zhfw_qq_form.getTableData();
this.delById(arr, val.id);
},
delById(arr, id) {
let self = this;
for (let i = 0; i < arr.length; i++) {
if (arr[i].id == id) {
arr.splice(i, 1);
return false;
}
if (arr[i].children && arr[i].children.length != 0) {
self.delById(arr[i].children, id);
}
}
},
changeZhType(val) {
this.serviceUrl = "";
this.select = "GET";
this.activeZh = "0";
this.resultShow = false;
this.resSuccess = false;
console.log(this.currentClass.childDomains)
this.currentClass.childDomains.forEach(e => {
if (e.id == val) {
this.serviceTemplate = e.serv_template
}
})
},
changeZhfwQqt() {},
getArea() {
this.$api.workbench.getServiceAreaList().then(response => {
if (response.data.success == 1) {
this.optionsArea = response.data.data;
} else {
console.log(response.data.errMsg);
}
});
},
getServiceType1() {
this.$api.workbench.getServiceTypeList().then(response => {
if (response.data.success == 1) {
let arr = response.data.data;
this.btnList = arr;
this.currentClass = this.btnList[0]
this.zhyyVal == this.currentClass.childDomains && this.currentClass.childDomains.length > 0 ? this.currentClass.childDomains[0].id : ""
this.activeBtn = 0;
} else {
console.log(response.data.errMsg);
}
});
},
judgeMap() {
let self = this;
if (self.$route.query.map && self.$route.query.map != 0) {
self.is_map = self.$route.query.map;
self.jcxxtx = true;
if (self.$store.state.znztParams) {
self.mapBackText = "返回智能制图";
let data = this.$store.state.znztParams;
self.form.name = data.name;
self.form.desc = data.descript;
self.form.area = Number(data.sectors);
self.serviceUrl = data.url;
self.zhyyVal = Number(data.data_service_type2);
self.cover[0] = data.cover;
self.portal_id = data.portalid;
self.is_portal = true;
} else if (self.$store.state.cesiumMapParams) {
self.mapBackText = "返回三维制图";
let data = this.$store.state.cesiumMapParams;
self.form.name = data.name;
self.form.desc = data.descript;
self.form.area = Number(data.sectors);
self.serviceUrl = data.url;
self.zhyyVal = Number(data.data_service_type2);
self.cover[0] = data.cover;
self.portal_id = data.portalid;
self.is_portal = true;
} else if (self.$store.state.appBuilderParams) {
self.mapBackText = "返回Web应用程序";
let data = this.$store.state.appBuilderParams;
self.form.name = data.name;
self.form.desc = data.descript;
self.form.area = Number(data.sectors);
self.serviceUrl = data.url;
self.zhyyVal = Number(data.data_service_type2);
self.cover[0] = data.cover;
self.portal_id = data.portalid;
self.is_portal = true;
}
this.getOrganization();
} else if (self.$route.query.process) {
self.process_id = self.$route.query.process;
self.jcxxtx = true;
this.getProcessDetail();
this.getOrganization();
} else {
self.is_map = 0;
self.getServiceType1();
}
},
goBack(type) {
let self = this;
if (type == "map") {
// self.$store.commit("setZnztDetailsParams", {
// type: "",
// queryType: "webmap",
// id: self.portal_id,
// });
// this.$router.push("/intelligent_drawing");
if (self.is_map == 1) {
let shareWebMapParam = JSON.parse(
window.sessionStorage.getItem("shareWebMapParam")
);
window.location.href =
"/vmap/#/map" + `?id=${shareWebMapParam.portalid}`;
} else if (self.is_map == 4) {
self.$router.back(-1);
} else if (self.is_map == 5) {
let shareCesiumMapParam = JSON.parse(
window.sessionStorage.getItem("shareCesiumMapParam")
);
window.location.href =
"/cesiummap/#/map" + `?id=${shareCesiumMapParam.portalid}`;
} else {
let shareWebMapParam = JSON.parse(
window.sessionStorage.getItem("shareWebMapParam")
);
window.location.href =
"/vmap/#/map" + `?id=${shareWebMapParam.portalid}`;
}
} else if (type == "process") {
this.$router.push("/progress/designer");
}
},
addPortalItem() {
console.log("添加portal");
let self = this;
document.getElementById("listener").contentWindow.postMessage(
{
cmd: "addPortalItem",
params: {
name: self.form.name,
url: self.serviceUrl,
sectors: self.form.area,
data_service_type2: self.zhyyVal,
descript: self.form.desc
}
},
"*"
);
},
getItemInfo(itemid) {
console.log(`获取portal参数${itemid}`);
document.getElementById("listener").contentWindow.postMessage(
{
cmd: "getPortalItemInfo",
params: itemid
},
"*"
);
},
listeners(event) {
let self = this;
if (event && event.origin == gisServiceUrl && event.data) {
if (event.data.cmd == "getPortalItemInfo") {
console.log(event.data.params);
let data = event.data.params;
self.form.name = data.name;
self.form.desc = data.descript;
self.form.area = Number(data.sectors);
self.portal_id = data.portalid;
self.cover[0] = data.cover;
if (
self.serviceUrl != data.url ||
self.zhyyVal != Number(data.data_service_type2)
) {
self.serviceUrl = data.url;
self.zhyyVal = Number(data.data_service_type2);
self.dialogInfo.msg = `您的时空服务地址已更新为${
self.serviceUrl
},服务类型更新为${
self.this.currentClass.childDomains.find(item => {
return item.id == self.zhyyVal;
}).name
}`;
self.dialogInfo.submit = () => {
self.$refs.alertChange.hide();
};
self.$refs.alertChange.show();
}
self.is_portal = true;
} else if (event.data.cmd == "getPortalItemInfoError") {
console.log(event.data.params);
self.is_portal = false;
} else if (event.data.cmd == "addPortalItem") {
console.log(event.data.params);
self.portal_id = event.data.params;
self.is_portal = true;
self.registe();
} else if (event.data.cmd == "addPortalItemError") {
console.log(event.data.params);
self.is_portal = false;
}
}
},
getProcessDetail() {
this.$api.workbench
.getProcessDetail({ id: this.process_id })
.then(response => {
if (response.data.success == 1) {
let data = response.data.data;
this.form.name = data.name;
this.form.desc = data.describe;
this.cover.push(
"/apaas/static/docs/image/image/blob_75dc5c77-754c-440d-8320-92ba68d239d5.blob"
);
}
});
},
newOne(indexOne) {
this.$refs["ruleFormOne_" + indexOne][0].validate(valid => {
if (valid) {
if (this.liucheng_list[indexOne].resSuccess) {
this.checkOne(indexOne, true);
console.log(this.liucheng_list[indexOne]);
if (this.liucheng_list[indexOne].checkPass) {
this.liucheng_list.push({
one_input: "",
select: "GET",
serviceUrl: "",
datasSj: [],
sjfwQqt: "JSON",
sqfsVal: 0,
tokenVal: "",
noSearchUrl: "",
resultShow: false,
resSuccess: false,
requestRules: 0,
responseRules: 0,
request_fields: [],
response_fields: [],
checkPass: false,
dataType: "",
body_fields: [],
param_fields: []
});
} else {
this.$message.error(`请完善服务${indexOne + 1}中的信息`);
}
} else {
this.$message.error("请完善该服务测试");
}
} else {
this.$message.error("请填写该服务名称");
}
});
},
getUrlOne(enUrl, indexOne) {
enUrl = enUrl.replace(/\s*/g, "");
let url = decodeURI(enUrl);
let arr = [];
if (url.indexOf("?") != -1) {
this.liucheng_list[indexOne].noSearchUrl = url.substring(
0,
url.indexOf("?")
);
let search = url.substring(url.indexOf("?") + 1);
let vars = search.split("&");
for (let i = 0; i < vars.length; i++) {
if (vars[i] != "") {
let pair = vars[i].split("=");
arr[i] = {};
arr[i].requestEncoding = pair[0] ? pair[0] : "";
arr[i].requestValue = pair[1] ? pair[1] : "";
}
}
} else {
this.liucheng_list[indexOne].noSearchUrl = enUrl;
}
this.liucheng_list[indexOne].serviceUrl = url;
this.liucheng_list[indexOne].datasSj = arr;
},
clickTabOne() {},
changeTableOne(val, indexOne) {
let search = "?";
for (let i = 0; i < val.length; i++) {
if (val[i].requestEncoding != "") {
search =
search +
val[i].requestEncoding +
"=" +
(val[i].requestValue ? val[i].requestValue : "") +
"&";
}
}
let searchDel = search.substring(0, search.length - 1);
this.liucheng_list[indexOne].serviceUrl =
this.liucheng_list[indexOne].noSearchUrl + searchDel;
},
resetOne(indexOne) {
this.clickFwcsOne(indexOne);
},
nextOne() {
let hasError = false;
this.liucheng_list.forEach((item, index) => {
this.checkOne(index, false);
if (!item.checkPass) {
hasError = true;
this.$message.error(`请完善服务${index + 1}中的参数信息`);
return false;
}
});
if (!hasError) {
this.jcxxtx = true;
this.getOrganization();
}
},
delOne(indexOne) {
this.liucheng_list.splice(indexOne, 1);
},
clickFwcsOne(indexOne) {
// console.log(this.$refs["one_qqcs_" + indexOne][0]);
let headers = {};
let requestData = {};
let dataOne = this.liucheng_list[indexOne];
if (dataOne.sqfsVal == 1 || dataOne.sqfsVal == 3) {
if (dataOne.tokenName == "") {
this.$message.error("请输入token名称");
return;
}
if (dataOne.tokenVal == "") {
this.$message.error("请输入token值");
return;
}
}
let request = this.$refs["one_qqcs_" + indexOne][0].getTableData();
for (let i = 0; i < request.length; i++) {
if (
request[i] &&
request[i].requestEncoding &&
request[i].requestValue &&
request[i].requestEncoding != "" &&
request[i].requestValue != ""
) {
if (
Object.keys(requestData).indexOf(request[i].requestEncoding) == -1
) {
requestData[request[i].requestEncoding] = [];
requestData[request[i].requestEncoding][0] =
request[i].requestValue;
} else {
requestData[request[i].requestEncoding].push(
request[i].requestValue
);
}
}
}
let bodys = "";
let contentType = "";
bodys = this.$refs["one_json_" + indexOne][0].getCodesVal();
contentType = dataOne.sjfwQqt;
let query = {
method: dataOne.select,
url: dataOne.serviceUrl,
req_auth_mthod: dataOne.sqfsVal,
req_auth_token:
dataOne.sqfsVal == 1 || dataOne.sqfsVal == 3 ? dataOne.tokenVal : "",
req_auth_token_name:
dataOne.sqfsVal == 1 || dataOne.sqfsVal == 3 ? dataOne.tokenName : "",
headers: headers,
params: requestData,
body: bodys,
content_type: contentType,
data_service_type1: this.currentClass.id,
data_service_type2: this.zhyyVal == "" ? 0 : this.zhyyVal,
response_type: "JSON"
};
this.$api.workbench.fwzcFwcs(query).then(response => {
if (response.data.success == 1) {
let data = response.data.data;
this.liucheng_list[indexOne].body_fields = data.body_fields;
this.liucheng_list[indexOne].param_fields = data.param_fields;
if (data.body_fields && data.body_fields.length != 0) {
this.liucheng_list[indexOne].datasQqcs = data.body_fields;
this.liucheng_list[indexOne].dataType = "body";
} else {
this.liucheng_list[indexOne].datasQqcs = data.param_fields;
this.liucheng_list[indexOne].dataType = "param";
}
this.liucheng_list[indexOne].datasFhcs = data.response_fields;
this.liucheng_list[indexOne].resSuccess = true;
this.liucheng_list[indexOne].resultShow = true;
} else {
this.liucheng_list[indexOne].resSuccess = false;
this.liucheng_list[indexOne].resultShow = true;
console.log(response.data.errMsg);
}
});
},
checkOne(indexOne, showEveryOne) {
let requestData = this.$refs["one_qqxx_" + indexOne][0].getTableData();
let responseData = this.$refs["one_fhxx_" + indexOne][0].getTableData();
this.requestRules = 0;
this.responseRules = 0;
this.checkTableOne(requestData, 0, indexOne);
this.checkTableOne(responseData, 1, indexOne);
if (this.requestRules == 0 && this.responseRules == 0) {
this.liucheng_list[indexOne].request_fields = requestData;
this.liucheng_list[indexOne].response_fields = responseData;
this.liucheng_list[indexOne].checkPass = true;
} else if (this.liucheng_list[indexOne].requestRules != 0) {
if (showEveryOne) {
this.$message.error(
`请完善服务${indexOne + 1}中请求参数信息中的字段名称`
);
}
this.liucheng_list[indexOne].checkPass = false;
} else if (this.liucheng_list[indexOne].responseRules != 0) {
if (showEveryOne) {
this.$message.error(
`请完善服务${indexOne + 1}中返回参数信息中的字段名称`
);
}
this.liucheng_list[indexOne].checkPass = false;
}
},
checkTableOne(arr, rule, indexOne) {
let self = this;
for (let i = 0; i < arr.length; i++) {
if (arr[i].name && arr[i].name != "") {
if (!arr[i].label || arr[i].label == "") {
if (rule == 0) {
this.requestRules = 1;
} else if (rule == 1) {
this.responseRules = 1;
}
return false;
}
}
if (arr[i].children && arr[i].children.length != 0) {
self.checkTable(arr[i].children, rule, indexOne);
}
}
}
},
mounted() {
let self = this;
window.addEventListener("message", self.listeners, false);
self.judgeMap();
self.getArea();
},
created() {
let _self = this;
_self.getCurrentUser();
let webmap_data = JSON.parse(sessionStorage.getItem("shareWebMapParam"));
if (webmap_data) {
_self.$store.commit("setZnztParams", webmap_data);
}
let cesiummap_data = JSON.parse(
sessionStorage.getItem("shareCesiumMapParam")
);
if (cesiummap_data) {
_self.$store.commit("setCesiumMapParams", cesiummap_data);
}
let appmap_data = JSON.parse(
sessionStorage.getItem("shareAppBuilderParam")
);
if (appmap_data) {
_self.$store.commit("setAppBuilderParams", appmap_data);
}
}
};
</script>
<style scoped>
.fwcs {
width: 1200px;
margin: 0 auto;
margin-top: -157px;
margin-bottom: 20px;
}
.fwcs_btn_act {
background-color: #e56600;
color: #ffffff;
margin-bottom: 10px;
margin-left: 10px;
}
.fwcs_btn_dis {
background-color: #e3e5ef;
color: #8890a7;
margin-bottom: 10px;
margin-left: 10px;
}
.fwcs_btn_img {
position: relative;
top: 2px;
margin-right: 4px;
}
.gray_line {
width: 100%;
margin: 20px auto;
height: 1px;
background-color: #dcdfe6;
}
.fwcs_fwdz {
color: #58617a;
margin: 20px 15px 15px;
font-size: 14px;
}
.input-with-select {
width: 70%;
}
.fwcs_btn_fwcs {
background-color: #0f2683;
color: #ffffff;
margin-left: 10px;
}
.sjfw_qqcstx {
color: #58617a;
margin: 10px 15px;
font-size: 14px;
}
.skfw_csfwxx {
color: #58617a;
margin: 10px 15px;
font-size: 14px;
}
.sjfw_fhcstx {
color: #58617a;
margin: 40px 15px 10px;
font-size: 14px;
}
.btn_footer {
display: flex;
justify-content: flex-end;
margin: 40px 10px 10px;
}
.btn_footer .reset {
width: 100px;
background-color: #c3caf8;
color: #0f2683;
}
.btn_footer .next {
width: 100px;
background-color: #0f2683;
color: #f8f9fd;
}
.btn_footer .previous {
background-color: #c3caf8;
color: #0f2683;
}
.btn_footer .registe {
width: 100px;
background-color: #0f2683;
color: #f8f9fd;
}
.sqxx_row {
padding: 0 20px;
}
.sqxx_title {
color: #58617a;
font-size: 14px;
margin: 10px 15px;
}
.sqxx_select {
width: 100%;
}
.center_line_c {
margin: 0 auto;
}
.center_line {
background-color: #f4f7fc;
width: 2px;
height: 400px;
position: relative;
left: 50%;
}
.sjfw_qqt {
margin: 0 20px 15px;
}
.skfw_fwlx {
margin: 20px 15px;
color: #58617a;
font-size: 14px;
}
.skfw_fwlx_radios {
margin: 10px 0 0;
}
.test_succ {
width: 100%;
margin: 0 auto;
}
.skcs_jg {
height: 100px;
display: flex;
align-items: center;
justify-content: center;
color: #0f2683;
font-size: 20px;
}
.skcs_jg_img {
position: relative;
top: 3px;
}
.zhyy_select {
width: 70%;
}
.fwcs_add .formname {
color: #58617a;
font-size: 14px;
margin-left: 10px;
}
.form_in {
width: 1000px;
}
.one_service {
width: 100%;
}
.one_name {
color: #58617a;
font-size: 14px;
margin: 0 15px 10px 15px;
}
.one_name_in {
width: 70%;
}
.one_url {
color: #58617a;
font-size: 14px;
margin: 20px 15px 10px;
}
.btn_footer_one {
margin: 40px 10px 10px;
}
.new_one {
background-color: #515fe7;
color: #e6ebfe;
}
.del_one {
width: 100px;
background-color: #e15260;
color: #fcfafa;
}
.reset_one {
width: 100px;
background-color: #c3caf8;
color: #0f2683;
}
.next_one {
width: 100px;
background-color: #0f2683;
color: #e6ebfe;
float: right;
}
.center_line_one {
background-color: #f4f7fc;
width: 2px;
height: 100px;
position: relative;
left: 50%;
}
.lc_alert {
margin-top: 20px;
background-color: #f8f9fd;
border-radius: 8px;
width: 70%;
padding: 20px;
display: flex;
justify-content: space-between;
color: #8890a7;
}
.lc_alert i {
position: relative;
top: 4px;
}
.lc_alert p {
width: calc(100% - 24px);
}
.title_bc {
color: #a9aec0;
}
.lc_upf {
width: 70%;
}
.gz_fhsjgs_rad {
margin-left: 10px;
}
.jkxy {
margin-left: 20px;
}
.ip_block {
border-radius: 8px;
border: solid 1px #e3e5ef;
padding: 10px 0 0 10px;
line-height: 24px;
}
.ip_item {
display: inline-block;
position: relative;
background-color: #e6ebfe;
border-radius: 4px;
color: #0f2683;
font-size: 12px;
line-height: 24px;
padding: 0 26px 0 8px;
margin-right: 10px;
margin-bottom: 10px;
}
.ip_del {
position: absolute;
right: 8px;
top: 6px;
font-size: 14px;
color: #6573ae;
cursor: pointer;
}
.ip_del:hover {
color: #e56600;
}
.add_ip {
background-color: #495feb;
border-radius: 4px;
color: #f8f9fd;
font-size: 12px;
line-height: 24px;
padding: 0 8px;
margin-right: 10px;
margin-bottom: 10px;
}
.ip_input {
width: 110px;
margin-right: 10px;
margin-bottom: 10px;
}
.filebtn {
width: 76px;
height: 32px;
line-height: 32px;
text-align: center;
color: #e6ebfe;
background-color: #515fe7;
border-radius: 6px;
display: inline-block;
font-size: 14px;
margin-left: 8px;
cursor: pointer;
text-decoration: none;
}
.cp_mb {
padding: 0 0 16px 8px;
}
.registration {
width: 430px;
margin: 10px auto;
}
.registration a {
color: #0000ff;
text-decoration: none;
}
.registration p {
line-height: 26px;
}
.registration p:nth-of-type(1) {
color: #0000ff;
}
</style>
<style>
.fwcs_fwdz_inner .el-select .el-input {
width: 130px;
background-color: #0f2683;
color: #ffffff;
border-radius: 8px 0px 0px 8px;
}
.fwcs_tabs .el-tabs__header {
margin: 20px 0;
}
.zhyy_select .el-input__prefix,
.el-input__suffix {
position: absolute;
top: 0;
right: 10px;
/* -webkit-transition: all 0.3s; */
height: 100%;
color: #c0c4cc;
text-align: right;
}
.lc_upf .el-upload {
width: 100%;
}
.lc_upf .el-upload-dragger {
width: 100%;
}
.ip_input .el-input__inner {
border-radius: 4px;
padding: 0 8px;
font-size: 12px;
line-height: 24px;
height: 24px;
}
</style>
<template>
<div class="edit_page">
<div class="apass_breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item to="/productType">分类管理</el-breadcrumb-item>
<el-breadcrumb-item to="/productType/classList">产品分类管理</el-breadcrumb-item>
<el-breadcrumb-item>{{isAdd? '新增' : '编辑'}}</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container_box">
<el-form
ref="form"
class="detai_form"
:rules="rules"
:model="form"
>
<el-form-item label="" prop="typeCode">
<div>分类类别:</div>
<el-select
v-model="form.typeCode"
placeholder="请选择"
>
<el-option
v-for="(e, idx) in classTypes"
:key="idx"
:label="e.label"
:value="e.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="" prop="name">
<div>分类名称:</div>
<el-input
v-model="form.name"
placeholder="请输入分类名称"
></el-input>
</el-form-item>
<el-form-item label="" prop="servTemplate">
<div>服务模版:</div>
<el-select
v-model="form.servTemplate"
placeholder="请选择"
>
<el-option
v-for="(e, idx) in serviceTemplates"
:key="idx"
:label="e.label"
:value="e.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="" prop="pId" v-if="form.typeCode == 'service_type_2'">
<div>上级分类名称:</div>
<el-select
v-model="form.pId"
placeholder="请选择"
>
<el-option
v-for="(e, idx) in pClassNames"
:key="idx"
:label="e.label"
:value="e.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item prop="describe" label="">
<div>描述:</div>
<el-input
v-model="form.describe"
type="textarea"
placeholder="请输入分类描述"
rows="5"
/>
</el-form-item>
<el-form-item label="" prop="state">
<div>状态:</div>
<el-select
v-model="form.state"
placeholder="请选择"
>
<el-option
v-for="(e, idx) in stateTypes"
:key="idx"
:label="e.label"
:value="e.value"
></el-option>
</el-select>
</el-form-item>
</el-form>
<div class="apaas_button">
<el-button type="primary" @click="onSubmit('form')" class="right"
>保存</el-button
>
<el-button class="right" @click="backPage()">取消</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
form: {
typeCode: "", // 分类类别 0-服务分类 1-服务类型
name: "", // 分类名称
servTemplate: "", // 服务模版
pId: "", // 上级分类名称
describe: "", // 描述
state: 1 // 状态 0-停用 1-启用
},
rules: {
typeCode: [
{ required: true, message: "请选择分类类别", trigger: "change" },
],
name: [
{ required: true, message: "请输入分类名称", trigger: "blur" },
],
servTemplate: [
{ required: true, message: "请选择服务模版", trigger: "change" },
],
pId: [
{ required: true, message: "请选择上级分类名称", trigger: "change" },
],
describe: [
],
state:[
{ required: true, message: "请选择状态", trigger: "change" },
]
}, // 表单校验
classTypes: [
{
label: "服务分类",
value: 'service_type_1'
},
{
label: "服务类型",
value: 'service_type_2'
},
], // 分类类别
serviceTemplates:[
{
label: "数据服务",
value: 1
},
{
label: "时空服务-地图服务",
value: 2
},
{
label: "时空服务-要素服务",
value: 3
},
{
label: "时空服务-WFS",
value: 4
},
{
label: "时空服务-WMS",
value: 5
},
{
label: "视频服务",
value: 6
},
{
label: "融合服务",
value: 7
},
{
label: "综合服务-模型算法类",
value: 8
},
{
label: "综合服务-查询验证类",
value: 9
},
{
label: "综合服务-流程类",
value: 10
},
{
label: "综合服务-应用类",
value: 11
},
], // 模版
pClassNames: [], // 上级分类
stateTypes: [
{
label: "启用",
value: 1
},
{
label: "禁用",
value: 0
},
] // 状态
}
},
computed: {
isAdd() {
return this.$route.path.indexOf('add') > -1
} // true为新增false为编辑
},
created() {
if (!this.isAdd) {
let id = this.$route.params.id
this.getDetail(id) // 获取详情
}
this.getClassTypes() // 获取全部服务分类
},
methods: {
getDetail(id) {
this.$api.productType.getClassDetail(id).then(res => {
if (res.data.success == 1) {
let data = res.data.data
this.form = {
id: data.id,
describe: data.describe,
name: data.name,
servTemplate: data.serv_template,
pId: data.type_code == 'service_type_1' ? '' : data.p_id,
state: data.state,
typeCode: data.type_code
}
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 获取详情
getClassTypes() {
this.$api.productType.getClassTypes().then(res => {
if (res.data.success == 1) {
let data = res.data.data || []
data.forEach(e => {
this.pClassNames.push({
label: e.className,
value: e.id
})
})
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 获取全部服务分类
onSubmit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
if (this.isAdd) {
this.add_class();
}else {
this.edit_class()
}
} else {
console.log("error submit!!");
return false;
}
});
}, // 保存按钮
edit_class() {
if (this.form.typeCode == 'service_type_1') {
this.form.pId = 0
}
this.$api.productType.editClass(this.form).then(res => {
if (res.data.success == 1) {
this.$message.success("编辑成功")
this.backPage()
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 编辑
add_class() {
if (this.form.typeCode == 'service_type_1') {
this.form.pId = 0
}
this.$api.productType.addNewClass(this.form).then(res => {
if (res.data.success == 1) {
this.$message.success("新增成功")
this.backPage()
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 新增
backPage() {
this.$router.back(-1);
}, // 取消
}
}
</script>
<style lang="less" scoped>
.edit_page {
height: 100%;
padding: 0 20px;
.container_box {
height: calc(100% - 70px);
background-color: #fff;
border-radius: 10px;
padding: 15px 20px;
.detai_form {
width: 60%;
.el-select {
width: 100%;
}
}
.right {
float: right;
margin-left: 20px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="service_management_list">
<div class="apass_breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="`/message_new`">分类管理</el-breadcrumb-item>
<el-breadcrumb-item>服务分类</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container_box">
<div class="search_box">
<span>分类名称:</span>
<el-input
v-model="filter.search"
prefix-icon="el-icon-search"
placeholder="请输入关键字"
style="width:240px;"
></el-input>
<span style="margin-left: 24px">状态:</span>
<el-select
v-model="filter.state"
placeholder="请选择"
>
<el-option
v-for="(e, idx) in stateTypes"
:key="idx"
:label="e.label"
:value="e.value"
></el-option>
</el-select>
<div class="searchBtn" @click="searchAction">查询</div>
<div class="searchBtn resBtn" @click="resChange">重置</div>
</div>
<div class="btn_box">
<div @click="addClass">
新建分类
</div>
</div>
<div class="list_box">
<table-um
:headers="listHeader"
:datas="listData"
:stripe="true"
@changeState="changeRowState"
@edit="editRow"
@del="delRow"
></table-um>
<list-pagination
class="pagination_box"
:total="listTotal"
:page-sizes="[10,20,50]"
:page-size="filter.size"
:current-page="filter.page"
@size-change="changePageSize"
@current-change="changeCurrentPage"
></list-pagination>
</div>
</div>
<el-dialog
title="提示"
:visible.sync="delDialogFlag"
width="400px"
>
<span class="form_box">
删除后无法恢复,请确认是否删除
</span>
<span slot="footer" class="dialog-footer">
<el-button @click="delDialogFlag = false">取 消</el-button>
<el-button type="primary" @click="confirmDel">确 认</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import tableUm from "@/components/table/table-um";
import ListPagination from "@/components/comments-pagination";
import helper from "@/services/helper";
export default {
components: {
tableUm,
ListPagination,
},
data: () => ({
helper: helper,
stateTypes: [
{
label: "禁用",
value: 0
},
{
label: "启用",
value: 1
},
],
filter: {
search: "",
size: 10,
page: 1,
state: ""
},
listTotal: 0,
listHeader: [
{
label: "分类类别",
prop: "classType",
align: "center",
width: 240,
},
{
label: "分类名称",
prop: "className",
align: "center",
width: 240,
},
{
label: "上级分类名称",
prop: "pClassName",
align: "center",
width: 240,
},
{
label: "描述",
prop: "desc",
align: "center",
},
{
label: "状态",
prop: "stateName",
align: "center",
width: 120,
},
{
label: "更新时间",
prop: "updateTime",
width: 220,
align: "center"
},
{
label: "操作",
type: "Button",
align: "center",
width: 240,
btnList: [
{
label: "编辑",
type: 'edit',
disflag: true,
disabledRule(item) {
return item.state != 1 && item.canDelete == 1;
},
line: '|'
},
{
label: "启用",
type: 'changeState',
select: true,
disflag: true,
disabledRule(item) {
return item.state != 1;
},
line: '|'
},
{
label: "禁用",
type: 'changeState',
select: true,
disflag: true,
disabledRule(item) {
return item.state == 1;
},
line: '|'
},
{
label: "删除",
type: 'del',
disflag: true,
disabledRule(item) {
return item.state != 1 && item.canDelete == 1
},
},
],
},
],
listData: [],
delDialogFlag: false,
delRowId: null
}),
computed: {},
created() {
this.getList()
},
methods: {
changePageSize(val) {
this.filter.page = 1
this.filter.size = val
this.getList()
}, // 改变每页条数
changeCurrentPage(val) {
this.filter.page = val
this.getList()
}, // 换页
getList() {
this.$api.productType.getClassTypeList({...this.filter}).then(res => {
if (res.data.success == 1) {
console.log(res.data.data)
this.listData = res.data.data.list || []
this.listData.forEach(e => {
e.updateTime = helper.dateStringTransform(e.updateTime)
e.pClassName = e.pClassName == '' ? '-' : e.pClassName
})
this.listTotal = res.data.data.total
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
// 全部分类
}, // 获取列表
searchAction() {
this.filter.page = 1,
this.getList()
}, // 搜索
resChange() {
this.filter = {
page: 1,
size: 10,
search: "",
state: "",
}
this.getList()
}, // 重置搜索
addClass() {
this.$router.push('/productType/classList/add')
}, // 新增分类
changeRowState(row) {
let params = {
id: row.id,
state: row.state == 1 ? 0 : 1
}
this.$api.productType.changeClassState(params).then(res => {
if (res.data.success == 1) {
this.$message.success("状态更新成功")
this.resChange()
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 启用/禁用分类
editRow(row) {
if (row.canDelete == 0) {
return
}else {
if (row.state == 1) {
return
}
}
this.$router.push(`/productType/classList/edit/${row.id}`)
}, // 编辑分类
delRow(row) {
if (row.canDelete == 0) {
return
}else {
if (row.state == 1) {
return
}
}
this.delDialogFlag = true
this.delRowId = row.id
}, // 删除分类
confirmDel() {
this.$api.productType.deleteClass(this.delRowId).then(res => {
if (res.data.success == 1) {
this.$message.success("删除成功")
this.delDialogFlag = false
this.resChange()
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 确认删除
},
};
</script>
<style scoped>
.apaas_button {
position: relative;
}
.apaas_button > .el-button {
position: absolute;
top: 0;
right: 0;
z-index: 9;
}
</style>
<style lang="less" scoped>
.service_management_list {
height: 100%;
min-width: 1200px;
padding: 0 20px;
.breadcrumb_box {
>.el-breadcrumb {
padding: 15px 0;
.el-breadcrumb__inner {
font-size: 14px;
font-weight: bold;
color: #898d9e;
line-height: 23px;
}
.el-breadcrumb__item:last-child .el-breadcrumb__inner {
color: #242c43;
font-weight: normal;
}
}
}
.container_box {
width: 100%;
height: calc(100% - 60px);
background-color: #fff;
border-radius: 6px;
padding: 16px 20px 16px;
.search_box {
// margin-top: 20px;
.searchBtn {
display: inline-block;
margin-left: 20px;
width: 80px;
background-color: #0f2683;
color: #fff;
height: 40px;
text-align: center;
line-height: 40px;
border-radius: 4px;
cursor: pointer;
}
.resBtn {
background-color: #fff;
border: 1px solid #dcdfe6;
box-sizing: border-box;
color: #0f2683;
}
}
.btn_box {
margin: 16px 0;
display: flex;
div {
width: 100px;
height: 40px;
background-color: #0f2683;
border-radius: 4px;
text-align: center;
line-height: 40px;
color: #fff;
cursor: pointer;
margin-right: 16px;
}
}
.list_box {
width: 100%;
height: calc(100% - 111px);
position: relative;
.ces-table-page {
height: calc(100% - 44px);
overflow: hidden auto;
&::-webkit-scrollbar {
width: 16px;
height: 1px;
}
&::-webkit-scrollbar-thumb {
border-radius: 8px;
/* background: #dde4ff; */
box-shadow: 8px 0 0 #a5adb7 inset;
border: 4px solid rgba(0, 0, 0, 0);
}
&::-webkit-scrollbar-track {
border-radius: 8px;
/* background: #f4f4f4; */
box-shadow: 8px 0 0 #f4f4f4 inset;
border: 4px solid rgba(0, 0, 0, 0);
}
}
.pagination_box {
width: 100%;
position: absolute;
bottom: 0;
}
}
}
.form_box {
display: block;
padding: 0px 30px;
.el-select {
width: 100%;
}
.radio {
text-align: left;
}
}
}
</style>
<template>
<div class="edit_page">
<div class="apass_breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item to="/productType">分类管理</el-breadcrumb-item>
<el-breadcrumb-item to="/productType/domainList">领域分类</el-breadcrumb-item>
<el-breadcrumb-item>{{isAdd? '新增' : '编辑'}}</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container_box">
<el-form
ref="form"
class="detai_form"
:rules="rules"
:model="form"
>
<el-form-item label="" prop="name">
<div>分类名称:</div>
<el-input
v-model="form.name"
placeholder="请输入分类名称"
></el-input>
</el-form-item>
<el-form-item prop="describe" label="">
<div>描述:</div>
<el-input
v-model="form.describe"
type="textarea"
placeholder="请输入分类描述"
rows="5"
/>
</el-form-item>
<el-form-item label="" prop="state">
<div>状态:</div>
<el-select
v-model="form.state"
placeholder="请选择"
>
<el-option
v-for="(e, idx) in stateTypes"
:key="idx"
:label="e.label"
:value="e.value"
></el-option>
</el-select>
</el-form-item>
</el-form>
<div class="apaas_button">
<el-button type="primary" @click="onSubmit('form')" class="right"
>保存</el-button
>
<el-button class="right" @click="backPage()">取消</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
form: {
name: "", // 领域名称
describe: "", // 描述
state: 1 // 状态
},
rules: {
name: [
{ required: true, message: "请输入分类名称", trigger: "blur" },
],
describe: [
],
state:[
{ required: true, message: "请选择状态", trigger: "change" },
]
},
stateTypes: [
{
label: "启用",
value: 1
},
{
label: "停用",
value: 0
},
]
}
},
computed: {
isAdd() {
return this.$route.path.indexOf('add') > -1
}
},
created() {
if (!this.isAdd) {
let id = this.$route.params.id
this.getDetail(id)
}
},
methods: {
getDetail(id) {
this.$api.productType.getDomainDetail(id).then(res => {
if (res.data.success == 1) {
let data = res.data.data
this.form = {
id: data.id,
describe: data.describe,
name: data.name,
state: data.state,
}
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 获取详情
onSubmit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
if (this.isAdd) {
this.add_domain();
}else {
this.edit_domain()
}
} else {
console.log("error submit!!");
return false;
}
});
}, // 保存按钮
edit_domain() {
this.$api.productType.editDomain(this.form).then(res => {
if (res.data.success == 1) {
this.$message.success("编辑成功")
this.backPage()
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 编辑
add_domain() {
this.$api.productType.addNewDomain(this.form).then(res => {
if (res.data.success == 1) {
this.$message.success("新增成功")
this.backPage()
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 新增
backPage() {
this.$router.back(-1);
}, // 取消
}
}
</script>
<style lang="less" scoped>
.edit_page {
height: 100%;
padding: 0 20px;
.container_box {
height: calc(100% - 70px);
background-color: #fff;
border-radius: 10px;
padding: 15px 20px;
.detai_form {
width: 60%;
.el-select {
width: 100%;
}
}
.right {
float: right;
margin-left: 20px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="service_management_list">
<div class="apass_breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="`/message_new`">分类管理</el-breadcrumb-item>
<el-breadcrumb-item>领域分类</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container_box">
<div class="search_box">
<span>分类名称:</span>
<el-input
v-model="filter.search"
prefix-icon="el-icon-search"
placeholder="请输入关键字"
style="width:240px;"
></el-input>
<span style="margin-left: 24px">状态:</span>
<el-select
v-model="filter.state"
placeholder="请选择"
>
<el-option
v-for="(e, idx) in stateTypes"
:key="idx"
:label="e.label"
:value="e.value"
></el-option>
</el-select>
<div class="searchBtn" @click="searchAction">查询</div>
<div class="searchBtn resBtn" @click="resChange">重置</div>
</div>
<div class="btn_box">
<div @click="addClass">
新建分类
</div>
</div>
<div class="list_box">
<table-um
:headers="listHeader"
:datas="listData"
:stripe="true"
@changeState="changeRowState"
@edit="editRow"
@del="delRow"
></table-um>
<list-pagination
class="pagination_box"
:total="listTotal"
:page-sizes="[10,20,50]"
:page-size="filter.size"
:current-page="filter.page"
@size-change="changePageSize"
@current-change="changeCurrentPage"
></list-pagination>
</div>
</div>
<el-dialog
title="提示"
:visible.sync="delDialogFlag"
width="400px"
>
<span class="form_box">
删除后无法恢复,请确认是否删除
</span>
<span slot="footer" class="dialog-footer">
<el-button @click="delDialogFlag = false">取 消</el-button>
<el-button type="primary" @click="confirmDel">确 认</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import tableUm from "@/components/table/table-um";
import ListPagination from "@/components/comments-pagination";
import helper from "@/services/helper";
export default {
components: {
tableUm,
ListPagination,
},
data: () => ({
helper: helper,
stateTypes: [
{
label: "禁用",
value: 0
},
{
label: "启用",
value: 1
},
],
filter: {
search: "",
size: 10,
page: 1,
state: ""
},
listTotal: 0,
listHeader: [
{
label: "分类名称",
prop: "name",
align: "center",
width: 240,
},
{
label: "描述",
prop: "desc",
align: "center",
},
{
label: "状态",
prop: "stateName",
align: "center",
width: 120,
},
{
label: "更新时间",
prop: "updateTime",
width: 220,
align: "center"
},
{
label: "操作",
type: "Button",
align: "center",
width: 240,
btnList: [
{
label: "编辑",
type: 'edit',
disflag: true,
disabledRule(item) {
return item.state != 1;
},
line: '|'
},
{
label: "启用",
type: 'changeState',
select: true,
disflag: true,
disabledRule(item) {
return item.state != 1;
},
line: '|'
},
{
label: "禁用",
type: 'changeState',
select: true,
disflag: true,
disabledRule(item) {
return item.state == 1;
},
line: '|'
},
{
label: "删除",
type: 'del',
disflag: true,
disabledRule(item) {
return item.state != 1
},
},
],
},
],
listData: [],
delDialogFlag: false,
delRowId: null
}),
computed: {},
created() {
this.getList()
},
methods: {
changePageSize(val) {
this.filter.page = 1
this.filter.size = val
this.getList()
}, // 改变每页条数
changeCurrentPage(val) {
this.filter.page = val
this.getList()
}, // 换页
getList() {
console.log(this.filter)
this.$api.productType.getDomainTypeList(this.filter).then(res => {
if (res.data.success == 1) {
this.listData = res.data.data.list || []
this.listData.forEach(e => {
e.updateTime = helper.dateStringTransform(e.updateTime)
})
this.listTotal = res.data.data.total
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 获取列表
searchAction() {
this.filter.page = 1,
this.getList()
}, // 搜索
resChange() {
this.filter = {
page: 1,
size: 10,
search: "",
state: "",
}
this.getList()
}, // 重置搜索
addClass() {
this.$router.push('/productType/domainList/add')
}, // 新增分类
changeRowState(row) {
let params = {
id: row.id,
state: row.state == 1 ? 0 : 1
}
this.$api.productType.changeDomainState(params).then(res => {
if (res.data.success == 1) {
this.$message.success("状态更新成功")
this.resChange()
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 启用/禁用分类
editRow(row) {
if (row.state == 1) {
return
}
this.$router.push(`/productType/domainList/edit/${row.id}`)
}, // 编辑分类
delRow(row) {
if (row.state == 1) {
return
}
this.delDialogFlag = true
this.delRowId = row.id
}, // 删除分类
confirmDel() {
this.$api.productType.deleteDomain(this.delRowId).then(res => {
if (res.data.success == 1) {
this.$message.success("删除成功")
this.delDialogFlag = false
this.resChange()
}else {
this.$message.error(res.data.errMsg)
}
}).catch(err => {
console.log(err)
})
}, // 确认删除
},
};
</script>
<style scoped>
.apaas_button {
position: relative;
}
.apaas_button > .el-button {
position: absolute;
top: 0;
right: 0;
z-index: 9;
}
</style>
<style lang="less" scoped>
.service_management_list {
height: 100%;
min-width: 1200px;
padding: 0 20px;
.breadcrumb_box {
>.el-breadcrumb {
padding: 15px 0;
.el-breadcrumb__inner {
font-size: 14px;
font-weight: bold;
color: #898d9e;
line-height: 23px;
}
.el-breadcrumb__item:last-child .el-breadcrumb__inner {
color: #242c43;
font-weight: normal;
}
}
}
.container_box {
width: 100%;
height: calc(100% - 60px);
background-color: #fff;
border-radius: 6px;
padding: 16px 20px 16px;
.search_box {
// margin-top: 20px;
.searchBtn {
display: inline-block;
margin-left: 20px;
width: 80px;
background-color: #0f2683;
color: #fff;
height: 40px;
text-align: center;
line-height: 40px;
border-radius: 4px;
cursor: pointer;
}
.resBtn {
background-color: #fff;
border: 1px solid #dcdfe6;
box-sizing: border-box;
color: #0f2683;
}
}
.btn_box {
margin: 16px 0;
display: flex;
div {
width: 100px;
height: 40px;
background-color: #0f2683;
border-radius: 4px;
text-align: center;
line-height: 40px;
color: #fff;
cursor: pointer;
margin-right: 16px;
}
}
.list_box {
width: 100%;
height: calc(100% - 111px);
position: relative;
.ces-table-page {
height: calc(100% - 44px);
overflow: hidden auto;
&::-webkit-scrollbar {
width: 16px;
height: 1px;
}
&::-webkit-scrollbar-thumb {
border-radius: 8px;
/* background: #dde4ff; */
box-shadow: 8px 0 0 #a5adb7 inset;
border: 4px solid rgba(0, 0, 0, 0);
}
&::-webkit-scrollbar-track {
border-radius: 8px;
/* background: #f4f4f4; */
box-shadow: 8px 0 0 #f4f4f4 inset;
border: 4px solid rgba(0, 0, 0, 0);
}
}
.pagination_box {
width: 100%;
position: absolute;
bottom: 0;
}
}
}
.form_box {
display: block;
padding: 0px 30px;
.el-select {
width: 100%;
}
.radio {
text-align: left;
}
}
}
</style>
<template>
<div class="fwgl_container">
<side-nav-bar
title="分类管理"
imgSrc="tool_fuwu"
:nav-list="navList"
:title-path="navList[0] && navList[0].path"
></side-nav-bar>
<div class="main_container">
<router-view :key="'type_' + $route.params.type"></router-view>
</div>
</div>
</template>
<script>
import sideNavBar from "@/components/side-nav-bar";
export default {
components: {
sideNavBar
},
data: () => ({
navList: []
}),
watch: {
"$route.fullPath"(path) {
this.initNavList();
}
},
methods: {
initNavList() {
this.$api.general.getNowMenu({ teamName: "APAAS3" }).then(response => {
if (response.data.success == 1) {
let arr = response.data.data[0].Child;
let brr = []
arr.forEach(e => {
if (e.visit_url === '/workplace') {
brr = e.Child || []
}
})
let user_index = brr.findIndex(item => item.visit_url == "/productType");
if (user_index != -1) {
this.navList = brr[user_index].Child;
this.navList.forEach(item => {
item.name = item.menu_name;
item.path = item.visit_url;
});
}
}
});
}
},
mounted() {
this.initNavList();
}
};
</script>
<style scoped>
.fwgl_container {
height: calc(100vh - 58px);
display: flex;
justify-content: flex-start;
align-items: stretch;
}
.side_nav_bar {
width: 180px;
flex-shrink: 0;
}
.main_container {
width: calc(100% - 180px);
flex-grow: 1;
flex-shrink: 1;
background-color: #f6f7fb;
overflow: auto;
}
</style>
......@@ -203,9 +203,9 @@
<template slot="content">
<div class="dialog-content">
<el-form :model="publicForm" :rules="public_rules" ref="publicForm" class="demo-ruleForm">
<p class="formname">务领域:</p>
<p class="formname">务领域:</p>
<el-form-item prop="area">
<el-select v-model="publicForm.area" placeholder="请选择务领域">
<el-select v-model="publicForm.area" placeholder="请选择务领域">
<el-option v-for="item in area_arr" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
......@@ -289,7 +289,7 @@ export default {
},
public_rules: {
area: [
{ required: true, message: "请选择务领域", trigger: "change" }
{ required: true, message: "请选择务领域", trigger: "change" }
],
open: [{ required: true, message: "请选择开放程度", trigger: "change" }]
},
......@@ -330,7 +330,7 @@ export default {
},
rules1: {
area: [
{ required: true, message: "请选择务领域", trigger: "change" }
{ required: true, message: "请选择务领域", trigger: "change" }
],
resource: [
{ required: true, message: "请选择开放程度", trigger: "change" }
......
......@@ -4,6 +4,7 @@ import user from '@/request/api/user';
import authority from '@/request/api/authority';
import general from '@/request/api/general';
import dataAnalysis from '@/request/api/data-analysis';
import productType from '@/request/api/product-type'
export default {
workbench,
......@@ -11,5 +12,6 @@ export default {
user,
authority,
general,
dataAnalysis
dataAnalysis,
productType
}
\ No newline at end of file
import axios from '@/request/http'; // 导入http中创建的axios实例
import qs from 'qs'; // 根据需求是否导入qs模块
const productType = {
// 分类相关接口
getClassTypeList(params) {
return axios.get(`/apaas/service/v3/service/manager/servtypeList`,{params})
}, // 服务分类/服务类型列表
changeClassState(params) {
return axios.put(`/apaas/service/v3/service/manager/servtype/state`,params)
}, // 服务分类/服务类型状态改变
deleteClass(id) {
return axios.delete(`/apaas/service/v3/service/manager/servtype/${id}`)
}, // 删除服务分类/服务类型
addNewClass(params) {
return axios.post(`/apaas/service/v3/service/manager/servtype`,params)
}, // 新增服务分类/服务类型
editClass(params) {
return axios.put(`/apaas/service/v3/service/manager/servtype`,params)
}, // 编辑服务分类/服务类型
getClassDetail(id) {
return axios.get(`/apaas/service/v3/service/manager/servtype/${id}`)
}, // 获取服务分类/服务类型详情
getClassTypes() {
return axios.get(`/apaas/service/v3/service/manager/allServtypes`)
}, // 获取所有的产品分类
// 领域相关接口
getDomainTypeList(params) {
return axios.get(`/apaas/service/v3/service/manager/servareaList`,{params})
}, // 领域分类列表
changeDomainState(params) {
return axios.put(`/apaas/service/v3/service/manager/servarea/state`,params)
}, // 领域分类状态改变
deleteDomain(id) {
return axios.delete(`/apaas/service/v3/service/manager/servarea/${id}`)
}, // 删除领域分类
addNewDomain(params) {
return axios.post(`/apaas/service/v3/service/manager/servarea`,params)
}, // 新增领域分类
editDomain(params) {
return axios.put(`/apaas/service/v3/service/manager/servarea`,params)
}, // 编辑领域分类
getDomainDetail(id) {
return axios.get(`/apaas/service/v3/service/manager/servarea/${id}`)
}, // 获取领域分类详情
}
export default productType;
......@@ -29,12 +29,12 @@ export default new Router({
path: "/fwzc", // 服务注册
name: "fwzc",
redirect: "/fwzc/fwcs",
component: () => import("@/pages/workbench/fwzc_fwcs"),
component: () => import("@/pages/workbench/fwzc_fwcs_new"),
children: [
{
path: "/fwzc/fwcs", // 服务注册/服务测试
name: "fwcs",
component: () => import("@/pages/workbench/fwzc_fwcs"),
component: () => import("@/pages/workbench/fwzc_fwcs_new"),
},
],
}, // 工作台 - 服务注册模块
......@@ -147,6 +147,44 @@ export default new Router({
},
],
}, // 工作台 - 应用管理模块
{
path: "/productType",
name: "productType",
component: () => import("@/pages/workbench/product-type"),
redirect: "/productType/classList",
children: [
{
path: "/productType/classList",
name: "/productTypeClassList",
component: () => import("@/pages/workbench/product-type/class_list")
}, // 产品分类与产品类型
{
path: "/productType/classList/add",
name: "/productTypeClassListAdd",
component: () => import("@/pages/workbench/product-type/class_edit")
}, // 产品分类与产品类型新增
{
path: "/productType/classList/edit/:id",
name: "/productTypeClassListEdit",
component: () => import("@/pages/workbench/product-type/class_edit")
}, // 产品分类与产品类型编辑
{
path: "/productType/domainList",
name: "/productTypeDomainList",
component: () => import("@/pages/workbench/product-type/domain_list")
}, // 领域管理
{
path: "/productType/domainList/add",
name: "/productTypeDomainListAdd",
component: () => import("@/pages/workbench/product-type/domain_edit")
}, // 领域分类新增
{
path: "/productType/domainList/edit/:id",
name: "/productTypeDomainListEdit",
component: () => import("@/pages/workbench/product-type/domain_edit")
}, // 领域分类编辑
],
}, // 分类管理
{
path: "/technical_support",
name: "technicalSupport",
......@@ -278,55 +316,60 @@ export default new Router({
{
path: "/shop", // 服务超市
name: "shop",
redirect: "/shop/data_service_list/5",
redirect: "/shop/data_service_list",
component: () => import("@/pages/service_shop/shop"),
children: [
{
path: "/shop/data_service_list/:id", // 数据服务列表页
path: "/shop/data_service_list/:id", // 应用商店列表页
name: "shopDataList",
component: () => import("@/pages/service_shop/shop_list-new"),
component: () => import("@/pages/service_shop/shop_list_new"),
},
{
path: "/shop/space_time_service_list/:id", // 时空服务列表页
name: "shopSpaceTimeList",
component: () => import("@/pages/service_shop/shop_list-new"),
},
{
path: "/shop/video_service_list/:id", // 视频服务列表页
name: "shopVideoList",
component: () => import("@/pages/service_shop/shop_list-new"),
},
{
path: "/shop/perception_service_list/:id", // 感知服务列表页
name: "shopPerceptionList",
component: () => import("@/pages/service_shop/shop_list-new"),
},
{
path: "/shop/comprehensive_app_list/:id", // 综合应用列表页
name: "shopComAppList",
component: () => import("@/pages/service_shop/shop_list-new"),
},
{
path: "/shop/cloud", // 云资源服务
name: "shopCloud",
component: () => import("@/pages/service_shop/shop_cloud-new"),
},
path: "/shop/data_service_list", // 服务商店列表页
name: "shopDataList",
component: () => import("@/pages/service_shop/shop_list_new"),
},
// {
// path: "/shop/space_time_service_list/:id", // 时空服务列表页
// name: "shopSpaceTimeList",
// component: () => import("@/pages/service_shop/shop_list-new"),
// },
// {
// path: "/shop/video_service_list/:id", // 视频服务列表页
// name: "shopVideoList",
// component: () => import("@/pages/service_shop/shop_list-new"),
// },
// {
// path: "/shop/perception_service_list/:id", // 感知服务列表页
// name: "shopPerceptionList",
// component: () => import("@/pages/service_shop/shop_list-new"),
// },
// {
// path: "/shop/comprehensive_app_list/:id", // 综合应用列表页
// name: "shopComAppList",
// component: () => import("@/pages/service_shop/shop_list-new"),
// },
// {
// path: "/shop/cloud", // 云资源服务
// name: "shopCloud",
// component: () => import("@/pages/service_shop/shop_cloud-new"),
// },
{
path: "/shop/service_application_successfully", // 申请服务成功
name: "shopSuccess",
component: () =>
import("@/pages/service_shop/service_application_successfully"),
},
{
path: "/shop/app_store_list/:id", // 应用商店列表页
name: "shopAppStoreList",
component: () => import("@/pages/service_shop/shop_list-new"),
},
{
path: "/shop/products_list/:id", // 应用商店列表页
name: "shopAppStoreList",
component: () => import("@/pages/service_shop/shop_list-new"),
},
// {
// path: "/shop/app_store_list/:id", // 应用商店列表页
// name: "shopAppStoreList",
// component: () => import("@/pages/service_shop/shop_list_new"),
// },
// {
// path: "/shop/products_list/:id", // 应用商店列表页
// name: "shopAppStoreList",
// component: () => import("@/pages/service_shop/shop_list-new"),
// },
{
path: "/shop/shopping_cart", // 购物车页
name: "shoppingCart",
......@@ -343,37 +386,37 @@ export default new Router({
path: "/shop/sjfwDetail/:id",
name: "sjfwDetail",
component: () => import("@/pages/service_shop/sjfwDetail"),
}, // 服务超市 - 数据服务详情
{
path: "/shop/skfwDetail/:id",
name: "skfwDetail",
component: () => import("@/pages/service_shop/skfwDetail"),
}, // 服务超市 - 时空服务详情
{
path: "/shop/spfwDetail/:id",
name: "spfwDetail",
component: () => import("@/pages/service_shop/spfwDetail"),
}, // 服务超市 - 视频服务详情
{
path: "/shop/gzfwDetail/:id",
name: "sjfwDetail",
component: () => import("@/pages/service_shop/gzfwDetail"),
}, // 服务超市 - 感知服务详情
{
path: "/shop/zhfwDetail/:id",
name: "zhfwDetail",
component: () => import("@/pages/service_shop/zhfwDetail"),
}, // 服务超市 - 综合应用详情
{
path: "/shop/yysdDetail/:id",
name: "yysdDetail",
component: () => import("@/pages/service_shop/yysdDetail"),
}, // 服务超市 - 应用详情
{
path: "/shop/cpDetail/:id",
name: "cpDetail",
component: () => import("@/pages/service_shop/cpDetail"),
}, // 服务超市 - 产品资源详情
}, // 服务超市 - 服务详情
// {
// path: "/shop/skfwDetail/:id",
// name: "skfwDetail",
// component: () => import("@/pages/service_shop/skfwDetail"),
// }, // 服务超市 - 时空服务详情
// {
// path: "/shop/spfwDetail/:id",
// name: "spfwDetail",
// component: () => import("@/pages/service_shop/spfwDetail"),
// }, // 服务超市 - 视频服务详情
// {
// path: "/shop/gzfwDetail/:id",
// name: "sjfwDetail",
// component: () => import("@/pages/service_shop/gzfwDetail"),
// }, // 服务超市 - 感知服务详情
// {
// path: "/shop/zhfwDetail/:id",
// name: "zhfwDetail",
// component: () => import("@/pages/service_shop/zhfwDetail"),
// }, // 服务超市 - 综合应用详情
// {
// path: "/shop/yysdDetail/:id",
// name: "yysdDetail",
// component: () => import("@/pages/service_shop/yysdDetail"),
// }, // 服务超市 - 应用详情
// {
// path: "/shop/cpDetail/:id",
// name: "cpDetail",
// component: () => import("@/pages/service_shop/cpDetail"),
// }, // 服务超市 - 产品资源详情
{
path: "/workplace",
name: "workPlace",
......
......@@ -6,7 +6,8 @@ const store = new Vuex.Store({
state: {
role: 0, // 0:普通用户,1:组织管理员,2:超级管理员
userInfo: null, // 用户信息
serviceShopMenu: "/shop/data_service_list/5", // 服务超市侧边栏
// serviceShopMenu: "/shop/data_service_list/5", // 服务超市侧边栏
serviceShopMenu: null, // 服务超市侧边栏
fwglNav: [
["注册发布的服务", "申请的服务", "云资源服务"], // 普通用户
["组织服务管理", "服务审批管理", "云资源管理"], // 组织管理员
......
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