Commit b16c8cce authored by zhangsan's avatar zhangsan

1

parent 663f7447
> 1%
last 2 versions
not dead
iOS >= 10
Android >= 4.4
Chrome >= 49
\ No newline at end of file
......@@ -44,6 +44,7 @@
"axios": "^1.6.7",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10",
"echarts": "^5.6.0",
"mitt": "^3.0.1",
"qrcode": "^1.5.4",
"vant": "^4.8.5",
......
This diff is collapsed.
<template>
<div>
<canvas id="myChart" width="400" height="400"></canvas>
</div>
</template>
\ No newline at end of file
<script setup lang="ts">
import { onMounted, ref, onUnmounted } from "vue";
import * as echarts from "echarts/core";
import { BarChart, LineChart } from "echarts/charts";
import {
TitleComponent,
TooltipComponent,
GridComponent,
DataZoomComponent,
AxisPointerComponent,
LegendComponent,
} from "echarts/components";
import { CanvasRenderer } from "echarts/renderers";
import type { EChartsOption } from "echarts";
import request from "@/utils/request";
// 注册必需的组件
echarts.use([
TitleComponent,
TooltipComponent,
GridComponent,
DataZoomComponent,
AxisPointerComponent,
LegendComponent,
BarChart,
LineChart,
CanvasRenderer,
]);
const chartData = ref<Array<[string | number, number, number, number, number]>>(
[]
);
const chartRef = ref<HTMLElement>();
let chart: echarts.ECharts | null = null;
const initChart = () => {
if (!chartRef.value) return;
chart = echarts.init(chartRef.value);
const option: EChartsOption = {
animation: true,
// title: {
// text: '当前预估股权',
// left: 'center',
// top: 10,
// textStyle: {
// fontSize: 16,
// fontWeight: 500,
// color: '#333'
// }
// },
tooltip: {
trigger: "axis",
axisPointer: {
type: "line",
lineStyle: {
color: "#D61200",
width: 1,
type: "dashed",
},
},
backgroundColor: "rgba(255, 255, 255, 0.9)",
borderWidth: 0,
padding: [5, 8],
textStyle: {
fontSize: 13,
color: "#333",
},
formatter: function (params: any) {
const lineData = params[0];
if (lineData) {
return `
<div style="font-weight: 500;">
<div style="margin-bottom: 4px;">${lineData.axisValue}</div>
<div style="color: #D61200;">¥${lineData.data}</div>
</div>
`;
}
return "";
},
},
grid: [
{
left: "5%",
right: "5%",
top: "20px",
bottom: "20px",
containLabel: true,
},
],
xAxis: [
{
type: "category",
data: chartData.value.map((item): string | number => item[0]),
boundaryGap: false,
axisLine: {
show: true,
lineStyle: {
color: "#E5E5E5",
},
},
axisTick: {
show: false,
},
splitLine: { show: false },
axisLabel: {
fontSize: 11,
color: "#999",
padding: [10, 0],
formatter: (value: string) => {
// 如果是日期格式,可以格式化显示
return value.split(" ")[0];
},
},
},
],
yAxis: [
{
scale: true,
splitArea: {
show: false,
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
min: 0,
scale: false,
axisLabel: {
fontSize: 11,
color: "#999",
formatter: (value: number) => {
return value.toFixed(2);
},
margin: 16,
},
splitLine: {
show: true,
lineStyle: {
color: "#F5F5F5",
width: 1,
type: "dashed",
},
},
},
],
dataZoom: [
{
type: "inside",
xAxisIndex: [0],
start: 0,
end: 100,
minSpan: 20,
zoomOnMouseWheel: "shift",
moveOnMouseMove: true,
preventDefaultMouseMove: true,
moveOnMouseWheel: true,
},
],
series: [
{
name: "预估股权",
type: "line",
data: chartData.value.map((item) => item[4]),
smooth: true,
symbol: "circle",
symbolSize: 1,
showSymbol: false, // 默认不显示圆点
emphasis: {
scale: true,
symbolSize: 6, // hover时显示的圆点大小
},
itemStyle: {
color: "#D61200",
borderWidth: 2,
},
lineStyle: {
width: 3,
color: "#D61200",
shadowColor: "rgba(214, 18, 0, 0.2)",
shadowBlur: 10,
},
areaStyle: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: "rgba(214, 18, 0, 0.15)",
},
{
offset: 0.5,
color: "rgba(214, 18, 0, 0.05)",
},
{
offset: 1,
color: "rgba(214, 18, 0, 0)",
},
],
},
},
},
],
};
chart.setOption(option);
};
// 处理窗口大小变化
const handleResize = () => {
chart?.resize();
};
const getGuquan = async () => {
const res = await request.get("/yw1/listZxt");
chartData.value = res.data;
// 获取数据后重新初始化图表
initChart();
};
onMounted(() => {
getGuquan(); // 在组件挂载时获取数据
window.addEventListener("resize", handleResize);
});
onUnmounted(() => {
window.removeEventListener("resize", handleResize);
chart?.dispose();
});
</script>
<template>
<div ref="chartRef" class="k-line-chart"></div>
</template>
<style scoped>
.k-line-chart {
width: 100%;
height: 360px;
/* 增加图表高度 */
overflow: hidden;
-webkit-tap-highlight-color: transparent;
border-radius: 8px;
background: #fff;
padding: 10px;
}
</style>
......@@ -83,7 +83,7 @@ const handleTabClick = (tab: TabItem): void => {
</script>
<template>
<div v-if="isVisible" class="footer-wrap">
<div class="footer-wrap">
<div v-for="tab in tabs" :key="tab.id" class="footer-item" :class="{ active: activeTab === tab.path }"
@click="handleTabClick(tab)">
<div class="footer-item-content">
......
......@@ -8,9 +8,16 @@
<div class="bankcardwarp">
<img src="@/static/home/bankcard.png" />
<view class="cardnum" v-html="formatBankCardNumber(cardinfo?.bankNum)" />
<view class="createTime">
{{ getTime(cardinfo?.createTime) }}
</view>
<view class="createTime createTime1">
{{ getTime(cardinfo?.createTime,1) }}
</view>
</div>
<div class="buynow" @click="handleGetCard">
{{ !cardinfo?.bankNum ? '启用此卡' : '已启用此卡' }}
</div>
<div class="warpcard">
<div class="title">
......@@ -58,7 +65,18 @@ async function getUserInfo() {
} finally {
}
}
const getTime = (time, type) => {
const date = new Date(time); // 创建 Date 对象
const month = String(date.getMonth() + 1).padStart(2, '0'); // 获取月份并补齐为两位
const year = String(date.getFullYear()).slice(-2); // 获取年份的后两位
if (type === 1) {
const newYear = String(date.getFullYear() + 5).slice(-2); // 如果 type 是 1,年份加 5,并取后两位
return `${month}/${newYear}`;
} else {
return `${month}/${year}`; // 否则,返回当前年份的后两位
}
}
async function getCardList() {
try {
const res = await request.get('/ops/bankcard/list?cardtype=2');
......@@ -236,12 +254,24 @@ getNotices()
.cardnum {
position: absolute;
color: #000;
left: 60px;
left: 40px;
top: 130px;
font-size: 24px;
}
.createTime{
position: absolute;
color: #3d230c;
left: 80px;
top: 205px;
font-weight: 700;
font-size: 14px;
}
.createTime1{
left: 200px;
}
}
.buynow {
width: 291px;
height: 63px;
......
......@@ -33,7 +33,7 @@ const fetchData = async () => {
}
const handleJump = (item) => {
window.location.href = window.location.origin + `/product/detail?id=${item.productId}`
window.location.href = window.location.origin + `/product/detail.html?id=${item.productId}`
}
fetchData()
</script>
......
......@@ -57,6 +57,8 @@
const navigateTo = (path: string) => {
window.location.href = path
}
import { setToken } from '@/utils/auth'
import { encrypt } from '@/utils/encrypt'
import { ref, reactive } from 'vue'
import request from '@/utils/request'
import { showFailToast, showSuccessToast } from 'vant'
......@@ -119,22 +121,22 @@ function validateForm(): boolean {
async function handleSubmit() {
if (!validateForm()) return
if (loading.value) return
try {
loading.value = true
const res = await request.post('/register', {
username: formData.username,
password: formData.password,
username: encrypt(formData.username),
password: encrypt(formData.password),
code: '',
type: 'app',
type: encrypt('app'),
yqm: formData.inviteCode,
extend3: formData.extend3,
})
if (res.code === 200) {
showSuccessToast('注册成功')
setToken(res.token)
setTimeout(() => {
window.location.href = '/login.html'
navigateTo('/index.html')
}, 1000)
} else {
showFailToast(res.msg || '注册失败')
......
......@@ -17,9 +17,13 @@
</div>
</div>
</div>
<div class="yq-tips">
每邀请一位用户参加一带一路,即可获得2万银行储蓄金和5万股权
</div>
</div>
</defaultLayout>
</template>
<script setup>
......@@ -45,10 +49,16 @@ getuserinfo()
min-height: 100vh;
background: url('@/static/invite/bg1.png') no-repeat center center;
background-size: 100% 100%;
.yq-tips {
font-size: 14px;
color: red;
font-weight: bold;
padding: 0 20px 20px;
}
.yq-list {
padding-top: 330px;
.yq-item {
display: flex;
width: 100%;
......@@ -69,7 +79,7 @@ getuserinfo()
.yq-item-title {
font-size: 16px;
font-weight: bold;
color: #df594d;
color: red;
}
.yq-item-tips {
......
src/static/common/add.png

1.17 KB | W: | H:

src/static/common/add.png

383 Bytes | W: | H:

src/static/common/add.png
src/static/common/add.png
src/static/common/add.png
src/static/common/add.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/btn.png

30.9 KB | W: | H:

src/static/common/btn.png

5.81 KB | W: | H:

src/static/common/btn.png
src/static/common/btn.png
src/static/common/btn.png
src/static/common/btn.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/downloadbtn.png

49.7 KB | W: | H:

src/static/common/downloadbtn.png

8.08 KB | W: | H:

src/static/common/downloadbtn.png
src/static/common/downloadbtn.png
src/static/common/downloadbtn.png
src/static/common/downloadbtn.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/jiaoyi.png

1.38 KB | W: | H:

src/static/common/jiaoyi.png

391 Bytes | W: | H:

src/static/common/jiaoyi.png
src/static/common/jiaoyi.png
src/static/common/jiaoyi.png
src/static/common/jiaoyi.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/login.png

43.1 KB | W: | H:

src/static/common/login.png

5.87 KB | W: | H:

src/static/common/login.png
src/static/common/login.png
src/static/common/login.png
src/static/common/login.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/password.png

940 Bytes | W: | H:

src/static/common/password.png

299 Bytes | W: | H:

src/static/common/password.png
src/static/common/password.png
src/static/common/password.png
src/static/common/password.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/phone.png

601 Bytes | W: | H:

src/static/common/phone.png

246 Bytes | W: | H:

src/static/common/phone.png
src/static/common/phone.png
src/static/common/phone.png
src/static/common/phone.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/plus.png

891 Bytes | W: | H:

src/static/common/plus.png

322 Bytes | W: | H:

src/static/common/plus.png
src/static/common/plus.png
src/static/common/plus.png
src/static/common/plus.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/reg1.png

122 KB | W: | H:

src/static/common/reg1.png

21.8 KB | W: | H:

src/static/common/reg1.png
src/static/common/reg1.png
src/static/common/reg1.png
src/static/common/reg1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/tip.png

5.82 KB | W: | H:

src/static/common/tip.png

5.8 KB | W: | H:

src/static/common/tip.png
src/static/common/tip.png
src/static/common/tip.png
src/static/common/tip.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/wx.png

1.46 KB | W: | H:

src/static/common/wx.png

471 Bytes | W: | H:

src/static/common/wx.png
src/static/common/wx.png
src/static/common/wx.png
src/static/common/wx.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/yq.png

1.03 KB | W: | H:

src/static/common/yq.png

344 Bytes | W: | H:

src/static/common/yq.png
src/static/common/yq.png
src/static/common/yq.png
src/static/common/yq.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/yue.png

1.57 KB | W: | H:

src/static/common/yue.png

471 Bytes | W: | H:

src/static/common/yue.png
src/static/common/yue.png
src/static/common/yue.png
src/static/common/yue.png
  • 2-up
  • Swipe
  • Onion skin
src/static/common/zfb.png

2.8 KB | W: | H:

src/static/common/zfb.png

655 Bytes | W: | H:

src/static/common/zfb.png
src/static/common/zfb.png
src/static/common/zfb.png
src/static/common/zfb.png
  • 2-up
  • Swipe
  • Onion skin
src/static/guquan/bg.png

599 KB | W: | H:

src/static/guquan/bg.png

155 KB | W: | H:

src/static/guquan/bg.png
src/static/guquan/bg.png
src/static/guquan/bg.png
src/static/guquan/bg.png
  • 2-up
  • Swipe
  • Onion skin
src/static/guquan/kline.png

78.1 KB | W: | H:

src/static/guquan/kline.png

7.88 KB | W: | H:

src/static/guquan/kline.png
src/static/guquan/kline.png
src/static/guquan/kline.png
src/static/guquan/kline.png
  • 2-up
  • Swipe
  • Onion skin
src/static/guquan/topbox.png

60.5 KB | W: | H:

src/static/guquan/topbox.png

9.73 KB | W: | H:

src/static/guquan/topbox.png
src/static/guquan/topbox.png
src/static/guquan/topbox.png
src/static/guquan/topbox.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/code.png

32.1 KB | W: | H:

src/static/invite/code.png

3.69 KB | W: | H:

src/static/invite/code.png
src/static/invite/code.png
src/static/invite/code.png
src/static/invite/code.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/copy.png

653 Bytes | W: | H:

src/static/invite/copy.png

240 Bytes | W: | H:

src/static/invite/copy.png
src/static/invite/copy.png
src/static/invite/copy.png
src/static/invite/copy.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/copyl.png

1.8 KB | W: | H:

src/static/invite/copyl.png

528 Bytes | W: | H:

src/static/invite/copyl.png
src/static/invite/copyl.png
src/static/invite/copyl.png
src/static/invite/copyl.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/download.png

1.14 KB | W: | H:

src/static/invite/download.png

355 Bytes | W: | H:

src/static/invite/download.png
src/static/invite/download.png
src/static/invite/download.png
src/static/invite/download.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/ibg.png

6.16 KB | W: | H:

src/static/invite/ibg.png

2.1 KB | W: | H:

src/static/invite/ibg.png
src/static/invite/ibg.png
src/static/invite/ibg.png
src/static/invite/ibg.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/invite.png

26 KB | W: | H:

src/static/invite/invite.png

4.09 KB | W: | H:

src/static/invite/invite.png
src/static/invite/invite.png
src/static/invite/invite.png
src/static/invite/invite.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/logo.png

107 KB | W: | H:

src/static/invite/logo.png

17.8 KB | W: | H:

src/static/invite/logo.png
src/static/invite/logo.png
src/static/invite/logo.png
src/static/invite/logo.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/no.png

3.75 KB | W: | H:

src/static/invite/no.png

1.04 KB | W: | H:

src/static/invite/no.png
src/static/invite/no.png
src/static/invite/no.png
src/static/invite/no.png
  • 2-up
  • Swipe
  • Onion skin
src/static/invite/yes.png

3.77 KB | W: | H:

src/static/invite/yes.png

1.16 KB | W: | H:

src/static/invite/yes.png
src/static/invite/yes.png
src/static/invite/yes.png
src/static/invite/yes.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/1.png

38.2 KB | W: | H:

src/static/my/1.png

10.4 KB | W: | H:

src/static/my/1.png
src/static/my/1.png
src/static/my/1.png
src/static/my/1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/3.png

175 KB | W: | H:

src/static/my/3.png

30.6 KB | W: | H:

src/static/my/3.png
src/static/my/3.png
src/static/my/3.png
src/static/my/3.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a1.png

2.95 KB | W: | H:

src/static/my/a1.png

816 Bytes | W: | H:

src/static/my/a1.png
src/static/my/a1.png
src/static/my/a1.png
src/static/my/a1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a2.png

2.76 KB | W: | H:

src/static/my/a2.png

763 Bytes | W: | H:

src/static/my/a2.png
src/static/my/a2.png
src/static/my/a2.png
src/static/my/a2.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a3.png

4.01 KB | W: | H:

src/static/my/a3.png

953 Bytes | W: | H:

src/static/my/a3.png
src/static/my/a3.png
src/static/my/a3.png
src/static/my/a3.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a4.png

4.46 KB | W: | H:

src/static/my/a4.png

1017 Bytes | W: | H:

src/static/my/a4.png
src/static/my/a4.png
src/static/my/a4.png
src/static/my/a4.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a5.png

3.02 KB | W: | H:

src/static/my/a5.png

804 Bytes | W: | H:

src/static/my/a5.png
src/static/my/a5.png
src/static/my/a5.png
src/static/my/a5.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a6.png

3.61 KB | W: | H:

src/static/my/a6.png

901 Bytes | W: | H:

src/static/my/a6.png
src/static/my/a6.png
src/static/my/a6.png
src/static/my/a6.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a7.png

3.6 KB | W: | H:

src/static/my/a7.png

864 Bytes | W: | H:

src/static/my/a7.png
src/static/my/a7.png
src/static/my/a7.png
src/static/my/a7.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a8.png

3.1 KB | W: | H:

src/static/my/a8.png

816 Bytes | W: | H:

src/static/my/a8.png
src/static/my/a8.png
src/static/my/a8.png
src/static/my/a8.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/a9.png

3.14 KB | W: | H:

src/static/my/a9.png

787 Bytes | W: | H:

src/static/my/a9.png
src/static/my/a9.png
src/static/my/a9.png
src/static/my/a9.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/b1.png

4.57 KB | W: | H:

src/static/my/b1.png

999 Bytes | W: | H:

src/static/my/b1.png
src/static/my/b1.png
src/static/my/b1.png
src/static/my/b1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/b2.png

5.86 KB | W: | H:

src/static/my/b2.png

1.33 KB | W: | H:

src/static/my/b2.png
src/static/my/b2.png
src/static/my/b2.png
src/static/my/b2.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/btn.png

30.9 KB | W: | H:

src/static/my/btn.png

5.81 KB | W: | H:

src/static/my/btn.png
src/static/my/btn.png
src/static/my/btn.png
src/static/my/btn.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/kf.png

1.15 KB | W: | H:

src/static/my/kf.png

436 Bytes | W: | H:

src/static/my/kf.png
src/static/my/kf.png
src/static/my/kf.png
src/static/my/kf.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/level.png

3.38 KB | W: | H:

src/static/my/level.png

586 Bytes | W: | H:

src/static/my/level.png
src/static/my/level.png
src/static/my/level.png
src/static/my/level.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/money.png

290 KB | W: | H:

src/static/my/money.png

36.1 KB | W: | H:

src/static/my/money.png
src/static/my/money.png
src/static/my/money.png
src/static/my/money.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/qd.png

724 Bytes | W: | H:

src/static/my/qd.png

280 Bytes | W: | H:

src/static/my/qd.png
src/static/my/qd.png
src/static/my/qd.png
src/static/my/qd.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/teambg.png

207 KB | W: | H:

src/static/my/teambg.png

20.7 KB | W: | H:

src/static/my/teambg.png
src/static/my/teambg.png
src/static/my/teambg.png
src/static/my/teambg.png
  • 2-up
  • Swipe
  • Onion skin
src/static/my/tixian.png

1.91 KB | W: | H:

src/static/my/tixian.png

1.07 KB | W: | H:

src/static/my/tixian.png
src/static/my/tixian.png
src/static/my/tixian.png
src/static/my/tixian.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/111.png

660 KB | W: | H:

src/static/pages/111.png

163 KB | W: | H:

src/static/pages/111.png
src/static/pages/111.png
src/static/pages/111.png
src/static/pages/111.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/home/10.png

1.92 KB | W: | H:

src/static/pages/home/10.png

1.64 KB | W: | H:

src/static/pages/home/10.png
src/static/pages/home/10.png
src/static/pages/home/10.png
src/static/pages/home/10.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/home/11.png

1.47 KB | W: | H:

src/static/pages/home/11.png

1.42 KB | W: | H:

src/static/pages/home/11.png
src/static/pages/home/11.png
src/static/pages/home/11.png
src/static/pages/home/11.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/home/12.png

1.87 KB | W: | H:

src/static/pages/home/12.png

1.55 KB | W: | H:

src/static/pages/home/12.png
src/static/pages/home/12.png
src/static/pages/home/12.png
src/static/pages/home/12.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/home/13.png

289 KB | W: | H:

src/static/pages/home/13.png

236 KB | W: | H:

src/static/pages/home/13.png
src/static/pages/home/13.png
src/static/pages/home/13.png
src/static/pages/home/13.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/home/14.png

10.5 KB | W: | H:

src/static/pages/home/14.png

8.34 KB | W: | H:

src/static/pages/home/14.png
src/static/pages/home/14.png
src/static/pages/home/14.png
src/static/pages/home/14.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/home/9.png

1.69 KB | W: | H:

src/static/pages/home/9.png

1.51 KB | W: | H:

src/static/pages/home/9.png
src/static/pages/home/9.png
src/static/pages/home/9.png
src/static/pages/home/9.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/product/card1.png

81 KB | W: | H:

src/static/pages/product/card1.png

18.6 KB | W: | H:

src/static/pages/product/card1.png
src/static/pages/product/card1.png
src/static/pages/product/card1.png
src/static/pages/product/card1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/product/card2.png

83.7 KB | W: | H:

src/static/pages/product/card2.png

22.2 KB | W: | H:

src/static/pages/product/card2.png
src/static/pages/product/card2.png
src/static/pages/product/card2.png
src/static/pages/product/card2.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/product/card3.png

79.5 KB | W: | H:

src/static/pages/product/card3.png

19.5 KB | W: | H:

src/static/pages/product/card3.png
src/static/pages/product/card3.png
src/static/pages/product/card3.png
src/static/pages/product/card3.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/product/card4.png

81.8 KB | W: | H:

src/static/pages/product/card4.png

19.1 KB | W: | H:

src/static/pages/product/card4.png
src/static/pages/product/card4.png
src/static/pages/product/card4.png
src/static/pages/product/card4.png
  • 2-up
  • Swipe
  • Onion skin
src/static/pages/product/z2.png

30.4 KB | W: | H:

src/static/pages/product/z2.png

13.4 KB | W: | H:

src/static/pages/product/z2.png
src/static/pages/product/z2.png
src/static/pages/product/z2.png
src/static/pages/product/z2.png
  • 2-up
  • Swipe
  • Onion skin
src/static/signin/bg1.png

22.4 KB | W: | H:

src/static/signin/bg1.png

2.01 KB | W: | H:

src/static/signin/bg1.png
src/static/signin/bg1.png
src/static/signin/bg1.png
src/static/signin/bg1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/signin/gif.png

6.74 KB | W: | H:

src/static/signin/gif.png

2.56 KB | W: | H:

src/static/signin/gif.png
src/static/signin/gif.png
src/static/signin/gif.png
src/static/signin/gif.png
  • 2-up
  • Swipe
  • Onion skin
src/static/signin/gif1.png

55 KB | W: | H:

src/static/signin/gif1.png

12.3 KB | W: | H:

src/static/signin/gif1.png
src/static/signin/gif1.png
src/static/signin/gif1.png
src/static/signin/gif1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/signin/jl.png

2.66 KB | W: | H:

src/static/signin/jl.png

675 Bytes | W: | H:

src/static/signin/jl.png
src/static/signin/jl.png
src/static/signin/jl.png
src/static/signin/jl.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab1-active.png

1.17 KB | W: | H:

src/static/tabbar/tab1-active.png

409 Bytes | W: | H:

src/static/tabbar/tab1-active.png
src/static/tabbar/tab1-active.png
src/static/tabbar/tab1-active.png
src/static/tabbar/tab1-active.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab1.png

1.15 KB | W: | H:

src/static/tabbar/tab1.png

408 Bytes | W: | H:

src/static/tabbar/tab1.png
src/static/tabbar/tab1.png
src/static/tabbar/tab1.png
src/static/tabbar/tab1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab2-active.png

1.43 KB | W: | H:

src/static/tabbar/tab2-active.png

558 Bytes | W: | H:

src/static/tabbar/tab2-active.png
src/static/tabbar/tab2-active.png
src/static/tabbar/tab2-active.png
src/static/tabbar/tab2-active.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab2.png

1.43 KB | W: | H:

src/static/tabbar/tab2.png

559 Bytes | W: | H:

src/static/tabbar/tab2.png
src/static/tabbar/tab2.png
src/static/tabbar/tab2.png
src/static/tabbar/tab2.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab3-active.png

1.03 KB | W: | H:

src/static/tabbar/tab3-active.png

440 Bytes | W: | H:

src/static/tabbar/tab3-active.png
src/static/tabbar/tab3-active.png
src/static/tabbar/tab3-active.png
src/static/tabbar/tab3-active.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab3.png

1.01 KB | W: | H:

src/static/tabbar/tab3.png

453 Bytes | W: | H:

src/static/tabbar/tab3.png
src/static/tabbar/tab3.png
src/static/tabbar/tab3.png
src/static/tabbar/tab3.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab4-active.png

784 Bytes | W: | H:

src/static/tabbar/tab4-active.png

318 Bytes | W: | H:

src/static/tabbar/tab4-active.png
src/static/tabbar/tab4-active.png
src/static/tabbar/tab4-active.png
src/static/tabbar/tab4-active.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab4.png

778 Bytes | W: | H:

src/static/tabbar/tab4.png

333 Bytes | W: | H:

src/static/tabbar/tab4.png
src/static/tabbar/tab4.png
src/static/tabbar/tab4.png
src/static/tabbar/tab4.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab5-active.png

1.14 KB | W: | H:

src/static/tabbar/tab5-active.png

493 Bytes | W: | H:

src/static/tabbar/tab5-active.png
src/static/tabbar/tab5-active.png
src/static/tabbar/tab5-active.png
src/static/tabbar/tab5-active.png
  • 2-up
  • Swipe
  • Onion skin
src/static/tabbar/tab5.png

1.21 KB | W: | H:

src/static/tabbar/tab5.png

496 Bytes | W: | H:

src/static/tabbar/tab5.png
src/static/tabbar/tab5.png
src/static/tabbar/tab5.png
src/static/tabbar/tab5.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -73,7 +73,10 @@ class RequestHttp {
window.location.replace('/login.html');
showToast('连接失败,请联系在线客服');
}
if (error.response?.status === 404) {
window.location.replace('/login.html');
showToast('连接失败,请联系在线客服');
}
// 处理错误消息
const message = error.response?.data?.message || error.message;
if (Array.isArray(message)) {
......
......@@ -63,6 +63,7 @@ declare global {
const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
const provide: typeof import('vue')['provide']
const provideLocal: typeof import('@vueuse/core')['provideLocal']
......@@ -171,6 +172,7 @@ declare global {
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
const useGamepad: typeof import('@vueuse/core')['useGamepad']
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
const useId: typeof import('vue')['useId']
const useIdle: typeof import('@vueuse/core')['useIdle']
const useImage: typeof import('@vueuse/core')['useImage']
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
......@@ -186,6 +188,7 @@ declare global {
const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
const useMemoize: typeof import('@vueuse/core')['useMemoize']
const useMemory: typeof import('@vueuse/core')['useMemory']
const useModel: typeof import('vue')['useModel']
const useMounted: typeof import('@vueuse/core')['useMounted']
const useMouse: typeof import('@vueuse/core')['useMouse']
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
......@@ -231,6 +234,7 @@ declare global {
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
const useSupported: typeof import('@vueuse/core')['useSupported']
const useSwipe: typeof import('@vueuse/core')['useSwipe']
const useTemplateRef: typeof import('vue')['useTemplateRef']
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
......@@ -282,6 +286,6 @@ declare global {
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
import('vue')
}
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