Commit 47983054 authored by 张宇迪's avatar 张宇迪

Merge branch 'dev'

parents 630e24b8 958d802a
...@@ -8,7 +8,7 @@ module.exports = { ...@@ -8,7 +8,7 @@ module.exports = {
dev: { dev: {
// Paths // Paths
assetsSubDirectory: "static", assetsSubDirectory: "static",
assetsPublicPath: "/", assetsPublicPath: "/apaas/ui/",
proxyTable: { proxyTable: {
"/apaas": { "/apaas": {
target: "https://apaas3.wodcloud.com/apaas/", target: "https://apaas3.wodcloud.com/apaas/",
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
} }
</style> </style>
</head> </head>
<script src="/apaas/ui/static/config/configmap.js"></script>
<body> <body>
<div id="app"></div> <div id="app"></div>
</body> </body>
......
...@@ -32,18 +32,19 @@ ...@@ -32,18 +32,19 @@
"vue-i18n": "^8.17.7", "vue-i18n": "^8.17.7",
"vue-resource": "^1.5.1", "vue-resource": "^1.5.1",
"vue-router": "^3.0.2", "vue-router": "^3.0.2",
"vue-super-flow": "^1.3.2",
"vuex": "^3.1.0", "vuex": "^3.1.0",
"xterm": "^4.7.0", "xterm": "^4.7.0",
"xterm-addon-fit": "^0.4.0", "xterm-addon-fit": "^0.4.0",
"yaml2json": "^1.0.2" "yaml2json": "^1.0.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/compat-data": "7.9.0",
"@babel/core": "^7.4.0", "@babel/core": "^7.4.0",
"@babel/plugin-syntax-jsx": "^7.2.0", "@babel/plugin-syntax-jsx": "^7.2.0",
"@babel/plugin-transform-runtime": "^7.4.0", "@babel/plugin-transform-runtime": "^7.4.0",
"@babel/preset-env": "^7.4.2", "@babel/preset-env": "^7.4.2",
"@babel/runtime": "^7.4.2", "@babel/runtime": "^7.4.2",
"@babel/compat-data": "7.9.0",
"autoprefixer": "^9.5.0", "autoprefixer": "^9.5.0",
"babel-loader": "^8.0.5", "babel-loader": "^8.0.5",
"babel-plugin-syntax-jsx": "^6.18.0", "babel-plugin-syntax-jsx": "^6.18.0",
...@@ -54,6 +55,8 @@ ...@@ -54,6 +55,8 @@
"file-loader": "^3.0.1", "file-loader": "^3.0.1",
"friendly-errors-webpack-plugin": "^1.7.0", "friendly-errors-webpack-plugin": "^1.7.0",
"html-webpack-plugin": "^3.2.0", "html-webpack-plugin": "^3.2.0",
"less": "^3.12.2",
"less-loader": "^6.2.0",
"mini-css-extract-plugin": "^0.5.0", "mini-css-extract-plugin": "^0.5.0",
"node-notifier": "^5.4.0", "node-notifier": "^5.4.0",
"optimize-css-assets-webpack-plugin": "^5.0.1", "optimize-css-assets-webpack-plugin": "^5.0.1",
......
...@@ -10,25 +10,37 @@ import bdMenu from "./components/menu"; ...@@ -10,25 +10,37 @@ import bdMenu from "./components/menu";
export default { export default {
data: () => ({}), data: () => ({}),
components: { components: {
bdMenu bdMenu,
}, },
methods: { methods: {
getCurrentUser() { getCurrentUser() {
this.$api.user.getNowUser().then(({ data }) => { this.$api.user.getNowUser().then(({ data }) => {
if (data.success == 1) { if (data.success == 1) {
console.log("--- --- ---");
console.log(data.data);
console.log("--- --- ---");
this.$store.commit("userInfofun", data.data); this.$store.commit("userInfofun", data.data);
} else { } else {
console.log(data.errMsg); console.log(data.errMsg);
} }
}); });
},
getMessage() {
this.$http
.get("/apaas/service/v3/mymsg/unread", {
params: {
size: 10,
page: 1,
},
})
.then(({ data }) => {
if (data.success === 1) {
this.$store.commit("setUnreadMessageCount", data.data.total || 0);
} }
});
},
}, },
created() { created() {
this.getCurrentUser(); this.getCurrentUser();
} this.getMessage();
},
}; };
</script> </script>
......
...@@ -609,6 +609,10 @@ width: 620px!important; ...@@ -609,6 +609,10 @@ width: 620px!important;
color: #999; color: #999;
cursor: not-allowed; cursor: not-allowed;
} }
.apass_table .row_action .disabled.hide {
opacity: 0;
cursor: auto;
}
.apass_table .row_action .interval_line { .apass_table .row_action .interval_line {
font-size: 14px; font-size: 14px;
color: #dde4ff; color: #dde4ff;
......
src/assets/imgs/shop_ic_huoqu.png

1.03 KB | W: | H:

src/assets/imgs/shop_ic_huoqu.png

14.7 KB | W: | H:

src/assets/imgs/shop_ic_huoqu.png
src/assets/imgs/shop_ic_huoqu.png
src/assets/imgs/shop_ic_huoqu.png
src/assets/imgs/shop_ic_huoqu.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/imgs/shop_icon_liulan.png

1.07 KB | W: | H:

src/assets/imgs/shop_icon_liulan.png

14.7 KB | W: | H:

src/assets/imgs/shop_icon_liulan.png
src/assets/imgs/shop_icon_liulan.png
src/assets/imgs/shop_icon_liulan.png
src/assets/imgs/shop_icon_liulan.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
class="apass_dialog" class="apass_dialog"
:visible.sync="showDialog" :visible.sync="showDialog"
:width="width" :width="width"
top="25vh"
> >
<h3 class="dialog_title" slot="title"> <h3 class="dialog_title" slot="title">
<span v-text="title || '提示'"></span> <span v-text="title || '提示'"></span>
......
...@@ -181,9 +181,11 @@ export default { ...@@ -181,9 +181,11 @@ export default {
} }
}, },
searchAction(value) { searchAction(value) {
this.currentPage = 1;
this.listAction(); this.listAction();
}, },
filterChange(filter) { filterChange(filter) {
this.currentPage = 1;
this.filter = filter; this.filter = filter;
this.listAction(); this.listAction();
}, },
...@@ -196,6 +198,10 @@ export default { ...@@ -196,6 +198,10 @@ export default {
this.currentPage = value; this.currentPage = value;
this.listAction(); this.listAction();
}, },
resetCurrentPage(value = 1) {
this.currentPage = value;
this.listAction();
},
listAction() { listAction() {
if (this.timer) { if (this.timer) {
clearTimeout(this.timer); clearTimeout(this.timer);
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
<span <span
v-if="v.disabledRule && v.disabledRule(scope.row)" v-if="v.disabledRule && v.disabledRule(scope.row)"
class="btn disabled" class="btn disabled"
:class="{ hide: v.disableHide }"
:key="'btn_' + index + '_' + i" :key="'btn_' + index + '_' + i"
v-text="v.getLabel ? v.getLabel(scope.row) : v.label" v-text="v.getLabel ? v.getLabel(scope.row) : v.label"
> >
...@@ -42,8 +43,24 @@ ...@@ -42,8 +43,24 @@
v-if="i < item.actionList.length - 1" v-if="i < item.actionList.length - 1"
class="interval_line" class="interval_line"
:key="'line_' + index + '_' + i" :key="'line_' + index + '_' + i"
>|</span
> >
|
</span>
</template>
<template v-if="item.moreActionList">
<span
class="interval_line"
v-if="item.actionList && item.actionList.length > 0"
>
|
</span>
<a
class="btn"
@mouseenter="mouseenter($event, item.moreActionList, scope.row)"
@mouseleave="mouseleave"
>
更多
</a>
</template> </template>
</div> </div>
<div v-else-if="item.type === 'button'" class="row_action"> <div v-else-if="item.type === 'button'" class="row_action">
...@@ -94,7 +111,7 @@ ...@@ -94,7 +111,7 @@
tag_flag_arr[scope.$index] == 0 && tag_flag_arr[scope.$index] == 0 &&
scope.row[item.prop].length > 2 scope.row[item.prop].length > 2
" "
@click.stop="change_tag(scope.$index, 1)" @click.stop="changeTag(scope.$index, 1)"
></div> ></div>
<div <div
class="tagclo btn_up" class="tagclo btn_up"
...@@ -102,7 +119,7 @@ ...@@ -102,7 +119,7 @@
tag_flag_arr[scope.$index] == 1 && tag_flag_arr[scope.$index] == 1 &&
scope.row[item.prop].length > 2 scope.row[item.prop].length > 2
" "
@click.stop="change_tag(scope.$index, 0)" @click.stop="changeTag(scope.$index, 0)"
></div> ></div>
</div> </div>
<div v-else-if="item.type === 'chart'" class="charts"> <div v-else-if="item.type === 'chart'" class="charts">
...@@ -115,16 +132,32 @@ ...@@ -115,16 +132,32 @@
:styles="item.prop == 'cpu' ? spCurveStyles2 : spCurveStyles3" :styles="item.prop == 'cpu' ? spCurveStyles2 : spCurveStyles3"
/> />
</sparkline> </sparkline>
<span class="use" v-if="item.prop == 'cpu'&&scope.row.cpu_use" <span class="use" v-if="item.prop == 'cpu' && scope.row.cpu_use"
>{{ scope.row["cpu_use"] }}.00mm</span >{{ scope.row["cpu_use"] }}.00mm</span
> >
<span class="use" :style="scope.row[item.prop].length?{}:{right:'25px',bottom:'8px'}" v-if="item.prop == 'cpu'&&!scope.row.cpu_use" <span
class="use"
:style="
scope.row[item.prop].length
? {}
: { right: '25px', bottom: '8px' }
"
v-if="item.prop == 'cpu' && !scope.row.cpu_use"
>0mm</span >0mm</span
> >
<span class="use" v-if="item.prop == 'mermoy'&&scope.row.memory_use" <span
class="use"
v-if="item.prop == 'mermoy' && scope.row.memory_use"
>{{ scope.row["memory_use"] }}Mi</span >{{ scope.row["memory_use"] }}Mi</span
> >
<span class="use" :style="scope.row[item.prop].length?{}:{right:'25px',bottom:'8px'}" v-if="item.prop == 'mermoy'&&!scope.row.memory_use" <span
class="use"
:style="
scope.row[item.prop].length
? {}
: { right: '25px', bottom: '8px' }
"
v-if="item.prop == 'mermoy' && !scope.row.memory_use"
>0Mi</span >0Mi</span
> >
</div> </div>
...@@ -210,6 +243,22 @@ ...@@ -210,6 +243,22 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<ul
ref="moreActionList"
class="more_action_list"
:style="moreActionStyle"
@mouseenter="enterMoreActionList"
@mouseleave="leaveMoreActionList"
v-show="showMoreActionList"
>
<li
v-for="(item, index) in moreActionList"
:key="'more_' + index"
@click="item.callback"
v-text="item.label"
></li>
</ul>
</div> </div>
</template> </template>
...@@ -257,6 +306,12 @@ export default { ...@@ -257,6 +306,12 @@ export default {
strokeOpacity: 0, strokeOpacity: 0,
strokeDasharray: "2, 2", strokeDasharray: "2, 2",
}, },
moreActionList: [],
showMoreActionList: false,
moreActionStyle: {
top: 0,
left: 0,
},
}; };
}, },
mounted() { mounted() {
...@@ -266,7 +321,7 @@ export default { ...@@ -266,7 +321,7 @@ export default {
); );
}, },
methods: { methods: {
change_tag(index, val) { changeTag(index, val) {
this.$set(this.tag_flag_arr, index, val); this.$set(this.tag_flag_arr, index, val);
}, },
sortChange(value) { sortChange(value) {
...@@ -278,6 +333,42 @@ export default { ...@@ -278,6 +333,42 @@ export default {
getPercent(num) { getPercent(num) {
return Math.round(num * 100) + "%"; return Math.round(num * 100) + "%";
}, },
mouseenter($event, moreActionList, row) {
let _self = this;
_self.moreActionList = [];
_self.showMoreActionList = true;
_self.moreActionList = moreActionList.map((item) => ({
id: row.id,
label: item.label,
callback() {
_self.showMoreActionList = false;
_self.moreActionList = [];
item.callback && item.callback(row);
},
}));
_self.$nextTick(() => {
let targetInfo = $event.target.getBoundingClientRect();
let containerInfo = _self.$refs.moreActionList.getBoundingClientRect();
_self.moreActionStyle = {
top: targetInfo.y + targetInfo.height + 15 + "px",
left:
targetInfo.x - (containerInfo.width - targetInfo.width) / 2 + "px",
};
});
},
mouseleave() {
this.showMoreActionList = false;
},
enterMoreActionList() {
this.showMoreActionList = true;
},
leaveMoreActionList() {
this.showMoreActionList = false;
},
}, },
}; };
</script> </script>
...@@ -389,4 +480,48 @@ export default { ...@@ -389,4 +480,48 @@ export default {
.selected_icon.selected > span { .selected_icon.selected > span {
display: block; display: block;
} }
.more_action_list {
position: fixed;
}
.more_action_list > li {
padding: 5px 20px;
background-color: #0f2683;
font-size: 12px;
line-height: 20px;
color: #fff;
cursor: pointer;
position: relative;
}
.more_action_list > li:first-child {
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.more_action_list > li:first-child::before {
content: "";
position: absolute;
top: -14px;
right: calc(50% - 14px);
width: 28px;
height: 14px;
}
.more_action_list > li:first-child::after {
content: "";
position: absolute;
top: -14px;
right: calc(50% - 7px);
border-top: 0 solid transparent;
border-right: 7px solid transparent;
border-bottom: 14px solid #0f2683;
border-left: 7px solid transparent;
}
.more_action_list > li:last-child {
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
.more_action_list > li:hover {
background-color: #3f4f9c;
}
.more_action_list > li:first-child:hover::after {
border-bottom: 14px solid #3f4f9c;
}
</style> </style>
...@@ -28,7 +28,11 @@ export default { ...@@ -28,7 +28,11 @@ export default {
targetValue: { targetValue: {
type: Number, type: Number,
default: () => 0 default: () => 0
} },
area_flag:{
type: Boolean,
default: true
},
}, },
components: {}, components: {},
data() { data() {
...@@ -87,7 +91,7 @@ export default { ...@@ -87,7 +91,7 @@ export default {
}, },
areaStyle: { areaStyle: {
normal: { normal: {
color: new echarts.graphic.LinearGradient( color:this.area_flag? new echarts.graphic.LinearGradient(
0, 0,
0, 0,
0, 0,
...@@ -103,7 +107,7 @@ export default { ...@@ -103,7 +107,7 @@ export default {
} }
], ],
false false
), ):'rgba(0,0,0,0)',
shadowColor: hexToRgba(color[idx], 0.1), shadowColor: hexToRgba(color[idx], 0.1),
shadowBlur: 10 shadowBlur: 10
} }
...@@ -118,10 +122,10 @@ export default { ...@@ -118,10 +122,10 @@ export default {
}); });
var option = { var option = {
backgroundColor: bgColor, // backgroundColor: bgColor,
color: color, color: color,
legend: { legend: {
// show:false,//是否显示图例 show:yarr.length>=2,//是否显示图例
right: "center", right: "center",
bottom: 0, bottom: 0,
itemWidth: 10, itemWidth: 10,
...@@ -144,7 +148,7 @@ export default { ...@@ -144,7 +148,7 @@ export default {
left: 15, left: 15,
right: 30, right: 30,
bottom: 30, bottom: 30,
containLabel: true containLabel: true,
}, },
xAxis: [ xAxis: [
{ {
...@@ -161,7 +165,7 @@ export default { ...@@ -161,7 +165,7 @@ export default {
} }
}, },
splitArea: { splitArea: {
show: true, show: this.area_flag,
areaStyle: { areaStyle: {
color: ["#fff", "#f8f9fd"], color: ["#fff", "#f8f9fd"],
opacity: 0.5 opacity: 0.5
......
...@@ -54,6 +54,7 @@ a { ...@@ -54,6 +54,7 @@ a {
.list p { .list p {
line-height: 32px; line-height: 32px;
color: #8890a7; color: #8890a7;
word-wrap:break-word;
} }
.list { .list {
margin-bottom: 20px; margin-bottom: 20px;
......
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
>{{ userInfo.user_name }}</span> >{{ userInfo.user_name }}</span>
<span v-else @click="gotopage('login')" class="user">请登录</span> <span v-else @click="gotopage('login')" class="user">请登录</span>
<img <img
:class="userInfo.picture_path ? 'user_pic' : 'user_default'" :class="userInfo.picture_path && false ? 'user_pic' : 'user_default'"
:src=" src="../assets/imgs/home_ic_user.png"
userInfo.picture_path || require('../assets/imgs/home_ic_user.png')
"
/> />
<span class="has_msg" v-if="unreadMessageCount > 0"></span>
<!-- 菜单图片不需要动态渲染,只用ui给的图标 -->
<div v-if="userInfo.user_name && userInfo.user_name != ''" class="user_menu"> <div v-if="userInfo.user_name && userInfo.user_name != ''" class="user_menu">
<div <div
v-for="(item, index) in user_arr" v-for="(item, index) in user_arr"
...@@ -25,10 +25,21 @@ ...@@ -25,10 +25,21 @@
@mouseleave.stop="change_now_hover(-1)" @mouseleave.stop="change_now_hover(-1)"
@mouseenter.stop="change_now_hover(index)" @mouseenter.stop="change_now_hover(index)"
@click="gotopage(item.visit_url)" @click="gotopage(item.visit_url)"
>{{ item.menu_name }}</div> >
{{ item.menu_name }}
<span
v-if="unreadMessageCount > 0 && item.visit_url === '/user/notice'"
class="width_num"
v-text="unreadMessageCount"
></span>
</div>
<div @click="gotopage('logout')">退出登录</div> <div @click="gotopage('logout')">退出登录</div>
</div> </div>
<div v-if="userInfo.user_name && userInfo.user_name != ''" class="sj" :style="now_hover==0?{backgroundColor:'#e56600'}:{}"></div> <div
v-if="userInfo.user_name && userInfo.user_name != ''"
class="sj"
:style="now_hover==0?{backgroundColor:'#e56600'}:{}"
></div>
</div> </div>
<div <div
v-if="show_shop_menu" v-if="show_shop_menu"
...@@ -92,7 +103,11 @@ ...@@ -92,7 +103,11 @@
@click.stop="gotoChildPage(v, item.visit_url)" @click.stop="gotoChildPage(v, item.visit_url)"
>{{ v.menu_name }}</div> >{{ v.menu_name }}</div>
</div> </div>
<div class="sj" v-if="item.Child && item.Child.length" :style="now_hover==0?{backgroundColor:'#e56600',left: '60px'}:{left: '60px'}"></div> <div
class="sj"
v-if="item.Child && item.Child.length"
:style="now_hover==0?{backgroundColor:'#e56600',left: '60px'}:{left: '60px'}"
></div>
<div class="bottom_show" v-if="now_menu == item.visit_url"></div> <div class="bottom_show" v-if="now_menu == item.visit_url"></div>
</div> </div>
</div> </div>
...@@ -100,6 +115,7 @@ ...@@ -100,6 +115,7 @@
</template> </template>
<script> <script>
const gisServiceUrl = window.serviceConfig.gisServiceRoot;
export default { export default {
data() { data() {
return { return {
...@@ -114,8 +130,8 @@ export default { ...@@ -114,8 +130,8 @@ export default {
], ],
shopping_list: [], shopping_list: [],
menuCartNum: 0, menuCartNum: 0,
now_hover:-1, now_hover: -1,
show_shop_menu: false show_shop_menu: false,
}; };
}, },
mounted() { mounted() {
...@@ -128,20 +144,25 @@ export default { ...@@ -128,20 +144,25 @@ export default {
}, },
userInfo() { userInfo() {
return this.$store.state.userInfo || {}; return this.$store.state.userInfo || {};
} },
unreadMessageCount() {
return this.$store.state.unreadMessageCount;
},
}, },
watch: { watch: {
getMenuCartState(newVal) { getMenuCartState(newVal) {
this.getList(); this.getList();
} },
}, },
methods: { methods: {
change_now_hover(n){ change_now_hover(n) {
this.now_hover = n this.now_hover = n;
}, },
gotopage(n) { gotopage(n) {
if (n == "logout") { if (n == "logout") {
window.location.href = "/iam/api/logout"; window.location.href =
gisServiceUrl +
`/portal/sharing/rest/oauth2/signout?client_id=arcgisonline&redirect_uri=${window.location.protocol}//${window.location.host}/iam/api/logout`;
} else if (n == "login") { } else if (n == "login") {
let path = this.$route.path; let path = this.$route.path;
window.location.href = "/iam/login/#/login?ReturnUrl=" + path; window.location.href = "/iam/login/#/login?ReturnUrl=" + path;
...@@ -154,7 +175,7 @@ export default { ...@@ -154,7 +175,7 @@ export default {
}, },
deleteItem(id) { deleteItem(id) {
let query = [id]; let query = [id];
this.$api.serviceShop.delShoppingCart(query).then(response => { this.$api.serviceShop.delShoppingCart(query).then((response) => {
this.getList(); this.getList();
}); });
}, },
...@@ -183,7 +204,7 @@ export default { ...@@ -183,7 +204,7 @@ export default {
} }
}, },
getList() { getList() {
this.$api.serviceShop.getShoppingCart().then(response => { this.$api.serviceShop.getShoppingCart().then((response) => {
if (response.data.success == "1") { if (response.data.success == "1") {
this.menuCartNum = response.data.data.valid this.menuCartNum = response.data.data.valid
? response.data.data.valid.length ? response.data.data.valid.length
...@@ -201,12 +222,12 @@ export default { ...@@ -201,12 +222,12 @@ export default {
this.now_menu = visit_url ? visit_url : ""; this.now_menu = visit_url ? visit_url : "";
}, },
getNowMenu() { getNowMenu() {
this.$api.general.getNowMenu({ teamName: "APAAS3" }).then(response => { this.$api.general.getNowMenu({ teamName: "APAAS3" }).then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
let arr = let arr =
(response.data.data[0] && response.data.data[0].Child) || []; (response.data.data[0] && response.data.data[0].Child) || [];
let shop_index = arr.findIndex( let shop_index = arr.findIndex(
item => item.visit_url == "/shop/shopping_cart" (item) => item.visit_url == "/shop/shopping_cart"
); );
if (shop_index != -1) { if (shop_index != -1) {
arr.splice(shop_index, 1); arr.splice(shop_index, 1);
...@@ -214,7 +235,7 @@ export default { ...@@ -214,7 +235,7 @@ export default {
} else { } else {
this.show_shop_menu = false; this.show_shop_menu = false;
} }
let user_index = arr.findIndex(item => item.visit_url == "/user"); let user_index = arr.findIndex((item) => item.visit_url == "/user");
if (user_index != -1) { if (user_index != -1) {
this.user_arr = arr[user_index].Child; this.user_arr = arr[user_index].Child;
arr.splice(user_index, 1); arr.splice(user_index, 1);
...@@ -225,8 +246,8 @@ export default { ...@@ -225,8 +246,8 @@ export default {
this.getMenuIndex(); this.getMenuIndex();
} }
}); });
} },
} },
}; };
</script> </script>
...@@ -291,7 +312,7 @@ export default { ...@@ -291,7 +312,7 @@ export default {
float: right; float: right;
width: 185px; width: 185px;
font-size: 16px; font-size: 16px;
height:84px; height: 84px;
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
...@@ -309,7 +330,7 @@ export default { ...@@ -309,7 +330,7 @@ export default {
left: calc(50% - 12px); left: calc(50% - 12px);
} }
.user_menu { .user_menu {
width: 135px; /* width: 135px; */
background-color: #ffffff; background-color: #ffffff;
box-shadow: 0px 3px 6px 0px rgba(15, 19, 65, 0.05); box-shadow: 0px 3px 6px 0px rgba(15, 19, 65, 0.05);
border-radius: 8px; border-radius: 8px;
...@@ -351,10 +372,11 @@ export default { ...@@ -351,10 +372,11 @@ export default {
display: block; display: block;
} }
.user_menu div { .user_menu div {
width: 135px; /* width: 135px; */
height: 44px; height: 44px;
line-height: 44px; line-height: 44px;
text-align: center; padding: 0 30px;
text-align: left;
color: #0d1847; color: #0d1847;
} }
.user_menu div:hover { .user_menu div:hover {
...@@ -436,6 +458,34 @@ export default { ...@@ -436,6 +458,34 @@ export default {
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.width_num {
display: inline-block;
vertical-align: middle;
min-width: 30px;
background-color: #e56600;
font-size: 10px;
line-height: 16px;
color: #fff;
padding: 0 8px;
margin-left: 5px;
box-sizing: border-box;
border-radius: 8px;
text-align: center;
overflow: hidden;
}
.user_menu div:hover .width_num {
background-color: #fcefd6;
color: #e56600;
}
.has_msg {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: #e56600;
position: absolute;
top: 23px;
left: 15px;
}
</style> </style>
<style> <style>
.number .el-badge__content { .number .el-badge__content {
......
...@@ -9,6 +9,18 @@ ...@@ -9,6 +9,18 @@
placeholder="请输入消息模板名称/id" placeholder="请输入消息模板名称/id"
></el-input> ></el-input>
</div> </div>
<div class="filter_item" v-if="tpl_types.length > 1">
<span class="filter_title">模板类型:</span>
<el-select v-model="type" placeholder="请选择">
<el-option
v-for="item in tpl_types"
:label="item.name"
:value="item.value"
:key="item.value"
>
</el-option>
</el-select>
</div>
<div class="filter_item"> <div class="filter_item">
<span class="filter_title">最后更新时间:</span> <span class="filter_title">最后更新时间:</span>
<el-date-picker <el-date-picker
...@@ -127,6 +139,10 @@ export default { ...@@ -127,6 +139,10 @@ export default {
type: Boolean, type: Boolean,
defailt: false, defailt: false,
}, },
tmpTypes: {
type: Array,
defailt: [],
},
}, },
data() { data() {
return { return {
...@@ -138,6 +154,7 @@ export default { ...@@ -138,6 +154,7 @@ export default {
pageSize: 10, pageSize: 10,
currentPage: 1, currentPage: 1,
keyword: "", keyword: "",
type: "",
updateTime: "", updateTime: "",
types: [ types: [
{ {
...@@ -161,6 +178,7 @@ export default { ...@@ -161,6 +178,7 @@ export default {
value: 4, value: 4,
}, },
], ],
tpl_types: [],
detail: { detail: {
name: "", name: "",
tpl_type: "", tpl_type: "",
...@@ -234,12 +252,36 @@ export default { ...@@ -234,12 +252,36 @@ export default {
}, },
]; ];
if (this.tmpTypes.length > 0) {
let tpl_types = [];
this.types.forEach((item) => {
if (this.tmpTypes.indexOf(item.value) > -1) {
tpl_types.push(item);
}
});
if (this.tmpTypes.length > 1) {
tpl_types = [
{
name: "全部",
value: this.tmpTypes.join(","),
},
...tpl_types,
];
}
this.tpl_types = tpl_types;
this.type = tpl_types[0].value;
}
this.getTemplateList(); this.getTemplateList();
}, },
methods: { methods: {
getTemplateList() { getTemplateList() {
let params = { let params = {
page: this.currentPage, page: this.currentPage,
tpl_type: this.type,
size: this.pageSize, size: this.pageSize,
keyword: this.keyword, keyword: this.keyword,
update_time_s: (this.updateTime && this.updateTime[0]) || "", update_time_s: (this.updateTime && this.updateTime[0]) || "",
...@@ -287,6 +329,7 @@ export default { ...@@ -287,6 +329,7 @@ export default {
this.getTemplateList(); this.getTemplateList();
}, },
topFilterAction() { topFilterAction() {
this.currentPage = 1;
this.getTemplateList(); this.getTemplateList();
}, },
topFilterClear() { topFilterClear() {
......
...@@ -3,7 +3,11 @@ ...@@ -3,7 +3,11 @@
<div class="order_cell_head"> <div class="order_cell_head">
<div class="application_time">申请时间:{{ helper.dateStringTransform(cellItem.add_time) }}</div> <div class="application_time">申请时间:{{ helper.dateStringTransform(cellItem.add_time) }}</div>
<div class="order_number">订单编号:{{ cellItem.order_id }}</div> <div class="order_number">订单编号:{{ cellItem.order_id }}</div>
<div class="cell_del_btn" @click="delOrder(cellItem.order_id)">删除</div> <div
v-if="cellItem.approval_first_level == -1 || cellItem.approval_second_level != 0 || cellItem.pay_status == -1"
class="cell_del_btn"
@click="delOrder(cellItem.order_id)"
>删除</div>
</div> </div>
<el-row class="cell_row"> <el-row class="cell_row">
<el-col :span="10" class="cell_msg"> <el-col :span="10" class="cell_msg">
...@@ -23,7 +27,7 @@ ...@@ -23,7 +27,7 @@
<div class="cell_msg_other"> <div class="cell_msg_other">
<div <div
class="cell_type" class="cell_type"
>{{ cellItem.order_type != 3 ? cellItem.sector : cellItem.namespace }}</div> >{{ cellItem.order_type == 1 ? cellItem.sector : cellItem.order_type == 2 ? cellItem.app_type : cellItem.namespace }}</div>
<div <div
v-if="cellItem.order_type != 3" v-if="cellItem.order_type != 3"
class="cell_creator" class="cell_creator"
...@@ -122,6 +126,11 @@ ...@@ -122,6 +126,11 @@
class="cell_option_spec" class="cell_option_spec"
@click="nextApply" @click="nextApply"
>再次申请</div> >再次申请</div>
<div
v-if="(cellItem.approval_first_level == 0 && cellItem.pay_status != -1) || (cellItem.approval_first_level == 1 && cellItem.approval_second_level == 0 && cellItem.pay_status != -1)"
class="cell_option_spec"
@click="cancelDetail"
>取消申请</div>
</div> </div>
</el-col> </el-col>
<el-collapse-transition> <el-collapse-transition>
...@@ -153,8 +162,8 @@ export default { ...@@ -153,8 +162,8 @@ export default {
default: () => { default: () => {
{ {
} }
} },
} },
}, },
data: () => ({ data: () => ({
visible: false, visible: false,
...@@ -163,14 +172,14 @@ export default { ...@@ -163,14 +172,14 @@ export default {
textarea: "", textarea: "",
showMsgBox: false, showMsgBox: false,
helper: helper, helper: helper,
message: {} message: {},
}), }),
methods: { methods: {
addEvaluation() { addEvaluation() {
if (this.textarea == "" && this.serviceRate == null) { if (this.textarea == "" && this.serviceRate == null) {
this.$message({ this.$message({
message: "请先完善评价内容", message: "请先完善评价内容",
type: "error" type: "error",
}); });
} else { } else {
if (this.cellItem.order_type == 1) { if (this.cellItem.order_type == 1) {
...@@ -178,20 +187,20 @@ export default { ...@@ -178,20 +187,20 @@ export default {
service_id: this.cellItem.service_id, service_id: this.cellItem.service_id,
content: this.textarea, content: this.textarea,
score: this.serviceRate, score: this.serviceRate,
apply_id: this.cellItem.apply_id apply_id: this.cellItem.apply_id,
}; };
this.$api.user.addServiceEvaluation(query).then(response => { this.$api.user.addServiceEvaluation(query).then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.$message({ this.$message({
message: "评价订单成功", message: "评价订单成功",
type: "success" type: "success",
}); });
this.visible = false; this.visible = false;
this.$emit("updateList"); this.$emit("updateList");
} else { } else {
this.$message({ this.$message({
message: "评价订单失败", message: "评价订单失败",
type: "error" type: "error",
}); });
} }
}); });
...@@ -200,20 +209,20 @@ export default { ...@@ -200,20 +209,20 @@ export default {
app: this.cellItem.app_id, app: this.cellItem.app_id,
content: this.textarea, content: this.textarea,
score: this.serviceRate, score: this.serviceRate,
apply_id: this.cellItem.apply_id apply_id: this.cellItem.apply_id,
}; };
this.$api.user.addServiceEvaluation(query).then(response => { this.$api.user.addServiceEvaluation(query).then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.$message({ this.$message({
message: "评价订单成功", message: "评价订单成功",
type: "success" type: "success",
}); });
this.visible = false; this.visible = false;
this.$emit("updateList"); this.$emit("updateList");
} else { } else {
this.$message({ this.$message({
message: "评价订单失败", message: "评价订单失败",
type: "error" type: "error",
}); });
} }
}); });
...@@ -224,17 +233,19 @@ export default { ...@@ -224,17 +233,19 @@ export default {
this.$router.push("/user/order_detail/" + val); this.$router.push("/user/order_detail/" + val);
}, },
delOrder() { delOrder() {
this.$api.user.delOrder({ id: this.cellItem.order_id }).then(response => { this.$api.user
.delOrder({ id: this.cellItem.order_id })
.then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.$message({ this.$message({
message: "删除订单成功", message: "删除订单成功",
type: "success" type: "success",
}); });
this.$emit("updateList"); this.$emit("updateList");
} else { } else {
this.$message({ this.$message({
message: "删除订单失败", message: "删除订单失败",
type: "error" type: "error",
}); });
} }
}); });
...@@ -246,26 +257,26 @@ export default { ...@@ -246,26 +257,26 @@ export default {
service_id: parseFloat(this.cellItem.service_id), service_id: parseFloat(this.cellItem.service_id),
spec_id: this.cellItem.svc_spec_id, spec_id: this.cellItem.svc_spec_id,
duration: this.cellItem.duration, duration: this.cellItem.duration,
duration_unit: this.cellItem.duration_unit duration_unit: this.cellItem.duration_unit,
}; };
this.$router.push({ this.$router.push({
path: "/shop/shop_car_apply", path: "/shop/shop_car_apply",
query: query query: query,
}); });
} else if (this.cellItem.order_type == 2) { } else if (this.cellItem.order_type == 2) {
query = { query = {
app_id: parseFloat(this.cellItem.app_id), app_id: parseFloat(this.cellItem.app_id),
spec_id: this.cellItem.spec_app, spec_id: this.cellItem.spec_app,
duration: this.cellItem.duration, duration: this.cellItem.duration,
duration_unit: this.cellItem.duration_unit duration_unit: this.cellItem.duration_unit,
}; };
this.$router.push({ this.$router.push({
path: "/shop/shop_car_apply", path: "/shop/shop_car_apply",
query: query query: query,
}); });
} else if (this.cellItem.order_type == 2) { } else if (this.cellItem.order_type == 2) {
this.$router.push({ this.$router.push({
path: "/shop/shop_cloud" path: "/shop/shop_cloud",
}); });
} }
}, },
...@@ -273,34 +284,52 @@ export default { ...@@ -273,34 +284,52 @@ export default {
if (this.cellItem.order_type == 1) { if (this.cellItem.order_type == 1) {
this.$api.user this.$api.user
.getServiceEvaluation({ apply_id: this.cellItem.apply_id }) .getServiceEvaluation({ apply_id: this.cellItem.apply_id })
.then(response => { .then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.message = response.data.data; this.message = response.data.data;
this.showMsgBox = true; this.showMsgBox = true;
} else { } else {
this.$message({ this.$message({
message: "获取评价失败", message: "获取评价失败",
type: "error" type: "error",
}); });
} }
}); });
} else if (this.cellItem.order_type == 2) { } else if (this.cellItem.order_type == 2) {
this.$api.user this.$api.user
.getAppEvaluation({ apply_id: this.cellItem.apply_id }) .getAppEvaluation({ apply_id: this.cellItem.apply_id })
.then(response => { .then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.message = response.data.data; this.message = response.data.data;
this.showMsgBox = true; this.showMsgBox = true;
} else { } else {
this.$message({ this.$message({
message: "获取评价失败", message: "获取评价失败",
type: "error" type: "error",
}); });
} }
}); });
} }
},
cancelDetail() {
this.$api.user
.cancelOrder({ order_id: this.cellItem.order_id })
.then((response) => {
if (response.data.success == 1) {
this.$message({
message: "取消订单成功",
type: "success",
});
this.$emit("updateList");
} else {
this.$message({
message: "取消订单失败",
type: "error",
});
} }
} });
},
},
}; };
</script> </script>
......
...@@ -2,77 +2,117 @@ ...@@ -2,77 +2,117 @@
<div class="info_logo"> <div class="info_logo">
<div class="logo"> <div class="logo">
<img :src="data.url" alt="" /> <img :src="data.url" alt="" />
<map-view v-if="data.isMap" :id="data.portal_id"></map-view>
</div> </div>
<div class="info"> <div class="info">
<p class="info_title"> <p class="info_title">
<span>{{ data.name }}</span> <span>{{ data.name }}</span>
<span class="bs" v-if="data.aqdetail" @click="subevent(0)" <span
>一键部署</span class="info_fix"
> v-if="data.fixed_process"
<span class="info_fix" v-if="data.fxdetail" @click="subevent(1)" @click="goto_page(data.fixedurl)"
>我要编辑</span
>
<span class="info_fix" v-if="data.yydebugger" @click="subevent(5)"
>应用调试</span
> >
我要编辑
</span>
<span class="bs" v-if="data.aqdetail" @click="subevent(0)">
一键部署
</span>
<span class="info_fix" v-if="data.fxdetail" @click="subevent(1)">
我要编辑
</span>
<span class="info_fix" v-if="data.yydebugger" @click="subevent(5)">
应用调试
</span>
<span <span
class="right gap" class="right gap"
v-if="data.yydetail || data.xxdetail || data.yydev" v-if="data.yydetail || data.xxdetail || data.yydev||data.public||data.unpublic||data.undeploy||data.deploy"
>|</span
> >
|
</span>
<span <span
class="right underline" class="right underline"
v-if="data.xxdetail" v-if="data.xxdetail"
@click="subevent(2,get_strd(data.xxdetail)[0])" @click="subevent(2, get_strd(data.xxdetail)[0])"
:style="get_strd(data.xxdetail)[0]?{backgroundColor:'#ccc',color:'#e6ebfe'}:''" :style="
:title="get_strd(data.xxdetail)[1]=='申请下线'?'申请下线至开发者应用':'申请上线至平台应用'" get_strd(data.xxdetail)[0]
>{{ get_strd(data.xxdetail)[1] }}</span ? { backgroundColor: '#ccc', color: '#e6ebfe' }
: ''
"
:title="
get_strd(data.xxdetail)[1] == '申请下线'
? '申请下线至开发者应用'
: '申请上线至平台应用'
"
> >
{{ get_strd(data.xxdetail)[1] }}
</span>
<span <span
class="right undersell" class="right undersell"
v-if="data.yydetail" v-if="data.yydetail"
:style="get_strd(data.yydetail)[0]?{backgroundColor:'#ccc',color:'#e6ebfe'}:''" :style="
@click="subevent(3,get_strd(data.yydetail)[0])" get_strd(data.yydetail)[0]
>{{ get_strd(data.yydetail)[1] }}</span ? { backgroundColor: '#ccc', color: '#e6ebfe' }
: ''
"
@click="subevent(3, get_strd(data.yydetail)[0])"
> >
{{ get_strd(data.yydetail)[1] }}
</span>
<span <span
class="right undersell undermy" class="right undersell undermy"
v-if="data.bsdetail" v-if="data.bsdetail"
@click="subevent(4)" @click="subevent(4)"
>申请密钥</span
> >
申请密钥
</span>
<span <span
class="info_fix" class="info_fix"
v-if="data.fixed" v-if="data.fixed"
@click="goto_page(data.fixedurl)" @click="goto_page(data.fixedurl)"
>我要修改</span
>
<span class="info_fix" v-if="data.yydev" @click="subevent(6)"
>应用开发</span
> >
我要修改
</span>
<span class="right undersell" v-if="data.deploy" @click="subevent(10)">
部署
</span>
<span class="right undersell1" v-if="data.undeploy" @click="subevent(9)">
取消部署
</span>
<span class="right undersell" v-if="data.public" @click="subevent(8)">
发布
</span>
<span class="right undersell1" v-if="data.unpublic" @click="subevent(7)">
取消发布
</span>
<span class="info_fix" v-if="data.yydev" @click="subevent(6)">
应用开发
</span>
</p> </p>
<div class="info_detail"> <div class="info_detail">
<p> <p>
<label v-for="(item, index) in data.first" :key="index + 2000" <label v-for="(item, index) in data.first" :key="index + 2000">
>{{ item.name }}: {{ item.name }}:
<span :style="item.color ? { color: item.color } : {}">{{ <span :style="item.color ? { color: item.color } : {}">
item.text {{ item.text }}
}}</span> </span>
</label> </label>
</p> </p>
<p> <p>
<label v-for="(item, index) in data.second" :key="index + 2500" <label v-for="(item, index) in data.second" :key="index + 2500">
>{{ item.name }}: {{ item.name }}:
<a <a
v-if="item.name.indexOf('地址') !== -1" v-if="item.name.indexOf('地址') !== -1"
style="color:#515fe7;text-decoration: none;" style="color:#515fe7;text-decoration: none;"
target="_blank" target="_blank"
:href="item.text" :href="item.text"
>{{ item.text }}</a
> >
<span v-else :style="item.color ? { color: item.color } : {}">{{ {{ item.text }}
item.text </a>
}}</span> <span v-else :style="item.color ? { color: item.color } : {}">
{{ item.text }}
</span>
</label> </label>
</p> </p>
</div> </div>
...@@ -81,54 +121,58 @@ ...@@ -81,54 +121,58 @@
</template> </template>
<script> <script>
import MapView from "./service-info/map-view";
export default { export default {
props: ["data"], props: ["data"],
components: {}, components: { MapView },
data() { data() {
return {}; return {};
}, },
watch: {}, watch: {},
computed: {}, computed: {},
created() { created() {
console.log(this.data.url); console.log(this.data);
}, },
mounted() {}, mounted() {},
methods: { methods: {
get_strd(str){ get_strd(str) {
if(str){ if (str) {
if(str.indexOf('d')!==-1){ if (str.indexOf("d") !== -1) {
return [true,str.substr(0,str.length-1)] return [true, str.substr(0, str.length - 1)];
}else { } else {
return [false,str] return [false, str];
} }
} }
}, },
subevent(val,flag=false){ subevent(val, flag = false) {
if(flag){ if (flag) {
return return;
} }
if(val == 0){ if (val == 0) {
// this.$emit('deploy',this.data) // this.$emit('deploy',this.data)
this.$router.push(`/yygl/${this.$route.params.level}/${this.$route.params.type}/deployment/${this.$route.params.id}?source=${this.$route.query.source}`) this.$router.push(
`/yygl/${this.$route.params.level}/${this.$route.params.type}/deployment/${this.$route.params.id}?source=${this.$route.query.source}`
);
console.log(this.$route); console.log(this.$route);
}else if(val == 1){ } else if (val == 1) {
this.$emit('editapp') this.$emit("editapp");
}else if(val == 2){ } else if (val == 2) {
this.$emit('unline',this.data) this.$emit("unline", this.data);
}else if(val == 3){ } else if (val == 3) {
this.$emit('unsell',this.data) this.$emit("unsell", this.data);
}else if(val == 4){ } else if (val == 4) {
this.$emit('applymy') this.$emit("applymy");
}else if(val == 5){ } else if (val == 5) {
// /yygl/:level/:type/appdebugger/:deploy_id // /yygl/:level/:type/appdebugger/:deploy_id
this.$emit('debuggerfunc') this.$emit("debuggerfunc");
}else if(val == 6){ } else if (val == 6) {
this.$emit('applymy') this.$emit("applymy");
} }
}, },
goto_page(url){ goto_page(url) {
this.$router.push(url) this.$router.push(url);
} },
}, },
}; };
</script> </script>
...@@ -147,10 +191,16 @@ export default { ...@@ -147,10 +191,16 @@ export default {
margin-right: 13px; margin-right: 13px;
background-size: cover; background-size: cover;
text-align: center; text-align: center;
position: relative;
} }
.logo img { .logo img {
width: 100%; width: 100%;
} }
.logo > .map_view {
position: absolute;
right: 0;
bottom: 0;
}
.info { .info {
float: left; float: left;
width: calc(100% - 157px); width: calc(100% - 157px);
...@@ -209,7 +259,7 @@ export default { ...@@ -209,7 +259,7 @@ export default {
text-align: center; text-align: center;
margin-left: 10px; margin-left: 10px;
} }
.undersell { .undersell,.undersell1 {
width: 76px; width: 76px;
height: 32px; height: 32px;
background-color: #0f2683; background-color: #0f2683;
...@@ -221,6 +271,11 @@ export default { ...@@ -221,6 +271,11 @@ export default {
cursor: pointer; cursor: pointer;
text-align: center; text-align: center;
} }
.undersell1{
color: #0f2683;
background-color: #e6ebfe;
margin-left: 10px;
}
.undermy { .undermy {
background-color: #515fe7; background-color: #515fe7;
color: #e6ebfe; color: #e6ebfe;
......
<template>
<div class="map_view">
<a class="map_view_action" href="#" @click.prevent.stop="viewAction">
<img :src="require('../../assets/imgs/ic_yulan.png')" />
</a>
<transition name="mask-bg-fade">
<el-dialog
class="map_view_dialog"
title="预览"
width="1200px"
:visible.sync="showDialog"
:before-close="beforeClose"
>
<div class="map_view_container">
<iframe v-if="src" :src="src" frameborder="0"></iframe>
</div>
</el-dialog>
</transition>
</div>
</template>
<script>
const gisServiceUrl = window.serviceConfig.gisServiceRoot;
export default {
name: "map-view",
data: () => ({
showDialog: false,
src: "",
}),
props: {
id: {
type: [String, Number],
required: true,
},
},
methods: {
viewAction() {
this.src = gisServiceUrl + `/portal/apaasplat/viewer/previewMap.html?id=${this.id}`;
this.showDialog = true;
},
beforeClose(done) {
this.src = "";
done();
},
},
};
</script>
<style scoped>
.map_view_action {
display: flex;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
padding: 10px 0 0 10px;
box-sizing: border-box;
border-top-left-radius: 40px;
background-color: #8f93a1;
}
.map_view_container {
height: 666px;
}
.map_view_container > iframe {
display: block;
width: 100%;
height: 100%;
}
</style>
<style>
.map_view_dialog .el-dialog {
overflow: hidden;
}
.map_view_dialog .el-dialog__header {
padding: 18px 20px 17px;
border-bottom: 1px solid #edf0ff;
text-align: left;
}
.map_view_dialog .el-dialog__body {
padding: 0;
}
</style>
...@@ -19,6 +19,10 @@ ...@@ -19,6 +19,10 @@
<div class="main_container"> <div class="main_container">
<div class="main_container-left" v-if="data.cover"> <div class="main_container-left" v-if="data.cover">
<img :src="data.cover" width="100%" /> <img :src="data.cover" width="100%" />
<map-view
v-if="data.type === 'Map Service'"
:id="data.portal_id"
></map-view>
</div> </div>
<div class="main_container-right"> <div class="main_container-right">
<ul class="service_base_info"> <ul class="service_base_info">
...@@ -118,8 +122,12 @@ ...@@ -118,8 +122,12 @@
<script> <script>
import helper from "@/services/helper.js"; import helper from "@/services/helper.js";
import MapView from "./map-view";
export default { export default {
components: {
MapView,
},
props: { props: {
data: { data: {
type: Object, type: Object,
...@@ -272,10 +280,16 @@ export default { ...@@ -272,10 +280,16 @@ export default {
background-color: #f9fafc; background-color: #f9fafc;
margin-right: 30px; margin-right: 30px;
font-size: 0; font-size: 0;
position: relative;
} }
.main_container-left img { .main_container-left img {
width: 100%; width: 100%;
} }
.main_container-left > .map_view {
position: absolute;
right: 3px;
bottom: 3px;
}
.main_container-right { .main_container-right {
flex-grow: 1; flex-grow: 1;
} }
......
<template> <template>
<div class="com_card"> <div class="com_card">
<div class="com_card_top"> <div class="com_card_top">
<img <img :src="cellData.logo" class="com_card_img" />
:src="cellData.logo"
class="com_card_img"
/>
<div class="com_card_name_v"> <div class="com_card_name_v">
<div class="com_card_msg_name">{{ cellData.app_name }}</div> <div class="com_card_msg_name">{{ cellData.app_name }}</div>
<div class="com_card_msg_version">V{{ cellData.version }}</div> <div class="com_card_msg_version">V{{ cellData.version }}</div>
...@@ -35,10 +32,10 @@ export default { ...@@ -35,10 +32,10 @@ export default {
components: {}, components: {},
props: { props: {
url: { type: String, default: "" }, url: { type: String, default: "" },
cellData: { type: Object, default: {} } cellData: { type: Object, default: {} },
}, },
data: () => ({ data: () => ({
helper: helper helper: helper,
}), }),
computed: {}, computed: {},
watch: {}, watch: {},
...@@ -48,9 +45,40 @@ export default { ...@@ -48,9 +45,40 @@ export default {
this.$router.push(this.url + "/" + parame); this.$router.push(this.url + "/" + parame);
} }
}, },
addShop(id) {} addShop(id) {
let query = {
service_id: 0, // 0表示不是服务
app_id: parseFloat(id),
spec_id: 1,
duration: 1,
duration_method: 1,
is_subscribe: 0, // 是否订阅
};
this.$api.serviceShop
.addShoppingCart()
.then(({ data }) => {
if (data.success == 1) {
this.$message({
message: data.errMsg,
type: "success",
});
this.$store.commit("setMenuCartState");
} else {
this.$message({
message: data.errMsg,
type: "warning",
});
}
})
.catch((error) => {
this.$message({
message: `添加购物车失败`,
type: "warning",
});
});
},
}, },
mounted() {} mounted() {},
}; };
</script> </script>
......
...@@ -9,9 +9,11 @@ ...@@ -9,9 +9,11 @@
<div> <div>
<div class="head_flex"> <div class="head_flex">
<el-breadcrumb separator="/" class="bread_crumb1 bread_left"> <el-breadcrumb separator="/" class="bread_crumb1 bread_left">
<el-breadcrumb-item :to="{ path: '/shop' }">{{ <el-breadcrumb-item :to="{ path: '/shop' }">
{{
$t("lang.service_shop") $t("lang.service_shop")
}}</el-breadcrumb-item> }}
</el-breadcrumb-item>
<el-breadcrumb-item>{{ name }}</el-breadcrumb-item> <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
<div class="input_right"> <div class="input_right">
...@@ -26,11 +28,7 @@ ...@@ -26,11 +28,7 @@
<block-radius> <block-radius>
<!-- filter --> <!-- filter -->
<div v-if="urlFilter" class="classification"> <div v-if="urlFilter" class="classification">
<div <div v-for="(item, index) in filterLists" :key="'cd' + index" class="classification_line">
v-for="(item, index) in filterLists"
:key="'cd' + index"
class="classification_line"
>
<div <div
class="classification_line_if" class="classification_line_if"
v-if="item.childDomains && item.childDomains.length != 0" v-if="item.childDomains && item.childDomains.length != 0"
...@@ -60,8 +58,7 @@ ...@@ -60,8 +58,7 @@
? 'classification_act' ? 'classification_act'
: '' : ''
" "
>全部</span >全部</span>
>
</div> </div>
</li> </li>
<li <li
...@@ -83,8 +80,7 @@ ...@@ -83,8 +80,7 @@
? 'classification_act' ? 'classification_act'
: '' : ''
" "
>{{ items.name }}</span >{{ items.name }}</span>
>
<!-- if item have children, we will use an arrow to prompt --> <!-- if item have children, we will use an arrow to prompt -->
<i <i
v-if=" v-if="
...@@ -120,14 +116,8 @@ ...@@ -120,14 +116,8 @@
> >
<span v-if="openList[index] == 'down'">收起</span> <span v-if="openList[index] == 'down'">收起</span>
<span v-if="openList[index] == 'up'">展开</span> <span v-if="openList[index] == 'up'">展开</span>
<i <i v-if="openList[index] == 'down'" class="el-icon-caret-top"></i>
v-if="openList[index] == 'down'" <i v-if="openList[index] == 'up'" class="el-icon-caret-bottom"></i>
class="el-icon-caret-top"
></i>
<i
v-if="openList[index] == 'up'"
class="el-icon-caret-bottom"
></i>
</div> </div>
</div> </div>
<!-- filter children --> <!-- filter children -->
...@@ -155,8 +145,7 @@ ...@@ -155,8 +145,7 @@
? 'classification_act' ? 'classification_act'
: '' : ''
" "
>{{ itemChildren.name }}</span >{{ itemChildren.name }}</span>
>
</div> </div>
</li> </li>
</ul> </ul>
...@@ -181,12 +170,9 @@ ...@@ -181,12 +170,9 @@
size="small" size="small"
:class="index == activeBtn ? 'button_filter_act' : 'button_filter'" :class="index == activeBtn ? 'button_filter_act' : 'button_filter'"
@click="clickButtonFilter(index)" @click="clickButtonFilter(index)"
>{{ item.name }}</el-button >{{ item.name }}</el-button>
>
<div v-if="urlFilter == 'app'" class="btn_right_check"> <div v-if="urlFilter == 'app'" class="btn_right_check">
<el-checkbox v-model="couldTwice" @change="changeTwice" <el-checkbox v-model="couldTwice" @change="changeTwice">支持二次开发</el-checkbox>
>支持二次开发</el-checkbox
>
</div> </div>
</div> </div>
<!-- the list --> <!-- the list -->
...@@ -441,7 +427,9 @@ export default { ...@@ -441,7 +427,9 @@ export default {
let list = this.filterLists; let list = this.filterLists;
for (let i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
if (list[i].childDomains.length != 0) { if (list[i].childDomains.length != 0) {
let offHeight = Math.ceil(document.getElementById(list[i].id).offsetHeight); let offHeight = Math.ceil(
document.getElementById(list[i].id).offsetHeight
);
if (offHeight > 60) { if (offHeight > 60) {
list[i].showOpen = true; list[i].showOpen = true;
this.openList[i] = "up"; this.openList[i] = "up";
...@@ -669,11 +657,26 @@ export default { ...@@ -669,11 +657,26 @@ export default {
.button_filter { .button_filter {
background-color: #e6eefe; background-color: #e6eefe;
color: #626de9; color: #626de9;
font-size: 10px; border: 1px solid #e6eefe;
font-size: 12px;
}
.button_filter:hover {
border: 1px solid rgb(198, 226, 255);
}
.button_filter:focus {
border: 1px solid rgb(58, 142, 230);
} }
.button_filter_act { .button_filter_act {
background-color: #515fe7; background-color: #515fe7;
border: 1px solid #515fe7;
color: #f8f9fd; color: #f8f9fd;
font-size: 12px;
}
.button_filter_act:hover {
border: 1px solid #414fd7;
}
.button_filter_act:focus {
border: 1px solid #313fc7;
} }
.btn_group { .btn_group {
margin-bottom: 15px; margin-bottom: 15px;
......
...@@ -119,7 +119,7 @@ export default { ...@@ -119,7 +119,7 @@ export default {
.service_shop_menu_list > li { .service_shop_menu_list > li {
padding: 16px 10px 8px 22px; padding: 16px 10px 8px 22px;
border-left: 5px solid #0d1847; border-left: 5px solid #0d1847;
font-size: 16px; font-size: 15px;
line-height: 24px; line-height: 24px;
cursor: pointer; cursor: pointer;
} }
......
...@@ -91,6 +91,7 @@ export default { ...@@ -91,6 +91,7 @@ export default {
margin-bottom: 3px; margin-bottom: 3px;
} }
.detail-item .detail-text { .detail-item .detail-text {
word-break: break-all;
font-size: 14px; font-size: 14px;
line-height: 25px; line-height: 25px;
color: #242c43; color: #242c43;
......
...@@ -180,4 +180,7 @@ export default { ...@@ -180,4 +180,7 @@ export default {
.service_info_tab .detail-list .el-table__row:nth-child(odd) td { .service_info_tab .detail-list .el-table__row:nth-child(odd) td {
background-color: #fff; background-color: #fff;
} }
.service_info_tab.el-tabs--border-card > .el-tabs__header .el-tabs__item:hover {
color: #e56600;
}
</style> </style>
...@@ -48,7 +48,8 @@ export default { ...@@ -48,7 +48,8 @@ export default {
}, },
rules: { rules: {
preson: [ preson: [
{ required: true, message: "请输入部门联系人", trigger: "blur" } { required: true, message: "请输入部门联系人", trigger: "blur" },
{max:16, message: "不能超过16个字符", trigger: "blur" }
], ],
phone: [ phone: [
{ required: true, message: "请输入联系电话", trigger: "blur" }, { required: true, message: "请输入联系电话", trigger: "blur" },
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
</div> </div>
<p class="inputtitle">应用场景:</p> <p class="inputtitle">应用场景:</p>
<div class="system"> <div class="system">
<el-input v-model="sceneinput" placeholder="请填写申请服务的应用场景"></el-input> <el-input maxlength="400" show-word-limit v-model="sceneinput" placeholder="请填写申请服务的应用场景"></el-input>
</div> </div>
<p <p
class="inputtitle degr" class="inputtitle degr"
......
...@@ -4,41 +4,58 @@ ...@@ -4,41 +4,58 @@
<img :src="data.cover" width="100%" /> <img :src="data.cover" width="100%" />
</div> </div>
<div class="shop_card-top"> <div class="shop_card-top">
<p class="shop_card-title text_clip_2" v-text="data.name" :title="data.name"></p> <p
class="shop_card-title text_clip_2"
v-text="data.name"
:title="data.name"
></p>
<p class="shop_card-text under_text"> <p class="shop_card-text under_text">
<span class="text_clip" v-text="data.department_name" :title="data.department_name"></span> <span
class="text_clip"
v-text="data.department_name"
:title="data.department_name"
></span>
<span> <span>
<el-rate <img :src="require('../assets/imgs/shop_ic_star.png')" />
v-model="data.score" <span v-text="data.score"></span>
disabled
show-score
text-color="#ea7d19"
score-template="{value}"
></el-rate>
</span> </span>
</p> </p>
</div> </div>
<div class="shop_card-bottom"> <div class="shop_card-bottom">
<p class="shop_card-text summary text_clip_2" v-if="data.resourceSummary"> <p class="shop_card-text summary text_clip_2" v-if="data.descript">
<span v-text="data.resourceSummary"></span> <span v-text="data.descript"></span>
</p> </p>
<p class="shop_card-text update_time"> <p class="shop_card-text update_time">
<img :src="require('@/assets/imgs/icon_shijian.png')" style="margin-right: 5px;" /> <img
<span class="text_clip" v-text="'更新时间:' + helper.dateStringTransform(data.update_date)"></span> :src="require('@/assets/imgs/shop_ic_updatetime.png')"
style="margin-right: 5px;"
/>
<span
class="text_clip"
v-text="'更新时间:' + helper.dateStringTransform(data.update_date)"
></span>
</p> </p>
<div class="shop_card-text access"> <div class="shop_card-text access">
<span> <span>
<img :src="require('@/assets/imgs/icon_liulan.png')" /> <img :src="require('@/assets/imgs/shop_icon_liulan.png')" />
<span <span
class="text_clip" class="text_clip"
v-text="helper.numberFormat(data.view_count, 2) + (data.view_count > 10000 ? '万' : '') + '次浏览'" v-text="
helper.numberFormat(data.view_count, 2) +
(data.view_count > 10000 ? '万' : '') +
'次浏览'
"
></span> ></span>
</span> </span>
<span> <span>
<img :src="require('@/assets/imgs/icon_huoqu1.png')" /> <img :src="require('@/assets/imgs/shop_ic_huoqu.png')" />
<span <span
class="text_clip" class="text_clip"
v-text="helper.numberFormat(data.apply_count, 2) + (data.apply_count > 10000 ? '万' : '') + '次获取'" v-text="
helper.numberFormat(data.apply_count, 2) +
(data.apply_count > 10000 ? '万' : '') +
'次获取'
"
></span> ></span>
</span> </span>
</div> </div>
...@@ -52,27 +69,27 @@ export default { ...@@ -52,27 +69,27 @@ export default {
props: { props: {
data: { data: {
type: Object, type: Object,
default: () => {} default: () => {},
}, },
detailPath: { detailPath: {
type: String, type: String,
required: true required: true,
}, },
showImg: { showImg: {
type: Boolean, type: Boolean,
default: false default: false,
} },
}, },
data() { data() {
return { return {
helper helper,
}; };
}, },
methods: { methods: {
intoDetail() { intoDetail() {
this.$router.push(this.detailPath + this.data.id); this.$router.push(this.detailPath + this.data.id);
} },
} },
}; };
</script> </script>
...@@ -101,7 +118,6 @@ export default { ...@@ -101,7 +118,6 @@ export default {
.shop_card-title { .shop_card-title {
height: 42px; height: 42px;
font-size: 16px; font-size: 16px;
font-weight: bold;
color: #0d1847; color: #0d1847;
line-height: 21px; line-height: 21px;
cursor: pointer; cursor: pointer;
...@@ -116,16 +132,11 @@ export default { ...@@ -116,16 +132,11 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
color: #58617a;
} }
.shop_card-text.under_text > span:nth-child(2) { .shop_card-text.under_text > span:nth-child(2) {
flex-shrink: 0; flex-shrink: 0;
margin-left: 10px; margin-left: 10px;
}
.shop_card-text.under_text > span:nth-child(2) > i {
font-size: 20px;
color: #fac266;
}
.shop_card-text.under_text > span:nth-child(2) > span {
font-family: Arial; font-family: Arial;
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
...@@ -152,9 +163,9 @@ export default { ...@@ -152,9 +163,9 @@ export default {
align-items: center; align-items: center;
padding-top: 11px; padding-top: 11px;
border-top: 1px solid #ededed; border-top: 1px solid #ededed;
color: #58617a;
} }
.shop_card-text.access > span > * { .shop_card-text.access > span > * {
width: 15px;
vertical-align: middle; vertical-align: middle;
} }
.shop_card-text.access > span > img { .shop_card-text.access > span > img {
......
...@@ -2,14 +2,16 @@ ...@@ -2,14 +2,16 @@
<div class="shop_list"> <div class="shop_list">
<h3 class="shop_list-title"> <h3 class="shop_list-title">
<span v-text="name"></span> <span v-text="name"></span>
<a @click.prevent="goto" :style="{ cursor: to ? 'pointer' : 'text' }"> <a @click.prevent="goto" :style="{ cursor: to ? 'pointer' : 'text' }"></a>
<i class="el-icon-arrow-right"></i>
</a>
</h3> </h3>
<ul class="shop_cards"> <ul class="shop_cards">
<li v-for="(item, index) in data" :key="'card_' + index"> <li v-for="(item, index) in data" :key="'card_' + index">
<shop-card :data="item" :showImg="showImg" :detail-path="detailPath"></shop-card> <shop-card
:data="item"
:showImg="showImg"
:detail-path="detailPath"
></shop-card>
</li> </li>
</ul> </ul>
</div> </div>
...@@ -20,37 +22,37 @@ import shopCard from "./shop-card"; ...@@ -20,37 +22,37 @@ import shopCard from "./shop-card";
export default { export default {
components: { components: {
shopCard shopCard,
}, },
props: { props: {
name: { name: {
type: String, type: String,
required: true required: true,
}, },
to: { to: {
type: String, type: String,
required: true required: true,
}, },
detailPath: { detailPath: {
type: String, type: String,
required: true required: true,
}, },
data: { data: {
type: Array, type: Array,
default: () => [] default: () => [],
}, },
showImg: { showImg: {
type: Boolean, type: Boolean,
default: false default: false,
} },
}, },
methods: { methods: {
goto() { goto() {
if (this.to) { if (this.to) {
this.$router.push(this.to); this.$router.push(this.to);
} }
} },
} },
}; };
</script> </script>
...@@ -59,26 +61,25 @@ export default { ...@@ -59,26 +61,25 @@ export default {
margin: 13px 20px; margin: 13px 20px;
} }
.shop_list-title > span { .shop_list-title > span {
display: inline-block;
vertical-align: middle;
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
color: #0d1847; color: #0d1847;
line-height: 27px; line-height: 27px;
} }
.shop_list-title > a { .shop_list-title > a {
display: inline-flex; display: inline-block;
justify-content: center; vertical-align: middle;
align-items: center; background-image: url("../assets/imgs/home_btn_enter.png");
width: 28px; width: 28px;
height: 28px; height: 28px;
background-color: #fff; background-size: 100%;
border: 1px solid #edeff6; vertical-align: -9px;
border-radius: 5px; margin-left: 5px;
overflow: hidden;
margin-left: 10px;
} }
.shop_list-title > a > i { .shop_list-title > a:hover {
font-weight: bolder; background-image: url("../assets/imgs/home_btn_enter_hov.png");
color: #1e3595;
} }
.shop_cards { .shop_cards {
display: flex; display: flex;
......
...@@ -200,6 +200,7 @@ ...@@ -200,6 +200,7 @@
{{ scope.row[item.prop] }} {{ scope.row[item.prop] }}
</span> </span>
<!-- others --> <!-- others -->
<span v-else-if="item.type === 'click'" style="cursor: pointer;" @click="gotopage(item.url,scope.row[item.prop][item.id])">{{ scope.row[item.prop] }}</span>
<span v-else>{{ scope.row[item.prop] }}</span> <span v-else>{{ scope.row[item.prop] }}</span>
</template> </template>
</el-table-column> </el-table-column>
...@@ -458,6 +459,9 @@ export default { ...@@ -458,6 +459,9 @@ export default {
} }
}); });
}, },
gotopage(url,id){
this.$router.push(`/fwgl/0/0/servicedetail/${id}`)
},
//本地删除 //本地删除
deleteLocal(val) { deleteLocal(val) {
this.selectedTabsPage.splice(val.$index, 1); this.selectedTabsPage.splice(val.$index, 1);
......
<template>
<div>
<div class="super-flow-demo1">
<div class="node-container">
<p class="label_head">节点类型</p>
<p class="label_explanation">请拖拽添加到流程中</p>
<el-input-number v-model="scale_num" @change="handleChange" :step="10" :step-strictly="true" :min="50" :max="150" label="描述文字"></el-input-number>
<span class="node-item" v-for="(item, index) in nodeItemList" :key="index" @mousedown="evt => nodeItemMouseDown(evt, item.value)">{{item.label}}</span>
</div>
<div class="flow-container" :class="`scale${scale_num}`" ref="flowContainer">
<super-flow ref="superFlow" :node-list="nodeList" :link-list="linkList" :link-menu="linkMenu" :link-base-style="linkBaseStyle" :link-style="linkStyle" :link-desc="linkDesc" :origin="origin">
<template v-slot:node="{meta}">
<div :class="{'flow-node-begin': meta.type == 0, 'flow-node-end': meta.type == 1, 'flow-node-default': meta.type == 2}" :id="meta.id">
<div @click="clickItem(meta)">
{{meta.name}}
</div>
</div>
</template>
</super-flow>
</div>
</div>
</div>
</template>
<script>
const drawerType = {
node: 0,
link: 1
};
export default {
data() {
return {
scale_num: 100,
origin: [0, 0],
nodeList: [],
linkList: [],
drawerType,
drawerConf: {
title: "",
visible: false,
type: null,
info: null,
open: (type, info) => {
const conf = this.drawerConf;
conf.visible = true;
conf.type = type;
conf.info = info;
if (conf.type === drawerType.node) {
conf.title = "节点";
if (this.$refs.nodeSetting) this.$refs.nodeSetting.resetFields();
this.$set(this.nodeSetting, "name", info.meta.name);
this.$set(this.nodeSetting, "desc", info.meta.desc);
} else {
conf.title = "连线";
if (this.$refs.linkSetting) this.$refs.linkSetting.resetFields();
this.$set(
this.linkSetting,
"desc",
info.meta ? info.meta.desc : ""
);
}
},
cancel: () => {
this.drawerConf.visible = false;
if (this.drawerConf.type === drawerType.node) {
this.$refs.nodeSetting.clearValidate();
} else {
this.$refs.linkSetting.clearValidate();
}
}
},
linkSetting: {
desc: ""
},
nodeSetting: {
name: "",
desc: ""
},
dragConf: {
isDown: false,
isMove: false,
offsetTop: 0,
offsetLeft: 0,
clientX: 0,
clientY: 0,
ele: null,
info: null
},
nodeItemList: [
{
label: "开始",
value: {
width: 120,
height: 40,
meta: {
label: "开始开始开始开始开始",
name: "开始开始开始开始开始",
type: 0
}
}
},
{
label: "结束",
value: {
width: 120,
height: 40,
meta: {
label: "结束",
name: "结束",
type: 1
}
}
},
{
label: "普通节点",
value: {
width: 120,
height: 40,
meta: {
label: "普通节点",
name: "普通节点",
type: 2
}
}
}
],
linkMenu: [
[
{
label: "删除",
selected: link => {
console.log(link);
link.remove();
}
},
{
label: "编辑",
selected: link => {
this.drawerConf.open(drawerType.link, link);
}
}
]
],
linkBaseStyle: {
color: "#666666", // line 颜色
hover: "#FF0000", // line hover 的颜色
textColor: "#666666", // line 描述文字颜色
textHover: "#FF0000", // line 描述文字 hover 颜色
font: "14px Arial", // line 描述文字 字体设置 参考 canvas font
dotted: false, // 是否是虚线
lineDash: [4, 4], // 虚线时生效
background: "rgba(255,255,255,0.6)" // 描述文字背景色
}
};
},
mounted() {
document.addEventListener("mousemove", this.docMousemove);
document.addEventListener("mouseup", this.docMouseup);
this.$once("hook:beforeDestroy", () => {
document.removeEventListener("mousemove", this.docMousemove);
document.removeEventListener("mouseup", this.docMouseup);
});
},
methods: {
linkStyle(link) {
return {
// hover: '#FF00FF'
};
},
linkDesc(link) {
return link.meta ? link.meta.desc : "";
},
docMousemove({ clientX, clientY }) {
const conf = this.dragConf;
if (conf.isMove) {
conf.ele.style.top = clientY - conf.offsetTop + "px";
conf.ele.style.left = clientX - conf.offsetLeft + "px";
} else if (conf.isDown) {
// 鼠标移动量大于 5 时 移动状态生效
conf.isMove =
Math.abs(clientX - conf.clientX) > 5 ||
Math.abs(clientY - conf.clientY) > 5;
}
},
docMouseup({ clientX, clientY }) {
const conf = this.dragConf;
conf.isDown = false;
if (conf.isMove) {
const {
top,
right,
bottom,
left
} = this.$refs.flowContainer.getBoundingClientRect();
// 判断鼠标是否进入 flow container
if (
clientX > left &&
clientX < right &&
clientY > top &&
clientY < bottom
) {
} else if (clientX <= left) {
clientX = left;
} else if (clientX >= right) {
clientX = right;
} else if (clientY <= top) {
clientY = top;
} else if (clientY >= bottom) {
clientY = bottom;
}
// 获取拖动元素左上角相对 super flow 区域原点坐标
const coordinate = this.$refs.superFlow.getMouseCoordinate(
clientX - conf.offsetLeft,
clientY - conf.offsetTop
);
// 添加节点
this.$refs.superFlow.addNode({
coordinate,
...conf.info
});
conf.isMove = false;
}
if (conf.ele) {
conf.ele.remove();
conf.ele = null;
}
},
nodeItemMouseDown(evt, info) {
info.meta.id = parseInt(Math.random() * 1000 * 1000);
const { clientX, clientY, currentTarget } = evt;
const { top, left } = evt.currentTarget.getBoundingClientRect();
const conf = this.dragConf;
const ele = currentTarget.cloneNode(true);
Object.assign(this.dragConf, {
offsetLeft: clientX - left,
offsetTop: clientY - top,
clientX: clientX,
clientY: clientY,
info,
ele,
isDown: true
});
ele.style.position = "fixed";
ele.style.margin = "0";
ele.style.top = clientY - conf.offsetTop + "px";
ele.style.left = clientX - conf.offsetLeft + "px";
this.$el.appendChild(this.dragConf.ele);
},
clickItem(item) {
console.log(item);
},
getData() {
return this.$refs.superFlow.toJSON();
},
handleChange() {}
}
};
</script>
<style lang="less">
.link-base-style-form {
.el-form-item {
margin-bottom: 12px;
}
padding-bottom: 20px;
border-bottom: 1px solid #dcdcdc;
}
.super-flow-demo1 {
margin-top: 20px;
width: 100%;
height: 800px;
background-color: #f5f5f5;
@list-width: 200px;
position: relative;
> .node-container {
width: @list-width;
position: absolute;
z-index: 2;
left: 0;
height: 400px;
text-align: center;
background-color: #ffffff;
.label_head {
font-weight: bold;
font-size: 18px;
text-align: center;
padding: 20px 0;
}
.label_explanation {
font-size: 16px;
text-align: center;
padding-bottom: 5px;
}
}
> .flow-container {
width: 100%;
float: left;
height: 100%;
overflow: hidden;
}
.super-flow__node {
box-shadow: none;
border: none;
background-color: transparent;
border-radius: 8px;
&:focus {
box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.8);
}
.flow-node-begin {
width: 100%;
height: 100%;
line-height: 36px;
padding: 0 6px;
font-size: 12px;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
border-radius: 8px;
border: 2px solid #444;
}
.flow-node-end {
width: 100%;
line-height: 36px;
padding: 0 6px;
font-size: 12px;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
border-radius: 8px;
border: 2px solid #f80;
}
.flow-node-default {
width: 100%;
line-height: 36px;
padding: 0 6px;
font-size: 12px;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
border-radius: 8px;
border: 2px solid #3a9;
}
}
}
.node-item {
@node-item-height: 30px;
font-size: 14px;
display: inline-block;
height: @node-item-height;
width: 120px;
margin-top: 20px;
background-color: #ffffff;
line-height: @node-item-height;
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.3);
cursor: pointer;
user-select: none;
text-align: center;
z-index: 6;
&:hover {
box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.4);
}
}
</style>
<style scoped>
.scale60 {
transform: scale(0.6, 0.6);
}
.scale70 {
transform: scale(0.7, 0.7);
}
.scale80 {
transform: scale(0.8, 0.8);
}
.scale90 {
transform: scale(0.9, 0.9);
}
.scale100 {
transform: scale(1, 1);
}
</style>
\ No newline at end of file
<template>
<div class="topo_inner">
<div id="container" ref="conCav" class="canvas"></div>
</div>
</template>
<script>
import G6 from "@antv/g6";
export default {
props: {
datas: {
type: Object,
default: () => {
return {
nodes: [],
edges: [],
};
},
},
namespace: String,
},
data: () => {
return {
options: [
{
value: "default",
label: "default",
},
{
value: "addNode",
label: "addNode",
},
{
value: "addEdge",
label: "addEdge",
},
],
value: "",
graph: null,
};
},
mounted() {
this.getCav();
},
watch: {
datas(val) {},
},
methods: {
getCav() {
/**
* 该案例演示切换交互模式,在不同模式下实现拖动节点、增加节点、增加边的交互行为。
*/
let addedCount = 0;
// Register a custom behavior: add a node when user click the blank part of canvas
G6.registerBehavior("click-add-node", {
// Set the events and the corresponding responsing function for this behavior
getEvents() {
// The event is canvas:click, the responsing function is onClick
return {
"canvas:click": "onClick",
};
},
// Click event
onClick(ev) {
console.log(ev.canvasX, ev.canvasY);
const self = this;
const graph = self.graph;
// Add a new node
graph.addItem("node", {
x: ev.canvasX,
y: ev.canvasY,
id: `node-${addedCount}`, // Generate the unique id
});
addedCount++;
},
});
// Register a custom behavior: click two end nodes to add an edge
G6.registerBehavior("click-add-edge", {
// Set the events and the corresponding responsing function for this behavior
getEvents() {
return {
"node:click": "onClick", // The event is canvas:click, the responsing function is onClick
mousemove: "onMousemove", // The event is mousemove, the responsing function is onMousemove
"edge:click": "onEdgeClick", // The event is edge:click, the responsing function is onEdgeClick
};
},
// The responsing function for node:click defined in getEvents
onClick(ev) {
const self = this;
const node = ev.item;
const graph = self.graph;
// The position where the mouse clicks
const point = { x: ev.x, y: ev.y };
const model = node.getModel();
if (self.addingEdge && self.edge) {
graph.updateItem(self.edge, {
target: model.id,
});
self.edge = null;
self.addingEdge = false;
} else {
// Add anew edge, the end node is the current node user clicks
self.edge = graph.addItem("edge", {
source: model.id,
target: model.id,
});
self.addingEdge = true;
}
},
// The responsing function for mousemove defined in getEvents
onMousemove(ev) {
const self = this;
// The current position the mouse clicks
const point = { x: ev.x, y: ev.y };
if (self.addingEdge && self.edge) {
// Update the end node to the current node the mouse clicks
self.graph.updateItem(self.edge, {
target: point,
});
}
},
// The responsing function for edge:click defined in getEvents
onEdgeClick(ev) {
const self = this;
const currentEdge = ev.item;
if (self.addingEdge && self.edge === currentEdge) {
self.graph.removeItem(self.edge);
self.edge = null;
self.addingEdge = false;
}
},
});
// Initial data
const data = {
nodes: [
{
id: "node1",
label: "123",
x: 100,
y: 200,
},
{
id: "node2",
label: "123",
x: 300,
y: 200,
},
{
id: "node3",
label: "123",
x: 300,
y: 300,
},
],
edges: [
{
id: "edge1",
target: "node2",
source: "node1",
},
],
};
const graphContainer = document.getElementById("container");
const width = document.getElementById("container").scrollWidth;
const height = document.getElementById("container").scrollHeight || 500;
const graph = new G6.Graph({
container: "container",
width,
height,
// The sets of behavior modes
modes: {
// Defualt mode
default: [
"drag-node",
"click-select",
"click-add-node",
"click-add-edge",
"zoom-canvas"
],
},
defaultNode: {
type: "rect",
style: {
radius: 4,
},
anchorPoints: [
[0.5, 0],
[1, 0.5],
[0.5, 1],
[0, 0.5],
],
},
// The node styles in different states
nodeStateStyles: {
// The node styles in selected state
selected: {
stroke: "#666",
lineWidth: 2,
fill: "steelblue",
},
},
defaultEdge: {
type: "line",
style: {
stroke: "#F6BD16",
endArrow: {
path: "M 0,0 L 20,10 L 20,-10 Z",
fill: "#F6BD16",
},
},
},
});
graph.data(data);
graph.render();
},
},
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.canvas {
height: 800px;
width: 100%;
margin: 0 auto;
position: relative;
}
.topo_inner {
position: relative;
}
</style>
...@@ -56,6 +56,10 @@ const i18n = new VueI18n({ ...@@ -56,6 +56,10 @@ const i18n = new VueI18n({
} }
}) })
import SuperFlow from 'vue-super-flow'
import 'vue-super-flow/lib/index.css'
Vue.use(SuperFlow)
import api from './request/api' import api from './request/api'
Vue.prototype.$api = api; Vue.prototype.$api = api;
......
...@@ -124,15 +124,15 @@ export default { ...@@ -124,15 +124,15 @@ export default {
rules: { rules: {
name: [ name: [
{ required: true, message: "请输入组织机构名称", trigger: "blur" }, { required: true, message: "请输入组织机构名称", trigger: "blur" },
{ max: 10, message: "长度小于10个字符", trigger: "blur" }, { max: 20, message: "长度请小于20个字符", trigger: "blur" },
], ],
shortname: [ shortname: [
// { required: true, message: '请输入组织机构简称', trigger: 'blur' }, // { required: true, message: '请输入组织机构简称', trigger: 'blur' },
{ max: 10, message: "长度小于10个字符", trigger: "blur" }, { max: 20, message: "长度请小于20个字符", trigger: "blur" },
], ],
desc: [ desc: [
// { required: true, message: '请输入组织说明', trigger: 'blur' }, // { required: true, message: '请输入组织说明', trigger: 'blur' },
{ max: 500, message: "长度小于500个字符", trigger: "blur" }, { max: 500, message: "长度小于500个字符", trigger: "blur" },
], ],
fileList: [ fileList: [
// {required: true, message: '请上传图片', trigger: 'change'} // {required: true, message: '请上传图片', trigger: 'change'}
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
权限管理 / 角色管理 / 权限管理 / 角色管理 /
<span>{{ <span>{{
$route.path.indexOf("edit") !== -1 $route.path.indexOf("edit") !== -1
? "角色类型" ? "编辑角色"
: $route.path.indexOf("add") !== -1 : $route.path.indexOf("add") !== -1
? "新增角色" ? "新增角色"
: "分配权限" : "分配权限"
......
...@@ -349,10 +349,10 @@ export default { ...@@ -349,10 +349,10 @@ export default {
}); });
}, },
change_type() { change_type() {
this.form.systemname = ""; // this.form.systemname = "";
this.form.domain = ""; // this.form.domain = "";
this.form.ip = []; // this.form.ip = [];
this.form.origin = ""; // this.form.origin = "";
}, },
handleClose(tag) { handleClose(tag) {
this.form.ip.splice(this.form.ip.indexOf(tag), 1); this.form.ip.splice(this.form.ip.indexOf(tag), 1);
...@@ -473,18 +473,22 @@ export default { ...@@ -473,18 +473,22 @@ export default {
this.$router.back(-1); this.$router.back(-1);
}, },
add_user() { add_user() {
// this.form.systemname = "";
// this.form.domain = "";
// this.form.ip = [];
// this.form.origin = "";
var temp = { var temp = {
user_id: this.form.account, // 用户名 user_id: this.form.account, // 用户名
password: this.form.password, password: this.form.password,
user_name: this.form.nickname, // 昵称 user_name: this.form.nickname, // 昵称
system_name: this.form.systemname, //系统名称 system_name: this.form.type>=2?this.form.systemname:'', //系统名称
phone: this.form.phone + "", // 电话号 phone: this.form.phone + "", // 电话号
email: this.form.email, // 邮箱 email: this.form.email, // 邮箱
department_id: this.form.origin, // 组织id department_id: this.form.type>=2?this.form.origin:'', // 组织id
is_admin: this.form.type, is_admin: this.form.type,
state: this.form.able, // 用户状态,1——启用,0 禁用 state: this.form.able, // 用户状态,1——启用,0 禁用
domain_name: this.form.domain, // domain_name: this.form.type>=3?this.form.domain:'', //
ip_whitelist: this.form.ip, // ip_whitelist: this.form.type>=3?this.form.ip:[], //
description: this.form.desc, //描述 description: this.form.desc, //描述
link_man: this.form.contact, link_man: this.form.contact,
}; };
...@@ -507,14 +511,14 @@ export default { ...@@ -507,14 +511,14 @@ export default {
var temp = { var temp = {
user_id: this.form.account, // 用户名 user_id: this.form.account, // 用户名
user_name: this.form.nickname, // 昵称 user_name: this.form.nickname, // 昵称
system_name: this.form.systemname, //系统名称 system_name: this.form.type>=2?this.form.systemname:'', //系统名称
phone: this.form.phone + "", // 电话号 phone: this.form.phone + "", // 电话号
email: this.form.email, // 邮箱 email: this.form.email, // 邮箱
department_id: this.form.origin, // 组织id department_id: this.form.type>=2?this.form.origin:'', // 组织id
is_admin: this.form.type, is_admin: this.form.type,
state: this.form.able, // 用户状态,1——启用,0 禁用 state: this.form.able, // 用户状态,1——启用,0 禁用
domain_name: this.form.domain, // domain_name: this.form.type>=3?this.form.domain:'', //
ip_whitelist: this.form.ip && this.form.ip.length ? this.form.ip : [], // ip_whitelist: this.form.type>=3?this.form.ip && this.form.ip.length ? this.form.ip : []:[], //
description: this.form.desc, //描述 description: this.form.desc, //描述
link_man: this.form.contact, link_man: this.form.contact,
}; };
......
...@@ -28,6 +28,22 @@ export default { ...@@ -28,6 +28,22 @@ export default {
{ {
name: "我的应用数据分析", name: "我的应用数据分析",
path: `/data_analysis/my_application` path: `/data_analysis/my_application`
},
{
name: "组织服务数据分析",
path: `/data_analysis/org_service`
},
{
name: "组织应用数据分析",
path: `/data_analysis/org_application`
},
{
name: "运行概况-组织",
path: `/data_analysis/operation_overview`
},
{
name: "服务管控-组织",
path: `/data_analysis/service_control`
} }
], ],
navList: [] navList: []
......
<template>
<div>
组织-运行概况
</div>
</template>
<script>
export default {
methods: {
getData() {}
}
};
</script>
<template>
<div>
组织-应用
</div>
</template>
<script>
export default {
methods: {
getData() {}
}
};
</script>
<template>
<div>
组织-服务
</div>
</template>
<script>
export default {
methods: {
getData() {}
}
};
</script>
<template>
<div>
组织-服务管控
</div>
</template>
<script>
export default {
methods: {
getData() {}
}
};
</script>
<template>
<div class="com_ex">
<WorkFlow />
</div>
</template>
<script>
// @ is an alias to /src
import WorkFlow from "@/components/work-flow/super-flow";
export default {
components: {
WorkFlow,
},
data: () => ({}),
mounted() {},
methods: {},
};
</script>
<style scoped>
.com_ex {
margin-top: 100px;
padding: 20px;
}
</style>
\ No newline at end of file
...@@ -268,8 +268,11 @@ export default { ...@@ -268,8 +268,11 @@ export default {
}); });
}); });
}, },
resetCurrentPage() {
this.$refs.list.resetCurrentPage();
},
topFilterAction() { topFilterAction() {
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
topFilterClear() { topFilterClear() {
this.topFilter = { this.topFilter = {
...@@ -279,7 +282,7 @@ export default { ...@@ -279,7 +282,7 @@ export default {
down_time: "", down_time: "",
}; };
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
showDialog() { showDialog() {
this.$refs.dialog.show(); this.$refs.dialog.show();
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
> >
<select-template <select-template
class="apaas_step_content" class="apaas_step_content"
:tmp-types="[1]"
@change="selectTemplate" @change="selectTemplate"
></select-template> ></select-template>
......
...@@ -260,8 +260,11 @@ export default { ...@@ -260,8 +260,11 @@ export default {
}); });
}); });
}, },
resetCurrentPage() {
this.$refs.list.resetCurrentPage();
},
topFilterAction() { topFilterAction() {
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
topFilterClear() { topFilterClear() {
this.topFilter = { this.topFilter = {
...@@ -270,7 +273,7 @@ export default { ...@@ -270,7 +273,7 @@ export default {
push_time: "", push_time: "",
}; };
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
addNew() { addNew() {
this.$router.push("/message/directed_push/add"); this.$router.push("/message/directed_push/add");
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
<select-template <select-template
class="apaas_step_content" class="apaas_step_content"
:edit="true" :edit="true"
:tmp-types="[2, 3]"
@change="selectTemplate" @change="selectTemplate"
></select-template> ></select-template>
...@@ -98,7 +99,7 @@ export default { ...@@ -98,7 +99,7 @@ export default {
step: 0, step: 0,
done: false, done: false,
templateId: "", templateId: "",
templateContent:"", templateContent: "",
targetUserIds: "", targetUserIds: "",
}; };
}, },
......
...@@ -33,8 +33,9 @@ ...@@ -33,8 +33,9 @@
<span class="filter_title">状态:</span> <span class="filter_title">状态:</span>
<el-select v-model="topFilter.state" placeholder="请选择"> <el-select v-model="topFilter.state" placeholder="请选择">
<el-option label="全部" value=""> </el-option> <el-option label="全部" value=""> </el-option>
<el-option label="推送成功" value="1"> </el-option> <el-option label="推送成功" value="success"> </el-option>
<el-option label="推送失败" value="0"> </el-option> <el-option label="推送失败" value="fail"> </el-option>
<el-option label="推送中" value="pushing"> </el-option>
</el-select> </el-select>
</div> </div>
<div class="filter_item"> <div class="filter_item">
...@@ -259,8 +260,11 @@ export default { ...@@ -259,8 +260,11 @@ export default {
}); });
}); });
}, },
resetCurrentPage() {
this.$refs.list.resetCurrentPage();
},
topFilterAction() { topFilterAction() {
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
topFilterClear() { topFilterClear() {
this.topFilter = { this.topFilter = {
...@@ -269,7 +273,7 @@ export default { ...@@ -269,7 +273,7 @@ export default {
push_time: "", push_time: "",
}; };
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
addNew() { addNew() {
this.$router.push("/message/message_alert/add"); this.$router.push("/message/message_alert/add");
......
...@@ -235,8 +235,11 @@ export default { ...@@ -235,8 +235,11 @@ export default {
}); });
}); });
}, },
resetCurrentPage() {
this.$refs.list.resetCurrentPage();
},
topFilterAction() { topFilterAction() {
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
topFilterClear() { topFilterClear() {
this.topFilter = { this.topFilter = {
...@@ -245,7 +248,7 @@ export default { ...@@ -245,7 +248,7 @@ export default {
update_time: "", update_time: "",
}; };
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
showDialog() { showDialog() {
this.$refs.dialog.show(); this.$refs.dialog.show();
......
...@@ -181,7 +181,11 @@ export default { ...@@ -181,7 +181,11 @@ export default {
.get(`/apaas/service/v3/recommend/manage/featured/services/${this.$route.query.ad_type}`) .get(`/apaas/service/v3/recommend/manage/featured/services/${this.$route.query.ad_type}`)
.then((response) => { .then((response) => {
if (response.data.success) { if (response.data.success) {
if( response.data.data){
this.selected_arr = response.data.data; this.selected_arr = response.data.data;
}else{
this.selected_arr = [];
}
} }
}); });
}, },
......
...@@ -196,8 +196,11 @@ export default { ...@@ -196,8 +196,11 @@ export default {
}); });
}); });
}, },
resetCurrentPage() {
this.$refs.list.resetCurrentPage();
},
topFilterAction() { topFilterAction() {
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
topFilterClear() { topFilterClear() {
this.topFilter = { this.topFilter = {
...@@ -206,7 +209,7 @@ export default { ...@@ -206,7 +209,7 @@ export default {
time: "", time: "",
}; };
this.initList(this.tempFilter); this.resetCurrentPage();
}, },
detailAction(item) { detailAction(item) {
this.$router.push( this.$router.push(
......
...@@ -88,7 +88,7 @@ export default { ...@@ -88,7 +88,7 @@ export default {
{ {
name: "服务请求次数", name: "服务请求次数",
value: 0, value: 0,
icon: require("@/assets/imgs/shop_ic_fuwuzs.png") icon: require("@/assets/imgs/shop_ic_fuwuqqcs.png")
} }
], ],
hot_datas: [], hot_datas: [],
......
...@@ -74,6 +74,7 @@ export default { ...@@ -74,6 +74,7 @@ export default {
[]; [];
this.baseInfo = { this.baseInfo = {
portal_id: datas.portal_id || "", // 时空服务id
service_id: this.id, service_id: this.id,
app_id: 0, app_id: 0,
name: datas.name, name: datas.name,
......
<template>
<div class="notice_container">
<div class="apass_breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/user' }">
个人中心
</el-breadcrumb-item>
<el-breadcrumb-item>消息通知</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="main_container">
<div class="notice_header">
<div class="notcie_filter">
<a :class="{ current: unread }" @click.prevent="filterAction(true)">
<span class="btn_text">未读消息</span>
<span
class="width_num"
v-if="unreadMessageCount > 0"
v-text="unreadMessageCount"
></span>
</a>
<a :class="{ current: !unread }" @click.prevent="filterAction(false)">
<span class="btn_text">全部消息</span>
</a>
</div>
<div class="other_action">
<a @click.prevent="readAll">
<img :src="require('../../../assets/imgs/msg_icon_szyd.png')" />
<span class="btn_text">全部设置为已读</span>
</a>
<a @click.prevent="removeAll">
<img :src="require('../../../assets/imgs/msg_icon_qkxx.png')" />
<span class="btn_text">清空所有消息</span>
</a>
<span style="font-size: 12px;color: #d0d5e7;">|</span>
<a class="set_notice_btn">
<span>
<img :src="require('../../../assets/imgs/msg_icon_xxsz.png')" />
<span class="btn_text" style="color: #0f2683;">消息设置</span>
</span>
<set-notice></set-notice>
</a>
</div>
</div>
<ul class="notice_list">
<li
class="notice_item"
v-for="(item, index) in list"
:key="'item_' + index"
>
<div class="notice_icon">
<img :src="getIcon(item.msg_type, item.readed)" />
</div>
<div class="notice_detail">
<p class="notice_type" v-text="getType(item.msg_type)"></p>
<p class="notice_content" v-html="item.content"></p>
<p class="notice_time" v-text="getTime(item.create_time)"></p>
</div>
<div class="notice_action">
<a v-if="item.readed === 1" class="disabled">
<img :src="require('../../../assets/imgs/msg_icon_yidu.png')" />
</a>
<a v-else @click.prevent="readItem(item)">
<img :src="require('../../../assets/imgs/msg_icon_yidu.png')" />
</a>
<a @click.prevent="removeItem(item)">
<img
:src="require('../../../assets/imgs/msg_icon_shanchu.png')"
/>
</a>
</div>
</li>
</ul>
<list-pagination
:total="listTotal"
:page-sizes="pageSizes"
:page-size="pageSize"
:current-page="currentPage"
@size-change="changePageSize"
@current-change="changeCurrentPage"
style="margin-top: 20px;"
></list-pagination>
</div>
</div>
</template>
<script>
import ListPagination from "@/components/comments-pagination";
import setNotice from "./setNotice";
import helper from "@/services/helper.js";
import { mapState, mapMutations } from "vuex";
export default {
components: {
ListPagination,
setNotice,
},
data: () => ({
unread: true,
list: [],
listTotal: 0,
pageSizes: [10, 20, 50],
pageSize: 10,
currentPage: 1,
initDisabled: false,
allMeassageCount: 0,
}),
computed: {
...mapState({
unreadMessageCount: "unreadMessageCount",
}),
},
methods: {
...mapMutations({
setUnreadMessageCount: "setUnreadMessageCount",
}),
initList() {
let _self = this;
this.initDisabled = true;
this.getMessage({
unread: this.unread,
callback(data) {
_self.list = data.data || [];
_self.listTotal = data.total || 0;
},
finallyCallback() {
_self.initDisabled = false;
},
});
},
getMessage({ unread, callback, finallyCallback }) {
let url = unread
? "/apaas/service/v3/mymsg/unread"
: "/apaas/service/v3/mymsg/all";
this.$http
.get(url, {
params: {
size: this.pageSize,
page: this.currentPage,
},
})
.then(({ data }) => {
if (data.success === 1) {
if (unread) {
this.setUnreadMessageCount(data.data.total || 0);
} else {
this.allMeassageCount = data.data.total;
}
typeof callback === "function" && callback(data.data);
}
typeof finallyCallback === "function" && finallyCallback();
})
.catch((error) => {
console.log(error);
typeof finallyCallback === "function" && finallyCallback();
});
},
getType(type = 0) {
return ["系统通知", "版本更新", "平台维护", "服务推送"][type];
},
getIcon(type = 0, readed = false) {
if (!readed) {
return [
require("@/assets/imgs/msg_ic_xttz.png"),
require("@/assets/imgs/msg_ic_bbgx.png"),
require("@/assets/imgs/msg_ic_ptwh.png"),
require("@/assets/imgs/msg_ic_fwts.png"),
][type];
}
return [
require("@/assets/imgs/msg_ic_xttz_visited.png"),
require("@/assets/imgs/msg_ic_bbgx_visited.png"),
require("@/assets/imgs/msg_ic_ptwh_visited.png"),
require("@/assets/imgs/msg_ic_fwts_visited.png"),
][type];
},
getTime(date) {
return helper.dateStringTransform(date || "");
},
filterAction(unread = true) {
if (this.initDisabled) {
return;
}
this.unread = unread;
this.pageSize = 10;
this.currentPage = 1;
this.initList();
},
changePageSize(value) {
this.pageSize = value;
this.currentPage = 1;
this.initList();
},
changeCurrentPage(value) {
this.currentPage = value;
this.initList();
},
refreshList() {
this.initList(); // 刷新列表
if (!this.unread) {
this.getMessage({
unread: true,
});
}
},
readAction(ids) {
this.$http
.post("/apaas/service/v3/mymsg/setread", ids)
.then(({ data }) => {
if (data.success === 1) {
this.$message.success("操作成功");
this.refreshList();
} else {
this.$message.error(data.errMsg || "操作失败");
}
})
.catch((error) => {
console.log(error);
this.$message.error("操作失败");
});
},
removeAction(ids) {
this.$http
.post("/apaas/service/v3/mymsg/clear", ids)
.then(({ data }) => {
if (data.success === 1) {
this.$message.success("操作成功");
this.refreshList();
} else {
this.$message.error(data.errMsg || "操作失败");
}
})
.catch((error) => {
console.log(error);
this.$message.error("操作失败");
});
},
readItem(item) {
this.readAction([item.id]);
},
removeItem(item) {
this.removeAction([item.id]);
},
readAll() {
if (this.unreadMessageCount === 0) {
this.$message.warning("暂无未读消息");
return;
}
this.readAction([]);
},
removeAll() {
if (this.allMeassageCount === 0) {
this.$message.warning("暂无消息通知");
return;
}
this.removeAction([]);
},
},
created() {
this.initList();
this.getMessage({
unread: false, // 初始化消息总数
});
},
};
</script>
<style scoped>
.notice_container {
padding: 0 20px;
height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
overflow: auto;
}
.notice_container a.disabled {
cursor: not-allowed;
opacity: 0.5;
}
.main_container {
flex-grow: 1;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
padding: 25px 20px 20px;
background-color: #fff;
border-radius: 10px;
margin-bottom: 40px;
}
.notice_header {
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 20px;
}
.notice_header a {
font-size: 14px;
line-height: 24px;
color: #8890a7;
cursor: pointer;
}
.notice_header > div > * + * {
margin-left: 30px;
}
.notice_header a > * {
display: inline-block;
vertical-align: middle;
}
.notice_header a > *:not(:first-child) {
margin-left: 5px;
}
.notcie_filter a .btn_text {
position: relative;
}
.notcie_filter a .btn_text::after {
position: absolute;
content: "";
width: 100%;
height: 3px;
border-radius: 2px;
background-color: #e56600;
left: 0;
bottom: -21px;
display: none;
}
.notcie_filter a .width_num {
min-width: 30px;
background-color: #8890a7;
font-size: 10px;
line-height: 16px;
color: #fff;
padding: 0 8px;
box-sizing: border-box;
border-radius: 8px;
text-align: center;
overflow: hidden;
}
.notcie_filter a.current {
color: #e56600;
}
.notcie_filter a.current .btn_text::after {
display: block;
}
.notcie_filter a.current .width_num {
background-color: #e56600;
}
.notice_list {
flex-grow: 1;
border-top: 2px solid #f4f7fc;
border-bottom: 2px solid #f4f7fc;
}
.notice_item {
padding: 25px 200px 25px 40px;
border-radius: 10px;
overflow: hidden;
position: relative;
display: flex;
justify-content: flex-start;
align-items: flex-start;
}
.notice_item:not(:first-child)::before {
position: absolute;
top: 0;
right: 40px;
left: 40px;
content: "";
border-top: 2px solid #f4f7fc;
}
.notice_item > .notice_icon {
margin: 5px 20px 0 0;
font-size: 0;
}
.notice_item > .notice_detail p {
font-size: 16px;
line-height: 28px;
color: #242c43;
}
.notice_item > .notice_detail .notice_type {
color: #58617a;
margin-bottom: 10px;
}
.notice_item > .notice_detail .notice_time {
color: #8890a7;
}
.notice_item:last-child {
border-bottom: none;
}
.notice_item:hover {
background-color: #f8f9fd;
}
.notice_action {
position: absolute;
top: 0;
right: 0;
width: 190px;
height: 100%;
display: none;
justify-content: center;
align-items: center;
}
.notice_action a {
font-size: 0;
cursor: pointer;
}
.notice_action a + a {
margin-left: 50px;
}
.notice_item:hover::before,
.notice_item:hover + .notice_item::before {
display: none;
}
.notice_item:hover .notice_action {
display: flex;
}
.set_notice_btn {
position: relative;
}
.set_notice_btn::after {
content: "";
position: absolute;
right: 0;
top: 100%;
width: 100%;
height: 30px;
z-index: 665;
}
.set_notice_btn > .set_notice {
position: absolute;
top: 40px;
right: 0;
z-index: 666;
display: none;
}
.set_notice_btn:hover > .set_notice {
display: block;
}
</style>
<template>
<div class="set_notice">
<div class="type_item">
<p class="item_title">服务推送</p>
<p class="item_description">关闭后用户将接收不到服务推送的消息通知</p>
<div class="item_action">
<a
:class="{ on: data.service_message === 1 }"
@click="toggleAction('service_message', 1)"
>
<img
class="icon_off"
:src="require('../../../assets/imgs/btn_off_hov.png')"
/>
<img
class="icon_on"
:src="require('../../../assets/imgs/btn_on_hov.png')"
/>
</a>
</div>
</div>
<div class="type_item">
<p class="item_title">平台维护</p>
<p class="item_description">关闭后用户将接收不到平台维护的消息通知</p>
<div class="item_action">
<a
:class="{ on: data.platform_message === 1 }"
@click="toggleAction('platform_message', 2)"
>
<img
class="icon_off"
:src="require('../../../assets/imgs/btn_off_hov.png')"
/>
<img
class="icon_on"
:src="require('../../../assets/imgs/btn_on_hov.png')"
/>
</a>
</div>
</div>
<div class="type_item">
<p class="item_title">版本更新</p>
<p class="item_description">关闭后用户将接收不到版本更新的消息通知</p>
<div class="item_action">
<a
:class="{ on: data.version_message === 1 }"
@click="toggleAction('version_message', 3)"
>
<img
class="icon_off"
:src="require('../../../assets/imgs/btn_off_hov.png')"
/>
<img
class="icon_on"
:src="require('../../../assets/imgs/btn_on_hov.png')"
/>
</a>
</div>
</div>
<div class="type_item">
<p class="item_title">系统通知</p>
<p class="item_description">关闭后用户将接收不到系统通知的消息通知</p>
<div class="item_action">
<a
:class="{ on: data.system_message === 1 }"
@click="toggleAction('system_message', 4)"
>
<img
class="icon_off"
:src="require('../../../assets/imgs/btn_off_hov.png')"
/>
<img
class="icon_on"
:src="require('../../../assets/imgs/btn_on_hov.png')"
/>
</a>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
data: {
service_message: 0,
platform_message: 0,
version_message: 0,
system_message: 0,
},
disabledstate: {},
};
},
methods: {
getOptions() {
this.$http.get("/apaas/backmgt/center/messageSets").then(({ data }) => {
if (data.success === 1) {
let options = data.data;
this.data.service_message = options.service_message;
this.data.platform_message = options.platform_message;
this.data.version_message = options.version_message;
this.data.system_message = options.system_message;
}
});
},
setOption(typeStr, type, state) {
this.$set(this.disabledstate, typeStr, true);
let finallycallback = () => {
this.$set(this.disabledstate, typeStr, false);
this.getOptions();
};
this.$http
.put("/apaas/backmgt/center/messageSets", null, {
params: {
type,
state,
},
})
.then(({ data }) => {
if (data.success === 1) {
this.$message.success("设置成功");
} else {
this.$message.error(data.errMsg || "设置失败");
}
finallycallback();
})
.catch((error) => {
console.log(error);
this.$message.error("设置失败");
finallycallback();
});
},
toggleAction(typeStr, type) {
if (this.disabledstate[typeStr]) {
this.$message.warning("你操作的频率过快,请稍等");
return;
}
let state = this.data[typeStr] === 1 ? 0 : 1;
this.$set(this.data, typeStr, state);
this.setOption(typeStr, type, state);
},
},
created() {
this.getOptions();
},
};
</script>
<style>
.set_notice {
width: 410px;
background-color: #fff;
border: 1px solid #e3e5ef;
box-sizing: border-box;
border-radius: 10px;
}
.set_notice::before {
content: "";
position: absolute;
top: -16px;
right: 20px;
border-top: 0 solid transparent;
border-right: 8px solid transparent;
border-bottom: 16px solid #e3e5ef;
border-left: 8px solid transparent;
}
.set_notice::after {
content: "";
position: absolute;
top: -14px;
right: 21px;
border-top: 0 solid transparent;
border-right: 7px solid transparent;
border-bottom: 14px solid #fff;
border-left: 7px solid transparent;
}
.type_item {
position: relative;
padding: 12px 100px 12px 35px;
}
.type_item + .type_item {
border-top: 1px solid #e3e5ef;
}
.type_item p {
font-size: 14px;
line-height: 24px;
color: #242c43;
}
.type_item p.item_title {
position: relative;
}
.type_item p.item_title::before {
content: "";
position: absolute;
top: 8px;
left: -18px;
width: 8px;
height: 8px;
border-radius: 50%;
}
.type_item:nth-child(1) p.item_title::before {
background-color: #e8740f;
}
.type_item:nth-child(2) p.item_title::before {
background-color: #3c61ff;
}
.type_item:nth-child(3) p.item_title::before {
background-color: #ffa80b;
}
.type_item:nth-child(4) p.item_title::before {
background-color: #7785ec;
}
.type_item p.item_description {
color: #a9aec0;
}
.item_action {
position: absolute;
top: 0;
right: 0;
width: 100px;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.item_action a {
font-size: 0;
cursor: pointer;
}
.item_action a .icon_on {
display: none;
}
.item_action a.on .icon_on {
display: inline-block;
}
.item_action a.on .icon_off {
display: none;
}
</style>
...@@ -25,7 +25,10 @@ ...@@ -25,7 +25,10 @@
class="detail_head_cell_val text_red" class="detail_head_cell_val text_red"
v-else-if="(orderDetail.approval_first_level == -1 || orderDetail.approval_second_level == -1) && orderDetail.pay_status != -1" v-else-if="(orderDetail.approval_first_level == -1 || orderDetail.approval_second_level == -1) && orderDetail.pay_status != -1"
>审核未通过</p> >审核未通过</p>
<p class="detail_head_cell_val text_blackblue" v-else-if="orderDetail.pay_status == -1">订单已取消</p> <p
class="detail_head_cell_val text_blackblue"
v-else-if="orderDetail.pay_status == -1"
>订单已取消</p>
</div> </div>
<div class="detail_head_cell detail_head_no border_right"> <div class="detail_head_cell detail_head_no border_right">
<p class="detail_head_cell_title">订单编号</p> <p class="detail_head_cell_title">订单编号</p>
...@@ -181,11 +184,11 @@ ...@@ -181,11 +184,11 @@
</div> </div>
<div v-if="orderDetail.order_type == 2"> <div v-if="orderDetail.order_type == 2">
<div class="detail_s_title">应用简介:</div> <div class="detail_s_title">应用简介:</div>
<div class="detail_app_scence">{{ orderDetail.scene }}</div> <div class="detail_app_scence">{{ orderDetail.app_desc }}</div>
</div> </div>
<div v-if="orderDetail.order_type == 2"> <div v-if="orderDetail.order_type == 2">
<div class="detail_s_title">功能简介:</div> <div class="detail_s_title">功能简介:</div>
<div class="detail_app_scence">{{ orderDetail.scene }}</div> <div class="detail_app_scence">{{ orderDetail.app_func }}</div>
</div> </div>
<div v-if="orderDetail.order_type == 1 || orderDetail.order_type == 2"> <div v-if="orderDetail.order_type == 1 || orderDetail.order_type == 2">
<div class="detail_s_title">应用场景:</div> <div class="detail_s_title">应用场景:</div>
...@@ -256,7 +259,7 @@ export default { ...@@ -256,7 +259,7 @@ export default {
BlockRadius, BlockRadius,
ProcessCard, ProcessCard,
TableUm, TableUm,
InfoList InfoList,
}, },
data: () => ({ data: () => ({
helper: helper, helper: helper,
...@@ -275,21 +278,21 @@ export default { ...@@ -275,21 +278,21 @@ export default {
{ {
title: "审批时间:", title: "审批时间:",
type: "time", type: "time",
info: "" info: "",
}, },
{ {
title: "审批单位:", title: "审批单位:",
info: "" info: "",
}, },
{ {
title: "审批人:", title: "审批人:",
info: "" info: "",
}, },
{ {
title: "审批意见:", title: "审批意见:",
info: "" info: "",
} },
] ],
}, },
{ {
title: "二级审批", title: "二级审批",
...@@ -298,21 +301,21 @@ export default { ...@@ -298,21 +301,21 @@ export default {
{ {
title: "审批时间:", title: "审批时间:",
type: "time", type: "time",
info: "" info: "",
}, },
{ {
title: "审批单位:", title: "审批单位:",
info: "" info: "",
}, },
{ {
title: "审批人:", title: "审批人:",
info: "" info: "",
}, },
{ {
title: "审批意见:", title: "审批意见:",
info: "" info: "",
} },
] ],
}, },
{ {
title: "三级审批", title: "三级审批",
...@@ -321,76 +324,76 @@ export default { ...@@ -321,76 +324,76 @@ export default {
{ {
title: "审批时间:", title: "审批时间:",
type: "time", type: "time",
info: "" info: "",
}, },
{ {
title: "审批单位:", title: "审批单位:",
info: "" info: "",
}, },
{ {
title: "审批人:", title: "审批人:",
info: "" info: "",
}, },
{ {
title: "审批意见:", title: "审批意见:",
info: "" info: "",
} },
] ],
} },
], ],
header_arr: [ header_arr: [
{ {
prop: "name", prop: "name",
label: "字段编码", label: "字段编码",
minWidth: "10%", minWidth: "10%",
align: "center" align: "center",
}, },
{ {
prop: "show_type", prop: "show_type",
label: "字段类型", label: "字段类型",
width: "120px", width: "120px",
align: "center" align: "center",
}, },
{ {
prop: "label", prop: "label",
label: "字段名称", label: "字段名称",
minWidth: "20%", minWidth: "20%",
align: "center" align: "center",
}, },
{ {
prop: "descript", prop: "descript",
label: "字段说明", label: "字段说明",
minWidth: "40%", minWidth: "40%",
align: "center" align: "center",
}, },
{ {
prop: "example", prop: "example",
label: "字段示例", label: "字段示例",
minWidth: "20%", minWidth: "20%",
align: "center" align: "center",
} },
], ],
list_arr: [ list_arr: [
{ {
title: "申请人:", title: "申请人:",
info: "" info: "",
}, },
{ {
title: "联系方式:", title: "联系方式:",
info: "" info: "",
}, },
{ {
title: "申请单位:", title: "申请单位:",
info: "" info: "",
}, },
{ {
title: "申请文件:", title: "申请文件:",
info: "", info: "",
url: "", url: "",
type: "down" type: "down",
} },
], ],
data: [] data: [],
}), }),
mounted() { mounted() {
this.getOrderDetail(); this.getOrderDetail();
...@@ -404,7 +407,7 @@ export default { ...@@ -404,7 +407,7 @@ export default {
getOrderDetail() { getOrderDetail() {
this.$api.user this.$api.user
.getOrderDetail({ order_id: this.$route.params.id }) .getOrderDetail({ order_id: this.$route.params.id })
.then(response => { .then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.orderDetail = response.data.data; this.orderDetail = response.data.data;
if (this.orderDetail.res_fields != "") { if (this.orderDetail.res_fields != "") {
...@@ -421,12 +424,14 @@ export default { ...@@ -421,12 +424,14 @@ export default {
getOrderUser() { getOrderUser() {
this.$api.user this.$api.user
.getOrderUser({ order_id: this.$route.params.id }) .getOrderUser({ order_id: this.$route.params.id })
.then(response => { .then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.list_arr[0].info = response.data.data.name; this.list_arr[0].info = response.data.data.name;
this.list_arr[1].info = response.data.data.phone_number; this.list_arr[1].info = response.data.data.phone_number;
this.list_arr[2].info = response.data.data.organization; this.list_arr[2].info = response.data.data.organization;
this.list_arr[3].info = response.data.data.apply_file; this.list_arr[3].info = helper.downloadFileFormat(
response.data.data.apply_file
);
this.list_arr[3].url = response.data.data.apply_file; this.list_arr[3].url = response.data.data.apply_file;
} else { } else {
console.log(response.data.errMsg); console.log(response.data.errMsg);
...@@ -437,9 +442,9 @@ export default { ...@@ -437,9 +442,9 @@ export default {
this.$api.user this.$api.user
.getOrderApproval({ .getOrderApproval({
apply_id: this.orderDetail.apply_id, apply_id: this.orderDetail.apply_id,
kind: this.orderDetail.order_type kind: this.orderDetail.order_type,
}) })
.then(response => { .then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
let data = response.data.data || []; let data = response.data.data || [];
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
...@@ -462,36 +467,36 @@ export default { ...@@ -462,36 +467,36 @@ export default {
service_id: parseFloat(this.orderDetail.service_id), service_id: parseFloat(this.orderDetail.service_id),
spec_id: this.orderDetail.svc_spec_id, spec_id: this.orderDetail.svc_spec_id,
duration: this.orderDetail.duration, duration: this.orderDetail.duration,
duration_unit: this.orderDetail.duration_unit duration_unit: this.orderDetail.duration_unit,
}; };
} else if (this.orderDetail.order_type == 2) { } else if (this.orderDetail.order_type == 2) {
query = { query = {
app_id: parseFloat(this.orderDetail.app_id), app_id: parseFloat(this.orderDetail.app_id),
spec_id: this.orderDetail.spec_app, spec_id: this.orderDetail.spec_app,
duration: this.orderDetail.duration, duration: this.orderDetail.duration,
duration_unit: this.orderDetail.duration_unit duration_unit: this.orderDetail.duration_unit,
}; };
} }
window.sessionStorage.setItem("shoppingCart", JSON.stringify(query)); window.sessionStorage.setItem("shoppingCart", JSON.stringify(query));
this.$router.push({ this.$router.push({
path: "/shop/shop_car_apply", path: "/shop/shop_car_apply",
query: query query: query,
}); });
}, },
cancelDetail() { cancelDetail() {
this.$api.user this.$api.user
.cancelOrder({ order_id: this.orderDetail.order_id }) .cancelOrder({ order_id: this.orderDetail.order_id })
.then(response => { .then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.$message({ this.$message({
message: "取消订单成功", message: "取消订单成功",
type: "success" type: "success",
}); });
this.$router.push({ name: "orderList" }); this.$router.push({ name: "orderList" });
} else { } else {
this.$message({ this.$message({
message: "取消订单失败", message: "取消订单失败",
type: "error" type: "error",
}); });
} }
}); });
...@@ -500,34 +505,34 @@ export default { ...@@ -500,34 +505,34 @@ export default {
if (this.orderDetail.order_type == 1) { if (this.orderDetail.order_type == 1) {
this.$api.user this.$api.user
.getServiceEvaluation({ apply_id: this.orderDetail.apply_id }) .getServiceEvaluation({ apply_id: this.orderDetail.apply_id })
.then(response => { .then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.message = response.data.data; this.message = response.data.data;
this.showMsgBox = true; this.showMsgBox = true;
} else { } else {
this.$message({ this.$message({
message: "获取评价失败", message: "获取评价失败",
type: "error" type: "error",
}); });
} }
}); });
} else if (this.orderDetail.order_type == 2) { } else if (this.orderDetail.order_type == 2) {
this.$api.user this.$api.user
.getAppEvaluation({ apply_id: this.orderDetail.apply_id }) .getAppEvaluation({ apply_id: this.orderDetail.apply_id })
.then(response => { .then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.message = response.data.data; this.message = response.data.data;
this.showMsgBox = true; this.showMsgBox = true;
} else { } else {
this.$message({ this.$message({
message: "获取评价失败", message: "获取评价失败",
type: "error" type: "error",
}); });
} }
}); });
} }
} },
} },
}; };
</script> </script>
<style scoped> <style scoped>
......
...@@ -90,21 +90,21 @@ ...@@ -90,21 +90,21 @@
<el-form-item label="应用简介:" prop="yyjj"> <el-form-item label="应用简介:" prop="yyjj">
<el-input <el-input
v-model="app_info.yyjj" v-model="app_info.yyjj"
type="textywly" type="textarea"
placeholder="请输入应用简介" placeholder="请输入应用简介"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="功能简介:" prop="gnjj"> <el-form-item label="功能简介:" prop="gnjj">
<el-input <el-input
v-model="app_info.gnjj" v-model="app_info.gnjj"
type="textywly" type="textarea"
placeholder="请输入功能简介" placeholder="请输入功能简介"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="应用场景示例:" prop="cjsl"> <el-form-item label="应用场景示例:" prop="cjsl">
<el-input <el-input
v-model="app_info.cjsl" v-model="app_info.cjsl"
type="textywly" type="textarea"
placeholder="请输入应用场景示例" placeholder="请输入应用场景示例"
></el-input> ></el-input>
</el-form-item> </el-form-item>
...@@ -352,10 +352,11 @@ export default { ...@@ -352,10 +352,11 @@ export default {
app_rules: { app_rules: {
name: [ name: [
{ required: true, message: "请输入应用名称", trigger: "blur" }, { required: true, message: "请输入应用名称", trigger: "blur" },
{ max: 16, message: "长度小于16个字符", trigger: "blur" }, { max: 400, message: "长度小于16个字符", trigger: "blur" },
], ],
version: [ version: [
{ required: true, message: "请输入应用版本", trigger: "blur" }, { required: true, message: "请输入应用版本", trigger: "blur" },
{ max: 16, message: "长度小于16个字符", trigger: "blur" },
], ],
ywly: [ ywly: [
{ required: true, message: "请选择业务领域", trigger: "change" }, { required: true, message: "请选择业务领域", trigger: "change" },
...@@ -371,12 +372,15 @@ export default { ...@@ -371,12 +372,15 @@ export default {
], ],
yyjj: [ yyjj: [
{ required: true, message: "请选择应用简介", trigger: "change" }, { required: true, message: "请选择应用简介", trigger: "change" },
{ max: 400, message: "长度小于400个字符", trigger: "blur" },
], ],
gnjj: [ gnjj: [
{ required: true, message: "请选择功能简介", trigger: "change" }, { required: true, message: "请选择功能简介", trigger: "change" },
{ max: 400, message: "长度小于400个字符", trigger: "blur" },
], ],
cjsl: [ cjsl: [
{ required: true, message: "请选择应用场景示例", trigger: "change" }, { required: true, message: "请选择应用场景示例", trigger: "change" },
{ max: 400, message: "长度小于400个字符", trigger: "blur" },
], ],
}, },
deploy_info: { deploy_info: {
...@@ -395,8 +399,14 @@ export default { ...@@ -395,8 +399,14 @@ export default {
file: "", file: "",
}, },
image_rules: { image_rules: {
image_name: [{ validator: image_name_pass, trigger: "blur" }], image_name: [
tag: [{ required: true, message: "请输入版本数", trigger: "blur" }], { validator: image_name_pass, trigger: "blur" },
{ max: 16, message: "长度小于16个字符", trigger: "blur" },
],
tag: [
{ required: true, message: "请输入版本数", trigger: "blur" },
{ max: 16, message: "长度小于16个字符", trigger: "blur" },
],
file: [ file: [
{ required: true, message: "请选择镜像文件", trigger: "change" }, { required: true, message: "请选择镜像文件", trigger: "change" },
], ],
......
...@@ -15,10 +15,11 @@ ...@@ -15,10 +15,11 @@
</template> </template>
<script> <script>
const gisServiceUrl = window.serviceConfig.gisServiceRoot;
export default { export default {
data() { data() {
return { return {
originUrl:'https://apaasgis.wodcloud.com/portal/apps/webappbuilder/index.html' originUrl: gisServiceUrl + '/portal/apps/webappbuilder/index.html'
}; };
}, },
computed:{ computed:{
...@@ -44,7 +45,7 @@ export default { ...@@ -44,7 +45,7 @@ export default {
if (data.cmd == 'appbuildermsg'){ if (data.cmd == 'appbuildermsg'){
console.log(data); console.log(data);
this.$store.commit("setAppBuilderParams", data.params); this.$store.commit("setAppBuilderParams", data.params);
this.$router.push(`/fwzc/fwcs`); this.$router.push(`/fwzc/fwcs?map=4`);
} }
}) })
}, },
......
...@@ -15,29 +15,37 @@ ...@@ -15,29 +15,37 @@
</template> </template>
<script> <script>
const gisServiceUrl = window.serviceConfig.gisServiceRoot;
export default { export default {
data() { data() {
return { return {
originUrl:'https://apaasgis.wodcloud.com/portal/apaasplat/viewer/item.html' originUrl: gisServiceUrl + '/portal/apaasplat/viewer/item.html',
}; };
}, },
computed:{ computed:{
itemUrl:function(){ itemUrl(){
let _self = this; let _self = this;
if(_self.$route.name == 'intelligent_details'){ if(_self.$route.name == 'intelligent_details'){
return `${_self.originUrl}?id=${_self.$route.query.id}&activeMenu=${_self.$route.query.type}` return `${_self.originUrl}?id=${_self.$route.query.id}&activeMenu=${_self.$route.query.activeMenu}`
} }
} }
}, },
mounted() { mounted() {
this.$nextTick(() => {
window.addEventListener('message',event =>{ window.addEventListener('message',event =>{
let data = event.data; let data = event.data;
if (data.cmd == 'mapmsg'){ if (data.cmd == 'mapdetailtoview'){
console.log(data); console.log(data);
this.$store.commit("setZnztDetailsParams", data.params);
this.$router.push('/intelligent_drawing')
} }
}) })
})
}, },
methods: {}, methods: {},
destroyed () {
// window.removeEventListener('message')
}
}; };
</script> </script>
......
...@@ -14,42 +14,51 @@ ...@@ -14,42 +14,51 @@
</template> </template>
<script> <script>
import { mapState } from "vuex";
const gisServiceUrl = window.serviceConfig.gisServiceRoot;
export default { export default {
data() { data() {
return { return {
url:'https://apaasgis.wodcloud.com/portal/apaasplat/viewer/mapViewer.html', url: gisServiceUrl + '/portal/apaasplat/viewer/mapViewer.html',
queryType: '',
id: '',
}; };
}, },
computed:{ computed:{
...mapState(['znztDetailsParams']),
getZnztParams() { getZnztParams() {
return this.$store.state.znztParams; return this.$store.state.znztParams;
}, },
znztUrl(){ znztUrl(){
return this.url+this.urlParams if(this.queryType == 'webmap'){
}, return this.url + `?webmap=${this.id}`;
urlParams(){ }else if (this.queryType == 'layers'){
if(this.$store.state.znztParams){ return this.url + `?layers=${this.id}`;
return `?webmap=${this.$store.state.znztParams.id}`; }else {
}else{ return this.url
return ''
} }
}, },
}, },
watch: { watch: {
getZnztParams(newVal) { getZnztParams(newVal) {
this.urlParams = `?webmap=${newVal.id}`
console.log('智能制图参数'+newVal) console.log('智能制图参数'+newVal)
}, },
}, },
mounted() { mounted() {
this.id = this.znztDetailsParams.id;
this.queryType = this.znztDetailsParams.queryType;
this.$nextTick(() => { this.$nextTick(() => {
window.addEventListener('message',event =>{ window.addEventListener('message',this.postmassageevt);
})
},
methods: {
postmassageevt(event){
let data = event.data; let data = event.data;
// 智能制图发布服务 // 智能制图发布服务
if (data.cmd == 'mapviewmsg'){ if (data.cmd == 'mapviewmsg'){
console.log(data); console.log(data);
this.$store.commit("setZnztParams", data.params); this.$store.commit("setZnztParams", data.params);
this.$router.push(`/fwzc/fwcs`); this.$router.push(`/fwzc/fwcs?map=1`);
} }
// App Builder页面 -- 新窗口打开 // App Builder页面 -- 新窗口打开
if (data.cmd == 'mapviewtoapp'){ if (data.cmd == 'mapviewtoapp'){
...@@ -77,12 +86,31 @@ export default { ...@@ -77,12 +86,31 @@ export default {
}); });
window.open(routeData.href, '_blank'); window.open(routeData.href, '_blank');
} }
}) // 智能制图页面跳转
}) if (data.cmd == 'mapviewurl'){
console.log(data);
switch (data.params.queryType) {
case 'webmap':
this.queryType = 'webmap';
this.$store.commit("setZnztIdParams", data.params.id);
this.id = data.params.id;
break;
case 'layers':
this.queryType = 'layers';
this.$store.commit("setZnztIdParams", data.params.id);
this.id = data.params.id;
break;
default:
this.queryType = '';
this.$store.commit("setZnztIdParams", '');
this.id = '';
break;
}
}
}
}, },
methods: {},
destroyed () { destroyed () {
window.removeEventListener('message') window.removeEventListener('message',this.postmassageevt);
} }
}; };
</script> </script>
......
<template>
<div class="detail_contain">
<p class="now_page_title">在线组件工具 / 流程设计 / 流程管理 / <span>详情</span></p>
<div class="info_contain">
<service-header :data="service_header_arr"></service-header>
<div class="type_box">
<div class="type_title">
<div v-for="(item,index) in service_arr" :key="index+1000" class="type_select" @click="now_service=index" :style="now_service==index?{borderBottom: '4px solid #f5ab4c',color: '#e56600'}:{}">{{item}}</div>
</div>
<div class="type_box_select">
<info-list :list_arr="now_service==0?list_arr:servicead_arr">
<table-um style="width:700px;" v-if="zd_table_arr.length" height='250px' :stripe="true" :headers="header_arr" :datas="zd_table_arr" slot="fw_table"></table-um>
<div slot="process">流程</div>
<div slot="count">
<div class="charts">
<div class="charts_box">
<div class="charts_box_detail" style="width:233px;">
<img style="width:48px;float:left;margin-top:20px;" src="../../../../../assets/imgs/shop_ic_jierujg.png" alt="">
<div style="float:right;">
<p>流程实例总数</p>
<p><span>2,980</span><span></span></p>
</div>
</div>
</div>
<div class="charts_box">
<div class="charts_box_detail" style="width:245px;">
<img style="width:48px;float:left;margin-top:20px;" src="../../../../../assets/imgs/liucheng_ic_haoshi.png" alt="">
<div style="float:right;margin-right:40px;">
<p>流程平均耗时</p>
<p style="right:-38px;"><span>35</span><span>min</span></p>
</div>
</div>
</div>
<div class="charts_box">
<div class="charts_box_detail" style="width:245px;">
<img style="width:48px;float:left;margin-top:20px;" src="../../../../../assets/imgs/liucheng_ic_haoshi.png" alt="">
<div style="float:right;">
<p>流程超时率</p>
<p><span>5</span><span>%</span></p>
</div>
</div>
</div>
</div>
<div class="data_charts">
<div class="data_charts_box">
<block-radius
class="block"
:show_header="true"
title="流程实例趋势分析"
:buttons_arr="['近7天', '近6个月']"
@changeButton="changeday"
>
<line-chart class="block-radius-content" :area_flag="false" :data="line_data"></line-chart>
</block-radius>
</div>
<div class="data_charts_box">
<block-radius
:show_header="true"
title="节点平均耗时排行"
class="block"
>
<toplist
class="block-radius-content"
:options="toplistData"
:target-value="toplistTargetValue"
></toplist>
</block-radius>
</div>
<div class="data_charts_box">
<block-radius :show_header="true" title="节点超时率排行" class="block">
<BarChart :data="bar_data_org" :colors="['#274fee', '#274fee']" :x_router="30" />
</block-radius>
</div>
</div>
</div>
<div slot="suvice">流程</div>
</info-list>
</div>
</div>
</div>
</div>
</template>
<script>
import serviceHeader from '@/components/service-header'
import infoList from '@/components/infoList'
import tableUm from '@/components/table/table-um'
import BlockRadius from "@/components/general/block-radius";
import lineChart from "@/components/e-charts/line_chart";
import Toplist from "@/components/e-charts/toplist";
import BarChart from "@/components/e-charts/bar-chart";
export default {
components: {
serviceHeader,
infoList,
tableUm,
BlockRadius,
lineChart,
Toplist,
BarChart
},
data(){
return{
service_header_arr:{
id: "",
isMap: false,
name:'',
first:[],
second:[],
fixed_process:false,
public:false,
unpublic:false,
undeploy:false,
deploy:false,
fixed_url:'/',
url:''
},
toplistData:[],
toplistTargetValue:0,
bar_data_org: {},
state:1,
now_service:0,
service_arr:[],
line_data:{
xAxisData: ['01-02','01-03','01-04','01-05','01-06','01-07'],
seriesData: [
{
name: "趋势",
data: [100,200,500,1000,1800,500]
}
]
},
list_arr:[
{
title:'流程描述:',
info:''
},
{
title:'所属组织:',
info:''
},
{
title:'创建时间:',
info:''
},
{
title:'流程挂载服务:',
info:'',
type:'solt',
solt_name:'fw_table'
},
{
title:'流程概览:',
info:'',
type:'solt',
solt_name:'process'
},
],
servicead_arr:[
{
title: "流程统计",
prop:"title",
type: "solt",
solt_name: "count",
},
{
title: "流程概览",
prop:"title",
type: "solt",
solt_name: "suvice",
},
],
header_arr:[
{
prop:'fwmc',
label:'服务名称',
align:'left',
type:'click',
url:'/',
id:'id',
},
{
prop:'time',
label:'到期时间',
width:'200px',
align:'center',
},
],
zd_table_arr:[]
}
},
created(){
this.get_header()
this.getbaseinfo()
},
methods:{
changeday(){
},
get_header(){
this.$set(this.service_header_arr,'name','长兴综治事故申报处理流程')
let state = this.state
//未部署
if(state==0){
this.$set(this.service_header_arr,'first',[])
this.$set(this.service_header_arr,'second',[])
this.service_header_arr.first.push({
name:'工作区域',
text:'1111'
})
this.service_header_arr.first.push({
name:'流程状态',
text:'未部署'
})
this.service_header_arr.second.push({
name:'修改时间',
text:'2020-04-11'
})
this.service_arr = ['流程基本信息']
this.service_header_arr.fixed_process=true
this.service_header_arr.public=false
this.service_header_arr.unpublic=false
this.service_header_arr.undeploy=false
this.service_header_arr.deploy=true
//已部署
}else if(state == 1){
this.$set(this.service_header_arr,'first',[])
this.$set(this.service_header_arr,'second',[])
this.service_header_arr.first.push({
name:'工作区域',
text:'1111'
})
this.service_header_arr.first.push({
name:'流程状态',
text:'已部署'
})
this.service_header_arr.first.push({
name:'部署时间',
text:'2020-04-11'
})
this.service_header_arr.second.push({
name:'服务接口地址',
text:'http://localhost:1z/zdrylx?code=430100000000'
})
this.service_arr = ['流程基本信息','流程运行状态']
this.service_header_arr.fixed_process=true
this.service_header_arr.public=true
this.service_header_arr.unpublic=false
this.service_header_arr.undeploy=true
this.service_header_arr.deploy=false
//已发布
}else{
this.$set(this.service_header_arr,'first',[])
this.$set(this.service_header_arr,'second',[])
this.service_header_arr.first.push({
name:'工作区域',
text:'1111'
})
this.service_header_arr.first.push({
name:'流程状态',
text:'已发布'
})
this.service_header_arr.first.push({
name:'发布时间',
text:'2020-04-11'
})
this.service_header_arr.second.push({
name:'服务接口地址',
text:'http://localhost:1z/zdrylx?code=430100000000'
})
this.service_arr = ['流程基本信息','流程运行状态']
this.service_header_arr.fixed_process=true
this.service_header_arr.public=false
this.service_header_arr.unpublic=true
this.service_header_arr.undeploy=false
this.service_header_arr.deploy=false
}
},
getbaseinfo(){
this.$set(this.list_arr[0],'info','浙江省长兴县综合治理平台事故申报处理流程服务,仅供长兴县使用')
this.$set(this.list_arr[1],'info','北京比格大数据有限公司')
this.$set(this.list_arr[2],'info','2019-02-17 21:09:23')
this.zd_table_arr=[
{
fwmc:'身份验证服务',
time:'2020-11-15 15:20:30'
},
{
fwmc:'身份验证服务',
time:'2020-11-15 15:20:30'
},
{
fwmc:'身份验证服务',
time:'2020-11-15 15:20:30'
},
{
fwmc:'身份验证服务',
time:'2020-11-15 15:20:30'
},
{
fwmc:'身份验证服务',
time:'2020-11-15 15:20:30'
},
{
fwmc:'身份验证服务',
time:'2020-11-15 15:20:30'
},
{
fwmc:'身份验证服务',
time:'2020-11-15 15:20:30'
},
]
}
}
}
</script>
<style scoped>
.detail_contain{
width: 100%;
padding: 0 20px;
margin-bottom: 20px;
}
.info_contain{
padding: 25px 20px;
background-color: #fff;
width: 100%;
box-shadow: 0px 3px 6px 0px
#f4f7fc;
border-radius: 12px;
}
.now_page_title{
margin: 15px 0;
color: #898d9e;
}
.now_page_title span{
color: #242c43;
font-weight: 600;
}
.type_box{
width: 100%;
}
.type_title{
width: 100%;
height: 65px;
line-height: 65px;
color: #8890a7;
border-bottom: 2px solid #f4f7fc;
}
.type_select{
float: left;
width: auto;
margin-right: 40px;
height: 65px;
cursor: pointer;
}
.type_box_select{
padding: 30px 10px 10px 10px;
width: 100%;
}
.charts{
width: 100%;
height: 128px;
background-color: #fbfcfe;
border-radius: 12px;
overflow: hidden;
}
.charts_box{
float: left;
width: calc((100% - 4px)/3);
height: 65px;
box-sizing: content-box;
border-right: 2px solid #e6ebfe;
margin-top: 30px;
}
.charts .charts_box:nth-last-of-type(1){
border: 0;
}
.charts_box_detail{
margin: 0 auto;
overflow: hidden;
}
.charts_box_detail div{
position: relative;
margin-right: 30px;
}
.charts_box_detail div p{
font-size: 16px;
color: #58617a;
}
.charts_box_detail div p:nth-last-of-type(1){
position: absolute;
right: -28px;
}
.charts_box_detail div p span:nth-of-type(1){
font-size: 24px;
font-weight: 600;
color: #242c43;
margin-right: 10px;
}
.charts_box_detail div p span:nth-of-type(2){
font-size: 16px;
color: #242c43;
}
.data_charts{
width: 100%;
height: 300px;
overflow: hidden;
}
.data_charts_box{
width: calc((100% - 40px)/3);
float: left;
height: 300px;
box-sizing: border-box;
background-color: #fbfcfe;
border-radius: 12px;
margin-right: 20px;
margin-top: 26px;
}
.data_charts .data_charts_box:nth-last-of-type(1){
margin-right: 0px;
}
.data_charts_box >>> .block_radius{
background-color: #fbfcfe;
height: 100%;
}
.block-radius-content {
width: 100%;
background-color: #fbfcfe;
height: calc(100% - 36px);
margin-top: 15px;
}
.block {
width: 100%;
height: 100%;
}
</style>
<template>
<div class="process-designer-container">
<apass-list
ref="list"
search-placeholder="请输入关键字"
:list-filter="filterList"
:list-header="listHeader"
:list-data="listData"
:list-total="listTotal"
@list-action="init"
:list-padding-left="40"
>
<el-button type="primary" slot="header-left" @click="addNewProcess">
新建流程
</el-button>
<el-breadcrumb separator="/" slot="breadcrumb">
<el-breadcrumb-item>
在线组件工具
</el-breadcrumb-item>
<el-breadcrumb-item>
流程设计
</el-breadcrumb-item>
<el-breadcrumb-item>
流程管理
</el-breadcrumb-item>
</el-breadcrumb>
</apass-list>
<apass-dialog
ref="dialog"
:title="dialogInfo.title"
:msg="dialogInfo.msg"
:submit="dialogInfo.submit"
></apass-dialog>
</div>
</template>
<script>
import helper from "@/services/helper.js";
import apassList from "@/components/apass-list";
import apassDialog from "@/components/apass-dialog";
export default {
components: {
apassList,
apassDialog,
},
data: () => ({
filterList: [
{
name: "服务领域",
},
{
name: "工作区域",
},
{
name: "流程状态",
},
],
listHeader: [],
listData: [],
listTotal: 0,
dialogInfo: {
msg: "",
submit: null,
},
tempFilter: null,
}),
methods: {
init(filter) {
console.log(filter);
this.tempFilter = filter;
this.listTotal = 3;
this.listData = [
{
id: "WF00000001",
name: "保安资格申请流程",
sectors_name: "经济建设",
create_time: "2021-01-01T00:00:00Z",
state: "0",
},
{
id: "WF00000002",
name: "保安考试流程",
sectors_name: "经济建设",
create_time: "2021-01-01T00:00:00Z",
state: "1",
},
{
id: "WF00000003",
name: "申请材料审核流程",
sectors_name: "经济建设",
create_time: "2021-01-01T00:00:00Z",
state: "2",
},
];
},
initFilter() {
Promise.all([
this.$http.get("/apaas/service/v3/service/manager/servtype"),
this.$http.get("/apaas/service/v3/service/manager/servarea"),
])
.then((response) => {
let filterList = response.map((item) => {
return {
name: item.body.data[0].type_name,
prop: item.body.data[0].type_code,
data: item.body.data.map((v) => ({
name: v.name,
value: v.id,
})),
};
});
this.filterList = [
...filterList,
{
name: "流程状态",
prop: "state",
data: [
{
name: "已发布",
value: 2,
},
{
name: "已部署",
value: 1,
},
{
name: "未部署",
value: 0,
},
],
},
];
})
.catch((error) => {
console.log(error);
});
},
iniHeader() {
this.listHeader = [
{
label: "流程编号",
prop: "id",
width: 180,
},
{
label: "流程名称",
prop: "name",
type: "button",
callback: this.detailItem,
},
{
label: "服务领域",
prop: "sectors_name",
align: "center",
width: 240,
},
{
label: "创建时间",
prop: "create_time",
getText(item) {
return helper.dateStringTransform(item.create_time || "");
},
align: "center",
width: 180,
},
{
label: "状态",
prop: "state",
getText(item) {
return ["未部署", "已部署", "已发布"][item.state || 0];
},
align: "center",
width: 180,
},
{
label: "操作",
type: "buttons",
align: "center",
width: 300,
actionList: [
{
label: "发布",
callback: this.publishItem,
disableHide: true,
disabledRule(item) {
return item.state == 2;
},
},
{
label: "编辑",
callback: this.editItem,
},
],
moreActionList: [
{
label: "取消部署",
callback: this.canceldeployItem,
},
{
label: "复制",
callback: this.copyItem,
},
{
label: "删除",
callback: this.deleteItem,
},
],
},
];
},
refresh() {
this.init(this.tempFilter);
},
addNewProcess() {
console.log("addNewProcess");
},
detailItem(item) {
this.$router.push(`/progress/designer/detail/${item.id}`);
},
publishItem(item) {
console.log(`publish ${item.name}`);
},
editItem(item) {
console.log(`edit ${item.name}`);
},
canceldeployItem(item) {
console.log(`cancel deploy ${item.name}`);
},
copyItem(item) {
console.log(`copy ${item.name}`);
},
deleteItem(item) {
console.log(`delete ${item.name}`);
},
},
created() {
this.initFilter();
this.iniHeader();
},
};
</script>
<style scoped>
.process-designer-container {
height: 100%;
}
</style>
<template>
<div class="process_container">
<side-nav-bar
title="流程设计"
imgSrc="tool_ic_tuisong"
:nav-list="navList"
:title-path="navList[0] && navList[0].path"
></side-nav-bar>
<div class="main_container">
<router-view></router-view>
</div>
</div>
</template>
<script>
import sideNavBar from "@/components/side-nav-bar";
export default {
components: {
sideNavBar,
},
data: () => ({
userNav: [
{
name: "流程管理",
path: `/progress/designer`,
},
{
name: "流程监控",
path: `/progress/monitoring`,
},
{
name: "流程设计",
path: `/progress/designs`,
}
],
navList: [],
}),
watch: {
"$route.fullPath"(path) {
this.initNavList();
},
},
methods: {
initNavList() {
this.navList = this.userNav;
},
},
mounted() {
this.initNavList();
},
};
</script>
<style scoped>
.process_container {
height: calc(100vh - 84px);
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>
<template>
<div class="design_contain">
<el-button @click="getData">获取参数</el-button>
<WorkFlow ref="workFlow" />
</div>
</template>
<script>
import WorkFlow from "@/components/work-flow/super-flow";
export default {
components: {
WorkFlow
},
methods: {
getData() {
let self = this;
let data = self.$refs.workFlow.getData();
console.log(data);
let start_num = 0;
let end_num = 0;
let start_id = "";
let end_id = "";
let start_before = 0;
let end_after = 0;
data.nodeList.forEach(item => {
if (item.meta.type == 0) {
start_num++;
start_id = item.id;
}
if (item.meta.type == 1) {
end_num++;
end_id = item.id;
}
});
data.linkList.forEach(item => {
if (start_id == item.endId) {
start_before++;
}
if (end_id == item.startId) {
end_after++;
}
});
if (start_num != 1 || end_num != 1) {
this.$message({
message: "开始节点与结束节点均应有且只有一个",
type: "warning"
});
} else if (start_before != 0) {
this.$message({
message: "开始节点前面不应连接其它节点",
type: "warning"
});
} else if (end_after != 0) {
this.$message({
message: "结束节点后面不应连接其它节点",
type: "warning"
});
}
}
}
};
</script>
<style scoped>
.design_contain {
width: 100%;
padding: 0 20px;
margin-bottom: 20px;
}
</style>
...@@ -126,7 +126,7 @@ export default { ...@@ -126,7 +126,7 @@ export default {
// ) // )
temp.push({...e._source,_source:temp_str,index:idx+1+(this.currentPage-1)*10}) temp.push({...e._source,_source:temp_str,index:idx+1+(this.currentPage-1)*this.pageSize})
}); });
this.tableData = temp this.tableData = temp
} }
......
...@@ -183,6 +183,8 @@ export default { ...@@ -183,6 +183,8 @@ export default {
], ],
service_arr:['服务基本信息','接口详细信息','申请审批信息'], service_arr:['服务基本信息','接口详细信息','申请审批信息'],
service_header_arr:{ service_header_arr:{
id: "",
isMap: false,
name:'', name:'',
first:[ first:[
{ {
...@@ -339,8 +341,9 @@ export default { ...@@ -339,8 +341,9 @@ export default {
this.$message.error(response.data.errMsg) this.$message.error(response.data.errMsg)
return return
} }
console.log(response.data.data);
let data = response.data.data; let data = response.data.data;
this.$set(this.service_header_arr, "portal_id", data.portal_id); // 时空服务id
this.$set(this.service_header_arr, "isMap", data.data_service_type1 === 6);
this.$set(this.service_header_arr, "name", data.name); this.$set(this.service_header_arr, "name", data.name);
this.$set(this.service_header_arr['first'][0], 'text', data.data_service_type1_name); this.$set(this.service_header_arr['first'][0], 'text', data.data_service_type1_name);
this.$set(this.service_header_arr['first'][1], 'text', data.service_apply_info.approval_status==1?'待审批':data.service_apply_info.approval_status==2?'审批中':data.service_apply_info.approval_status==3?'审批通过':'审批未通过'); this.$set(this.service_header_arr['first'][1], 'text', data.service_apply_info.approval_status==1?'待审批':data.service_apply_info.approval_status==2?'审批中':data.service_apply_info.approval_status==3?'审批通过':'审批未通过');
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
</el-form-item> </el-form-item>
<el-form-item class="btnsty"> <el-form-item class="btnsty">
<el-button @click="onSubmit('form')" class="right">提交</el-button> <el-button @click="onSubmit('form')" class="right">提交</el-button>
<el-button class="right">取消</el-button> <el-button class="right" @click="backpage">取消</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
...@@ -81,7 +81,7 @@ export default { ...@@ -81,7 +81,7 @@ export default {
option:[ option:[
{ required: true, message: '请输入意见', trigger: 'blur' }, { required: true, message: '请输入意见', trigger: 'blur' },
{ {
min: 10, message: '长度应大于10个字符', trigger: 'blur' min: 10,max:200, message: '长度应大于10个小于200个字符', trigger: 'blur'
} }
] ]
}, },
...@@ -158,6 +158,8 @@ export default { ...@@ -158,6 +158,8 @@ export default {
], ],
color_arr:['#e15260','"#ef9433','#515fe7'], color_arr:['#e15260','"#ef9433','#515fe7'],
service_header_arr: { service_header_arr: {
id: "",
isMap: false,
name: "", name: "",
first: [ first: [
{ {
...@@ -307,6 +309,9 @@ export default { ...@@ -307,6 +309,9 @@ export default {
} }
}); });
}, },
backpage(){
this.$router.back(-1)
},
set_approval(){ set_approval(){
this.$http.post('/apaas/service/v3/service/approval/applied/approval',{ this.$http.post('/apaas/service/v3/service/approval/applied/approval',{
apply_id:this.id, apply_id:this.id,
...@@ -337,6 +342,8 @@ export default { ...@@ -337,6 +342,8 @@ export default {
return return
} }
let data = response.data.data; let data = response.data.data;
this.$set(this.service_header_arr, "portal_id", data.portal_id); // 时空服务id
this.$set(this.service_header_arr, "isMap", data.data_service_type1 === 6);
this.$set(this.service_header_arr, "name", data.name); this.$set(this.service_header_arr, "name", data.name);
this.$set(this.service_header_arr['first'][0], 'text', data.data_service_type1_name); this.$set(this.service_header_arr['first'][0], 'text', data.data_service_type1_name);
this.$set(this.service_header_arr['first'][1], 'text', data.sectors_name); this.$set(this.service_header_arr['first'][1], 'text', data.sectors_name);
......
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
<div class="params_block_item_in"> <div class="params_block_item_in">
<span class="params_block_item_title">数据盘:</span> <span class="params_block_item_title">数据盘:</span>
<div class="params_block_item_val"> <div class="params_block_item_val">
<div>{{ cloudDteail.disk }}</div> <div>{{ cloudDteail.disk != "" ? cloudDteail.disk : "" }}</div>
</div> </div>
</div> </div>
<!-- <div class="params_block_item_in"> <!-- <div class="params_block_item_in">
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
<div class="params_block_item_in"> <div class="params_block_item_in">
<span class="params_block_item_title">数据盘:</span> <span class="params_block_item_title">数据盘:</span>
<div class="params_block_item_val"> <div class="params_block_item_val">
<div>{{ cloudDetailNew.adjust_disk}}</div> <div>{{ cloudDetailNew.adjust_disk != "" ? cloudDetailNew.adjust_disk : ""}}</div>
</div> </div>
</div> </div>
<!-- <div class="params_block_item_in"> <!-- <div class="params_block_item_in">
...@@ -238,9 +238,7 @@ ...@@ -238,9 +238,7 @@
</div> </div>
</InfoList> </InfoList>
</div> </div>
<div <div class="btn_footer">
class="btn_footer"
>
<el-button <el-button
v-if="now_user == 1 && apploy_msg.first_level == 0" v-if="now_user == 1 && apploy_msg.first_level == 0"
class="submit" class="submit"
...@@ -454,7 +452,7 @@ export default { ...@@ -454,7 +452,7 @@ export default {
apploy_msg: { apploy_msg: {
first_level: null, first_level: null,
second_level: null, second_level: null,
state: null state: null,
}, },
use_uid: "", use_uid: "",
could_delete: false, could_delete: false,
......
...@@ -106,6 +106,7 @@ ...@@ -106,6 +106,7 @@
:title="dialogInfo.title" :title="dialogInfo.title"
:msg="dialogInfo.msg" :msg="dialogInfo.msg"
:submit="dialogInfo.submit" :submit="dialogInfo.submit"
:sunbmitText="dialogInfo.sunbmitText"
></apass-dialog> ></apass-dialog>
<allot-info-confirm <allot-info-confirm
...@@ -282,7 +283,8 @@ export default { ...@@ -282,7 +283,8 @@ export default {
callback: this.deleteItem, callback: this.deleteItem,
class: "warn", class: "warn",
disabledRule(item) { disabledRule(item) {
return item.state != 2; // 只有下架状态可以删除
return item.state !== 0;
}, },
}, },
], ],
...@@ -981,7 +983,11 @@ export default { ...@@ -981,7 +983,11 @@ export default {
}, },
callback: this.cloudAllot, callback: this.cloudAllot,
disabledRule(item) { disabledRule(item) {
return !(item.approve_state === 1 && item.use_uid === ""); return !(
item.state == 1 &&
item.approve_state === 1 &&
item.use_uid === ""
);
}, },
}, },
], ],
...@@ -1053,28 +1059,33 @@ export default { ...@@ -1053,28 +1059,33 @@ export default {
return "上架"; return "上架";
} else if (item.state == 1 || item.state == 3) { } else if (item.state == 1 || item.state == 3) {
return "下架"; return "下架";
} else {
return "-";
} }
}, },
callback(item) { callback(item) {
if (item.state == 2) { if (item.state == 0) {
return _self.soldUpItem(item); return null; // 已下架,上架的操作需要普通用户申请
} else
if (item.state == 1) {
return _self.soldOutItem(item); // 已上架,超管用户可以直接下架
} else if (item.state == 2) {
return _self.soldUpItem(item); // 上架审核中,超管用户可以直接上架
} else if (item.state == 3) { } else if (item.state == 3) {
return _self.soldOutItem(item); return _self.soldOutItem(item); // 下架审核中,超管用户可以直接下架
} else {
return null;
} }
}, },
disabledRule(item) { disabledRule(item) {
return item.state == 0 || item.state == 1; return item.state == 0;
}, },
}, },
{ {
label: "删除", label: "删除",
class: "warn", class: "warn",
callback: this.deleteItem, callback: this.deleteItem,
disabledRule(item) {
// 只有非下架状态可以删除(已上架,下架审核中)
return item.state == 1 || item.state == 3;
}, },
}, // ["已下架", "已上架", "上架审核中", "下架审核中"]
], ],
}, },
]; ];
......
...@@ -185,6 +185,8 @@ export default { ...@@ -185,6 +185,8 @@ export default {
], ],
service_size_data: [], //服务规格数组 service_size_data: [], //服务规格数组
service_header_arr: { service_header_arr: {
id: "",
isMap: false,
url: "", url: "",
name: "", name: "",
first: [ first: [
...@@ -472,7 +474,7 @@ export default { ...@@ -472,7 +474,7 @@ export default {
dyyw: e.business_name, dyyw: e.business_name,
ywxt: e.business_url, ywxt: e.business_url,
cjms: e.scene, cjms: e.scene,
sqsj: e.apply_time sqsj: e.apply_time.split('+')[0].replace('T',' ')
}); });
}); });
} }
...@@ -514,7 +516,8 @@ export default { ...@@ -514,7 +516,8 @@ export default {
.then(response => { .then(response => {
if (response.data.success === 1) { if (response.data.success === 1) {
let data = response.data.data; let data = response.data.data;
console.log(data); this.$set(this.service_header_arr, "portal_id", data.portal_id); // 时空服务id
this.$set(this.service_header_arr, "isMap", data.data_service_type1 === 6);
this.$set(this.service_header_arr, "name", data.name); this.$set(this.service_header_arr, "name", data.name);
this.$set( this.$set(
this.service_header_arr["first"][0], this.service_header_arr["first"][0],
...@@ -747,6 +750,9 @@ export default { ...@@ -747,6 +750,9 @@ export default {
padding: 30px 10px 10px 10px; padding: 30px 10px 10px 10px;
width: 100%; width: 100%;
} }
.type_box_select >>> .outlist .list p{
word-wrap:break-word;
}
.service_title { .service_title {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
......
...@@ -305,9 +305,15 @@ export default { ...@@ -305,9 +305,15 @@ export default {
.catch(function(response) {}); .catch(function(response) {});
}, },
setService(){ setService(){
var reg = /^[1-9][0-9]{0,5}$/
if(this.open){ if(this.open){
if(this.maxline){ if(this.maxline){
if(reg.test(this.maxline)){
}else{
this.$message.error('请输入长度小于6的正整数')
return
}
}else{ }else{
this.$message.error('请输入最大连接数') this.$message.error('请输入最大连接数')
return return
...@@ -317,10 +323,24 @@ export default { ...@@ -317,10 +323,24 @@ export default {
if(!this.maxline1){ if(!this.maxline1){
this.$message.error('请输入最大连接数') this.$message.error('请输入最大连接数')
return return
}else{
if(reg.test(this.maxline1)){
}else{
this.$message.error('请输入长度小于6的正整数')
return
}
} }
if(!this.usetime1){ if(!this.usetime1){
this.$message.error('请输入有效时间') this.$message.error('请输入有效时间')
return return
}else{
if(reg.test(this.maxline1)){
}else{
this.$message.error('请输入长度小于6的正整数')
return
}
} }
if(this.timevalue==''){ if(this.timevalue==''){
this.$message.error('请选择时间') this.$message.error('请选择时间')
...@@ -355,7 +375,8 @@ export default { ...@@ -355,7 +375,8 @@ export default {
return return
} }
this.$message.success('保存成功') this.$message.success('保存成功')
this.getServiceInfo() // this.getServiceInfo()
this.$router.back(-1)
}) })
.catch(function(response) { .catch(function(response) {
...@@ -424,6 +445,9 @@ export default { ...@@ -424,6 +445,9 @@ export default {
background-color: #f7f8f9; background-color: #f7f8f9;
width: 1022px; width: 1022px;
} }
.info_contain .comments_pagination .el-input__inner{
width: auto;
}
.info_contain .el-textarea__inner{ .info_contain .el-textarea__inner{
background-color: #f7f8f9; background-color: #f7f8f9;
width: 1022px; width: 1022px;
......
<template> <template>
<div class="fwcs"> <div class="fwcs">
<el-breadcrumb separator="/" class="bread_crumb"> <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 separator="/" class="bread_crumb">
<el-breadcrumb-item :to="{ path: '/fwzc' }">服务注册</el-breadcrumb-item> <el-breadcrumb-item :to="{ path: '/fwzc' }">服务注册</el-breadcrumb-item>
<el-breadcrumb-item v-if="!jcxxtx">服务测试</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-else :to="{ path: '/fwzc' }">服务测试</el-breadcrumb-item>
...@@ -22,9 +27,9 @@ ...@@ -22,9 +27,9 @@
<el-select @change="changeZhType" v-model="zhyyVal" placeholder="请选择" class="zhyy_select"> <el-select @change="changeZhType" v-model="zhyyVal" placeholder="请选择" class="zhyy_select">
<el-option <el-option
v-for="item in optionsZhyy" v-for="item in optionsZhyy"
:key="item.value" :key="item.id"
:label="item.label" :label="item.name"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</div> </div>
...@@ -337,8 +342,11 @@ ...@@ -337,8 +342,11 @@
<el-radio :label="3">敏感</el-radio> <el-radio :label="3">敏感</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-if="is_map != 0" class="btn_footer">
<el-form-item class="btn_footer"> <el-button class="previous" @click="goBack">{{ is_map == 1 ? "返回智能制图" : "返回Web应用程序" }}</el-button>
<el-button class="registe" @click="registeMap">服务发布</el-button>
</el-form-item>
<el-form-item v-else class="btn_footer">
<el-button class="previous" @click="previous">上一步</el-button> <el-button class="previous" @click="previous">上一步</el-button>
<el-button class="registe" @click="registe">服务注册</el-button> <el-button class="registe" @click="registe">服务注册</el-button>
</el-form-item> </el-form-item>
...@@ -346,23 +354,41 @@ ...@@ -346,23 +354,41 @@
</div> </div>
</block-radius> </block-radius>
</div> </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> </div>
</template> </template>
<script> <script>
const gisServiceUrl = window.serviceConfig.gisServiceRoot;
import BlockRadius from "@/components/general/block-radius"; import BlockRadius from "@/components/general/block-radius";
import CesTable from "@/components/table/table-um"; import CesTable from "@/components/table/table-um";
import Codes from "@/components/general/codes"; import Codes from "@/components/general/codes";
import uploadFile from "@/components/general/upload_file"; import uploadFile from "@/components/general/upload_file";
import helper from "@/services/helper";
import apassDialog from "@/components/apass-dialog";
export default { export default {
components: { components: {
BlockRadius, BlockRadius,
CesTable, CesTable,
apassDialog,
"v-apaas-code": Codes, "v-apaas-code": Codes,
uploadFile uploadFile,
}, },
data() { data() {
return { return {
addPortalItemUrl: gisServiceUrl + '/portal/apaasplat/viewer/addPortalItem.html',
btnList: [], btnList: [],
activeBtn: null, activeBtn: null,
serviceUrl: "", serviceUrl: "",
...@@ -371,7 +397,7 @@ export default { ...@@ -371,7 +397,7 @@ export default {
{ label: "GET", value: "GET" }, { label: "GET", value: "GET" },
{ label: "POST", value: "POST" }, { label: "POST", value: "POST" },
{ label: "PUT", value: "PUT" }, { label: "PUT", value: "PUT" },
{ label: "DELETE", value: "DELETE" } { label: "DELETE", value: "DELETE" },
], ],
optionType1: [{ label: "GET", value: "GET" }], optionType1: [{ label: "GET", value: "GET" }],
activeName: 0, activeName: 0,
...@@ -381,9 +407,9 @@ export default { ...@@ -381,9 +407,9 @@ export default {
label: "请求字段编码", label: "请求字段编码",
prop: "requestEncoding", prop: "requestEncoding",
type: "input", type: "input",
align: "left" align: "left",
}, },
{ label: "请求值", prop: "requestValue", type: "input", align: "left" } { label: "请求值", prop: "requestValue", type: "input", align: "left" },
], ],
sjfwQqcstx: [ sjfwQqcstx: [
{ label: "字段编码", prop: "name", type: "", align: "left" }, { label: "字段编码", prop: "name", type: "", align: "left" },
...@@ -393,13 +419,13 @@ export default { ...@@ -393,13 +419,13 @@ export default {
prop: "show_type", prop: "show_type",
type: "", type: "",
align: "left", align: "left",
width: "140" width: "140",
}, },
{ {
label: "字段名称*", label: "字段名称*",
prop: "label", prop: "label",
type: "input", type: "input",
align: "left" align: "left",
}, },
{ {
label: "是否必须*", label: "是否必须*",
...@@ -409,11 +435,11 @@ export default { ...@@ -409,11 +435,11 @@ export default {
width: 100, width: 100,
selectArr: [ selectArr: [
{ label: "", value: 1 }, { label: "", value: 1 },
{ label: "", value: 0 } { label: "", value: 0 },
], ],
hasDefault: true hasDefault: true,
}, },
{ label: "字段说明", prop: "descript", type: "input", align: "left" } { label: "字段说明", prop: "descript", type: "input", align: "left" },
], ],
sjfwFhcstx: [ sjfwFhcstx: [
{ label: "字段编码", prop: "name", type: "", align: "left" }, { label: "字段编码", prop: "name", type: "", align: "left" },
...@@ -423,9 +449,9 @@ export default { ...@@ -423,9 +449,9 @@ export default {
label: "字段名称*", label: "字段名称*",
prop: "label", prop: "label",
type: "input", type: "input",
align: "left" align: "left",
}, },
{ label: "字段说明", prop: "descript", type: "input", align: "left" } { label: "字段说明", prop: "descript", type: "input", align: "left" },
], ],
zhfwQqcsForm: [ zhfwQqcsForm: [
{ label: "请求字段编码", prop: "key", type: "input", align: "left" }, { label: "请求字段编码", prop: "key", type: "input", align: "left" },
...@@ -437,15 +463,15 @@ export default { ...@@ -437,15 +463,15 @@ export default {
width: 100, width: 100,
selectArr: [ selectArr: [
{ label: "text", value: "text" }, { label: "text", value: "text" },
{ label: "file", value: "file" } { label: "file", value: "file" },
] ],
}, },
{ {
label: "请求值", label: "请求值",
prop: "val", prop: "val",
type: "upload", type: "upload",
align: "center", align: "center",
uploadKey: "field_type" uploadKey: "field_type",
}, },
{ {
label: "操作", label: "操作",
...@@ -455,10 +481,10 @@ export default { ...@@ -455,10 +481,10 @@ export default {
btnList: [ btnList: [
{ {
type: "primary-del", type: "primary-del",
label: "删除" label: "删除",
} },
] ],
} },
], ],
datasZhForm: [], datasZhForm: [],
datasZhwww: [], datasZhwww: [],
...@@ -472,12 +498,7 @@ export default { ...@@ -472,12 +498,7 @@ export default {
zhfwQqt: "JSON", zhfwQqt: "JSON",
skfwQqt: "", skfwQqt: "",
skfwRadios: [], skfwRadios: [],
optionsZhyy: [ optionsZhyy: [],
{ label: "模型算法类", value: 22 },
{ label: "查询验证类", value: 23 },
{ label: "流程类", value: 24 },
{ label: "应用类", value: 34 }
],
zhyyVal: 22, zhyyVal: 22,
jcxxtx: false, jcxxtx: false,
form: { form: {
...@@ -486,12 +507,12 @@ export default { ...@@ -486,12 +507,12 @@ export default {
area: "", area: "",
origin: "", origin: "",
code: "自动生成", code: "自动生成",
resource: 1 resource: 1,
}, },
rules: { rules: {
name: [ name: [
{ required: true, message: "请输入服务名称", trigger: "blur" }, { required: true, message: "请输入服务名称", trigger: "blur" },
{ min: 0, max: 15, message: "服务名称不超过15个字", trigger: "blur" } { min: 0, max: 15, message: "服务名称不超过15个字", trigger: "blur" },
], ],
desc: [ desc: [
{ required: true, message: "请输入服务描述", trigger: "blur" }, { required: true, message: "请输入服务描述", trigger: "blur" },
...@@ -499,16 +520,16 @@ export default { ...@@ -499,16 +520,16 @@ export default {
min: 0, min: 0,
max: 200, max: 200,
message: "服务描述不超过200个字", message: "服务描述不超过200个字",
trigger: "blur" trigger: "blur",
} },
], ],
area: [{ required: true, message: "请选择服务领域", trigger: "blur" }], area: [{ required: true, message: "请选择服务领域", trigger: "blur" }],
origin: [ origin: [
{ required: true, message: "请选择所属组织", trigger: "blur" } { required: true, message: "请选择所属组织", trigger: "blur" },
], ],
resource: [ resource: [
{ required: true, message: "请选择开放程度", trigger: "blur" } { required: true, message: "请选择开放程度", trigger: "blur" },
] ],
}, },
cover: [], cover: [],
optionsArea: [], optionsArea: [],
...@@ -520,7 +541,17 @@ export default { ...@@ -520,7 +541,17 @@ export default {
response_fields: [], response_fields: [],
noSearchUrl: "", noSearchUrl: "",
requestRules: 0, requestRules: 0,
responseRules: 0 responseRules: 0,
is_map: 0,
param_fields: [],
body_fields: [],
dialogInfo: {
title: "时空服务参数已修改",
msg: "",
submit: null,
},
is_portal: false,
portal_id: "",
}; };
}, },
computed: {}, computed: {},
...@@ -589,7 +620,7 @@ export default { ...@@ -589,7 +620,7 @@ export default {
} }
} }
} else if (this.activeBtn == 1) { } else if (this.activeBtn == 1) {
} else if (this.activeBtn == 4) { } else if (this.activeBtn == 4 && this.zhyyVal != 34) {
let request = this.$refs.fwcs_zhfw_qq.getTableData(); let request = this.$refs.fwcs_zhfw_qq.getTableData();
for (let i = 0; i < request.length; i++) { for (let i = 0; i < request.length; i++) {
if ( if (
...@@ -651,15 +682,17 @@ export default { ...@@ -651,15 +682,17 @@ export default {
? this.skfwQqt ? this.skfwQqt
: this.activeBtn == 4 : this.activeBtn == 4
? this.zhyyVal ? this.zhyyVal
: 0 : 0,
}; };
this.$api.workbench.fwzcFwcs(query).then(response => { this.$api.workbench.fwzcFwcs(query).then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
let data = response.data.data; let data = response.data.data;
if (data.body_fields && data.body_fields.length != 0) { if (data.body_fields && data.body_fields.length != 0) {
this.datasQqcs = data.body_fields; this.datasQqcs = data.body_fields;
this.param_fields = data.param_fields;
} else { } else {
this.datasQqcs = data.param_fields; this.datasQqcs = data.param_fields;
this.body_fields = [];
} }
this.datasFhcs = data.response_fields; this.datasFhcs = data.response_fields;
this.resSuccess = true; this.resSuccess = true;
...@@ -696,6 +729,21 @@ export default { ...@@ -696,6 +729,21 @@ export default {
} else if (this.responseRules != 0) { } else if (this.responseRules != 0) {
this.$message.error("请完善返回参数信息中的字段名称"); this.$message.error("请完善返回参数信息中的字段名称");
} }
} else if (this.activeBtn == 1) {
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 { } else {
this.request_fields = []; this.request_fields = [];
this.response_fields = []; this.response_fields = [];
...@@ -732,9 +780,9 @@ export default { ...@@ -732,9 +780,9 @@ export default {
}, },
getOrganization() { getOrganization() {
let query = { let query = {
id: this.$store.state.userInfo.user_id id: this.$store.state.userInfo.user_id,
}; };
this.$api.user.getUserDetail(query).then(request => { this.$api.user.getUserDetail(query).then((request) => {
if (request.data.success == 1) { if (request.data.success == 1) {
this.form.origin = request.data.data.department; this.form.origin = request.data.data.department;
} else { } else {
...@@ -742,11 +790,75 @@ export default { ...@@ -742,11 +790,75 @@ export default {
} }
}); });
}, },
registeMap() {
this.$refs.form.validate((valid) => {
if (valid) {
if (this.cover.length != 0) {
let query = {};
if (this.is_map == 1) {
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.skfwQqt,
encode_method: this.form.code,
method: "GET",
url: this.serviceUrl,
request_fields: [],
request_query_fields: [],
response_fields: [],
content_type: "json",
portal_id: this.portal_id,
};
} 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,
method: "GET",
url: this.serviceUrl,
request_fields: [],
request_query_fields: [],
response_fields: [],
content_type: "json",
portal_id: this.portal_id,
};
}
this.$api.workbench.serviceAdd(query).then((response) => {
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() { registe() {
this.$refs.form.validate(valid => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
if (this.cover.length != 0) { if (this.cover.length != 0) {
let contentType = ""; let contentType = "";
if (this.activeBtn == 1 && !this.is_portal) {
this.addPortalItem();
} else {
if (this.activeBtn == 0) { if (this.activeBtn == 0) {
contentType = this.sjfwQqt; contentType = this.sjfwQqt;
} else if (this.activeBtn == 4) { } else if (this.activeBtn == 4) {
...@@ -773,11 +885,15 @@ export default { ...@@ -773,11 +885,15 @@ export default {
encode_method: this.form.code, encode_method: this.form.code,
method: this.select, method: this.select,
url: this.serviceUrl, url: this.serviceUrl,
request_fields: this.request_fields, request_fields:
this.body_fields.length == 0 ? [] : this.request_fields,
request_query_fields:
this.param_fields.length == 0 ? [] : this.request_fields,
response_fields: this.response_fields, response_fields: this.response_fields,
content_type: contentType content_type: contentType,
portal_id: this.portal_id,
}; };
this.$api.workbench.serviceAdd(query).then(response => { this.$api.workbench.serviceAdd(query).then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.$message.success("服务注册成功"); this.$message.success("服务注册成功");
this.$router.push("/fwgl/" + this.$store.getters.level); this.$router.push("/fwgl/" + this.$store.getters.level);
...@@ -786,6 +902,7 @@ export default { ...@@ -786,6 +902,7 @@ export default {
this.$message.error(response.data.errMsg); this.$message.error(response.data.errMsg);
} }
}); });
}
} else { } else {
this.$message.error("请上传服务封面"); this.$message.error("请上传服务封面");
} }
...@@ -831,7 +948,7 @@ export default { ...@@ -831,7 +948,7 @@ export default {
}, },
changeZhfwQqt() {}, changeZhfwQqt() {},
getArea() { getArea() {
this.$api.workbench.getServiceAreaList().then(response => { this.$api.workbench.getServiceAreaList().then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.optionsArea = response.data.data; this.optionsArea = response.data.data;
} else { } else {
...@@ -840,22 +957,140 @@ export default { ...@@ -840,22 +957,140 @@ export default {
}); });
}, },
getServiceType1() { getServiceType1() {
this.$api.workbench.getServiceTypeList().then(response => { this.$api.workbench.getServiceTypeList().then((response) => {
if (response.data.success == 1) { if (response.data.success == 1) {
this.btnList = response.data.data; this.btnList = response.data.data;
this.skfwRadios = this.btnList[1].childDomains; this.skfwRadios = this.btnList[1].childDomains;
this.skfwQqt = this.skfwRadios[0].id; this.skfwQqt = this.skfwRadios[0].id;
this.optionsZhyy = this.btnList[4].childDomains;
this.activeBtn = 0; this.activeBtn = 0;
} else { } else {
console.log(response.data.errMsg); 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) {
let data = this.$store.state.znztParams;
console.log(data);
self.form.name = data.name;
self.form.desc = data.descript;
self.form.area = Number(data.sectors);
self.serviceUrl = data.url;
self.skfwQqt = 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) {
let data = this.$store.state.appBuilderParams;
console.log(data);
self.form.name = data.name;
self.form.desc = data.descript;
self.form.area = Number(data.sectors);
self.serviceUrl = data.url;
self.skfwQqt = Number(data.data_service_type2);
self.cover[0] = data.cover;
self.portal_id = data.portalid;
self.is_portal = true;
}
this.getOrganization();
} else {
self.is_map = 0;
self.getServiceType1();
}
},
goBack() {
let self = this;
self.$store.commit("setZnztDetailsParams", {
type: "",
queryType: "webmap",
id: self.portal_id,
});
this.$router.go(-1);
},
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.skfwQqt,
descript: self.form.desc,
},
},
"*"
);
},
getItemInfo(itemid) {
console.log(`获取portal参数${itemid}`);
document.getElementById("listener").contentWindow.postMessage(
{
cmd: "getPortalItemInfo",
params: itemid,
},
"*"
);
},
listeners(event) {
console.log(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.skfwQqt != Number(data.data_service_type2)
) {
self.serviceUrl = data.url;
self.skfwQqt = Number(data.data_service_type2);
self.dialogInfo.msg = `您的时空服务地址已更新为${
self.serviceUrl
},服务类型更新为${
self.skfwRadios.find((item) => {
return item.id == self.skfwQqt;
}).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;
} }
}
},
}, },
mounted() { mounted() {
this.getServiceType1(); let self = this;
this.getArea(); window.addEventListener("message", self.listeners, false);
} self.judgeMap();
self.getArea();
},
}; };
</script> </script>
...@@ -924,7 +1159,6 @@ export default { ...@@ -924,7 +1159,6 @@ export default {
color: #f8f9fd; color: #f8f9fd;
} }
.btn_footer .previous { .btn_footer .previous {
width: 100px;
background-color: #c3caf8; background-color: #c3caf8;
color: #0f2683; color: #0f2683;
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="person_info"> <div class="person_info">
<div class="preson"> <div class="preson">
<div class="person_text"> <div class="person_text">
<img src="@/assets/imgs/img_head.png" alt /> <img style="width:40px;" :src="picture_path" alt />
<span>你好,{{ person }}{{login_time?'最近登录 ':''}}{{ login_time }}</span> <span>你好,{{ person }}{{login_time?'最近登录 ':''}}{{ login_time }}</span>
</div> </div>
<div class="person_menu"> <div class="person_menu">
...@@ -57,9 +57,9 @@ ...@@ -57,9 +57,9 @@
<p <p
style="margin-top:15px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;" style="margin-top:15px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;"
> >
<span style="cursor:pointer;" @click="$router.push('/data_analysis')"> <span>
<span style="display: inline-block;vertical-align:middle;">数据分析中心</span> <span style="display: inline-block;vertical-align:middle;">数据分析中心</span>
<div class="enter_btn"></div> <div class="enter_btn" @click="$router.push('/data_analysis')"></div>
</span> </span>
</p> </p>
<div class="data_charts"> <div class="data_charts">
...@@ -158,9 +158,9 @@ ...@@ -158,9 +158,9 @@
<p <p
style="margin-top:15px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;" style="margin-top:15px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;"
> >
<span style="cursor:pointer;" @click="$router.push('/data_analysis')"> <span>
<span style="display: inline-block;vertical-align:middle;">数据分析中心</span> <span style="display: inline-block;vertical-align:middle;">数据分析中心</span>
<div class="enter_btn"></div> <div class="enter_btn" @click="$router.push('/data_analysis')"></div>
</span> </span>
</p> </p>
<div class="data_charts" style="width:100%;"> <div class="data_charts" style="width:100%;">
...@@ -201,9 +201,9 @@ ...@@ -201,9 +201,9 @@
<p <p
style="margin-top:15px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;" style="margin-top:15px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;"
> >
<span style="cursor:pointer;" @click="$router.push('/data_analysis')"> <span>
<span style="display: inline-block;vertical-align:middle;">数据分析中心</span> <span style="display: inline-block;vertical-align:middle;">数据分析中心</span>
<div class="enter_btn"></div> <div class="enter_btn" @click="$router.push('/data_analysis')"></div>
</span> </span>
</p> </p>
<div class="data_charts" style="width:100%;"> <div class="data_charts" style="width:100%;">
...@@ -235,9 +235,9 @@ ...@@ -235,9 +235,9 @@
<p <p
style="margin-top:10px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;" style="margin-top:10px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;"
> >
<span style="cursor:pointer;" @click="gotofw"> <span>
<span style="display: inline-block;vertical-align:middle;"> {{ now_user == 0||now_user == 4 ? "我的服务" : "服务管理" }}</span> <span style="display: inline-block;vertical-align:middle;"> {{ now_user == 0||now_user == 4 ? "我的服务" : "服务管理" }}</span>
<div class="enter_btn"></div> <div class="enter_btn" @click="gotofw"></div>
</span> </span>
</p> </p>
<div class="myservice"> <div class="myservice">
...@@ -281,9 +281,9 @@ ...@@ -281,9 +281,9 @@
<p <p
style="margin-top:10px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;" style="margin-top:10px;margin-bottom:10px;font-size:18px;color: #0d1847;font-weight:600;padding-left:20px;"
> >
<span style="cursor:pointer;" @click="gotoyy"> <span>
<span style="display: inline-block;vertical-align:middle;">{{ now_user == 0||now_user == 4 ? "我的应用" : "平台应用" }}</span> <span style="display: inline-block;vertical-align:middle;">{{ now_user == 0||now_user == 4 ? "我的应用" : "平台应用" }}</span>
<div class="enter_btn"></div> <div class="enter_btn" @click="gotoyy"></div>
</span> </span>
</p> </p>
<div class="myapp"> <div class="myapp">
...@@ -357,6 +357,7 @@ export default { ...@@ -357,6 +357,7 @@ export default {
helper: helper, helper: helper,
service_data: [], service_data: [],
app_data: [], app_data: [],
picture_path:'',
listTotal: 0, listTotal: 0,
currentPage: 1, currentPage: 1,
listTotal1: 0, listTotal1: 0,
...@@ -990,15 +991,14 @@ export default { ...@@ -990,15 +991,14 @@ export default {
pic: require("@/assets/imgs/home_tool_ic_lcsj.png"), pic: require("@/assets/imgs/home_tool_ic_lcsj.png"),
bg: "#e6ebfe", bg: "#e6ebfe",
color: "#515fe7", color: "#515fe7",
url: "https://apaas-nologo.wodcloud.com/lcgl/index.html#/", url: "/progress",
target: 1
}, },
{ {
text: "可视化图表", text: "可视化图表",
pic: require("@/assets/imgs/home_tool_ic_kshbb.png"), pic: require("@/assets/imgs/home_tool_ic_kshbb.png"),
bg: "#fff2e2", bg: "#fff2e2",
color: "#ea7d19", color: "#ea7d19",
url: "https://apaas.wodcloud.com/bi/", url: "/bi",
target: 1 target: 1
}, },
{ {
...@@ -1346,6 +1346,7 @@ export default { ...@@ -1346,6 +1346,7 @@ export default {
this.$router.push("/fwzc/fwcs"); this.$router.push("/fwzc/fwcs");
}, },
getUserData() { getUserData() {
this.picture_path = this.userInfo.picture_path;
this.person = this.userInfo.user_name; this.person = this.userInfo.user_name;
this.login_time = decodeURIComponent(getCookie("lastLogin")).replace( this.login_time = decodeURIComponent(getCookie("lastLogin")).replace(
"+", "+",
...@@ -2316,6 +2317,7 @@ export default { ...@@ -2316,6 +2317,7 @@ export default {
height: 28px; height: 28px;
background-size: 100%; background-size: 100%;
vertical-align: -9px; vertical-align: -9px;
cursor: pointer;
margin-left: 5px; margin-left: 5px;
} }
.enter_btn:hover{ .enter_btn:hover{
......
...@@ -172,7 +172,16 @@ ...@@ -172,7 +172,16 @@
</nor-card> </nor-card>
<nor-card title="服务设置" flag="true" v-show="is_current_user"> <nor-card title="服务设置" flag="true" v-show="is_current_user">
<div class="addimage">多版本回滚</div> <div class="addimage">
<el-select v-model="mesh_value" placeholder="请选择">
<el-option
v-for="item in mesh_options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<p class="imagebox"> <p class="imagebox">
<span <span
@click="image_select = index;getImageInfo()" @click="image_select = index;getImageInfo()"
...@@ -191,7 +200,7 @@ ...@@ -191,7 +200,7 @@
:key="index+7000" :key="index+7000"
v-show="image_select == index" v-show="image_select == index"
stripe stripe
height="300" height="376"
style="width: 100%"> style="width: 100%">
<el-table-column <el-table-column
prop="tag" prop="tag"
...@@ -301,6 +310,21 @@ export default { ...@@ -301,6 +310,21 @@ export default {
}, },
data() { data() {
return { return {
mesh_value:0,
mesh_options:[
{
value:0,
label:'多版本回滚'
},
{
value:1,
label:'AB测试'
},
{
value:2,
label:'权重管理'
},
],
now_user: 0, //0:普通用户,1:组织管理员,2:超级管理员 now_user: 0, //0:普通用户,1:组织管理员,2:超级管理员
buy_style: 0, buy_style: 0,
image_select: 0, image_select: 0,
...@@ -1008,6 +1032,17 @@ background-color:cyan; ...@@ -1008,6 +1032,17 @@ background-color:cyan;
background:khaki; background:khaki;
} }
.addimage .el-input__inner{
width: 110px;
height: 28px;
line-height: 28px;
font-size: 12px;
color: #707693;
}
.addimage .el-input__icon{
line-height: 28px;
}
</style> </style>
<style scoped> <style scoped>
.info_contain >>> .apass_dialog .el-dialog__footer{ .info_contain >>> .apass_dialog .el-dialog__footer{
...@@ -1087,19 +1122,9 @@ background:khaki; ...@@ -1087,19 +1122,9 @@ background:khaki;
color: #58617a; color: #58617a;
} }
.addimage { .addimage {
display: inline-block; position: absolute;
color: #f8f9fd; right:20px;
font-size: 16px; top:-36px;
width: 124px;
height: 44px;
line-height: 44px;
text-align: center;
background-color: #0f2683;
border-radius: 8px;
margin-top: 20px;
margin-bottom: 30px;
margin-left: 40px;
cursor: pointer;
} }
.use_know p { .use_know p {
height: 44px; height: 44px;
...@@ -1187,12 +1212,12 @@ background:khaki; ...@@ -1187,12 +1212,12 @@ background:khaki;
color: #58617a; color: #58617a;
} }
.imagebox { .imagebox {
padding-top: 20px;
overflow: hidden; overflow: hidden;
margin-bottom: 20px; margin-bottom: 20px;
padding-left: 40px; padding-left: 40px;
} }
.imagebox span { .imagebox span {
width: 165px;
height: 34px; height: 34px;
padding: 0 10px; padding: 0 10px;
line-height: 34px; line-height: 34px;
......
...@@ -3,6 +3,7 @@ import qs from 'qs'; // 根据需求是否导入qs模块 ...@@ -3,6 +3,7 @@ import qs from 'qs'; // 根据需求是否导入qs模块
const general = { const general = {
// general api // general api
// logout is not used
logout(params) { logout(params) {
return axios.get(`/iam/api/logout?ReturnUrl=${encodeURIComponent(params.returnUrl)}`); return axios.get(`/iam/api/logout?ReturnUrl=${encodeURIComponent(params.returnUrl)}`);
}, },
......
...@@ -235,27 +235,55 @@ export default new Router({ ...@@ -235,27 +235,55 @@ export default new Router({
{ {
path: "/app_build", path: "/app_build",
name: "app_build", name: "app_build",
component: () => import("@/pages/workbench/app_build"), component: () => import("@/pages/workbench/component-center/app-build/index"),
}, // 应用构建(镜像形式) }, // 应用构建(镜像形式)
{ {
path: "/intelligent_drawing", path: "/intelligent_drawing",
name: "intelligent_drawing", name: "intelligent_drawing",
component: () => import("@/pages/workbench/intelligent_drawing"), component: () => import("@/pages/workbench/component-center/intelligent-drawing/intelligent_drawing"),
}, // 智能制图 }, // 智能制图
{ {
path: "/intelligent_details", path: "/intelligent_details",
name: "intelligent_details", name: "intelligent_details",
component: () => import("@/pages/workbench/intelligent_details"), component: () => import("@/pages/workbench/component-center/intelligent-drawing/intelligent_details"),
}, // 智能制图--详情页面 }, // 智能制图--详情页面
{ {
path: "/intelligent_appbuilder", path: "/intelligent_appbuilder",
name: "intelligent_appbuilder", name: "intelligent_appbuilder",
component: () => import("@/pages/workbench/intelligent_appbuilder"), component: () => import("@/pages/workbench/component-center/intelligent-drawing/intelligent_appbuilder"),
}, // 智能制图--应用程序页面 }, // 智能制图--应用程序页面
{
path: "/progress", // 流程设计
name: "progress",
redirect: "/progress/designer",
component: () => import("@/pages/workbench/component-center/process-management/index"),
children: [
{
path: "/progress/designer",
name: "process_designer",
component: () => import("@/pages/workbench/component-center/process-management/designer/index"),
}, // 流程设计--列表
{
path: "/progress/designer/detail/:id",
name: "process_designer_detail/:id",
component: () => import("@/pages/workbench/component-center/process-management/designer/detail"),
}, // 流程设计--详情
{
path: "/progress/monitoring",
name: "process_monitoring",
component: () => import("@/pages/workbench/component-center/process-management/monitoring/index"),
}, // 流程监控
{
path: "/progress/designs",
name: "process_designs",
component: () => import("@/pages/workbench/component-center/process-management/process-design/index"),
}, // 流程设计
],
}, // 流程设计
{ {
path: "/search_engine", path: "/search_engine",
name: "search_act", name: "search_engine",
component: () => import("@/pages/workbench/search_act"), component: () => import("@/pages/workbench/component-center/search-engine/index"),
}, // 搜索引擎 }, // 搜索引擎
{ {
path: "/user", // 个人中心 path: "/user", // 个人中心
...@@ -268,6 +296,11 @@ export default new Router({ ...@@ -268,6 +296,11 @@ export default new Router({
name: "userInfo", name: "userInfo",
component: () => import("@/pages/user/user_info"), component: () => import("@/pages/user/user_info"),
}, },
{
path: "/user/notice", // 消息通知
name: "notice",
component: () => import("@/pages/user/notice/notice"),
},
{ {
path: "/user/order_list", // 订单管理页 path: "/user/order_list", // 订单管理页
name: "orderList", name: "orderList",
...@@ -377,15 +410,35 @@ export default new Router({ ...@@ -377,15 +410,35 @@ export default new Router({
component: () => import("@/pages/data-analysis/data-analysis"), component: () => import("@/pages/data-analysis/data-analysis"),
children: [ children: [
{ {
path: "/data_analysis/my_service", // 数据分析中心 path: "/data_analysis/my_service", // 数据分析中心-普通
name: "myServiceDataAnalysis", name: "myServiceDataAnalysis",
component: () => import("@/pages/data-analysis/my-service"), component: () => import("@/pages/data-analysis/my-service"),
}, },
{ {
path: "/data_analysis/my_application", // 数据分析中心 path: "/data_analysis/my_application", // 数据分析中心-普通
name: "myApplicationDataAnalysis", name: "myApplicationDataAnalysis",
component: () => import("@/pages/data-analysis/my-application"), component: () => import("@/pages/data-analysis/my-application"),
}, },
{
path: "/data_analysis/org_service", // 数据分析中心服务-组织
name: "orgServiceDataAnalysis",
component: () => import("@/pages/data-analysis/org-service"),
},
{
path: "/data_analysis/org_application", // 数据分析中心应用-组织
name: "orgApplicationDataAnalysis",
component: () => import("@/pages/data-analysis/org-application"),
},
{
path: "/data_analysis/operation_overview", // 运行概况-组织
name: "operationOverview",
component: () => import("@/pages/data-analysis/operation-overview"),
},
{
path: "/data_analysis/service_control", // 服务管控-组织
name: "serviceControl",
component: () => import("@/pages/data-analysis/service-control"),
},
], ],
}, },
{ {
...@@ -503,5 +556,10 @@ export default new Router({ ...@@ -503,5 +556,10 @@ export default new Router({
name: "example_com_list", name: "example_com_list",
component: () => import("@/pages/example/example_com_list"), component: () => import("@/pages/example/example_com_list"),
}, },
{
path: "/example_com_flow", // 流程图实例
name: "example_com_flow",
component: () => import("@/pages/example/example_com_flow"),
},
], ],
}); });
...@@ -85,3 +85,16 @@ module.exports.CreationDateDesc = function (timestamp) { ...@@ -85,3 +85,16 @@ module.exports.CreationDateDesc = function (timestamp) {
timeZone: "Asia/Shanghai" timeZone: "Asia/Shanghai"
}); });
} }
module.exports.getQueryString = function (name, url) {
let search = url.substr(url.indexOf("?"));
let theRequest = new Object();
if (search.indexOf("?") != -1) {
let str = search.substr(1);
strs = str.split("&");
for (let i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return theRequest[name];
}
\ No newline at end of file
...@@ -21,6 +21,13 @@ const store = new Vuex.Store({ ...@@ -21,6 +21,13 @@ const store = new Vuex.Store({
menuCartState: 0, //购物车操作都要修改这个值,menu监听这个值的变化实时获取购物车列表 menuCartState: 0, //购物车操作都要修改这个值,menu监听这个值的变化实时获取购物车列表
znztParams: null, //智能制图传入过来的数据 znztParams: null, //智能制图传入过来的数据
appBuilderParams: null, //应用程序传入过来的数据 appBuilderParams: null, //应用程序传入过来的数据
znztIdParams: '', //智能制图服务id
znztDetailsParams: {
type: '',
queryType: '',
id: '',
}, //智能制图服务详情id
unreadMessageCount: 0
}, },
getters: { getters: {
// 1:超管 2:组织管理员 3:普通用户 4:开发者 // 1:超管 2:组织管理员 3:普通用户 4:开发者
...@@ -60,6 +67,15 @@ const store = new Vuex.Store({ ...@@ -60,6 +67,15 @@ const store = new Vuex.Store({
setAppBuilderParams(state, newValue) { setAppBuilderParams(state, newValue) {
state.appBuilderParams = newValue; state.appBuilderParams = newValue;
}, },
setZnztIdParams(state, newValue) {
state.znztIdParams = newValue;
},
setZnztDetailsParams(state, newValue) {
state.znztDetailsParams = newValue;
},
setUnreadMessageCount(state, newValue) {
state.unreadMessageCount = newValue;
},
}, },
}); });
......
window.serviceConfig = {
gisServiceRoot: 'https://apaasgis.wodcloud.com'
};
\ No newline at end of file
...@@ -2022,7 +2022,7 @@ clone@^1.0.2: ...@@ -2022,7 +2022,7 @@ clone@^1.0.2:
resolved "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" resolved "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
clone@^2.1.1: clone@^2.1.1, clone@^2.1.2:
version "2.1.2" version "2.1.2"
resolved "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" resolved "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
...@@ -2937,7 +2937,7 @@ entities@^2.0.0: ...@@ -2937,7 +2937,7 @@ entities@^2.0.0:
resolved "https://registry.npm.taobao.org/entities/download/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" resolved "https://registry.npm.taobao.org/entities/download/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
integrity sha1-XEh+V0Krk8Fau12iJ1m4WQ7AO38= integrity sha1-XEh+V0Krk8Fau12iJ1m4WQ7AO38=
errno@^0.1.3, errno@~0.1.7: errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
version "0.1.7" version "0.1.7"
resolved "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" resolved "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
integrity sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg= integrity sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=
...@@ -3879,7 +3879,7 @@ ignore@^3.3.5: ...@@ -3879,7 +3879,7 @@ ignore@^3.3.5:
resolved "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" resolved "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
integrity sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM= integrity sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=
image-size@^0.5.1: image-size@^0.5.1, image-size@~0.5.0:
version "0.5.5" version "0.5.5"
resolved "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" resolved "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
...@@ -4405,6 +4405,31 @@ last-call-webpack-plugin@^3.0.0: ...@@ -4405,6 +4405,31 @@ last-call-webpack-plugin@^3.0.0:
lodash "^4.17.5" lodash "^4.17.5"
webpack-sources "^1.1.0" webpack-sources "^1.1.0"
less-loader@^6.2.0:
version "6.2.0"
resolved "https://registry.npm.taobao.org/less-loader/download/less-loader-6.2.0.tgz?cache=0&sync_timestamp=1593788012269&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless-loader%2Fdownload%2Fless-loader-6.2.0.tgz#8b26f621c155b342eefc24f5bd6e9dc40c42a719"
integrity sha1-iyb2IcFVs0Lu/CT1vW6dxAxCpxk=
dependencies:
clone "^2.1.2"
less "^3.11.3"
loader-utils "^2.0.0"
schema-utils "^2.7.0"
less@^3.11.3, less@^3.12.2:
version "3.12.2"
resolved "https://registry.npm.taobao.org/less/download/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4"
integrity sha1-FX5t0ypohp34hZMUrTjnAhGvOrQ=
dependencies:
tslib "^1.10.0"
optionalDependencies:
errno "^0.1.1"
graceful-fs "^4.1.2"
image-size "~0.5.0"
make-dir "^2.1.0"
mime "^1.4.1"
native-request "^1.0.5"
source-map "~0.6.0"
leven@^3.1.0: leven@^3.1.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" resolved "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
...@@ -4441,6 +4466,15 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4 ...@@ -4441,6 +4466,15 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4
emojis-list "^3.0.0" emojis-list "^3.0.0"
json5 "^1.0.1" json5 "^1.0.1"
loader-utils@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
integrity sha1-5MrOW4FtQloWa18JfhDNErNgZLA=
dependencies:
big.js "^5.2.2"
emojis-list "^3.0.0"
json5 "^2.1.2"
locate-path@^2.0.0: locate-path@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
...@@ -4538,7 +4572,7 @@ make-dir@^1.0.0: ...@@ -4538,7 +4572,7 @@ make-dir@^1.0.0:
dependencies: dependencies:
pify "^3.0.0" pify "^3.0.0"
make-dir@^2.0.0: make-dir@^2.0.0, make-dir@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
integrity sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU= integrity sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=
...@@ -4694,7 +4728,7 @@ mime-types@~2.1.17, mime-types@~2.1.24: ...@@ -4694,7 +4728,7 @@ mime-types@~2.1.17, mime-types@~2.1.24:
dependencies: dependencies:
mime-db "1.44.0" mime-db "1.44.0"
mime@1.6.0: mime@1.6.0, mime@^1.4.1:
version "1.6.0" version "1.6.0"
resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1590596706367&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1590596706367&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE= integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=
...@@ -4889,6 +4923,11 @@ nanomatch@^1.2.1, nanomatch@^1.2.9: ...@@ -4889,6 +4923,11 @@ nanomatch@^1.2.1, nanomatch@^1.2.9:
snapdragon "^0.8.1" snapdragon "^0.8.1"
to-regex "^3.0.1" to-regex "^3.0.1"
native-request@^1.0.5:
version "1.0.7"
resolved "https://registry.npm.taobao.org/native-request/download/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856"
integrity sha1-/3QtxVW0yPLxwUtUhjm6F05XOFY=
negotiator@0.6.2: negotiator@0.6.2:
version "0.6.2" version "0.6.2"
resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
...@@ -6323,7 +6362,7 @@ schema-utils@^1.0.0: ...@@ -6323,7 +6362,7 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0" ajv-errors "^1.0.0"
ajv-keywords "^3.1.0" ajv-keywords "^3.1.0"
schema-utils@^2.6.5: schema-utils@^2.6.5, schema-utils@^2.7.0:
version "2.7.0" version "2.7.0"
resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.0.tgz?cache=0&sync_timestamp=1590761195120&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.0.tgz?cache=0&sync_timestamp=1590761195120&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
integrity sha1-FxUfdtjq5n+793lgwzxnatn078c= integrity sha1-FxUfdtjq5n+793lgwzxnatn078c=
...@@ -7342,6 +7381,11 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: ...@@ -7342,6 +7381,11 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
hash-sum "^1.0.2" hash-sum "^1.0.2"
loader-utils "^1.0.2" loader-utils "^1.0.2"
vue-super-flow@^1.3.2:
version "1.3.2"
resolved "https://registry.npm.taobao.org/vue-super-flow/download/vue-super-flow-1.3.2.tgz#1de9b8c907b0cbcda9dfca6a36ed95ec9b45f35e"
integrity sha1-Hem4yQewy82p38pqNu2V7JtF814=
vue-template-compiler@^2.6.10: vue-template-compiler@^2.6.10:
version "2.6.11" version "2.6.11"
resolved "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" resolved "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080"
......
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