Commit be148412 authored by 刘殿昕's avatar 刘殿昕

成天去开发分支演示什么意思?写完就回滚?我还开发什么?

parent 5b03ea87
<template>
<div class="com_cell">
<div class="com_cell_up" @click="goUrl(cellData.app_id)">
<div class="com_cell_up_img_init">
<img :src="cellData.logo" class="com_cell_up_img" />
</div>
<div class="com_cell_up_right">
<div class="up_title">
<div class="up_tit_name_in">
<span class="up_tit_name" :title="cellData.app_name + ' ( V' + cellData.version + ' )'">
{{ cellData.app_name }} ( V{{ cellData.version }} )
</span>
</div>
</div>
<div class="up_rate">
<el-rate
v-model="cellData.score"
disabled
show-score
text-color="#ea7d19"
score-template="{value}"
></el-rate>
<p class="get_num">
本月获取:
<span class="com_cell_right_time">
{{ cellData.deploy_times }}
</span>
<span class="ci"></span>
</p>
</div>
</div>
<div class="get_detail">
<img src="@/assets/imgs/shop_ic_enter.png" />
</div>
</div>
<div class="com_cell_down">
<p class="com_detail">
{{ cellData.yyjj }}
</p>
<el-row :gutter="16">
<el-col :span="14" class="com_other">
<span class="name_title">应用类型:</span>
{{ cellData.type_name }}
&nbsp;&nbsp;{{ cellData.data_service_type2_name }} &nbsp;&nbsp;{{
cellData.data_service_type3_name
}}
</el-col>
<el-col :span="10" class="com_other">
<span class="name_title">业务领域:</span>
{{ cellData.ywly_name }}
</el-col>
<el-col :span="14" class="com_other">
<span class="name_title">上线时间:</span>
{{ helper.dateStringTransform(cellData.create_date) }}
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import helper from "@/services/helper.js";
// if you meet date which like 2020-06-05T00:00:00+08:00, use helper.dateStringTransform()
export default {
components: {},
props: {
url: { type: String, default: "" },
cellData: { type: Object, default: {} },
},
data: () => ({ helper: helper }),
computed: {},
watch: {},
methods: {
goUrl(parame) {
if (this.url != "") {
this.$router.push(this.url + "/" + parame);
}
},
},
mounted() {},
};
</script>
<style scoped>
.com_cell {
width: 496px;
height: 208px;
background-color: #ffffff;
box-shadow: 0px 3px 6px 0px rgba(15, 19, 65, 0.04);
border-radius: 8px;
border: solid 1px #e3e4ef;
margin-bottom: 24px;
}
.com_cell_up {
height: 88px;
background-color: #f9fafc;
border-radius: 8px 8px 0px 0px;
padding: 16px;
display: flex;
position: relative;
cursor: pointer;
}
.com_cell_up_img_init {
width: 56px;
height: 56px;
margin-right: 16px;
flex: 0 0 auto;
}
.com_cell_up_img {
width: 100%;
height: 100%;
border-radius: 4px;
}
.com_cell_up_right {
flex: 1 1 auto;
}
.up_title {
font-size: 16px;
margin-top: 4px;
display: flex;
align-items: center;
}
.up_tit_name_in {
max-width: calc(100% - 150px);
display: inline-block;
}
.up_tit_name {
width: 100%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
.up_tit_name:hover {
text-decoration: underline;
}
.up_rate {
margin-top: 12px;
display: flex;
}
.get_num {
margin-left: 40px;
font-size: 14px;
color: #58617a;
}
.com_cell_right_time {
color: #ea7d19;
}
.ci {
color: #242c43;
}
.get_detail {
position: absolute;
top: 26px;
right: 16px;
}
.tags {
display: inline-block;
margin-left: 8px;
padding: 2px 8px 3px;
font-size: 12px;
font-weight: 500;
line-height: 12px;
border-radius: 4px;
position: relative;
top: 1px;
}
.map_service {
background-color: #626de9;
border: solid 1px #626de9;
color: #fff;
}
.shared {
background-color: #e7fdfc;
border: solid 1px #8bd6d0;
color: #25bdb1;
}
.restricted {
background-color: #fffee8;
border: solid 1px #e4c884;
color: #ef9433;
}
.sensitive {
background-color: #ffefef;
border: solid 1px #d7a4a9;
color: #e15260;
}
.com_cell_down {
padding: 12px 16px 0 16px;
}
.com_detail {
color: #8890a7;
font-size: 14px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
height: 42px;
margin-bottom: 8px;
}
.com_other {
color: #58617a;
margin-bottom: 6px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
.name_title {
color: #8890a7;
}
</style>
<style>
.com_cell .el-rate__item .el-rate__icon {
font-size: 20px;
margin-right: 0;
}
.com_cell .el-rate__text {
margin-left: 4px;
position: relative;
top: 1px;
}
</style>
\ No newline at end of file
<template> <template>
<div class="com_cell"> <div class="com_card">
<div class="com_cell_up" @click="goUrl(cellData.app_id)"> <div class="com_card_top">
<div class="com_cell_up_img_init"> <img :src="cellData.logo" class="com_card_img" />
<img :src="cellData.logo" class="com_cell_up_img" /> <div class="com_card_name_v">
<div class="com_card_msg_name">{{ cellData.app_name }}</div>
<div class="com_card_msg_version">V{{ cellData.version }}</div>
</div> </div>
<div class="com_cell_up_right">
<div class="up_title">
<div class="up_tit_name_in">
<span class="up_tit_name" :title="cellData.app_name + ' ( V' + cellData.version + ' )'">
{{ cellData.app_name }} ( V{{ cellData.version }} )
</span>
</div> </div>
<div class="com_card_msg">
<div class="com_card_msg_tit">
<img :src="require('@/assets/imgs/icon_shijian.png')" />&nbsp;上线时间
</div> </div>
<div class="up_rate"> <div class="com_card_msg_num">{{ helper.dateStringTransform(cellData.create_date) }}</div>
<el-rate
v-model="cellData.score"
disabled
show-score
text-color="#ea7d19"
score-template="{value}"
></el-rate>
<p class="get_num">
本月获取:
<span class="com_cell_right_time">
{{ cellData.deploy_times }}
</span>
<span class="ci"></span>
</p>
</div> </div>
<div class="com_card_msg">
<div class="com_card_msg_tit">
<img :src="require('@/assets/imgs/icon_huoqu1.png')" />&nbsp;部署次数
</div> </div>
<div class="get_detail"> <div class="com_card_msg_num1">{{ cellData.deploy_times }}</div>
<img src="@/assets/imgs/shop_ic_enter.png" />
</div> </div>
</div> <div class="com_card_btn">
<div class="com_cell_down"> <el-button size="medium" class="btn_1" @click="addShop(cellData.app_id)">加入购物车</el-button>
<p class="com_detail"> <el-button size="medium" class="btn_2" @click="goUrl(cellData.app_id)">查看详情</el-button>
{{ cellData.yyjj }}
</p>
<el-row :gutter="16">
<el-col :span="14" class="com_other">
<span class="name_title">应用类型:</span>
{{ cellData.type_name }}
&nbsp;&nbsp;{{ cellData.data_service_type2_name }} &nbsp;&nbsp;{{
cellData.data_service_type3_name
}}
</el-col>
<el-col :span="10" class="com_other">
<span class="name_title">业务领域:</span>
{{ cellData.ywly_name }}
</el-col>
<el-col :span="14" class="com_other">
<span class="name_title">上线时间:</span>
{{ helper.dateStringTransform(cellData.create_date) }}
</el-col>
</el-row>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import helper from "@/services/helper.js"; import helper from "@/services/helper.js";
// if you meet date which like 2020-06-05T00:00:00+08:00, use helper.dateStringTransform()
export default { export default {
components: {}, components: {},
props: { props: {
url: { type: String, default: "" }, url: { type: String, default: "" },
cellData: { type: Object, default: {} }, cellData: { type: Object, default: {} },
}, },
data: () => ({ helper: helper }), data: () => ({
helper: helper,
}),
computed: {}, computed: {},
watch: {}, watch: {},
methods: { methods: {
...@@ -76,148 +45,129 @@ export default { ...@@ -76,148 +45,129 @@ export default {
this.$router.push(this.url + "/" + parame); this.$router.push(this.url + "/" + parame);
} }
}, },
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(query)
.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>
<style scoped> <style scoped>
.com_cell { .com_card {
width: 496px; width: 290px;
height: 208px; height: 266px;
background-color: #ffffff; padding: 20px;
box-shadow: 0px 3px 6px 0px rgba(15, 19, 65, 0.04); border-radius: 16px;
border-radius: 8px; background-color: #fff;
border: solid 1px #e3e4ef; border: solid 2px transparent;
margin-bottom: 24px; -webkit-box-shadow: 0px 3px 10px 0px rgba(3, 10, 37, 0.15);
} box-shadow: 0px 3px 10px 0px rgba(3, 10, 37, 0.15);
.com_cell_up { }
height: 88px; .com_card:hover {
background-color: #f9fafc; border: solid 2px #b4c0f5;
border-radius: 8px 8px 0px 0px; }
padding: 16px; .com_card_top {
display: flex; display: flex;
position: relative; justify-content: space-between;
cursor: pointer; margin-bottom: 28px;
} }
.com_cell_up_img_init { .com_card_name_v {
width: 56px; width: calc(100% - 80px);
height: 56px;
margin-right: 16px;
flex: 0 0 auto;
} }
.com_cell_up_img { .com_card_img {
width: 100%; width: 60px;
height: 100%; height: 60px;
border-radius: 4px; border-radius: 8px;
} border: 3px solid #f6f7fb;
.com_cell_up_right {
flex: 1 1 auto;
} }
.up_title { .com_card_msg {
font-size: 16px; margin-top: 20px;
margin-top: 4px;
display: flex; display: flex;
align-items: center; justify-content: space-between;
} }
.up_tit_name_in { .com_card_msg_name {
max-width: calc(100% - 150px); font-size: 18px;
display: inline-block; font-weight: 700;
} margin-top: 4px;
.up_tit_name { margin-bottom: 12px;
width: 100%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden; overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
.up_tit_name:hover { .com_card_msg_version {
text-decoration: underline;
}
.up_rate {
margin-top: 12px;
display: flex;
}
.get_num {
margin-left: 40px;
font-size: 14px; font-size: 14px;
color: #58617a; color: #8890a7;
}
.com_cell_right_time {
color: #ea7d19;
}
.ci {
color: #242c43;
}
.get_detail {
position: absolute;
top: 26px;
right: 16px;
}
.tags {
display: inline-block;
margin-left: 8px;
padding: 2px 8px 3px;
font-size: 12px;
font-weight: 500;
line-height: 12px;
border-radius: 4px;
position: relative;
top: 1px;
}
.map_service {
background-color: #626de9;
border: solid 1px #626de9;
color: #fff;
}
.shared {
background-color: #e7fdfc;
border: solid 1px #8bd6d0;
color: #25bdb1;
}
.restricted {
background-color: #fffee8;
border: solid 1px #e4c884;
color: #ef9433;
}
.sensitive {
background-color: #ffefef;
border: solid 1px #d7a4a9;
color: #e15260;
}
.com_cell_down {
padding: 12px 16px 0 16px;
} }
.com_detail { .com_card_msg_tit {
color: #8890a7; color: #8890a7;
font-size: 14px; font-size: 16px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
height: 42px;
margin-bottom: 8px;
}
.com_other {
color: #58617a;
margin-bottom: 6px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
} }
.name_title { .com_card_msg_num {
color: #8890a7; color: #8890a7;
font-size: 14px;
position: relative;
top: 2px;
} }
</style> .com_card_msg_num1 {
<style> color: #242c43;
.com_cell .el-rate__item .el-rate__icon { font-size: 16px;
font-size: 20px; font-weight: bold;
margin-right: 0;
} }
.com_cell .el-rate__text { .com_card_btn {
margin-left: 4px; margin-top: 35px;
position: relative; display: flex;
top: 1px; justify-content: space-between;
}
.btn_1 {
width: 110px;
padding: 10px;
background-color: #d0d5e7;
border: solid 2px #a5afd6;
color: #0f2683;
}
.btn_1:hover {
background-color: #d5daec;
border: solid 2px #a5afd6;
color: #0f2683;
}
.btn_2 {
width: 110px;
padding: 10px;
background-color: #0f2683;
color: #f8f9fd;
}
.btn_2:hover {
background-color: #1d3694;
color: #f8f9fd;
} }
</style> </style>
<template>
<div class="com_cell">
<div class="com_cell_up" @click="goUrl(cellData.id)">
<div class="com_cell_up_img_init">
<img :src="cellData.cover" class="com_cell_up_img" />
</div>
<div class="com_cell_up_right">
<div class="up_title">
<div class="up_tit_name_in">
<span class="up_tit_name" :title="cellData.name">
{{ cellData.name }}
</span>
</div>
<span
v-if="cellData.data_service_type1 == 6"
class="tags map_service"
>
mapService
</span>
<span v-if="cellData.openness == 1" class="tags shared">共享</span>
<span v-else-if="cellData.openness == 2" class="tags restricted">
受限
</span>
<span v-else class="tags sensitive">敏感</span>
</div>
<div class="up_rate">
<el-rate
v-model="cellData.score"
disabled
show-score
text-color="#ea7d19"
score-template="{value}"
></el-rate>
<p class="get_num">
本月获取:
<span class="com_cell_right_time">
{{ cellData.apply_num }}
</span>
<span class="ci"></span>
</p>
</div>
</div>
<div class="get_detail">
<img src="@/assets/imgs/shop_ic_enter.png" />
</div>
</div>
<div class="com_cell_down">
<p class="com_detail">
{{ cellData.descript }}
</p>
<el-row :gutter="16">
<el-col :span="14" class="com_other">
<span class="name_title">服务类型:</span>
{{ cellData.data_service_type1_name }}
&nbsp;&nbsp;{{ cellData.data_service_type2_name }} &nbsp;&nbsp;{{
cellData.data_service_type3_name
}}
</el-col>
<el-col :span="10" class="com_other">
<span class="name_title">服务领域:</span>
{{ cellData.sectors_name }}
</el-col>
<el-col :span="14" class="com_other">
<span class="name_title">更新时间:</span>
{{ helper.dateStringTransform(cellData.update_date) }}
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import helper from "@/services/helper.js";
// if you meet date which like 2020-06-05T00:00:00+08:00, use helper.dateStringTransform()
export default {
components: {},
props: {
url: { type: String, default: "" },
cellData: { type: Object, default: {} },
},
data: () => ({ helper: helper }),
computed: {},
watch: {},
methods: {
goUrl(parame) {
if (this.url != "") {
this.$router.push(this.url + "/" + parame);
}
},
},
mounted() {},
};
</script>
<style scoped>
.com_cell {
width: 496px;
height: 208px;
background-color: #ffffff;
box-shadow: 0px 3px 6px 0px rgba(15, 19, 65, 0.04);
border-radius: 12px 12px 8px 8px;
border: solid 1px #e3e4ef;
margin-bottom: 24px;
}
.com_cell_up {
height: 88px;
background-color: #f9fafc;
border-radius: 12px 12px 0px 0px;
padding: 16px;
display: flex;
position: relative;
cursor: pointer;
}
.com_cell_up_img_init {
width: 56px;
height: 56px;
margin-right: 16px;
flex: 0 0 auto;
}
.com_cell_up_img {
width: 100%;
height: 100%;
border-radius: 4px;
}
.com_cell_up_right {
flex: 1 1 auto;
}
.up_title {
font-size: 16px;
margin-top: 4px;
display: flex;
align-items: center;
}
.up_tit_name_in {
max-width: calc(100% - 150px);
display: inline-block;
}
.up_tit_name {
width: 100%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
.up_tit_name:hover {
text-decoration: underline;
}
.up_rate {
margin-top: 12px;
display: flex;
}
.get_num {
margin-left: 40px;
font-size: 14px;
color: #58617a;
}
.com_cell_right_time {
color: #ea7d19;
}
.ci {
color: #242c43;
}
.get_detail {
position: absolute;
top: 26px;
right: 16px;
}
.tags {
display: inline-block;
margin-left: 8px;
padding: 2px 8px 3px;
font-size: 12px;
font-weight: 500;
line-height: 12px;
border-radius: 4px;
position: relative;
top: 1px;
}
.map_service {
background-color: #626de9;
border: solid 1px #626de9;
color: #fff;
}
.shared {
background-color: #e7fdfc;
border: solid 1px #8bd6d0;
color: #25bdb1;
}
.restricted {
background-color: #fffee8;
border: solid 1px #e4c884;
color: #ef9433;
}
.sensitive {
background-color: #ffefef;
border: solid 1px #d7a4a9;
color: #e15260;
}
.com_cell_down {
padding: 12px 16px 0 16px;
}
.com_detail {
color: #8890a7;
font-size: 14px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
height: 42px;
margin-bottom: 8px;
}
.com_other {
color: #58617a;
margin-bottom: 6px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
.name_title {
color: #8890a7;
}
</style>
<style>
.com_cell .el-rate__item .el-rate__icon {
font-size: 20px;
margin-right: 0;
}
.com_cell .el-rate__text {
margin-left: 4px;
position: relative;
top: 1px;
}
</style>
\ No newline at end of file
<template> <template>
<div class="com_cell"> <div class="com_cell">
<div class="com_cell_up" @click="goUrl(cellData.id)"> <div class="com_cell_img_box">
<div class="com_cell_up_img_init"> <img :src="cellData.cover" class="com_cell_img" />
<img :src="cellData.cover" class="com_cell_up_img" />
</div> </div>
<div class="com_cell_up_right"> <div class="com_cell_message">
<div class="up_title"> <div class="com_cell_msg_title">
<div class="up_tit_name_in">
<span class="up_tit_name" :title="cellData.name">
{{ cellData.name }} {{ cellData.name }}
</span>
</div>
<span <span
v-if="cellData.data_service_type1 == 6" v-if="cellData.data_service_type1 == 6"
class="tags map_service" class="tags map_service"
> >mapService</span>
mapService
</span>
<span v-if="cellData.openness == 1" class="tags shared">共享</span> <span v-if="cellData.openness == 1" class="tags shared">共享</span>
<span v-else-if="cellData.openness == 2" class="tags restricted"> <span v-else-if="cellData.openness == 2" class="tags restricted">受限</span>
受限
</span>
<span v-else class="tags sensitive">敏感</span> <span v-else class="tags sensitive">敏感</span>
</div> </div>
<div class="up_rate"> <div class="message_block">
<div class="com_cell_item">
<div class="com_cell_data_detail">
<span class="detail_span">{{ cellData.descript }}</span>
</div>
</div>
<div class="com_cell_item">
<span class="com_cell_item_title">服务类型:</span>
<span
class="com_cell_data"
>{{ cellData.data_service_type1_name }}&nbsp;&nbsp;{{ cellData.data_service_type2_name }}&nbsp;&nbsp;{{ cellData.data_service_type3_name }}</span>
<span class="com_cell_item_title left_blank">数据领域:</span>
<span class="com_cell_data">{{ cellData.sectors_name }}</span>
</div>
<div class="com_cell_item">
<span class="com_cell_item_title">更新时间:</span>
<span class="com_cell_data">{{ helper.dateStringTransform(cellData.update_date) }}</span>
</div>
</div>
</div>
<div class="com_cell_right">
<el-rate <el-rate
v-model="cellData.score" v-model="cellData.score"
disabled disabled
show-score show-score
text-color="#ea7d19" text-color="#58617a"
score-template="{value}" score-template="{value}"
></el-rate> ></el-rate>
<p class="get_num"> <div class="com_cell_right_text">
本月获取: <span class="com_cell_right_time_tit">本月获取次数:</span>
<span class="com_cell_right_time"> <span class="com_cell_right_time">{{ cellData.apply_num }}</span>
{{ cellData.apply_num }}
</span>
<span class="ci"></span>
</p>
</div>
</div> </div>
<div class="get_detail"> <el-button class="com_cell_right_btn" @click="goUrl(cellData.id)">查看详情</el-button>
<img src="@/assets/imgs/shop_ic_enter.png" />
</div>
</div>
<div class="com_cell_down">
<p class="com_detail">
{{ cellData.descript }}
</p>
<el-row :gutter="16">
<el-col :span="14" class="com_other">
<span class="name_title">服务类型:</span>
{{ cellData.data_service_type1_name }}
&nbsp;&nbsp;{{ cellData.data_service_type2_name }} &nbsp;&nbsp;{{
cellData.data_service_type3_name
}}
</el-col>
<el-col :span="10" class="com_other">
<span class="name_title">服务领域:</span>
{{ cellData.sectors_name }}
</el-col>
<el-col :span="14" class="com_other">
<span class="name_title">更新时间:</span>
{{ helper.dateStringTransform(cellData.update_date) }}
</el-col>
</el-row>
</div> </div>
</div> </div>
</template> </template>
...@@ -94,87 +76,94 @@ export default { ...@@ -94,87 +76,94 @@ export default {
<style scoped> <style scoped>
.com_cell { .com_cell {
width: 496px;
height: 208px;
background-color: #ffffff;
box-shadow: 0px 3px 6px 0px rgba(15, 19, 65, 0.04);
border-radius: 12px 12px 8px 8px;
border: solid 1px #e3e4ef;
margin-bottom: 24px;
}
.com_cell_up {
height: 88px;
background-color: #f9fafc;
border-radius: 12px 12px 0px 0px;
padding: 16px;
display: flex; display: flex;
position: relative; justify-content: space-between;
cursor: pointer; padding: 20px 10px;
} border-bottom: 2px #f4f7fc solid;
.com_cell_up_img_init { }
width: 56px; .com_cell_img_box {
height: 56px; width: 200px;
margin-right: 16px; height: 200px;
flex: 0 0 auto; border-radius: 12px;
overflow: hidden;
border: 4px #f4f7fc solid;
} }
.com_cell_up_img { .com_cell_img {
width: 100%; width: 100%;
height: 100%; height: 100%;
border-radius: 4px;
} }
.com_cell_up_right { .com_cell_message {
flex: 1 1 auto; padding-left: 20px;
width: calc(100% - 500px);
} }
.up_title { .com_cell_msg_title {
font-size: 16px; color: #0d1847;
margin-top: 4px; font-size: 18px;
line-height: 30px;
font-weight: 700;
margin-bottom: 10px;
}
.com_cell_item {
font-size: 14px;
line-height: 28px;
margin-top: 1px;
color: #8890a7;
display: flex; display: flex;
align-items: center; align-self: start;
}
.com_cell_item_title {
/* width: 80px; */
} }
.up_tit_name_in { .com_cell_data {
max-width: calc(100% - 150px);
display: inline-block; display: inline-block;
color: #242c43;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} }
.up_tit_name { .com_cell_data_detail {
width: 100%; color: #242c43;
height: 78px;
font-size: 16px;
}
.detail_span {
display: -webkit-box; display: -webkit-box;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
-webkit-line-clamp: 1; -webkit-line-clamp: 2;
overflow: hidden; overflow: hidden;
} }
.up_tit_name:hover { .com_cell_right {
text-decoration: underline; width: 300px;
padding: 25px 0 0 50px;
} }
.up_rate { .com_cell_right_text {
margin-top: 12px; font-size: 16px;
display: flex; margin-top: 25px;
} }
.get_num { .com_cell_right_time_tit {
margin-left: 40px; color: #8890a7;
font-size: 14px;
color: #58617a;
} }
.com_cell_right_time { .com_cell_right_time {
color: #ea7d19;
}
.ci {
color: #242c43; color: #242c43;
} }
.get_detail { .com_cell_right_btn {
position: absolute; background-color: #0f2683;
top: 26px; color: #f8f9fd;
right: 16px; width: 220px;
height: 40px;
border-radius: 20px;
margin-top: 25px;
} }
.tags { .tags {
display: inline-block; display: inline-block;
margin-left: 8px; margin-left: 10px;
padding: 2px 8px 3px; padding: 2px 10px 3px;
font-size: 12px; font-size: 12px;
font-weight: 500; font-weight: 500;
line-height: 12px; line-height: 12px;
border-radius: 4px; border-radius: 4px;
position: relative; position: relative;
top: 1px; top: -1px;
} }
.map_service { .map_service {
background-color: #626de9; background-color: #626de9;
...@@ -196,39 +185,24 @@ export default { ...@@ -196,39 +185,24 @@ export default {
border: solid 1px #d7a4a9; border: solid 1px #d7a4a9;
color: #e15260; color: #e15260;
} }
.com_cell_down { .message_block {
padding: 12px 16px 0 16px; width: 80%;
padding: 10px 20px;
background-color: #f8f9fd;
border-radius: 10px;
} }
.com_detail { .left_blank {
color: #8890a7; margin-left: 20px;
font-size: 14px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
height: 42px;
margin-bottom: 8px;
}
.com_other {
color: #58617a;
margin-bottom: 6px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
.name_title {
color: #8890a7;
} }
</style> </style>
<style> <style>
.com_cell .el-rate__item .el-rate__icon { .com_cell_right .el-rate__text {
font-size: 20px; display: inline-block;
margin-right: 0; margin-left: 10px;
font-size: 32px;
font-weight: 700;
} }
.com_cell .el-rate__text { .com_cell_right .el-rate__icon {
margin-left: 4px; font-size: 28px;
position: relative;
top: 1px;
} }
</style> </style>
<template>
<div>
<div v-if="urlFilter == 'app'" ref="commodityList" class="commodity_card">
<commodity-card
v-for="item in datas"
:key="item.id"
:cellData="item"
:url="url"
></commodity-card>
</div>
<div v-else class="commodity_cell">
<commodity-cell
v-for="item in datas"
:cellData="item"
:url="url"
:key="item.id"
></commodity-cell>
</div>
<!-- 分页 -->
<section class="com-pagination" v-if="paginationShow">
<div class="com_page_total">{{ total }} 个条目</div>
<div class="com_page_item">
<div class="com_page_num" v-if="pageSizeShow">
<div>每页条数:</div>
<div class="com_page_num_sel">
<el-select
v-model="pagination.rowsPerPage"
placeholder="请选择"
size="small"
@change="handleSizeChange"
>
<el-option
v-for="item in pageOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="com_page_control">
<el-button
icon="el-icon-arrow-left"
circle
size="mini"
@click="handleCurrentChange(-1)"
:disabled="pagination.page == 1"
></el-button>
&nbsp;&nbsp;{{ pagination.page }}页 / 共
{{ Math.ceil((total == 0 ? 1 : total) / pagination.rowsPerPage) }}
<el-button
icon="el-icon-arrow-right"
circle
size="mini"
@click="handleCurrentChange(1)"
:disabled="
pagination.page >=
Math.ceil((total == 0 ? 1 : total) / pagination.rowsPerPage)
"
></el-button>
</div>
</div>
</section>
</div>
</template>
<script>
import CommodityCell from "@/components/service-list/commodity-cell.vue";
import CommodityCard from "@/components/service-list/commodity-card.vue";
export default {
components: {
"commodity-cell": CommodityCell,
"commodity-card": CommodityCard,
},
props: {
datas: {
type: Array,
default: () => {
[];
},
},
total: {
type: Number,
default: 0,
},
url: { type: String, default: "" },
paginationShow: {
type: Boolean,
default: false,
},
pageSizeShow: {
type: Boolean,
default: false,
},
urlFilter: { type: String, default: "" },
},
data: () => ({
pagination: {
rowsPerPage: 10,
page: 1,
},
pageOptions: [
{
value: "10",
label: "10",
},
{
value: "20",
label: "20",
},
{
value: "50",
label: "50",
},
],
}),
computed: {},
methods: {
handleSizeChange(val) {
this.pagination.rowsPerPage = val;
this.refreshData();
},
handleCurrentChange(val) {
this.pagination.page += val;
this.refreshData();
},
refreshData() {
this.$emit("refresh", this.pagination);
},
},
mounted() {},
watch: {
datas: {
handler(val) {},
},
url: {
handler() {
this.pagination = {
rowsPerPage: 10,
page: 1,
};
this.refreshData();
},
},
},
};
</script>
<style scoped>
.com-pagination {
margin-top: 20px;
font-size: 14px;
padding: 0 5%;
display: flex;
justify-content: space-between;
align-items: center;
}
.com_page_num {
width: 140px;
margin-right: 20px;
display: flex;
justify-content: space-around;
align-items: center;
}
.com_page_num_sel {
width: 50px;
font-size: 14px;
position: relative;
top: 1px;
}
.com_page_item {
display: flex;
justify-content: flex-end;
align-items: center;
}
.commodity_card {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.commodity_card_list {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.commodity_card_item {
margin: 10px 0;
}
.commodity_card_item_in {
margin: 0 auto;
}
.commodity_cell {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
</style>
<style>
.com_page_control .el-button {
border: 0;
}
.com_page_num .el-input__inner {
border: 0;
padding: 0;
}
</style>
\ No newline at end of file
<template> <template>
<div> <div>
<div v-if="urlFilter == 'app'" ref="commodityList" class="commodity_card"> <div v-if="urlFilter=='app'" ref="commodityList" class="commodity_card">
<commodity-card <div ref="commodityCardIn" class="commodity_card_list">
<div
v-for="item in datas" v-for="item in datas"
:key="item.id"
:cellData="item" :cellData="item"
:url="url" :url="url"
></commodity-card> :key="item.id"
class="commodity_card_item"
>
<commodity-card class="commodity_card_item_in" :cellData="item" :url="url"></commodity-card>
</div>
</div>
</div> </div>
<div v-else class="commodity_cell"> <div v-else class="commodity_cell">
<commodity-cell <commodity-cell v-for="item in datas" :cellData="item" :url="url" :key="item.id"></commodity-cell>
v-for="item in datas"
:cellData="item"
:url="url"
:key="item.id"
></commodity-cell>
</div> </div>
<!-- 分页 --> <!-- 分页 -->
<section class="com-pagination" v-if="paginationShow"> <section class="com-pagination" v-if="paginationShow">
...@@ -46,8 +46,9 @@ ...@@ -46,8 +46,9 @@
@click="handleCurrentChange(-1)" @click="handleCurrentChange(-1)"
:disabled="pagination.page == 1" :disabled="pagination.page == 1"
></el-button> ></el-button>
&nbsp;&nbsp;{{ pagination.page }}页 / 共 &nbsp;&nbsp;{{ pagination.page }}页 / 共{{
{{ Math.ceil((total == 0 ? 1 : total) / pagination.rowsPerPage) }} Math.ceil((total == 0 ? 1 : total) / pagination.rowsPerPage)
}}
<el-button <el-button
icon="el-icon-arrow-right" icon="el-icon-arrow-right"
circle circle
...@@ -127,11 +128,30 @@ export default { ...@@ -127,11 +128,30 @@ export default {
refreshData() { refreshData() {
this.$emit("refresh", this.pagination); this.$emit("refresh", this.pagination);
}, },
pageResize() {
let listWidth = this.$refs.commodityCardIn.clientWidth;
let rowCardNum = Math.floor(listWidth / 310);
let cardArr = this.$refs.commodityCardIn.children;
// console.log(rowCardNum, listWidth / rowCardNum);
for (let i = 0; i < cardArr.length; i++) {
cardArr[i].style.width = listWidth / rowCardNum - 1 + "px";
}
// console.log(this.$refs.commodityCardIn);
},
}, },
mounted() {}, mounted() {},
watch: { watch: {
datas: { datas: {
handler(val) {}, handler(val) {
if (this.urlFilter == "app") {
setTimeout(() => {
this.pageResize();
window.onresize = () => {
this.pageResize();
};
}, 0);
}
},
}, },
url: { url: {
handler() { handler() {
...@@ -174,9 +194,6 @@ export default { ...@@ -174,9 +194,6 @@ export default {
align-items: center; align-items: center;
} }
.commodity_card { .commodity_card {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
} }
.commodity_card_list { .commodity_card_list {
width: 100%; width: 100%;
...@@ -189,11 +206,6 @@ export default { ...@@ -189,11 +206,6 @@ export default {
.commodity_card_item_in { .commodity_card_item_in {
margin: 0 auto; margin: 0 auto;
} }
.commodity_cell {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
</style> </style>
<style> <style>
.com_page_control .el-button { .com_page_control .el-button {
......
<template>
<!--
name: page type
url: detail page url
urlFilter: get filter data from this url
author: dixin
This component only for service shop list, so the explanation only look by me
-->
<div>
<div class="head_flex">
<el-breadcrumb separator="/" class="bread_crumb1 bread_left">
<el-breadcrumb-item :to="{ path: '/shop' }">
{{ $t("lang.service_shop") }}
</el-breadcrumb-item>
<el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
</el-breadcrumb>
<div class="input_right">
<el-input
v-model="search"
prefix-icon="el-icon-search"
placeholder="请输入关键字搜索服务"
@input="searchVal"
></el-input>
</div>
</div>
<block-radius :borRadius="12" :paddingNum="0">
<!-- filter -->
<div v-if="urlFilter" class="classification">
<div
v-for="(item, index) in filterLists"
:key="'cd' + index"
class="classification_line"
>
<div
class="classification_line_if"
v-if="item.childDomains && item.childDomains.length != 0"
>
<div class="classification_line_title">{{ item.name }}<span class="maohao"></span></div>
<!-- <div
:class="
index == filterLists.length - 1
? 'classification_line_items'
: 'classification_line_items classification_line_items_border'
"
> -->
<div class="classification_line_items">
<div
:class="
openList[index] == 'up'
? 'classification_line_hid'
: 'classification_line_show'
"
>
<ul :id="item.id" class="classification_line_items_ul">
<li class="classification_line_items_li" :key="'cda' + index">
<div class="classification_span">
<span
@click="clickAll(index)"
:class="
activeOptions[index].length == 0
? 'classification_act'
: ''
"
>全部</span
>
</div>
</li>
<li
v-for="(items, indexs) in item.childDomains"
:class="
items.childDomains &&
openChildren[index].state == true &&
openChildren[index].index == items.id
? 'classification_line_items_li_act classification_line_items_li'
: 'classification_line_items_li'
"
:key="'cds' + indexs"
>
<div class="classification_span">
<span
@click="clickItem(index, indexs, items)"
:class="
activeOptions[index].indexOf(items.id) != -1
? 'classification_act'
: ''
"
>{{ items.name }}</span
>
<!-- if item have children, we will use an arrow to prompt -->
<i
v-if="
items.childDomains &&
openChildren[index].state == true &&
openChildren[index].index == items.id
"
@click="clickItemChild(index, indexs, items)"
class="el-icon-caret-top"
></i>
<i
v-else-if="
items.childDomains &&
openChildren[index].state == false &&
openChildren[index].index == items.id
"
@click="clickItemChild(index, indexs, items)"
class="el-icon-caret-bottom"
></i>
<i
v-else-if="items.childDomains"
@click="clickItemChild(index, indexs, items)"
class="el-icon-caret-bottom"
></i>
</div>
</li>
</ul>
<!-- if the word over the width, we will supply a button for show all word -->
<div
v-if="item.showOpen"
class="classification_line_items_open"
@click="clickOpen(index)"
>
<span v-if="openList[index] == 'down'">收起</span>
<span v-if="openList[index] == 'up'">更多</span>
<i
v-if="openList[index] == 'down'"
class="el-icon-caret-top"
></i>
<i
v-if="openList[index] == 'up'"
class="el-icon-caret-bottom"
></i>
</div>
</div>
<!-- filter children -->
<div v-if="openChildren[index].state">
<ul class="classification_children_ul">
<li
class="classification_children_li"
v-for="itemChildren in openChildren[index].act"
:key="itemChildren.id"
>
<div
class="classification_span"
@click="
clickChildren(
itemChildren.id,
index,
openChildren[index].index
)
"
>
<span
:class="
activeChildOptions[index].indexOf(itemChildren.id) !=
-1
? 'classification_act'
: ''
"
>{{ itemChildren.name }}</span
>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</block-radius>
<!-- filter button -->
<div class="btn_group">
<div
v-for="(item, index) in buttonFilter"
:key="item.name"
size="small"
:class="
index == activeBtn
? 'button_filter button_filter_act'
: 'button_filter'
"
@click="clickButtonFilter(index)"
>
{{ item.name }}
</div>
<!-- <div v-if="urlFilter == 'app'" class="btn_right_check">
<el-checkbox v-model="couldTwice" @change="changeTwice">
支持二次开发
</el-checkbox>
</div> -->
</div>
<!-- <div
class="gray_line"
v-if="
filterLists[0].childDomains.length != 0 ||
filterLists[1].childDomains.length != 0 ||
filterLists[2].childDomains.length != 0
"
></div> -->
<!-- the list -->
<commodity-list
:datas="lists && lists.length != 0 ? lists : []"
:total="total"
:url="url"
:urlFilter="urlFilter"
:paginationShow="false"
:pageSizeShow="true"
@refresh="getNewList"
></commodity-list>
</div>
</template>
<script>
import CommodityList from "@/components/service-list/commodity-list.vue";
import BlockRadius from "@/components/general/block-radius";
export default {
components: {
"commodity-list": CommodityList,
BlockRadius,
},
props: {
urlFilter: {
type: String,
default: "",
},
url: { type: String, default: "" },
name: { type: String, default: "" },
filterNames: {
type: Array,
default: () => {
[];
},
},
},
data: () => ({
search: "",
openList: [0, 0, 0, 0],
openChildren: [
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
],
activeOptions: [[], [], [], []],
activeChildOptions: [[], [], [], []],
buttonFilter: [
{
name: "综合排序",
},
{
name: "最新更新",
},
{
name: "最高人气",
},
{
name: "最好评价",
},
],
activeBtn: 0,
lists: [],
total: 0,
filterLists: [
{
id: 110,
name: "",
prop: "",
childDomains: [],
},
{
id: 10,
name: "",
prop: "serviceTypeInfo",
childDomains: [],
},
{
id: 11,
name: "",
prop: "serviceDomain",
childDomains: [],
},
{
id: 100,
name: "",
prop: "organizations",
childDomains: [],
},
],
page: 1,
limit: 20,
couldTwice: false,
refresh_app_1: false,
refresh_app_2: false,
refresh_app_3: false,
time_app: null,
times: null,
isKaiGuan: true,
}),
mounted() {
window.addEventListener("resize", this.judgeHeight);
window.addEventListener("scroll", this.menu, true);
},
destroyed() {
window.removeEventListener("resize", this.judgeHeight);
window.removeEventListener("scroll", this.menu, true);
},
watch: {
urlFilter: {
handler(val) {
if (val) {
this.openChildren = [
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
{ index: null, state: false, act: null },
];
this.activeOptions = [[], [], [], []];
this.activeChildOptions = [[], [], [], []];
if (val == "app") {
this.$set(this.filterLists, 0, {
id: 110,
name: "部署来源",
prop: "",
childDomains: [
{
id: 2,
name: "平台应用",
prop: "",
childDomains: null,
},
{
id: 1,
name: "开发者应用",
prop: "",
childDomains: null,
},
],
});
} else {
this.$set(this.filterLists, 0, {
id: 110,
name: "",
prop: "",
childDomains: [],
});
}
this.getShopFilter();
}
},
},
filterNames: {
handler(val) {
for (let i = 0; i < val.length; i++) {
this.filterLists[i + 1].name = val[i];
}
},
},
},
methods: {
menu() {
if (this.isKaiGuan) {
let scroll =
this.getScrollTop() + this.getWindowHeight() - this.getScrollHeight();
if (scroll > -10) {
if (
(this.total != 0 && this.page * this.limit < this.total) ||
this.total == 0
) {
this.page++;
this.getShopList();
}
}
}
},
//滚动条在Y轴上的滚动距离
getScrollTop() {
var documentScrollTop = 0;
documentScrollTop = document.documentElement.scrollTop;
return documentScrollTop;
},
//文档的总高度
getScrollHeight() {
var documentScrollHeight = 0;
documentScrollHeight = document.documentElement.scrollHeight;
return documentScrollHeight;
},
//浏览器视口的高度
getWindowHeight() {
var windowHeight = 0;
windowHeight = document.documentElement.clientHeight;
return windowHeight;
},
getShopList() {
this.isKaiGuan = false;
if (this.urlFilter == "app") {
let query = {
online_state: this.activeOptions[0].join(","),
appTypes: this.activeOptions[1].join(","),
businessArea: this.activeOptions[2].join(","),
orgSource: this.activeOptions[3].join(","),
developable: Number(this.couldTwice),
order:
this.activeBtn == 0
? "search_count"
: this.activeBtn == 1
? "create_date"
: this.activeBtn == 2
? "apply_times"
: "evaluation",
page: this.page,
limit: this.limit,
search: this.search,
};
this.$api.serviceShop.getAppList(query).then((response) => {
if (response.data.success == "1") {
this.lists =
this.page == 1
? response.data.data
: this.lists.concat(response.data.data);
this.total = response.data.total;
this.isKaiGuan = true;
} else {
console.log(response.data.errMsg);
}
});
} else {
let query = {
serviceName: this.search,
serviceType1: this.urlFilter,
serviceType2s: this.activeOptions[1].join(","),
serviceType3s: this.activeChildOptions[1].join(","),
dataDomains: this.activeOptions[2].join(","),
organizeIds: this.activeOptions[3].join(","),
orderBy: this.activeBtn,
Page: this.page,
Size: this.limit,
};
this.$api.serviceShop.getServiceShopList(query).then((response) => {
if (response.data.success == "1") {
this.lists =
this.page == 1
? response.data.data
: this.lists.concat(response.data.data);
this.total = response.data.total;
this.isKaiGuan = true;
} else {
console.log(response.data.errMsg);
}
});
}
},
getShopFilter() {
if (this.urlFilter == "app") {
this.getAppArea();
this.getAppType();
this.getAppOrg();
this.time_app = setInterval(() => {
if (this.refresh_app_1 && this.refresh_app_2 && this.refresh_app_3) {
this.judgeHeight();
clearInterval(this.time_app);
}
}, 50);
} else {
let query = {
type: this.urlFilter,
};
this.$api.serviceShop.getServiceShopFilter(query).then((response) => {
if (response.data.success == 1) {
let data = response.data.data;
this.filterLists[1].childDomains = data.serviceTypeInfo
? data.serviceTypeInfo
: [];
this.filterLists[2].childDomains = data.serviceDomain
? data.serviceDomain
: [];
this.filterLists[3].childDomains = data.organizations
? data.organizations
: [];
if (this.urlFilter == "7") {
this.filterLists[1].childDomains = [];
}
setTimeout(() => {
this.judgeHeight();
}, 0);
} else {
console.log(response.data.errMsg);
}
});
}
},
judgeHeight() {
this.$nextTick(() => {
let list = this.filterLists;
for (let i = 0; i < list.length; i++) {
if (list[i].childDomains.length != 0) {
let offHeight = Math.ceil(
document.getElementById(list[i].id).offsetHeight
);
if (offHeight > 60) {
list[i].showOpen = true;
this.openList[i] = "up";
} else {
list[i].showOpen = false;
}
}
}
this.filterLists = [...list];
});
},
clickOpen(index) {
let list = this.openList;
if (list[index] == "up") {
this.$set(this.openList, index, "down");
} else if (list[index] == "down") {
this.$set(this.openList, index, "up");
}
// 这里不能像上面那样整体更新,因为啥我也不知道,我太菜
},
clickItem(index, indexs, items) {
let i = this.activeOptions[index].indexOf(items.id);
if (i == -1) {
this.activeOptions[index].push(items.id);
} else {
this.activeOptions[index].splice(i, 1);
if (items.childDomains) {
items.childDomains.forEach((e) => {
let i = this.activeChildOptions[index].indexOf(e.id);
if (i != -1) {
this.activeChildOptions[index].splice(i, 1);
}
});
}
}
this.getFilterValue();
},
clickItemChild(index, indexs, items) {
if (items.childDomains) {
if (this.openChildren[index].index == items.id) {
this.$set(this.openChildren, index, {
index: indexs,
state: !this.openChildren[index].state,
act: items.childDomains,
});
} else {
this.$set(this.openChildren, index, {
index: items.id,
state: true,
act: items.childDomains,
});
}
} else {
this.$set(this.openChildren, index, {
index: null,
state: false,
act: null,
});
}
},
clickButtonFilter(index) {
this.activeBtn = index;
this.page = 1;
this.getShopList();
},
clickChildren(id, index, fatherId) {
let i = this.activeChildOptions[index].indexOf(id);
let j = this.activeOptions[index].indexOf(fatherId);
if (i == -1) {
this.activeChildOptions[index].push(id);
if (j == -1) {
this.activeOptions[index].push(fatherId);
}
} else {
this.activeChildOptions[index].splice(i, 1);
}
this.getFilterValue();
},
getFilterValue() {
this.page = 1;
this.getShopList();
},
// search debonce 500ms
searchVal() {
if (this.times !== null) clearTimeout(this.times);
this.times = setTimeout(() => {
this.page = 1;
this.getShopList();
}, 500);
},
getNewList(val) {
console.log(val);
this.page = 1;
this.limit = 20;
this.getShopList();
},
clickAll(item) {
this.$set(this.activeOptions, item, []);
this.$set(this.activeChildOptions, item, []);
this.page = 1;
this.getShopList();
},
changeTwice() {
this.getShopList();
},
getAppArea() {
this.$api.serviceShop.getAppArea().then((response) => {
if (response.data.success == 1) {
this.filterLists[2].childDomains = response.data.data;
this.refresh_app_2 = true;
} else {
console.log(response.data.errMsg);
}
});
},
getAppType() {
this.$api.serviceShop.getAppType().then((response) => {
if (response.data.success == 1) {
this.filterLists[1].childDomains = response.data.data;
this.refresh_app_1 = true;
} else {
console.log(response.data.errMsg);
}
});
},
getAppOrg() {
this.$api.serviceShop.getAppOrg().then((response) => {
if (response.data.success == 1) {
this.filterLists[3].childDomains = response.data.data;
this.refresh_app_3 = true;
} else {
console.log(response.data.errMsg);
}
});
},
},
};
</script>
<style scoped>
.head_flex {
display: flex;
justify-content: space-between;
position: relative;
height: 40px;
top: -14px;
}
.bread_left {
width: 300px;
}
.input_right {
width: 360px;
position: relative;
height: 36px;
top: 6px;
}
.gray_line {
width: 100%;
margin: 20px auto;
height: 1px;
background-color: #e9ecf3;
}
.classification {
padding: 12px 16px 12px 32px;
}
.classification_line {
width: 100%;
}
.classification_line_if {
width: 100%;
display: flex;
align-items: flex-start;
}
.classification_line_title {
display: inline-block;
width: 90px;
padding: 12px 0;
text-align: left;
color: #8890a7;
font-size: 12px;
}
.classification_line_items {
width: calc(100% - 90px);
}
.classification_line_items_border {
border-bottom: 1px #e9ecf3 solid;
}
.classification_line_hid {
height: 40px;
width: 100%;
overflow: hidden;
display: inline-flex;
align-items: flex-start;
}
.classification_line_show {
width: 100%;
display: inline-flex;
align-items: flex-start;
}
.classification_line_items_ul {
display: inline-block;
width: calc(100% - 30px);
font-size: 0;
}
.classification_line_items_li {
display: inline-block;
padding: 12px 18px;
font-size: 12px;
}
.classification_line_items_li_act {
background-color: #fbfbfb;
border-left: 1px #e9ecf3 solid;
border-right: 1px #e9ecf3 solid;
}
.classification_span {
color: #58617a;
display: inline-block;
cursor: pointer;
}
.classification_act {
color: #fff;
position: relative;
z-index: 1;
}
.classification_act::after {
content: "";
position: absolute;
width: calc(100% + 16px);
height: calc(100% + 8px);
background-color: #3f4f9c;
border-radius: 3px;
top: -4px;
left: -8px;
z-index: -1;
}
.classification_line_items_open {
display: inline-block;
width: 60px;
padding: 12px 0;
cursor: pointer;
font-size: 12px;
text-align: right;
}
.classification_children_ul {
display: inline-block;
width: 100%;
background-color: #fbfbfb;
border-top: 1px #e9ecf3 solid;
}
.classification_children_li {
display: inline-block;
padding: 12px 18px;
color: #58617a;
}
.button_filter {
color: #8890a7;
font-size: 12px;
display: inline-block;
margin-right: 31px;
position: relative;
}
.button_filter::after {
content: "";
width: 1px;
height: 16px;
background-color: #e3e5ef;
position: absolute;
right: -15px;
}
.button_filter:nth-child(4):after {
content: "";
width: 0;
}
.button_filter_act {
color: #515fe7;
}
.btn_group {
margin-top: 15px;
margin-bottom: 15px;
margin-left: 15px;
position: relative;
}
.btn_right_check {
position: absolute;
right: 20px;
top: 10px;
}
</style>
<style>
.head_flex .input_right .el-input__inner {
border-radius: 6px;
border: solid 1px #e7eaf6;
}
.head_flex .input_right .el-input--prefix .el-input__inner {
padding-left: 40px;
}
.head_flex .input_right .el-input__prefix,
.el-input__suffix {
left: 10px;
}
.head_flex .input_right .el-input--prefix .el-input__inner {
outline: none;
}
.head_flex .input_right .el-input__inner:focus-within {
border: 1px solid #626de9;
}
.head_flex .btn_right_check .el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #626de9;
border-color: #626de9;
}
.head_flex
.btn_right_check
.el-checkbox__input.is-checked
+ .el-checkbox__label {
color: #626de9;
}
.head_flex .btn_right_check .el-checkbox__input.is-focus .el-checkbox__inner {
border-color: #626de9;
}
</style>
...@@ -10,7 +10,9 @@ ...@@ -10,7 +10,9 @@
<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>
...@@ -23,27 +25,22 @@ ...@@ -23,27 +25,22 @@
></el-input> ></el-input>
</div> </div>
</div> </div>
<block-radius :borRadius="12" :paddingNum="0"> <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"
> >
<div class="classification_line_title">{{ item.name }}<span class="maohao"></span></div> <div class="classification_line_title">{{ item.name }}</div>
<!-- <div <div
:class=" :class="
index == filterLists.length - 1 index == filterLists.length - 1
? 'classification_line_items' ? 'classification_line_items'
: 'classification_line_items classification_line_items_border' : 'classification_line_items classification_line_items_border'
" "
> --> >
<div class="classification_line_items">
<div <div
:class=" :class="
openList[index] == 'up' openList[index] == 'up'
...@@ -61,8 +58,7 @@ ...@@ -61,8 +58,7 @@
? 'classification_act' ? 'classification_act'
: '' : ''
" "
>全部</span >全部</span>
>
</div> </div>
</li> </li>
<li <li
...@@ -84,8 +80,7 @@ ...@@ -84,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,15 +115,9 @@ ...@@ -120,15 +115,9 @@
@click="clickOpen(index)" @click="clickOpen(index)"
> >
<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 -->
...@@ -156,8 +145,7 @@ ...@@ -156,8 +145,7 @@
? 'classification_act' ? 'classification_act'
: '' : ''
" "
>{{ itemChildren.name }}</span >{{ itemChildren.name }}</span>
>
</div> </div>
</li> </li>
</ul> </ul>
...@@ -166,46 +154,38 @@ ...@@ -166,46 +154,38 @@
</div> </div>
</div> </div>
</div> </div>
</block-radius> <div
class="gray_line"
v-if="
filterLists[0].childDomains.length != 0 ||
filterLists[1].childDomains.length != 0 ||
filterLists[2].childDomains.length != 0
"
></div>
<!-- filter button --> <!-- filter button -->
<div class="btn_group"> <div class="btn_group">
<div <el-button
v-for="(item, index) in buttonFilter" v-for="(item, index) in buttonFilter"
:key="item.name" :key="item.name"
size="small" size="small"
:class=" :class="index == activeBtn ? 'button_filter_act' : 'button_filter'"
index == activeBtn
? 'button_filter button_filter_act'
: 'button_filter'
"
@click="clickButtonFilter(index)" @click="clickButtonFilter(index)"
> >{{ item.name }}</el-button>
{{ item.name }} <div v-if="urlFilter == 'app'" class="btn_right_check">
<el-checkbox v-model="couldTwice" @change="changeTwice">支持二次开发</el-checkbox>
</div> </div>
<!-- <div v-if="urlFilter == 'app'" class="btn_right_check">
<el-checkbox v-model="couldTwice" @change="changeTwice">
支持二次开发
</el-checkbox>
</div> -->
</div> </div>
<!-- <div
class="gray_line"
v-if="
filterLists[0].childDomains.length != 0 ||
filterLists[1].childDomains.length != 0 ||
filterLists[2].childDomains.length != 0
"
></div> -->
<!-- the list --> <!-- the list -->
<commodity-list <commodity-list
:datas="lists && lists.length != 0 ? lists : []" :datas="lists && lists.length != 0 ? lists : []"
:total="total" :total="total"
:url="url" :url="url"
:urlFilter="urlFilter" :urlFilter="urlFilter"
:paginationShow="false" :paginationShow="true"
:pageSizeShow="true" :pageSizeShow="true"
@refresh="getNewList" @refresh="getNewList"
></commodity-list> ></commodity-list>
</block-radius>
</div> </div>
</template> </template>
...@@ -286,22 +266,19 @@ export default { ...@@ -286,22 +266,19 @@ export default {
}, },
], ],
page: 1, page: 1,
limit: 20, limit: 10,
couldTwice: false, couldTwice: false,
refresh_app_1: false, refresh_app_1: false,
refresh_app_2: false, refresh_app_2: false,
refresh_app_3: false, refresh_app_3: false,
time_app: null, time_app: null,
times: null, times: null,
isKaiGuan: true,
}), }),
mounted() { mounted() {
window.addEventListener("resize", this.judgeHeight); window.addEventListener("resize", this.judgeHeight);
window.addEventListener("scroll", this.menu, true);
}, },
destroyed() { destroyed() {
window.removeEventListener("resize", this.judgeHeight); window.removeEventListener("resize", this.judgeHeight);
window.removeEventListener("scroll", this.menu, true);
}, },
watch: { watch: {
urlFilter: { urlFilter: {
...@@ -356,41 +333,7 @@ export default { ...@@ -356,41 +333,7 @@ export default {
}, },
}, },
methods: { methods: {
menu() {
if (this.isKaiGuan) {
let scroll =
this.getScrollTop() + this.getWindowHeight() - this.getScrollHeight();
if (scroll > -10) {
if (
(this.total != 0 && this.page * this.limit < this.total) ||
this.total == 0
) {
this.page++;
this.getShopList();
}
}
}
},
//滚动条在Y轴上的滚动距离
getScrollTop() {
var documentScrollTop = 0;
documentScrollTop = document.documentElement.scrollTop;
return documentScrollTop;
},
//文档的总高度
getScrollHeight() {
var documentScrollHeight = 0;
documentScrollHeight = document.documentElement.scrollHeight;
return documentScrollHeight;
},
//浏览器视口的高度
getWindowHeight() {
var windowHeight = 0;
windowHeight = document.documentElement.clientHeight;
return windowHeight;
},
getShopList() { getShopList() {
this.isKaiGuan = false;
if (this.urlFilter == "app") { if (this.urlFilter == "app") {
let query = { let query = {
online_state: this.activeOptions[0].join(","), online_state: this.activeOptions[0].join(","),
...@@ -412,12 +355,8 @@ export default { ...@@ -412,12 +355,8 @@ export default {
}; };
this.$api.serviceShop.getAppList(query).then((response) => { this.$api.serviceShop.getAppList(query).then((response) => {
if (response.data.success == "1") { if (response.data.success == "1") {
this.lists = this.lists = response.data.data;
this.page == 1
? response.data.data
: this.lists.concat(response.data.data);
this.total = response.data.total; this.total = response.data.total;
this.isKaiGuan = true;
} else { } else {
console.log(response.data.errMsg); console.log(response.data.errMsg);
} }
...@@ -436,12 +375,8 @@ export default { ...@@ -436,12 +375,8 @@ export default {
}; };
this.$api.serviceShop.getServiceShopList(query).then((response) => { this.$api.serviceShop.getServiceShopList(query).then((response) => {
if (response.data.success == "1") { if (response.data.success == "1") {
this.lists = this.lists = response.data.data;
this.page == 1
? response.data.data
: this.lists.concat(response.data.data);
this.total = response.data.total; this.total = response.data.total;
this.isKaiGuan = true;
} else { } else {
console.log(response.data.errMsg); console.log(response.data.errMsg);
} }
...@@ -557,7 +492,6 @@ export default { ...@@ -557,7 +492,6 @@ export default {
}, },
clickButtonFilter(index) { clickButtonFilter(index) {
this.activeBtn = index; this.activeBtn = index;
this.page = 1;
this.getShopList(); this.getShopList();
}, },
clickChildren(id, index, fatherId) { clickChildren(id, index, fatherId) {
...@@ -574,27 +508,23 @@ export default { ...@@ -574,27 +508,23 @@ export default {
this.getFilterValue(); this.getFilterValue();
}, },
getFilterValue() { getFilterValue() {
this.page = 1;
this.getShopList(); this.getShopList();
}, },
// search debonce 500ms // search debonce 500ms
searchVal() { searchVal() {
if (this.times !== null) clearTimeout(this.times); if (this.times !== null) clearTimeout(this.times);
this.times = setTimeout(() => { this.times = setTimeout(() => {
this.page = 1;
this.getShopList(); this.getShopList();
}, 500); }, 500);
}, },
getNewList(val) { getNewList(val) {
console.log(val); this.page = val.page;
this.page = 1; this.limit = val.rowsPerPage;
this.limit = 20;
this.getShopList(); this.getShopList();
}, },
clickAll(item) { clickAll(item) {
this.$set(this.activeOptions, item, []); this.$set(this.activeOptions, item, []);
this.$set(this.activeChildOptions, item, []); this.$set(this.activeChildOptions, item, []);
this.page = 1;
this.getShopList(); this.getShopList();
}, },
changeTwice() { changeTwice() {
...@@ -637,18 +567,12 @@ export default { ...@@ -637,18 +567,12 @@ export default {
.head_flex { .head_flex {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
position: relative;
height: 40px;
top: -14px;
} }
.bread_left { .bread_left {
width: 300px; width: 300px;
} }
.input_right { .input_right {
width: 360px; width: 360px;
position: relative;
height: 36px;
top: 6px;
} }
.gray_line { .gray_line {
width: 100%; width: 100%;
...@@ -656,9 +580,6 @@ export default { ...@@ -656,9 +580,6 @@ export default {
height: 1px; height: 1px;
background-color: #e9ecf3; background-color: #e9ecf3;
} }
.classification {
padding: 12px 16px 12px 32px;
}
.classification_line { .classification_line {
width: 100%; width: 100%;
} }
...@@ -669,20 +590,19 @@ export default { ...@@ -669,20 +590,19 @@ export default {
} }
.classification_line_title { .classification_line_title {
display: inline-block; display: inline-block;
width: 90px; width: 130px;
padding: 12px 0; padding: 15px 0;
text-align: left; text-align: right;
color: #8890a7; color: #8890a7;
font-size: 12px;
} }
.classification_line_items { .classification_line_items {
width: calc(100% - 90px); width: calc(100% - 130px);
} }
.classification_line_items_border { .classification_line_items_border {
border-bottom: 1px #e9ecf3 solid; border-bottom: 1px #e9ecf3 solid;
} }
.classification_line_hid { .classification_line_hid {
height: 40px; height: 50px;
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
display: inline-flex; display: inline-flex;
...@@ -695,13 +615,13 @@ export default { ...@@ -695,13 +615,13 @@ export default {
} }
.classification_line_items_ul { .classification_line_items_ul {
display: inline-block; display: inline-block;
width: calc(100% - 30px); width: calc(100% - 50px);
font-size: 0; font-size: 0;
} }
.classification_line_items_li { .classification_line_items_li {
display: inline-block; display: inline-block;
padding: 12px 18px; padding: 15px 20px;
font-size: 12px; font-size: 14px;
} }
.classification_line_items_li_act { .classification_line_items_li_act {
background-color: #fbfbfb; background-color: #fbfbfb;
...@@ -714,28 +634,14 @@ export default { ...@@ -714,28 +634,14 @@ export default {
cursor: pointer; cursor: pointer;
} }
.classification_act { .classification_act {
color: #fff; font-weight: 700;
position: relative; color: #515fe7;
z-index: 1;
}
.classification_act::after {
content: "";
position: absolute;
width: calc(100% + 16px);
height: calc(100% + 8px);
background-color: #3f4f9c;
border-radius: 3px;
top: -4px;
left: -8px;
z-index: -1;
} }
.classification_line_items_open { .classification_line_items_open {
display: inline-block; display: inline-block;
width: 60px; width: 60px;
padding: 12px 0; padding: 15px 0;
cursor: pointer; cursor: pointer;
font-size: 12px;
text-align: right;
} }
.classification_children_ul { .classification_children_ul {
display: inline-block; display: inline-block;
...@@ -745,35 +651,35 @@ export default { ...@@ -745,35 +651,35 @@ export default {
} }
.classification_children_li { .classification_children_li {
display: inline-block; display: inline-block;
padding: 12px 18px; padding: 15px 20px;
color: #58617a; color: #58617a;
} }
.button_filter { .button_filter {
color: #8890a7; background-color: #e6eefe;
color: #626de9;
border: 1px solid #e6eefe;
font-size: 12px; font-size: 12px;
display: inline-block;
margin-right: 31px;
position: relative;
} }
.button_filter::after { .button_filter:hover {
content: ""; border: 1px solid rgb(198, 226, 255);
width: 1px;
height: 16px;
background-color: #e3e5ef;
position: absolute;
right: -15px;
} }
.button_filter:nth-child(4):after { .button_filter:focus {
content: ""; border: 1px solid rgb(58, 142, 230);
width: 0;
} }
.button_filter_act { .button_filter_act {
color: #515fe7; background-color: #515fe7;
border: 1px solid #515fe7;
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-top: 15px;
margin-bottom: 15px; margin-bottom: 15px;
margin-left: 15px;
position: relative; position: relative;
} }
.btn_right_check { .btn_right_check {
...@@ -784,8 +690,7 @@ export default { ...@@ -784,8 +690,7 @@ export default {
</style> </style>
<style> <style>
.head_flex .input_right .el-input__inner { .head_flex .input_right .el-input__inner {
border-radius: 6px; border-radius: 20px;
border: solid 1px #e7eaf6;
} }
.head_flex .input_right .el-input--prefix .el-input__inner { .head_flex .input_right .el-input--prefix .el-input__inner {
padding-left: 40px; padding-left: 40px;
......
...@@ -65,32 +65,32 @@ export default { ...@@ -65,32 +65,32 @@ export default {
} }
switch (uri) { switch (uri) {
case "data_service_list": case "data_service_list":
item.active = "shop_tool_ic_sjfw_sel"; item.active = "tool_ic_shujufw_sel";
item.default = "shop_tool_ic_sjfw"; item.default = "tool_ic_shujufw";
break; break;
case "space_time_service_list": case "space_time_service_list":
item.active = "shop_tool_ic_skfw_sel"; item.active = "tool_ic_shikongfw_sel";
item.default = "shop_tool_ic_skfw"; item.default = "tool_ic_shikongfw";
break; break;
case "video_service_list": case "video_service_list":
item.active = "shop_tool_ic_spfw_sel"; item.active = "tool_ic_shipinfw_sel";
item.default = "shop_tool_ic_spfw"; item.default = "tool_ic_shipinfw";
break; break;
case "perception_service_list": case "perception_service_list":
item.active = "shop_tool_ic_ganzhifw_sel"; item.active = "tool_ic_ganzhifw_sel";
item.default = "shop_tool_ic_ganzhifw"; item.default = "tool_ic_ganzhifw";
break; break;
case "comprehensive_app_list": case "comprehensive_app_list":
item.active = "shop_tool_ic_zhyyfw_sel"; item.active = "tool_ic_zongheyyfw_sel";
item.default = "shop_tool_ic_zhyyfw"; item.default = "tool_ic_zongheyyfw";
break; break;
case "cloud": case "cloud":
item.active = "shop_tool_ic_yzyfw_sel"; item.active = "tool_ic_yunziyuanfw_sel";
item.default = "shop_tool_ic_yzyfw"; item.default = "tool_ic_yunziyuanfw";
break; break;
case "app_store_list": case "app_store_list":
item.active = "shop_ic_yysd_sel"; item.active = "tool_ic_yingyongsd_sel";
item.default = "shop_ic_yysd"; item.default = "tool_ic_yingyongsd";
break; break;
default: default:
item.active = "1"; item.active = "1";
...@@ -111,48 +111,37 @@ export default { ...@@ -111,48 +111,37 @@ export default {
.service_shop_menu { .service_shop_menu {
background-color: #0d1847; background-color: #0d1847;
position: fixed; position: fixed;
top: 76px; top: 58px;
left: calc(50% - 600px); left: 0;
width: 176px; width: 180px;
padding: 8px; height: 100%;
background-color: #ffffff; padding-top: 30px;
box-shadow: 0px 3px 6px 0px
rgba(15, 19, 65, 0.04);
border-radius: 8px;
} }
.service_shop_menu_list > li { .service_shop_menu_list > li {
box-sizing: border-box; padding: 16px 10px 8px 22px;
height: 40px; border-left: 5px solid #0d1847;
padding: 8px 0 0 22px;
margin-bottom: 16px;
font-size: 15px; font-size: 15px;
line-height: 24px; line-height: 24px;
cursor: pointer; cursor: pointer;
} }
.service_shop_menu_list > li:nth-last-child(1) {
margin-bottom: 0;
}
.service_shop_menu_list > li:hover, .service_shop_menu_list > li:hover,
.service_shop_menu_list > li.current { .service_shop_menu_list > li.current {
background-color: rgba(242, 246, 253, 0.4); border-left: 5px solid #e56600;
color: #515fe7; background-color: #182665;
color: #e6ebfe;
} }
.menu_img { .menu_img {
width: 24px; width: 25px;
margin-right: 6px; margin-right: 6px;
} }
.menu_item { .menu_item {
position: relative; position: relative;
font-weight: bold; color: #6573ae;
font-size: 15px;
color: #96a0c5;
top: -6px; top: -6px;
} }
.menu_item_active { .menu_item_active {
position: relative; position: relative;
font-weight: bold; color: #e6ebfe;
font-size: 15px;
color: #515fe7;
top: -6px; top: -6px;
} }
</style> </style>
<template>
<div class="service_shop_menu">
<ul class="service_shop_menu_list">
<li v-for="(item, index) in menuList" :key="index" @click="active(item.visit_url)">
<img
v-if="item.visit_url == actives"
:src="item.active != '' ? require('@/assets/imgs/' + item.active + '.png') : ''"
class="menu_img"
/>
<img v-else :src="require('@/assets/imgs/' + item.default + '.png')" class="menu_img" />
<span
:class="item.visit_url == actives ? 'menu_item_active':'menu_item'"
>{{ item.menu_name }}</span>
</li>
</ul>
</div>
</template>
<script>
export default {
props: {},
data() {
return {
actives: "",
menuList: [],
};
},
computed: {
getActive() {
return this.$store.state.serviceShopMenu;
},
},
watch: {
getActive(newVal) {
this.getActiveMenu(newVal);
},
},
mounted() {
this.getShopMenu();
this.$store.commit("serviceShopMenuAct", this.$route.path);
this.actives = this.$store.state.serviceShopMenu;
},
methods: {
active(val) {
this.$store.commit("serviceShopMenuAct", val);
this.$router.push(val);
},
getActiveMenu(val) {
this.actives = val;
},
getShopMenu() {
this.$api.general.getNowMenu({ teamName: "APAAS3" }).then((response) => {
if (response.data.success == 1) {
let arr = response.data.data[0].Child;
let shopArr = [];
let asd = arr.find(item => {
return item.visit_url == "/services_shop"
})
shopArr = asd.Child;
if (shopArr && shopArr.length != 0) {
Array.from(shopArr).forEach((item) => {
let uri = item.visit_url.substring(6);
if (uri.indexOf("/") != -1) {
uri = uri.substring(0, uri.indexOf("/"));
}
switch (uri) {
case "data_service_list":
item.active = "shop_tool_ic_sjfw_sel";
item.default = "shop_tool_ic_sjfw";
break;
case "space_time_service_list":
item.active = "shop_tool_ic_skfw_sel";
item.default = "shop_tool_ic_skfw";
break;
case "video_service_list":
item.active = "shop_tool_ic_spfw_sel";
item.default = "shop_tool_ic_spfw";
break;
case "perception_service_list":
item.active = "shop_tool_ic_ganzhifw_sel";
item.default = "shop_tool_ic_ganzhifw";
break;
case "comprehensive_app_list":
item.active = "shop_tool_ic_zhyyfw_sel";
item.default = "shop_tool_ic_zhyyfw";
break;
case "cloud":
item.active = "shop_tool_ic_yzyfw_sel";
item.default = "shop_tool_ic_yzyfw";
break;
case "app_store_list":
item.active = "shop_ic_yysd_sel";
item.default = "shop_ic_yysd";
break;
default:
item.active = "1";
item.default = "1";
break;
}
});
}
this.menuList = shopArr;
}
});
},
},
};
</script>
<style scoped>
.service_shop_menu {
background-color: #0d1847;
position: fixed;
top: 76px;
left: calc(50% - 600px);
width: 176px;
padding: 8px;
background-color: #ffffff;
box-shadow: 0px 3px 6px 0px
rgba(15, 19, 65, 0.04);
border-radius: 8px;
}
.service_shop_menu_list > li {
box-sizing: border-box;
height: 40px;
padding: 8px 0 0 22px;
margin-bottom: 16px;
font-size: 15px;
line-height: 24px;
cursor: pointer;
}
.service_shop_menu_list > li:nth-last-child(1) {
margin-bottom: 0;
}
.service_shop_menu_list > li:hover,
.service_shop_menu_list > li.current {
background-color: rgba(242, 246, 253, 0.4);
color: #515fe7;
}
.menu_img {
width: 24px;
margin-right: 6px;
}
.menu_item {
position: relative;
font-weight: bold;
font-size: 15px;
color: #96a0c5;
top: -6px;
}
.menu_item_active {
position: relative;
font-weight: bold;
font-size: 15px;
color: #515fe7;
top: -6px;
}
</style>
<template>
<div class="shop_cloud">
<el-breadcrumb separator="/" class="bread_crumb1 bread_left">
<el-breadcrumb-item :to="{ path: '/shop' }">服务超市</el-breadcrumb-item>
<el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
</el-breadcrumb>
<block-radius :paddingNum="24">
<el-form
ref="form"
:inline="true"
:rules="ruleBasis"
:model="form"
class="form_block"
>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item class="form_item">
<div class="form_item_title">申请组织:</div>
<el-input
v-model="form.department_name"
:disabled="true"
placeholder="请输入申请组织"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="form_item nobottom" prop="link_man">
<div class="form_item_title">部门联系人:</div>
<el-input
v-model="form.link_man"
placeholder="请输入联系人姓名"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="form_item nobottom" prop="phone">
<div class="form_item_title">联系电话:</div>
<el-input
v-model="form.phone"
placeholder="请输入联系人电话"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</block-radius>
<block-radius :paddingNum="24">
<el-tabs v-model="activeName" class="cloud_form" @tab-click="tabClick">
<el-tab-pane label="申请新的工作区域" name="0">
<el-form ref="formNew" :model="formNew" :rules="ruleNew">
<el-row :gutter="24">
<el-col :span="24">
<div class="form_title">基本信息</div>
</el-col>
<el-col :span="12">
<el-form-item prop="namespace" class="form_item">
<div class="form_item_title">工作区域名称:</div>
<el-input
v-model="formNew.namespace"
placeholder="请输入工作区域英文名称"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="workplace" class="form_item">
<div class="form_item_title">中文名称:</div>
<el-input
v-model="formNew.workplace"
placeholder="请输入工作区域中文名称"
></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="workplacedesc" class="form_item nobottom">
<div class="form_item_title">描述信息:</div>
<el-input
type="textarea"
v-model="formNew.workplacedesc"
placeholder="请输入工作区域描述信息"
></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="form_title">工作区域申请规格</div>
</el-col>
<el-col :span="8">
<el-form-item prop="cpu" class="form_item input_has_right">
<div class="form_item_title">CPU:</div>
<el-select
v-model="formNew.cpu"
@change="changeCPU"
placeholder="请选择CPU使用量"
>
<el-option
v-for="item in optionsCPU"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<div class="input_right input_right_top"></div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="memory" class="form_item input_has_right">
<div class="form_item_title">内存:</div>
<el-select
v-model="formNew.memory"
placeholder="请选择内存使用量"
@change="setContainerGroup(0)"
>
<el-option
v-for="item in optionsRAM"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<div class="input_right input_right_top">GB</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
prop="containerGroup"
class="form_item input_has_right"
>
<div class="form_item_title">容器组:</div>
<el-input-number
v-model="formNew.containerGroup"
controls-position="right"
:min="0"
:max="24"
placeholder="取值范围[0,24]"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="form_item_title">数据盘(可选):</div>
</el-col>
<el-col :span="8">
<el-form-item class="form_item input_has_right nobottom">
<el-input-number
v-model="formNew.dataDisk"
controls-position="right"
:min="0"
:max="1000"
placeholder="请选择增加数据盘的数量"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item class="form_item input_has_right nobottom">
<el-input-number
v-model="formNew.perDataDisk"
controls-position="right"
:min="0"
:max="1000"
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>
<el-col :span="24">
<div class="form_item_title">CPU:</div>
</el-col>
<el-col :span="8">
<el-form-item
prop="perCPUs"
class="form_item input_has_left_right"
>
<div class="input_left">最高</div>
<el-input-number
v-model="formNew.perCPUs"
controls-position="right"
:min="0"
:max="10"
placeholder="CPU最高使用量"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
prop="perCPU"
class="form_item input_has_left_right"
>
<div class="input_left">默认</div>
<el-input-number
v-model="formNew.perCPU"
controls-position="right"
:min="0"
:max="10"
placeholder="CPU默认使用量"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="form_item_title">内存:</div>
</el-col>
<el-col :span="8">
<el-form-item
prop="perRAMs"
class="form_item input_has_left_right nobottom"
>
<div class="input_left">最高</div>
<el-input-number
v-model="formNew.perRAMs"
controls-position="right"
:min="0"
:max="10"
placeholder="内存最高使用量"
></el-input-number>
<div class="input_right">GB</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
prop="perRAM"
class="form_item input_has_left_right nobottom"
>
<div class="input_left">默认</div>
<el-input-number
v-model="formNew.perRAM"
controls-position="right"
:min="0"
:max="10"
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>
<el-col :span="16">
<el-form-item
prop="appDuration"
class="form_item input_has_right"
>
<div class="form_item_title">申请时长:</div>
<el-input-number
v-model="formNew.appDuration"
controls-position="right"
:min="1"
:max="1000"
></el-input-number>
<!-- <el-select
v-model="formNew.durType"
class="input_right_select"
placeholder="请选择申请时长"
>
<el-option
v-for="item in durationOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> -->
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="form_item">
<div class="form_item_title">申请文件:</div>
<info-list
:list_arr="docTemplate"
class="doc_template"
></info-list>
<upload-file
:multiple="false"
:unique="false"
:max="1"
type="zip"
:readOnly="false"
:drag="true"
@getNewList="getNewList"
class="up_f"
></upload-file>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-tab-pane>
<el-tab-pane label="调整现有工作区域" name="1">
<el-row :gutter="24">
<el-col :span="16">
<div class="select_title">选择要进行调整的工作区域:</div>
<div class="form_item">
<el-select
v-model="workSpace"
@change="getForm"
placeholder="请选择"
>
<el-option
v-for="(item, index) in workSpaceOptions"
:key="index"
:label="item.namespace"
:value="index"
></el-option>
</el-select>
</div>
</el-col>
</el-row>
<div v-show="formShow">
<el-form ref="formOld" :model="formOld" :rules="ruleOld">
<el-row :gutter="24">
<el-col :span="24">
<div class="form_title">工作区域规格调整</div>
</el-col>
<el-col :span="24">
<div class="now_spec">当前规格:</div>
<div class="now_spec_cards">
<div
class="now_spec_card"
v-for="(item, index) in specArr"
:key="index + 'spec'"
>
<img
class="now_spec_card_img"
:src="require('@/assets/imgs/' + item.src + '.png')"
/>
<span class="now_spec_card_title">
{{ item.title }}
</span>
<span class="now_spec_card_val">
{{
item.val +
" " +
(item.title == "CPU"
? ""
: item.title == "内存"
? "GB"
: "")
}}
</span>
</div>
</div>
</el-col>
<el-col :span="8">
<el-form-item prop="cpu" class="form_item input_has_right">
<div class="form_item_title">申请CPU调整为:</div>
<el-select
v-model="formOld.cpu"
placeholder="请选择CPU使用量"
>
<el-option
v-for="item in optionsCPU"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<div class="input_right input_right_top"></div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="memory" class="form_item input_has_right">
<div class="form_item_title">申请内存调整为:</div>
<el-select
v-model="formOld.memory"
placeholder="请选择内存使用量"
@change="setContainerGroup(1)"
>
<el-option
v-for="item in optionsRAM"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<div class="input_right input_right_top">GB</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
prop="containerGroup"
class="form_item input_has_right"
>
<div class="form_item_title">申请容器组调整为:</div>
<el-input-number
v-model="formOld.containerGroup"
controls-position="right"
:min="0"
:max="24"
placeholder="取值范围[0,24]"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="24" v-if="dataDiskList.length != 0">
<el-form-item class="form_item input_has_right">
<div class="form_item_title_1">调整数据盘:</div>
<table-um
ref="apply_service_state_table"
:headers="dataDiskHeaders"
:stripe="true"
:datas="dataDiskList"
@primary-del="delItem"
:maxheight="260"
size="small"
class="disk__table"
></table-um>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="form_item nobottom">
<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="8">
<el-form-item class="form_item input_has_right nobottom">
<el-input-number
v-model="formOld.dataDisk"
controls-position="right"
:min="0"
:max="1000"
placeholder="请选择增加数据盘的数量"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item class="form_item input_has_right nobottom">
<el-input-number
v-model="formOld.perDataDisk"
controls-position="right"
:min="0"
:max="1000"
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>
<el-col :span="24">
<div class="now_spec">当前规格:</div>
<div class="now_spec_cards">
<div
class="now_rqz_card"
v-for="(item, index) in rqzArr"
:key="index + 'rqz'"
>
<img
class="now_rqz_card_img"
:src="require('@/assets/imgs/' + item.src + '.png')"
/>
<span class="now_rqz_card_title">
{{ item.title }}
</span>
<div class="now_rqz_card_val_div">
<span class="now_rqz_card_val">
最高&nbsp;{{ item.max }}&nbsp;{{
item.title == "CPU" ? "" : "GB"
}}
&nbsp;&nbsp;&nbsp;&nbsp;
</span>
<span class="now_rqz_card_val">
默认&nbsp;{{ item.default }}&nbsp;{{
item.title == "CPU" ? "" : "GB"
}}
</span>
</div>
</div>
</div>
</el-col>
<el-col :span="24">
<div class="form_item_title">CPU:</div>
</el-col>
<el-col :span="8">
<el-form-item
prop="perCPUs"
class="form_item input_has_left_right"
>
<div class="input_left">最高</div>
<el-input-number
v-model="formOld.perCPUs"
controls-position="right"
:min="0"
:max="10"
placeholder="请设置CPU最高使用量"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
prop="perCPU"
class="form_item input_has_left_right"
>
<div class="input_left">默认</div>
<el-input-number
v-model="formOld.perCPU"
controls-position="right"
:min="0"
:max="10"
placeholder="请设置CPU默认使用量"
></el-input-number>
<div class="input_right"></div>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="form_item_title">内存:</div>
</el-col>
<el-col :span="8">
<el-form-item
prop="perRAMs"
class="form_item input_has_left_right nobottom"
>
<div class="input_left">最高</div>
<el-input-number
v-model="formOld.perRAMs"
controls-position="right"
:min="0"
:max="10"
placeholder="请设置内存最高使用量"
></el-input-number>
<div class="input_right">GB</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
prop="perRAM"
class="form_item input_has_left_right nobottom"
>
<div class="input_left">默认</div>
<el-input-number
v-model="formOld.perRAM"
controls-position="right"
:min="0"
:max="10"
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>
<el-col :span="24">
<div class="now_spec">当前规格:</div>
<div class="now_spec_card_time">
<div>
<img
class="now_spec_card_time_img"
:src="require('@/assets/imgs/ic_shijian.png')"
/>
<span class="now_spec_card_time_title"
>当前工作区域到期时间</span
>
<span class="now_spec_card_time_val">
{{
helper.dateStringTransform(paramsOld.cloud_end_time)
}}
</span>
</div>
</div>
</el-col>
<el-col :span="16">
<el-form-item class="form_item input_has_right">
<div class="form_item_title">申请续期:</div>
<el-input-number
v-model="formOld.appDuration"
controls-position="right"
:min="1"
:max="1000"
></el-input-number>
<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>
<info-list
:list_arr="docTemplate"
class="doc_template"
></info-list>
<upload-file
:multiple="false"
:unique="false"
:max="1"
type="zip"
:readOnly="false"
:drag="true"
@getNewList="getNewListOld"
class="up_f"
></upload-file>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</el-tab-pane>
</el-tabs>
</block-radius>
<block-radius v-if="!(activeName == 1 && !formShow)">
<div class="btn_footer fyzj_item">
<div class="fyzj">
<p class="fyzj_p">
<span v-if="getSumCoin > user_info.account_balance" class="yebz">
余额不足,请联系超级管理员进行充值
</span>
费用总计:<span class="fyzj_span">
{{ getSumCoin }}
</span>
<span class="fyzj_qian">金币</span>
</p>
<p class="ckfymx">
<span @click="dialogFymx = true" class="ckfymx_a">
查看费用明细
</span>
<span class="ckfymx_qian"
>账户余额:{{ user_info.account_balance }} 金币</span
>
</p>
</div>
<el-button
:class="
getSumCoin <= user_info.account_balance ? 'submit' : 'nosubmit'
"
:disabled="getSumCoin > user_info.account_balance"
@click="submitApp"
>
提交申请
</el-button>
</div>
</block-radius>
<el-dialog
title="申请信息确认"
:visible.sync="dialogVisible"
width="580px"
class="cloud_dia"
>
<el-row>
<el-col :span="24">
<span class="dia_item_title">申请组织:</span>
<span class="dia_item_val">{{ diaForm.department_name }}</span>
</el-col>
<el-col :span="10" v-if="diaForm.link_man">
<span class="dia_item_title">组织联系人:</span>
<span class="dia_item_val">{{ diaForm.link_man }}</span>
</el-col>
<el-col :span="10" v-if="diaForm.phone">
<span class="dia_item_title">联系电话:</span>
<span class="dia_item_val">{{ diaForm.phone }}</span>
</el-col>
<el-col :span="10">
<span class="dia_item_title">申请类型:</span>
<span class="dia_item_val">
{{ activeName == 0 ? "新资源申请" : "已有资源升级" }}
</span>
</el-col>
<el-col :span="10" v-if="activeName == '1'">
<span class="dia_item_title">工作区域名称:</span>
<span class="dia_item_val">{{ diaForm.namespace }}</span>
</el-col>
<el-col :span="14" v-if="activeName == '0' && diaForm.apply_file_name">
<span class="dia_item_title">上传申请文件:</span>
<span class="dia_item_val">{{ diaForm.apply_file_name }}</span>
</el-col>
<el-col
:span="24"
v-else-if="activeName == '1' && diaForm.apply_file_name"
>
<span class="dia_item_title">上传申请文件:</span>
<span class="dia_item_val">{{ diaForm.apply_file_name }}</span>
</el-col>
<el-col :span="24">
<div class="dia_block" v-if="activeName == 0">
<span class="dia_item_all_title">基本信息:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">工作区域名称:</span>
<span class="dia_block_item_val">{{ diaForm.namespace }}</span>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">中文名称:</span>
<span class="dia_block_item_val">{{ diaForm.workplace }}</span>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">描述信息:</span>
<span class="dia_block_item_val">
{{ diaForm.workplacedesc }}
</span>
</div>
</div>
<span class="dia_item_all_title">工作区域申请规格:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">CPU:</span>
<span class="dia_block_item_val">{{ diaForm.cpu }}</span>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">内存:</span>
<span class="dia_block_item_val">{{ diaForm.memory }}</span>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">容器组:</span>
<span class="dia_block_item_val"
>{{ diaForm.containerGroup }}</span
>
</div>
<div
class="dia_block_item_in"
v-if="
diaForm.dataDisk &&
diaForm.perDataDisk &&
Number(diaForm.dataDisk) != 0 &&
Number(diaForm.perDataDisk) != 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">
<div class="dia_block_item_in">
<span class="dia_block_item_title">CPU:</span>
<p class="dia_block_item_val">
<span class="val_has_2"
>最高&nbsp;{{ diaForm.perCPUs }}</span
>
<span class="val_has_2"
>默认&nbsp;{{ diaForm.perCPU }}</span
>
</p>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">内存:</span>
<p class="dia_block_item_val">
<span class="val_has_2"
>最高&nbsp;{{ diaForm.perRAMs }}GB</span
>
<span class="val_has_2"
>默认&nbsp;{{ diaForm.perRAM }}GB</span
>
</p>
</div>
</div>
<span class="dia_item_all_title">申请时长:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">申请时长</span>
<span class="dia_block_item_val">
{{ diaForm.appDuration
}}{{ diaForm.durType == 1 ? "个月" : "" }}
</span>
</div>
</div>
</div>
<div v-else>
<span class="dia_item_title margin_top_10">原规格:</span>
<div class="dia_block">
<span class="dia_item_all_title">工作区域:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">CPU:</span>
<span class="dia_block_item_val">{{ paramsOld.cpu }}</span>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">内存:</span>
<span class="dia_block_item_val"
>{{ paramsOld.memory }}GB</span
>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">容器组:</span>
<span class="dia_block_item_val"
>{{ paramsOld.containers }}</span
>
</div>
</div>
<span class="dia_item_all_title">单个容器组规格:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">CPU:</span>
<p class="dia_block_item_val">
<span class="val_has_2"
>最高&nbsp;{{ paramsOld.one_cpu_max }}</span
>
<span class="val_has_2"
>默认&nbsp;{{ paramsOld.one_cpu_min }}</span
>
</p>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">内存:</span>
<p class="dia_block_item_val">
<span class="val_has_2"
>最高&nbsp;{{ paramsOld.one_memory_max }}GB</span
>
<span class="val_has_2"
>默认&nbsp;{{ paramsOld.one_memory_min }}GB</span
>
</p>
</div>
</div>
<span class="dia_item_all_title">申请时长:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">到期时间:</span>
<span class="dia_block_item_val">
{{ helper.dateStringTransform(paramsOld.cloud_end_time) }}
</span>
</div>
</div>
</div>
<span class="dia_item_title margin_top_10">调整至:</span>
<div class="dia_block">
<span class="dia_item_all_title">工作区域:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">CPU:</span>
<span class="dia_block_item_val">{{ diaForm.cpu }}</span>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">内存:</span>
<span class="dia_block_item_val">{{ diaForm.memory }}GB</span>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">容器组:</span>
<span class="dia_block_item_val"
>{{ diaForm.containerGroup }}</span
>
</div>
<div
class="dia_block_item_in"
v-if="
diaForm.dataDisk &&
diaForm.perDataDisk &&
Number(diaForm.dataDisk) != 0 &&
Number(diaForm.perDataDisk) != 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="delDataDiskList.length != 0"
>
<span class="dia_block_item_title">删除数据盘:</span>
<span class="dia_block_item_val">
{{
delDataDiskList
.map((item) => {
return item.name;
})
.join("")
}}
</span>
</div>
</div>
<span class="dia_item_all_title">单个容器组规格:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">CPU</span>
<p class="dia_block_item_val">
<span class="val_has_2">
最高&nbsp;{{ diaForm.perCPUs }}
</span>
<span class="val_has_2">
默认&nbsp;{{ diaForm.perCPU }}
</span>
</p>
</div>
<div class="dia_block_item_in">
<span class="dia_block_item_title">内存:</span>
<p class="dia_block_item_val">
<span class="val_has_2">
最高&nbsp;{{ diaForm.perRAMs }}GB
</span>
<span class="val_has_2">
默认&nbsp;{{ diaForm.perRAM }}GB
</span>
</p>
</div>
</div>
<span class="dia_item_all_title">申请续期:</span>
<div class="dia_block_item">
<div class="dia_block_item_in">
<span class="dia_block_item_title">是否续期:</span>
<span class="dia_block_item_val">
{{
diaForm.appDuration && diaForm.appDuration != 0
? ""
: ""
}}
</span>
</div>
<div
class="dia_block_item_in"
v-if="diaForm.appDuration && diaForm.appDuration != 0"
>
<span class="dia_block_item_title">续期时长:</span>
<span class="dia_block_item_val">
{{ diaForm.appDuration }}
{{ diaForm.durType == 1 ? "个月" : "" }}
</span>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<div class="fyzj_dia">
<div class="fyzj_dia_init">
<p v-if="activeName == '1'" class="fyzj_2">
升级费用:<span class="fyzj_2_num">{{ amounts_payable }} 金币</span>
</p>
<!-- <p v-if="activeName == '1'" class="fyzj_2">
原规格抵扣费用:<span class="fyzj_2_num">2000 金币</span>
</p> -->
<div class="fyzj_1">
费用总计:
<p>
<span class="fyzj_1_num"> {{ getSumCoin }} </span
><span class="fyzj_1_jb">金币</span>
</p>
</div>
<p class="fyzj_2">
账户余额:<span class="fyzj_2_num"
>{{ user_info.account_balance }} 金币</span
>
</p>
</div>
<div class="clear_xxx"></div>
</div>
<div class="btn_footer">
<el-button class="cancel" @click="cancel">取消</el-button>
<el-button class="submit1" @click="determineSubmit">确定提交</el-button>
</div>
</el-dialog>
<el-dialog
title="费用明细"
:visible.sync="dialogFymx"
width="580px"
class="cloud_dia"
>
<div class="fymx_ts">
<i class="el-icon-warning-outline"></i>
<p>
计费说明:云资源服务依据用户选取的CPU、内存、数据盘个数及大小进行分级计费,具体计费规
则请线下联系技术支持人员咨询。
</p>
</div>
<div v-if="activeName == '1'" class="sjfy_title">升级费用</div>
<table-um
ref="apply_service_state_table"
:headers="jifeiHeader"
:stripe="true"
:datas="jifeiList1"
:maxheight="260"
></table-um>
<!-- <div v-if="activeName == '1'" class="sjfy_title">
原规格抵扣费用
<el-tooltip
class="tool_item"
effect="dark"
content="未用完的按剩余时间及原购买规格价格核算后优先抵扣本订单金额,超出部分退还至用户账户"
placement="top"
offset="5"
>
<img class="tool_img" src="@/assets/imgs/tool_ic_tips.png" />
</el-tooltip>
</div>
<table-um
v-if="activeName == '1'"
ref="apply_service_state_table"
:headers="jifeiHeader2"
:stripe="true"
:datas="jifeiList2"
:maxheight="260"
></table-um> -->
</el-dialog>
<ApassDialog
ref="dialog"
msg="确认删除该数据盘吗?"
:submit="dialogSubmit"
></ApassDialog>
</div>
</template>
<script>
import BlockRadius from "@/components/general/block-radius";
import UploadFile from "@/components/general/upload_file";
import TableUm from "@/components/table/table-um";
import InfoList from "@/components/infoList";
import ApassDialog from "@/components/apass-dialog";
import helper from "@/services/helper.js";
export default {
components: {
BlockRadius,
UploadFile,
TableUm,
InfoList,
ApassDialog,
},
props: {
name: { type: String, default: "" },
},
computed: {
getSumCoin() {
let sumCM = 0;
let sumDisk = 0;
let a_deductions = 0;
if (this.activeName == "0") {
a_deductions = this.deductions;
if (this.cpu_memory && this.cpu_memory.length != 0) {
if (this.formNew.cpu == "8") {
if (this.formNew.memory == "16") {
let priceObj = this.cpu_memory.find((item) => {
return item.cpu == 8 && item.memory == 16;
});
this.eci_single_money = Number(priceObj.price);
sumCM += Number(priceObj.price);
} else if (this.formNew.memory == "32") {
let priceObj = this.cpu_memory.find((item) => {
return item.cpu == 8 && item.memory == 32;
});
this.eci_single_money = Number(priceObj.price);
sumCM += Number(priceObj.price);
}
} else if (this.formNew.cpu == "16") {
if (this.formNew.memory == "32") {
let priceObj = this.cpu_memory.find((item) => {
return item.cpu == 16 && item.memory == 32;
});
this.eci_single_money = Number(priceObj.price);
sumCM += Number(priceObj.price);
} else if (this.formNew.memory == "64") {
let priceObj = this.cpu_memory.find((item) => {
return item.cpu == 16 && item.memory == 64;
});
this.eci_single_money = Number(priceObj.price);
sumCM += Number(priceObj.price);
}
}
}
sumCM = sumCM * Number(this.formNew.appDuration);
if (
this.formNew.dataDisk >= 1 &&
this.formNew.perDataDisk >= 1 &&
this.formNew.appDuration >= 1
) {
if (this.hard_disk && this.hard_disk.length != 0) {
this.disk_single_money = Number(this.hard_disk[0].price);
sumDisk +=
Number(this.formNew.dataDisk) *
Number(this.formNew.perDataDisk) *
Number(this.formNew.appDuration) *
Number(this.hard_disk[0].price);
}
this.jifeiList1[2] = {
name: "数据盘",
num: `${this.formNew.dataDisk}个数据盘,每个数据盘${this.formNew.perDataDisk}GB`,
time: `${this.formNew.appDuration}个月`,
sum: `${sumDisk}金币`,
};
} else {
this.jifeiList1.splice(2);
}
this.jifeiList1[0].num = `${
this.formNew.cpu >= 1 ? this.formNew.cpu : 0
}核+${this.formNew.memory >= 1 ? this.formNew.memory : 0}G`;
this.jifeiList1[0].time = `${
this.formNew.appDuration >= 1 ? this.formNew.appDuration : 0
}个月`;
this.jifeiList1[0].sum = `${sumCM}金币`;
this.jifeiList1[1].num = `${
this.formNew.containerGroup >= 1 ? this.formNew.containerGroup : 0
}个`;
this.jifeiList1[1].time = `${
this.formNew.appDuration >= 1 ? this.formNew.appDuration : 0
}个月`;
} else if (this.activeName == "1") {
a_deductions = this.deductions;
if (this.cpu_memory && this.cpu_memory.length != 0) {
if (this.formOld.cpu == "8") {
if (this.formOld.memory == "16") {
let priceObj = this.cpu_memory.find((item) => {
return item.cpu == 8 && item.memory == 16;
});
this.eci_single_money = Number(priceObj.price);
sumCM += Number(priceObj.price);
} else if (this.formOld.memory == "32") {
let priceObj = this.cpu_memory.find((item) => {
return item.cpu == 8 && item.memory == 32;
});
this.eci_single_money = Number(priceObj.price);
sumCM += Number(priceObj.price);
}
} else if (this.formOld.cpu == "16") {
if (this.formOld.memory == "32") {
let priceObj = this.cpu_memory.find((item) => {
return item.cpu == 16 && item.memory == 32;
});
this.eci_single_money = Number(priceObj.price);
sumCM += Number(priceObj.price);
} else if (this.formOld.memory == "64") {
let priceObj = this.cpu_memory.find((item) => {
return item.cpu == 16 && item.memory == 64;
});
this.eci_single_money = Number(priceObj.price);
sumCM += Number(priceObj.price);
}
}
}
sumCM = sumCM * Number(this.formOld.appDuration);
if (
this.formOld.dataDisk >= 1 &&
this.formOld.perDataDisk >= 1 &&
this.formOld.appDuration >= 1
) {
if (this.hard_disk && this.hard_disk.length != 0) {
this.disk_single_money = Number(this.hard_disk[0].price);
sumDisk +=
Number(this.formOld.dataDisk) *
Number(this.formOld.perDataDisk) *
Number(this.formOld.appDuration) *
Number(this.hard_disk[0].price);
}
this.jifeiList1[2] = {
name: "数据盘",
num: `${this.formOld.dataDisk}个数据盘,每个数据盘${this.formOld.perDataDisk}GB`,
time: `${this.formOld.appDuration}个月`,
sum: `${sumDisk}金币`,
};
} else {
this.jifeiList1.splice(2);
}
this.jifeiList1[0].num = `${
this.formOld.cpu >= 1 ? this.formOld.cpu : 0
}核+${this.formOld.memory >= 1 ? this.formOld.memory : 0}G`;
this.jifeiList1[0].time = `${
this.formOld.appDuration >= 1 ? this.formOld.appDuration : 0
}个月`;
this.jifeiList1[0].sum = `${sumCM}金币`;
this.jifeiList1[1].num = `${
this.formOld.containerGroup >= 1 ? this.formOld.containerGroup : 0
}个`;
this.jifeiList1[1].time = `${
this.formOld.appDuration >= 1 ? this.formOld.appDuration : 0
}个月`;
}
// console.log(sumCM, sumDisk)
this.amounts_payable = Number(
(Number(sumCM) + Number(sumDisk)).toFixed(2)
);
// this.total_money = sumCM + sumDisk - a_deductions;
return this.amounts_payable;
},
},
data() {
var checkName = (rule, value, callback) => {
let self = this;
let reg = new RegExp(/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/);
if (value.length > 63) {
callback(new Error("命名空间最长不超过63位"));
} else if (!reg.test(value)) {
callback(new Error("小写字母或数字开头,可以由小写字母、数字、- 组成"));
} else {
self.$api.serviceShop
.checkNameSpaceCouldUse({ id: value })
.then(({ data }) => {
if (data.success === 1) {
if (data.data === 1) {
callback();
} else if (data.data === -1) {
callback(new Error("命名空间名称已存在"));
}
}
})
.catch((error) => {
console.log(error);
callback(new Error("命名空间名称验证失败"));
});
}
};
return {
total_money: 0,
disk_single_money: 0,
eci_single_money: 0,
amounts_payable: 0,
deductions: 0,
helper,
form: {
department_name: "",
phone: "",
link_man: "",
},
ruleBasis: {
link_man: [
{ required: true, message: "请输入部门联系人", trigger: "blur" },
{ max: 6, message: "长度应小于6个字符", trigger: "blur" },
],
phone: [
{ required: true, message: "请输入手机号码", trigger: "blur" },
{
pattern: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/,
message: "请输入正确的手机号码",
},
],
},
activeName: "0",
formNew: {
namespace: "",
workplace: "",
workplacedesc: "",
cpu: "",
memory: "",
containerGroup: undefined,
dataDisk: undefined,
perDataDisk: undefined,
perCPUs: undefined,
perCPU: undefined,
perRAMs: undefined,
perRAM: undefined,
appDuration: 1,
durType: 1,
apply_file: "",
apply_file_name: "",
store_type: "nfs-client",
},
ruleNew: {
namespace: [
{ required: true, message: "请输入工作区域名称", trigger: "blur" },
{ max: 16, message: "长度应小于16个字符", trigger: "blur" },
{ validator: checkName, trigger: "blur" },
],
workplace: [
{ required: true, message: "请输入中文名称", trigger: "blur" },
{ max: 16, message: "长度应小于16个字符", trigger: "blur" },
],
workplacedesc: [
{ required: true, message: "请输入描述信息", trigger: "blur" },
{ max: 100, message: "长度应小于100个字符", trigger: "blur" },
],
cpu: [
{ required: true, message: "请选择CPU使用量", trigger: "change" },
],
memory: [
{ required: true, message: "请选择内存使用量", trigger: "change" },
],
containerGroup: [
{ required: true, message: "请输入容器组规格", trigger: "blur" },
],
perCPUs: [
{ required: true, message: "请输入CPU最大使用量", trigger: "blur" },
],
perCPU: [
{ required: true, message: "请输入CPU默认使用量", trigger: "blur" },
],
perRAMs: [
{ required: true, message: "请输入内存最大使用量", trigger: "blur" },
],
perRAM: [
{ required: true, message: "请输入内存默认使用量", trigger: "blur" },
],
appDuration: [
{ required: true, message: "请输入申请时长", trigger: "blur" },
],
},
durationOptions: [
{ value: 1, label: "" },
{ value: 2, label: "" },
],
workSpace: "",
workSpaceId: "",
workSpaceOptions: [],
optionsCPU: [
{ value: "8", label: "8" },
{ value: "16", label: "16" },
],
optionsRAM: [],
options_store_type: [
{ value: "nfs-client", label: "nfs-client" },
{ value: "rook-ceph-block", label: "rook-ceph-block" },
],
formShow: false,
specArr: [
{ title: "CPU", val: "0", src: "ic_CPU" },
{ title: "内存", val: "0", src: "ic_neicun" },
{ title: "容器", val: "0", src: "ic_rongqi" },
],
rqzArr: [
{ title: "CPU", max: "4", default: "2", src: "ic_CPU" },
{ title: "内存", max: "4", default: "2", src: "ic_neicun" },
],
docTemplate: [
{
title: "",
info: "工作区域申请文件标准模板.xlsx",
url: "static/工作区域申请文件模板.xlsx",
type: "down",
},
],
formOld: {
cpu: "",
memory: "",
containerGroup: undefined,
dataDisk: undefined,
perDataDisk: undefined,
perCPUs: undefined,
perCPU: undefined,
perRAMs: undefined,
perRAM: undefined,
appDuration: 1,
durType: 1,
apply_file: "",
apply_file_name: "",
store_type: "nfs-client",
},
paramsOld: {},
ruleOld: {
namespace: [
{ required: true, message: "请输入工作区域名称", trigger: "blur" },
],
workplace: [
{ required: true, message: "请输入中文名称", trigger: "blur" },
],
workplacedesc: [
{ required: true, message: "请输入描述信息", trigger: "blur" },
],
cpu: [
{ required: true, message: "请选择CPU使用量", trigger: "change" },
],
memory: [
{ required: true, message: "请选择内存使用量", trigger: "change" },
],
containerGroup: [
{ required: true, message: "请输入容器组规格", trigger: "blur" },
],
perCPUs: [
{ required: true, message: "请输入CPU最大使用量", trigger: "blur" },
],
perCPU: [
{ required: true, message: "请输入CPU默认使用量", trigger: "blur" },
],
perRAMs: [
{ required: true, message: "请输入内存最大使用量", trigger: "blur" },
],
perRAM: [
{ required: true, message: "请输入内存默认使用量", trigger: "blur" },
],
},
dialogVisible: false,
diaForm: {},
dataDiskHeaders: [
{
label: "磁盘名称",
prop: "name",
align: "center",
},
{
label: "数据盘容量",
prop: "disk_cap",
align: "center",
},
{
label: "部署的应用",
prop: "app_name",
align: "center",
},
{
label: "操作",
type: "Button",
align: "center",
btnList: [
{
type: "primary-del",
label: "删除",
},
],
},
],
dataDiskList: [],
delDataDiskList: [],
del_item: {},
dialogFymx: false,
jifeiHeader: [
{
label: "名称",
prop: "name",
align: "center",
},
{
label: "数量规格",
prop: "num",
align: "center",
},
{
label: "购买时长",
prop: "time",
align: "center",
},
{
label: "小计",
prop: "sum",
align: "center",
},
],
jifeiHeader2: [
{
label: "名称",
prop: "name",
align: "center",
},
{
label: "数量规格",
prop: "num",
align: "center",
},
{
label: "购买时长",
prop: "time",
align: "center",
},
{
label: "小计",
prop: "sum",
align: "center",
type: "html",
getHtml: (str) => {
return `<span style="color: #e15260">-${str.sum}</span>`;
},
},
],
jifeiList1: [
{ name: "CPU+内存", num: "0核+0G", time: "0个月", sum: "0金币" },
{ name: "容器组", num: "0个", time: "0个月", sum: "-" },
// { name: "数据盘", num: "0个数据盘,每个数据盘0GB", time: "0个月", sum: "2000金币" },
],
jifeiList2: [
{ name: "CPU+内存", num: "0核+0G", time: "0个月", sum: "0金币" },
{ name: "容器组", num: "0个", time: "0个月", sum: "-" },
{
name: "数据盘",
num: "0个数据盘,每个数据盘0GB",
time: "0个月",
sum: "金币",
},
],
cpu_memory: [],
hard_disk: [],
user_info: {},
};
},
mounted() {
this.getUser();
this.getNameSpaceList();
this.getSpecifications();
this.getUserCoins();
},
methods: {
getUserCoins() {
this.$api.user.getUserCoins().then((response) => {
if (response.data.success == 1) {
this.user_info = response.data.data;
}
});
},
getQueryId() {
if (this.$route.query.namespace && this.$route.query.namespace != "") {
this.activeName = "1";
let index = this.workSpaceOptions.findIndex((item) => {
return item.namespace == this.$route.query.namespace;
});
if (index != -1) {
let paramsOld = this.workSpaceOptions[index];
this.workSpace = index;
this.workSpaceId = paramsOld.Id;
this.paramsOld = paramsOld;
this.formOld.namespace = paramsOld.namespace;
this.formOld.workplace = paramsOld.workplace;
this.formOld.workplacedesc = paramsOld.workplacedesc;
this.formOld.cpu = paramsOld.cpu;
this.formOld.memory = paramsOld.memory;
this.formOld.containerGroup = paramsOld.containers;
this.specArr[0].val = paramsOld.cpu;
this.specArr[1].val = paramsOld.memory;
this.specArr[2].val = paramsOld.containers;
this.formOld.dataDisk = "";
this.formOld.perDataDisk = "";
this.formOld.perCPUs = paramsOld.one_cpu_max;
this.formOld.perCPU = paramsOld.one_cpu_min;
this.formOld.perRAMs = paramsOld.one_memory_max;
this.formOld.perRAM = paramsOld.one_memory_min;
this.rqzArr[0].max = paramsOld.one_cpu_max;
this.rqzArr[0].default = paramsOld.one_cpu_min;
this.rqzArr[1].max = paramsOld.one_memory_max;
this.rqzArr[1].default = paramsOld.one_memory_min;
this.formOld.store_type = paramsOld.store_type;
this.dataDiskList = paramsOld.disk_list || [];
this.dataDiskList.forEach((item, index) => {
item.name = `磁盘${index + 1}`;
});
this.form.link_man = paramsOld.apply_connect_username;
this.form.phone = paramsOld.apply_connect_mobile;
this.formShow = true;
}
}
},
tabClick() {},
getNewList(val) {
this.formNew.apply_file_name = val[0].name;
this.formNew.apply_file = val[0].url;
},
getNewListOld(val) {
this.formOld.apply_file_name = val[0].name;
this.formOld.apply_file = val[0].url;
},
handleChange() {},
getSpecifications() {
this.$api.serviceShop.getSpecifications().then((response) => {
if (response.data.success == 1) {
this.cpu_memory = response.data.data.cpu_memory;
this.hard_disk = response.data.data.hard_disk;
} else {
this.$message({
message: "获取资源规格失败,请刷新网页",
type: "error",
});
}
});
},
getForm(val) {
if (val !== "") {
let paramsOld = this.workSpaceOptions[val];
this.workSpaceId = paramsOld.Id;
this.paramsOld = paramsOld;
this.formOld.namespace = paramsOld.namespace;
this.formOld.workplace = paramsOld.workplace;
this.formOld.workplacedesc = paramsOld.workplacedesc;
this.formOld.cpu = paramsOld.cpu;
this.formOld.memory = paramsOld.memory;
this.formOld.containerGroup = paramsOld.containers;
this.specArr[0].val = paramsOld.cpu;
this.specArr[1].val = paramsOld.memory;
this.specArr[2].val = paramsOld.containers;
this.formOld.dataDisk = "";
this.formOld.perDataDisk = "";
this.formOld.perCPUs = paramsOld.one_cpu_max;
this.formOld.perCPU = paramsOld.one_cpu_min;
this.formOld.perRAMs = paramsOld.one_memory_max;
this.formOld.perRAM = paramsOld.one_memory_min;
this.rqzArr[0].max = paramsOld.one_cpu_max;
this.rqzArr[0].default = paramsOld.one_cpu_min;
this.rqzArr[1].max = paramsOld.one_memory_max;
this.rqzArr[1].default = paramsOld.one_memory_min;
this.formOld.store_type = paramsOld.store_type;
this.dataDiskList = paramsOld.disk_list || [];
this.dataDiskList.forEach((item, index) => {
item.name = `磁盘${index + 1}`;
});
this.form.link_man = paramsOld.apply_connect_username;
this.form.phone = paramsOld.apply_connect_mobile;
this.formShow = true;
this.jifeiList2 = [
{
name: "CPU+内存",
num: `${this.formOld.cpu}核+${this.formOld.memory}G"`,
time: "0个月",
sum: "0金币",
},
{
name: "容器组",
num: `${this.formOld.containerGroup}个`,
time: "0个月",
sum: "",
},
{
name: "数据盘",
num: `${this.dataDiskList.length}个数据盘,共计${this.dataDiskList.length}GB"`,
time: "0个月",
sum: "2000金币",
},
];
} else {
this.formShow = false;
}
},
submitApp() {
let formParams = {};
if (this.activeName == 0) {
this.$refs["formNew"].validate((valid) => {
if (valid) {
formParams = this.formNew;
this.dialogVisible = true;
this.diaForm = Object.assign(formParams, this.form);
} else {
console.log("error submit!!");
return false;
}
});
} else if (this.activeName == 1) {
this.$refs["formOld"].validate((valid) => {
if (valid) {
formParams = this.formOld;
this.dialogVisible = true;
this.diaForm = Object.assign(formParams, this.form);
} else {
console.log("error submit!!");
return false;
}
});
}
},
checkNamespace(namespace, cb) {
this.$api.serviceShop
.checkNameSpaceCouldUse({ id: namespace })
.then(({ data }) => {
if (data.success === 1) {
if (data.data === 1) {
typeof cb === "function" && cb();
} else if (data.data === -1) {
this.$message({
message: `命名空间名称已存在`,
type: "error",
});
}
}
})
.catch((error) => {
console.log(error);
this.$message({
message: `命名空间名称验证失败`,
type: "error",
});
});
},
determineSubmit() {
if (this.activeName == 0) {
this.checkNamespace(this.formNew.namespace, () => {
let query = {
resource_info: {
namespace: this.formNew.namespace,
workplace: this.formNew.workplace,
workplacedesc: this.formNew.workplacedesc,
},
resource_apply: {
apply_file: this.formNew.apply_file,
cpu: Number(this.formNew.cpu),
duration: this.formNew.appDuration,
duration_unit: Number(this.formNew.durType),
apply_connect_username: this.form.link_man,
apply_connect_mobile: this.form.phone,
memory: Number(this.formNew.memory),
containers: this.formNew.containerGroup,
one_cpu_min: this.formNew.perCPU ? this.formNew.perCPU : 0,
one_cpu_max: this.formNew.perCPUs ? this.formNew.perCPUs : 0,
one_memory_min: this.formNew.perRAM ? this.formNew.perRAM : 0,
one_memory_max: this.formNew.perRAMs ? this.formNew.perRAMs : 0,
},
disks: [
{
disk_num: this.formNew.dataDisk ? this.formNew.dataDisk : 0,
disk_cap: this.formNew.perDataDisk
? this.formNew.perDataDisk
: 0,
store_type: "nfs-client",
},
],
payment: {
// total_money: this.total_money,
disk_single_money: String(this.disk_single_money),
eci_single_money: String(this.eci_single_money),
total_money: String(this.amounts_payable),
},
};
this.$api.serviceShop.applicationCloud(query).then((response) => {
if (response.data.success == 1) {
this.$message({
message: "申请成功",
type: "success",
});
this.$router.push("/user/order_list");
} else {
this.$message({
message: `申请失败,${response.data.errMsg}`,
type: "error",
});
}
});
});
} else {
let query = {
resource_id: this.workSpaceId,
resource_apply: {
apply_file: this.formOld.apply_file,
cpu: Number(this.formOld.cpu),
duration: this.formOld.appDuration,
duration_unit: Number(this.formOld.durType),
apply_connect_username: this.form.link_man,
apply_connect_mobile: this.form.phone,
memory: Number(this.formOld.memory),
containers: this.formOld.containerGroup,
one_cpu_min: this.formOld.perCPU ? this.formOld.perCPU : 0,
one_cpu_max: this.formOld.perCPUs ? this.formOld.perCPUs : 0,
one_memory_min: this.formOld.perRAM ? this.formOld.perRAM : 0,
one_memory_max: this.formOld.perRAMs ? this.formOld.perRAMs : 0,
},
disks: [
{
disk_num: this.formOld.dataDisk ? this.formOld.dataDisk : 0,
disk_cap: this.formOld.perDataDisk ? this.formOld.perDataDisk : 0,
store_type: "nfs-client",
},
],
remove_disks: this.delDataDiskList.map((item) => item.id),
payment: {
// total_money: this.total_money,
disk_single_money: String(this.disk_single_money),
eci_single_money: String(this.eci_single_money),
total_money: String(this.amounts_payable),
},
};
this.$api.serviceShop.updateCloud(query).then((response) => {
if (response.data.success == 1) {
this.$message({
message: "申请调整成功",
type: "success",
});
this.$router.push("/user/order_list");
} else {
this.$message({
message: `申请调整失败,${response.data.errMsg}`,
type: "error",
});
}
});
}
console.log(this.form);
this.dialogVisible = false;
},
cancel() {
this.dialogVisible = false;
},
getUser() {
this.$api.user.getNowUser().then((response) => {
this.form.department_name = response.data.data.department_name;
});
},
getNameSpaceList() {
this.$api.serviceShop.getCloudList().then((response) => {
if (response.data.success == 1) {
this.workSpaceOptions = response.data.data;
this.getQueryId();
}
});
},
delItem(val) {
this.$refs.dialog.show();
this.del_item = val;
},
dialogSubmit() {
let delIndex = this.dataDiskList.findIndex(
(v) => v.id === this.del_item.id
);
this.dataDiskList.splice(delIndex, 1);
this.delDataDiskList.push(this.del_item);
},
setContainerGroup(type) {
if (type == 0) {
if (this.formNew.containerGroup && this.formNew.containerGroup != 0) {
} else {
this.formNew.containerGroup = this.formNew.memory * 3;
}
} else if (type == 1) {
if (this.formOld.containerGroup && this.formOld.containerGroup != 0) {
} else {
this.formOld.containerGroup = this.formOld.memory * 3;
}
}
},
changeCPU(val) {
this.formOld.memory = "";
this.formNew.memory = "";
if (val == "8") {
this.optionsRAM = [
{ value: "16", label: "16" },
{ value: "32", label: "32" },
];
} else if (val == "16") {
this.optionsRAM = [
{ value: "32", label: "32" },
{ value: "64", label: "64" },
];
}
},
},
};
</script>
<style scoped>
.cloud_form {
}
.form_title {
font-size: 16px;
line-height: 16px;
font-weight: bold;
margin: 32px 0 24px;
padding: 0 0 0 15px;
position: relative;
color: #58617a;
}
.form_title::before {
position: absolute;
content: "";
width: 4px;
height: 18px;
background-color: #515fe7;
border-radius: 2px;
left: 0;
top: -1px;
}
.form_item {
width: calc(100%);
}
.form_item_title {
margin: 0 0 12px;
line-height: 14px;
font-size: 14px;
color: #58617a;
}
.form_item_title_1 {
margin: 0;
line-height: 14px;
font-size: 14px;
color: #58617a;
}
.input_has_right {
position: relative;
}
.input_right {
display: inline-block;
width: 60px;
height: 40px;
padding: 0 0 0 15px;
background-color: #edeef4;
border: 1px #e3e5ef solid;
color: #8890a7;
border-radius: 0 6px 6px 0;
position: absolute;
right: 0;
}
.input_has_left_right {
position: relative;
}
.input_left {
display: inline-block;
width: 60px;
height: 40px;
padding: 0 0 0 15px;
background-color: #edeef4;
border: 1px #e3e5ef solid;
color: #8890a7;
border-radius: 6px 0 0 6px;
position: absolute;
left: 0;
}
.input_has_right_select {
position: relative;
}
.input_right_select {
position: absolute;
right: 0;
}
.select_title {
padding: 32px 0 12px;
font-size: 16px;
line-height: 16px;
font-weight: bold;
color: #58617a;
}
.now_spec {
padding: 0 0 12px;
}
.now_spec_cards {
margin-bottom: 24px;
}
.now_spec_card {
display: inline-block;
width: 194px;
height: 40px;
background-color: #f7f8f9;
border-radius: 6px;
line-height: 40px;
padding: 0 20px;
position: relative;
margin-right: 24px;
}
.now_spec_card_title {
color: #6573ae;
margin-left: 10px;
}
.now_spec_card_val {
color: #0d1847;
position: absolute;
right: 20px;
top: 0;
}
.now_spec_card_img {
position: relative;
top: 1px;
}
.now_rqz_card {
display: inline-block;
width: 304px;
height: 40px;
background-color: #f7f8f9;
border-radius: 6px;
line-height: 40px;
padding: 0 20px;
position: relative;
margin-right: 20px;
}
.now_rqz_card_title {
color: #6573ae;
margin-left: 10px;
}
.now_rqz_card_val_div {
color: #0d1847;
position: absolute;
line-height: 40px;
right: 20px;
top: 0;
}
.now_rqz_card_val {
}
.now_rqz_card_img {
position: relative;
top: 1px;
}
.now_spec_card_time {
width: 381px;
height: 40px;
background-color: #f7f8f9;
border-radius: 6px;
line-height: 40px;
padding: 0 20px;
position: relative;
margin-bottom: 24px;
}
.now_spec_card_time_img {
position: relative;
top: 1px;
}
.now_spec_card_time_title {
color: #6573ae;
margin-left: 10px;
}
.now_spec_card_time_val {
color: #0d1847;
position: absolute;
right: 20px;
top: 0;
}
.btn_footer {
display: flex;
justify-content: flex-end;
margin: 0 20px;
}
.btn_footer .submit {
width: 220px;
background-color: #e56600;
color: #f8f9fd;
}
.btn_footer .nosubmit {
width: 220px;
background-color: #a9aec0;
color: #ffffff;
}
.btn_footer .submit1 {
width: 100px;
background-color: #0f2683;
color: #f8f9fd;
}
.cancel {
width: 100px;
background-color: #c3caf8;
color: #0f2683;
}
.dia_item_title {
display: block;
color: #8890a7;
line-height: 24px;
padding: 0 20px;
}
.margin_top_10 {
margin-top: 10px;
}
.dia_item_val {
display: block;
color: #242c43;
line-height: 24px;
margin-bottom: 10px;
width: 90%;
padding: 0 20px;
}
.dia_block {
background-color: #f8f9fd;
border-radius: 8px;
margin: 10px 0;
padding: 20px;
font-size: 14px;
line-height: 22px;
}
.dia_item_all_title {
color: #242c43;
}
.dia_block_item {
padding: 10px 0 0 20px;
}
.dia_block_item_in {
display: flex;
justify-content: space-between;
margin-bottom: 5px;
}
.dia_block_item_title {
color: #8890a7;
width: 120px;
text-align: right;
}
.dia_block_item_val {
color: #242c43;
width: calc(100% - 130px);
}
.val_has_2 {
margin-right: 20px;
}
.doc_template {
margin: 0 0 12px;
}
.up_f {
width: calc(50% - 10px);
}
.fyzj_item {
position: relative;
}
.fyzj {
color: #242c43;
font-size: 18px;
margin-right: 10px;
text-align: right;
position: absolute;
top: -10px;
right: 230px;
}
.fyzj_p {
margin-bottom: 6px;
}
.fyzj_span {
color: #e56600;
font-size: 24px;
font-weight: bold;
}
.fyzj_qian {
color: #e56600;
font-size: 14px;
}
.ckfymx {
color: #a9aec0;
font-size: 14px;
}
.ckfymx_a {
color: #515fe7;
cursor: pointer;
}
.ckfymx_qian {
display: inline-block;
margin-left: 20px;
position: relative;
}
.ckfymx_qian::after {
content: "";
position: absolute;
width: 1px;
height: 16px;
background: #bcc1d0;
left: -10px;
top: 2px;
}
.yebz {
color: #e15260;
font-size: 18px;
margin-right: 20px;
}
.fymx_ts {
background-color: #f4f7fc;
border-radius: 8px;
padding: 12px;
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.fymx_ts i {
position: relative;
top: 4px;
color: #8890a7;
}
.fymx_ts p {
width: calc(100% - 22px);
color: #58617a;
}
.sjfy_title {
margin: 10px 20px;
position: relative;
color: #242c43;
font-size: 16px;
}
.sjfy_title::after {
content: "";
position: absolute;
width: 8px;
height: 8px;
background-color: #515fe7;
border-radius: 50%;
left: -15px;
top: 8px;
}
.tool_img {
width: 16px;
height: 16px;
position: relative;
top: 2px;
left: 2px;
}
.fyzj_dia {
height: 100%;
}
.fyzj_dia_init {
float: right;
text-align: right;
padding: 10px;
}
.fyzj_1 {
color: #242c43;
font-size: 18px;
display: flex;
justify-content: space-between;
align-items: flex-end;
}
.fyzj_1_num {
color: #e56600;
font-size: 24px;
font-weight: bold;
}
.fyzj_1_jb {
color: #e56600;
font-size: 14px;
}
.fyzj_2 {
min-width: 140px;
color: #8890a7;
font-size: 14px;
margin: 10px 0;
display: flex;
justify-content: space-between;
}
.fyzj_2_num {
color: #58617a;
}
.clear_xxx {
clear: both;
}
.disk__table {
margin-bottom: 0;
}
</style>
<style>
.form_block .el-input .el-input__inner {
background-color: #f7f8f9;
color: #242c43;
}
.cloud_form .el-input {
width: 100%;
}
.cloud_form .input_has_right .el-input {
width: calc(100% - 60px);
}
.cloud_form .input_has_left_right .el-input {
width: calc(100% - 120px);
margin-left: 60px;
}
.cloud_form .input_has_left_right .el-input__inner {
border-radius: 0;
color: #242c43;
}
.cloud_form .input_right_top {
top: 26px;
}
.cloud_form .el-select {
width: 100%;
}
.cloud_form .el-input .el-input__inner {
background-color: #f7f8f9;
color: #242c43;
}
.cloud_form .el-input-number {
width: calc(100% - 60px);
}
.cloud_form .el-input-number .el-input {
width: 100%;
}
.cloud_form .input_has_left_right .el-input-number .el-input {
width: calc(100% - 60px);
margin-left: 60px;
}
.cloud_form .el-input-number .el-input__inner {
text-align: left;
color: #242c43;
}
.cloud_form .el-textarea {
width: 100%;
}
.cloud_form .el-textarea .el-textarea__inner {
background-color: #f7f8f9;
border-radius: 6px;
color: #242c43;
}
.form_item .el-form-item__content {
width: 100%;
}
.form_item.el-form-item {
margin-bottom: 24px;
}
.form_item.el-form-item.nobottom {
margin-bottom: 0;
}
.input_has_right .el-input__inner {
border-radius: 6px 0 0 6px;
color: #242c43;
}
.cloud_form .input_has_right_select .el-input-number {
width: calc(100% - 100px);
}
.input_has_right_select .el-select {
width: 100px;
}
.input_has_right_select .el-select .el-input.is-focus .el-input__inner {
border-color: #0f2683;
}
.input_has_right_select .el-select .el-input__inner:focus {
border-color: #0f2683;
}
.input_has_right_select .el-input__inner {
border-radius: 6px 0 0 6px;
color: #242c43;
}
.input_has_right_select .input_right_select.el-select .el-input {
width: 100px;
background-color: #0f2683;
color: #ffffff;
border-radius: 0 6px 6px 0;
}
.input_has_right_select
.input_right_select.el-select
.el-input
.el-input__inner {
border-radius: 0 6px 6px 0;
color: #ffffff;
}
.input_right_select .el-input .el-input__inner {
background-color: #0f2683;
color: #242c43;
}
.cloud_form .el-input-number .el-input-number__increase,
.cloud_form .el-input-number .el-input-number__decrease {
border-bottom: 0;
border-left: 0;
width: 29px;
}
.cloud_dia .el-dialog__header {
border-bottom: 1px solid #edf0ff;
}
.cloud_dia .el-dialog__title {
font-weight: 700;
}
.cloud_dia .el-dialog__body {
text-align: left;
font-size: 14px;
}
.cloud_form .el-input__prefix,
.el-input__suffix {
text-align: right;
right: 2px;
}
.cloud_form .el-input-number.is-controls-right .el-input__inner {
padding-left: 15px;
padding-right: 32px;
}
.up_f .el-upload {
width: 100%;
}
.up_f .el-upload-dragger {
width: 100%;
}
.shop_cloud .el-tabs__header {
margin: 0;
}
</style>
<template> <template>
<div class="shop_cloud"> <div>
<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> <el-breadcrumb-item :to="{ path: '/shop' }">服务超市</el-breadcrumb-item>
<el-breadcrumb-item>{{ name }}</el-breadcrumb-item> <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
<block-radius :paddingNum="24"> <block-radius>
<el-form <el-form
ref="form" ref="form"
:inline="true" :inline="true"
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
:model="form" :model="form"
class="form_block" class="form_block"
> >
<el-row :gutter="24"> <el-row>
<el-col :span="24"> <el-col :span="12">
<el-form-item class="form_item"> <el-form-item class="form_item">
<div class="form_item_title">申请组织:</div> <div class="form_item_title">申请组织:</div>
<el-input <el-input
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item class="form_item nobottom" prop="link_man"> <el-form-item class="form_item" prop="link_man">
<div class="form_item_title">部门联系人:</div> <div class="form_item_title">部门联系人:</div>
<el-input <el-input
v-model="form.link_man" v-model="form.link_man"
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item class="form_item nobottom" prop="phone"> <el-form-item class="form_item" prop="phone">
<div class="form_item_title">联系电话:</div> <div class="form_item_title">联系电话:</div>
<el-input <el-input
v-model="form.phone" v-model="form.phone"
...@@ -44,11 +44,13 @@ ...@@ -44,11 +44,13 @@
</el-row> </el-row>
</el-form> </el-form>
</block-radius> </block-radius>
<block-radius :paddingNum="24"> <block-radius>
<el-tabs v-model="activeName" class="cloud_form" @tab-click="tabClick"> <el-tabs v-model="activeName" class="cloud_form" @tab-click="tabClick">
<el-tab-pane label="申请新的工作区域" name="0"> <el-tab-pane label="申请新的工作区域" name="0">
<el-row>
<el-col :span="24">
<el-form ref="formNew" :model="formNew" :rules="ruleNew"> <el-form ref="formNew" :model="formNew" :rules="ruleNew">
<el-row :gutter="24"> <el-row>
<el-col :span="24"> <el-col :span="24">
<div class="form_title">基本信息</div> <div class="form_title">基本信息</div>
</el-col> </el-col>
...@@ -70,8 +72,8 @@ ...@@ -70,8 +72,8 @@
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="12">
<el-form-item prop="workplacedesc" class="form_item nobottom"> <el-form-item prop="workplacedesc" class="form_item">
<div class="form_item_title">描述信息:</div> <div class="form_item_title">描述信息:</div>
<el-input <el-input
type="textarea" type="textarea"
...@@ -83,7 +85,7 @@ ...@@ -83,7 +85,7 @@
<el-col :span="24"> <el-col :span="24">
<div class="form_title">工作区域申请规格</div> <div class="form_title">工作区域申请规格</div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item prop="cpu" class="form_item input_has_right"> <el-form-item prop="cpu" class="form_item input_has_right">
<div class="form_item_title">CPU:</div> <div class="form_item_title">CPU:</div>
<el-select <el-select
...@@ -101,8 +103,11 @@ ...@@ -101,8 +103,11 @@
<div class="input_right input_right_top"></div> <div class="input_right input_right_top"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item prop="memory" class="form_item input_has_right"> <el-form-item
prop="memory"
class="form_item input_has_right"
>
<div class="form_item_title">内存:</div> <div class="form_item_title">内存:</div>
<el-select <el-select
v-model="formNew.memory" v-model="formNew.memory"
...@@ -119,7 +124,7 @@ ...@@ -119,7 +124,7 @@
<div class="input_right input_right_top">GB</div> <div class="input_right input_right_top">GB</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item <el-form-item
prop="containerGroup" prop="containerGroup"
class="form_item input_has_right" class="form_item input_has_right"
...@@ -138,8 +143,8 @@ ...@@ -138,8 +143,8 @@
<el-col :span="24"> <el-col :span="24">
<div class="form_item_title">数据盘(可选):</div> <div class="form_item_title">数据盘(可选):</div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item class="form_item input_has_right nobottom"> <el-form-item class="form_item input_has_right">
<el-input-number <el-input-number
v-model="formNew.dataDisk" v-model="formNew.dataDisk"
controls-position="right" controls-position="right"
...@@ -150,8 +155,8 @@ ...@@ -150,8 +155,8 @@
<div class="input_right"></div> <div class="input_right"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item class="form_item input_has_right nobottom"> <el-form-item class="form_item input_has_right">
<el-input-number <el-input-number
v-model="formNew.perDataDisk" v-model="formNew.perDataDisk"
controls-position="right" controls-position="right"
...@@ -165,10 +170,13 @@ ...@@ -165,10 +170,13 @@
<el-col :span="24"> <el-col :span="24">
<div class="form_title">单个容器组规格</div> <div class="form_title">单个容器组规格</div>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="12">
<div class="form_item_title">CPU:</div> <div class="form_item_title">CPU:</div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="12">
<div class="form_item_title">内存:</div>
</el-col>
<el-col :span="6">
<el-form-item <el-form-item
prop="perCPUs" prop="perCPUs"
class="form_item input_has_left_right" class="form_item input_has_left_right"
...@@ -179,12 +187,12 @@ ...@@ -179,12 +187,12 @@
controls-position="right" controls-position="right"
:min="0" :min="0"
:max="10" :max="10"
placeholder="CPU最高使用量" placeholder="请选择CPU最高使用量"
></el-input-number> ></el-input-number>
<div class="input_right"></div> <div class="input_right"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item <el-form-item
prop="perCPU" prop="perCPU"
class="form_item input_has_left_right" class="form_item input_has_left_right"
...@@ -195,18 +203,15 @@ ...@@ -195,18 +203,15 @@
controls-position="right" controls-position="right"
:min="0" :min="0"
:max="10" :max="10"
placeholder="CPU默认使用量" placeholder="请选择CPU默认使用量"
></el-input-number> ></el-input-number>
<div class="input_right"></div> <div class="input_right"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="6">
<div class="form_item_title">内存:</div>
</el-col>
<el-col :span="8">
<el-form-item <el-form-item
prop="perRAMs" prop="perRAMs"
class="form_item input_has_left_right nobottom" class="form_item input_has_left_right"
> >
<div class="input_left">最高</div> <div class="input_left">最高</div>
<el-input-number <el-input-number
...@@ -214,15 +219,15 @@ ...@@ -214,15 +219,15 @@
controls-position="right" controls-position="right"
:min="0" :min="0"
:max="10" :max="10"
placeholder="内存最高使用量" placeholder="请选择内存最高使用量"
></el-input-number> ></el-input-number>
<div class="input_right">GB</div> <div class="input_right">GB</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item <el-form-item
prop="perRAM" prop="perRAM"
class="form_item input_has_left_right nobottom" class="form_item input_has_left_right"
> >
<div class="input_left">默认</div> <div class="input_left">默认</div>
<el-input-number <el-input-number
...@@ -230,7 +235,7 @@ ...@@ -230,7 +235,7 @@
controls-position="right" controls-position="right"
:min="0" :min="0"
:max="10" :max="10"
placeholder="内存默认使用量" placeholder="请选择内存默认使用量"
></el-input-number> ></el-input-number>
<div class="input_right">GB</div> <div class="input_right">GB</div>
</el-form-item> </el-form-item>
...@@ -238,7 +243,7 @@ ...@@ -238,7 +243,7 @@
<el-col :span="24"> <el-col :span="24">
<div class="form_title">其他信息</div> <div class="form_title">其他信息</div>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="12">
<el-form-item <el-form-item
prop="appDuration" prop="appDuration"
class="form_item input_has_right" class="form_item input_has_right"
...@@ -286,10 +291,12 @@ ...@@ -286,10 +291,12 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</el-col>
</el-row>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="调整现有工作区域" name="1"> <el-tab-pane label="调整现有工作区域" name="1">
<el-row :gutter="24"> <el-row>
<el-col :span="16"> <el-col :span="12">
<div class="select_title">选择要进行调整的工作区域:</div> <div class="select_title">选择要进行调整的工作区域:</div>
<div class="form_item"> <div class="form_item">
<el-select <el-select
...@@ -308,8 +315,10 @@ ...@@ -308,8 +315,10 @@
</el-col> </el-col>
</el-row> </el-row>
<div v-show="formShow"> <div v-show="formShow">
<el-row>
<el-col :span="24">
<el-form ref="formOld" :model="formOld" :rules="ruleOld"> <el-form ref="formOld" :model="formOld" :rules="ruleOld">
<el-row :gutter="24"> <el-row>
<el-col :span="24"> <el-col :span="24">
<div class="form_title">工作区域规格调整</div> <div class="form_title">工作区域规格调整</div>
</el-col> </el-col>
...@@ -342,8 +351,11 @@ ...@@ -342,8 +351,11 @@
</div> </div>
</div> </div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item prop="cpu" class="form_item input_has_right"> <el-form-item
prop="cpu"
class="form_item input_has_right"
>
<div class="form_item_title">申请CPU调整为:</div> <div class="form_item_title">申请CPU调整为:</div>
<el-select <el-select
v-model="formOld.cpu" v-model="formOld.cpu"
...@@ -359,8 +371,11 @@ ...@@ -359,8 +371,11 @@
<div class="input_right input_right_top"></div> <div class="input_right input_right_top"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item prop="memory" class="form_item input_has_right"> <el-form-item
prop="memory"
class="form_item input_has_right"
>
<div class="form_item_title">申请内存调整为:</div> <div class="form_item_title">申请内存调整为:</div>
<el-select <el-select
v-model="formOld.memory" v-model="formOld.memory"
...@@ -377,7 +392,7 @@ ...@@ -377,7 +392,7 @@
<div class="input_right input_right_top">GB</div> <div class="input_right input_right_top">GB</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item <el-form-item
prop="containerGroup" prop="containerGroup"
class="form_item input_has_right" class="form_item input_has_right"
...@@ -393,9 +408,9 @@ ...@@ -393,9 +408,9 @@
<div class="input_right"></div> <div class="input_right"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="dataDiskList.length != 0"> <el-col :span="12" v-if="dataDiskList.length != 0">
<el-form-item class="form_item input_has_right"> <el-form-item class="form_item input_has_right">
<div class="form_item_title_1">调整数据盘:</div> <div class="form_item_title">调整数据盘:</div>
<table-um <table-um
ref="apply_service_state_table" ref="apply_service_state_table"
:headers="dataDiskHeaders" :headers="dataDiskHeaders"
...@@ -403,13 +418,11 @@ ...@@ -403,13 +418,11 @@
:datas="dataDiskList" :datas="dataDiskList"
@primary-del="delItem" @primary-del="delItem"
:maxheight="260" :maxheight="260"
size="small"
class="disk__table"
></table-um> ></table-um>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item class="form_item nobottom"> <el-form-item class="form_item">
<div class="form_item_title">增加数据盘:</div> <div class="form_item_title">增加数据盘:</div>
<!-- <el-select v-model="formOld.store_type" placeholder="请选择数据盘类型"> <!-- <el-select v-model="formOld.store_type" placeholder="请选择数据盘类型">
<el-option <el-option
...@@ -421,8 +434,8 @@ ...@@ -421,8 +434,8 @@
</el-select>--> </el-select>-->
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item class="form_item input_has_right nobottom"> <el-form-item class="form_item input_has_right">
<el-input-number <el-input-number
v-model="formOld.dataDisk" v-model="formOld.dataDisk"
controls-position="right" controls-position="right"
...@@ -433,8 +446,8 @@ ...@@ -433,8 +446,8 @@
<div class="input_right"></div> <div class="input_right"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item class="form_item input_has_right nobottom"> <el-form-item class="form_item input_has_right">
<el-input-number <el-input-number
v-model="formOld.perDataDisk" v-model="formOld.perDataDisk"
controls-position="right" controls-position="right"
...@@ -468,8 +481,8 @@ ...@@ -468,8 +481,8 @@
最高&nbsp;{{ item.max }}&nbsp;{{ 最高&nbsp;{{ item.max }}&nbsp;{{
item.title == "CPU" ? "" : "GB" item.title == "CPU" ? "" : "GB"
}} }}
&nbsp;&nbsp;&nbsp;&nbsp;
</span> </span>
<br />
<span class="now_rqz_card_val"> <span class="now_rqz_card_val">
默认&nbsp;{{ item.default }}&nbsp;{{ 默认&nbsp;{{ item.default }}&nbsp;{{
item.title == "CPU" ? "" : "GB" item.title == "CPU" ? "" : "GB"
...@@ -479,10 +492,13 @@ ...@@ -479,10 +492,13 @@
</div> </div>
</div> </div>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="12">
<div class="form_item_title">CPU:</div> <div class="form_item_title">CPU:</div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="12">
<div class="form_item_title">内存:</div>
</el-col>
<el-col :span="6">
<el-form-item <el-form-item
prop="perCPUs" prop="perCPUs"
class="form_item input_has_left_right" class="form_item input_has_left_right"
...@@ -498,7 +514,7 @@ ...@@ -498,7 +514,7 @@
<div class="input_right"></div> <div class="input_right"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item <el-form-item
prop="perCPU" prop="perCPU"
class="form_item input_has_left_right" class="form_item input_has_left_right"
...@@ -514,13 +530,10 @@ ...@@ -514,13 +530,10 @@
<div class="input_right"></div> <div class="input_right"></div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="6">
<div class="form_item_title">内存:</div>
</el-col>
<el-col :span="8">
<el-form-item <el-form-item
prop="perRAMs" prop="perRAMs"
class="form_item input_has_left_right nobottom" class="form_item input_has_left_right"
> >
<div class="input_left">最高</div> <div class="input_left">最高</div>
<el-input-number <el-input-number
...@@ -533,10 +546,10 @@ ...@@ -533,10 +546,10 @@
<div class="input_right">GB</div> <div class="input_right">GB</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item <el-form-item
prop="perRAM" prop="perRAM"
class="form_item input_has_left_right nobottom" class="form_item input_has_left_right"
> >
<div class="input_left">默认</div> <div class="input_left">默认</div>
<el-input-number <el-input-number
...@@ -551,7 +564,6 @@ ...@@ -551,7 +564,6 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<div class="form_title">其他信息</div> <div class="form_title">其他信息</div>
</el-col>
<el-col :span="24"> <el-col :span="24">
<div class="now_spec">当前规格:</div> <div class="now_spec">当前规格:</div>
<div class="now_spec_card_time"> <div class="now_spec_card_time">
...@@ -565,14 +577,17 @@ ...@@ -565,14 +577,17 @@
> >
<span class="now_spec_card_time_val"> <span class="now_spec_card_time_val">
{{ {{
helper.dateStringTransform(paramsOld.cloud_end_time) helper.dateStringTransform(
paramsOld.cloud_end_time
)
}} }}
</span> </span>
</div> </div>
</div> </div>
</el-col> </el-col>
<el-col :span="16"> </el-col>
<el-form-item class="form_item input_has_right"> <el-col :span="12">
<el-form-item class="form_item input_has_right_select">
<div class="form_item_title">申请续期:</div> <div class="form_item_title">申请续期:</div>
<el-input-number <el-input-number
v-model="formOld.appDuration" v-model="formOld.appDuration"
...@@ -580,7 +595,18 @@ ...@@ -580,7 +595,18 @@
:min="1" :min="1"
:max="1000" :max="1000"
></el-input-number> ></el-input-number>
<div class="input_right"></div> <el-select
v-model="formOld.durType"
class="input_right_select"
placeholder="请选择续期时长"
>
<el-option
v-for="item in durationOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="22"> <el-col :span="22">
...@@ -598,12 +624,13 @@ ...@@ -598,12 +624,13 @@
:readOnly="false" :readOnly="false"
:drag="true" :drag="true"
@getNewList="getNewListOld" @getNewList="getNewListOld"
class="up_f"
></upload-file> ></upload-file>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</el-col>
</el-row>
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
...@@ -891,9 +918,7 @@ ...@@ -891,9 +918,7 @@
<div class="dia_block_item_in"> <div class="dia_block_item_in">
<span class="dia_block_item_title">内存:</span> <span class="dia_block_item_title">内存:</span>
<p class="dia_block_item_val"> <p class="dia_block_item_val">
<span class="val_has_2"> <span class="val_has_2">om=[] </span>
最高&nbsp;{{ diaForm.perRAMs }}GB
</span>
<span class="val_has_2"> <span class="val_has_2">
默认&nbsp;{{ diaForm.perRAM }}GB 默认&nbsp;{{ diaForm.perRAM }}GB
</span> </span>
...@@ -1297,7 +1322,11 @@ export default { ...@@ -1297,7 +1322,11 @@ export default {
{ value: "8", label: "8" }, { value: "8", label: "8" },
{ value: "16", label: "16" }, { value: "16", label: "16" },
], ],
optionsRAM: [], optionsRAM: [
{ value: "8", label: "8" },
{ value: "16", label: "16" },
{ value: "32", label: "32" },
],
options_store_type: [ options_store_type: [
{ value: "nfs-client", label: "nfs-client" }, { value: "nfs-client", label: "nfs-client" },
{ value: "rook-ceph-block", label: "rook-ceph-block" }, { value: "rook-ceph-block", label: "rook-ceph-block" },
...@@ -1822,9 +1851,8 @@ export default { ...@@ -1822,9 +1851,8 @@ export default {
} }
.form_title { .form_title {
font-size: 16px; font-size: 16px;
line-height: 16px;
font-weight: bold; font-weight: bold;
margin: 32px 0 24px; margin: 10px 0;
padding: 0 0 0 15px; padding: 0 0 0 15px;
position: relative; position: relative;
color: #58617a; color: #58617a;
...@@ -1837,22 +1865,14 @@ export default { ...@@ -1837,22 +1865,14 @@ export default {
background-color: #515fe7; background-color: #515fe7;
border-radius: 2px; border-radius: 2px;
left: 0; left: 0;
top: -1px; top: 2px;
} }
.form_item { .form_item {
width: calc(100%); width: calc(100% - 20px);
} }
.form_item_title { .form_item_title {
margin: 0 0 12px; padding: 0 15px;
line-height: 14px; line-height: 40px;
font-size: 14px;
color: #58617a;
}
.form_item_title_1 {
margin: 0;
line-height: 14px;
font-size: 14px;
color: #58617a;
} }
.input_has_right { .input_has_right {
position: relative; position: relative;
...@@ -1865,7 +1885,7 @@ export default { ...@@ -1865,7 +1885,7 @@ export default {
background-color: #edeef4; background-color: #edeef4;
border: 1px #e3e5ef solid; border: 1px #e3e5ef solid;
color: #8890a7; color: #8890a7;
border-radius: 0 6px 6px 0; border-radius: 0 8px 8px 0;
position: absolute; position: absolute;
right: 0; right: 0;
} }
...@@ -1880,7 +1900,7 @@ export default { ...@@ -1880,7 +1900,7 @@ export default {
background-color: #edeef4; background-color: #edeef4;
border: 1px #e3e5ef solid; border: 1px #e3e5ef solid;
color: #8890a7; color: #8890a7;
border-radius: 6px 0 0 6px; border-radius: 8px 0 0 8px;
position: absolute; position: absolute;
left: 0; left: 0;
} }
...@@ -1892,28 +1912,26 @@ export default { ...@@ -1892,28 +1912,26 @@ export default {
right: 0; right: 0;
} }
.select_title { .select_title {
padding: 32px 0 12px; padding: 20px 15px;
font-size: 16px; font-size: 16px;
line-height: 16px;
font-weight: bold; font-weight: bold;
color: #58617a; color: #242c43;
} }
.now_spec { .now_spec {
padding: 0 0 12px; padding: 10px 15px;
} }
.now_spec_cards { .now_spec_cards {
margin-bottom: 24px;
} }
.now_spec_card { .now_spec_card {
display: inline-block; display: inline-block;
width: 194px; width: 165px;
height: 40px; height: 50px;
background-color: #f7f8f9; background-color: #f7f8f9;
border-radius: 6px; border-radius: 8px;
line-height: 40px; line-height: 50px;
padding: 0 20px; padding: 0 20px;
position: relative; position: relative;
margin-right: 24px; margin-right: 20px;
} }
.now_spec_card_title { .now_spec_card_title {
color: #6573ae; color: #6573ae;
...@@ -1927,15 +1945,15 @@ export default { ...@@ -1927,15 +1945,15 @@ export default {
} }
.now_spec_card_img { .now_spec_card_img {
position: relative; position: relative;
top: 1px; top: 2px;
} }
.now_rqz_card { .now_rqz_card {
display: inline-block; display: inline-block;
width: 304px; width: 193px;
height: 40px; height: 78px;
background-color: #f7f8f9; background-color: #f7f8f9;
border-radius: 6px; border-radius: 8px;
line-height: 40px; line-height: 78px;
padding: 0 20px; padding: 0 20px;
position: relative; position: relative;
margin-right: 20px; margin-right: 20px;
...@@ -1947,29 +1965,28 @@ export default { ...@@ -1947,29 +1965,28 @@ export default {
.now_rqz_card_val_div { .now_rqz_card_val_div {
color: #0d1847; color: #0d1847;
position: absolute; position: absolute;
line-height: 40px; line-height: 30px;
right: 20px; right: 20px;
top: 0; top: 9px;
} }
.now_rqz_card_val { .now_rqz_card_val {
} }
.now_rqz_card_img { .now_rqz_card_img {
position: relative; position: relative;
top: 1px; top: 2px;
} }
.now_spec_card_time { .now_spec_card_time {
width: 381px; width: 381px;
height: 40px; height: 50px;
background-color: #f7f8f9; background-color: #f7f8f9;
border-radius: 6px; border-radius: 8px;
line-height: 40px; line-height: 50px;
padding: 0 20px; padding: 0 20px;
position: relative; position: relative;
margin-bottom: 24px;
} }
.now_spec_card_time_img { .now_spec_card_time_img {
position: relative; position: relative;
top: 1px; top: 2px;
} }
.now_spec_card_time_title { .now_spec_card_time_title {
color: #6573ae; color: #6573ae;
...@@ -2055,7 +2072,7 @@ export default { ...@@ -2055,7 +2072,7 @@ export default {
margin-right: 20px; margin-right: 20px;
} }
.doc_template { .doc_template {
margin: 0 0 12px; margin: 0 0 10px 20px;
} }
.up_f { .up_f {
width: calc(50% - 10px); width: calc(50% - 10px);
...@@ -2189,9 +2206,6 @@ export default { ...@@ -2189,9 +2206,6 @@ export default {
.clear_xxx { .clear_xxx {
clear: both; clear: both;
} }
.disk__table {
margin-bottom: 0;
}
</style> </style>
<style> <style>
.form_block .el-input .el-input__inner { .form_block .el-input .el-input__inner {
...@@ -2213,7 +2227,7 @@ export default { ...@@ -2213,7 +2227,7 @@ export default {
color: #242c43; color: #242c43;
} }
.cloud_form .input_right_top { .cloud_form .input_right_top {
top: 26px; top: 40px;
} }
.cloud_form .el-select { .cloud_form .el-select {
width: 100%; width: 100%;
...@@ -2241,20 +2255,17 @@ export default { ...@@ -2241,20 +2255,17 @@ export default {
} }
.cloud_form .el-textarea .el-textarea__inner { .cloud_form .el-textarea .el-textarea__inner {
background-color: #f7f8f9; background-color: #f7f8f9;
border-radius: 6px; border-radius: 8px;
color: #242c43; color: #242c43;
} }
.form_item .el-form-item__content { .form_item .el-form-item__content {
width: 100%; width: 100%;
} }
.form_item.el-form-item { .form_item.el-form-item {
margin-bottom: 24px; margin-bottom: 12px;
}
.form_item.el-form-item.nobottom {
margin-bottom: 0;
} }
.input_has_right .el-input__inner { .input_has_right .el-input__inner {
border-radius: 6px 0 0 6px; border-radius: 8px 0 0 8px;
color: #242c43; color: #242c43;
} }
.cloud_form .input_has_right_select .el-input-number { .cloud_form .input_has_right_select .el-input-number {
...@@ -2270,20 +2281,20 @@ export default { ...@@ -2270,20 +2281,20 @@ export default {
border-color: #0f2683; border-color: #0f2683;
} }
.input_has_right_select .el-input__inner { .input_has_right_select .el-input__inner {
border-radius: 6px 0 0 6px; border-radius: 8px 0 0 8px;
color: #242c43; color: #242c43;
} }
.input_has_right_select .input_right_select.el-select .el-input { .input_has_right_select .input_right_select.el-select .el-input {
width: 100px; width: 100px;
background-color: #0f2683; background-color: #0f2683;
color: #ffffff; color: #ffffff;
border-radius: 0 6px 6px 0; border-radius: 0 8px 8px 0;
} }
.input_has_right_select .input_has_right_select
.input_right_select.el-select .input_right_select.el-select
.el-input .el-input
.el-input__inner { .el-input__inner {
border-radius: 0 6px 6px 0; border-radius: 0 8px 8px 0;
color: #ffffff; color: #ffffff;
} }
.input_right_select .el-input .el-input__inner { .input_right_select .el-input .el-input__inner {
...@@ -2294,7 +2305,7 @@ export default { ...@@ -2294,7 +2305,7 @@ export default {
.cloud_form .el-input-number .el-input-number__decrease { .cloud_form .el-input-number .el-input-number__decrease {
border-bottom: 0; border-bottom: 0;
border-left: 0; border-left: 0;
width: 29px; width: 40px;
} }
.cloud_dia .el-dialog__header { .cloud_dia .el-dialog__header {
border-bottom: 1px solid #edf0ff; border-bottom: 1px solid #edf0ff;
...@@ -2309,11 +2320,10 @@ export default { ...@@ -2309,11 +2320,10 @@ export default {
.cloud_form .el-input__prefix, .cloud_form .el-input__prefix,
.el-input__suffix { .el-input__suffix {
text-align: right; text-align: right;
right: 2px;
} }
.cloud_form .el-input-number.is-controls-right .el-input__inner { .cloud_form .el-input-number.is-controls-right .el-input__inner {
padding-left: 15px; padding-left: 15px;
padding-right: 32px; padding-right: 40px;
} }
.up_f .el-upload { .up_f .el-upload {
width: 100%; width: 100%;
...@@ -2321,7 +2331,4 @@ export default { ...@@ -2321,7 +2331,4 @@ export default {
.up_f .el-upload-dragger { .up_f .el-upload-dragger {
width: 100%; width: 100%;
} }
.shop_cloud .el-tabs__header {
margin: 0;
}
</style> </style>
<template>
<div class="shop_list_cont">
<el-container>
<el-aside width="176px">
<service-shop-menu></service-shop-menu>
</el-aside>
<el-main class="main_init">
<shop-cloud name="云资源服务"></shop-cloud>
</el-main>
</el-container>
</div>
</template>
<script>
import ServiceShopMenu from "@/components/service-list/service_shop_menu";
import ShopCloud from "@/components/shop-cloud/shop-cloud";
export default {
components: {
ServiceShopMenu,
ShopCloud
},
data: () => ({}),
mounted() {},
methods: {}
};
</script>
<style scoped>
.shop_list_cont {
width: 1200px;
margin: 0 auto;
position: relative;
}
.main_init {
padding: 2px 0 16px 16px;
}
</style>
\ No newline at end of file
<template> <template>
<div class="shop_list_cont"> <div>
<el-container> <el-container>
<el-aside width="176px"> <el-aside width="180px">
<service-shop-menu></service-shop-menu> <service-shop-menu></service-shop-menu>
</el-aside> </el-aside>
<el-main class="main_init"> <el-main>
<shop-cloud name="云资源服务"></shop-cloud> <shop-cloud name="云资源服务"></shop-cloud>
</el-main> </el-main>
</el-container> </el-container>
...@@ -25,12 +25,4 @@ export default { ...@@ -25,12 +25,4 @@ export default {
}; };
</script> </script>
<style scoped> <style scoped>
.shop_list_cont {
width: 1200px;
margin: 0 auto;
position: relative;
}
.main_init {
padding: 2px 0 16px 16px;
}
</style> </style>
<template>
<div class="shop_list_cont">
<el-container>
<el-aside width="176px">
<service-shop-menu></service-shop-menu>
</el-aside>
<el-main class="main_init">
<service-list
:filterNames="filterNames"
:name="name"
:url="url"
:urlFilter="urlFilter"
></service-list>
</el-main>
</el-container>
</div>
</template>
<script>
import ServiceShopMenu from "@/components/service-list/service_shop_menu";
import ServiceList from "@/components/service-list/service_list";
import BlockRadius from "@/components/general/block-radius";
export default {
components: {
ServiceShopMenu,
ServiceList,
BlockRadius,
},
data: () => ({
urlFilter: "",
url: "",
name: "",
filterNames: [],
}),
mounted() {
this.getVal(this.$route.path);
},
methods: {
getVal(val) {
let uri = val.substring(6);
uri = uri.substring(0, uri.indexOf("/"));
switch (uri) {
case "data_service_list":
this.name = "数据服务";
this.urlFilter = "5";
this.url = "/shop/sjfwDetail";
this.filterNames = ["数据服务类型", "服务领域", "数据来源机构"];
break;
case "space_time_service_list":
this.name = "时空服务";
this.urlFilter = "6";
this.url = "/shop/skfwDetail";
this.filterNames = ["时空服务类型", "服务领域", "服务来源组织"];
break;
case "video_service_list":
this.name = "视频服务";
this.urlFilter = "7";
this.url = "/shop/spfwDetail";
this.filterNames = ["", "服务领域", "服务来源组织"];
break;
case "perception_service_list":
this.name = "感知服务";
this.urlFilter = "10";
this.url = "/shop/gzfwDetail";
this.filterNames = ["", "服务领域", "服务来源组织"];
break;
case "comprehensive_app_list":
this.name = "融合服务";
this.urlFilter = "21";
this.url = "/shop/zhfwDetail";
this.filterNames = ["服务类型", "服务领域", "服务来源组织"];
break;
case "app_store_list":
this.name = "应用商店";
this.urlFilter = "app";
this.url = "/shop/yysdDetail";
this.filterNames = ["应用类型", "应用领域", "应用来源机构"];
break;
default:
this.name = "";
this.urlFilter = "";
this.url = "";
this.filterNames = [];
break;
}
},
},
watch: {
"$route.path": {
handler(val) {
this.getVal(val);
},
},
},
};
</script>
<style lang="less" scoped>
.default {
height: calc(100vh - 180px);
display: flex;
align-items: center;
justify-content: center;
margin: 0;
.default_img {
width: 1282px;
height: 629px;
.default_title {
color: #264dd9;
font-size: 44px;
font-weight: bold;
margin-bottom: 30px;
}
.default_msg {
color: #58617a;
font-size: 24px;
line-height: 44px;
}
}
}
</style>
<style scoped>
.default_img {
background: url("~@/assets/imgs/img_default_quesheng.png") no-repeat center
center;
}
.shop_list_cont {
width: 1200px;
margin: 0 auto;
position: relative;
}
.main_init {
padding: 16px 0 16px 16px;
}
</style>
\ No newline at end of file
<template> <template>
<div class="shop_list_cont"> <!-- <div class="shop_list_cont"> -->
<div>
<el-container> <el-container>
<el-aside width="176px"> <el-aside width="180px">
<service-shop-menu></service-shop-menu> <service-shop-menu></service-shop-menu>
</el-aside> </el-aside>
<el-main class="main_init"> <el-main>
<service-list <service-list
:filterNames="filterNames" :filterNames="filterNames"
:name="name" :name="name"
...@@ -128,7 +129,4 @@ export default { ...@@ -128,7 +129,4 @@ export default {
margin: 0 auto; margin: 0 auto;
position: relative; position: relative;
} }
.main_init {
padding: 16px 0 16px 16px;
}
</style> </style>
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