update 产量驾驶舱
This commit is contained in:
parent
30af8faa49
commit
bb399835e7
@ -6,7 +6,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<DoubleRingWrapperVue />
|
<DoubleRingWrapperVue :data-source="dataBundle" :period="period" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -15,9 +15,14 @@ import DoubleRingWrapperVue from "./base/DoubleRingWrapper.vue";
|
|||||||
export default {
|
export default {
|
||||||
name: "BipvOutput",
|
name: "BipvOutput",
|
||||||
components: { DoubleRingWrapperVue },
|
components: { DoubleRingWrapperVue },
|
||||||
props: {},
|
props: {
|
||||||
|
period: {
|
||||||
|
type: String,
|
||||||
|
default: "日",
|
||||||
|
},
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {};
|
return { dataBundle: null };
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
121
src/views/copilot/components/charts/ChipInvest.vue
Normal file
121
src/views/copilot/components/charts/ChipInvest.vue
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
<!--
|
||||||
|
filename: FtoInvest.vue
|
||||||
|
author: liubin
|
||||||
|
date: 2024-04-10 08:59:28
|
||||||
|
description:
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<bar-chart-base
|
||||||
|
:legend="legend"
|
||||||
|
:series="series"
|
||||||
|
:xAxis="xAxis"
|
||||||
|
class="fto-chart"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import BarChartBase from "./base/BarChartBase.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "ChipInvest",
|
||||||
|
components: { BarChartBase },
|
||||||
|
data() {
|
||||||
|
// 城市数组的顺序必须是固定的
|
||||||
|
const cities = ["瑞昌", "邯郸", "株洲", "佳木斯", "成都", "凯盛", "蚌埠"];
|
||||||
|
return {
|
||||||
|
xAxis: cities,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
period: {
|
||||||
|
type: String,
|
||||||
|
default: "日",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
legend() {
|
||||||
|
switch (this.period) {
|
||||||
|
case "日":
|
||||||
|
return [{ label: "昨日", color: "#12f7f1" }];
|
||||||
|
case "周":
|
||||||
|
return [{ label: "本周", color: "#12f7f1" }];
|
||||||
|
case "月": {
|
||||||
|
const year = new Date().getFullYear();
|
||||||
|
const month = new Date().getMonth() + 1;
|
||||||
|
return [
|
||||||
|
{ label: `${year}年${month}月`, color: "#12f7f1" },
|
||||||
|
{ label: `${year - 1}年${month}月`, color: "#58adfa" },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
case "年": {
|
||||||
|
const year = new Date().getFullYear();
|
||||||
|
return [
|
||||||
|
{ label: `${year - 1}年`, color: "#12f7f1" },
|
||||||
|
{ label: `${year}年`, color: "#58adfa" },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return [
|
||||||
|
{ label: `${year - 1}年`, color: "#12f7f1" },
|
||||||
|
{ label: `${year}年`, color: "#58adfa" },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series() {
|
||||||
|
const template =
|
||||||
|
this.period == "日" || this.period == "周"
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
name: "样例数据--2023年",
|
||||||
|
data: Array.from({ length: 7 }, () =>
|
||||||
|
Math.floor(Math.random() * 1000)
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: [
|
||||||
|
{
|
||||||
|
name: "样例数据--2023年",
|
||||||
|
data: Array.from({ length: 7 }, () =>
|
||||||
|
Math.floor(Math.random() * 1000)
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "样例数据--2024年",
|
||||||
|
data: Array.from({ length: 7 }, () =>
|
||||||
|
Math.floor(Math.random() * 1000)
|
||||||
|
),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const ftoInvest = this.$store.getters.home.ftoInvest;
|
||||||
|
if (!ftoInvest || !ftoInvest.current || !ftoInvest.previous) {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
name: "样例数据--2023年",
|
||||||
|
data: Array.from({ length: 7 }, () =>
|
||||||
|
Math.floor(Math.random() * 1000)
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "样例数据--2024年",
|
||||||
|
data: Array.from({ length: 7 }, () =>
|
||||||
|
Math.floor(Math.random() * 1000)
|
||||||
|
),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
name: `${new Date().getFullYear() - 1}年`,
|
||||||
|
data: ftoInvest.previous,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: `${new Date().getFullYear()}年`,
|
||||||
|
data: ftoInvest.current,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
@ -6,7 +6,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<DoubleRingWrapperVue />
|
<DoubleRingWrapperVue :data-source="dataBundle" :period="period" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -15,9 +15,14 @@ import DoubleRingWrapperVue from "./base/DoubleRingWrapper.vue";
|
|||||||
export default {
|
export default {
|
||||||
name: "ChipOutput",
|
name: "ChipOutput",
|
||||||
components: { DoubleRingWrapperVue },
|
components: { DoubleRingWrapperVue },
|
||||||
props: {},
|
props: {
|
||||||
|
period: {
|
||||||
|
type: String,
|
||||||
|
default: "日",
|
||||||
|
},
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {};
|
return { dataBundle: null };
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -9,7 +9,10 @@
|
|||||||
<div class="city-data">
|
<div class="city-data">
|
||||||
<div class="headquarter">
|
<div class="headquarter">
|
||||||
<div class="inner-shadow w-1"></div>
|
<div class="inner-shadow w-1"></div>
|
||||||
<div class="inner-shadow flex-1">凯盛光伏</div>
|
<div class="inner-shadow flex-1 flex">
|
||||||
|
<CityName value="凯盛光伏" />
|
||||||
|
<CityValue value="32212" horizontal :period="period" />
|
||||||
|
</div>
|
||||||
<div class="inner-shadow w-1"></div>
|
<div class="inner-shadow w-1"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -27,9 +30,16 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import CityItemVue from "./CityItem.vue";
|
import CityItemVue from "./CityItem.vue";
|
||||||
|
import CityNameVue from "./CityName.vue";
|
||||||
|
import CityValueVue from "./CityValue.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "CityData",
|
name: "CityData",
|
||||||
components: { CityItem: CityItemVue },
|
components: {
|
||||||
|
CityItem: CityItemVue,
|
||||||
|
CityName: CityNameVue,
|
||||||
|
CityValue: CityValueVue,
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
dataSource: {
|
dataSource: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@ -77,6 +87,10 @@ export default {
|
|||||||
width: 70px;
|
width: 70px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.flex {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
.flex-1 {
|
.flex-1 {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
@ -90,7 +104,6 @@ export default {
|
|||||||
flex: 3;
|
flex: 3;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
background: #ccc3;
|
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -7,44 +7,22 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="city-item inner-shadow">
|
<div class="city-item inner-shadow">
|
||||||
<div class="item-location">
|
<CityName :value="location" />
|
||||||
<img src="#" alt="" />
|
<CityValue :value="value+''" :period="period" />
|
||||||
<span>{{ location }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value" style="position: relative; flex: 1">
|
|
||||||
<div
|
|
||||||
class=""
|
|
||||||
style="
|
|
||||||
width: 100%;
|
|
||||||
position: absolute;
|
|
||||||
top: 12%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translateX(-25%);
|
|
||||||
overflow: hidden;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<GradientTextVue :text="'' + value" />
|
|
||||||
</div>
|
|
||||||
<span
|
|
||||||
style="
|
|
||||||
width: 100%;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 16px;
|
|
||||||
position: absolute;
|
|
||||||
top: 56%;
|
|
||||||
left: 24%;
|
|
||||||
"
|
|
||||||
>{{ period == "日" ? "今日产出" : "本周产出" }}</span
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import CityNameVue from "./CityName.vue";
|
||||||
|
import CityValueVue from "./CityValue.vue";
|
||||||
import GradientTextVue from "./GradientText.vue";
|
import GradientTextVue from "./GradientText.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "CityItem",
|
name: "CityItem",
|
||||||
components: { GradientTextVue },
|
components: {
|
||||||
|
GradientTextVue,
|
||||||
|
CityName: CityNameVue,
|
||||||
|
CityValue: CityValueVue,
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
location: {
|
location: {
|
||||||
type: String,
|
type: String,
|
||||||
@ -71,7 +49,6 @@ export default {
|
|||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.city-item {
|
.city-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.inner-shadow {
|
.inner-shadow {
|
||||||
|
55
src/views/copilot/components/charts/base/CityName.vue
Normal file
55
src/views/copilot/components/charts/base/CityName.vue
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<!--
|
||||||
|
filename: CityName.vue
|
||||||
|
author: liubin
|
||||||
|
date: 2024-04-10 08:59:28
|
||||||
|
description:
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="city-name">
|
||||||
|
<img :src="Icon" alt="city icon" />
|
||||||
|
<span>{{ value }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Icon from "./icon.png";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "CityName",
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return { Icon };
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.city-name {
|
||||||
|
min-width: 80px;
|
||||||
|
margin: auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0 8px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
/* width: 32px; */
|
||||||
|
width: 1.543vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
/* font-size: 12px; */
|
||||||
|
font-size: 0.77vw;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
127
src/views/copilot/components/charts/base/CityValue.vue
Normal file
127
src/views/copilot/components/charts/base/CityValue.vue
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
<!--
|
||||||
|
filename: CityValue.vue
|
||||||
|
author: liubin
|
||||||
|
date: 2024-04-10 08:59:28
|
||||||
|
description:
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="city-value" :class="[horizontal ? 'horizontal' : '']">
|
||||||
|
<span class="hint" :class="[horizontal ? 'horizontal' : '']">{{
|
||||||
|
period == "周" ? "本周产出" : "今日产出"
|
||||||
|
}}</span>
|
||||||
|
<span class="value" :class="[horizontal ? 'horizontal' : '']">{{
|
||||||
|
value | numberFilter
|
||||||
|
}}</span>
|
||||||
|
<!-- <GradientTextVue :text="value" :size="horizontal ? 32 : 26" /> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import GradientTextVue from "./GradientText.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "CityValue",
|
||||||
|
components: { GradientTextVue },
|
||||||
|
props: {
|
||||||
|
period: {
|
||||||
|
type: String,
|
||||||
|
default: "日",
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
horizontal: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
numberFilter(value) {
|
||||||
|
if (value != null && !isNaN(parseInt(value))) {
|
||||||
|
return parseInt(value).toLocaleString();
|
||||||
|
} else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.city-value {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0 8px;
|
||||||
|
flex: 2;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-value.horizontal {
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-value::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 1px;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
transparent 20%,
|
||||||
|
#fff 50%,
|
||||||
|
transparent 80%
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
span.hint {
|
||||||
|
margin: 0 0.77vw;
|
||||||
|
font-size: 0.77vw;
|
||||||
|
order: 2;
|
||||||
|
/* margin: 0 12px;
|
||||||
|
width: 32px;
|
||||||
|
font-size: 12px; */
|
||||||
|
}
|
||||||
|
|
||||||
|
span.hint.horizontal {
|
||||||
|
margin: 0 1.235vw;
|
||||||
|
width: 1.543vw;
|
||||||
|
order: 1;
|
||||||
|
font-size: 0.77vw;
|
||||||
|
/* margin: 0 12px;
|
||||||
|
width: 32px;
|
||||||
|
font-size: 12px; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
color: #4dd2fe;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.132vw;
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
.value.horizontal {
|
||||||
|
text-align: left;
|
||||||
|
flex: 1;
|
||||||
|
font-size: 1.543vw;
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg,
|
||||||
|
.value {
|
||||||
|
width: 100px;
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value.horizontal,
|
||||||
|
svg.horizontal {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
</style>
|
@ -6,7 +6,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<svg height="32" width="100%">
|
<svg :height="size + 8" width="100%">
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="smoke-text" x1="0%" y1="0%" x2="0%" y2="100%">
|
<linearGradient id="smoke-text" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||||
<stop offset="0%" style="stop-color: #00fff4; stop-opacity: 1" />
|
<stop offset="0%" style="stop-color: #00fff4; stop-opacity: 1" />
|
||||||
@ -15,9 +15,13 @@
|
|||||||
</defs>
|
</defs>
|
||||||
<text
|
<text
|
||||||
x="0"
|
x="0"
|
||||||
y="24"
|
:y="size"
|
||||||
fill="url(#smoke-text)"
|
fill="url(#smoke-text)"
|
||||||
:style="{ fontSize: '24px', letterSpacing: spacing || '2px' }"
|
:style="{
|
||||||
|
fontSize: `${size}px`,
|
||||||
|
letterSpacing: spacing || '2px',
|
||||||
|
fontFamily: 'Calibri, Verdana, sans-serif',
|
||||||
|
}"
|
||||||
>
|
>
|
||||||
{{ text | numberFilter }}
|
{{ text | numberFilter }}
|
||||||
</text>
|
</text>
|
||||||
@ -37,6 +41,10 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
default: "1px",
|
default: "1px",
|
||||||
},
|
},
|
||||||
|
size: {
|
||||||
|
type: Number,
|
||||||
|
default: 24,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
filters: {
|
filters: {
|
||||||
numberFilter(value) {
|
numberFilter(value) {
|
||||||
|
BIN
src/views/copilot/components/charts/base/icon.png
Normal file
BIN
src/views/copilot/components/charts/base/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
@ -42,6 +42,14 @@ export default {
|
|||||||
period: "日",
|
period: "日",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
// mounted() {
|
||||||
|
// document.body.style.minHeight = "1024px";
|
||||||
|
// document.body.style.minWidth = "1550px";
|
||||||
|
// },
|
||||||
|
// destroyed() {
|
||||||
|
// document.body.style.minHeight = "1024px";
|
||||||
|
// document.body.style.minWidth = "1550px";
|
||||||
|
// },
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -12,21 +12,19 @@
|
|||||||
<std-output :period="period" />
|
<std-output :period="period" />
|
||||||
</db-container>
|
</db-container>
|
||||||
<db-container class="chip-yield" title="芯片产出" icon="chip2">
|
<db-container class="chip-yield" title="芯片产出" icon="chip2">
|
||||||
<chip-output />
|
<chip-output :period="period" />
|
||||||
</db-container>
|
</db-container>
|
||||||
<db-container class="bipv-yield" title="BIPV产出" icon="bipv">
|
<db-container class="bipv-yield" title="BIPV产出" icon="bipv">
|
||||||
<bipv-output />
|
<bipv-output :period="period" />
|
||||||
</db-container>
|
</db-container>
|
||||||
</section>
|
</section>
|
||||||
<section class="bottom flex">
|
<section class="bottom flex">
|
||||||
<db-container class="fto-involve" title="FTO投入">
|
<db-container class="fto-involve" title="FTO投入">
|
||||||
<fto-invest :period="period" />
|
<fto-invest :period="period" />
|
||||||
</db-container>
|
</db-container>
|
||||||
<db-container
|
<db-container class="chip-involve" title="芯片投入" icon="chip">
|
||||||
class="chip-involve"
|
<chip-invest :period="period" />
|
||||||
title="芯片投入"
|
</db-container>
|
||||||
icon="chip"
|
|
||||||
></db-container>
|
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -37,6 +35,7 @@ import StdOutputVue from "../components/charts/StdOutput.vue";
|
|||||||
import ChipOutputVue from "../components/charts/ChipOutput.vue";
|
import ChipOutputVue from "../components/charts/ChipOutput.vue";
|
||||||
import FtoInvestVue from "../components/charts/FtoInvest.vue";
|
import FtoInvestVue from "../components/charts/FtoInvest.vue";
|
||||||
import BipvOutputVue from "../components/charts/BipvOutput.vue";
|
import BipvOutputVue from "../components/charts/BipvOutput.vue";
|
||||||
|
import ChipInvestVue from "../components/charts/ChipInvest.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "YieldCopilot",
|
name: "YieldCopilot",
|
||||||
@ -45,7 +44,8 @@ export default {
|
|||||||
StdOutput: StdOutputVue,
|
StdOutput: StdOutputVue,
|
||||||
ChipOutput: ChipOutputVue,
|
ChipOutput: ChipOutputVue,
|
||||||
BipvOutput: BipvOutputVue,
|
BipvOutput: BipvOutputVue,
|
||||||
FtoInvest: FtoInvestVue
|
FtoInvest: FtoInvestVue,
|
||||||
|
ChipInvest: ChipInvestVue,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
period: {
|
period: {
|
||||||
|
Loading…
Reference in New Issue
Block a user