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,10 +609,14 @@ width: 620px!important; ...@@ -609,10 +609,14 @@ 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;
margin: 0 20px; margin: 0 20px;
} }
.apass_table .border-active td { .apass_table .border-active td {
padding: 10px 0; padding: 10px 0;
......
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() {
...@@ -358,7 +401,7 @@ export default { ...@@ -358,7 +401,7 @@ export default {
...this.selected, ...this.selected,
content: this.detail.content, content: this.detail.content,
}); });
this.$refs.dialog.hide(); this.$refs.dialog.hide();
}, },
}, },
......
...@@ -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,20 +233,22 @@ export default { ...@@ -224,20 +233,22 @@ 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
if (response.data.success == 1) { .delOrder({ id: this.cellItem.order_id })
this.$message({ .then((response) => {
message: "删除订单成功", if (response.data.success == 1) {
type: "success" this.$message({
}); message: "删除订单成功",
this.$emit("updateList"); type: "success",
} else { });
this.$message({ this.$emit("updateList");
message: "删除订单失败", } else {
type: "error" this.$message({
}); message: "删除订单失败",
} type: "error",
}); });
}
});
}, },
nextApply() { nextApply() {
let query = {}; let query = {};
...@@ -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){
// 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}`)
console.log(this.$route);
}else if(val == 1){
this.$emit('editapp')
}else if(val == 2){
this.$emit('unline',this.data)
}else if(val == 3){
this.$emit('unsell',this.data)
}else if(val == 4){
this.$emit('applymy')
}else if(val == 5){
// /yygl/:level/:type/appdebugger/:deploy_id
this.$emit('debuggerfunc')
}else if(val == 6){
this.$emit('applymy')
}
},
goto_page(url){
this.$router.push(url)
} }
if (val == 0) {
// 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}`
);
console.log(this.$route);
} else if (val == 1) {
this.$emit("editapp");
} else if (val == 2) {
this.$emit("unline", this.data);
} else if (val == 3) {
this.$emit("unsell", this.data);
} else if (val == 4) {
this.$emit("applymy");
} else if (val == 5) {
// /yygl/:level/:type/appdebugger/:deploy_id
this.$emit("debuggerfunc");
} else if (val == 6) {
this.$emit("applymy");
}
},
goto_page(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);
......
This diff is collapsed.
<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) {
this.selected_arr = response.data.data; if( 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,
......
This diff is collapsed.
<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() {
window.addEventListener('message',event =>{ this.$nextTick(() => {
let data = event.data; window.addEventListener('message',event =>{
if (data.cmd == 'mapmsg'){ let data = event.data;
console.log(data); if (data.cmd == 'mapdetailtoview'){
} console.log(data);
this.$store.commit("setZnztDetailsParams", data.params);
this.$router.push('/intelligent_drawing')
}
})
}) })
}, },
methods: {}, methods: {},
destroyed () {
// window.removeEventListener('message')
}
}; };
</script> </script>
......
...@@ -14,75 +14,103 @@ ...@@ -14,75 +14,103 @@
</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);
let data = event.data;
// 智能制图发布服务
if (data.cmd == 'mapviewmsg'){
console.log(data);
this.$store.commit("setZnztParams", data.params);
this.$router.push(`/fwzc/fwcs`);
}
// App Builder页面 -- 新窗口打开
if (data.cmd == 'mapviewtoapp'){
console.log(data);
let params = {
title: data.params.title,
tags: data.params.tags,
sharewithwebmap:data.params.shareWithWebMap,
webmap:data.params.id,
summary: data.params.summary,
};
let routeData = this.$router.resolve({
name: "intelligent_appbuilder",
query: params,
});
window.open(routeData.href, '_blank');
// this.$store.commit("setAppBuilderParams", data.params);
}
// 智能制图服务详情--新窗口打开
if (data.cmd == 'mapdetailmsg'){
console.log(data);
let routeData = this.$router.resolve({
name: "intelligent_details",
query: data.params,
});
window.open(routeData.href, '_blank');
}
})
}) })
}, },
methods: {}, methods: {
postmassageevt(event){
let data = event.data;
// 智能制图发布服务
if (data.cmd == 'mapviewmsg'){
console.log(data);
this.$store.commit("setZnztParams", data.params);
this.$router.push(`/fwzc/fwcs?map=1`);
}
// App Builder页面 -- 新窗口打开
if (data.cmd == 'mapviewtoapp'){
console.log(data);
let params = {
title: data.params.title,
tags: data.params.tags,
sharewithwebmap:data.params.shareWithWebMap,
webmap:data.params.id,
summary: data.params.summary,
};
let routeData = this.$router.resolve({
name: "intelligent_appbuilder",
query: params,
});
window.open(routeData.href, '_blank');
// this.$store.commit("setAppBuilderParams", data.params);
}
// 智能制图服务详情--新窗口打开
if (data.cmd == 'mapdetailmsg'){
console.log(data);
let routeData = this.$router.resolve({
name: "intelligent_details",
query: data.params,
});
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;
}
}
}
},
destroyed () { destroyed () {
window.removeEventListener('message') window.removeEventListener('message',this.postmassageevt);
} }
}; };
</script> </script>
......
<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?'审批通过':'审批未通过');
......
...@@ -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,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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