uni-app update

This commit is contained in:
全栈小学生 2023-06-03 18:28:00 +08:00
parent 9d3d754ce1
commit 4281ac05f9
17 changed files with 279 additions and 236 deletions

View File

@ -4,12 +4,12 @@ import request from '@/utils/request'
*
*/
export function pay(data : AnyObject) {
return request.post(`/pay`, data, { showErrorMessage: true })
return request.post(`pay`, data, { showErrorMessage: true })
}
/**
*
*/
export function getPayInfo(outTradeNo : string) {
return request.get(`/pay/info/${outTradeNo}`, {}, { showErrorMessage: true })
return request.get(`pay/info/${outTradeNo}`, {}, { showErrorMessage: true })
}

View File

@ -1,29 +1,38 @@
<template>
<view @click="toRedirect">
<slot></slot>
</view>
<view @click="toRedirect">
<slot></slot>
</view>
</template>
<script setup lang="ts">
import { redirect } from '@/utils/common'
import { redirect, diyRedirect, currRoute, getToken } from '@/utils/common'
const prop = defineProps({
url: String,
data: {
type: Object,
default: () => {
return {}
}
},
mode: {
type: String,
default: 'navigateTo'
}
})
const prop = defineProps({
url: String,
data: {
type: Object,
default: () => {
return {}
}
},
mode: {
type: String,
default: 'navigateTo'
}
})
const toRedirect = () => {
redirect(prop)
}
const toRedirect = () => {
if (Object.keys(prop.data).length) {
if (!prop.data.url) return;
if (currRoute() == 'pages/member/index' && !getToken()) {
useLogin().setLoginBack({ url: prop.data.url })
return;
}
diyRedirect(prop.data);
} else {
redirect(prop)
}
}
</script>
<style lang="scss" scoped></style>

View File

@ -5,28 +5,31 @@
{{diyComponent.navTitle}}
</div>
<view v-if="diyComponent.layout == 'vertical'" class="graphic-nav">
<view class="graphic-nav-item flex items-center justify-between py-[30rpx] px-[32rpx]"
v-for=" (item, index) in diyComponent.list" :key="item.id"
:class="[index == 0 ? 'border-t-0':'border-t']" @click="redirectTo(item.link)">
<view class="graphic-nav-item" v-for=" (item, index) in diyComponent.list" :key="item.id">
<view class="graphic-img relative flex items-center w-10 h-10 mr-[20rpx]"
v-if="diyComponent.mode != 'text'"
:style="{ width: diyComponent.imageSize * 2 + 'rpx', height: diyComponent.imageSize * 2 + 'rpx' }">
<image :src="img(item.imageUrl)" mode="aspectFill"
:style="{ maxWidth: diyComponent.imageSize * 2 + 'rpx', maxHeight: diyComponent.imageSize * 2 + 'rpx', borderRadius: diyComponent.aroundRadius * 2 + 'rpx' }">
</image>
<text v-if="item.label.control"
class="tag absolute -top-[10rpx] -right-[24rpx] text-white rounded-[24rpx] rounded-bl-none transform scale-80 py-1 px-2 text-xs"
:style="{ color: item.label.textColor, backgroundImage: 'linear-gradient(' + item.label.bgColorStart + ',' + item.label.bgColorEnd + ')' }">
{{ item.label.text }}
<app-link :data="item.link" class="flex items-center justify-between py-[30rpx] px-[32rpx]"
:class="[index == 0 ? 'border-t-0':'border-t']">
<view class="graphic-img relative flex items-center w-10 h-10 mr-[20rpx]"
v-if="diyComponent.mode != 'text'"
:style="{ width: diyComponent.imageSize * 2 + 'rpx', height: diyComponent.imageSize * 2 + 'rpx' }">
<image :src="img(item.imageUrl)" mode="aspectFill"
:style="{ maxWidth: diyComponent.imageSize * 2 + 'rpx', maxHeight: diyComponent.imageSize * 2 + 'rpx', borderRadius: diyComponent.aroundRadius * 2 + 'rpx' }">
</image>
<text v-if="item.label.control"
class="tag absolute -top-[10rpx] -right-[24rpx] text-white rounded-[24rpx] rounded-bl-none transform scale-80 py-1 px-2 text-xs"
:style="{ color: item.label.textColor, backgroundImage: 'linear-gradient(' + item.label.bgColorStart + ',' + item.label.bgColorEnd + ')' }">
{{ item.label.text }}
</text>
</view>
<text v-if="diyComponent.mode != 'img'" class="graphic-text w-full truncate leading-normal"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">
{{ item.title }}
</text>
</view>
<u-icon name="arrow-right" color="#CACACA"></u-icon>
<text v-if="diyComponent.mode != 'img'" class="graphic-text w-full truncate leading-normal"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">
{{ item.title }}
</text>
<u-icon name="arrow-right" color="#CACACA"></u-icon>
</app-link>
</view>
@ -38,39 +41,43 @@
v-for="(numItem, numIndex) in Math.ceil(diyComponent.list.length / (diyComponent.pageCount * diyComponent.rowCount))">
<!-- #ifdef MP-WEIXIN -->
<view class="graphic-nav-item flex flex-col items-center box-border py-2" :class="[diyComponent.mode]"
v-for=" (item, index) in diyComponent.list" :key="item.id"
<view class="graphic-nav-item" :class="[diyComponent.mode]" v-for=" (item, index) in diyComponent.list"
:key="item.id"
v-if="index >= [(numItem) * (diyComponent.pageCount * diyComponent.rowCount)] && index < [(numItem+1) * (diyComponent.pageCount * diyComponent.rowCount)]"
:style="{ width: 100 / diyComponent.rowCount + '%' }" @click="redirectTo(item.link)">
:style="{ width: 100 / diyComponent.rowCount + '%' }">
<!-- #endif -->
<!-- #ifdef H5 -->
<view class="graphic-nav-item flex flex-col items-center box-border py-2"
:class="[diyComponent.mode]" v-for=" (item, index) in diyComponent.list" :key="item.id"
<view class="graphic-nav-item" :class="[diyComponent.mode]"
v-for=" (item, index) in diyComponent.list" :key="item.id"
v-if="index >= [(numItem - 1) * (diyComponent.pageCount * diyComponent.rowCount)] && index < [numItem * (diyComponent.pageCount * diyComponent.rowCount)]"
:style="{ width: 100 / diyComponent.rowCount + '%' }" @click="redirectTo(item.link)">
:style="{ width: 100 / diyComponent.rowCount + '%' }">
<!-- #endif -->
<view class="graphic-img relative flex items-center justify-center w-10 h-10"
v-if="diyComponent.mode != 'text'"
:style="{ width: diyComponent.imageSize * 2 + 'rpx', height: diyComponent.imageSize * 2 + 'rpx' }">
<image :src="img(item.imageUrl)" mode="aspectFill"
:style="{ maxWidth: diyComponent.imageSize * 2 + 'rpx', maxHeight: diyComponent.imageSize * 2 + 'rpx', borderRadius: diyComponent.aroundRadius * 2 + 'rpx' }">
</image>
<app-link :data="item.link" class="flex flex-col items-center box-border py-2">
<text
class="tag absolute -top-[10rpx] -right-[24rpx] text-white rounded-[24rpx] rounded-bl-none transform scale-80 py-1 px-2 text-xs"
v-if="item.label.control"
:style="{ color: item.label.textColor, backgroundImage: 'linear-gradient(' + item.label.bgColorStart + ',' + item.label.bgColorEnd + ')' }">
{{ item.label.text }}
<view class="graphic-img relative flex items-center justify-center w-10 h-10"
v-if="diyComponent.mode != 'text'"
:style="{ width: diyComponent.imageSize * 2 + 'rpx', height: diyComponent.imageSize * 2 + 'rpx' }">
<image :src="img(item.imageUrl)" mode="aspectFill"
:style="{ maxWidth: diyComponent.imageSize * 2 + 'rpx', maxHeight: diyComponent.imageSize * 2 + 'rpx', borderRadius: diyComponent.aroundRadius * 2 + 'rpx' }">
</image>
<text
class="tag absolute -top-[10rpx] -right-[24rpx] text-white rounded-[24rpx] rounded-bl-none transform scale-80 py-1 px-2 text-xs"
v-if="item.label.control"
:style="{ color: item.label.textColor, backgroundImage: 'linear-gradient(' + item.label.bgColorStart + ',' + item.label.bgColorEnd + ')' }">
{{ item.label.text }}
</text>
</view>
<text v-if="diyComponent.mode != 'img'"
class="graphic-text w-full text-center truncate leading-normal"
:class="{ 'pt-1.5' : diyComponent.mode != 'text' }"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">
{{ item.title }}
</text>
</view>
</app-link>
<text v-if="diyComponent.mode != 'img'"
class="graphic-text w-full text-center truncate leading-normal"
:class="{ 'pt-1.5' : diyComponent.mode != 'text' }"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">
{{ item.title }}
</text>
</view>
</swiper-item>
</swiper>
@ -81,29 +88,31 @@
<view class="uni-scroll-view-content">
<!-- #endif -->
<view class="graphic-nav-item flex flex-col items-center box-border py-2"
:class="{'flex-shrink-0' : diyComponent.showStyle == 'singleSlide'}"
<view class="graphic-nav-item" :class="{'flex-shrink-0' : diyComponent.showStyle == 'singleSlide'}"
v-for="(item, index) in diyComponent.list" :key="item.id"
:style="{ width: 100 / diyComponent.rowCount + '%' }" @click="redirectTo(item.link)">
<view class="graphic-img relative flex items-center justify-center w-10 h-10"
v-if="diyComponent.mode != 'text'"
:style="{ width: diyComponent.imageSize * 2 + 'rpx', height: diyComponent.imageSize * 2 + 'rpx' }">
<image :src="img(item.imageUrl)" mode="aspectFill"
:style="{ maxWidth: diyComponent.imageSize * 2 + 'rpx', maxHeight: diyComponent.imageSize * 2 + 'rpx', borderRadius: diyComponent.aroundRadius * 2 + 'rpx' }">
</image>
<text
:class="['tag absolute -top-[10rpx] -right-[24rpx] text-white rounded-[24rpx] rounded-bl-none transform scale-80 py-1 px-2 text-xs']"
v-if="item.label.control"
:style="{ color: item.label.textColor, backgroundImage: 'linear-gradient(' + item.label.bgColorStart + ',' + item.label.bgColorEnd + ')' }">
{{ item.label.text }}
:style="{ width: 100 / diyComponent.rowCount + '%' }">
<app-link :data="item.link" class="flex flex-col items-center box-border py-2">
<view class="graphic-img relative flex items-center justify-center w-10 h-10"
v-if="diyComponent.mode != 'text'"
:style="{ width: diyComponent.imageSize * 2 + 'rpx', height: diyComponent.imageSize * 2 + 'rpx' }">
<image :src="img(item.imageUrl)" mode="aspectFill"
:style="{ maxWidth: diyComponent.imageSize * 2 + 'rpx', maxHeight: diyComponent.imageSize * 2 + 'rpx', borderRadius: diyComponent.aroundRadius * 2 + 'rpx' }">
</image>
<text
:class="['tag absolute -top-[10rpx] -right-[24rpx] text-white rounded-[24rpx] rounded-bl-none transform scale-80 py-1 px-2 text-xs']"
v-if="item.label.control"
:style="{ color: item.label.textColor, backgroundImage: 'linear-gradient(' + item.label.bgColorStart + ',' + item.label.bgColorEnd + ')' }">
{{ item.label.text }}
</text>
</view>
<text v-if="diyComponent.mode != 'img'"
class="graphic-text w-full text-center truncate leading-normal"
:class="{ 'pt-1.5' : diyComponent.mode != 'text' }"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">
{{ item.title }}
</text>
</view>
<text v-if="diyComponent.mode != 'img'"
class="graphic-text w-full text-center truncate leading-normal"
:class="{ 'pt-1.5' : diyComponent.mode != 'text' }"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">
{{ item.title }}
</text>
</app-link>
</view>
<!-- #ifdef MP -->

View File

@ -1,18 +1,21 @@
<template>
<view class="image-ads" :style="warpCss">
<view v-if="diyComponent.list.length == 1" class="leading-0 overflow-hidden"
@click="diyRedirect(diyComponent.list[0].link)" :style="swiperWarpCss">
<image :src="img(diyComponent.list[0].imageUrl)" :style="{height: diyComponent.list[0].height}"
mode="widthFix" class="w-full" :show-menu-by-longpress="true"></image>
<view v-if="diyComponent.list.length == 1" class="leading-0 overflow-hidden" :style="swiperWarpCss">
<app-link :data="diyComponent.list[0].link">
<image :src="img(diyComponent.list[0].imageUrl)" :style="{height: diyComponent.imageHeight}"
mode="scaleToFill" class="w-full" :show-menu-by-longpress="true"></image>
</app-link>
</view>
<swiper v-else class="swiper" :style="{ height: swiperHeight }" autoplay="true" circular="true"
<swiper v-else class="swiper" :style="{ height: diyComponent.imageHeight }" autoplay="true" circular="true"
@change="swiperChange">
<swiper-item class="swiper-item" v-for="(item) in diyComponent.list" :key="item.id"
@click="diyRedirect(item.link)" :style="swiperWarpCss">
<view class="item" :style="{height: item.height}">
<image :src="img(item.imageUrl)" mode="scaleToFill" class="w-full h-full"></image>
</view>
<swiper-item class="swiper-item" v-for="(item) in diyComponent.list" :key="item.id" :style="swiperWarpCss">
<app-link :data="item.link">
<view class="item" :style="{height: diyComponent.imageHeight}">
<image :src="img(item.imageUrl)" mode="scaleToFill" class="w-full h-full"
:show-menu-by-longpress="true"></image>
</view>
</app-link>
</swiper-item>
</swiper>
</view>
@ -21,7 +24,7 @@
<script lang="ts" setup>
// 广
import { ref, onMounted, watch, computed } from 'vue';
import { img, diyRedirect } from '@/utils/common';
import { img } from '@/utils/common';
import useDiyStore from '@/stores/diy';
const props = defineProps(['component', 'index']);
@ -56,31 +59,8 @@
swiperIndex.value = e.detail.current;
};
const swiperHeight = ref('');
const handleData = () => {
let minHeight = 0;
swiperHeight.value = '0rpx';
diyComponent.value.list.forEach((item, index) => {
uni.getSystemInfo({
success: res => {
var ratio = item.imgHeight / item.imgWidth;
item.width = res.windowWidth;
item.height = item.width * ratio;
}
});
// if (maxHeight == 0 || maxHeight < item.imgHeight) maxHeight = item.imgHeight;
if (minHeight == 0 || minHeight > item.height) minHeight = item.height;
});
diyComponent.value.list.forEach((item, index) => {
item.height = minHeight * 2 + 'rpx';
swiperHeight.value = minHeight * 2 + 'rpx';
});
diyComponent.value.imageHeight = (diyComponent.value.imageHeight * 2) + 'rpx';
};
onMounted(() => {

View File

@ -1,30 +1,36 @@
<template>
<view class="diy-text" @click="redirect(diyComponent.link)" :style="warpCss">
<view class="diy-text" :style="warpCss">
<view v-if="diyComponent.style == 'style-1'" class="p-[20rpx]">
<view class="" :style="{
<app-link :data="diyComponent.link">
<view :style="{
fontSize: diyComponent.fontSize * 2 + 'rpx',
color: diyComponent.textColor,
fontWeight: diyComponent.fontWeight,
textAlign : diyComponent.textAlign
}">
{{ diyComponent.text }}
</view>
{{ diyComponent.text }}
</view>
</app-link>
</view>
<view v-if="diyComponent.style == 'style-2'" class="p-[20rpx] flex items-center">
<view class="max-w-[200rpx] truncate" :style="{
<app-link :data="diyComponent.link">
<view class="max-w-[200rpx] truncate" :style="{
fontSize: diyComponent.fontSize * 2 + 'rpx',
color: diyComponent.textColor,
fontWeight: diyComponent.fontWeight
}">
{{ diyComponent.text }}
</view>
{{ diyComponent.text }}
</view>
</app-link>
<text class="ml-[16rpx] max-w-[300rpx] truncate" :style="{ color: diyComponent.subTitle.color,
fontSize: diyComponent.subTitle.fontSize * 2 + 'rpx', }">{{ diyComponent.subTitle.text }}</text>
<view class="ml-auto text-right flex items-center" v-if="diyComponent.more.isShow"
:style="{ color: diyComponent.more.color }" @click.stop="redirect(diyComponent.more.link)">
<text class="max-w-[200rpx] truncate text-[24rpx] mr-[8rpx]">{{ diyComponent.more.text }}</text>
<u-icon name="arrow-right" size="12" :style="{ color: diyComponent.more.color }"></u-icon>
<view class="ml-auto text-right " v-if="diyComponent.more.isShow"
:style="{ color: diyComponent.more.color }">
<app-link :data="diyComponent.more.link" class="flex items-center">
<text class="max-w-[200rpx] truncate text-[24rpx] mr-[8rpx]">{{ diyComponent.more.text }}</text>
<u-icon name="arrow-right" size="12" :style="{ color: diyComponent.more.color }"></u-icon>
</app-link>
</view>
</view>
</view>

View File

@ -1,5 +1,5 @@
import { nextTick } from 'vue'
import { currRoute } from '@/utils/common'
import { setDocumentTitle } from '@/utils/common'
class Language {
private i18n: any
@ -13,13 +13,19 @@ class Language {
*
* @param locale
*/
public setI18nLanguage(locale: string) {
public setI18nLanguage(locale: string, path: string) {
if (this.i18n.mode === 'legacy') {
this.i18n.global.locale = locale
} else {
this.i18n.global.locale = locale
}
uni.setLocale(locale)
// #ifdef H5
if (process.env.NODE_ENV == 'production') {
setDocumentTitle(path)
}
// #endif
}
/**
@ -33,17 +39,17 @@ class Language {
const file = path == '/' ? 'pages.index.index' : path.replace('/', '').replaceAll('/', '.')
// 是否已加载
if (this.loadLocale.includes(`${locale}/${file}`)) {
this.setI18nLanguage(locale)
this.setI18nLanguage(locale, file)
return nextTick()
}
this.loadLocale.push(`${locale}/${file}`)
// 引入语言包文件
const messages = await import(`./${locale}/${file}.json`)
this.i18n.global.mergeLocaleMessage(locale, messages.default)
this.setI18nLanguage(locale)
this.setI18nLanguage(locale, path)
return nextTick()
} catch(e) {
this.setI18nLanguage(locale)
this.setI18nLanguage(locale, path)
return nextTick()
}
}

View File

@ -1,20 +1,31 @@
{
// pages.json
"pages.index.index": "",
"pages.index.close": "站点已关闭",
"pages.index.nosite": "站点不存在",
"pages.index.develop": "开发环境配置",
"pages.index.diy": "",
"pages.article.list": "资讯中心",
"pages.article.detail": "文章详情",
"pages.member.index": "",
"pages.auth.agreement": "协议",
"pages.auth.bind": "绑定手机号",
"pages.auth.login": "登录",
"pages.auth.register": "注册",
"pages.auth.resetpwd": "找回密码",
"pages.setting.index": "设置",
"pages.auth.bind": "绑定手机号",
"pages.member.personal": "个人资料",
"pages.member.balance": "我的余额",
"pages.member.detailed_account": "流水明细",
"pages.member.account": "会员账户",
"pages.member.account_edit": "编辑会员账户",
"pages.member.apply_cash_out": "申请提现",
"pages.member.balance": "我的余额",
"pages.member.cash_out": "提现记录",
"pages.member.cash_out_detail": "提现详情",
"pages.index.close": "站点已关闭",
"pages.index.nonexistence": "站点不存在"
"pages.member.commission": "我的佣金",
"pages.member.detailed_account": "流水明细",
"pages.member.index": "",
"pages.member.personal": "个人资料",
"pages.member.recharge_record": "充值记录",
"pages.member.recharge_record_detail": "充值详情",
"pages.pay.browser": "支付",
"pages.pay.result": "支付结果",
"pages.setting.index": "设置",
"pages.webview.index": ""
}

View File

@ -45,5 +45,5 @@
"myPoint": "我的积分",
"customerService": "联系客服",
"siteClose": "站点已关闭",
"siteNonexistence": "站点不存在"
"noSite": "站点不存在"
}

View File

@ -1,12 +1,4 @@
{
"statusName": "当前状态",
"cashOutNo": "交易号",
"serviceMoney": "手续费",
"createTime": "申请时间",
"auditTime": "审核时间",
"transferBank": "银行名称",
"transferAccount": "收款账号",
"refuseReason": "拒绝理由",
"transferTypeName": "转账方式名称",
"transferTime": "转账时间"
"orderNo": "订单编号",
"createTime": "创建时间"
}

View File

@ -49,6 +49,9 @@
desc: articleDetail.value.intro,
url: articleDetail.value.image
}
uni.setNavigationBarTitle({
title: articleDetail.value.title
})
setShare({
wechat: {
...share

View File

@ -0,0 +1,16 @@
<template>
<view class="w-screen h-screen flex flex-col items-center justify-center">
<u-empty
:icon="img('static/resource/images/site/close.png')"
:text="t('noSite')"
>
</u-empty>
</view>
</template>
<script setup lang="ts">
import { img } from '@/utils/common'
import { t } from '@/locale'
</script>
<style lang="scss" scoped></style>

View File

@ -1,14 +1,12 @@
<template>
<view class="member-record-list">
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="getListFn" top="">
<view v-for="(item,index) in list" :key="item.id" class="member-record-item" @click="toDetailFn(item)">
<view class="name">{{item.from_type_name}}</view>
<view class="desc" v-if="item.memo">{{item.memo}}</view>
<view class="desc">{{item.create_time}}</view>
<view class="money" :class="item.account_data > 0 ? 'text-active' : ''">
{{ item.account_data > 0 ? '+' + item.account_data : item.account_data }}
</view>
<view v-for="(order,index) in list" :key="order.order_id" class="member-record-item"
@click="toDetailFn(order)">
<view class="name">{{order.item[0].item_name}}</view>
<view class="desc">{{order.create_time}}</view>
<view class="money text-active">+{{ order.order_money }}</view>
<view class="status" v-if="order.order_status_info">{{order.order_status_info.name}}</view>
</view>
<mescroll-empty v-if="!list.length && loading" :option="{tip : t('emptyTip') }"></mescroll-empty>
@ -22,11 +20,11 @@
import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue';
import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue';
import useMescroll from '@/components/mescroll/hooks/useMescroll.js';
import { getRechargeList} from '@/api/member';
import { getRechargeList } from '@/api/member';
import { redirect } from '@/utils/common'
import { onPageScroll, onReachBottom, onLoad } from '@dcloudio/uni-app';
const { mescrollInit, downCallback, getMescroll } = useMescroll(onPageScroll, onReachBottom);
const list = ref<Array<any>>([]),
loading = ref<boolean>(false),
mescrollRef = ref(null);
@ -68,13 +66,24 @@
mescroll.endErr(); // ,
})
}
const toDetailFn = (data)=>{
redirect({ url: '/pages/member/recharge_record_detail', param: { id: data.order_id }});
const toDetailFn = (data) => {
redirect({ url: '/pages/member/recharge_record_detail', param: { id: data.order_id } });
}
</script>
<style lang="scss" scoped>
@import '@/styles/member_record_list.scss';
.member-record-list {
.member-record-item {
.desc {
@apply leading-8 h-8;
}
.status {
@apply absolute right-3 top-11 text-sm;
}
}
}
</style>

View File

@ -1,77 +1,51 @@
<template>
<view class="member-record-detail">
<view class="member-record-detail" v-show="loading">
<view class="money-wrap">
<text>-{{ rechargeInfo.apply_money }}</text>
<text>{{ rechargeInfo.status_name }}</text>
<text>{{ rechargeInfo.order_money }}</text>
<text v-if="rechargeInfo.order_status_info">{{rechargeInfo.order_status_info.name}}</text>
</view>
<!-- 状态0待审核1.待转账2已转账 -1拒绝' -->
<view class="item">
<view class="line-wrap">
<text class="label">{{t('cashOutNo')}}</text>
<text class="value">{{ rechargeInfo.cash_out_no }}</text>
<view class="line-wrap" v-if="rechargeInfo.item">
<text class="label">{{ rechargeInfo.item[0].item_name }}</text>
<text class="value">{{ rechargeInfo.order_money }}</text>
</view>
<view class="line-wrap">
<text class="label">{{t('serviceMoney')}}</text>
<text class="value">{{ rechargeInfo.service_money }}</text>
<text class="label">{{t('orderNo')}}</text>
<text class="value">{{ rechargeInfo.order_no }}</text>
</view>
<view class="line-wrap">
<text class="label">{{t('createTime')}}</text>
<text class="value">{{ rechargeInfo.create_time }}</text>
</view>
<view class="line-wrap" v-if="rechargeInfo.status">
<text class="label">{{t('auditTime')}}</text>
<text class="value">{{ rechargeInfo.audit_time }}</text>
</view>
<view class="line-wrap" v-if="rechargeInfo.transfer_bank">
<text class="label">{{t('transferBank')}}</text>
<text class="value">{{ rechargeInfo.transfer_bank }}</text>
</view>
<view class="line-wrap">
<text class="label">{{t('transferAccount')}}</text>
<text class="value">{{ rechargeInfo.transfer_account }}</text>
</view>
<view class="line-wrap" v-if="rechargeInfo.status == -1 && rechargeInfo.refuse_reason">
<text class="label">{{t('refuseReason')}}</text>
<text class="value">{{ rechargeInfo.refuse_reason }}</text>
</view>
<view class="line-wrap" v-if="rechargeInfo.status == 2">
<text class="label">{{t('transferTypeName')}}</text>
<text class="value">{{ rechargeInfo.transfer_type_name }}</text>
</view>
<view class="line-wrap" v-if="rechargeInfo.status == 2">
<text class="label">{{t('transferTime')}}</text>
<text class="value">{{ rechargeInfo.transfer_time }}</text>
</view>
</view>
</view>
</template>
<script lang="ts" setup>
import { reactive, ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { t } from '@/locale'
import { redirect, img } from '@/utils/common';
import { getRechargeDetail } from '@/api/member';
import { reactive, ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { t } from '@/locale'
import { getRechargeDetail } from '@/api/member';
let rechargeInfo = ref({});
let loading = ref<boolean>(false);
onLoad((option) => {
let id = option.id || "";
getRechargeDetailFn(id)
})
const getRechargeDetailFn = (id) => {
loading.value = false;
getRechargeDetail(id).then((res) => {
rechargeInfo.value = res.data;
loading.value = true;
}).catch(() => {
loading.value = true;
let rechargeInfo = ref({});
let loading = ref<boolean>(false);
onLoad((option) => {
let id = option.id || "";
getRechargeDetailFn(id)
})
}
const getRechargeDetailFn = (id) => {
loading.value = false;
getRechargeDetail(id).then((res) => {
rechargeInfo.value = res.data;
loading.value = true;
}).catch(() => {
loading.value = true;
})
}
</script>
<style lang="scss">
@import '@/styles/member_record_detail.scss';
</style>
@import '@/styles/member_record_detail.scss';
</style>

View File

@ -20,7 +20,7 @@ const useSystemStore = defineStore('system', {
if (this.site.status == 3) redirect({ url: '/pages/index/close', mode: 'reLaunch' })
})
.catch((err) => {
redirect({ url: '/pages/index/nonexistence', mode: 'reLaunch' })
redirect({ url: '/pages/index/nosite', mode: 'reLaunch' })
})
}
}

View File

@ -9,5 +9,9 @@ const loginBack = useLogin()
*/
export function checkNeedLogin(route: AnyObject){
const pages = getNeedLoginPages()
pages.includes(route.path) && !getToken() && loginBack.setLoginBack({ url: route.path, param: route.query || {} })
if (pages.includes(route.path) && !getToken()) {
setTimeout(() => {
loginBack.setLoginBack({ url: route.path, param: route.query || {} })
}, 100)
}
}

View File

@ -1,11 +1,12 @@
import { getTabbarPages } from './pages'
import useDiyStore from '@/stores/diy'
import useMemberStore from '@/stores/member'
import internal from 'stream'
import pagesZh from '@/locale/zh-Hans.json'
import pagesEn from '@/locale/en.json'
/**
*
*/
*
*/
export const redirect = (redirect : redirectOptions) => {
// 装修模式禁止跳转
if (useDiyStore().mode == 'decorate') return
@ -230,4 +231,21 @@ export function getSiteId(siteid : number) {
// #ifndef H5
return siteid
// #endif
}
/**
* html标题
* @param {Object} route
*/
export function setDocumentTitle(route: string) {
if (process.env.NODE_ENV != 'production') return
try {
const locale: AnyObject = {
'zh-Hans': pagesZh,
'en': pagesEn
}
const key = route.replace('/', '').replaceAll('/', '.')
locale[ uni.getLocale() ][key] && (document.title = locale[ uni.getLocale() ][key])
} catch (e) {
}
}

View File

@ -1,6 +1,6 @@
import { language } from '@/locale'
import { checkNeedLogin } from '@/utils/auth'
import { redirect, urlDeconstruction, getToken, getSiteId } from '@/utils/common'
import { redirect, urlDeconstruction, getToken, getSiteId, setDocumentTitle } from '@/utils/common'
import { memberLog } from '@/api/auth'
/**
@ -16,14 +16,17 @@ export const redirectInterceptor = () => {
// 加载语言包
language.loadLocaleMessages(route.path, uni.getLocale())
// 开发模式下如果未配置站点ID则跳转到开发环境配置页面
// #ifdef H5
if (process.env.NODE_ENV == 'development') {
if ((getSiteId(uni.getStorageSync('wap_site_id') || import.meta.env.VITE_SITE_ID) === '') && route.path != '/pages/index/develop') {
redirect({ url: '/pages/index/develop', mode: 'reLaunch' })
}
}
} else {
// 设置网站标题
setDocumentTitle(route.path)
}
// #endif
// 校验是否需要登录
@ -55,7 +58,10 @@ export const launchInterceptor = () => {
uni.setStorageSync('develop_before_path', launch.path);
redirect({ url: '/pages/index/develop', mode: 'reLaunch' })
}
}
} else {
// 设置网站标题
setDocumentTitle(launch.path)
}
// #endif
// 加载语言包