diff --git a/src/assets/svg/topology_ic_ganzhifw.svg b/src/assets/svg/topology_ic_ganzhifw.svg new file mode 100644 index 0000000000000000000000000000000000000000..9d1f75758ede69f8da4df86630c6a1ef301f3efd --- /dev/null +++ b/src/assets/svg/topology_ic_ganzhifw.svg @@ -0,0 +1 @@ +ic_画板 17 \ No newline at end of file diff --git a/src/assets/svg/topology_ic_shikongfw.svg b/src/assets/svg/topology_ic_shikongfw.svg new file mode 100644 index 0000000000000000000000000000000000000000..48a34980bae936a73c52d9639c6097cd11846842 --- /dev/null +++ b/src/assets/svg/topology_ic_shikongfw.svg @@ -0,0 +1 @@ +ic_画板 15 \ No newline at end of file diff --git a/src/assets/svg/topology_ic_shipinfw.svg b/src/assets/svg/topology_ic_shipinfw.svg new file mode 100644 index 0000000000000000000000000000000000000000..1f386ccae335af89ea436108ab772a16ac5c923a --- /dev/null +++ b/src/assets/svg/topology_ic_shipinfw.svg @@ -0,0 +1 @@ +ic_画板 16 \ No newline at end of file diff --git a/src/assets/svg/topology_ic_shujufw.svg b/src/assets/svg/topology_ic_shujufw.svg new file mode 100644 index 0000000000000000000000000000000000000000..d33bbe93cac67ea97b1943c6727a5e3646025b57 --- /dev/null +++ b/src/assets/svg/topology_ic_shujufw.svg @@ -0,0 +1 @@ +ic_画板 14 \ No newline at end of file diff --git a/src/assets/svg/topology_ic_zonghefw.svg b/src/assets/svg/topology_ic_zonghefw.svg new file mode 100644 index 0000000000000000000000000000000000000000..b5b13db0304f4fddd6355f48a635d76620c10d39 --- /dev/null +++ b/src/assets/svg/topology_ic_zonghefw.svg @@ -0,0 +1 @@ +ic_画板 18 \ No newline at end of file diff --git a/src/components/shop-cloud/shop-cloud.vue b/src/components/shop-cloud/shop-cloud.vue index f1d0f41574ed81c6c7ce2588b607251ddfd3b183..29bf92c783102b4a71e164a5009c2dfec6b1f5b4 100644 --- a/src/components/shop-cloud/shop-cloud.vue +++ b/src/components/shop-cloud/shop-cloud.vue @@ -139,7 +139,7 @@
GB
- +
单个容器组规格
@@ -1059,7 +1059,18 @@ export default { ] }; this.$api.serviceShop.updateCloud(query).then(response => { - console.log(response); + if (response.data.success == 1) { + this.$message({ + message: "申请成功", + type: "success" + }); + this.$router.push("/services_shop"); + } else { + this.$message({ + message: "申请失败", + type: "error" + }); + } }); } console.log(this.form); diff --git a/src/components/topology.vue b/src/components/topology.vue index 5dff6c0bc671718b25520f329321f05b53edf931..1df78ea4de99decf011a6ab92c82ee448dcbc16b 100644 --- a/src/components/topology.vue +++ b/src/components/topology.vue @@ -17,14 +17,23 @@ import G6 from "@antv/g6"; export default { props: { - datas: Object, + datas: { + type: Object, + default: () => { + return { + nodes: [], + edges: [] + }; + } + }, namespace: String }, mounted() {}, watch: { datas(val) { - console.log(val); this.getCavData(); + this.getLegendNodes(); + this.getLegendEdges(); } }, methods: { @@ -36,32 +45,32 @@ export default { switch (node.data.nodeType) { case "workload": node.type = "image"; - node.img = "./static/topology_ic_shujufw.svg"; + node.img = require("@/assets/svg/topology_ic_shujufw.svg"); node.size = [15, 15]; break; case "app": node.type = "image"; - node.img = "./static/topology_ic_shujufw.svg"; + node.img = require("@/assets/svg/topology_ic_shujufw.svg"); node.size = [15, 15]; break; case "unknow source": node.type = "image"; - node.img = "./static/topology_ic_shujufw.svg"; + node.img = require("@/assets/svg/topology_ic_shujufw.svg"); node.size = [15, 15]; break; case "service": node.type = "image"; - node.img = "./static/topology_ic_shujufw.svg"; + node.img = require("@/assets/svg/topology_ic_shujufw.svg"); node.size = [15, 15]; break; case "service entry": node.type = "image"; - node.img = "./static/topology_ic_shujufw.svg"; + node.img = require("@/assets/svg/topology_ic_shujufw.svg"); node.size = [15, 15]; break; default: node.type = "image"; - node.img = "./static/topology_ic_shujufw.svg"; + node.img = require("@/assets/svg/topology_ic_ganzhifw.svg"); node.size = [15, 15]; break; } @@ -86,6 +95,11 @@ export default { edge.id = edge.data.id; edge.source = edge.data.source; edge.target = edge.data.target; + edge.label = edge.data.traffic.rates + ? edge.data.traffic.rates.tcp + ? edge.data.traffic.rates.tcp + : edge.data.traffic.rates.http + : ""; edge.style = { stroke: "#494e8f", lineWidth: 1, @@ -97,17 +111,43 @@ export default { strokeOpacity: 1, cursor: "pointer" }; - if (edge.data.xxx == "success") { - // sueecss - edge.style.stroke = "#25bdb1"; + if (edge.data.traffic.protocol == "tcp") { + // tcp + edge.type = "1"; + edge.style.stroke = "#c77eb5"; + } else if (edge.data.traffic.protocol == "http") { + if (edge.data.traffic.responses) { + let sta = 0; + for (let i in edge.data.traffic.responses) { + if ( + i.substring(i.length - 3, i.length - 2) == 5 || + i.substring(i.length - 3, i.length - 2) == 4 + ) { + sta += edge.data.traffic.responses[i][0]; + } else { + sta += 0; + } + if (sta > 20) { + edge.style.stroke = "#d93a49"; + edge.type = "3"; + } else if (sta == 0) { + edge.style.stroke = "#1d953f"; + edge.type = "2"; + } else { + edge.style.stroke = "#f36c21"; + edge.type = "2"; + } + } + } else { + edge.style.stroke = "#a1a3a6"; + edge.type = "0"; + } } else { - // warning - edge.style.stroke = "#e15260"; + edge.style.stroke = "#1d953f"; + edge.type = "2"; } }); self.getCav(); - self.getLegendNodes(); - self.getLegendEdges(); }, getCav() { const width = this.$refs.conCav.scrollWidth; @@ -224,7 +264,7 @@ export default { x: legendX, y: legendBeginY, type: "image", - img: "./static/topology_ic_shujufw.svg", + img: require("@/assets/svg/topology_ic_shujufw.svg"), size: [15, 15], label: "数据服务" }, @@ -233,7 +273,7 @@ export default { x: legendX, y: legendBeginY + legendYPadding * 1, type: "image", - img: "./static/topology_ic_shikongfw.svg", + img: require("@/assets/svg/topology_ic_shikongfw.svg"), size: [15, 15], label: "时空服务" }, @@ -242,7 +282,7 @@ export default { x: legendX, y: legendBeginY + legendYPadding * 2, type: "image", - img: "./static/topology_ic_shipinfw.svg", + img: require("@/assets/svg/topology_ic_shipinfw.svg"), size: [15, 15], label: "视频服务" }, @@ -251,7 +291,7 @@ export default { x: legendX, y: legendBeginY + legendYPadding * 3, type: "image", - img: "./static/topology_ic_ganzhifw.svg", + img: require("@/assets/svg/topology_ic_ganzhifw.svg"), size: [15, 15], label: "感知服务" }, @@ -260,7 +300,7 @@ export default { x: legendX, y: legendBeginY + legendYPadding * 4, type: "image", - img: "./static/topology_ic_zonghefw.svg", + img: require("@/assets/svg/topology_ic_zonghefw.svg"), size: [15, 15], label: "综合应用" } @@ -403,11 +443,11 @@ export default { background-color: #fff; } .legend_in_tit { - color: #8890a7; - font-size: 14px; - line-height: 26px; - padding: 0 10px; - border-bottom: 2px #e5f0ff solid;; + color: #8890a7; + font-size: 14px; + line-height: 26px; + padding: 0 10px; + border-bottom: 2px #e5f0ff solid; } .legend_nodes { width: 100%; diff --git a/src/pages/workbench/fwgl/approveWorkspace.vue b/src/pages/workbench/fwgl/approveWorkspace.vue index 6ea43fe0644fbe333c0b889dfa01ba6fa5af0127..676fe745b15939cc5932566d9a6993a92bac1e16 100644 --- a/src/pages/workbench/fwgl/approveWorkspace.vue +++ b/src/pages/workbench/fwgl/approveWorkspace.vue @@ -59,25 +59,27 @@ export default { sunbmitText: "", submit: null, }, + tempFilter: null, }), computed: {}, methods: { init(filter) { // console.log(filter); + this.tempFilter = filter; + this.$http - .get("/apaas/service/v3/resource/user/apply/list", { + .get("/apaas/service/v3/resource/apply/approveList", { params: { search: filter.keyword, page: filter.page, limit: filter.size, - depart: "", - state1: filter.state1, + state: filter.state, }, }) .then(({ data }) => { this.listTotal = data.total; - this.listData = data.data.cloud_apply_list; + this.listData = data.data; }) .catch((error) => { console.log(error); @@ -87,18 +89,53 @@ export default { this.$refs.dialog.show(); }, detailAction(item) { - console.log("detailAction"); + this.$router.push({ + path: `/fwgl/${this.level}/${this.type}/cloud_detail/${item.id}`, + }); }, approveAction(item) { + let action = (type) => { + this.$http + .put("/apaas/service/v3/resource/apply/approve", null, { + params: { + apply_id: item.apply_id, + apply_type: item.apply_type, + cloud_id: item.id, + apply_state: type, + }, + }) + .then(({ data }) => { + if (data.success == 1) { + this.$message({ + message: data.errMsg || `操作成功.`, + type: "success", + }); + this.init(this.tempFilter); + } else { + this.$message({ + message: data.errMsg || "操作失败", + type: "warning", + }); + } + }) + .catch((error) => { + console.log(error); + this.$message({ + message: "操作失败", + type: "warning", + }); + }); + }; + this.dialogInfo.msg = "该工作区域的申请通过还是拒绝?"; this.dialogInfo.cancelText = "拒绝"; this.dialogInfo.cancelType = "danger"; this.dialogInfo.cancel = () => { - console.log("approveAction - false"); + action(-1); }; this.dialogInfo.sunbmitText = "通过"; this.dialogInfo.submit = () => { - console.log("approveAction - true"); + action(1); }; this.showDialog(); }, @@ -118,12 +155,12 @@ export default { this.level = parseInt(this.$route.params.level); this.type = parseInt(this.$route.params.type); - let warnFlag = this.$route.query.warn || false; + let warnFlag = this.$route.query.warn == 1 ? true : false; this.otherFilter = [ { name: "审批状态", - prop: "state1", + prop: "state", default: "", options: [ { @@ -148,7 +185,7 @@ export default { this.listHeader = [ { label: "工作区域名称", - prop: "name_space", + prop: "namespace", type: "button", callback: this.detailAction, }, @@ -202,12 +239,14 @@ export default { }, { label: "申请类型", - prop: "type", align: "center", + getText(item) { + return item.apply_type === 0 ? "初次申请" : "资源调整"; + }, }, { label: "所属组织", - prop: "org_name", + prop: "department_name", }, { label: "用户申请时间", diff --git a/src/pages/workbench/fwgl/cloud-detail.vue b/src/pages/workbench/fwgl/cloud-detail.vue index 5fe557b487f1803cbe64f8d96004e20aaeba8bac..5c89e234cff76b218a9d2e0fd19f825bc1a8cb22 100644 --- a/src/pages/workbench/fwgl/cloud-detail.vue +++ b/src/pages/workbench/fwgl/cloud-detail.vue @@ -36,7 +36,7 @@

业务系统名: - {{ cloudData.workplace }} + {{ cloudData.system_name }} 资源申请时间: {{ cloudData.apply_time }}

@@ -291,7 +291,6 @@ export default { data() { return { id: "", - userId: "", url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg", helper, @@ -456,7 +455,14 @@ export default { now_user: "", activeName: null, tabShow: true, - cloudData: {}, + cloudData: { + namespace: "", + workplace: "", + user_name: "", + phone: "", + apply_time: "", + system_name: "" + }, cloudDteail: { containers: "", cpu: "", @@ -504,14 +510,38 @@ export default { } }, mounted() { + this.getUrlQuery(); this.getCloudDetail(); }, methods: { + getUrlQuery() { + this.apply_id = this.$route.query.apply_id || ""; + this.user_id = this.$route.query.user_id || ""; + this.apply_type = this.$route.query.apply_type || 0; + this.use_uid = this.$route.query.use_uid || ""; + this.id = this.$route.query.id || ""; + if (this.use_uid != "") { + this.getCloudApplication(); + } + }, getUrl() { return this.$route.path.substring(0, 9); }, + getCloudApplication() { + this.$api.workbench + .getCloudApplication({ namespace: this.cloudData.namespace }) + .then(response => { + if (response.data.success == 1) { + this.appList = response.data.data; + } else { + console.log(response.data.errMsg); + } + }); + }, download() {}, - adjustment() {}, + adjustment() { + this.$router.push("/shop/cloud"); + }, distribution() { this.$api.workbench .setCloudAllocation({ id: this.id, userId: this.user_id }) @@ -530,9 +560,74 @@ export default { } }); }, - refuse() {}, - pass() {}, - deleteItem() {}, + refuse() { + let query = { + applyId: this.apply_id, + applyState: -1, + applyType: this.apply_type, + applyCloudId: this.id, + namespace: this.cloudData.namespace + }; + this.$api.workbench.setCloudApproval(query).then(response => { + if (response.data.success == 1) { + this.$message({ + message: "申请已拒绝", + type: "success" + }); + this.$router.push(this.getUrl()); + } else { + this.$message({ + message: "申请拒绝失败", + type: "error" + }); + } + }); + }, + pass() { + let query = { + applyId: this.apply_id, + applyState: 1, + applyType: this.apply_type, + applyCloudId: this.id, + namespace: this.cloudData.namespace + }; + this.$api.workbench.setCloudApproval(query).then(response => { + if (response.data.success == 1) { + this.$message({ + message: "申请已通过", + type: "success" + }); + this.$router.push(this.getUrl()); + } else { + this.$message({ + message: "申请通过失败", + type: "error" + }); + } + }); + }, + deleteItem() { + this.$api.workbench + .deleteCloud({ + id: this.id, + namespace: this.cloudData.namespace, + useUid: this.use_uid + }) + .then(response => { + if (response.data.success == 1) { + this.$message({ + message: "该资源已删除", + type: "success" + }); + this.$router.push(this.getUrl()); + } else { + this.$message({ + message: "资源删除失败", + type: "error" + }); + } + }); + }, getCurrentUser() { this.$api.user.getNowUser().then(({ data }) => { if (data.success == 1) { @@ -547,6 +642,7 @@ export default { this.$refs.allotConfirm.getDetail(this.apply_id); }, clickTab() {}, + // 根据列表参数来判断显示什么 setListWithRole() { if (this.now_user == 0) { // 普通用户 @@ -594,9 +690,9 @@ export default { }, getCloudDetail() { let query = { - type: 0, - applyId: 13, - id: 25 + type: this.apply_type, + applyId: this.apply_id, + id: this.id }; this.$api.workbench.getCloudDetail(query).then(response => { let data = response.data.data; @@ -633,7 +729,6 @@ export default { (count.containers_total / count.containers_use) * 100 ); } - // this.appList = this.cloudDteail.containers = data.containers; this.cloudDteail.cpu = data.cpu; this.cloudDteail.disk = data.disk; @@ -654,6 +749,12 @@ export default { this.cloudDteail.adjust_one_memory_min = data.adjust_one_memory_min; this.apploy_msg.first_level = data.first_level; this.apploy_msg.second_level = data.second_level; + this.cloudData.namespace = data.namespace; + this.cloudData.workplace = data.workplace; + this.cloudData.user_name = data.user_name; + this.cloudData.phone = data.phone; + this.cloudData.apply_time = data.apply_time; + this.cloudData.system_name = data.system_name; this.setListWithRole(); }); } diff --git a/src/pages/workbench/fwgl/fwglList.vue b/src/pages/workbench/fwgl/fwglList.vue index 4645437e868345fa6273e81907c144e4219122e4..c1f3c6f0230457972710b02b3c4a5f48cb42aa68 100644 --- a/src/pages/workbench/fwgl/fwglList.vue +++ b/src/pages/workbench/fwgl/fwglList.vue @@ -1486,7 +1486,9 @@ export default { ); }, // 审批服务 cloudDetail(item) { - console.log("cloudDetail - " + item.name); + this.$router.push({ + path: `/fwgl/${this.level}/${this.type}/cloud_detail/${item.id}`, + }); }, cloudAllot(item) { this.$refs.allotConfirm.getDetail(item.apply_id); @@ -1996,7 +1998,7 @@ export default { this.$router.push({ path: `/fwgl/${this.level}/${this.type}/approveWorkspace`, query: { - warn: this.cloud_admin_warn, + warn: this.cloud_admin_warn ? 1 : 0, }, }); }, @@ -2035,6 +2037,7 @@ export default {