feat:性能优化
@@ -6,8 +6,11 @@ export default {
|
||||
|
||||
onLaunch: function () {
|
||||
console.log("App Launch");
|
||||
const res = uni.getSystemInfoSync();
|
||||
uni.getSystemInfo({
|
||||
success: (res) => {
|
||||
uni.setStorageSync("platform", res.platform);
|
||||
}
|
||||
});
|
||||
// #ifdef APP-PLUS
|
||||
plus.navigator.closeSplashscreen(); // 立即关闭原生闪屏
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
import { KEFU_BASE_URL, Authorization } from '@/utils/config.js'
|
||||
import { getStorageFun, TOKEN_NAME } from '@/utils/auth.js'
|
||||
|
||||
export function getUnreadCount(userId) {
|
||||
const token = getStorageFun(TOKEN_NAME)
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: `${KEFU_BASE_URL}/kefu/user/unread-count`,
|
||||
method: 'GET',
|
||||
data: { userId },
|
||||
header: {
|
||||
Authorization,
|
||||
'HSM-AUTH': token || '',
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
success: response => {
|
||||
const body = response.data || {}
|
||||
if (response.statusCode >= 200 && response.statusCode < 300 && body.bizcode === 100) {
|
||||
resolve(Number(body.data || 0))
|
||||
return
|
||||
}
|
||||
resolve(0)
|
||||
},
|
||||
fail: () => resolve(0)
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -1,176 +0,0 @@
|
||||
<template>
|
||||
<view class="turntable-container" :style="{ backgroundColor: bgColor }">
|
||||
<view class="turntable" :style="turntableStyle" @click="startRotate">
|
||||
<!-- 奖项区域 -->
|
||||
<view
|
||||
v-for="(item, index) in prizes"
|
||||
:key="index"
|
||||
class="prize-sector"
|
||||
:style="getPrizeStyle(index)"
|
||||
>
|
||||
<view class="prize-text">{{ item.name }}</view>
|
||||
</view>
|
||||
|
||||
<!-- 装饰点 -->
|
||||
<view
|
||||
v-for="(item, index) in prizes"
|
||||
:key="'dot'+index"
|
||||
class="decorative-dot"
|
||||
:style="getDotStyle(index)"
|
||||
/>
|
||||
|
||||
<!-- 中心指针 -->
|
||||
<view class="center-pointer" />
|
||||
</view>
|
||||
|
||||
<button @click="startRotate">开始抽奖</button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
prizes: {
|
||||
type: Array,
|
||||
default: () => [
|
||||
{ name: "一等奖", color: "#FF4444" },
|
||||
{ name: "二等奖", color: "#66CC33" },
|
||||
{ name: "三等奖", color: "#44AAFF" },
|
||||
{ name: "谢谢参与", color: "#CCCCCC" }
|
||||
]
|
||||
},
|
||||
bgColor: {
|
||||
type: String,
|
||||
default: "#F0F0F0"
|
||||
},
|
||||
turntableColor: {
|
||||
type: String,
|
||||
default: "#FFFFFF"
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isRotating: false,
|
||||
currentRotation: 0
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
turntableStyle() {
|
||||
return {
|
||||
transform: `rotate(${this.currentRotation}deg)`,
|
||||
backgroundColor: this.turntableColor
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getPrizeStyle(index) {
|
||||
const total = this.prizes.length
|
||||
const angle = 360 / total
|
||||
return {
|
||||
clipPath: `polygon(50% 0%, 100% 0, 100% ${100 * (index + 1) / total}%, 50% 100%, 0 ${100 * index / total}%, 0 0)`,
|
||||
backgroundColor: this.prizes[index].color
|
||||
}
|
||||
},
|
||||
getDotStyle(index) {
|
||||
const total = this.prizes.length
|
||||
const angle = (360 / total) * index
|
||||
return {
|
||||
transform: `rotate(${angle}deg) translateX(70%)`,
|
||||
backgroundColor: this.prizes[index].color
|
||||
}
|
||||
},
|
||||
async startRotate() {
|
||||
if (this.isRotating) return
|
||||
|
||||
this.isRotating = true
|
||||
const targetIndex = Math.floor(Math.random() * this.prizes.length)
|
||||
const targetRotation = this.currentRotation + 360 * 5 + (360 / this.prizes.length) * targetIndex
|
||||
|
||||
await this.$nextTick()
|
||||
this.currentRotation = targetRotation
|
||||
|
||||
setTimeout(() => {
|
||||
this.isRotating = false
|
||||
this.$emit('result', this.prizes[targetIndex])
|
||||
}, 3000)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.turntable-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 20px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.turntable {
|
||||
position: relative;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
border-radius: 50%;
|
||||
transition: transform 3s ease-out;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.prize-sector {
|
||||
position: absolute;
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
left: 50%;
|
||||
top: 0;
|
||||
transform-origin: left bottom;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.prize-text {
|
||||
transform: rotate(45deg);
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.decorative-dot {
|
||||
position: absolute;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
top: 10%;
|
||||
left: 50%;
|
||||
}
|
||||
|
||||
.center-pointer {
|
||||
position: absolute;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 20px solid transparent;
|
||||
border-right: 20px solid transparent;
|
||||
border-top: 40px solid #333;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
button {
|
||||
margin-top: 20px;
|
||||
padding: 10px 20px;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
background-color: #44AAFF;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #3399FF;
|
||||
}
|
||||
</style>
|
||||
@@ -15,7 +15,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view v-else class="not_order_warp">
|
||||
<view class="not_order_warp_img"><up-image src="/static/common/not_search.png" width="100" height="100"
|
||||
<view class="not_order_warp_img"><up-image src="/pages/other_package/static/not_search.png" width="100" height="100"
|
||||
bgColor="#f1f6ff00"></up-image></view>
|
||||
<view class="not_order_msg_warp">暂时地址,快去地址管理添加吧~</view>
|
||||
</view>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<view class="choiceness_product" :class="platformType ? '' : 'iosplatformType'">
|
||||
<view v-for="item in productList" :key="item.id" class="choiceness_product_item" @click="jumpInfo(item)">
|
||||
<view>
|
||||
<up-image :src="item.url" width="100%" height="140" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image :lazy-load="true" :src="item.url" width="100%" height="140" bgColor="#f1f6ff00"></up-image>
|
||||
<view class="product_item_name">{{ item.title }}</view>
|
||||
</view>
|
||||
<view class="product_item_price">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<view class="seckill_card_container" @click="onSelectProct(item)">
|
||||
<!-- Left side image with optional countdown overlay -->
|
||||
<view class="seckill_card_left">
|
||||
<up-image :src="item.url || item.image || item.accessUrl" width="220rpx" height="220rpx" bgColor="#f1f6ff00"
|
||||
<up-image :lazy-load="true" :src="item.url || item.image || item.accessUrl" width="220rpx" height="220rpx" bgColor="#f1f6ff00"
|
||||
shape="square" radius="16rpx"></up-image>
|
||||
<view class="countdown_bar" v-if="showCountdown && countdownText">
|
||||
<text class="countdown_text">{{ countdownText }}</text>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<view class="ping-item" @click.stop="onClick">
|
||||
<view class="parity-product-item" @click.stop="onClick">
|
||||
<image class="top-img" :src="obj.url" mode="widthFix" lazy-load />
|
||||
<view class="shop-bottom-panel">
|
||||
<text class="title text-30 text-zu text-overflow">
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'PingItem',
|
||||
name: 'ParityProductItem',
|
||||
props: {
|
||||
obj: {
|
||||
type: Object,
|
||||
@@ -47,7 +47,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.ping-item {
|
||||
.parity-product-item {
|
||||
width: 332rpx;
|
||||
background: #fff;
|
||||
border-radius: 12rpx;
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<view class="shop-view" @click="onClick">
|
||||
<view class="shop-left-view">
|
||||
<image :src="obj.url"></image>
|
||||
<image :src="obj.url" lazy-load></image>
|
||||
</view>
|
||||
<view class="shop-right-view">
|
||||
<view class="right-top-view text-overflow1">
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<view class="shop-view" @click="onClick">
|
||||
<view class="shop-left-view">
|
||||
<image :src="obj.url"></image>
|
||||
<image :src="obj.url" lazy-load></image>
|
||||
</view>
|
||||
<view class="shop-right-view">
|
||||
<view class="shop-top-img">
|
||||
@@ -9,6 +9,8 @@
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script>
|
||||
<link rel="dns-prefetch" href="https://static.tbmall.xin" />
|
||||
<link rel="preconnect" href="https://static.tbmall.xin" crossorigin />
|
||||
<title></title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"appid" : "__UNI__4910728",
|
||||
"description" : "信任桥优品是一款集线上商城、线下联盟商家的DAO聚合商城;通过“有趣”“有利”“有希望”的卖货玩法,吸引消费者、推广者、商家、投资人参与生态,共同打造共创共享的全球产业生态。",
|
||||
"versionName" : "1.0.3",
|
||||
"versionCode" : 169,
|
||||
"versionCode" : 170,
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
@@ -164,6 +164,7 @@
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "wx376a16a88befe265",
|
||||
"lazyCodeLoading" : "requiredComponents",
|
||||
"setting" : {
|
||||
"urlCheck" : false,
|
||||
"minified" : true,
|
||||
|
||||
@@ -76,7 +76,6 @@
|
||||
"crypto-js": "^4.2.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"decimal.js": "^10.6.0",
|
||||
"echarts": "^5.1.2",
|
||||
"qs-canvas": "^1.0.11",
|
||||
"tabber-component": "^1.1.1",
|
||||
"vue-clipboard2": "^0.3.3",
|
||||
|
||||
@@ -291,14 +291,14 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "zhaopian/zhaopian",
|
||||
"path": "store-photo/store-photo",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTextStyle": "black"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "zhao/zhao",
|
||||
"path": "business-license/business-license",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTextStyle": "black"
|
||||
@@ -361,7 +361,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "shop/you-shop",
|
||||
"path": "shop/preferred-shop",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTextStyle": "black"
|
||||
@@ -375,7 +375,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "shop/fen-shop",
|
||||
"path": "shop/points-shop",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTextStyle": "black"
|
||||
@@ -431,31 +431,31 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "dongjian/index",
|
||||
"path": "insights/index",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "dongjian/jia",
|
||||
"path": "insights/acceleration",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "dongjian/finance",
|
||||
"path": "insights/finance",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "dongjian/check",
|
||||
"path": "insights/check",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "dongjian/search",
|
||||
"path": "insights/search",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
@@ -624,7 +624,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "zfb_payment/zfb_payment",
|
||||
"path": "alipay_payment/alipay_payment",
|
||||
"style": {
|
||||
"navigationBarTitleText": "支付",
|
||||
"navigationBarBackgroundColor": "#FFFFFF",
|
||||
@@ -704,6 +704,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"preloadRule": {
|
||||
"pages/home/home": {
|
||||
"network": "all",
|
||||
"packages": ["pages/mine_package", "pages/order_package", "pages/other_package"]
|
||||
},
|
||||
"pages/sort/sort": {
|
||||
"network": "all",
|
||||
"packages": ["pages/other_package", "pages/order_package"]
|
||||
},
|
||||
"pages/supply_chain/supply_chain": {
|
||||
"network": "all",
|
||||
"packages": ["pages/other_package", "pages/order_package"]
|
||||
},
|
||||
"pages/mine/mine": {
|
||||
"network": "all",
|
||||
"packages": ["pages/mine_package", "pages/rwa_package"]
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
//模式配置,仅开发期间生效
|
||||
"current": 0, //当前激活的模式(list 的索引项)
|
||||
|
||||
@@ -47,7 +47,7 @@ import { getCascadeCategory, getCarouselImage } from '@/api/common.js';
|
||||
import Header from '@/components/common/header.vue';
|
||||
import TopSafe from '@/components/common/top-safe.nvue';
|
||||
import MyBtn from '@/components/common/my-btn.vue';
|
||||
import PingItem from '@/components/shop/ping-item.vue';
|
||||
import ParityProductItem from '@/components/shop/parity-product-item.vue';
|
||||
import { getSeckillGoodsList, getSeckillCurrent, getSeckillPreview } from '@/api/product.js';
|
||||
import CustomTabBar from '@/components/custom-tab-bar.vue';
|
||||
import MescrollMixin from '@/components/mescroll-uni/mescroll-mixins.js';
|
||||
@@ -57,7 +57,7 @@ import { APP_PAGE_TYPE } from '@/utils/enumUtils.js';
|
||||
|
||||
export default {
|
||||
mixins: [MescrollMixin],
|
||||
components: { Header, TopSafe, MyBtn, PingItem, CustomTabBar, MescrollUni, productSeckillCard },
|
||||
components: { Header, TopSafe, MyBtn, ParityProductItem, CustomTabBar, MescrollUni, productSeckillCard },
|
||||
data() {
|
||||
return {
|
||||
swiperList: [],
|
||||
@@ -418,7 +418,7 @@ export default {
|
||||
|
||||
.fall-col {
|
||||
width: 332rpx;
|
||||
/* 与 PingItem 宽度一致 */
|
||||
/* 与 ParityProductItem 宽度一致 */
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ import { getCascadeCategory, getCarouselImage } from "@/api/common.js";
|
||||
import Header from "@/components/common/header.vue";
|
||||
import TopSafe from "@/components/common/top-safe.nvue";
|
||||
import MyBtn from "@/components/common/my-btn.vue";
|
||||
import PingItem from "@/components/shop/ping-item.vue";
|
||||
import ParityProductItem from "@/components/shop/parity-product-item.vue";
|
||||
import { searchList, } from "@/api/product.js";
|
||||
import CustomTabBar from "@/components/custom-tab-bar.vue";
|
||||
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
|
||||
@@ -59,7 +59,7 @@ import { APP_PAGE_TYPE } from "@/utils/enumUtils.js";
|
||||
|
||||
export default {
|
||||
mixins: [MescrollMixin],
|
||||
components: { Header, TopSafe, MyBtn, PingItem, CustomTabBar, MescrollUni, productSeckillCard },
|
||||
components: { Header, TopSafe, MyBtn, ParityProductItem, CustomTabBar, MescrollUni, productSeckillCard },
|
||||
data() {
|
||||
return {
|
||||
swiperList: [],
|
||||
@@ -344,7 +344,7 @@ export default {
|
||||
|
||||
.fall-col {
|
||||
width: 332rpx;
|
||||
/* 与 PingItem 宽度一致 */
|
||||
/* 与 ParityProductItem 宽度一致 */
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -36,7 +36,7 @@ import { getCascadeCategory, getCarouselImage } from "@/api/common.js";
|
||||
import Header from "@/components/common/header.vue";
|
||||
import TopSafe from "@/components/common/top-safe.nvue";
|
||||
import MyBtn from "@/components/common/my-btn.vue";
|
||||
import PingItem from "@/components/shop/ping-item.vue";
|
||||
import ParityProductItem from "@/components/shop/parity-product-item.vue";
|
||||
import { searchList } from "@/api/product.js";
|
||||
import CustomTabBar from "@/components/custom-tab-bar.vue";
|
||||
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
|
||||
@@ -46,7 +46,7 @@ import { APP_PAGE_TYPE } from "@/utils/enumUtils.js";
|
||||
|
||||
export default {
|
||||
mixins: [MescrollMixin],
|
||||
components: { Header, TopSafe, MyBtn, PingItem, CustomTabBar, MescrollUni, productSeckillCard },
|
||||
components: { Header, TopSafe, MyBtn, ParityProductItem, CustomTabBar, MescrollUni, productSeckillCard },
|
||||
data() {
|
||||
return {
|
||||
swiperList: [],
|
||||
@@ -314,7 +314,7 @@ export default {
|
||||
|
||||
.fall-col {
|
||||
width: 332rpx;
|
||||
/* 与 PingItem 宽度一致 */
|
||||
/* 与 ParityProductItem 宽度一致 */
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<!-- <up-loading-icon :show="productLoading"></up-loading-icon> -->
|
||||
<view class="yp_item" v-for="item in faddishProduct" :key="item.id" @click.stop="jumpInfo(item)">
|
||||
<view class="yp_item_image_wrapper">
|
||||
<image :src="item.url" mode="aspectFill" class="yp_item_image" shape="square" radius="15"></image>
|
||||
<image :src="item.url" mode="aspectFill" lazy-load class="yp_item_image" shape="square" radius="15"></image>
|
||||
<!-- <up-image :src="item.url" width="100%" height="88" bgColor="#f1f6ff00" shape="square"
|
||||
radius="15"></up-image> -->
|
||||
</view>
|
||||
@@ -409,7 +409,7 @@ export default {
|
||||
},
|
||||
jumpSearch() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/rwa_package/dongjian/search",
|
||||
url: "/pages/rwa_package/insights/search",
|
||||
});
|
||||
},
|
||||
// 商品列表
|
||||
@@ -524,7 +524,7 @@ export default {
|
||||
},
|
||||
onJumpYou() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/rwa_package/shop/you-shop",
|
||||
url: "/pages/rwa_package/shop/preferred-shop",
|
||||
});
|
||||
},
|
||||
checkUpdate() {
|
||||
@@ -662,7 +662,7 @@ export default {
|
||||
|
||||
jumpIntegral() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/rwa_package/shop/fen-shop",
|
||||
url: "/pages/rwa_package/shop/points-shop",
|
||||
});
|
||||
},
|
||||
jumpPage(path) {
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
<up-input placeholder="请输入密码" border="surround" v-model="form.password" :customStyle="inputCss"
|
||||
:type="isShow ? 'text' : 'password'" @change="checkParam">
|
||||
<template #suffix style="margin-right: 10rpx">
|
||||
<up-image v-if="isShow" src="/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-if="isShow" src="/pages/login_package/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="isShow = false"></up-image>
|
||||
<up-image v-else src="/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-else src="/pages/login_package/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="isShow = true"></up-image>
|
||||
</template>
|
||||
</up-input>
|
||||
@@ -56,12 +56,12 @@
|
||||
<view class="other_login">其他登录方式</view>
|
||||
<view class="login_other_icon">
|
||||
<view class="login_other_item" @click="wechatOneLogin">
|
||||
<up-image src="/static/login/WXICON.png" width="44" height="44" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/login_package/static/login/WXICON.png" width="44" height="44" bgColor="#f1f6ff00"></up-image>
|
||||
微信登录
|
||||
</view>
|
||||
<!-- <view class="login_other_item" @click="aa"> -->
|
||||
<view v-if="!isIOS" class="login_other_item" @click="alipayOneLogin">
|
||||
<up-image src="/static/login/ZFB.png" width="44" height="44" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/login_package/static/login/ZFB.png" width="44" height="44" bgColor="#f1f6ff00"></up-image>
|
||||
支付宝登录
|
||||
</view>
|
||||
</view>
|
||||
@@ -71,7 +71,7 @@
|
||||
<view class="other_login">其他登录方式</view>
|
||||
<!-- <view class="login_other_icon">
|
||||
<view class="login_other_item" @click="wechatOneLogin">
|
||||
<up-image src="/static/login/WXICON.png" width="44" height="44" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/login_package/static/login/WXICON.png" width="44" height="44" bgColor="#f1f6ff00"></up-image>
|
||||
微信登录
|
||||
</view>
|
||||
</view> -->
|
||||
@@ -112,7 +112,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import InputCodeComm from "@/components/code-comm/code-comm.vue";
|
||||
import InputCodeComm from "@/pages/login_package/components/code-comm/code-comm.vue";
|
||||
import {
|
||||
SMS_TYPE
|
||||
} from "@/utils/enumUtils.js";
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<view>{{ formatDate(item.ctdate) }}</view>
|
||||
<view class="browses_">
|
||||
<view>
|
||||
<up-image src="/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/login_package/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view style="margin-left: 8rpx;">{{ item.browses }}</view>
|
||||
</view>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<view>{{ formatDate(newsDetail.ctdate) }}</view>
|
||||
<view class="browses_">
|
||||
<view>
|
||||
<up-image src="/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/login_package/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view style="margin-left: 8rpx;">{{ newsDetail.browses }}</view>
|
||||
</view>
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
>
|
||||
</up-swiper>
|
||||
<view class="preference_title">
|
||||
<up-image src="/static/product/hw_l.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/product/hw_l.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<view class="msg">信任桥优选</view>
|
||||
<up-image src="/static/product/hw_r.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/product/hw_r.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view class="preference_product">
|
||||
<up-loading-page :loading="productListLoading"></up-loading-page>
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
<up-input placeholder="请输入登录密码" border="surround" v-model="form.loginPassword" :customStyle="inputCss"
|
||||
:type="loginPasswordIsShow ? 'text' : 'password'">
|
||||
<template #suffix style="margin-right: 10rpx;">
|
||||
<up-image v-if="loginPasswordIsShow" src="/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-if="loginPasswordIsShow" src="/pages/login_package/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="loginPasswordIsShow = false;"></up-image>
|
||||
<up-image v-else src="/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-else src="/pages/login_package/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="loginPasswordIsShow = true;"></up-image>
|
||||
</template>
|
||||
</up-input>
|
||||
@@ -39,9 +39,9 @@
|
||||
<up-input placeholder="再次输入登录密码" border="surround" v-model="form.loginPassword2" :customStyle="inputCss"
|
||||
:type="loginPassword2IsShow ? 'text' : 'password'">
|
||||
<template #suffix style="margin-right: 10rpx;">
|
||||
<up-image v-if="loginPassword2IsShow" src="/static/login/show.png" width="20" height="20"
|
||||
<up-image v-if="loginPassword2IsShow" src="/pages/login_package/static/login/show.png" width="20" height="20"
|
||||
bgColor="#f1f6ff00" @click="loginPassword2IsShow = false;"></up-image>
|
||||
<up-image v-else src="/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-else src="/pages/login_package/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="loginPassword2IsShow = true;"></up-image>
|
||||
</template>
|
||||
</up-input>
|
||||
@@ -55,8 +55,8 @@
|
||||
:type="transactionCodeIsShow ?'text':'password'"
|
||||
>
|
||||
<template #suffix style="margin-right: 10rpx;">
|
||||
<up-image v-if="transactionCodeIsShow" src="/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00" @click="transactionCodeIsShow=false;"></up-image>
|
||||
<up-image v-else src="/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00" @click="transactionCodeIsShow=true;"></up-image>
|
||||
<up-image v-if="transactionCodeIsShow" src="/pages/login_package/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00" @click="transactionCodeIsShow=false;"></up-image>
|
||||
<up-image v-else src="/pages/login_package/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00" @click="transactionCodeIsShow=true;"></up-image>
|
||||
</template>
|
||||
</up-input>
|
||||
</view> -->
|
||||
|
||||
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -12,9 +12,9 @@
|
||||
>
|
||||
</up-swiper>
|
||||
<view class="preference_title">
|
||||
<up-image src="/static/product/bk_l.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/product/bk_l.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<view class="msg">信任桥优品</view>
|
||||
<up-image src="/static/product/bk_r.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/product/bk_r.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view class="preference_product">
|
||||
<up-loading-page :loading="productListLoading"></up-loading-page>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<view class="mine_header" :style="headerStyle">
|
||||
<view class="mine_login_data" v-if="currentUserData && Object.keys(currentUserData).length !== 0">
|
||||
<view class="mine_data">
|
||||
<up-image
|
||||
<up-image :lazy-load="true"
|
||||
:src="currentUserData.avatarUrl ? currentUserData.avatarUrl : 'https://static.tbmall.xin/static/mine/avatar.png'"
|
||||
shape="circle" width="54" height="54" bgColor="#f1f6ff00"></up-image>
|
||||
<view class="mine_info">
|
||||
@@ -81,7 +81,7 @@
|
||||
<view class="mine_order_list">
|
||||
<view class="mine_fontsize_comm_warp order_list_item" v-for="item in orderTemplList" :key="item.id"
|
||||
@click="jumpOrder(item)">
|
||||
<up-image :src="item.url" width="28" height="28" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image :lazy-load="true" :src="item.url" width="28" height="28" bgColor="#f1f6ff00"></up-image>
|
||||
<view>{{ item.title }}</view>
|
||||
<up-badge :absolute="true" :offset="[-9, 9]" max="99"
|
||||
:customStyle="{ width: '40rpx', height: '32rpx', borderRadius: '45% 45% 45% 0', display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 0 }"
|
||||
@@ -93,7 +93,7 @@
|
||||
<view class="mine_content_comm_warp mine_top_comm_warp apply_list">
|
||||
<view class="apply_item mine_fontsize_comm_warp" v-for="item in applyList" :key="item.id"
|
||||
@click="jumpTool(item)">
|
||||
<up-image :src="item.url" width="36" height="36" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image :lazy-load="true" :src="item.url" width="36" height="36" bgColor="#f1f6ff00"></up-image>
|
||||
<view>{{ item.title }}</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -235,7 +235,7 @@ import CustomTabBar from '@/components/custom-tab-bar.vue';
|
||||
import { getStatistics } from '@/api/order.js';
|
||||
import { getUserInfo } from '@/api/auth.js';
|
||||
import { CUSTOMER_SERVICE_PHONE_NUMBER } from '@/utils/config.js';
|
||||
import { getUnreadCount as getKefuUnreadCount } from "@/uni_modules/hashmall-customer-service/js_sdk/api.js";
|
||||
import { getUnreadCount as getKefuUnreadCount } from "@/api/kefu.js";
|
||||
|
||||
export default {
|
||||
computed: {
|
||||
@@ -314,7 +314,7 @@ export default {
|
||||
id: 5,
|
||||
title: '数字积分',
|
||||
url: 'https://static.tbmall.xin/static/mine/tool_js.png',
|
||||
path: '/pages/rwa_package/dongjian/jia'
|
||||
path: '/pages/rwa_package/insights/acceleration'
|
||||
}
|
||||
// {
|
||||
// id: 3,
|
||||
@@ -388,7 +388,7 @@ export default {
|
||||
id: 12,
|
||||
title: '财务',
|
||||
url: 'https://static.tbmall.xin/static/mine/tool_cw.png',
|
||||
path: '/pages/rwa_package/dongjian/finance'
|
||||
path: '/pages/rwa_package/insights/finance'
|
||||
}
|
||||
// {
|
||||
// id: 11,
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view v-else class="not_order_warp">
|
||||
<view class="not_order_warp_img"><up-image src="/static/common/not_search.png" width="100" height="100"
|
||||
<view class="not_order_warp_img"><up-image src="/pages/other_package/static/not_search.png" width="100" height="100"
|
||||
bgColor="#f1f6ff00"></up-image></view>
|
||||
<view class="not_order_msg_warp">暂无地址,快去添加吧~</view>
|
||||
</view>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { bindBank } from '@/api/bank.js';
|
||||
import { bindBank } from '@/pages/mine_package/api/bank.js';
|
||||
import { getSupportBank } from '@/api/common.js';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<view class="bank_list">
|
||||
<view v-if="bankList.length !== 0" class="bank_item" v-for="item in bankList" :key="item.id">
|
||||
<view class="bank_data">
|
||||
<up-image :src="item.bankLogo || '/static/bank/default.png'" width="50" height="50"
|
||||
<up-image :src="item.bankLogo || '/pages/mine_package/static/bank/default.png'" width="50" height="50"
|
||||
bgColor="#f1f6ff00"></up-image>
|
||||
<view class="bank_info">
|
||||
<view class="bank_bank_name">{{ item.bankName }}</view>
|
||||
@@ -36,7 +36,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getBankList, bindBank, unbind } from '@/api/bank.js';
|
||||
import { getBankList, bindBank, unbind } from '@/pages/mine_package/api/bank.js';
|
||||
import { encipherBankNumber } from '@/utils/index.js';
|
||||
import Header from '@/components/header.vue';
|
||||
import { getUserInfo } from '@/api/auth.js'
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
<view class="card_comm">
|
||||
<view class="card_title_comm card_title_comm2">
|
||||
<view>推广业绩</view>
|
||||
<up-image src="/static/common/tips.png" width="16" height="16" bgColor="#f1f6ff00"
|
||||
<up-image src="/pages/rwa_package/static/tips.png" width="16" height="16" bgColor="#f1f6ff00"
|
||||
@click="openTeamShow = true;" />
|
||||
</view>
|
||||
<view class="performance">
|
||||
@@ -91,7 +91,7 @@
|
||||
<view class="card_item_comm">
|
||||
<view class="card_title_comm card_title_comm2">
|
||||
<view>奖励统计</view>
|
||||
<up-image src="/static/common/tips.png" width="16" height="16" bgColor="#f1f6ff00"
|
||||
<up-image src="/pages/rwa_package/static/tips.png" width="16" height="16" bgColor="#f1f6ff00"
|
||||
@click="openTcShow = true;" />
|
||||
</view>
|
||||
<view class="performance">
|
||||
@@ -197,7 +197,7 @@
|
||||
getAcctCategory,
|
||||
getRewardSummaryRecord,
|
||||
getRewardSummary
|
||||
} from '@/api/team.js';
|
||||
} from '@/pages/mine_package/api/team.js';
|
||||
import {
|
||||
formatDate
|
||||
} from '@/utils/index.js';
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getCascadeJunior, getJuniorSummary } from '@/api/team.js';
|
||||
import { getCascadeJunior, getJuniorSummary } from '@/pages/mine_package/api/team.js';
|
||||
import { getUserInfo } from '@/api/auth.js';
|
||||
import Header from '@/components/common/header.vue';
|
||||
import TopSafe from '@/components/common/top-safe.nvue'
|
||||
|
||||
@@ -1,415 +0,0 @@
|
||||
<template>
|
||||
<view class="my_team_list">
|
||||
<Header :leftTitle="$t('mine.my.team.title')" left-path-type="navigateTo" :leftPath="leftPath" />
|
||||
<view class="my_team_list_content">
|
||||
<view class="team_list_card">
|
||||
<view class="amount_">{{ (juniorSummaryData && juniorSummaryData.teamAmount) || 0 }}</view>
|
||||
<view class="amount_sum">总订单金额</view>
|
||||
<view class="comm_fg"></view>
|
||||
<view class="people_number">
|
||||
<view class="people_number_item">
|
||||
<view class="title_">总人数</view>
|
||||
<view class="value_">{{ (juniorSummaryData && juniorSummaryData.teamCount) || 0 }}</view>
|
||||
</view>
|
||||
<view class="comm_fg_s"></view>
|
||||
<view class="people_number_item">
|
||||
<view class="title_">推广人数</view>
|
||||
<view class="value_">{{ (juniorSummaryData && juniorSummaryData.ztCount) || 0 }}</view>
|
||||
</view>
|
||||
<!-- <view class="comm_fg_s"></view>
|
||||
<view class="people_number_item">
|
||||
<view class="title_">间推人数</view>
|
||||
<view class="value_">{{ (juniorSummaryData && juniorSummaryData.jtCount) || 0 }}</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="current_user_id" v-if="form.userId">当前用户ID:{{ form.userId }}</view>
|
||||
<view class="current_user_tips">
|
||||
<up-image src="/static/common/tips_b.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="openTcShow = true;" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="team_list_remarks">
|
||||
<view>注:所有数据均截至到进入页面的时间为止,返回再进入页面数据会更新</view>
|
||||
<view style="margin-left: 40rpx;">总订单金额统计的为所有已支付的订单金额</view>
|
||||
</view>
|
||||
<scroll-view scroll-y="true" @scrolltolower="loadMore" :style="{ 'height': 'calc(100vh - 500rpx)' }">
|
||||
<view class="team_item" v-for="(item, index) in listData" :key="item.id" v-if="listData && listData.length">
|
||||
<view class="team_header" @click="queryLowerFun(item, index)">
|
||||
<view class="header_left_">
|
||||
<view style="margin-top: 10rpx;">
|
||||
<up-image :src="item.userUrl || '/static/logo.png'" width="50" height="50" bgColor="#f1f6ff00"
|
||||
shape="circle" radius='16'></up-image>
|
||||
</view>
|
||||
<view class="right_data">
|
||||
<view class="name_">{{ item.userName || '信任桥优品用户' }}({{ item.gradeName }})</view>
|
||||
<view class="msg_">
|
||||
ID:{{ item.userId }}
|
||||
</view>
|
||||
<view class="msg_">
|
||||
注册时间:{{ formatDate(item.registTime) }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view>
|
||||
<up-image src="/static/common/right_x.png" width="20" height="20" bgColor="#f1f6ff00" radius='16'
|
||||
v-if="!item.isOpen"></up-image>
|
||||
<up-image src="/static/common/buttom_x.png" width="20" height="20" bgColor="#f1f6ff00" radius='16'
|
||||
v-else></up-image>
|
||||
</view>
|
||||
</view>
|
||||
<view style="padding: 10rpx;" v-if="item.isOpen && item.lowerData">
|
||||
<view class="team_lower">
|
||||
<view class="team_lower_item">
|
||||
<view class="title_">总订单金额</view>
|
||||
<view class="val_">{{ item.lowerData.teamAmount }}</view>
|
||||
</view>
|
||||
<view class="team_lower_fg"></view>
|
||||
<view class="team_lower_item">
|
||||
<view class="title_">直推人数</view>
|
||||
<view class="val_">{{ item.lowerData.ztCount }}</view>
|
||||
</view>
|
||||
<view class="team_lower_fg"></view>
|
||||
<view class="team_lower_item">
|
||||
<view class="title_">间推人数</view>
|
||||
<view class="val_">{{ item.lowerData.jtCount }}</view>
|
||||
</view>
|
||||
<view class="team_lower_fg"></view>
|
||||
<view class="team_lower_item">
|
||||
<view class="title_">总人数</view>
|
||||
<view class="val_">{{ item.lowerData.teamCount }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else class="not_order_warp">
|
||||
<up-image src="https://static.tbmall.xin/static/not_order.png" width="80" height="80"
|
||||
bgColor="#f1f6ff00"></up-image>
|
||||
<view class="not_order_msg_warp">暂无数据</view>
|
||||
</view>
|
||||
<view v-if="royaltyLoading" style="text-align: center;">加载中...</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<!-- 提成统计 -->
|
||||
<up-modal :show="openTcShow" :showConfirmButton="false">
|
||||
<view class="slot-content">
|
||||
<view class="close_warp" @click="openTcShow = false;">
|
||||
<up-image src="/static/common/close.png" width="20" height="20" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view class="content_">
|
||||
<view class="content_1">温馨提示</view>
|
||||
<view class="content_2">1、页面数据截至到进入该页面的时间统计</view>
|
||||
<view class="content_2">2、当前页面数据为主用户的数据</view>
|
||||
<view class="content_2">3、下方显示为全部的直推用户,点击后可跳转他/她的团队数据页,查看他/她的直推数据(也就是我的间推)</view>
|
||||
</view>
|
||||
<view class="but_">
|
||||
<view class="but_copy" @click="openTcShow = false;">确定</view>
|
||||
</view>
|
||||
</view>
|
||||
</up-modal>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getCascadeJunior, getJuniorSummary } from '@/api/team.js';
|
||||
import { formatDate } from '@/utils/index.js';
|
||||
import Header from '@/components/header.vue';
|
||||
|
||||
export default {
|
||||
components: { Header },
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
userId: 0,
|
||||
page: 1,
|
||||
pageSize: 15,
|
||||
},
|
||||
loading: false,
|
||||
listData: [],
|
||||
juniorSummaryData: {},// 统计
|
||||
leftPath: "/pages/mine_package/mine_my_team_list/mine_my_team_list",
|
||||
openTcShow: false,
|
||||
};
|
||||
},
|
||||
onLoad(option) {
|
||||
const id = option.id;
|
||||
if (id && id !== "null") {
|
||||
this.form.userId = id;
|
||||
} else {
|
||||
this.leftPath = '/pages/mine_package/mine_my_team/mine_my_team';
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadData();
|
||||
this.getJuniorSummary();
|
||||
},
|
||||
methods: {
|
||||
formatDate,
|
||||
jumpNextLevel(item) {
|
||||
const path = "/pages/mine_package/mine_my_team_list/mine_my_team_list?id=" + item.userId;
|
||||
this.leftPath = path;
|
||||
uni.navigateTo({
|
||||
url: path,
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查询统计数据
|
||||
*/
|
||||
async getJuniorSummary() {
|
||||
const resp = await getJuniorSummary();
|
||||
console.log("getJuniorSummary", resp);
|
||||
if (resp && resp.bizcode === 100) {
|
||||
this.juniorSummaryData = resp.data;
|
||||
}
|
||||
},
|
||||
|
||||
// 加载数据的方法
|
||||
async loadData() {
|
||||
if (this.loading) return; // 如果正在加载,则不重复加载
|
||||
this.loading = true; // 设置加载状态为true
|
||||
try {
|
||||
// 模拟异步获取数据,实际应用中应该替换为你的数据获取逻辑,例如API调用
|
||||
const newData = await this.fetchData();
|
||||
if (newData.entitys && newData.entitys.length !== 0) {
|
||||
const data = newData.entitys.map(item => ({ ...item, isOpen: false }));
|
||||
this.listData = [...this.listData, ...data]; // 将新数据添加到列表中
|
||||
this.form.page++; // 页码加1
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载数据失败:', error);
|
||||
} finally {
|
||||
this.loading = false; // 设置加载状态为false
|
||||
}
|
||||
},
|
||||
// 模拟获取数据的方法,实际应用中应该替换为你的数据获取逻辑,例如从服务器获取数据
|
||||
async fetchData() {
|
||||
const params = {
|
||||
...this.form,
|
||||
}
|
||||
const data = await getCascadeJunior(params);
|
||||
if (data && data.bizcode === 100 && data.data) {
|
||||
return data.data
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
// 当滚动到底部时触发的方法
|
||||
loadMore() {
|
||||
this.loadData(); // 加载更多数据
|
||||
},
|
||||
/**
|
||||
* 查询团队下级数据
|
||||
* @param {Object} item
|
||||
* @param {Object} index
|
||||
*/
|
||||
async queryLowerFun(item, index) {
|
||||
const data = this.listData[index];
|
||||
const type = !data.isOpen
|
||||
if (type) {
|
||||
const params = {
|
||||
userId: item.userId,
|
||||
}
|
||||
const resp = await getJuniorSummary(params);
|
||||
if (resp && resp.bizcode === 100) {
|
||||
data.lowerData = resp.data;
|
||||
}
|
||||
}
|
||||
data.isOpen = type;
|
||||
this.listData[index] = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.my_team_list {
|
||||
// height: calc(100vh - 58rpx);
|
||||
// overflow: auto;
|
||||
background-color: $app-bj;
|
||||
|
||||
.my_team_list_content {
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.team_list_card {
|
||||
background-color: $app-bt-bj;
|
||||
text-align: center;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
padding: 40rpx;
|
||||
border-radius: 15rpx;
|
||||
margin-bottom: 20rpx;
|
||||
position: relative;
|
||||
|
||||
.current_user_id {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: #33333340;
|
||||
padding: 10rpx;
|
||||
font-size: 22rpx;
|
||||
border-radius: 10rpx 0;
|
||||
}
|
||||
|
||||
.current_user_tips {
|
||||
position: absolute;
|
||||
top: 20rpx;
|
||||
right: 20rpx;
|
||||
}
|
||||
|
||||
.amount_ {
|
||||
font-weight: 500;
|
||||
font-size: 58rpx;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
|
||||
.amount_sum {
|
||||
font-size: 23rpx;
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
}
|
||||
|
||||
.comm_fg {
|
||||
border: 2rpx dashed rgba(255, 255, 255, 0.55);
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.comm_fg_s {
|
||||
width: 1rpx;
|
||||
height: 35rpx;
|
||||
background-color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
|
||||
.people_number {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.people_number_item {
|
||||
width: 30%;
|
||||
text-align: center;
|
||||
|
||||
.title_ {
|
||||
font-size: 23rpx;
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
line-height: 33rpx;
|
||||
}
|
||||
|
||||
.value_ {
|
||||
font-size: 38rpx;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
line-height: 54rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.team_list_remarks {
|
||||
font-size: 20rpx;
|
||||
color: #9E9E9E;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.team_item {
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.team_header {
|
||||
display: flex;
|
||||
align-content: center;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border-radius: 8rpx;
|
||||
background: #FFFFFF;
|
||||
padding: 20rpx;
|
||||
|
||||
.header_left_ {
|
||||
display: flex;
|
||||
align-items: inherit;
|
||||
width: calc(100% - 70rpx);
|
||||
}
|
||||
|
||||
.right_data {
|
||||
margin-left: 10rpx;
|
||||
// display: grid;
|
||||
}
|
||||
|
||||
.name_ {
|
||||
font-weight: bold;
|
||||
font-size: 30rpx;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.msg_ {
|
||||
font-weight: 500;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.team_lower {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background: #E9E9E9;
|
||||
border-radius: 4px;
|
||||
padding: 30rpx 20rpx;
|
||||
|
||||
.team_lower_fg {
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.26);
|
||||
height: 36rpx;
|
||||
}
|
||||
|
||||
.team_lower_item {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title_ {
|
||||
font-size: 10px;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
.val_ {
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
color: rgba(0, 0, 0, 0.9);
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.team_content {
|
||||
border-top: 1rpx solid #EEEEEE;
|
||||
padding: 20rpx 0 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.team_content_item {
|
||||
width: 50%;
|
||||
font-weight: 500;
|
||||
display: flex;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.team_content2_item {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.title_ {
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.content_ {
|
||||
font-size: 26rpx;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
|
||||
.content_1 {
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.content_2 {
|
||||
text-align: left;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -214,7 +214,7 @@
|
||||
<view class="content_2">如遇退/换货等问题,请联系客服处理</view>
|
||||
<view class="content_3">
|
||||
<view style="margin-left: 20rpx">
|
||||
<up-image src="/static/common/kf_dh.png" width="40" height="40" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/rwa_package/static/kf_dh.png" width="40" height="40" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view class="content_info" @click="onKefu">
|
||||
<view class="content_info_title" style="margin-top: 20rpx">在线客服</view>
|
||||
@@ -229,7 +229,7 @@
|
||||
</view>
|
||||
<!-- <view class="content_3">
|
||||
<view style="margin-left: 20rpx">
|
||||
<up-image src="/static/common/kf_wx.png" width="40" height="40" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/rwa_package/static/kf_wx.png" width="40" height="40" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view class="content_info">
|
||||
<view class="content_info_title">客服微信</view>
|
||||
@@ -290,7 +290,7 @@ import {
|
||||
AFTER_ORDER_STATUS,
|
||||
getValue,
|
||||
} from "@/utils/enumUtils.js";
|
||||
import { ORDER_STATUS_CSS } from "@/utils/enumCssUtils.js";
|
||||
import { ORDER_STATUS_CSS } from "@/pages/mine_package/utils/enumCssUtils.js";
|
||||
import DownPopup from "@/components/common/down-popup.vue";
|
||||
import {
|
||||
getOrderList,
|
||||
@@ -309,7 +309,7 @@ import { formatDate1, copyData } from "@/utils/index.js";
|
||||
import { getUserInfo } from "@/api/auth.js";
|
||||
import { CUSTOMER_SERVICE_PHONE_NUMBER } from "@/utils/config.js";
|
||||
import afterSales from "./after-sales/index";
|
||||
import refundPopup from "@/pages/mine_package/mine_order/after-sales/refund-popu.vue";
|
||||
import refundPopup from "@/pages/mine_package/mine_order/after-sales/refund-popup.vue";
|
||||
import { RETURN_REASON_LIST } from "@/pages/mine_package/mine_order/emun/index.js";
|
||||
export default {
|
||||
components: { DownPopup, afterSales, refundPopup },
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
@click="jumpLeft"></up-image>
|
||||
<view class="header_status">
|
||||
<view style="margin-top: 10rpx">
|
||||
<up-image src="/static/common/order_status_1.png" width="20" height="19"
|
||||
<up-image src="/pages/mine_package/static/order_status_1.png" width="20" height="19"
|
||||
bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<text class="msg">{{ getValue(ORDER_STATUS, orderInfo.status) }}</text>
|
||||
@@ -33,7 +33,7 @@
|
||||
<!-- 物流单号 -->
|
||||
<view class="address_info">
|
||||
<view class="address_data_warp">
|
||||
<up-image src="/static/common/waybill.png" width="20" height="20"
|
||||
<up-image src="/pages/rwa_package/static/waybill.png" width="20" height="20"
|
||||
bgColor="#f1f6ff00"></up-image>
|
||||
<view class="address_info_name">订单编号:</view>
|
||||
<view class="address_info_mobile" style="margin-right: 20rpx">{{
|
||||
@@ -154,7 +154,7 @@
|
||||
`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${orderInfo.antChainHash}`
|
||||
}}
|
||||
</view>
|
||||
<up-image style="margin-left: 8rpx" src="/static/rwa/copy.png" width="12" @click="
|
||||
<up-image style="margin-left: 8rpx" src="/pages/rwa_package/static/rwa/copy.png" width="12" @click="
|
||||
copyData(
|
||||
`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${orderInfo.antChainHash}`
|
||||
)
|
||||
@@ -227,7 +227,7 @@
|
||||
|
||||
<script>
|
||||
import { ORDER_TYPE, ORDER_STATUS, getValue } from "@/utils/enumUtils.js";
|
||||
import QrcodePreview from "@/pages/rwa_package/component/qrcode-preview.vue";
|
||||
import QrcodePreview from "@/components/qrcode-preview.vue";
|
||||
import {
|
||||
copyData,
|
||||
assembleAddress,
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<view class="bottom_item" @click.stop="onTip(vIndex)">
|
||||
<view class="bottom_item_lock">{{ item.lockAmount || 0 }}</view>
|
||||
<view class="bottom_item_title">{{ item.categoty === "raffle" ? "不可用次数" : "不可用余额" }}
|
||||
<up-image src="/static/common/tips.png" width="12" height="12" bgColor="#fff"
|
||||
<up-image src="/pages/rwa_package/static/tips.png" width="12" height="12" bgColor="#fff"
|
||||
style="margin-left: 8rpx; margin-top: 4rpx" v-if="item.categoty == 'balance'" />
|
||||
</view>
|
||||
</view>
|
||||
@@ -79,7 +79,7 @@
|
||||
<input class="form_input" v-model="collectForm.password" placeholder="请输入支付密码"
|
||||
:type="collectForm.showPassword ? 'text' : 'password'" />
|
||||
<view class="form_eye" @click="togglePassword">
|
||||
<up-image :src="collectForm.showPassword ? '/static/login/show.png' : '/static/login/hidden.png'"
|
||||
<up-image :src="collectForm.showPassword ? '/pages/login_package/static/login/show.png' : '/pages/login_package/static/login/hidden.png'"
|
||||
width="24" height="24" />
|
||||
</view>
|
||||
</view>
|
||||
@@ -196,7 +196,7 @@ export default {
|
||||
// url: "/pages/mine_package/mine_purse_exchange/mine_purse_exchange?amount=" + row.curAmount + "&category=" + row.categoty,
|
||||
// })
|
||||
uni.navigateTo({
|
||||
url: "/pages/rwa_package/shop/fen-shop",
|
||||
url: "/pages/rwa_package/shop/points-shop",
|
||||
});
|
||||
} else if (type === "transfer") {
|
||||
console.log("transfer转出...");
|
||||
@@ -209,7 +209,7 @@ export default {
|
||||
}else if (type === "deduction") {
|
||||
// 兑换
|
||||
uni.navigateTo({
|
||||
url: "/pages/rwa_package/shop/fen-shop",
|
||||
url: "/pages/rwa_package/shop/points-shop",
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
<script>
|
||||
import { getWithdrawalRule, withdrawal } from '@/api/finance.js';
|
||||
import { getBankList } from '@/api/bank.js';
|
||||
import { getBankList } from '@/pages/mine_package/api/bank.js';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
|
||||
@@ -142,7 +142,7 @@ export default {
|
||||
})
|
||||
}else if(type === 'contract'){
|
||||
uni.navigateTo({
|
||||
url:'/pages/rwa_package/dongjian/index'
|
||||
url:'/pages/rwa_package/insights/index'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import winningRecord from '@/components/winning_record.vue';
|
||||
import winningRecord from '@/pages/mine_package/components/winning_record.vue';
|
||||
|
||||
export default {
|
||||
components:{winningRecord},
|
||||
|
||||
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -325,7 +325,7 @@ import {
|
||||
} from "@/utils/payUtils.js";
|
||||
|
||||
import CryptoJS from "crypto-js";
|
||||
import CouponDialog from "./cpoun-dialog.vue";
|
||||
import CouponDialog from "./coupon-dialog.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -31,7 +31,7 @@ export default {
|
||||
if (paymentLink && paymentLink !== "null") {
|
||||
this.paymentLink = paymentLink; // 解码并设置支付链接
|
||||
uni.navigateTo({
|
||||
url: `/pages/other_package/zfb_payment/zfb_payment?link=${paymentLink}` // 假设有一个专门的支付页面来处理支付链接
|
||||
url: `/pages/other_package/alipay_payment/alipay_payment?link=${paymentLink}` // 假设有一个专门的支付页面来处理支付链接
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
>
|
||||
</up-swiper>
|
||||
<view class="preference_title">
|
||||
<up-image src="/static/product/bk_l.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/product/bk_l.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<view class="msg">信任桥积分</view>
|
||||
<up-image src="/static/product/bk_r.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/product/bk_r.png" width="60" height="2" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view class="preference_product">
|
||||
<up-loading-page :loading="productListLoading"></up-loading-page>
|
||||
|
||||
@@ -113,11 +113,11 @@
|
||||
<view class="concrete_item_title">购物保障</view>
|
||||
<view class="concrete_item_value concrete_item_bz">
|
||||
<view class="concrete_item_bz concrete_item_bz_item">
|
||||
<up-image src="/static/product/product_b.png" width="10" height="12" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/product/product_b.png" width="10" height="12" bgColor="#f1f6ff00"></up-image>
|
||||
<view class="concrete_item_bz_item_left">品质严保</view>
|
||||
</view>
|
||||
<view class="concrete_item_bz">
|
||||
<up-image src="/static/product/product_js.png" width="10" height="10" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/product/product_js.png" width="10" height="10" bgColor="#f1f6ff00"></up-image>
|
||||
<view class="concrete_item_bz_item_left">极速退款</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -149,17 +149,17 @@
|
||||
<view class="product_but_warp">
|
||||
<view class="product_but_left">
|
||||
<view class="left_item">
|
||||
<up-image src="/static/product/home_1.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image src="/pages/other_package/static/product/home_1.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="jumpOther('home')"></up-image>
|
||||
<view>首页</view>
|
||||
</view>
|
||||
<view class="left_item">
|
||||
<up-image src="/static/product/kefu.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image src="/pages/other_package/static/product/kefu.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="onZiXun"></up-image>
|
||||
<view>咨询</view>
|
||||
</view>
|
||||
<view class="left_item">
|
||||
<up-image src="/static/product/cart.png" width="24" height="20" bgColor="#f1f6ff00"
|
||||
<up-image src="/pages/other_package/static/product/cart.png" width="24" height="20" bgColor="#f1f6ff00"
|
||||
@click="jumpOther('cart')"></up-image>
|
||||
<view>购物车</view>
|
||||
</view>
|
||||
@@ -363,9 +363,7 @@ import SharePopup from "@/pages/other_package/components/share-popup.vue";
|
||||
import MyBtn from "@/components/common/my-btn.vue";
|
||||
import { getPostageQuery } from "@/api/cart.js";
|
||||
import { assembleAddress } from "@/utils/index.js";
|
||||
// const QSCanvas = require('qs-canvas')
|
||||
import QSCanvas from "qs-canvas";
|
||||
// import {getSharePoster} from "@/components/QuShe-SharerPoster/QS-SharePoster/QS-SharePoster.js";
|
||||
import func from "@/utils/func.js";
|
||||
import Address from "@/components/address.vue";
|
||||
import {
|
||||
@@ -997,7 +995,7 @@ export default {
|
||||
this.orderInfo = data;
|
||||
this.detailRich = this.orderInfo.detailInfo.replace(
|
||||
/<img([^>]*?)>/gi,
|
||||
'<img$1 style="max-width:100%;height:auto;display:block;">'
|
||||
'<img$1 style="max-width:100%;height:auto;display:block;" loading="lazy">'
|
||||
);
|
||||
}
|
||||
},
|
||||
@@ -1044,6 +1042,10 @@ export default {
|
||||
}
|
||||
this.swiperList = [currentThumb]; // 封面图
|
||||
this.calcSwiperHeight();
|
||||
this.detailRich = content.replace(
|
||||
/<img([^>]*?)>/gi,
|
||||
'<img$1 style="max-width:100%;height:auto;display:block;" loading="lazy">'
|
||||
);
|
||||
this.orderInfo = orderInfo;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view v-else class="not_order_warp">
|
||||
<view class="not_order_warp_img"><up-image src="/static/common/not_search.png" width="100" height="100" bgColor="#f1f6ff00"></up-image></view>
|
||||
<view class="not_order_warp_img"><up-image src="/pages/other_package/static/not_search.png" width="100" height="100" bgColor="#f1f6ff00"></up-image></view>
|
||||
<view class="not_order_msg_warp">暂无搜索记录</view>
|
||||
</view>
|
||||
</view> -->
|
||||
@@ -86,7 +86,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view v-else class="not_order_warp">
|
||||
<view class="not_order_warp_img"><up-image src="/static/common/not_search.png" width="100" height="100" bgColor="#f1f6ff00"></up-image></view>
|
||||
<view class="not_order_warp_img"><up-image src="/pages/other_package/static/not_search.png" width="100" height="100" bgColor="#f1f6ff00"></up-image></view>
|
||||
<view class="not_order_msg_warp">抱歉没有搜索此类商品~</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 767 B After Width: | Height: | Size: 767 B |
|
Before Width: | Height: | Size: 798 B After Width: | Height: | Size: 798 B |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 833 B After Width: | Height: | Size: 833 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -57,7 +57,7 @@
|
||||
<!-- 中奖记录 -->
|
||||
<view class="winning_record" @click="jumpWinningRecord">
|
||||
<view style="margin-top: 10rpx;">
|
||||
<up-image src="/static/turntable/record.png" width="14" height="14" bgColor="#f1f6ff00"></up-image>
|
||||
<up-image src="/pages/other_package/static/turntable/record.png" width="14" height="14" bgColor="#f1f6ff00"></up-image>
|
||||
</view>
|
||||
<view style="margin-left: 10rpx;">中奖记录</view>
|
||||
</view>
|
||||
|
||||
@@ -27,9 +27,9 @@
|
||||
<up-input placeholder="请输入密码" border="surround" v-model="form.pass" :customStyle="inputCss"
|
||||
:type="loginPasswordIsShow ? 'text' : 'password'">
|
||||
<template #suffix style="margin-right: 10rpx;">
|
||||
<up-image v-if="loginPasswordIsShow" src="/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-if="loginPasswordIsShow" src="/pages/login_package/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="loginPasswordIsShow = false;"></up-image>
|
||||
<up-image v-else src="/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-else src="/pages/login_package/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="loginPasswordIsShow = true;"></up-image>
|
||||
</template>
|
||||
</up-input>
|
||||
@@ -39,9 +39,9 @@
|
||||
<up-input placeholder="请输入密码" border="surround" v-model="form.passOne" :customStyle="inputCss"
|
||||
:type="loginPassword2IsShow ? 'text' : 'password'">
|
||||
<template #suffix style="margin-right: 10rpx;">
|
||||
<up-image v-if="loginPassword2IsShow" src="/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-if="loginPassword2IsShow" src="/pages/login_package/static/login/show.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="loginPassword2IsShow = false;"></up-image>
|
||||
<up-image v-else src="/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
<up-image v-else src="/pages/login_package/static/login/hidden.png" width="20" height="20" bgColor="#f1f6ff00"
|
||||
@click="loginPassword2IsShow = true;"></up-image>
|
||||
</template>
|
||||
</up-input>
|
||||
|
||||
@@ -175,7 +175,7 @@ import { getVcoinLocked, getVcoinReleaseLog, getUserExpendTbcList } from '@/api/
|
||||
import Header from '@/components/common/header.vue';
|
||||
import TopSafe from '@/components/common/top-safe.nvue'
|
||||
import DownPopup from '@/components/common/down-popup.vue';
|
||||
import { quickens } from '@/api/contract.js'
|
||||
import { quickens } from '@/pages/rwa_package/api/contract.js'
|
||||
import Decimal from 'decimal.js';
|
||||
import func from '@/utils/func.js'
|
||||
|
||||
@@ -349,7 +349,7 @@ export default {
|
||||
if (this.type) {
|
||||
//查看
|
||||
uni.navigateTo({
|
||||
url: `/pages/rwa_package/dongjian/check`
|
||||
url: `/pages/rwa_package/insights/check`
|
||||
})
|
||||
} else {
|
||||
//去签署
|
||||
@@ -40,7 +40,7 @@ import { getUserInfo } from '@/api/auth.js';
|
||||
import Header from '@/components/common/header.vue';
|
||||
import TopSafe from '@/components/common/top-safe.nvue'
|
||||
import ContractItem from './components/contract-item.vue'
|
||||
import { getContractList, fileUrls } from '@/api/contract.js'
|
||||
import { getContractList, fileUrls } from '@/pages/rwa_package/api/contract.js'
|
||||
import func from '@/utils/func.js';
|
||||
|
||||
export default {
|
||||
@@ -21,7 +21,7 @@ import Header from '@/components/common/header.vue';
|
||||
import TopSafe from '@/components/common/top-safe.nvue'
|
||||
import ContractItem from './components/contract-item.vue'
|
||||
import DownPopup from '@/components/common/down-popup.vue';
|
||||
import { getContractList, isSignContract, } from '@/api/contract.js'
|
||||
import { getContractList, isSignContract, } from '@/pages/rwa_package/api/contract.js'
|
||||
import { getSignUrl, getMiniProgramSignUrl, signContract } from '@/api/order.js';
|
||||
import func from '@/utils/func.js';
|
||||
|
||||
@@ -101,7 +101,7 @@ export default {
|
||||
if (this.type) {
|
||||
//查看
|
||||
uni.navigateTo({
|
||||
url: `/pages/rwa_package/dongjian/check`
|
||||
url: `/pages/rwa_package/insights/check`
|
||||
})
|
||||
} else {
|
||||
//去签署
|
||||
@@ -16,7 +16,7 @@
|
||||
<view class="btn-view">
|
||||
<view class="left-btn" @click="onLeft">
|
||||
<up-image
|
||||
src="/static/rwa/tx.png"
|
||||
src="/pages/rwa_package/static/rwa/tx.png"
|
||||
style="margin-right: 5rpx; margin-top: 2rpx"
|
||||
width="18"
|
||||
height="18"
|
||||
@@ -30,7 +30,7 @@
|
||||
</view>
|
||||
<view class="right-btn" @click="onRight">
|
||||
<up-image
|
||||
src="/static/rwa/jl.png"
|
||||
src="/pages/rwa_package/static/rwa/jl.png"
|
||||
style="margin-right: 5rpx; margin-top: 2rpx"
|
||||
width="18"
|
||||
height="18"
|
||||
@@ -60,7 +60,7 @@
|
||||
</view>
|
||||
<view class="add-address" @click="onAdd">
|
||||
<up-image
|
||||
src="/static/rwa/add.png"
|
||||
src="/pages/rwa_package/static/rwa/add.png"
|
||||
style="margin-right: 5rpx; margin-top: 2rpx"
|
||||
width="12"
|
||||
height="12"
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
<view class="add-address-tip">
|
||||
<up-image
|
||||
src="/static/common/tips.png"
|
||||
src="/pages/rwa_package/static/tips.png"
|
||||
width="16"
|
||||
height="16"
|
||||
bgColor="#f1f6ff00"
|
||||
|
||||
@@ -1,287 +0,0 @@
|
||||
<template>
|
||||
<view class="rwa_withdrawal">
|
||||
<Header leftTitle="共享计划终止" left-path-type="navigateTo" left-path="/pages/rwa_package/rwa/rwa" rightTitle="记录"
|
||||
rightPath="/pages/rwa_package/rwa_withdrawal_log/rwa_withdrawal_log?back=withdrawal" rightPathType="navigateTo" />
|
||||
<view class="rwa_withdrawal_content">
|
||||
<view class="_content">
|
||||
<view class="_content_usdt">
|
||||
<view>{{ categotyObj.name || 'USDT' }}</view>
|
||||
<view>{{ categotyObj.curAmount || 0 }}</view>
|
||||
</view>
|
||||
<view class="_content_item">
|
||||
<view class="_content_item_title">行权金额</view>
|
||||
<up-input placeholder="请输入行权金额" border="surround" v-model="form.amount" :customStyle="inputCss"></up-input>
|
||||
<view class="_content_item_msg">当前可行权余额 {{ categotyObj.curAmount || 0 }} {{ categotyObj.name || 'USDT' }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="_content_item" @click="accountShowCheck(true)">
|
||||
<view class="_content_item_title">行权账户</view>
|
||||
<view class="_content_item_account">
|
||||
<view v-if="accountName">{{ accountName }}</view>
|
||||
<view v-else style="color: #30313363;">请选择行权账户</view>
|
||||
<up-image src="/static/common/right.png" width="20" height="20" bgColor="#f1f6ff00" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="_content_item">
|
||||
<view class="_content_item_title">交易密码<text class="_content_item_setting_pwd"
|
||||
@click="jumpSettingPwd">《共享计划终止协议》</text></view>
|
||||
<up-input placeholder="请输入交易密码" border="surround" v-model="form.password" :customStyle="inputCss"></up-input>
|
||||
</view>
|
||||
<view class="_content_item">
|
||||
<view class="_content_item_title">备注</view>
|
||||
<up-input placeholder="请输入备注(可选)" border="surround" v-model="form.remark" :customStyle="inputCss"></up-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="add_but_css" @click="addWithdrawal">
|
||||
提交
|
||||
</view>
|
||||
</view>
|
||||
<DownPopup :show="tipsShow"
|
||||
title="股权交割协议"
|
||||
:contentText="text"
|
||||
articleTitle="股权交割协议"
|
||||
ok="我已知晓"
|
||||
@cancel="tipsShow = false"
|
||||
@ok="tipsShow = false"
|
||||
></DownPopup>
|
||||
<up-picker :show="accountShow" :columns="accountOption" keyName="account" itemHeight="34" @confirm="accountConfirm"
|
||||
:loading="accountLoading" @close="accountShowCheck(false)" @cancel="accountShowCheck(false)"></up-picker>
|
||||
<up-toast ref="uToastRef"></up-toast>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from '@/components/header.vue';
|
||||
import { getSupportBank } from '@/api/common.js';
|
||||
import { getAcctBalance, exchTransfer, getExchUsers } from '@/api/finance.js';
|
||||
import DownPopup from '@/components/common/down-popup.vue'
|
||||
import CryptoJS from 'crypto-js';
|
||||
export default {
|
||||
components: { Header,DownPopup },
|
||||
data() {
|
||||
return {
|
||||
categotyObj: {},// 可提现金额
|
||||
inputCss: {
|
||||
"height": '80rpx',
|
||||
"background": "#F5F5F5",
|
||||
"border-radius": "20rpx",
|
||||
"border": "0rpx",
|
||||
"padding-left": "16px",
|
||||
},
|
||||
form: {
|
||||
category: "vcoin",
|
||||
amount: '',
|
||||
password: '',
|
||||
acctIdtipsShow: '',
|
||||
remark: '',
|
||||
},
|
||||
accountName: null,
|
||||
accountShow: false,
|
||||
accountOption: [],
|
||||
accountLoading: false,
|
||||
tipsShow:false,
|
||||
text:`甲方(委托人):信任桥用户
|
||||
乙方(受托人): 信任桥(深圳)网络科技有限公司
|
||||
统一社会信用代码:91440300MAD3XHDP7C
|
||||
鉴于条款
|
||||
1. 甲乙双方已签署《消费型合伙人合作协议》《分红权代持协议》及《承诺书》(以下统称“原协议”),甲方通过购买TB信任桥商城产品取得分红权代持资格。
|
||||
2. 为规范甲方对“TBC”(TrustBridge Coin,信任桥数字权益凭证)的行权行为,明确双方权利义务,现就甲方将TBC转移至交易所变现事宜达成补充约定。
|
||||
第一条 定义与行权规则
|
||||
1. TBC行权变现:指甲方向乙方申请将其持有的TBC通过非关联交易所进行行权的行为。
|
||||
2. 自动失效条款:
|
||||
若甲方将TBC转移至非关联交易所进行行权变现,视为甲方单方终止原协议项下所有权利义务。
|
||||
甲方行权变现后,立即丧失以下权益:
|
||||
(1)TB信任桥商城产品分红权;
|
||||
(2)所有未兑现的分红收益;
|
||||
第二条 协议终止与责任划分
|
||||
1. 协议终止:
|
||||
甲方触发行权变现条件后,原协议、《分红权代持协议》及《承诺书》自动终止,双方权利义务关系终结。
|
||||
乙方有权立即冻结甲方账户,停止后续分红发放。
|
||||
2. 责任承担:
|
||||
甲方承诺行权变现行为合法合规,若因行权行为导致乙方或关联方遭受行政处罚、声誉损失或第三方索赔,甲方应承担全部赔偿责任。
|
||||
乙方对甲方行权后的资金流向不承担监管责任。
|
||||
第三条 特别提示与风险告知
|
||||
1. 风险警示:
|
||||
TBC行权变现可能涉及市场波动、汇率风险及合规风险,甲方应自行承担全部后果。
|
||||
乙方不对TBC的流通性、价值稳定性作出任何承诺。
|
||||
2. 合规要求:
|
||||
甲方承诺行权变现资金用途合法,不得用于非法活动或洗钱行为。
|
||||
若监管部门要求追溯资金来源或用途,甲方应全力配合并提供证明材料。
|
||||
第四条 生效条件
|
||||
1. 本补充协议自甲方点击确认后生效,与原协议具有同等法律效力。
|
||||
2. 本协议未尽事宜,以原协议约定为准;与原协议冲突的,以本协议为准。`
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
this.getAcctBalance();
|
||||
},
|
||||
methods: {
|
||||
// 查询余额
|
||||
async getAcctBalance() {
|
||||
const resp = await getAcctBalance();
|
||||
let data = {};
|
||||
if (resp && resp.bizcode === 100) {
|
||||
if (resp.data) {
|
||||
resp.data.map(item => {
|
||||
// 交易币
|
||||
if (item.categoty === "vcoin") {
|
||||
data = item;
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
this.categotyObj = data;
|
||||
},
|
||||
async addWithdrawal() {
|
||||
this.form.password = CryptoJS.MD5(this.form.password).toString()
|
||||
const params = this.form;
|
||||
|
||||
if (!params.amount) {
|
||||
this.$refs.uToastRef.show({
|
||||
type: 'error',
|
||||
message: "请输入行权金额",
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!params.acctId) {
|
||||
this.$refs.uToastRef.show({
|
||||
type: 'error',
|
||||
message: "请选择行权账户",
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!params.password) {
|
||||
this.$refs.uToastRef.show({
|
||||
type: 'error',
|
||||
message: "请输入交易密码",
|
||||
});
|
||||
return;
|
||||
}
|
||||
console.log("params", params);
|
||||
const resp = await exchTransfer(params);
|
||||
if (resp && resp.bizcode === 100) {
|
||||
this.$refs.uToastRef.show({
|
||||
type: 'success',
|
||||
message: "提交成功",
|
||||
});
|
||||
setTimeout(() => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/rwa_package/rwa/rwa',
|
||||
})
|
||||
}, 2000)
|
||||
}
|
||||
},
|
||||
// 选择账户的弹框
|
||||
async accountShowCheck(status) {
|
||||
if (status) {
|
||||
this.accountLoading = true;
|
||||
const params = {
|
||||
page: 1,
|
||||
pageSize: 99,
|
||||
}
|
||||
const resp = await getExchUsers(params);
|
||||
if (resp && resp.bizcode === 100) {
|
||||
this.accountOption = [resp.data.entitys] || [];
|
||||
}
|
||||
this.accountLoading = false;
|
||||
} else {
|
||||
this.accountOption = [[]];
|
||||
}
|
||||
this.accountShow = status;
|
||||
},
|
||||
// 提交
|
||||
accountConfirm(e) {
|
||||
const {
|
||||
columnIndex,
|
||||
value,
|
||||
values,
|
||||
index,
|
||||
} = e;
|
||||
if (!value || value.length === 0) {
|
||||
this.$refs.uToastRef.show({
|
||||
type: 'error',
|
||||
message: "请先选择账户",
|
||||
});
|
||||
return;
|
||||
}
|
||||
const data = value[0];
|
||||
this.form.acctId = data.id;
|
||||
this.accountName = data.account;
|
||||
this.accountShowCheck(false);
|
||||
},
|
||||
// 设置交易密码
|
||||
jumpSettingPwd() {
|
||||
this.tipsShow = true;
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/mine_package/mine_transaction_password/mine_transaction_password',
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.rwa_withdrawal {
|
||||
background: #F5F5F5;
|
||||
|
||||
.rwa_withdrawal_content {
|
||||
padding: 20rpx;
|
||||
height: calc(100vh - 198rpx);
|
||||
|
||||
._content {
|
||||
padding: 30rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 24rpx;
|
||||
margin-bottom: 60rpx;
|
||||
|
||||
._content_usdt {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-weight: bold;
|
||||
font-size: 30rpx;
|
||||
color: #333333;
|
||||
border-bottom: 2rpx solid #EEEEEE;
|
||||
padding: 0 0 20rpx;
|
||||
}
|
||||
|
||||
._content_item {
|
||||
margin-top: 30rpx;
|
||||
|
||||
._content_item_title {
|
||||
margin-bottom: 20rpx;
|
||||
font-weight: bold;
|
||||
font-size: 30rpx;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
._content_item_setting_pwd {
|
||||
color: $app-zt-color;
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
font-size: 26rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
._content_item_msg {
|
||||
font-weight: 500;
|
||||
font-size: 24rpx;
|
||||
color: #808080;
|
||||
margin-top: 16rpx;
|
||||
}
|
||||
|
||||
._content_item_account {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background: #F8F8F8;
|
||||
border-radius: 20rpx;
|
||||
padding: 30rpx 20rpx;
|
||||
font-weight: 500;
|
||||
font-size: 28rpx;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -13,7 +13,7 @@
|
||||
<!-- <view class="_content_item_no _content_item_no_buto" v-if="item.exchNo">股东流水号:{{item.exchNo}}</view> -->
|
||||
<view class="_content_item_but">
|
||||
<view class="_content_item_left">
|
||||
<up-image src="/static/rwa/account.png" width="40" height="40" bgColor="#f1f6ff00" />
|
||||
<up-image src="/pages/rwa_package/static/rwa/account.png" width="40" height="40" bgColor="#f1f6ff00" />
|
||||
<view class="_content_item_left_">
|
||||
<view class="_content_item_left_title">{{ item.name }}-{{ item.account }}</view>
|
||||
<view class="_content_item_left_val">{{
|
||||
@@ -40,7 +40,7 @@
|
||||
`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${item.antChainHash}`
|
||||
}}
|
||||
</view>
|
||||
<up-image style="margin-left: 8rpx" src="/static/rwa/copy.png" width="12" @click="
|
||||
<up-image style="margin-left: 8rpx" src="/pages/rwa_package/static/rwa/copy.png" width="12" @click="
|
||||
copyData(
|
||||
`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${item.antChainHash}`
|
||||
)
|
||||
@@ -91,7 +91,7 @@
|
||||
RWA_STATUS,
|
||||
getValue
|
||||
} from "@/utils/enumUtils.js";
|
||||
import QrcodePreview from "@/pages/rwa_package/component/qrcode-preview.vue";
|
||||
import QrcodePreview from "@/components/qrcode-preview.vue";
|
||||
export default {
|
||||
components: {
|
||||
Header,
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
<MyBtn class="mt-48" @ok="onOutLogin" text="退出登录"></MyBtn>
|
||||
</view>
|
||||
<up-toast ref="uToastRef"></up-toast>
|
||||
<!-- 腾讯电子签H5 → 集成到UniApp -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -274,10 +273,10 @@ export default {
|
||||
url = '/pages/rwa_package/accountSafe/accountSafe'
|
||||
break;
|
||||
case 1:
|
||||
url = '/pages/rwa_package/dongjian/index'
|
||||
url = '/pages/rwa_package/insights/index'
|
||||
break;
|
||||
case 2:
|
||||
url = '/pages/rwa_package/zhaopian/zhaopian'
|
||||
url = '/pages/rwa_package/store-photo/store-photo'
|
||||
break;
|
||||
case 3:
|
||||
url = '/pages/mine_package/mine_user_agreement/mine_user_agreement'
|
||||
|
||||
@@ -26,12 +26,12 @@
|
||||
<!-- 原来单个 v-for 替换成两列 -->
|
||||
<view class="mescrollUniView">
|
||||
<view class="fall-col">
|
||||
<PingItem v-for="(item, i) in leftList" :key="item.id" :obj="item" @ok="onJumpShop"
|
||||
class="ping-item" />
|
||||
<ParityProductItem v-for="(item, i) in leftList" :key="item.id" :obj="item" @ok="onJumpShop"
|
||||
class="parity-product-item" />
|
||||
</view>
|
||||
<view class="fall-col">
|
||||
<PingItem v-for="(item, i) in rightList" :key="item.id" :obj="item" @ok="onJumpShop"
|
||||
class="ping-item" />
|
||||
<ParityProductItem v-for="(item, i) in rightList" :key="item.id" :obj="item" @ok="onJumpShop"
|
||||
class="parity-product-item" />
|
||||
</view>
|
||||
</view>
|
||||
</mescroll-uni>
|
||||
@@ -50,11 +50,11 @@ import { getAcctBalance } from "@/api/finance.js";
|
||||
|
||||
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
|
||||
import MescrollUni from "@/components/mescroll-uni/mescroll-uni.vue";
|
||||
import PingItem from "@/components/shop/ping-item.vue";
|
||||
import ParityProductItem from "@/components/shop/parity-product-item.vue";
|
||||
|
||||
export default {
|
||||
mixins: [MescrollMixin],
|
||||
components: { Header, TopSafe, MyBtn, PingItem, MescrollUni, },
|
||||
components: { Header, TopSafe, MyBtn, ParityProductItem, MescrollUni, },
|
||||
data() {
|
||||
return {
|
||||
dataList: [],
|
||||
@@ -78,13 +78,13 @@
|
||||
</view>
|
||||
|
||||
<view class="setting-view">
|
||||
<YouItem
|
||||
<PreferredProductItem
|
||||
@ok="onJumpShop"
|
||||
style="margin-bottom: 24rpx"
|
||||
:obj="item"
|
||||
v-for="(item, index) in dataList"
|
||||
:key="index"
|
||||
></YouItem>
|
||||
></PreferredProductItem>
|
||||
</view>
|
||||
<up-toast ref="uToastRef"></up-toast>
|
||||
</view>
|
||||
@@ -94,12 +94,12 @@
|
||||
import shopHeader from "@/components/common/shopHeader.vue";
|
||||
import TopSafe from "@/components/common/top-safe.nvue";
|
||||
import MyBtn from "@/components/common/my-btn.vue";
|
||||
import YouItem from "@/components/shop/you-item.vue";
|
||||
import PreferredProductItem from "@/components/shop/preferred-product-item.vue";
|
||||
import { searchList } from "@/api/product.js";
|
||||
import { getCarouselImage } from "@/api/common.js";
|
||||
|
||||
export default {
|
||||
components: { shopHeader, TopSafe, MyBtn, YouItem },
|
||||
components: { shopHeader, TopSafe, MyBtn, PreferredProductItem },
|
||||
data() {
|
||||
return {
|
||||
dataList: [],
|
||||
@@ -132,7 +132,7 @@ export default {
|
||||
},
|
||||
jumpSearch() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/rwa_package/dongjian/search",
|
||||
url: "/pages/rwa_package/insights/search",
|
||||
});
|
||||
},
|
||||
// 跳转到商品详情
|
||||
@@ -10,7 +10,7 @@
|
||||
</Header>
|
||||
<view class="setting-view">
|
||||
<view class="name-box" v-if="dataList.length">
|
||||
<PingItem @ok="onJumpShop" style="margin-top:24rpx" :obj="item" v-for="(item,index) in dataList" :key="index"></PingItem>
|
||||
<ParityProductItem @ok="onJumpShop" style="margin-top:24rpx" :obj="item" v-for="(item,index) in dataList" :key="index"></ParityProductItem>
|
||||
</view>
|
||||
<view class="bottom-scroll-no " v-else>
|
||||
<text class="text-32" >暂无数据</text>
|
||||
@@ -27,9 +27,9 @@ import MyBtn from '@/components/common/my-btn.vue'
|
||||
import { searchList } from '@/api/product.js';
|
||||
import { getCascadeCategory } from '@/api/common.js';
|
||||
|
||||
import PingItem from "@/components/shop/ping-item.vue";
|
||||
import ParityProductItem from "@/components/shop/parity-product-item.vue";
|
||||
export default {
|
||||
components: { Header, TopSafe,MyBtn,PingItem },
|
||||
components: { Header, TopSafe,MyBtn,ParityProductItem },
|
||||
data() {
|
||||
return {
|
||||
dataList:[
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |