|
@@ -56,35 +56,35 @@
|
|
|
<div class="networkCard">
|
|
|
<div class="title">本月异常</div>
|
|
|
<div class="item">
|
|
|
- <div class="txt">0</div>
|
|
|
+ <div class="txt">{{ simInfo.abnormalNextMonth }}</div>
|
|
|
<div class="val">张</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="networkCard">
|
|
|
<div class="title">下月到期</div>
|
|
|
<div class="item">
|
|
|
- <div class="txt">0</div>
|
|
|
+ <div class="txt">{{ simInfo.expiresNextMonth }}</div>
|
|
|
<div class="val">张</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="networkCard">
|
|
|
<div class="title">本月超停</div>
|
|
|
<div class="item">
|
|
|
- <div class="txt">0</div>
|
|
|
+ <div class="txt">{{ simInfo.exceedThisMonthStop }}</div>
|
|
|
<div class="val">张</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="networkCard">
|
|
|
<div class="title">本月到期</div>
|
|
|
<div class="item">
|
|
|
- <div class="txt">0</div>
|
|
|
+ <div class="txt">{{ simInfo.expiresThisMonth }}</div>
|
|
|
<div class="val">张</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="networkCard">
|
|
|
<div class="title">上月到期</div>
|
|
|
<div class="item">
|
|
|
- <div class="txt">0</div>
|
|
|
+ <div class="txt">{{ simInfo.expiredLastMonth }}</div>
|
|
|
<div class="val">张</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -102,21 +102,21 @@
|
|
|
</div>
|
|
|
<div class="item">
|
|
|
<div class="txt">总客户</div>
|
|
|
- <div class="val">0</div>
|
|
|
+ <div class="val">{{ customerInfo.totalCustomer }}</div>
|
|
|
</div>
|
|
|
<div class="item">
|
|
|
<div class="txt">接入账号</div>
|
|
|
- <div class="val">0</div>
|
|
|
+ <div class="val">{{ customerInfo.totalAccount }}</div>
|
|
|
</div>
|
|
|
<div class="item">
|
|
|
<div class="txt">客户充值</div>
|
|
|
- <div class="val">0</div>
|
|
|
+ <div class="val">{{ customerInfo.totalRecharge }}</div>
|
|
|
</div>
|
|
|
<div class="item">
|
|
|
<div class="txt">已充值客户</div>
|
|
|
- <div class="val">0</div>
|
|
|
+ <div class="val">{{ customerInfo.totalRechargedCustomer }}</div>
|
|
|
</div>
|
|
|
- <div class="item" v-if="userType==2">
|
|
|
+ <div class="item" v-if="userType == 2">
|
|
|
<a-link href="link" :hoverable="false">查看接入密钥</a-link>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -128,28 +128,28 @@
|
|
|
<div class="flowCard">
|
|
|
<div class="title">本月消耗流量</div>
|
|
|
<div class="main">
|
|
|
- <div class="value">0</div>
|
|
|
- <div class="txt">MB</div>
|
|
|
+ <div class="value">{{ trafficInfo.totalTraffic }}</div>
|
|
|
+ <div class="txt">GB</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flowCard">
|
|
|
<div class="title">本月应付金额/人民币</div>
|
|
|
<div class="main">
|
|
|
- <div class="value">0</div>
|
|
|
- <div class="txt">MB</div>
|
|
|
+ <div class="value">{{ trafficInfo.totalOweAmount }}</div>
|
|
|
+ <div class="txt">元</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flowCard">
|
|
|
<div class="title">总消耗流量</div>
|
|
|
<div class="main">
|
|
|
- <div class="value">0</div>
|
|
|
- <div class="txt">MB</div>
|
|
|
+ <div class="value">{{ trafficInfo.totalAllTraffic }}</div>
|
|
|
+ <div class="txt">GB</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flowCard">
|
|
|
<div class="title">总支付金额/人民币</div>
|
|
|
<div class="main">
|
|
|
- <div class="value">0</div>
|
|
|
+ <div class="value">{{ trafficInfo.totalAllOweAmount }}</div>
|
|
|
<div class="txt">元</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -162,28 +162,28 @@
|
|
|
<div class="flowCard">
|
|
|
<div class="title">本月充值订单数</div>
|
|
|
<div class="main">
|
|
|
- <div class="value">0</div>
|
|
|
+ <div class="value">{{ rechargeInfo.totalRecharge }}</div>
|
|
|
<div class="txt">笔</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flowCard">
|
|
|
<div class="title">本月充值订单金额/新元</div>
|
|
|
<div class="main">
|
|
|
- <div class="value">0</div>
|
|
|
+ <div class="value">{{ rechargeInfo.totalRechargeAmount }}</div>
|
|
|
<div class="txt">SGD</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flowCard">
|
|
|
<div class="title">总充值订单数</div>
|
|
|
<div class="main">
|
|
|
- <div class="value">0</div>
|
|
|
+ <div class="value">{{ rechargeInfo.totalAllRecharge }}</div>
|
|
|
<div class="txt">笔</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flowCard">
|
|
|
<div class="title">总充值订单金额/新元</div>
|
|
|
<div class="main">
|
|
|
- <div class="value">0</div>
|
|
|
+ <div class="value">{{ rechargeInfo.totalAllRechargeAmount }}</div>
|
|
|
<div class="txt">SGD</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -200,28 +200,55 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
-<<<<<<< HEAD
|
|
|
-=======
|
|
|
<script setup>
|
|
|
-import {ref,toRefs} from 'vue'
|
|
|
-
|
|
|
+import { onMounted, ref, toRefs } from 'vue'
|
|
|
+import { getHomeData } from '@/api/path/system.api'
|
|
|
const state = ref({
|
|
|
userType: JSON.parse(localStorage.getItem('user_login_information'))?.userType,
|
|
|
+ customerInfo: {},
|
|
|
+ rechargeInfo: {},
|
|
|
+ simInfo: {},
|
|
|
+ trafficInfo: {}
|
|
|
})
|
|
|
|
|
|
-const {userType} =toRefs(state.value)
|
|
|
+const { userType, customerInfo, rechargeInfo, simInfo, trafficInfo } = toRefs(state.value)
|
|
|
+
|
|
|
+const initData = async () => {
|
|
|
+ let res = await getHomeData()
|
|
|
+
|
|
|
+ if (res.code === 200) {
|
|
|
+ customerInfo.value = res.data.customerInfo
|
|
|
+ rechargeInfo.value = res.data.rechargeInfo
|
|
|
+ simInfo.value = res.data.simInfo
|
|
|
+ trafficInfo.value = res.data.trafficInfo
|
|
|
+ // 数据取整
|
|
|
+ trafficInfo.value.totalTraffic = handleResize(trafficInfo.value.totalTraffic)
|
|
|
+ trafficInfo.value.totalAllTraffic = handleResize(trafficInfo.value.totalAllTraffic)
|
|
|
+ }
|
|
|
+}
|
|
|
+function handleResize(data) {
|
|
|
+ const afterFirstConversion = data / 1024
|
|
|
+ const afterSecondConversion = afterFirstConversion / 1024;
|
|
|
+ const result = Math.ceil(afterSecondConversion * 100) / 100;
|
|
|
+ return result.toFixed(2)
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ initData()
|
|
|
+})
|
|
|
</script>
|
|
|
|
|
|
->>>>>>> dev
|
|
|
<style lang="less" scoped>
|
|
|
.container {
|
|
|
background: transparent !important;
|
|
|
padding: 0 !important;
|
|
|
display: flex;
|
|
|
flex-direction: row !important;
|
|
|
+
|
|
|
.leftModel {
|
|
|
flex: 1;
|
|
|
}
|
|
|
+
|
|
|
.rightModel {
|
|
|
flex: none;
|
|
|
width: 400px;
|
|
@@ -235,6 +262,7 @@ const {userType} =toRefs(state.value)
|
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
|
|
|
padding: 20px;
|
|
|
margin-bottom: 16px;
|
|
|
+
|
|
|
.modelTitle {
|
|
|
margin-bottom: 12px;
|
|
|
font-size: 18px;
|
|
@@ -251,18 +279,23 @@ const {userType} =toRefs(state.value)
|
|
|
border-radius: 6px;
|
|
|
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1);
|
|
|
margin-left: 16px;
|
|
|
+
|
|
|
&:first-child {
|
|
|
margin-left: 0;
|
|
|
}
|
|
|
+
|
|
|
&:nth-child(1) {
|
|
|
flex: 1.5;
|
|
|
}
|
|
|
+
|
|
|
&:nth-child(2) {
|
|
|
flex: 2;
|
|
|
}
|
|
|
+
|
|
|
&:nth-child(3) {
|
|
|
flex: 1;
|
|
|
}
|
|
|
+
|
|
|
.title {
|
|
|
font-size: 14px;
|
|
|
font-weight: 400;
|
|
@@ -270,19 +303,24 @@ const {userType} =toRefs(state.value)
|
|
|
color: rgba(0, 0, 0, 0.6);
|
|
|
margin-bottom: 10px;
|
|
|
}
|
|
|
+
|
|
|
.item {
|
|
|
display: flex;
|
|
|
margin-bottom: 8px;
|
|
|
+
|
|
|
.txt {
|
|
|
margin-right: 10px;
|
|
|
}
|
|
|
+
|
|
|
.val {
|
|
|
color: rgb(@blue_0);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.list {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
+
|
|
|
.item {
|
|
|
width: 50%;
|
|
|
}
|
|
@@ -301,9 +339,11 @@ const {userType} =toRefs(state.value)
|
|
|
box-sizing: border-box;
|
|
|
border-radius: 6px;
|
|
|
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1);
|
|
|
+
|
|
|
&:first-child {
|
|
|
margin-left: 0;
|
|
|
}
|
|
|
+
|
|
|
.title {
|
|
|
font-size: 14px;
|
|
|
font-weight: 400;
|
|
@@ -314,9 +354,11 @@ const {userType} =toRefs(state.value)
|
|
|
|
|
|
.item {
|
|
|
display: flex;
|
|
|
+
|
|
|
.txt {
|
|
|
margin-right: 4px;
|
|
|
}
|
|
|
+
|
|
|
.val {
|
|
|
color: #999;
|
|
|
}
|
|
@@ -327,15 +369,18 @@ const {userType} =toRefs(state.value)
|
|
|
.accountList {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
+
|
|
|
.item {
|
|
|
flex: 33%;
|
|
|
margin-bottom: 10px;
|
|
|
display: flex;
|
|
|
+
|
|
|
.txt {
|
|
|
color: #999;
|
|
|
margin-right: 16px;
|
|
|
width: 100px;
|
|
|
}
|
|
|
+
|
|
|
.val {
|
|
|
.arco-link {
|
|
|
margin: 0 8px;
|
|
@@ -347,6 +392,7 @@ const {userType} =toRefs(state.value)
|
|
|
.flowList {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
+
|
|
|
.flowCard {
|
|
|
flex: 48%;
|
|
|
background: #f7f7f7;
|
|
@@ -355,9 +401,11 @@ const {userType} =toRefs(state.value)
|
|
|
border-radius: 6px;
|
|
|
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1);
|
|
|
margin-bottom: 16px;
|
|
|
+
|
|
|
&:nth-child(2n) {
|
|
|
margin-left: 16px;
|
|
|
}
|
|
|
+
|
|
|
.title {
|
|
|
font-size: 14px;
|
|
|
font-weight: 400;
|
|
@@ -370,11 +418,10 @@ const {userType} =toRefs(state.value)
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
font-size: 20px;
|
|
|
- .value {
|
|
|
- }
|
|
|
|
|
|
- .txt {
|
|
|
- }
|
|
|
+ .value {}
|
|
|
+
|
|
|
+ .txt {}
|
|
|
}
|
|
|
}
|
|
|
}
|