Commit ce1f2e2d authored by 徐一鸣's avatar 徐一鸣

Merge branch 'dev' into xym

parents d9ecc911 f63abf18
......@@ -50,7 +50,24 @@
</template>
</ul>
<div class="steps_container">
<div class="steps_container steps_done" v-if="done">
<div class="steps_done_info">
<div class="left_container">
<img
:src="require('../../assets/imgs/steps_done.png')"
width="100%"
/>
</div>
<div class="right_container">
<p v-if="doneTitle" v-text="doneTitle"></p>
<p v-if="doneSubTitle" v-text="doneSubTitle"></p>
</div>
</div>
<div class="done_action apass_button">
<slot name="action"></slot>
</div>
</div>
<div class="steps_container" v-else>
<slot></slot>
</div>
</div>
......@@ -64,11 +81,22 @@ export default {
type: Number,
default: () => "",
},
done: {
type: Boolean,
default: () => false,
},
doneTitle: {
type: String,
default: () => "操作成功",
},
doneSubTitle: {
type: String,
default: () => "",
},
},
data: () => ({
steps: [],
}),
computed: {},
methods: {
getSteps() {
this.steps = this.$slots.default
......@@ -88,6 +116,12 @@ export default {
</script>
<style scoped>
.app_build_steps {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
}
.steps_header {
display: flex;
justify-content: space-between;
......@@ -152,9 +186,44 @@ export default {
.steps_header > .step_item.active .step_name {
color: #8890a7;
}
.steps_container {
border-top: 2px solid #f4f7fc;
margin-top: 20px;
flex-grow: 1;
}
.steps_done {
position: relative;
}
.steps_done_info {
position: absolute;
top: calc(50% - 40px);
left: 50%;
transform: translate(-50%, -50%);
}
.steps_done_info > * {
display: inline-block;
vertical-align: middle;
}
.steps_done_info > .left_container {
width: 70px;
font-size: 0;
margin-right: 10px;
}
.steps_done_info > .right_container > p:nth-child(1) {
font-size: 18px;
font-weight: 700;
line-height: 24px;
color: #242c43;
}
.steps_done_info > .right_container > p:nth-child(2) {
font-size: 14px;
line-height: 20px;
color: #8890a7;
margin-top: 5px;
}
.done_action {
position: absolute;
right: 0;
bottom: 0;
}
</style>
......@@ -101,18 +101,24 @@ export default {
roundCap: true,
itemStyle: {
normal: {
color:
self.dangerousValue == "high"
? self.data.data >= 80
? "#e15260"
: "#515fe7"
: self.data.data > 75
? "#00cfc6"
: self.data.data > 50
? "#54cefd"
: self.data.data > 25
? "#54cefd"
: "#25bdb1"
color: new graphic.LinearGradient(0, 0, 1, 0, [
{ offset: 0, color: "#fff" },
{
offset: 1,
color:
self.dangerousValue == "high"
? self.data.data >= 80
? "#e15260"
: "#515fe7"
: self.data.data > 75
? "#00cfc6"
: self.data.data > 50
? "#54cefd"
: self.data.data > 25
? "#54cefd"
: "#25bdb1"
}
])
}
},
barGap: "-100%"
......
......@@ -7,18 +7,31 @@
</div>
<el-row class="cell_row">
<el-col :span="10" class="cell_msg">
<img :src="cellItem.cover" class="cell_msg_img" />
<img v-if="cellItem.order_type != 3" :src="cellItem.cover" class="cell_msg_img" />
<img v-else :src="require('@/assets/imgs/img_yunziyuan.png')" class="cell_msg_img" />
<div class="cell_msg_right">
<div class="cell_name">
<div v-if="cellItem.order_type != 3" class="cell_name">
<span>{{ cellItem.name }}</span>
<span v-if="cellItem.mapService" class="tags map_service">mapService</span>
<span v-if="cellItem.openness == 1" class="tags shared">共享</span>
<span v-else-if="cellItem.openness == 2" class="tags restricted">受限</span>
<span v-else-if="cellItem.openness == 3" class="tags sensitive">敏感</span>
</div>
<div v-else class="cell_name">
<span>云资源申请</span>
</div>
<div class="cell_msg_other">
<div class="cell_type">{{ cellItem.sector }}</div>
<div class="cell_creator">{{ cellItem.src_organization }}</div>
<div
class="cell_type"
>{{ cellItem.order_type != 3 ? cellItem.sector : cellItem.namespace }}</div>
<div
v-if="cellItem.order_type != 3"
class="cell_creator"
>{{ cellItem.src_organization }}</div>
<div
v-else
class="cell_creator"
>{{ cellItem.apply_type == 0 ? "申请新的工作区域" : "升级现有工作区域" }}</div>
</div>
</div>
</el-col>
......@@ -33,8 +46,13 @@
<div>规格:{{ cellItem.spec_app == 0 ? "申请获取应用镜像部署权限" : "申请获取应用镜像开发权限" }}</div>
</div>
<div v-else-if="cellItem.order_type == 3">
<div>规格:CPU 2核,内存 4GB,容器组 8个;数据盘 3块,每块数据盘容量 2GB</div>
<div class="cell_specification_type">单个容器组:CPU最高 4核,默认 2核;内存最高 8 GB,默认 4GB</div>
<div>
规格:CPU {{ cellItem.cpu }}核,内存 {{ cellItem.memory }}GB,容器组 {{ cellItem.containers }}个;
<span v-if="cellItem.disk_num != 0">{{ cellItem.disk_num }}数据盘 {{ cellItem.disk_num }}块,每块数据盘容量 {{ cellItem.disk_cap }}GB</span>
</div>
<div
class="cell_specification_type"
>单个容器组:CPU最高 {{ cellItem.one_cpu_max }}核,默认 {{ cellItem.one_cpu_min }}核;内存最高 {{ cellItem.one_memory_max }}GB,默认 {{ cellItem.one_memory_min }}GB</div>
</div>
</el-col>
<el-col :span="4" class="approval_status">
......@@ -93,7 +111,7 @@
class="cell_option_btn"
@click="viewDetail(cellItem.order_id)"
>查看详情</el-button>
<div class="cell_option_spec" @click="nextApply">再次申请</div>
<div v-if="cellItem.approval_second_level == 1 && cellItem.pay_status != -1" class="cell_option_spec" @click="nextApply">再次申请</div>
</div>
</el-col>
<el-collapse-transition>
......@@ -220,6 +238,10 @@ export default {
duration: this.cellItem.duration,
duration_unit: this.cellItem.duration_unit
};
this.$router.push({
path: "/shop/shop_car_apply",
query: query
});
} else if (this.cellItem.order_type == 2) {
query = {
app_id: parseFloat(this.cellItem.app_id),
......@@ -227,11 +249,15 @@ export default {
duration: this.cellItem.duration,
duration_unit: this.cellItem.duration_unit
};
this.$router.push({
path: "/shop/shop_car_apply",
query: query
});
} else if (this.cellItem.order_type == 2) {
this.$router.push({
path: "/shop/shop_cloud"
});
}
this.$router.push({
path: "/shop/shop_car_apply",
query: query
});
},
getMessage() {
if (this.cellItem.order_type == 1) {
......@@ -310,6 +336,7 @@ export default {
width: 118px;
height: 118px;
border-radius: 8px;
border: 3px #f4f7fc solid;
}
.cell_msg_right {
width: calc(100% - 140px);
......
......@@ -30,7 +30,7 @@
<span class="com_cell_item_title">服务类型:</span>
<span
class="com_cell_data"
>{{ cellData.data_service_type1_name }}&nbsp;&nbsp;{{ cellData.data_service_type2_str }}&nbsp;&nbsp;{{ cellData.data_service_type3_str }}</span>
>{{ cellData.data_service_type1_name }}&nbsp;&nbsp;{{ cellData.data_service_type2_name }}&nbsp;&nbsp;{{ cellData.data_service_type3_name }}</span>
</div>
<div class="com_cell_item">
<span class="com_cell_item_title">更新时间:</span>
......@@ -89,6 +89,7 @@ export default {
height: 166px;
border-radius: 12px;
overflow: hidden;
border: 4px #f4f7fc solid;
}
.com_cell_img {
width: 100%;
......@@ -100,12 +101,13 @@ export default {
}
.com_cell_msg_title {
color: #0d1847;
font-size: 22px;
font-size: 18px;
line-height: 30px;
font-weight: 700;
margin-bottom: 6px;
}
.com_cell_item {
font-size: 16px;
font-size: 14px;
line-height: 26px;
margin-top: 1px;
color: #8890a7;
......@@ -124,12 +126,12 @@ export default {
white-space: nowrap;
}
.com_cell_right {
width: 250px;
width: 300px;
padding: 25px 0 0 50px;
}
.com_cell_right_text {
font-size: 14px;
margin-top: 15px;
font-size: 16px;
margin-top: 25px;
}
.com_cell_right_time_tit {
color: #8890a7;
......@@ -140,10 +142,10 @@ export default {
.com_cell_right_btn {
background-color: #0f2683;
color: #f8f9fd;
width: 160px;
width: 220px;
height: 40px;
border-radius: 20px;
margin-top: 35px;
margin-top: 25px;
}
.tags {
display: inline-block;
......@@ -181,10 +183,10 @@ export default {
.com_cell_right .el-rate__text {
display: inline-block;
margin-left: 10px;
font-size: 22px;
font-size: 32px;
font-weight: 700;
}
.com_cell_right .el-rate__icon {
font-size: 20px;
font-size: 28px;
}
</style>
\ No newline at end of file
......@@ -223,7 +223,11 @@ export default {
time_app: null,
times: null
}),
mounted() {},
mounted() {
window.onresize = () => {
this.judgeHeight();
};
},
watch: {
urlFilter: {
handler(val) {
......@@ -335,7 +339,7 @@ export default {
this.time_app = setInterval(() => {
if (this.refresh_app_1 && this.refresh_app_2 && this.refresh_app_3) {
this.judgeHeight();
clearInterval(this.time_app)
clearInterval(this.time_app);
}
}, 50);
} else {
......@@ -377,7 +381,7 @@ export default {
}
}
}
this.$set((this.filterLists = list));
this.filterLists = [...list];
},
clickOpen(index) {
let list = this.openList;
......
......@@ -104,30 +104,42 @@
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="22">
<el-form-item class="form_item">
<div class="form_item_title">数据盘(可选):</div>
<el-select v-model="formNew.store_type" placeholder="请选择数据盘类型">
<el-option
v-for="item in options_store_type"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item class="form_item input_has_right">
<div class="form_item_title">数据盘(可选):</div>
<el-input-number
v-model="formNew.dataDisk"
controls-position="right"
:min="0"
placeholder="请选择数量"
placeholder="请选择增加数据盘的数量"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item class="form_item input_has_right">
<div class="form_item_title">每块数据盘容量:</div>
<el-input-number
v-model="formNew.perDataDisk"
controls-position="right"
:min="0"
placeholder="请选择容量"
placeholder="请选择每块数据盘的容量"
></el-input-number>
<div class="input_right">GB</div>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="form_title">单个容器组规格</div>
</el-col>
......@@ -330,24 +342,37 @@
></table-um>
</el-form-item>
</el-col>
<el-col :span="22">
<el-form-item class="form_item">
<div class="form_item_title">增加数据盘:</div>
<el-select v-model="formOld.store_type" placeholder="请选择数据盘类型">
<el-option
v-for="item in options_store_type"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item class="form_item input_has_right">
<div class="form_item_title">增加数据盘:</div>
<el-input-number
v-model="formOld.dataDisk"
controls-position="right"
:min="0"
placeholder="请选择增加数据盘的数量"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item class="form_item input_has_right">
<div class="form_item_title">每块数据盘容量:</div>
<el-input-number
v-model="formOld.perDataDisk"
controls-position="right"
:min="0"
placeholder="请选择每块数据盘的容量"
></el-input-number>
<div class="input_right">GB</div>
</el-form-item>
......@@ -562,12 +587,16 @@
<span class="dia_block_item_title">容器组:</span>
<span class="dia_block_item_val">{{ diaForm.containerGroup }}</span>
</div>
<div class="dia_block_item_in">
<div class="dia_block_item_in" v-if="diaForm.dataDisk != 0">
<span class="dia_block_item_title">数据盘:</span>
<span
class="dia_block_item_val"
>{{ diaForm.dataDisk }}块,每块{{ diaForm.perDataDisk }}GB</span>
</div>
<div class="dia_block_item_in" v-if="diaForm.dataDisk != 0">
<span class="dia_block_item_title">数据盘类型:</span>
<span class="dia_block_item_val">{{ diaForm.store_type }}</span>
</div>
</div>
<span class="dia_item_all_title">单个容器组规格:</span>
<div class="dia_block_item">
......@@ -753,7 +782,8 @@ export default {
appDuration: undefined,
durType: 1,
apply_file: "",
apply_file_name: ""
apply_file_name: "",
store_type: "nfs-client"
},
ruleNew: {
namespace: [
......@@ -803,6 +833,10 @@ export default {
{ value: "16", label: "16" },
{ value: "32", label: "32" }
],
options_store_type: [
{ value: "nfs-client", label: "nfs-client" },
{ value: "rook-ceph-block", label: "rook-ceph-block" }
],
formShow: false,
specArr: [
{ title: "CPU", val: "4", src: "ic_CPU" },
......@@ -834,23 +868,10 @@ export default {
appDuration: undefined,
durType: 1,
apply_file: "",
apply_file_name: ""
},
paramsOld: {
cpu: "",
memory: "",
containerGroup: undefined,
dataDisk: undefined,
perDataDisk: undefined,
perCPUs: undefined,
perCPU: undefined,
perRAMs: undefined,
perRAM: undefined,
appDuration: undefined,
durType: 1,
apply_file: "",
apply_file_name: ""
apply_file_name: "",
store_type: "nfs-client"
},
paramsOld: {},
ruleOld: {
namespace: [
{ required: true, message: "请输入工作区域名称", trigger: "blur" }
......@@ -944,7 +965,8 @@ export default {
this.formOld.perCPU = paramsOld.one_cpu_min;
this.formOld.perRAMs = paramsOld.one_memory_max;
this.formOld.perRAM = paramsOld.one_memory_min;
this.dataDiskList = paramsOld.disk_list;
this.formOld.store_type = paramsOld.store_type;
this.dataDiskList = paramsOld.disk_list || [];
this.formShow = true;
} else {
this.formShow = false;
......@@ -999,7 +1021,14 @@ export default {
one_cpu_max: this.formNew.perCPUs,
one_memory_min: this.formNew.perRAM,
one_memory_max: this.formNew.perRAMs
}
},
disks: [
{
disk_num: this.formNew.dataDisk,
disk_cap: this.formNew.perDataDisk,
store_type: this.formNew.store_type
}
]
};
this.$api.serviceShop.applicationCloud(query).then(response => {
console.log(response);
......@@ -1016,13 +1045,18 @@ export default {
apply_connect_mobile: this.form.phone,
memory: Number(this.formOld.memory),
containers: this.formOld.containerGroup,
disk_num: this.formOld.dataDisk,
disk_cap: this.formOld.perDataDisk,
one_cpu_min: this.formOld.perCPU,
one_cpu_max: this.formOld.perCPUs,
one_memory_min: this.formOld.perRAM,
one_memory_max: this.formOld.perRAMs
}
},
disks: [
{
disk_num: this.formOld.dataDisk,
disk_cap: this.formOld.perDataDisk,
store_type: this.formOld.store_type
}
]
};
this.$api.serviceShop.updateCloud(query).then(response => {
console.log(response);
......
......@@ -95,7 +95,7 @@ export default {
20 - // 距左侧标题的边距
110; // 折叠按钮的宽度
this.filterLength = Math.floor(width / 110);
this.filterLength = Math.floor(width / 150);
// console.log("每行最多可容纳" + this.filterLength + "个filter");
});
}
......@@ -188,7 +188,7 @@ export default {
.ces_filter_data > li > a {
display: block;
height: 30px;
width: 90px;
width: 130px;
box-sizing: border-box;
border-radius: 12px;
text-align: center;
......
......@@ -86,7 +86,7 @@
<template slot-scope="scope">
<!-- 操作按钮 -->
<span v-if="item.type === 'Button'">
<b v-for="(btn, key) in item.btnList" :key="key">
<b v-for="(btn, key) in item.btnList" :key="key" :style="{marginRight:item.btngap}" v-if="!item.public_flag||item.public_flag==false?true:get_show_func(key,scope)">
<em v-if="btn.label == '分配'">
<em
v-if="btn.label == '分配' && scope.row.state == 0"
......@@ -97,7 +97,11 @@
<em v-if="btn.label == '分配' && scope.row.state == 1">已分配</em>
</em>
<em v-if="btn.type == 'goods-shelf'">
<em v-else-if="btn.label == '当前版本'">
<em style="pointer-events:none;color:#a9aec0;">{{btn.label}}</em>
</em>
<!-- <em v-if="btn.type == 'goods-shelf'">
<em
v-if="scope.row.state == 0"
class="cur_pointer"
......@@ -111,7 +115,7 @@
@click="handleClick(btn.type, scope.row)"
>下架</em>
<em v-if="scope.row.state == 2">下架</em>
</em>
</em> -->
<em
class="cur_pointer"
......@@ -363,6 +367,10 @@ export default {
type: Array,
default: null
},
public_arr: {
type: Array,
default: null
},
getSelectBtn: {
type: Boolean,
default: false
......@@ -434,6 +442,22 @@ export default {
}
},
methods: {
get_show_func(btn,val){
// return true
console.log(btn,val);
this.public_arr.forEach(e => {
if(e.tag==val.row.tag){
// if(btn == 3){
// return true
// }else{
// return false
// }
return true
}else{
return true
}
});
},
//本地删除
deleteLocal(val) {
this.selectedTabsPage.splice(val.$index, 1);
......
......@@ -10,22 +10,22 @@
<div class="detail_head_cell detail_head_status border_right">
<p class="detail_head_cell_title">申请状态</p>
<p
class="detail_head_cell_val blue"
class="detail_head_cell_val text_yellow"
v-if="orderDetail.approval_first_level == 0 && orderDetail.pay_status != -1"
>待审核</p>
<p
class="detail_head_cell_val blue"
class="detail_head_cell_val text_yellow"
v-if="orderDetail.approval_first_level == 1&& orderDetail.approval_second_level == 0 && orderDetail.pay_status != -1"
>审核中</p>
<p
class="detail_head_cell_val blue"
class="detail_head_cell_val text_blue"
v-if="orderDetail.approval_second_level == 1 && orderDetail.pay_status != -1"
>审核通过</p>
<p
class="detail_head_cell_val blue"
class="detail_head_cell_val text_red"
v-if="orderDetail.approval_first_level == -1 && orderDetail.pay_status != -1"
>审核未通过</p>
<p class="detail_head_cell_val blue" v-if="orderDetail.pay_status == -1">订单已取消</p>
<p class="detail_head_cell_val text_blackblue" v-if="orderDetail.pay_status == -1">订单已取消</p>
</div>
<div class="detail_head_cell detail_head_no border_right">
<p class="detail_head_cell_title">订单编号</p>
......@@ -118,10 +118,10 @@
</div>
</el-col>
<el-col :span="10" v-else-if="orderDetail.order_type == 3" class="detail_service_msg">
<img :src="orderDetail.cover" class="detail_service_msg_img" />
<img :src="require('@/assets/imgs/img_yunziyuan.png')" class="detail_service_msg_img" />
<div class="detail_service_msg_right">
<div class="detail_service_name_cloud">
<span>{{ orderDetail.name }}</span>
<span>{{ orderDetail.namespace }}(云资源申请)</span>
</div>
</div>
</el-col>
......@@ -195,7 +195,9 @@
</div>
<div class="params_block_item_in">
<span class="params_block_item_title">数据盘:</span>
<span class="params_block_item_val">{{ orderDetail.disk_num}}块,每块{{orderDetail.disk_cap }}GB</span>
<span
class="params_block_item_val"
>{{ orderDetail.disk_num}}块,每块{{orderDetail.disk_cap }}GB</span>
</div>
</div>
<span class="params_block_title margin_top_20">单个容器组规格:</span>
......@@ -222,7 +224,7 @@
</div>
<div class="detail_title">申请人信息</div>
<info-list @download="download" :list_arr="list_arr" class="detail_s_val"></info-list>
<process-card :data="approval_arr1" class="detail_s_val"></process-card>
<process-card v-if="orderDetail.order_type != 3" :data="approval_arr1" class="detail_s_val"></process-card>
</block-radius>
</div>
</template>
......@@ -506,9 +508,18 @@ export default {
line-height: 28px;
color: #242c43;
}
.blue {
.text_blue {
color: #515fe7;
}
.text_yellow {
color: #ef9433;
}
.text_blackblue {
color: #242c43;
}
.text_red {
color: #e15260;
}
.btn_group {
position: absolute;
right: 20px;
......@@ -579,6 +590,7 @@ export default {
width: 118px;
height: 118px;
border-radius: 8px;
border: 3px #f4f7fc solid;
}
.detail_service_msg_right {
width: calc(100% - 140px);
......
......@@ -288,6 +288,7 @@ export default {
: this.user_data.userType == 3
? "普通用户"
: "普通用户开发者";
this.imgList = [];
this.imgList.push(data.picture_path);
this.formBusiness.businessSystemName = data.system_name;
this.formBusiness.domainName = data.domain_name;
......
......@@ -6,164 +6,20 @@
<el-breadcrumb-item>应用构建(镜像形式)</el-breadcrumb-item>
</el-breadcrumb>
</div>
<app-build-steps :active-step="step">
<app-build-step
title="上传应用镜像"
:step="0"
:active-icon="require('@/assets/imgs/progress_ic_jingxiang.png')"
>
<el-form
ref="step1_form"
class="step_form"
label-position="top"
:model="image_info"
:rules="image_rules"
>
<el-form-item label="镜像名称:" prop="image_name">
<el-input
v-model="image_info.image_name"
placeholder="请输入镜像名称"
></el-input>
</el-form-item>
<el-form-item label="版本号:" prop="tag">
<el-input
v-model="image_info.tag"
placeholder="请输入版本号"
></el-input>
</el-form-item>
<el-form-item
label="上传镜像包:"
prop="file"
ref="step1_upload_item"
>
<el-upload
ref="step1_upload"
:auto-upload="false"
:data="{
image_name: image_info.image_name,
tag: image_info.tag,
}"
:limit="1"
:on-change="imageUploadChange"
:on-remove="imageUploadRemove"
:on-success="imageUploadSuccess"
:on-error="imageUploadError"
action="/apaas/hubApi/image/upload"
name="file"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将镜像文件拖到此处,或<em>点击上传</em>
</div>
</el-upload>
</el-form-item>
<div class="apass_button upload_action">
<el-button
type="primary"
@click="submitImage('step1_form')"
:loading="step1UplaodLoading"
>
确认
</el-button>
</div>
<div class="form_line"></div>
<el-form-item label="上传镜像列表:">
<div
v-if="image_datas"
class="image_list_container"
v-infinite-scroll="loadImageList"
>
<apass-table
:header="image_headers"
:data="image_datas"
:padding-left="60"
></apass-table>
<p style="text-align: center" v-if="image_loading">加载中...</p>
<p
style="text-align: center"
v-if="image_noMore && image_datas.length > 0"
>
没有更多了
</p>
</div>
</el-form-item>
</el-form>
<div class="apass_button step_action">
<el-button type="primary" @click="goToStep1">
下一步
</el-button>
</div>
<image-detail ref="imageDetail"></image-detail>
</app-build-step>
<app-build-step
title="上传部署文件"
:step="1"
:active-icon="require('@/assets/imgs/progress_ic_bushudata.png')"
>
<el-form
ref="step2_form"
class="step_form"
label-position="top"
:model="deploy_info"
:rules="deploy_rules"
>
<el-form-item
label="上传部署文件:"
prop="file"
ref="step2_upload_item"
>
<div class="description_info">
<i class="el-icon-warning-outline"></i>
<p
v-html="
`1.必须包含以下文件:Chart.yaml,README.md,step.yaml,values.yaml,logo.png,templates/NOTES.txt;<br />
2.上述文件必须按照上述名称进行命名;<br />
3.step.yaml文件为values.yaml中的可配置参数,templates/NOTES.txt文件为应用的部署信息;<br />
4.templates/NOTES.txt主要用于用户部署后的访问,可以按照如下示例进行编写:<br />
&ensp;&ensp;this is a postgresql.<br />
&ensp;&ensp;author : Tom<br />
&ensp;&ensp;内部地址: {{ .Release.Name }}.{{ .Release.Namespace }}:5432<br />
5.请将文件夹压缩为“.zip”、“.tgz”、“.tar.gz”格式,如:名称为redis-ha的文件夹压缩为redis-ha.zip。<br />`
"
></p>
</div>
<el-upload
ref="step2_upload"
:auto-upload="false"
:limit="1"
:data="app_info"
action="/apaas/hubApi/market/app"
:on-change="deployUploadChange"
:on-remove="deployUploadRemove"
:on-success="deployUploadSuccess"
:on-error="deployUploadError"
name="file"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将部署文件拖到此处,或<em>点击上传</em>
</div>
</el-upload>
</el-form-item>
</el-form>
<div class="apass_button step_action" style="margin-top: 120px;">
<el-button type="primary" plain @click="preStep">
上一步
</el-button>
<el-button type="primary" @click="goToStep2('step2_form')">
下一步
</el-button>
</div>
</app-build-step>
<app-build-steps
:active-step="step"
:done="done"
done-title="提交成功"
done-sub-title="应用已创建,可前往应用仓库进行应用部署"
>
<app-build-step
title="应用基础信息填写"
:step="2"
:step="0"
:active-icon="require('@/assets/imgs/progress_ic_xinxitx.png')"
:done="done"
>
<el-form
ref="step3_form"
ref="app_info_form"
class="step_form"
label-position="top"
:model="app_info"
......@@ -249,23 +105,180 @@
</el-form-item>
</el-form>
<div class="apass_button step_action">
<el-button type="primary" @click="step1Action">
下一步
</el-button>
</div>
</app-build-step>
<app-build-step
title="上传部署文件"
:step="1"
:active-icon="require('@/assets/imgs/progress_ic_bushudata.png')"
>
<el-form
ref="deploy_info_form"
class="step_form"
label-position="top"
:model="deploy_info"
:rules="deploy_rules"
>
<el-form-item
label="上传部署文件:"
prop="file"
ref="step2_upload_item"
>
<div class="description_info">
<i class="el-icon-warning-outline"></i>
<p
v-html="
`1.必须包含以下文件:Chart.yaml,README.md,step.yaml,values.yaml,logo.png,templates/NOTES.txt;<br />
2.上述文件必须按照上述名称进行命名;<br />
3.step.yaml文件为values.yaml中的可配置参数,templates/NOTES.txt文件为应用的部署信息;<br />
4.templates/NOTES.txt主要用于用户部署后的访问,可以按照如下示例进行编写:<br />
&ensp;&ensp;this is a postgresql.<br />
&ensp;&ensp;author : Tom<br />
&ensp;&ensp;内部地址: {{ .Release.Name }}.{{ .Release.Namespace }}:5432<br />
5.请将文件夹压缩为“.zip”、“.tgz”、“.tar.gz”格式,如:名称为redis-ha的文件夹压缩为redis-ha.zip。<br />`
"
></p>
</div>
<el-upload
ref="step2_upload"
:auto-upload="false"
:limit="1"
:data="app_info"
action="/apaas/hubApi/market/app"
:on-change="deployUploadChange"
:on-remove="deployUploadRemove"
:on-success="deployUploadSuccess"
:on-error="deployUploadError"
name="file"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将部署文件拖到此处,或<em>点击上传</em>
</div>
</el-upload>
</el-form-item>
</el-form>
<div class="apass_button step_action" style="margin-top: 120px;">
<el-button
type="primary"
type="defalut"
:loading="step2Loading"
plain
:loading="submitLoading"
@click="preStep"
@click="step = 0"
>
上一步
</el-button>
<el-button
type="primary"
:loading="submitLoading"
@click="sunbmitAction('step3_form')"
:loading="step2Loading"
@click="step2Action"
>
提交
创建应用
</el-button>
</div>
</app-build-step>
<app-build-step
title="上传应用镜像"
:step="2"
:active-icon="require('@/assets/imgs/progress_ic_jingxiang.png')"
>
<el-form
ref="image_info_form"
class="step_form"
label-position="top"
:model="image_info"
:rules="image_rules"
>
<el-form-item label="镜像名称:" prop="image_name">
<el-input
v-model="image_info.image_name"
placeholder="请输入镜像名称"
></el-input>
</el-form-item>
<el-form-item label="版本号:" prop="tag">
<el-input
v-model="image_info.tag"
placeholder="请输入版本号"
></el-input>
</el-form-item>
<el-form-item
label="上传镜像包:"
prop="file"
ref="step1_upload_item"
>
<el-upload
ref="step1_upload"
:auto-upload="false"
:data="{
app_id: app_id,
image_name: image_info.image_name,
tag: image_info.tag,
}"
:limit="1"
:on-change="imageUploadChange"
:on-remove="imageUploadRemove"
:on-success="imageUploadSuccess"
:on-error="imageUploadError"
action="/apaas/hubApi/image/upload"
name="file"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将镜像文件拖到此处,或<em>点击上传</em>
</div>
</el-upload>
</el-form-item>
<div class="apass_button upload_action">
<el-button
type="primary"
@click="addImage"
:loading="addImageLoading"
>
确认
</el-button>
</div>
<div class="form_line"></div>
<el-form-item label="上传镜像列表:">
<div
v-if="image_datas"
class="image_list_container"
v-infinite-scroll="loadImageList"
>
<apass-table
:header="image_headers"
:data="image_datas"
:padding-left="60"
></apass-table>
<p style="text-align: center" v-if="image_loading">
加载中...
</p>
<p style="text-align: center" v-else-if="image_noMore">
没有更多了
</p>
</div>
</el-form-item>
</el-form>
<div class="apass_button step_action">
<el-button type="primary" @click="stepsDone">
完成
</el-button>
</div>
<image-detail ref="imageDetail"></image-detail>
</app-build-step>
<template slot="action">
<el-button @click="deployAction">
前往部署
</el-button>
<el-button type="primary" @click="backToList">
返回列表
</el-button>
</template>
</app-build-steps>
<apass-dialog
......@@ -276,51 +289,35 @@
></apass-dialog>
</div>
</template>
<script>
import appBuildSteps from "@/components/app-build-steps/app-build-steps";
import appBuildStep from "@/components/app-build-steps/app-build-step";
import apassTable from "@/components/apass-table";
import uploadFile from "@/components/general/upload_file";
import apassDialog from "@/components/apass-dialog";
import imageDetail from "@/components/image-detail";
export default {
components: {
appBuildSteps,
appBuildStep,
apassTable,
uploadFile,
apassDialog,
imageDetail,
},
data: () => ({
step: 0,
image_info: {
image_name: "",
tag: "",
file: "",
},
image_rules: {
image_name: [
{ required: true, message: "请输入镜像名称", trigger: "blur" },
],
tag: [{ required: true, message: "请输入版本号", trigger: "blur" }],
file: [{ required: true, message: "请选择镜像文件", trigger: "change" }],
},
step1UplaodLoading: false,
image_headers: [],
image_datas: [],
image_total: 0,
image_loading: false,
image_noMore: false,
image_page: 0,
deploy_info: {
file: "",
},
deploy_rules: {
file: [{ required: true, message: "请选择部署文件", trigger: "change" }],
<script>
import appBuildSteps from "@/components/app-build-steps/app-build-steps";
import appBuildStep from "@/components/app-build-steps/app-build-step";
import apassTable from "@/components/apass-table";
import uploadFile from "@/components/general/upload_file";
import apassDialog from "@/components/apass-dialog";
import imageDetail from "@/components/image-detail";
export default {
components: {
appBuildSteps,
appBuildStep,
apassTable,
uploadFile,
apassDialog,
imageDetail,
},
data: () => ({
dialogInfo: {
title: "",
msg: "",
submit: null,
},
step: 0,
ywlys: [],
types: [],
orgs: [],
logo: [],
app_info: {
name: "", // 应用名称
version: "", // 应用版本
......@@ -350,31 +347,149 @@ export default {
{ required: true, message: "请选择应用场景示例", trigger: "change" },
],
},
ywlys: [],
types: [],
orgs: [],
logo: [],
submitLoading: false,
dialogInfo: {
title: "",
msg: "",
submit: null,
deploy_info: {
file: "",
},
deploy_rules: {
file: [{ required: true, message: "请选择部署文件", trigger: "change" }],
},
step2Loading: false,
app_id: "",
image_info: {
image_name: "",
tag: "",
file: "",
},
image_rules: {
image_name: [
{ required: true, message: "请输入镜像名称", trigger: "blur" },
],
tag: [{ required: true, message: "请输入版本号", trigger: "blur" }],
file: [{ required: true, message: "请选择镜像文件", trigger: "change" }],
},
addImageLoading: false,
image_headers: [],
image_datas: [],
image_total: 0,
image_loading: false,
image_noMore: false,
image_page: 0,
done: false,
}),
methods: {
preStep() {
this.step--;
getYwlys() {
this.$http
.get("/apaas/hubApi/market/businessAreas")
.then((response) => {
this.ywlys = response.data.data;
})
.catch((error) => {
console.log(error);
});
},
getTypes() {
this.$http
.get("/apaas/hubApi/market/appTypes")
.then((response) => {
this.types = response.data.data;
})
.catch((error) => {
console.log(error);
});
},
getOrgs() {
this.$http
.get("/apaas/hubApi/market/departments")
.then((response) => {
this.orgs = response.data.data;
})
.catch((error) => {
console.log(error);
});
},
getNewList(file) {
this.app_info.logo = file.url;
},
step1Action() {
this.$refs.app_info_form.validate((valid) => {
if (valid) {
this.step = 1;
} else {
return false;
}
});
},
getFileType(fileName) {
const startIndex = fileName.lastIndexOf(".");
if (startIndex != -1) {
return fileName
.substring(startIndex + 1, fileName.length)
.toLowerCase();
} else {
return "";
}
},
deployUploadChange(file) {
const filtType = this.getFileType(file.name);
if (filtType === "zip" || filtType === "gz" || filtType === "tgz") {
this.deploy_info.file = file;
this.$refs.step2_upload_item.clearValidate();
} else {
this.$message.error("部署文件格式错误!");
this.deploy_info.file = "";
this.$refs.step2_upload.clearFiles();
}
},
deployUploadRemove() {
this.deploy_info.file = "";
},
deployUploadSuccess(response) {
if (response.success == 1) {
this.$message({
message: `提交成功`,
type: "success",
});
this.step2Loading = false;
this.step = 2;
this.app_id = response.data;
this.image_datas = [];
this.image_page = 1;
this.initImageList();
} else {
this.$message({
message: response.errMsg || `提交失败`,
type: "warning",
});
this.step2Loading = false;
}
},
deployUploadError() {
this.$message({
message: `提交失败`,
type: "warning",
});
this.step2Loading = false;
},
nextStep() {
this.step++;
step2Action() {
this.$refs.deploy_info_form.validate((valid) => {
if (valid) {
this.step2Loading = true;
this.$refs.step2_upload.submit();
} else {
return false;
}
});
},
initImageList() {
this.image_loading = true;
this.$http
.get("/apaas/hubApi/image/imageUpList", {
params: {
page: this.image_page,
size: 10,
app_id: this.app_id,
},
})
.then(({ data }) => {
......@@ -391,8 +506,9 @@ export default {
loadImageList() {
if (this.image_datas.length < this.image_total) {
this.image_page++;
this.image_loading = true;
this.initImageList();
} else {
} else if (this.image_total > 0) {
this.image_noMore = true;
}
},
......@@ -416,7 +532,7 @@ export default {
this.image_info.tag = "";
this.image_info.file = "";
this.$refs.step1_upload.clearFiles();
this.step1UplaodLoading = false;
this.addImageLoading = false;
this.image_datas = [];
this.image_page = 1;
this.initImageList();
......@@ -425,7 +541,7 @@ export default {
message: response.errMsg || `上传镜像失败`,
type: "warning",
});
this.step1UplaodLoading = false;
this.addImageLoading = false;
}
},
imageUploadError() {
......@@ -433,22 +549,22 @@ export default {
message: `上传镜像失败`,
type: "warning",
});
this.step1UplaodLoading = false;
this.addImageLoading = false;
},
imageUploadRemove() {
this.image_info.file = "";
},
submitImage(formName) {
this.$refs[formName].validate((valid) => {
addImage() {
this.$refs.image_info_form.validate((valid) => {
if (valid) {
this.step1UplaodLoading = true;
this.addImageLoading = true;
this.$refs.step1_upload.submit();
} else {
return false;
}
});
},
deleteItem(item) {
deleteImage(item) {
this.dialogInfo.title = "";
this.dialogInfo.msg = "是否删除该镜像?";
this.dialogInfo.submit = () => {
......@@ -480,122 +596,27 @@ export default {
};
this.$refs.dialog.show();
},
goToStep1() {
// if (this.image_total > 0) {
this.nextStep();
/* } else {
this.$message({
message: `您尚未上传任何镜像`,
type: "warning",
});
} */
},
goToStep2(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
this.nextStep();
} else {
return false;
}
});
},
getNewList(file) {
this.app_info.logo = file.url;
},
getYwlys() {
this.$http
.get("/apaas/hubApi/market/businessAreas")
.then((response) => {
this.ywlys = response.data.data;
})
.catch((error) => {
console.log(error);
});
},
getTypes() {
this.$http
.get("/apaas/hubApi/market/appTypes")
.then((response) => {
this.types = response.data.data;
})
.catch((error) => {
console.log(error);
});
},
getOrgs() {
this.$http
.get("/apaas/hubApi/market/departments")
.then((response) => {
this.orgs = response.data.data;
})
.catch((error) => {
console.log(error);
});
},
deployUploadChange(file) {
const filtType = this.getFileType(file.name);
if (filtType === "zip" || filtType === "gz" || filtType === "tgz") {
this.deploy_info.file = file;
this.$refs.step2_upload_item.clearValidate();
} else {
this.$message.error("部署文件格式错误!");
this.deploy_info.file = "";
this.$refs.step2_upload.clearFiles();
}
},
deployUploadRemove() {
this.deploy_info.file = "";
},
deployUploadSuccess(response) {
if (response.success == 1) {
this.$message({
message: `提交成功`,
type: "success",
});
this.submitLoading = false;
this.$router.push("/yygl/2/0");
} else {
this.$message({
message: response.errMsg || `提交失败`,
type: "warning",
});
this.submitLoading = false;
}
},
deployUploadError() {
this.$message({
message: `提交失败`,
type: "warning",
});
this.submitLoading = false;
showImageDetail(item) {
this.$refs.imageDetail.showDialog(item);
},
sunbmitAction(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
this.submitLoading = true;
this.$refs.step2_upload.submit();
} else {
return false;
}
});
stepsDone() {
this.done = true;
},
getFileType(fileName) {
const startIndex = fileName.lastIndexOf(".");
if (startIndex != -1) {
return fileName
.substring(startIndex + 1, fileName.length)
.toLowerCase();
} else {
return "";
}
deployAction() {
// 跳转至应用详情进行部署操作
this.$router.push(
`/yygl/0/0/detail/${this.app_id}`
);
},
showImageDetail(item) {
this.$refs.imageDetail.showDialog(item);
backToList() {
this.$router.push(`/yygl/0/0`);
},
},
mounted() {
this.getYwlys();
this.getTypes();
this.getOrgs();
this.image_headers = [
{
label: "镜像名称",
......@@ -617,17 +638,11 @@ export default {
{
label: "删除",
class: "warn",
callback: this.deleteItem,
callback: this.deleteImage,
},
],
},
];
this.image_datas = [];
this.image_page = 1;
this.initImageList();
this.getYwlys();
this.getTypes();
this.getOrgs();
},
};
</script>
......@@ -637,6 +652,7 @@ export default {
margin: -157px 40px 20px;
}
.app_build-container > .app_build_steps {
min-height: calc(100vh - 150px - 43px);
border-radius: 12px;
background-color: #fff;
padding: 30px;
......
<template>
<!--
apply_id
user_id
apply_type
use_uid
id
-->
<div>
<el-breadcrumb separator="/" class="bread_crumb1 bread_left">
<el-breadcrumb-item
......@@ -21,17 +28,11 @@
<span class="head_right_msg_item">{{ cloudData.phone }}</span>
资源申请状态:
<span
v-if="apply_type == 0 && approve_state == 0 || apply_type != 0 && approve_update_state == 0"
v-if="apply_type == 0"
class="head_right_msg_item apply_wait"
>待审批</span>
<span
v-if="apply_type == 0 && approve_state == 1 || apply_type != 0 && approve_update_state == 1"
class="head_right_msg_item apply_success"
>审批通过</span>
<span
v-if="apply_type == 0 && approve_state == -1 || apply_type != 0 && approve_update_state == -1"
class="head_right_msg_item apply_refuse"
>审批未通过</span>
<span v-if="apply_type == 1" class="head_right_msg_item apply_success">审批通过</span>
<span v-if="apply_type == -1" class="head_right_msg_item apply_refuse">审批未通过</span>
</p>
<p class="head_right_msg_p">
业务系统名:
......@@ -66,7 +67,13 @@
<div class="params_block_item_in">
<span class="params_block_item_title">数据盘:</span>
<div class="params_block_item_val">
<div>{{ cloudDteail.disk}}</div>
<div>{{ cloudDteail.disk }}</div>
</div>
</div>
<div class="params_block_item_in">
<span class="params_block_item_title">数据盘类型:</span>
<div class="params_block_item_val">
<div>{{ cloudDteail.store_type }}</div>
</div>
</div>
<div class="params_block_item_in">
......@@ -113,6 +120,12 @@
<div>{{ cloudDetailNew.adjust_disk}}</div>
</div>
</div>
<div class="params_block_item_in">
<span class="params_block_item_title">数据盘类型:</span>
<div class="params_block_item_val">
<div>{{ cloudDetailNew.store_type }}</div>
</div>
</div>
<div class="params_block_item_in">
<span class="params_block_item_title">续期时长:</span>
<span class="params_block_item_val">{{ cloudDetailNew.adjust_duration_time }}</span>
......@@ -223,11 +236,36 @@
</div>
</InfoList>
</div>
<div class="btn_footer">
<el-button class="submit" @click="submit">提交资源申请</el-button>
<el-button class="adjustment" @click="adjustment">资源调整</el-button>
<el-button class="adjustment" @click="distribution">分配</el-button>
<el-button class="refuse" @click="refuse">拒绝</el-button>
<div
class="btn_footer"
v-if="now_user != 0 || (now_user == 0 && apploy_msg.second_level != 0)"
>
<el-button
v-if="now_user == 1 && apploy_msg.first_level == 0"
class="submit"
@click="submit"
>提交资源申请</el-button>
<el-button
v-if="now_user == 0 && apploy_msg.second_level != 0"
class="adjustment"
@click="adjustment"
>资源调整</el-button>
<el-button
class="adjustment"
v-if="now_user == 1 && apploy_msg.second_level == 1 && use_uid == ''"
@click="distribution"
>分配</el-button>
<el-button
v-if="now_user == 2 && apploy_msg.second_level == 0 || now_user == 1 && apploy_msg.first_level == 0"
class="refuse"
@click="refuse"
>拒绝</el-button>
<el-button
v-if="now_user == 2 && apploy_msg.second_level == 0"
class="adjustment"
@click="pass"
>通过</el-button>
<el-button v-if="now_user == 2 && use_uid != ''" class="refuse" @click="deleteItem">删除</el-button>
</div>
</BlockRadius>
<AllotInfoConfirm ref="allotConfirm"></AllotInfoConfirm>
......@@ -443,7 +481,14 @@ export default {
},
apply_type: 0,
approve_state: 1,
approve_update_state: 1
approve_update_state: 1,
apploy_msg: {
first_level: null,
second_level: null
},
use_uid: "",
could_delete: false,
apply_id: ""
};
},
watch: {},
......@@ -485,8 +530,9 @@ export default {
}
});
},
submit() {},
refuse() {},
pass() {},
deleteItem() {},
getCurrentUser() {
this.$api.user.getNowUser().then(({ data }) => {
if (data.success == 1) {
......@@ -497,21 +543,52 @@ export default {
}
});
},
submit(item) {
this.$refs.allotConfirm.getDetail(item.apply_id);
submit() {
this.$refs.allotConfirm.getDetail(this.apply_id);
},
clickTab() {},
setListWithRole() {
console.log(this.now_user);
if (this.now_user == 0) {
let index = this.list_arr.findIndex(
item => item.title == "资源使用情况:"
);
this.list_arr.splice(index);
this.tabShow = false;
// 普通用户
if (this.apply_type == 0) {
// 申请类型0
let index = this.list_arr.findIndex(
item => item.title == "资源使用情况:"
);
this.list_arr.splice(index);
this.tabShow = false;
} else if (this.apply_type != 0) {
// 申请类型1
this.tabShow = false;
}
} else if (this.now_user == 1) {
this.tabShow = true;
// 组织
if (this.apply_type == 0) {
// 申请类型
let index = this.list_arr.findIndex(
item => item.title == "资源使用情况:"
);
this.list_arr.splice(index);
} else if (this.apply_type != 0) {
}
if (this.apploy_msg.first_level == 0) {
// 没分配
this.tabShow = false;
} else if (this.apploy_msg.first_level != 0) {
// 分配
this.tabShow = true;
}
} else if (this.now_user == 2) {
// 超管
if (this.apply_type == 0) {
let index = this.list_arr.findIndex(
item => item.title == "资源使用情况:"
);
this.list_arr.splice(index);
this.tabShow = false;
} else if (this.apply_type != 0) {
this.tabShow = false;
}
}
this.activeName = "0";
},
......@@ -524,7 +601,9 @@ export default {
this.$api.workbench.getCloudDetail(query).then(response => {
let data = response.data.data;
console.log(data);
this.list_arr[3].info = helper.downloadFileFormat(data.apply_file); // application file name
this.list_arr[3].info = helper.downloadFileFormat(
data.apply_file ? data.apply_file : ""
); // application file name
this.list_arr[3].url = data.apply_file; // application file url
this.list_arr[6].info = data.bgn_time; // get time
this.list_arr[7].info = data.time_remaining; // remaining days
......@@ -573,13 +652,15 @@ export default {
this.cloudDteail.adjust_one_cpu_min = data.adjust_one_cpu_min;
this.cloudDteail.adjust_one_memory_max = data.adjust_one_memory_max;
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.setListWithRole();
});
}
}
};
</script>
<style>
<style scoped>
.in_cloud_block {
margin: 0 20px;
}
......
......@@ -130,7 +130,7 @@
</p>
<div style="overflow:hidden;height:700px;" class="limit-elscroll">
<el-scrollbar class="service_list">
<div class="service_box" v-for="(item,index) in service_list_arr" :key="index+60000">{{item.service}} <span v-if="item.is_unhealth" class="service_tips">故障</span> </div>
<div class="service_box" @click="change_micor(index)" :style="now_micor_service==index?{paddingLeft:'30px',borderLeft:'8px solid #515fe7',backgroundColor:'#fbfcfe'}:''" v-for="(item,index) in service_list_arr" :key="index+60000">{{item.service}} <span v-if="item.is_unhealth" class="service_tips">故障</span> </div>
</el-scrollbar>
<div class="service_detail">
<nor-card title="服务概况" flag="true">
......@@ -140,27 +140,27 @@
<p
style="color: #707693;font-size: 16px;text-align:center;"
>服务状态</p>
<waveIcon :state="yx_state.state" style="margin:10px auto;"></waveIcon>
<waveIcon :state="micor_state.state" style="margin:10px auto;"></waveIcon>
<p
style="color: #58617a;font-size: 16px;text-align:center;"
>{{ yx_state.state }}</p>
>{{ micor_state.state }}</p>
</div>
<div style="height:115px;" class="service_num service_card_box">
<span style="color: #707693;font-size: 16px;text-align:center;margin-bottom:26px;display:inline-block;">服务平均响应时间</span>
<p>{{ yx_state.averageTime }}</p>
<p>最大响应时间:{{ yx_state.maxTime }}</p>
<p>{{ micor_state.averageTime }}</p>
<p>最大响应时间:{{ micor_state.maxTime }}</p>
</div>
<div style="height:115px;" class="service_num service_card_box">
<span style="color: #707693;font-size: 16px;text-align:center;margin-bottom:26px;display:inline-block;">吞吐率</span>
<p>{{ yx_state.averageTraffic }}</p>
<p>最大吞吐率:{{ yx_state.maxTraffic }}</p>
<p>{{ micor_state.averageTraffic }}</p>
<p>最大吞吐率:{{ micor_state.maxTraffic }}</p>
</div>
<div style="height:115px;padding-top:30px;" class="service_num service_card_box">
<span style="color: #707693;font-size: 16px;text-align:center;margin-bottom:26px;display:inline-block;">内存使用</span>
<p>{{ yx_state.memory }}</p>
<p>{{ micor_state.memory }}</p>
</div>
</div>
......@@ -169,9 +169,9 @@
<nor-card title="服务设置" flag="true">
<div class="addimage">多版本回滚</div>
<!-- <p class="imagebox">
<p class="imagebox">
<span
@click="image_select = index"
@click="image_select = index;getImageInfo()"
:style="
image_select == index
? { backgroundColor: '#8390ee', color: '#f8f9fd' }
......@@ -180,15 +180,16 @@
v-for="(item, index) in image_arr"
:key="index + 6000"
>{{ item.name }}</span>
</p> -->
</p>
<table-um
v-for="(item, index) in image_arr"
:key="index+7000"
:height="300"
v-show="image_select == index"
:headers="header_image_arr"
:datas="image_arr[index].data"
:public_arr="now_image_version"
:stripe="true"
:paginationShow="true"
@update="update"
@rollback="rollback"
@grouppublic="grouppublic"
......@@ -236,84 +237,7 @@ export default {
imgList: [],
imgList1: [],
header_data:"",
service_list_arr:[
{
service:'cemplat-api1',
is_unhealth:1
},
{
service:'cemplat-api1',
is_unhealth:1
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
{
service:'cemplat-api1',
is_unhealth:0
},
],
service_list_arr:[],
yx_state: {
state: "",
averageTime: "",
......@@ -322,6 +246,15 @@ export default {
maxTraffic: "",
memory: ""
},
micor_state: {
state: "",
averageTime: "",
maxTime: "",
averageTraffic: "",
maxTraffic: "",
memory: ""
},
now_micor_service:0,
image_arr: [],
area_arr: [
{
......@@ -369,6 +302,7 @@ export default {
value: 10
}
],
now_image_version:[],
form: {
name: "",
fileList: "",
......@@ -393,28 +327,21 @@ export default {
},
header_image_arr: [
{
prop: "vision",
prop: "tag",
label: "版本号",
minWidth: "20%",
align: "center"
},
{
prop: "state",
label: "状态",
minWidth: "20%",
align: "center"
},
{
prop: "date",
label: "在线日期",
minWidth: "30%",
align: "center"
},
{
label: "操作",
type: "Button",
align: "center",
minWidth: "30%",
btngap:'15px',
public_flag:true,
btnList: [
{
type: "update",
......@@ -422,7 +349,7 @@ export default {
},
{
type: "rollback",
label: "退"
label: ""
},
{
type: "grouppublic",
......@@ -430,8 +357,12 @@ export default {
},
{
type: "online",
label: "下线"
}
label: "当前版本",
},
{
type: "delete",
label: "删除"
},
]
}
],
......@@ -654,13 +585,52 @@ export default {
}
})
},
get_micro_service(){
this.$http
.get(`/apaas/istio/service/${this.header_data.namespace}/overview/${this.service_list_arr[this.now_micor_service].service}`)
.then(response => {
if(response.data.success){
let data = response.data.data
this.image_arr = []
data.imageNames.forEach(e => {
this.image_arr.push({
name:e,
data:[]
})
});
this.micor_state= {
state: data.appState,
averageTime: data.respTime.avg,
maxTime: data.respTime.max,
averageTraffic: data.throughput.avg,
maxTraffic: data.throughput.max,
memory: data.resource.memory
}
this.getImageInfo()
}
})
},
change_micor(n){
this.now_micor_service = n
this.get_micro_service()
},
compare(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
// return value2 - value1;
return value1 - value2;
}
},
getImageInfo() {
this.$http
.get("./static/deployappdetail.json")
.get(`/apaas/istio/service/${this.header_data.namespace}/image/${this.service_list_arr[this.now_micor_service].service}/${this.image_arr[this.image_select].name}/versions`)
.then(response => {
console.log(response);
let data = response.data.data;
this.image_arr = data.imagearr;
// this.image_arr = data.imagearr;
this.$set(this.image_arr[this.image_select],'data',data.list.sort(this.compare('date')))
this.now_image_version = data.runnings
})
.catch(function(response) {});
},
......@@ -812,6 +782,9 @@ export default {
.then(response => {
if(response.data.success){
this.service_list_arr = response.data.data
if(this.service_list_arr&&this.service_list_arr.length){
this.get_micro_service()
}
}
})
}
......
......@@ -473,6 +473,7 @@ export default {
namespace: this.baseInfoForm.namespace,
uu: this.evtUuid,
values: this.app_set_info,
source: this.$route.query.source == "apply" ? "apply" : ""
};
} else {
//编辑提交
......@@ -483,6 +484,7 @@ export default {
namespace: this.baseInfoForm.namespace,
uu: this.evtUuid,
values: yaml.load(this.app_set_code),
source: this.$route.query.source == "apply" ? "apply" : ""
};
}
this.next_step();
......
......@@ -10,7 +10,7 @@
:list-padding-left="35"
@list-action="initDatas"
>
<el-breadcrumb separator="/">
<el-breadcrumb separator="/" slot="breadcrumb">
<el-breadcrumb-item>我的应用</el-breadcrumb-item>
<el-breadcrumb-item>{{ pathName }}</el-breadcrumb-item>
</el-breadcrumb>
......@@ -36,6 +36,7 @@
</template>
<script>
import helper from "@/services/helper.js";
import appList from "@/components/app-list/app-list";
import apassList from "@/components/apass-list";
import apassDialog from "@/components/apass-dialog";
......@@ -45,7 +46,7 @@ export default {
components: {
appList,
apassList,
apassDialog
apassDialog,
},
data: () => ({
level: 0, // 用户等级
......@@ -62,15 +63,15 @@ export default {
submit: null,
cancelText: "",
sunbmitText: "",
submit: null
submit: null,
},
otherFilter1: [],
otherFilter2: [],
tempFliter: null
tempFliter: null,
}),
computed: {
...mapState({
yyglNav: "yyglNav"
yyglNav: "yyglNav",
}),
pathName() {
return this.yyglNav[this.level][this.type];
......@@ -91,7 +92,7 @@ export default {
}
return url;
}
},
},
methods: {
initHeader() {
......@@ -110,18 +111,18 @@ export default {
data: [
{
name: "平台应用",
value: 2
value: 2,
},
{
name: "开发者应用",
value: 1
value: 1,
},
{
name: "未上架",
value: 0
}
]
}
value: 0,
},
],
},
];
this.otherFilter2 = [
{
......@@ -130,13 +131,13 @@ export default {
data: [
{
name: "支持开发",
value: 1
value: 1,
},
{
name: "不支持开发",
value: 0
}
]
value: 0,
},
],
},
{
name: "应用来源",
......@@ -144,14 +145,14 @@ export default {
data: [
{
name: "创建的应用",
value: 0
value: 0,
},
{
name: "申请的应用",
value: 1
}
]
}
value: 1,
},
],
},
];
}
// 普通用户 --- 我部署的应用 card列表形式
......@@ -165,14 +166,14 @@ export default {
data: [
{
name: "应用商店",
value: 0
value: 0,
},
{
name: "开发者应用",
value: 1
}
]
}
value: 1,
},
],
},
];
this.otherFilter2 = [
{
......@@ -181,14 +182,14 @@ export default {
data: [
{
name: "支持开发",
value: 1
value: 1,
},
{
name: "不支持开发",
value: 0
}
]
}
value: 0,
},
],
},
];
}
// 普通用户 --- 申请的应用
......@@ -199,47 +200,46 @@ export default {
label: "应用名称",
prop: "app_name",
type: "button",
callback: this.detailItem
callback: this.detailItem,
},
{
label: "应用版本",
prop: "version",
align: "center"
align: "center",
},
{
label: "应用类型",
prop: "type_name",
align: "center"
align: "center",
},
{
label: "业务领域",
prop: "ywly_name",
align: "center"
align: "center",
},
{
label: "在线区域",
prop: "online_state_name",
align: "center"
align: "center",
},
{
label: "申请类型",
prop: "apply_type_name",
align: "center"
align: "center",
},
{
label: "申请时间",
prop: "time",
getText(item) {
let time = item.time || "";
return time.substring(0, 10);
return helper.dateStringTransform(date);
},
align: "center"
align: "center",
},
{
label: "申请状态",
prop: "apply_status",
align: "center"
}
align: "center",
},
];
this.otherFilter1 = [
{
......@@ -248,14 +248,14 @@ export default {
data: [
{
name: "平台应用",
value: 2
value: 2,
},
{
name: "开发者应用",
value: 1
}
]
}
value: 1,
},
],
},
];
this.otherFilter2 = [
{
......@@ -264,13 +264,13 @@ export default {
data: [
{
name: "申请部署",
value: 0
value: 0,
},
{
name: "申请开发",
value: 1
}
]
value: 1,
},
],
},
{
name: "申请状态",
......@@ -278,18 +278,18 @@ export default {
data: [
{
name: "审批中",
value: 1
value: 1,
},
{
name: "审批通过",
value: 2
value: 2,
},
{
name: "审批未通过",
value: 0
}
]
}
value: 0,
},
],
},
];
}
......@@ -301,36 +301,35 @@ export default {
label: "应用名称",
prop: "app_name",
type: "button",
callback: this.detailItem
callback: this.detailItem,
},
{
label: "应用版本",
prop: "version",
align: "center"
align: "center",
},
{
label: "应用类型",
prop: "type_name",
align: "center"
align: "center",
},
{
label: "业务领域",
prop: "ywly_name",
align: "center"
align: "center",
},
{
label: "在线状态",
prop: "online_state",
align: "center"
prop: "online_state_name",
align: "center",
},
{
label: "创建时间",
prop: "create_date",
getText(item) {
let time = item.create_date || "";
return time.substring(0, 10);
let date = item.create_date || "";
return helper.dateStringTransform(date);
},
align: "center"
align: "center",
},
{
label: "操作",
......@@ -353,10 +352,10 @@ export default {
item.up_deploy_status == 0 ||
item.up_deploy_status == 2
);
}
}
]
}
},
},
],
},
];
this.otherFilter1 = [
{
......@@ -365,18 +364,18 @@ export default {
data: [
{
name: "平台应用",
value: 2
value: 2,
},
{
name: "开发者应用",
value: 1
value: 1,
},
{
name: "未上架",
value: 0
}
]
}
value: 0,
},
],
},
];
this.otherFilter2 = [
{
......@@ -385,13 +384,13 @@ export default {
data: [
{
name: "支持开发",
value: 1
value: 1,
},
{
name: "不支持开发",
value: 0
}
]
value: 0,
},
],
},
{
name: "应用来源",
......@@ -399,14 +398,14 @@ export default {
data: [
{
name: "创建的应用",
value: 0
value: 0,
},
{
name: "申请的应用",
value: 1
}
]
}
value: 1,
},
],
},
];
}
// 组织管理员 --- 部署的应用
......@@ -417,38 +416,41 @@ export default {
label: "应用名称",
prop: "deploy_name",
type: "button",
callback: this.detailItemDeploy
callback: this.detailItemDeploy,
},
{
label: "应用版本",
prop: "app_version",
align: "center"
align: "center",
},
{
label: "应用类型",
prop: "type_name",
align: "center"
align: "center",
},
{
label: "业务领域",
prop: "business_area_name",
align: "center"
align: "center",
},
{
label: "上架区域",
prop: "upload_area",
align: "center"
align: "center",
},
{
label: "部署时间",
prop: "created",
align: "center"
getText(item) {
let date = item.created || "";
return helper.dateStringTransform(date);
},
align: "center",
},
{
label: "部署区域",
prop: "namespace",
align: "center"
}
align: "center",
},
];
this.otherFilter1 = [
{
......@@ -457,18 +459,18 @@ export default {
data: [
{
name: "平台应用",
value: 2
value: 2,
},
{
name: "开发者应用",
value: 1
value: 1,
},
{
name: "未上架",
value: 0
}
]
}
value: 0,
},
],
},
];
this.otherFilter2 = [
{
......@@ -477,14 +479,14 @@ export default {
data: [
{
name: "支持开发",
value: 1
value: 1,
},
{
name: "不支持开发",
value: 0
}
]
}
value: 0,
},
],
},
];
}
// 组织管理员 --- 应用审批管理
......@@ -493,42 +495,45 @@ export default {
this.listHeader = [
{
label: "应用名称",
prop: "app_name"
prop: "app_name",
},
{
label: "应用版本",
prop: "version",
align: "center"
align: "center",
},
{
label: "应用类型",
prop: "type_name",
align: "center"
align: "center",
},
{
label: "业务领域",
prop: "ywly_name",
align: "center"
align: "center",
},
{
label: "在线区域",
prop: "online_state_name",
align: "center"
align: "center",
},
{
label: "申请类型",
prop: "apply_type_name",
align: "center"
align: "center",
},
{
label: "审批时间",
prop: "time",
align: "center"
getText(item) {
let date = item.time || "";
return helper.dateStringTransform(date);
},
align: "center",
},
{
label: "申请状态",
prop: "apply_status",
align: "center"
align: "center",
},
{
label: "操作",
......@@ -540,10 +545,10 @@ export default {
getLabel(item) {
return item.apply_status === "已审批" ? "详情" : "审批";
},
callback: this.detailItem
}
]
}
callback: this.detailItem,
},
],
},
];
this.otherFilter1 = [
{
......@@ -552,14 +557,14 @@ export default {
data: [
{
name: "应用商店",
value: 2
value: 2,
},
{
name: "开发者应用",
value: 1
}
]
}
value: 1,
},
],
},
];
this.otherFilter2 = [
{
......@@ -568,32 +573,28 @@ export default {
data: [
{
name: "申请部署",
value: 0
value: 0,
},
{
name: "申请开发",
value: 1
}
]
value: 1,
},
],
},
{
name: "申请状态",
prop: "apply_state",
data: [
{
name: "审批中",
value: 1
name: "待审批",
value: 0,
},
{
name: "审批通过",
value: 2
name: "已审批",
value: 1,
},
{
name: "审批未通过",
value: 0
}
]
}
],
},
];
}
......@@ -605,32 +606,32 @@ export default {
label: "应用名称",
prop: "app_name",
type: "button",
callback: this.detailItem
callback: this.detailItem,
},
{
label: "应用版本",
prop: "version",
align: "center"
align: "center",
},
{
label: "应用类型",
prop: "type_name",
align: "center"
align: "center",
},
{
label: "业务领域",
prop: "ywly_name",
align: "center"
align: "center",
},
{
label: "在线状态",
prop: "online_state",
align: "center"
prop: "online_state_name",
align: "center",
},
{
label: "所属组织",
prop: "org_name",
align: "center"
align: "center",
},
{
label: "操作",
......@@ -640,7 +641,7 @@ export default {
actionList: [
{
label: "编辑",
callback: _self.editItem
callback: _self.editItem,
},
{
getLabel(item) {
......@@ -657,7 +658,7 @@ export default {
} else {
return item.up_platform_status != 2;
}
}
},
},
{
label: "删除",
......@@ -665,10 +666,10 @@ export default {
callback: _self.deleteItem,
disabledRule(item) {
return item.online_state != 2;
}
}
]
}
},
},
],
},
];
this.otherFilter1 = [
{
......@@ -677,18 +678,18 @@ export default {
data: [
{
name: "平台应用",
value: 2
value: 2,
},
{
name: "开发者应用",
value: 1
value: 1,
},
{
name: "未上架",
value: 0
}
]
}
value: 0,
},
],
},
];
this.otherFilter2 = [
{
......@@ -697,14 +698,14 @@ export default {
data: [
{
name: "支持开发",
value: 1
value: 1,
},
{
name: "不支持开发",
value: 0
}
]
}
value: 0,
},
],
},
];
}
// 超级管理员 --- 应用部署管理
......@@ -715,43 +716,46 @@ export default {
label: "应用名称",
prop: "deploy_name",
type: "button",
callback: this.detailItemDeploy
callback: this.detailItemDeploy,
},
{
label: "应用版本",
prop: "app_version",
align: "center"
align: "center",
},
{
label: "应用类型",
prop: "type_name",
align: "center"
align: "center",
},
{
label: "业务领域",
prop: "business_area_name",
align: "center"
align: "center",
},
{
label: "上架区域",
prop: "upload_area",
align: "center"
align: "center",
},
{
label: "所属组织",
prop: "org_name",
align: "center"
align: "center",
},
{
label: "部署时间",
prop: "created",
align: "center"
getText(item) {
let date = item.created || "";
return helper.dateStringTransform(date);
},
align: "center",
},
{
label: "部署区域",
prop: "namespace",
align: "center"
}
align: "center",
},
];
this.otherFilter1 = [
{
......@@ -760,18 +764,18 @@ export default {
data: [
{
name: "平台应用",
value: 2
value: 2,
},
{
name: "开发者应用",
value: 1
value: 1,
},
{
name: "未上架",
value: 0
}
]
}
value: 0,
},
],
},
];
this.otherFilter2 = [
{
......@@ -780,14 +784,14 @@ export default {
data: [
{
name: "支持开发",
value: 1
value: 1,
},
{
name: "不支持开发",
value: 0
}
]
}
value: 0,
},
],
},
];
}
// 超级管理员 --- 应用审批管理
......@@ -796,42 +800,45 @@ export default {
this.listHeader = [
{
label: "应用名称",
prop: "app_name"
prop: "app_name",
},
{
label: "应用版本",
prop: "version",
align: "center"
align: "center",
},
{
label: "应用类型",
prop: "type_name",
align: "center"
align: "center",
},
{
label: "业务领域",
prop: "ywly_name",
align: "center"
align: "center",
},
{
label: "在线区域",
prop: "online_state_name",
align: "center"
align: "center",
},
{
label: "申请类型",
prop: "apply_type_name",
align: "center"
align: "center",
},
{
label: "审批时间",
prop: "time",
align: "center"
getText(item) {
let date = item.time || "";
return helper.dateStringTransform(date);
},
align: "center",
},
{
label: "申请状态",
prop: "apply_status",
align: "center"
align: "center",
},
{
label: "操作",
......@@ -843,10 +850,10 @@ export default {
getLabel(item) {
return item.apply_status === "已审批" ? "详情" : "审批";
},
callback: this.detailItem
}
]
}
callback: this.detailItem,
},
],
},
];
this.otherFilter1 = [
{
......@@ -855,14 +862,14 @@ export default {
data: [
{
name: "应用商店",
value: 2
value: 2,
},
{
name: "开发者应用",
value: 1
}
]
}
value: 1,
},
],
},
];
this.otherFilter2 = [
{
......@@ -871,32 +878,28 @@ export default {
data: [
{
name: "申请部署",
value: 0
value: 0,
},
{
name: "申请开发",
value: 1
}
]
value: 1,
},
],
},
{
name: "申请状态",
prop: "apply_state",
data: [
{
name: "审批中",
value: 1
name: "待审批",
value: 0,
},
{
name: "审批通过",
value: 2
name: "已审批",
value: 1,
},
{
name: "审批未通过",
value: 0
}
]
}
],
},
];
}
......@@ -914,39 +917,66 @@ export default {
callback(response) {
let datas = [];
datas = response.body.data.map(v => ({
datas = (response.body.data || []).map((v) => ({
name: v.name,
value: v.id
value: v.id,
}));
return {
name: "应用类型",
prop: "appTypes",
data: datas
data: datas,
};
}
},
},
{
path: "/apaas/hubApi/market/businessAreas",
callback(response) {
let datas = [];
datas = response.body.data.map(v => ({
datas = (response.body.data || []).map((v) => ({
name: v.name,
value: v.id
value: v.id,
}));
return {
name: "业务领域",
prop: "businessArea",
data: datas
data: datas,
};
}
}
},
},
];
Promise.all(urls.map(url => this.$http.get(url.path)))
.then(responses => {
if (type == 1) {
urls.push({
path: "/apaas/hubApi/market/namespaces",
callback(response) {
let datas = [];
datas = [
{
name: "全部",
value: "",
},
].concat(
(response.body.data || []).map((v) => ({
name: v.text,
value: v.value,
}))
);
return {
name: "工作区域",
prop: "namespaces",
data: datas,
};
},
});
}
Promise.all(urls.map((url) => this.$http.get(url.path)))
.then((responses) => {
let filterList = responses.map((response, index) => {
return urls[index].callback(response);
});
......@@ -954,10 +984,10 @@ export default {
this.filterList = [
...this.otherFilter1,
...filterList,
...this.otherFilter2
...this.otherFilter2,
];
})
.catch(error => {
.catch((error) => {
console.log(error);
});
},
......@@ -965,59 +995,66 @@ export default {
let listUrl = [
"/apaas/hubApi/market/list",
"/apaas/hubApi/market/deployList",
"/apaas/hubApi/market/applyList"
"/apaas/hubApi/market/applyList",
];
let params = {};
if (filter.online_state) {
params.online_state = filter.online_state
.map(item => {
.map((item) => {
return item.value;
})
.join(",");
} // 在线状态 / 部署来源 / 在线区域
if (filter.appTypes) {
params.appTypes = filter.appTypes
.map(item => {
.map((item) => {
return item.value;
})
.join(",");
} // 应用类型
if (filter.businessArea) {
params.businessArea = filter.businessArea
.map(item => {
.map((item) => {
return item.value;
})
.join(",");
} // 业务领域
if (filter.developable) {
params.developable = filter.developable
.map(item => {
.map((item) => {
return item.value;
})
.join(",");
} // 是否支持开发
if (filter.appSource) {
params.appSource = filter.appSource
.map(item => {
.map((item) => {
return item.value;
})
.join(",");
} // 应用来源
if (filter.apply_type) {
params.apply_type = filter.apply_type
.map(item => {
.map((item) => {
return item.value;
})
.join(",");
} // 申请类型
if (filter.apply_state) {
params.status = filter.apply_state
.map(item => {
.map((item) => {
return item.value;
})
.join(",");
} // 申请状态
if (filter.namespaces) {
params.namespaces = filter.namespaces
.map((item) => {
return item.value;
})
.join(",");
} // 工作区域
this.tempFliter = filter;
......@@ -1027,14 +1064,14 @@ export default {
...params,
search: filter.keyword,
page: filter.page,
limit: filter.size
}
limit: filter.size,
},
})
.then(({ data }) => {
this.listTotal = data.total;
this.listData = data.data || [];
})
.catch(error => {
.catch((error) => {
console.log(error);
});
},
......@@ -1055,20 +1092,20 @@ export default {
if (data.success) {
this.$message({
message: `删除${item.app_name}成功.`,
type: "success"
type: "success",
});
this.initDatas(this.tempFliter);
} else {
this.$message({
message: `删除${item.app_name}失败.`,
type: "warning"
message: data.errMsg || `删除${item.app_name}失败.`,
type: "warning",
});
}
})
.catch(error => {
.catch((error) => {
this.$message({
message: `删除${item.app_name}失败.`,
type: "warning"
type: "warning",
});
});
};
......@@ -1082,7 +1119,7 @@ export default {
if (item.up_deploy_status === 3) {
this.$message({
message: `${item.app_name}正在申请下架中.`,
type: "warning"
type: "warning",
});
} else {
this.$http
......@@ -1091,20 +1128,20 @@ export default {
if (data.success) {
this.$message({
message: `申请下架${item.app_name}成功.`,
type: "success"
type: "success",
});
this.initDatas(this.tempFliter);
} else {
this.$message({
message: `申请下架${item.app_name}失败.`,
type: "warning"
message: data.errMsg || `申请下架${item.app_name}失败.`,
type: "warning",
});
}
})
.catch(error => {
.catch((error) => {
this.$message({
message: `申请下架${item.app_name}失败.`,
type: "warning"
type: "warning",
});
});
}
......@@ -1120,27 +1157,27 @@ export default {
this.$http
.delete(`/apaas/hubApi/market/deploy/${item.deploy_name}`, {
params: {
deployId: item.deploy_id
}
deployId: item.deploy_id,
},
})
.then(({ data }) => {
if (data.success) {
this.$message({
message: `删除${item.deploy_name}成功.`,
type: "success"
type: "success",
});
this.initDatas(this.tempFliter);
} else {
this.$message({
message: `删除${item.deploy_name}失败.`,
type: "warning"
message: data.errMsg || `删除${item.deploy_name}失败.`,
type: "warning",
});
}
})
.catch(error => {
.catch((error) => {
this.$message({
message: `删除${item.deploy_name}失败.`,
type: "warning"
type: "warning",
});
});
};
......@@ -1150,7 +1187,7 @@ export default {
},
deploymentAction(item) {
this.$router.push(
`/yygl/${this.level}/${this.type}/deployment/${item.app_id}`
`/yygl/${this.level}/${this.type}/deployment/${item.app_id}?source=${item.source}`
);
},
changePageSize(value) {
......@@ -1169,7 +1206,9 @@ export default {
);
},
detailItemDeploy(item) {
this.$router.push(`${this.detailsUrl}${item.deploy_id}?app_id=${item.app_id}`);
this.$router.push(
`${this.detailsUrl}${item.deploy_id}?app_id=${item.app_id}`
);
},
soldUpItem(item) {
this.dialogInfo.title = "提示";
......@@ -1181,20 +1220,20 @@ export default {
if (data.success) {
this.$message({
message: `上架${item.app_name}成功.`,
type: "success"
type: "success",
});
this.initDatas(this.tempFliter);
} else {
this.$message({
message: `上架${item.app_name}失败.`,
type: "warning"
type: "warning",
});
}
})
.catch(error => {
.catch((error) => {
this.$message({
message: `上架${item.app_name}失败.`,
type: "warning"
type: "warning",
});
});
};
......@@ -1210,20 +1249,20 @@ export default {
if (data.success) {
this.$message({
message: `下架${item.app_name}成功.`,
type: "success"
type: "success",
});
this.initDatas(this.tempFliter);
} else {
this.$message({
message: `下架${item.app_name}失败.`,
type: "warning"
type: "warning",
});
}
})
.catch(error => {
.catch((error) => {
this.$message({
message: `下架${item.app_name}失败.`,
type: "warning"
type: "warning",
});
});
};
......@@ -1242,20 +1281,20 @@ export default {
if (data.success) {
this.$message({
message: `上线${item.app_name}成功.`,
type: "success"
type: "success",
});
this.initDatas(this.tempFliter);
} else {
this.$message({
message: `上线${item.app_name}失败.`,
type: "warning"
type: "warning",
});
}
})
.catch(error => {
.catch((error) => {
this.$message({
message: `上线${item.app_name}失败.`,
type: "warning"
type: "warning",
});
});
};
......@@ -1271,20 +1310,20 @@ export default {
if (data.success) {
this.$message({
message: `下线${item.app_name}成功.`,
type: "success"
type: "success",
});
this.initDatas(this.tempFliter);
} else {
this.$message({
message: `下线${item.app_name}失败.`,
type: "warning"
type: "warning",
});
}
})
.catch(error => {
.catch((error) => {
this.$message({
message: `下线${item.app_name}失败.`,
type: "warning"
type: "warning",
});
});
};
......@@ -1302,24 +1341,24 @@ export default {
if (data.success) {
this.$message({
message: `删除${item.app_name}成功.`,
type: "success"
type: "success",
});
this.initDatas(this.tempFliter);
} else {
this.$message({
message: `删除${item.app_name}失败.`,
type: "warning"
type: "warning",
});
}
})
.catch(error => {
.catch((error) => {
this.$message({
message: `删除${item.app_name}失败.`,
type: "warning"
type: "warning",
});
});
};
}
},
},
created() {
this.level = parseInt(this.$route.params.level);
......@@ -1342,7 +1381,7 @@ export default {
console.log(data.errMsg);
}
});
}
},
};
</script>
......
......@@ -34,7 +34,7 @@ const workbench = {
},
// cloud resource approval
setCloudApproval(params) {
return axios.put(`/apaas/service/v3/resource/apply/approve?apply_id=${params.applyId}&apply_state=${params.applyState}&apply_type=${params.applyType}&cloud_id=${params.applyCloudId}`, params)
return axios.put(`/apaas/service/v3/resource/apply/approve?apply_id=${params.applyId}&apply_state=${params.applyState}&apply_type=${params.applyType}&cloud_id=${params.applyCloudId}&namespace=${params.namespace}`, params)
},
// cloud resource allocation
setCloudAllocation(params) {
......@@ -48,6 +48,10 @@ const workbench = {
disabledCloud(params) {
return axios.put(`/apaas/service/v3/resource/apply/disable?id=${params.id}&type=${params.type}`)
},
// get cloud's application
getCloudApplication(params) {
return axios.get(`/apaas/hubApi/market/deployList?page=1&limit=10000&namespaces=${params.namespace}`)
},
}
export default workbench;
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