【fix】优化代码
This commit is contained in:
16
App.vue
16
App.vue
@ -1,15 +1,15 @@
|
||||
<script setup>
|
||||
import { createBuryPoint } from '@/api/global'
|
||||
import cookie from "@/utils/cookie";
|
||||
import { onLaunch } from "@dcloudio/uni-app";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { onLaunch, onShow } from "@dcloudio/uni-app";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
|
||||
const mainStore = useMainStore();
|
||||
onLaunch( () => {
|
||||
onLaunch(() => {
|
||||
const tokenObj = cookie.get('accessToken')
|
||||
let userInfo = ''
|
||||
if (tokenObj && !mainStore.user) {
|
||||
userInfo = mainStore.getUserInfo()
|
||||
userInfo = mainStore.getUserInfo()
|
||||
}
|
||||
// 埋点
|
||||
createBuryPoint({
|
||||
@ -17,11 +17,14 @@ onLaunch( () => {
|
||||
})
|
||||
})
|
||||
|
||||
onShow(() => {
|
||||
mainStore.doGetIntegralName()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/*每个页面公共css */
|
||||
@import "uview-plus/index.scss";
|
||||
@import '@/uni_modules/uv-ui-tools/index.scss';
|
||||
@import "style/style.scss";
|
||||
|
||||
page {
|
||||
@ -29,7 +32,8 @@ page {
|
||||
position: relative;
|
||||
padding-bottom: constant(safe-area-inset-bottom);
|
||||
padding-bottom: env(safe-area-inset-bottom);
|
||||
&::after{
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
width: 100%;
|
||||
height: env(safe-area-inset-bottom);
|
||||
|
@ -47,3 +47,9 @@ export const updateWithDrawMethod = async (data) => requestUtil.post('/app/distr
|
||||
* @return {Promise<*>}
|
||||
*/
|
||||
export const withDrawNow = async (data) => requestUtil.post('/app/distributor/wages/withdraw', data)
|
||||
|
||||
/**
|
||||
* 分享获得积分
|
||||
* @return {Promise<*>}
|
||||
*/
|
||||
export const shareToAddIntegral = async () => requestUtil.get('/member/user-bill/shareGoods')
|
||||
|
@ -61,3 +61,9 @@ export const getMemberTaskList = async () => requestUtil.get('/member/user-level
|
||||
* @return data.createTime 创建时间
|
||||
*/
|
||||
export const getMemberEquityList = async (params) => requestUtil.get('/member/user-level/equity', params)
|
||||
|
||||
/**
|
||||
* 获取积分名称
|
||||
* @return {Promise<*>}
|
||||
*/
|
||||
export const getIntegralName = async () => requestUtil.get('/system/dict-data/get-value?dictType=integral_config&label=integral_name')
|
||||
|
@ -31,9 +31,9 @@ const {goBack} = useRouter()
|
||||
*
|
||||
*/
|
||||
const props = defineProps({
|
||||
scrollTop:{
|
||||
type:Number,
|
||||
default:()=>0
|
||||
scrollTop: {
|
||||
type: Number,
|
||||
default: () => 0
|
||||
},
|
||||
systemBarAreaBg: {
|
||||
type: String,
|
||||
@ -57,7 +57,7 @@ const props = defineProps({
|
||||
},
|
||||
returnSize: {
|
||||
type: Number,
|
||||
default: () => 22
|
||||
default: () => 16
|
||||
},
|
||||
textShadow: {
|
||||
type: [Boolean, String],
|
||||
@ -82,6 +82,10 @@ const props = defineProps({
|
||||
leftWidth: {
|
||||
type: Number,
|
||||
default: () => 0
|
||||
},
|
||||
circleBack: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
})
|
||||
|
||||
@ -98,7 +102,8 @@ const {
|
||||
propUp,
|
||||
showRight,
|
||||
leftWidth,
|
||||
scrollTop
|
||||
scrollTop,
|
||||
circleBack
|
||||
} = toRefs(props)
|
||||
|
||||
const emits = defineEmits(['getSystemInfo', 'animation'])
|
||||
@ -118,6 +123,7 @@ const heightInfo = ref({
|
||||
function getSystemInfo() {
|
||||
const res = uni.getSystemInfoSync();
|
||||
const heightObj = unref(heightInfo)
|
||||
console.log(heightObj)
|
||||
heightObj.safeAreaInsets = res.safeAreaInsets
|
||||
heightObj.statusBarHeight = res.statusBarHeight
|
||||
heightObj.screenWidth = res.screenWidth || res.windowWidth
|
||||
@ -141,6 +147,7 @@ function getMenuInfo() {
|
||||
const menuButtonBoundingClientRect = uni.getMenuButtonBoundingClientRect();
|
||||
if (menuButtonBoundingClientRect) {
|
||||
menuInfo.value = {...menuButtonBoundingClientRect}
|
||||
console.log(menuInfo.value)
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,7 +162,7 @@ const scssVarStyle = computed(() => {
|
||||
const systemBarAreaStyle = computed(() => {
|
||||
return {
|
||||
width: '100%',
|
||||
height: `${ unref(heightInfo).statusBarHeight * 2 }rpx`,
|
||||
height: `${ unref(heightInfo).statusBarHeight }px`,
|
||||
background: unref(systemBarAreaBg)
|
||||
}
|
||||
})
|
||||
@ -164,7 +171,12 @@ const systemBarAreaStyle = computed(() => {
|
||||
const headerAreaStyle = computed(() => {
|
||||
// 计算margin top
|
||||
// margin-top (导航条高度 - 胶囊高度) / 2 永远确保胶囊在header中央
|
||||
const marginTop = unref(menuInfo).height > 0 ? `-${((HEADER_HEIGHT - unref(menuInfo).height))/2}px` : 0
|
||||
let marginTop = 0
|
||||
if (unref(menuInfo).height > 0) {
|
||||
// buttonMarginTopDiff 此处 胶囊和statusBar是由一个距离的
|
||||
const buttonMarginTopDiff = unref(menuInfo).top - unref(heightInfo).statusBarHeight
|
||||
marginTop = `${ (-1 * ((HEADER_HEIGHT - unref(menuInfo).height) / 2)) + buttonMarginTopDiff }px`
|
||||
}
|
||||
return {
|
||||
width: '100%',
|
||||
background: unref(headerAreaBg),
|
||||
@ -173,6 +185,12 @@ const headerAreaStyle = computed(() => {
|
||||
}
|
||||
})
|
||||
|
||||
const circleBackStyle = computed(() => {
|
||||
return {
|
||||
height: menuInfo.value.height > 0 ? menuInfo.value.height + 'px' : '32px'
|
||||
}
|
||||
})
|
||||
|
||||
// 文本样式
|
||||
const textShadowStyle = computed(() => {
|
||||
return {
|
||||
@ -193,6 +211,15 @@ const titleStyle = computed(() => {
|
||||
}
|
||||
})
|
||||
|
||||
const rightStyle = computed(() => {
|
||||
if (menuInfo.value.left > 0) {
|
||||
return {
|
||||
right: `${ (heightInfo.value.screenWidth - menuInfo.value.right) + menuInfo.value.width + 5 }px`
|
||||
}
|
||||
}
|
||||
return {}
|
||||
})
|
||||
|
||||
// 滚动后背景样式
|
||||
const scrollMaskStyle = computed(() => {
|
||||
return {
|
||||
@ -203,7 +230,7 @@ const scrollMaskStyle = computed(() => {
|
||||
|
||||
// 总高度
|
||||
const containerHeight = computed(() => {
|
||||
const marginTop = unref(menuInfo).height > 0 ? `${((HEADER_HEIGHT - unref(menuInfo).height))/2}` : 0
|
||||
const marginTop = unref(menuInfo).height > 0 ? `${ ((HEADER_HEIGHT - unref(menuInfo).height)) / 2 }` : 0
|
||||
return (unref(heightInfo).statusBarHeight + HEADER_HEIGHT - marginTop)
|
||||
})
|
||||
|
||||
@ -222,7 +249,7 @@ watch(scrollTop, () => {
|
||||
})
|
||||
|
||||
|
||||
defineExpose({containerHeight, heightInfo})
|
||||
defineExpose({containerHeight, heightInfo, menuInfo})
|
||||
|
||||
onLoad(() => {
|
||||
getSystemInfo()
|
||||
@ -257,7 +284,19 @@ onLoad(() => {
|
||||
v-if="showReturn"
|
||||
>
|
||||
<slot name="left">
|
||||
<view
|
||||
v-if="circleBack"
|
||||
class="circle-back"
|
||||
:style="circleBackStyle">
|
||||
<uv-icon
|
||||
name="arrow-left"
|
||||
:color="returnColor"
|
||||
:size="returnSize"
|
||||
@click="goBack"
|
||||
/>
|
||||
</view>
|
||||
<uv-icon
|
||||
v-else
|
||||
name="arrow-left"
|
||||
:color="returnColor"
|
||||
:size="returnSize"
|
||||
@ -274,6 +313,7 @@ onLoad(() => {
|
||||
</view>
|
||||
<view
|
||||
class="right"
|
||||
:style="rightStyle"
|
||||
v-if="showRight"
|
||||
>
|
||||
<slot name="right">
|
||||
@ -367,4 +407,15 @@ onLoad(() => {
|
||||
}
|
||||
}
|
||||
|
||||
.circle-back {
|
||||
aspect-ratio: 1/1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 10rpx rgba(225, 225, 225, 0.48);
|
||||
border: 1rpx solid rgba(225, 225, 225, 0.8);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
@ -15,7 +15,7 @@ import { doPayment, PayType } from "@/utils/paymentUtils";
|
||||
import { orderInfo as orderInfoRequest } from "@/api/order";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import {useMainStore} from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
|
||||
const {toast} = useInterface()
|
||||
const {push} = useRouter()
|
||||
@ -54,7 +54,7 @@ const subLoading = ref(false)
|
||||
async function handleSubmit() {
|
||||
try {
|
||||
subLoading.value = true
|
||||
await doPayment({type: payType.value, payInfo: orderInfo.value,isGroup:orderInfo.value.campaignType===1})
|
||||
await doPayment({type: payType.value, payInfo: orderInfo.value, isGroup: orderInfo.value.campaignType === 1})
|
||||
subLoading.value = false
|
||||
emits('confirm')
|
||||
close()
|
||||
@ -97,10 +97,14 @@ async function handleSubmit() {
|
||||
:src="pay.icon"
|
||||
/>
|
||||
<view class="info">
|
||||
<view class="label flex flex-nowrap flex-ai__end" style="white-space: nowrap">
|
||||
<view
|
||||
class="label flex flex-nowrap flex-ai__end"
|
||||
style="white-space: nowrap">
|
||||
{{ pay.label }}
|
||||
<span v-if="pay.type===PayType['1']" style="font-size: 16rpx;white-space: nowrap;">
|
||||
({{mainStore.user.nowMoney}}元)
|
||||
<span
|
||||
v-if="pay.type===PayType['1']"
|
||||
style="font-size: 16rpx;white-space: nowrap;">
|
||||
({{ mainStore.user.nowMoney }}元)
|
||||
</span>
|
||||
</view>
|
||||
<view>
|
||||
|
@ -134,7 +134,7 @@ defineExpose({
|
||||
<slot name="rightOption">
|
||||
<view
|
||||
>
|
||||
<u-icon
|
||||
<uv-icon
|
||||
color="#000"
|
||||
name="close"
|
||||
size="16"
|
||||
@ -157,6 +157,7 @@ defineExpose({
|
||||
.popup_inner {
|
||||
padding: 20rpx 20rpx env(safe-area-inset-bottom) 20rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.head {
|
||||
padding: 20rpx 0;
|
||||
font-weight: bolder;
|
||||
|
@ -7,7 +7,7 @@
|
||||
-->
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { distributionShareBg } from '@/utils/images'
|
||||
import { useImage } from "@/hooks/useImage";
|
||||
import { generateMiniProgramQrCode } from "@/api/global";
|
||||
@ -69,7 +69,7 @@ async function save() {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<u-overlay
|
||||
<uv-overlay
|
||||
:show="show"
|
||||
@click="close">
|
||||
<view
|
||||
@ -109,7 +109,7 @@ async function save() {
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-overlay>
|
||||
</uv-overlay>
|
||||
</template>
|
||||
|
||||
<style
|
||||
|
@ -8,7 +8,7 @@
|
||||
<script setup>
|
||||
import { getCurrentInstance, nextTick, ref } from "vue";
|
||||
import { useImage } from "@/hooks/useImage";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { useShare } from "@/hooks/useShare";
|
||||
import { generateMiniProgramQrCode } from "@/api/global";
|
||||
|
||||
@ -270,7 +270,7 @@ async function generatePoster() {
|
||||
// #ifdef MP-WEIXIN
|
||||
wx.canvasToTempFilePath({
|
||||
canvasId: 'goods-canvas',
|
||||
canvas:canvasRef.value,//这里是重点,获取实例的时候保存为全局变量就行了
|
||||
canvas: canvasRef.value,//这里是重点,获取实例的时候保存为全局变量就行了
|
||||
success: async (res) => {
|
||||
posterImagePath.value = res.tempFilePath;
|
||||
uni.hideLoading()
|
||||
@ -279,7 +279,7 @@ async function generatePoster() {
|
||||
console.log(err)
|
||||
uni.hideLoading()
|
||||
}
|
||||
},_this)
|
||||
}, _this)
|
||||
// #endif
|
||||
}
|
||||
|
||||
@ -299,7 +299,7 @@ async function save() {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<u-overlay
|
||||
<uv-overlay
|
||||
@touchmove="(e)=>{e.preventDefault();}"
|
||||
:show="show"
|
||||
@click="close">
|
||||
@ -332,7 +332,7 @@ async function save() {
|
||||
style="width:654rpx;height: 1032rpx;margin: 20rpx auto;position: absolute;z-index:999;top: -999px;"
|
||||
id="goods-canvas" />
|
||||
|
||||
</u-overlay>
|
||||
</uv-overlay>
|
||||
</template>
|
||||
|
||||
<style
|
||||
|
@ -8,7 +8,7 @@
|
||||
<script setup>
|
||||
import { getCurrentInstance, nextTick, ref } from "vue";
|
||||
import { useImage } from "@/hooks/useImage";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { generateMiniProgramQrCode } from "@/api/global";
|
||||
|
||||
// =================================== hooks ============================================
|
||||
@ -268,7 +268,7 @@ async function generatePoster() {
|
||||
// #ifdef MP-WEIXIN
|
||||
wx.canvasToTempFilePath({
|
||||
canvasId: 'goods-canvas',
|
||||
canvas:canvasRef.value,//这里是重点,获取实例的时候保存为全局变量就行了
|
||||
canvas: canvasRef.value,//这里是重点,获取实例的时候保存为全局变量就行了
|
||||
success: async (res) => {
|
||||
posterImagePath.value = res.tempFilePath;
|
||||
uni.hideLoading()
|
||||
@ -277,7 +277,7 @@ async function generatePoster() {
|
||||
console.log(err)
|
||||
uni.hideLoading()
|
||||
}
|
||||
},_this)
|
||||
}, _this)
|
||||
// #endif
|
||||
}
|
||||
|
||||
@ -297,7 +297,7 @@ async function save() {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<u-overlay
|
||||
<uv-overlay
|
||||
@touchmove="(e)=>{e.preventDefault();}"
|
||||
:show="show"
|
||||
@click="close">
|
||||
@ -330,7 +330,7 @@ async function save() {
|
||||
style="width:654rpx;height: 1032rpx;margin: 20rpx auto;position: absolute;z-index:999;top: -999px;"
|
||||
id="goods-canvas" />
|
||||
|
||||
</u-overlay>
|
||||
</uv-overlay>
|
||||
</template>
|
||||
|
||||
<style
|
||||
|
@ -7,7 +7,7 @@
|
||||
-->
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { distributionShareBg } from '@/utils/images'
|
||||
import { useImage } from "@/hooks/useImage";
|
||||
import { generateMiniProgramQrCode } from "@/api/global";
|
||||
@ -66,7 +66,7 @@ async function save() {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<u-overlay
|
||||
<uv-overlay
|
||||
:show="show"
|
||||
@click="close">
|
||||
<view
|
||||
@ -105,7 +105,7 @@ async function save() {
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-overlay>
|
||||
</uv-overlay>
|
||||
</template>
|
||||
|
||||
<style
|
||||
|
@ -50,7 +50,7 @@ defineExpose({ executeRefresh })
|
||||
|
||||
<template>
|
||||
<!--push({ url: '/pages/goodsList/goodsList' }-->
|
||||
<view class="recommend-container">
|
||||
<view class="recommend-container" v-if="!listEmpty">
|
||||
<slot name="head">
|
||||
<view class="title-row">
|
||||
商品推荐
|
||||
|
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="coupon-box" >
|
||||
<div class="coupon-box" v-if="couponsData?.length > 0">
|
||||
<div class="coupon-list coupon-flex coupon-swiper" v-if="componentContent.arrangeType == '横向滑动'">
|
||||
<swiper class="swiper"
|
||||
:disable-touch="couponsData.length < 3"
|
||||
|
@ -157,12 +157,14 @@ const { activityData, productList, count, jumpProductDetail, jumpDiscount } = co
|
||||
line-height: 28rpx;
|
||||
color: #CCCCCC;
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.stock{
|
||||
line-height: 1em;
|
||||
display: inline-block;
|
||||
font-size: 20rpx;
|
||||
color: #999999;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,9 @@ export default function (componentContent, typeId, shopId) {
|
||||
(res) => {
|
||||
afterGetData()
|
||||
activityData.value = res.data
|
||||
getTime()
|
||||
if(res.data){
|
||||
getTime()
|
||||
}
|
||||
},
|
||||
() => {
|
||||
afterGetData()
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="group-list">
|
||||
<div class="group-list" v-if="productList.length > 0">
|
||||
<div class="group-warp">
|
||||
<div class="header">
|
||||
<div class="header-warp">
|
||||
@ -8,15 +8,15 @@
|
||||
</div>
|
||||
<a v-show="componentContent.showMore" class="btn-all a-link" @click="jumpGroupWorks(componentContent.id)">查看更多</a>
|
||||
</div>
|
||||
<div v-if="productList.length > 0">
|
||||
<div>
|
||||
<swiper class="swiper pro-box"
|
||||
:disable-touch="productList.length < 3"
|
||||
:circular="false"
|
||||
:indicator-dots="false"
|
||||
:autoplay="productList.length > 2"
|
||||
:display-multiple-items="2"
|
||||
:previous-margin="swiperCurrent === productList.length - 2?'60rpx':'0rpx'"
|
||||
:next-margin="swiperCurrent === productList.length - 2?'0rpx':'60rpx'"
|
||||
:previous-margin="swiperCurrent === productList.length - 2 && productList.length.length > 2?'60rpx':'0rpx'"
|
||||
:next-margin="swiperCurrent === productList.length - 2 && productList.length.length > 2?'0rpx':'60rpx'"
|
||||
@change="swiperChange">
|
||||
<swiper-item class="swiper-slide pro-item-warp" v-for="(item,index) in productList" :key="index" @click="jumpProductDetail(item)">
|
||||
<div class="pro-item-inner">
|
||||
|
@ -22,7 +22,6 @@ export default function (componentContent, typeId, shopId) {
|
||||
})
|
||||
|
||||
function getData () {
|
||||
if (componentContent.value.id) {
|
||||
beforeGetData()
|
||||
const params = {
|
||||
method: 'POST',
|
||||
@ -42,9 +41,6 @@ export default function (componentContent, typeId, shopId) {
|
||||
afterGetData()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
productList.value = []
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<global-loading />
|
||||
<div class="hom-pro-list">
|
||||
<div class="hom-pro-list" v-if="productData.length > 0">
|
||||
<div class="header">
|
||||
<div class="header-warp">
|
||||
<div class="title">商品推荐</div>
|
||||
@ -115,7 +115,7 @@
|
||||
|
||||
<div
|
||||
class="product-list-box"
|
||||
v-if="productData.length>0">
|
||||
v-if="!loading">
|
||||
<div
|
||||
class="product-list-item-warp"
|
||||
v-for="(col,i) in colList"
|
||||
@ -216,7 +216,7 @@ const props = defineProps({
|
||||
},
|
||||
});
|
||||
const {typeId, componentContent} = toRefs(props);
|
||||
const {productData, jumpProductDetail, jumpProList, loadNext, getPercentageNum} = productMixin(componentContent);
|
||||
const {productData, jumpProductDetail, jumpProList, loadNext, getPercentageNum, loading} = productMixin(componentContent);
|
||||
const swiperCurrent = ref(0)
|
||||
|
||||
const colList = computed(() => [
|
||||
|
@ -6,11 +6,13 @@ export default function (componentContent) {
|
||||
const { sendReq, beforeGetData, afterGetData, jumpProductDetail, jumpProList } = funMixin()
|
||||
|
||||
const productData = ref([])
|
||||
const loading = ref(true)
|
||||
onMounted(() => {
|
||||
getData(true)
|
||||
})
|
||||
|
||||
function getData (isFirst) {
|
||||
loading.value = true
|
||||
if (componentContent.value.productData.sourceType === '1') {
|
||||
if (
|
||||
componentContent.value.productData.productIdList?.length > 0
|
||||
@ -24,12 +26,14 @@ export default function (componentContent) {
|
||||
(proRes) => {
|
||||
afterGetData()
|
||||
productData.value = proRes.data.list
|
||||
loading.value = false
|
||||
if (isFirst) {
|
||||
componentContent.value.productData.imgTextData = productData.value
|
||||
}
|
||||
},
|
||||
() => {
|
||||
afterGetData()
|
||||
loading.value = false
|
||||
}
|
||||
)
|
||||
} else {
|
||||
@ -45,6 +49,7 @@ export default function (componentContent) {
|
||||
},
|
||||
(proRes) => {
|
||||
afterGetData()
|
||||
loading.value = false
|
||||
productData.value = proRes.data.list
|
||||
if (isFirst) {
|
||||
componentContent.value.productData.imgTextData = productData.value
|
||||
@ -53,6 +58,7 @@ export default function (componentContent) {
|
||||
},
|
||||
() => {
|
||||
afterGetData()
|
||||
loading.value = false
|
||||
}
|
||||
)
|
||||
} else {
|
||||
@ -73,6 +79,7 @@ export default function (componentContent) {
|
||||
productData,
|
||||
jumpProductDetail,
|
||||
jumpProList,
|
||||
getPercentageNum
|
||||
getPercentageNum,
|
||||
loading
|
||||
}
|
||||
}
|
||||
|
@ -151,6 +151,7 @@ const { activityData, productList, count, jumpProductDetail, jumpSeckills } = co
|
||||
color: #EE6D46;
|
||||
padding-right: 10rpx;
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.original-price{
|
||||
font-size: 20rpx;
|
||||
@ -163,6 +164,7 @@ const { activityData, productList, count, jumpProductDetail, jumpSeckills } = co
|
||||
display: inline-block;
|
||||
font-size: 20rpx;
|
||||
color: #999999;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,9 @@ export default function (componentContent, typeId, shopId) {
|
||||
(res) => {
|
||||
afterGetData()
|
||||
activityData.value = res.data
|
||||
getTime()
|
||||
if(res.data){
|
||||
getTime()
|
||||
}
|
||||
},
|
||||
() => {
|
||||
afterGetData()
|
||||
|
@ -12,7 +12,7 @@
|
||||
<CouponItem
|
||||
@receiveCoupon="handleGetDetail(props.id)"
|
||||
:coupons="item"
|
||||
:type="'get'"
|
||||
type="get"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
@ -88,7 +88,6 @@
|
||||
<text v-if="data.stock">仅剩{{ data.stock }}件</text>
|
||||
<text v-else>库存不足</text>
|
||||
</view>
|
||||
|
||||
<view
|
||||
class="buy-num"
|
||||
v-if="purchase"
|
||||
@ -98,6 +97,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<uv-button
|
||||
class="button"
|
||||
round
|
||||
block
|
||||
type="primary"
|
||||
@ -317,6 +317,11 @@ const percentage = computed(() => {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.button {
|
||||
flex-shrink: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
&-desc {
|
||||
line-height: 28rpx;
|
||||
font-size: 20rpx;
|
||||
|
@ -24,16 +24,11 @@
|
||||
>
|
||||
<view
|
||||
v-for="(item, index) in data.cartInfo"
|
||||
:key="index"
|
||||
class="order-evaluate"
|
||||
:class="{evaluateBtn: data._status._type == 3}"
|
||||
>
|
||||
<view
|
||||
v-if="data._status._type == 3 && item.isReply === 0"
|
||||
class="order-actions-primary order-evaluate-btn"
|
||||
@tap.stop="toEvaluate(item.unique,data.orderId)"
|
||||
>
|
||||
去评价
|
||||
</view>
|
||||
|
||||
<Goods
|
||||
row
|
||||
:jump="false"
|
||||
@ -75,7 +70,14 @@
|
||||
<span v-if="item.orderDetailState===2"> 售后中 </span>
|
||||
<span v-if="item.orderDetailState===3"> 售后完成 </span>
|
||||
</view>
|
||||
<view class="price-box cart-num flex flex-ai__end">
|
||||
<view class="price-box cart-num flex flex-ai__center">
|
||||
<view
|
||||
v-if="data._status._type == 3 && item.isReply === 0"
|
||||
class="order-actions-primary order-evaluate-btn"
|
||||
@tap.stop="toEvaluate(item.unique,data.orderId)"
|
||||
>
|
||||
去评价
|
||||
</view>
|
||||
x{{ item.cartNum }}
|
||||
</view>
|
||||
</view>
|
||||
@ -254,14 +256,17 @@ async function doTakeGoods() {
|
||||
let option = {
|
||||
uni: data.value.orderId,
|
||||
}
|
||||
let payInfo = JSON.parse(data.value.payInfo)
|
||||
showWsReceipt(payInfo.transaction_id).then(async (res) => {
|
||||
if (res === 'success') {
|
||||
await orderTake(option)
|
||||
emit('refresh')
|
||||
toast({title: '已收货'});
|
||||
}
|
||||
})
|
||||
try {
|
||||
let payInfo = JSON.parse(data.value.payInfo)
|
||||
const res = await showWsReceipt(payInfo.transaction_id)
|
||||
if (res !== 'success') return
|
||||
await orderTake(option)
|
||||
emit('refresh')
|
||||
toast({title: '已收货'});
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
toast({title: '收货失败', icon: 'error'});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -91,44 +91,42 @@ export function useOrder(handleOrderInfo = () => {
|
||||
|
||||
/**
|
||||
* 微信确认收货弹窗
|
||||
* @param params
|
||||
* @param transactionId
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
const showWsReceipt = (transactionId) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
// // #ifdef MP-WEIXIN
|
||||
// //拉起确认收货组件
|
||||
// if (wx.openBusinessView) {
|
||||
// wx.openBusinessView({
|
||||
// businessType: 'weappOrderConfirm',
|
||||
// extraData: {
|
||||
// // merchant_id: '',//用户交易商户号
|
||||
// // merchant_trade_no: "",//商户订单号
|
||||
// transaction_id: transactionId //用户交易单号
|
||||
// },
|
||||
// success: (e) => {
|
||||
// resolve('success');
|
||||
// }, fail: e => {
|
||||
// resolve('success');
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// } else {
|
||||
// //引导用户升级微信版本
|
||||
// uni.showToast({
|
||||
// title: "请升级微信版本",
|
||||
// duration: 3000,
|
||||
// icon: "none",
|
||||
// });
|
||||
// }
|
||||
//
|
||||
//
|
||||
// // #endif
|
||||
// // #ifndef MP-WEIXIN
|
||||
// resolve('success');
|
||||
// // #endif
|
||||
// #ifdef MP-WEIXIN
|
||||
// 如果没有transactionId,说明使用的不是微信支付,直接返回成功
|
||||
if (!transactionId) return resolve('success')
|
||||
//拉起确认收货组件
|
||||
if (wx.openBusinessView) {
|
||||
wx.openBusinessView({
|
||||
businessType: 'weappOrderConfirm',
|
||||
extraData: {
|
||||
// merchant_id: '',//用户交易商户号
|
||||
// merchant_trade_no: "",//商户订单号
|
||||
transaction_id: transactionId //用户交易单号
|
||||
},
|
||||
success: (e) => {
|
||||
resolve('success');
|
||||
}, fail: e => {
|
||||
reject(e)
|
||||
}
|
||||
});
|
||||
} else {
|
||||
//引导用户升级微信版本
|
||||
uni.showToast({
|
||||
title: "请升级微信版本",
|
||||
duration: 3000,
|
||||
icon: "none",
|
||||
});
|
||||
reject("请升级微信版本")
|
||||
}
|
||||
// #endif
|
||||
// #ifndef MP-WEIXIN
|
||||
resolve('success');
|
||||
|
||||
// #endif
|
||||
})
|
||||
}
|
||||
|
||||
|
17
main.js
17
main.js
@ -4,26 +4,21 @@
|
||||
* @LastEditors: Gaoxs
|
||||
* @Description:
|
||||
*/
|
||||
import util from '@/utils'
|
||||
|
||||
import App from './App'
|
||||
import uvUI from '@/uni_modules/uv-ui-tools'
|
||||
import uviewPlus from 'uview-plus'
|
||||
|
||||
// #ifdef H5
|
||||
// #endif
|
||||
import { createPinia } from 'pinia'
|
||||
|
||||
import { createSSRApp } from 'vue'
|
||||
|
||||
import store from "@/store";
|
||||
import util from '@/utils'
|
||||
// #ifdef H5
|
||||
import VConsole from 'vconsole'
|
||||
|
||||
// #endif
|
||||
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App)
|
||||
app.use(util)
|
||||
app.use(createPinia())
|
||||
app.use(store)
|
||||
app.use(uvUI);
|
||||
app.use(uviewPlus)
|
||||
uni.$uv.setConfig({
|
||||
config: {
|
||||
// 修改默认单位为rpx,相当于执行 uni.$uv.config.unit = 'rpx'
|
||||
|
@ -21,7 +21,6 @@
|
||||
"moment": "^2.29.4",
|
||||
"pinia": "^2.1.6",
|
||||
"qs": "^6.11.2",
|
||||
"uview-plus": "^3.1.42",
|
||||
"vant": "^4.6.2",
|
||||
"vconsole": "^3.15.1",
|
||||
"vue": "^3.3.7",
|
||||
|
@ -28,13 +28,6 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"easycom": {
|
||||
"custom": {
|
||||
"^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
|
||||
"^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
|
||||
"^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"
|
||||
}
|
||||
},
|
||||
"subPackages": [
|
||||
// 1.0分包
|
||||
{
|
||||
|
@ -86,7 +86,7 @@
|
||||
<script setup>
|
||||
import { ref, unref } from 'vue'
|
||||
import { onLoad, onReachBottom } from '@dcloudio/uni-app'
|
||||
import { useMainStore } from '@/store/store'
|
||||
import { useMainStore } from '@/store/modules/useMainStore'
|
||||
import Empty from '@/components/Empty/index.vue'
|
||||
import { addressEditIcon, emptyAddressIcon } from "@/utils/images";
|
||||
import { getAddressDel, } from '@/api/address'
|
||||
|
@ -108,7 +108,7 @@
|
||||
<script setup>
|
||||
import { computed, nextTick, onMounted, ref, unref, watch } from 'vue'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { useMainStore } from '@/store/store'
|
||||
import { useMainStore } from '@/store/modules/useMainStore'
|
||||
import { getAddressAddAndEdit, getAddressDel, } from '@/api/address'
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import { storeToRefs } from "pinia";
|
||||
@ -303,10 +303,10 @@ function handleChooseAddress() {
|
||||
/**
|
||||
* 手机号验证
|
||||
*/
|
||||
function phoneInput(event){
|
||||
function phoneInput(event) {
|
||||
const pattern = /[^\d]/g;
|
||||
nextTick(() => {
|
||||
addressData.value.phone = event.detail.value.replace(pattern,'');
|
||||
addressData.value.phone = event.detail.value.replace(pattern, '');
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -114,6 +114,7 @@ const isActivity = computed(() => {
|
||||
background: $white-color;
|
||||
font-weight: 500;
|
||||
font-size: 32rpx;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.label-row {
|
||||
|
@ -8,9 +8,9 @@
|
||||
<script setup>
|
||||
import { computed, nextTick, onBeforeUnmount, onMounted, ref, toRefs, unref, watch } from "vue";
|
||||
import { getTimeAfterNow } from "@/utils/utils";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
import {handleLoginFailure} from "@/utils";
|
||||
import { handleLoginFailure } from "@/utils";
|
||||
|
||||
const emits = defineEmits(["activeListItemTimeOver", "doGroupBy"])
|
||||
|
||||
@ -54,7 +54,7 @@ const {toast} = useInterface();
|
||||
const mainStore = useMainStore()
|
||||
|
||||
function handleGoGroupBy(order) {
|
||||
if(!mainStore.user){
|
||||
if (!mainStore.user) {
|
||||
handleLoginFailure()
|
||||
return
|
||||
}
|
||||
|
@ -1,10 +1,24 @@
|
||||
<template>
|
||||
<view class="goodsDetail">
|
||||
<view :style="computedHeightStyle"></view>
|
||||
<!-- <view :style="computedHeightStyle"></view>-->
|
||||
<Header
|
||||
circle-back
|
||||
ref="headerRef"
|
||||
:propUp="false"
|
||||
:scroll-top="scrollTop" />
|
||||
:scroll-top="scrollTop">
|
||||
<template #right>
|
||||
<view
|
||||
class="share-icon"
|
||||
@click="doShare(detailData.storeInfo)"
|
||||
:style="computedShareIconStyle">
|
||||
<uv-icon
|
||||
color="#000"
|
||||
name="share-square"
|
||||
size="16"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
</Header>
|
||||
<view v-if="!showEmpty">
|
||||
<view v-if="detailData">
|
||||
<swiper
|
||||
@ -43,6 +57,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
v-if="detailData.couponSplicing"
|
||||
class="label-row"
|
||||
@click="discountCouponSelect('select')">
|
||||
<view class="label">
|
||||
@ -261,6 +276,7 @@
|
||||
</view>
|
||||
<GoodEmpty v-else />
|
||||
<Recommend />
|
||||
<view style="height: 100rpx;"></view>
|
||||
<GoodAttrSelect
|
||||
v-if="detailData && storeAttr"
|
||||
ref="selectAttrPanel"
|
||||
@ -268,6 +284,11 @@
|
||||
:sku-id="storeAttr.id"
|
||||
@select="handleSelectAttr"
|
||||
/>
|
||||
<GoodsSharePopup
|
||||
ref="goodsShare"
|
||||
@share="shareConfirm" />
|
||||
|
||||
<GoodsPoster ref="goodsPoster" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@ -277,7 +298,7 @@ import { productAffirmCollectIcon, productCartIcon, productCollectIcon, productC
|
||||
import { computed, ref, unref } from 'vue'
|
||||
import { collectSingle, getProductDetail, unCollectSingle } from '@/api/product'
|
||||
import { getCartAdd, getCartCount } from '@/api/cart'
|
||||
import {onLoad, onPageScroll, onShareAppMessage, onShareTimeline} from '@dcloudio/uni-app'
|
||||
import { onLoad, onPageScroll, onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app'
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
import Header from "@/components/Header/index.vue";
|
||||
@ -293,21 +314,45 @@ import Blank from "@/components/blank/blank.vue";
|
||||
import GroupByOrderList from "@/pages/goodsDetail/components/GroupByOrderList.vue";
|
||||
import { getCanGroupByList } from "@/api/goods";
|
||||
import { useService } from "@/hooks/useService";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { storeToRefs } from "pinia";
|
||||
import { useGlobalRequestStore } from "@/store/modules/useGlobalRequestStore";
|
||||
import GoodsPoster from "@/components/Poster/Goods.vue";
|
||||
import GoodsSharePopup from "@/components/Share/Goods.vue";
|
||||
|
||||
const {push, getParams, pushToTab, goBack} = useRouter();
|
||||
const {toast} = useInterface();
|
||||
const mainStore = useMainStore();
|
||||
const { user } = storeToRefs(mainStore)
|
||||
const globalRequestStore = useGlobalRequestStore();
|
||||
const {user} = storeToRefs(mainStore)
|
||||
// =========================== 分享 =================================
|
||||
const {shareAppMessage, shareTimeline, goodsDetailShare} = useShare()
|
||||
const {shareAppMessage, shareTimeline, goodsDetailShare, shareH5} = useShare()
|
||||
onShareAppMessage(shareAppMessage)
|
||||
onShareTimeline(shareTimeline)
|
||||
const goodsShare = ref()
|
||||
const goodsPoster = ref()
|
||||
|
||||
function doShare(goods) {
|
||||
console.log(goods)
|
||||
goodsShare.value.open('分享商品', goods)
|
||||
}
|
||||
|
||||
async function shareConfirm(shareItem, goods) {
|
||||
await globalRequestStore.doShareToAddIntegral()
|
||||
goodsDetailShare(goods)
|
||||
if (shareItem.value === 'photo') {
|
||||
goodsPoster.value.open(goods)
|
||||
return
|
||||
}
|
||||
if (shareItem.value === 'wechat') {
|
||||
shareH5()
|
||||
}
|
||||
}
|
||||
|
||||
// =========================== hooks 生命周期 =================================
|
||||
const {scrollTop} = useScroll()
|
||||
onPageScroll(()=>{})
|
||||
onPageScroll(() => {
|
||||
})
|
||||
const paramsObj = ref({})
|
||||
onLoad((options) => {
|
||||
const params = getParams(options)
|
||||
@ -318,7 +363,7 @@ onLoad((options) => {
|
||||
// 处理从分销商商品分享进入
|
||||
handleJumpFromDistributionInvite(params)
|
||||
handleGetDetail({productId: params.id, skuId: params.skuId ? params.skuId : ''})
|
||||
if(user.value){
|
||||
if (user.value) {
|
||||
handleGetCartCount(params.id)
|
||||
}
|
||||
})
|
||||
@ -356,6 +401,14 @@ const computedHeightStyle = computed(() => {
|
||||
return {...style, height: `${ headerRef.value.heightInfo.statusBarHeight }px`}
|
||||
})
|
||||
|
||||
const computedShareIconStyle = computed(() => {
|
||||
const style = {width: '32px', height: '32px'}
|
||||
if (!headerRef.value || headerRef.value?.menuInfo.height === 0) return style
|
||||
return {
|
||||
width: headerRef.value.menuInfo.height + 'px',
|
||||
height: headerRef.value.menuInfo.height + 'px',
|
||||
}
|
||||
})
|
||||
/** 选中的sku是否是活动sku */
|
||||
const skuIsActivity = computed(() => {
|
||||
if (!storeAttr.value) return false
|
||||
@ -391,6 +444,7 @@ const handleGetDetail = async (data) => {
|
||||
setDefaultAttr(detail)
|
||||
await handleGetCanGroupByList()
|
||||
} catch (error) {
|
||||
console.dir(error)
|
||||
}
|
||||
};
|
||||
|
||||
@ -537,7 +591,7 @@ const handleSelectAttr = (attr) => {
|
||||
break;
|
||||
}
|
||||
actionType.value = "";
|
||||
selectAttrPanel.value.close();
|
||||
selectAttrPanel.value?.close();
|
||||
};
|
||||
|
||||
/**
|
||||
@ -675,7 +729,7 @@ const handleDoGroupBy = (orderInfo) => {
|
||||
* 去客服
|
||||
*/
|
||||
const goToService = async () => {
|
||||
const {getServiceData,openService} = useService();
|
||||
const {getServiceData, openService} = useService();
|
||||
await getServiceData()
|
||||
await openService()
|
||||
};
|
||||
@ -691,6 +745,19 @@ const goToShopCart = () => {
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.share-icon {
|
||||
width: 64rpx;
|
||||
height: 64rpx;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0 0 10rpx rgba(225, 225, 225, 0.48);
|
||||
border: 1rpx solid rgba(225, 225, 225, 0.8);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.search {
|
||||
padding: 0 17px;
|
||||
}
|
||||
@ -717,6 +784,7 @@ const goToShopCart = () => {
|
||||
|
||||
.goodsDetail {
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
|
||||
&-storeName {
|
||||
line-height: 40rpx;
|
||||
|
@ -13,7 +13,7 @@ import { wxLogin } from "@/utils/wechatUtils";
|
||||
import { ref } from "vue";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
import { privacyAgreementUrl, userAgreementUrl, weixinLogin } from "@/api/auth";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { afterLogin } from "@/utils";
|
||||
|
||||
const {toast, loading, hideLoading} = useInterface()
|
||||
@ -119,10 +119,10 @@ function toAgreement(type) {
|
||||
class="button animation-button disabled"
|
||||
@click="checkPrivacy"
|
||||
>
|
||||
<!-- <image-->
|
||||
<!-- class="icon"-->
|
||||
<!-- :src="wechat"-->
|
||||
<!-- />-->
|
||||
<!-- <image-->
|
||||
<!-- class="icon"-->
|
||||
<!-- :src="wechat"-->
|
||||
<!-- />-->
|
||||
一键登录
|
||||
</view>
|
||||
<button
|
||||
@ -132,10 +132,10 @@ function toAgreement(type) {
|
||||
@getphonenumber="getPhoneNumber"
|
||||
@click="getCode"
|
||||
>
|
||||
<!-- <image-->
|
||||
<!-- class="icon"-->
|
||||
<!-- :src="wechat"-->
|
||||
<!-- />-->
|
||||
<!-- <image-->
|
||||
<!-- class="icon"-->
|
||||
<!-- :src="wechat"-->
|
||||
<!-- />-->
|
||||
一键登录
|
||||
</button>
|
||||
<!-- #endif -->
|
||||
|
@ -13,7 +13,7 @@ import { nextTick, onBeforeUnmount, ref, unref } from "vue";
|
||||
import { checkPhone } from "@/utils/utils";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
import { privacyAgreementUrl, sendSmsCode as sendSmsCodeRequest, smsLogin, userAgreementUrl } from '@/api/auth'
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { afterLogin } from "@/utils";
|
||||
|
||||
const {getParams, goBack, push, pushToTab} = useRouter()
|
||||
@ -162,10 +162,10 @@ async function doLogin() {
|
||||
/**
|
||||
* 手机号验证
|
||||
*/
|
||||
function phoneInput(event){
|
||||
function phoneInput(event) {
|
||||
const pattern = /[^\d]/g;
|
||||
nextTick(() => {
|
||||
form.value.mobile = event.detail.value.replace(pattern,'');
|
||||
form.value.mobile = event.detail.value.replace(pattern, '');
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@
|
||||
import { ref } from 'vue'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { smsLogin, weixinLogin } from '@/api/auth'
|
||||
import { useMainStore } from '@/store/store'
|
||||
import { useMainStore } from '@/store/modules/useMainStore'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
|
||||
|
@ -102,6 +102,7 @@ const toEvaluate = (unique, orderId, isRedirectTo) => {
|
||||
.order-good {
|
||||
background: #fff;
|
||||
border-radius: 15rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.after-sale-box {
|
||||
|
@ -91,7 +91,7 @@ onMounted(() => {
|
||||
v-for="item in residuePersonNum"
|
||||
:key="item"
|
||||
@click="goGroupByDetail({teamworkId:orderInfoData.teamworkId})">
|
||||
<u-icon name="plus" />
|
||||
<uv-icon name="plus" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
@ -7,7 +7,9 @@
|
||||
@leftClick="goBackList"
|
||||
/>
|
||||
<view v-if="orderInfoData">
|
||||
<view class="orderInfo-header background-warp" :class="orderInfoData.state === 0 && 'mb-100'">
|
||||
<view
|
||||
class="orderInfo-header background-warp"
|
||||
:class="orderInfoData.state === 0 && 'mb-100'">
|
||||
<view class="background">
|
||||
<image
|
||||
class="image"
|
||||
@ -17,37 +19,43 @@
|
||||
</view>
|
||||
<view class="background-content page-space">
|
||||
<view class="order-status-info">
|
||||
<view class="order-status" :class="'order-status-'+ orderInfoData.state">
|
||||
<view
|
||||
class="order-status"
|
||||
:class="'order-status-'+ orderInfoData.state">
|
||||
<view>
|
||||
<!-- {{ orderInfoStatusMsg }}-->
|
||||
{{refundOrderStatus[orderInfoData.state]}}
|
||||
<!-- {{ orderInfoStatusMsg }}-->
|
||||
{{ refundOrderStatus[orderInfoData.state] }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="order-date" v-if="parseInt(orderInfoData.remainTime) > 0 && ![3,4].includes(orderInfoData.state)">
|
||||
{{remainTimeStr}}
|
||||
<view
|
||||
class="order-date"
|
||||
v-if="parseInt(orderInfoData.remainTime) > 0 && ![3,4].includes(orderInfoData.state)">
|
||||
{{ remainTimeStr }}
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="address noBorder">-->
|
||||
<!-- <view class="address-icon">-->
|
||||
<!-- <image-->
|
||||
<!-- class="image"-->
|
||||
<!-- src="https://b2c-pro-static-dev.zkthink.com/static/images/icon-location.png"-->
|
||||
<!-- />-->
|
||||
<!-- </view>-->
|
||||
<!-- <view class="address-main">-->
|
||||
<!-- <view class="address-header">-->
|
||||
<!-- <view class="address-name">{{ orderInfoData.realName }}</view>-->
|
||||
<!-- <view class="address-phone">{{ orderInfoData.userPhone }}</view>-->
|
||||
<!-- </view>-->
|
||||
<!-- <view class="address-content">-->
|
||||
<!-- <view class="address-desc">{{ orderInfoData.userAddress }}</view>-->
|
||||
<!-- </view>-->
|
||||
<!-- </view>-->
|
||||
<!-- </view>-->
|
||||
<!-- <view class="address noBorder">-->
|
||||
<!-- <view class="address-icon">-->
|
||||
<!-- <image-->
|
||||
<!-- class="image"-->
|
||||
<!-- src="https://b2c-pro-static-dev.zkthink.com/static/images/icon-location.png"-->
|
||||
<!-- />-->
|
||||
<!-- </view>-->
|
||||
<!-- <view class="address-main">-->
|
||||
<!-- <view class="address-header">-->
|
||||
<!-- <view class="address-name">{{ orderInfoData.realName }}</view>-->
|
||||
<!-- <view class="address-phone">{{ orderInfoData.userPhone }}</view>-->
|
||||
<!-- </view>-->
|
||||
<!-- <view class="address-content">-->
|
||||
<!-- <view class="address-desc">{{ orderInfoData.userAddress }}</view>-->
|
||||
<!-- </view>-->
|
||||
<!-- </view>-->
|
||||
<!-- </view>-->
|
||||
</view>
|
||||
</view>
|
||||
<view class="page-space">
|
||||
<view class="mb-20 card" v-if="orderInfoData.realName">
|
||||
<view
|
||||
class="mb-20 card"
|
||||
v-if="orderInfoData.realName">
|
||||
<view class="card-head">
|
||||
<view class="card-title">
|
||||
商家收货信息
|
||||
@ -60,14 +68,16 @@
|
||||
收货人
|
||||
</view>
|
||||
<view class="info-cell-value">
|
||||
<view class="address-name">{{ orderInfoData.realName }}</view>
|
||||
<view class="address-phone">{{ orderInfoData.userPhone }}</view>
|
||||
<view class="address-name">{{ orderInfoData.realName }}</view>
|
||||
<view class="address-phone">{{ orderInfoData.userPhone }}</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="info-cell">
|
||||
<view class="info-cell-label">
|
||||
地<text class="wem1"></text>址
|
||||
地
|
||||
<text class="wem1"></text>
|
||||
址
|
||||
</view>
|
||||
<view class="info-cell-value">
|
||||
{{ orderInfoData.userAddress }}
|
||||
@ -77,7 +87,9 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mb-20 card" v-if="orderInfoData.deliverySn">
|
||||
<view
|
||||
class="mb-20 card"
|
||||
v-if="orderInfoData.deliverySn">
|
||||
<view class="card-head">
|
||||
<view class="card-title">
|
||||
物流信息
|
||||
@ -162,7 +174,7 @@
|
||||
服务类型
|
||||
</view>
|
||||
<view class="info-cell-value">
|
||||
{{ orderInfoData.serviceType===0?'仅退款':'退货退款' }}
|
||||
{{ orderInfoData.serviceType === 0 ? '仅退款' : '退货退款' }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="info-cell">
|
||||
@ -279,13 +291,16 @@
|
||||
|
||||
</view>
|
||||
</layout>
|
||||
<Modal ref="modalRef" :content="modalTitle" @confirm="confirmModal" />
|
||||
<Modal
|
||||
ref="modalRef"
|
||||
:content="modalTitle"
|
||||
@confirm="confirmModal" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed, ref, unref } from 'vue'
|
||||
import { onShow} from '@dcloudio/uni-app'
|
||||
import { useMainStore } from '@/store/store'
|
||||
import { onShow } from '@dcloudio/uni-app'
|
||||
import { useMainStore } from '@/store/modules/useMainStore'
|
||||
import { formatDate } from '@/utils/utils'
|
||||
import {
|
||||
orderCancel,
|
||||
@ -297,15 +312,16 @@ import {
|
||||
} from '@/api/order'
|
||||
import { orderReStatus } from '@/config'
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import {useGlobalProperties} from "@/hooks";
|
||||
import { useGlobalProperties } from "@/hooks";
|
||||
import { useShearPlate } from "@/hooks/useShearPlate";
|
||||
import { formatRemainTime } from '@/utils/utils'
|
||||
import Modal from "@/components/Modal/index.vue";
|
||||
import { afterSalesBg } from "@/utils/images";
|
||||
import config from "@/uni_modules/uv-ui-tools/libs/config/config";
|
||||
|
||||
const {$timeFormat} = useGlobalProperties()
|
||||
|
||||
const {getUrlParams,push} = useRouter()
|
||||
const {getUrlParams, push} = useRouter()
|
||||
const {setData} = useShearPlate();
|
||||
const orderInfoData = ref(null)
|
||||
const orderInfoStatusMsg = ref('')
|
||||
@ -313,7 +329,7 @@ const expressData = ref(null)
|
||||
const id = ref(0)
|
||||
const orderId = ref(0)
|
||||
const remainTimeStr = ref('')
|
||||
const refundOrderStatus = ref({
|
||||
const refundOrderStatus = ref({
|
||||
0: '请耐心等待平台审核',
|
||||
1: '平台已同意退货申请,请尽早退货',
|
||||
2: '请耐心等待平台确认收货',
|
||||
@ -331,8 +347,8 @@ const handleOrderInfo = async (option) => {
|
||||
|
||||
const modalRef = ref()
|
||||
const modalType = ref(0) // 0删除记录 1撤销申请
|
||||
const modalTitle = computed(()=>{
|
||||
const tipsArr = ['确认删除记录吗?','确认撤销申请吗?']
|
||||
const modalTitle = computed(() => {
|
||||
const tipsArr = ['确认删除记录吗?', '确认撤销申请吗?']
|
||||
return tipsArr[modalType.value]
|
||||
})
|
||||
|
||||
@ -340,7 +356,7 @@ const modalTitle = computed(()=>{
|
||||
* 打开弹窗
|
||||
* @param {number} type 0删除记录 1撤销申请
|
||||
*/
|
||||
function showModal(type){
|
||||
function showModal(type) {
|
||||
modalType.value = type
|
||||
unref(modalRef).show()
|
||||
}
|
||||
@ -348,15 +364,15 @@ function showModal(type){
|
||||
/**
|
||||
* 确认弹窗
|
||||
*/
|
||||
function confirmModal(){
|
||||
const funcArr = [doDeleteRequest,doRevoke]
|
||||
function confirmModal() {
|
||||
const funcArr = [doDeleteRequest, doRevoke]
|
||||
funcArr[modalType.value]()
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认删除
|
||||
*/
|
||||
async function doDeleteRequest(){
|
||||
async function doDeleteRequest() {
|
||||
await afterSalesOrderDelete({
|
||||
id: id.value,
|
||||
orderCode: orderInfoData.value.orderId
|
||||
@ -365,15 +381,15 @@ async function doDeleteRequest(){
|
||||
title: '已删除',
|
||||
duration: 2000
|
||||
});
|
||||
setTimeout(()=>{
|
||||
setTimeout(() => {
|
||||
toRefundList()
|
||||
},2000)
|
||||
}, 2000)
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认撤销
|
||||
*/
|
||||
async function doRevoke(){
|
||||
async function doRevoke() {
|
||||
await afterSalesOrderRevoke({
|
||||
id: id.value,
|
||||
key: orderInfoData.value.orderId
|
||||
@ -382,9 +398,9 @@ async function doRevoke(){
|
||||
title: '已撤销',
|
||||
duration: 2000
|
||||
});
|
||||
setTimeout(()=>{
|
||||
setTimeout(() => {
|
||||
toRefundList()
|
||||
},2000)
|
||||
}, 2000)
|
||||
}
|
||||
|
||||
// 跳转列表
|
||||
@ -408,7 +424,7 @@ const toRefund = () => {
|
||||
push({url: '/pages/refund/refund'}, {
|
||||
data: {
|
||||
refundType: orderInfoData.value.serviceType,
|
||||
goods: orderInfoData.value.cartInfo.map(v=>{
|
||||
goods: orderInfoData.value.cartInfo.map(v => {
|
||||
return v.productAttrUnique
|
||||
}).toString(),
|
||||
id: orderId.value
|
||||
@ -419,11 +435,11 @@ const toRefund = () => {
|
||||
// 返回列表
|
||||
const goBackList = () => {
|
||||
push({url: '/pages/refundList/refundList'}, {
|
||||
type:"redirectTo"
|
||||
type: "redirectTo"
|
||||
})
|
||||
}
|
||||
|
||||
onShow(()=>{
|
||||
onShow(() => {
|
||||
const params = getUrlParams()
|
||||
id.value = params.id
|
||||
orderId.value = params.orderId
|
||||
@ -436,11 +452,12 @@ onShow(()=>{
|
||||
|
||||
<style lang="scss">
|
||||
@import "../../style/images";
|
||||
|
||||
.orderList {
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
|
||||
.page-space{
|
||||
.page-space {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
@ -459,12 +476,15 @@ onShow(()=>{
|
||||
background-size: 40rpx 40rpx;
|
||||
background-position: left center;
|
||||
background-repeat: no-repeat;
|
||||
&.order-status-0,&.order-status-1,&.order-status-2,&.order-status-5{
|
||||
|
||||
&.order-status-0, &.order-status-1, &.order-status-2, &.order-status-5 {
|
||||
background-image: $orderStateClock;
|
||||
}
|
||||
&.order-status-3,&.order-status-4{
|
||||
|
||||
&.order-status-3, &.order-status-4 {
|
||||
background-image: $orderStateFinish;
|
||||
}
|
||||
|
||||
.image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
@ -488,14 +508,15 @@ onShow(()=>{
|
||||
}
|
||||
}
|
||||
|
||||
.infos{
|
||||
.info-cell-label{
|
||||
.wem1{
|
||||
.infos {
|
||||
.info-cell-label {
|
||||
.wem1 {
|
||||
width: 1em;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
.info-cell-value{
|
||||
|
||||
.info-cell-value {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ onLoad((options) => {
|
||||
</Empty>
|
||||
</template>
|
||||
</view>
|
||||
<u-action-sheet
|
||||
<uv-action-sheet
|
||||
:actions="mapUtils.mapList"
|
||||
:show="showMapSelect"
|
||||
cancelText="取消"
|
||||
|
@ -1,8 +1,8 @@
|
||||
<script setup>
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import {onLoad, onPageScroll, onShow} from "@dcloudio/uni-app";
|
||||
import { onLoad, onPageScroll, onShow } from "@dcloudio/uni-app";
|
||||
import { nextTick, onBeforeUnmount, ref, unref } from "vue";
|
||||
import { useMainStore } from '@/store/store';
|
||||
import { useMainStore } from '@/store/modules/useMainStore';
|
||||
import { storeToRefs } from "pinia";
|
||||
import { orderConfirm, orderCreate } from "@/api/order";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
@ -16,15 +16,16 @@ import Header from "@/components/Header/index.vue"
|
||||
import { useScroll } from "@/hooks/useScroll";
|
||||
import { nextIcon, shopIcon } from "@/utils/images";
|
||||
import { emitter } from "@/utils/emitter";
|
||||
import {h5InWeChat} from "@/utils";
|
||||
import { h5InWeChat } from "@/utils";
|
||||
import Login from "@/pages/login/login.vue";
|
||||
// ==================================== hooks =====================================
|
||||
const {scrollTop} = useScroll()
|
||||
onPageScroll(()=>{})
|
||||
onPageScroll(() => {
|
||||
})
|
||||
const {getParams, push, goBack} = useRouter()
|
||||
const {toast, loading, hideLoading} = useInterface();
|
||||
const mainStore = useMainStore();
|
||||
const {selectAddress, defaultAddress, address} = storeToRefs(mainStore);
|
||||
const {selectAddress, defaultAddress, address, integralName} = storeToRefs(mainStore);
|
||||
const campaignType = ref(0)
|
||||
const zeroPrice = ref(false) // 本单支付金额是否为0
|
||||
/**
|
||||
@ -187,20 +188,20 @@ async function handleConfirm() {
|
||||
try {
|
||||
const payInfo = await doCreateServiceOrder()
|
||||
// 去拉取支付
|
||||
await doPayment({type: payType.value, payInfo,isGroup:routerParams.value.campaignType===1})
|
||||
await doPayment({type: payType.value, payInfo, isGroup: routerParams.value.campaignType === 1})
|
||||
// #ifndef H5
|
||||
push({url: '/pages/payStatus/index'}, { data: {campaignType: campaignType.value},type: 'redirectTo'})
|
||||
push({url: '/pages/payStatus/index'}, {data: {campaignType: campaignType.value}, type: 'redirectTo'})
|
||||
// #endif
|
||||
// 处理微信内h5
|
||||
// #ifdef H5
|
||||
if(h5InWeChat()){
|
||||
push({url: '/pages/payStatus/index'}, { data: {campaignType: campaignType.value},type: 'redirectTo'})
|
||||
if (h5InWeChat()) {
|
||||
push({url: '/pages/payStatus/index'}, {data: {campaignType: campaignType.value}, type: 'redirectTo'})
|
||||
}
|
||||
// #endif
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
toast({title: '支付失败'})
|
||||
push({url: '/pages/payStatus/index'}, {data: {campaignType: campaignType.value} , type: 'redirectTo'})
|
||||
push({url: '/pages/payStatus/index'}, {data: {campaignType: campaignType.value}, type: 'redirectTo'})
|
||||
} finally {
|
||||
subLoading.value = false
|
||||
mainStore.cartId = null
|
||||
@ -247,7 +248,7 @@ function setActivityData(data) {
|
||||
if (routerParams.value.orderType !== 2) return
|
||||
// 活动商品
|
||||
data.campaignType = routerParams.value.campaignType // 1拼团 2秒杀 3砍价
|
||||
campaignType.value = routerParams.value.campaignType
|
||||
campaignType.value = routerParams.value.campaignType
|
||||
data.campaignDetailId = routerParams.value.campaignDetailId // 活动营销ID
|
||||
// 拼团 路由参数 campaignType 1拼团活动
|
||||
if (routerParams.value.campaignType !== 1) return;
|
||||
@ -374,7 +375,7 @@ onShow(async () => {
|
||||
v-else>
|
||||
点击选择门店
|
||||
</view>
|
||||
<u-icon name="arrow-right" />
|
||||
<uv-icon name="arrow-right" />
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
@ -402,11 +403,15 @@ onShow(async () => {
|
||||
imgWidth="200rpx"
|
||||
>
|
||||
<template #options="{goods}">
|
||||
<view class="goods-detail" style="width: 100%">
|
||||
<view
|
||||
class="goods-detail"
|
||||
style="width: 100%">
|
||||
<view class="sku-row">
|
||||
{{ goods.attrInfo.sku }}
|
||||
</view>
|
||||
<view class="price-row flex flex-ai__center flex-jc__sb" style="width:100%;">
|
||||
<view
|
||||
class="price-row flex flex-ai__center flex-jc__sb"
|
||||
style="width:100%;">
|
||||
<view class="price flex flex-ai__end">
|
||||
¥{{ sku.truePrice }}
|
||||
<span class="old-price">
|
||||
@ -487,10 +492,14 @@ onShow(async () => {
|
||||
/>
|
||||
</view>
|
||||
<view class="text">
|
||||
<view class="flex flex-nowrap flex-ai__end" style="white-space: nowrap">
|
||||
<view
|
||||
class="flex flex-nowrap flex-ai__end"
|
||||
style="white-space: nowrap">
|
||||
{{ payItem.label }}
|
||||
<span v-if="payItem.type===PayType['1']" style="font-size: 16rpx;white-space: nowrap;">
|
||||
({{mainStore.user.nowMoney}}元)
|
||||
<span
|
||||
v-if="payItem.type===PayType['1']"
|
||||
style="font-size: 16rpx;white-space: nowrap;">
|
||||
({{ mainStore.user.nowMoney }}元)
|
||||
</span>
|
||||
</view>
|
||||
<view class="e-text">
|
||||
@ -531,20 +540,20 @@ onShow(async () => {
|
||||
<view
|
||||
class="row flex flex-ai__center flex-jc__sb"
|
||||
v-if="orderDetail.priceGroup.enableIntegral">
|
||||
<view class="label">积分抵扣</view>
|
||||
<view class="label">{{ integralName }}抵扣</view>
|
||||
<view class="value flex flex-ai__center">
|
||||
当前积分:
|
||||
当前{{ integralName }}:
|
||||
<text class="primary-color">{{ orderDetail.priceGroup.integral }}</text>
|
||||
<u-checkbox-group
|
||||
<uv-checkbox-group
|
||||
style="margin-left: 10rpx;margin-top: 3rpx;"
|
||||
shape="circle"
|
||||
activeColor="#ee6d46"
|
||||
v-model="useIntegral"
|
||||
@change="handleUseIntegralChange">
|
||||
<u-checkbox
|
||||
<uv-checkbox
|
||||
label=" "
|
||||
:name="1" />
|
||||
</u-checkbox-group>
|
||||
</uv-checkbox-group>
|
||||
<template v-if="useIntegral.length>0">
|
||||
-¥{{ orderDetail.priceGroup.deductionPrice.toFixed(2) }}
|
||||
</template>
|
||||
@ -586,6 +595,7 @@ $bottomHeight: 100rpx;
|
||||
.arrow-icon {
|
||||
width: 20rpx;
|
||||
height: 20rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.bottom-empty-height {
|
||||
@ -637,6 +647,7 @@ $bottomHeight: 100rpx;
|
||||
.address-info {
|
||||
color: #333333;
|
||||
margin: 10rpx 0;
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -252,7 +252,7 @@
|
||||
import { ref } from 'vue'
|
||||
import { orderConfirm, orderCreate } from '@/api/order'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { useMainStore } from '@/store/store';
|
||||
import { useMainStore } from '@/store/modules/useMainStore';
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import { getAddressList } from "@/api/address";
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
import { updateAvatar, updateUserInfo } from "@/api/user";
|
||||
import { requestUtil } from "@/utils/request";
|
||||
|
@ -8,7 +8,7 @@
|
||||
<script setup>
|
||||
import Header from "@/components/Header/index.vue"
|
||||
import moment from "moment"
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { storeToRefs } from "pinia";
|
||||
import UvIcon from "@/uni_modules/uv-icon/components/uv-icon/uv-icon.vue";
|
||||
import UvImage from "@/uni_modules/uv-image/components/uv-image/uv-image.vue";
|
||||
|
@ -142,7 +142,7 @@ import { onLoad } from '@dcloudio/uni-app'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { objectURLToBlob } from '@/utils'
|
||||
import Header from "@/components/Header/index.vue"
|
||||
import { useMainStore } from '@/store/store'
|
||||
import { useMainStore } from '@/store/modules/useMainStore'
|
||||
import { updateAvatar, updateNickname } from '@/api/user'
|
||||
import { useGlobalProperties } from "@/hooks";
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
|
@ -1,5 +1,9 @@
|
||||
<template>
|
||||
<Header ref="headerRef" :scroll-top="scrollTop"> 分类</Header>
|
||||
<Header
|
||||
ref="headerRef"
|
||||
:show-return="false"
|
||||
:scroll-top="scrollTop"> 分类
|
||||
</Header>
|
||||
<view
|
||||
class="goods-category"
|
||||
:style="computeMainBoxStyle"
|
||||
|
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<view class="home-container" :style="{ 'margin-top': `${statusBarHeight}px` }">
|
||||
<view
|
||||
class="home-container"
|
||||
:style="{ 'margin-top': `${statusBarHeight}px` }">
|
||||
<CanvasPage />
|
||||
<!-- h5 tabbar 底部 -->
|
||||
<!-- <view class="h5-tabbar-height"></view> -->
|
||||
@ -11,7 +13,7 @@
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
import { onLoad, onReachBottom, onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app'
|
||||
import { useMainStore } from '@/store/store'
|
||||
import { useMainStore } from '@/store/modules/useMainStore'
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import CanvasPage from '@/components/canvasShow/canvasShowPage.vue'
|
||||
import ReturnTop from "@/components/ReturnTop/index.vue"
|
||||
@ -20,6 +22,7 @@ import UvIcon from "@/uni_modules/uv-icon/components/uv-icon/uv-icon.vue";
|
||||
import { useScroll } from "@/hooks/useScroll";
|
||||
import { homeLogoIcon } from "@/utils/images";
|
||||
import { useShare } from "@/hooks/useShare";
|
||||
|
||||
const main = useMainStore()
|
||||
const {push} = useRouter()
|
||||
const recommendRef = ref(null)
|
||||
@ -53,7 +56,7 @@ onLoad(() => {
|
||||
});
|
||||
})
|
||||
|
||||
const {shareAppMessage,shareTimeline} = useShare();
|
||||
const {shareAppMessage, shareTimeline} = useShare();
|
||||
onShareAppMessage(shareAppMessage)
|
||||
onShareTimeline(shareTimeline)
|
||||
const {scrollTop} = useScroll()
|
||||
@ -64,6 +67,7 @@ const {scrollTop} = useScroll()
|
||||
.home-container {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
.header-row {
|
||||
.logo-col {
|
||||
@include useFlex(flex-start, center);
|
||||
|
@ -4,6 +4,7 @@
|
||||
system-bar-area-bg="#fff"
|
||||
header-area-bg="#fff"
|
||||
bg-change-by-scroll
|
||||
:show-return="false"
|
||||
>
|
||||
购物车
|
||||
</Header>
|
||||
|
@ -10,7 +10,7 @@ import { toRefs } from "vue";
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
import { storeToRefs } from "pinia";
|
||||
import { useMainStore } from "@/store/store";
|
||||
import { useMainStore } from "@/store/modules/useMainStore";
|
||||
import { useService } from "@/hooks/useService";
|
||||
|
||||
const props = defineProps({
|
||||
@ -41,7 +41,7 @@ async function toLink(listItem) {
|
||||
if (!user.value) return toast({title: '请先登录'})
|
||||
if (!listItem.path) return toast({title: ' 暂未开放 '})
|
||||
if (listItem.path === 'kf') {
|
||||
const {getServiceData,openService} = useService();
|
||||
const {getServiceData, openService} = useService();
|
||||
await getServiceData()
|
||||
await openService()
|
||||
return
|
||||
|
@ -2,114 +2,116 @@
|
||||
<view class="mine-container">
|
||||
|
||||
<Header :show-return="false">我的</Header>
|
||||
<!-- user info -->
|
||||
<view class="userinfo-box">
|
||||
<!-- 未登录 -->
|
||||
<view
|
||||
class="userinfo-box__inner no-login"
|
||||
v-if="!(user && user.id)"
|
||||
@click="toLogin"
|
||||
>
|
||||
<view class="flex flex-ai__center">
|
||||
<image
|
||||
class="head"
|
||||
:src="defaultAvatarIcon"
|
||||
/>
|
||||
<view class="user-info">
|
||||
点击登录
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 已登录 -->
|
||||
<view
|
||||
class="userinfo-box__inner"
|
||||
@click="toUserCenter"
|
||||
v-else
|
||||
>
|
||||
<view class="flex flex-ai__center">
|
||||
<image
|
||||
class="head"
|
||||
:src="user.avatar"
|
||||
/>
|
||||
<view class="user-info">
|
||||
{{ user.nickname }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="user-top">
|
||||
<!-- user info -->
|
||||
<view class="userinfo-box">
|
||||
<!-- 未登录 -->
|
||||
<view
|
||||
class="sign-box"
|
||||
@click.stop="goSignIn">
|
||||
<image :src="mySignIn" />
|
||||
签到
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 账户信息 -->
|
||||
<view class="account-box">
|
||||
<template
|
||||
v-for="item in accountList"
|
||||
:key="item.id">
|
||||
<view
|
||||
v-if="user"
|
||||
class="account-item"
|
||||
@click.stop="handleJump(item)">
|
||||
<view class="count">
|
||||
{{ user[item.field] || 0 }}
|
||||
</view>
|
||||
<view class="title">
|
||||
{{ item.label }}
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
</view>
|
||||
|
||||
<!-- VIP 信息 未激活 -->
|
||||
<view
|
||||
class="vip-box vip-none"
|
||||
@click="goMemberCenter"
|
||||
v-if="!memberLeverInfo.currentLevel">
|
||||
<view
|
||||
class="vip-box__inner flex flex-ai__center flex-jc__sb"
|
||||
:style="{backgroundImage:`url(${myVip1})`}">
|
||||
<image
|
||||
class="icon"
|
||||
:src="noneVip" />
|
||||
<view class="vip-text">
|
||||
开通享更多特权,省钱又省心
|
||||
</view>
|
||||
<view class="vip-button">
|
||||
立即激活
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- VIP 信息 激活 -->
|
||||
<view
|
||||
class="vip-box"
|
||||
@click="goMemberCenter"
|
||||
v-else>
|
||||
<view
|
||||
class="vip-box__inner "
|
||||
:style="{backgroundImage:`url(${myVip1})`}">
|
||||
<view class="flex flex-ai__center flex-jc__sb">
|
||||
<image
|
||||
class="icon"
|
||||
:src="memberLeverInfo.currentLevel.iconUrl" />
|
||||
<view class="vip-text flex flex-ai__center">
|
||||
{{ memberLeverInfo.currentLevel.levelName }}
|
||||
<view class="process">
|
||||
<view
|
||||
class="schedule"
|
||||
:style="{width: `${memberLeverInfo.needGrowthValue/memberLeverInfo.nextLevel.growthValue}%`}"></view>
|
||||
class="userinfo-box__inner no-login"
|
||||
v-if="!(user && user.id)"
|
||||
@click="toLogin"
|
||||
>
|
||||
<view class="flex flex-ai__center">
|
||||
<image
|
||||
class="head"
|
||||
:src="defaultAvatarIcon"
|
||||
/>
|
||||
<view class="user-info">
|
||||
点击登录
|
||||
</view>
|
||||
</view>
|
||||
<view class="vip-button">
|
||||
查看权益 >
|
||||
</view>
|
||||
<!-- 已登录 -->
|
||||
<view
|
||||
class="userinfo-box__inner"
|
||||
@click="toUserCenter"
|
||||
v-else
|
||||
>
|
||||
<view class="flex flex-ai__center">
|
||||
<image
|
||||
class="head"
|
||||
:src="user.avatar"
|
||||
/>
|
||||
<view class="user-info">
|
||||
{{ user.nickname }}
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
class="sign-box"
|
||||
@click.stop="goSignIn">
|
||||
<image :src="mySignIn" />
|
||||
签到
|
||||
</view>
|
||||
</view>
|
||||
<view class="tips">
|
||||
再获取{{ memberLeverInfo.needGrowthValue }}经验,可升级为{{ memberLeverInfo.nextLevel.levelName }}会员
|
||||
</view>
|
||||
|
||||
<!-- 账户信息 -->
|
||||
<view class="account-box">
|
||||
<template
|
||||
v-for="item in accountList"
|
||||
:key="item.id">
|
||||
<view
|
||||
v-if="user"
|
||||
class="account-item"
|
||||
@click.stop="handleJump(item)">
|
||||
<view class="count">
|
||||
{{ user[item.field] || 0 }}
|
||||
</view>
|
||||
<view class="title">
|
||||
{{ item.field === 'integral' ? `我的${ integralName }` : item.label }}
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
</view>
|
||||
|
||||
<!-- VIP 信息 未激活 -->
|
||||
<view
|
||||
class="vip-box vip-none"
|
||||
@click="goMemberCenter"
|
||||
v-if="!memberLeverInfo.currentLevel">
|
||||
<view
|
||||
class="vip-box__inner flex flex-ai__center flex-jc__sb"
|
||||
:style="{backgroundImage:`url(${myVip1})`}">
|
||||
<image
|
||||
class="icon"
|
||||
:src="noneVip" />
|
||||
<view class="vip-text">
|
||||
开通享更多特权,省钱又省心
|
||||
</view>
|
||||
<view class="vip-button">
|
||||
立即激活
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- VIP 信息 激活 -->
|
||||
<view
|
||||
class="vip-box"
|
||||
@click="goMemberCenter"
|
||||
v-else>
|
||||
<view
|
||||
class="vip-box__inner "
|
||||
:style="{backgroundImage:`url(${myVip1})`}">
|
||||
<view class="flex flex-ai__center flex-jc__sb">
|
||||
<image
|
||||
class="icon"
|
||||
:src="memberLeverInfo.currentLevel.iconUrl" />
|
||||
<view class="vip-text flex flex-ai__center">
|
||||
{{ memberLeverInfo.currentLevel.levelName }}
|
||||
<view class="process">
|
||||
<view
|
||||
class="schedule"
|
||||
:style="{width: `${memberLeverInfo.needGrowthValue/memberLeverInfo.nextLevel.growthValue}%`}"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="vip-button">
|
||||
查看权益 >
|
||||
</view>
|
||||
</view>
|
||||
<view class="tips">
|
||||
再获取{{ memberLeverInfo.needGrowthValue }}经验,可升级为{{ memberLeverInfo.nextLevel.levelName }}会员
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -147,7 +149,7 @@ import Header from '@/components/Header/index.vue'
|
||||
|
||||
import { orderUserCount } from '@/api/order'
|
||||
import { onShow } from '@dcloudio/uni-app'
|
||||
import { useMainStore } from '@/store/store'
|
||||
import { useMainStore } from '@/store/modules/useMainStore'
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import { storeToRefs } from "pinia";
|
||||
import GridCard from "@/root/user/components/GridCard.vue";
|
||||
@ -155,10 +157,10 @@ import { accountList, cardOneList, cardTwoList, orderIconList } from "@/root/use
|
||||
import { defaultAvatarIcon, mySignIn, myVip1, myVipNone, noneVip } from "@/utils/images";
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
import { useJump } from "@/hooks/useJump";
|
||||
import { getUserMemberLevel } from "@/api/member";
|
||||
import { getIntegralName, getUserMemberLevel } from "@/api/member";
|
||||
|
||||
const mainStore = useMainStore()
|
||||
const {user} = storeToRefs(mainStore);
|
||||
const {user, integralName} = storeToRefs(mainStore);
|
||||
const {push} = useRouter()
|
||||
const {toast} = useInterface();
|
||||
const {goSignIn, goMemberCenter} = useJump()
|
||||
@ -204,6 +206,7 @@ async function doGetUserMemberLevel() {
|
||||
memberLeverInfo.value = await getUserMemberLevel()
|
||||
}
|
||||
|
||||
|
||||
function handleJump(item) {
|
||||
if (!item.path) return toast({title: '暂未开放~'})
|
||||
if (typeof item.path === 'function') {
|
||||
@ -225,7 +228,12 @@ onShow(() => {
|
||||
scoped
|
||||
>
|
||||
.mine-container {
|
||||
background: linear-gradient(to bottom, #fff 0%, #fff 28%, #b0b0b0 40%, #fff 41%);
|
||||
background-color: #ffffff;
|
||||
|
||||
.user-top {
|
||||
padding-bottom: 22rpx;
|
||||
background: url("https://b2c-pro-static-dev.zkthink.com/static/my/bg-top.png") no-repeat bottom center / 100% auto;
|
||||
}
|
||||
|
||||
.userinfo-box {
|
||||
@include usePadding(32, 0);
|
||||
@ -379,7 +387,8 @@ onShow(() => {
|
||||
.big-card {
|
||||
width: 100%;
|
||||
background: #f6f6f6;
|
||||
border-radius: 30rpx;
|
||||
border-radius: 30rpx 30rpx 0 0;
|
||||
margin-top: -22rpx;
|
||||
@include usePadding(32, 32);
|
||||
|
||||
}
|
||||
|
12
store/index.js
Normal file
12
store/index.js
Normal file
@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @name: storeIndex
|
||||
* @author: kahu4
|
||||
* @date: 2024-02-21 17:28
|
||||
* @description:暴露公共store
|
||||
* @update: 2024-02-21 17:28
|
||||
* */
|
||||
import { createPinia } from "pinia";
|
||||
|
||||
const store = createPinia();
|
||||
|
||||
export default store;
|
32
store/modules/useGlobalRequestStore.js
Normal file
32
store/modules/useGlobalRequestStore.js
Normal file
@ -0,0 +1,32 @@
|
||||
/**
|
||||
* @name: globalRequestStore
|
||||
* @author: kahu4
|
||||
* @date: 2024-02-21 17:32
|
||||
* @description:公共方法
|
||||
* @update: 2024-02-21 17:32
|
||||
* */
|
||||
|
||||
import { defineStore } from "pinia";
|
||||
import store from "@/store";
|
||||
import { shareToAddIntegral } from "@/api/account/integral";
|
||||
|
||||
export const useGlobalRequestStore = defineStore('globalRequestStore', {
|
||||
state: () => ({}),
|
||||
getters: {},
|
||||
actions: {
|
||||
/**
|
||||
* 分享商品获取积分
|
||||
* @return {Promise<boolean>}
|
||||
*/
|
||||
async doShareToAddIntegral() {
|
||||
try {
|
||||
await shareToAddIntegral()
|
||||
return true
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const useGlobalRequestStoreWithOut = () => useGlobalRequestStore(store);
|
80
store/modules/useMainStore.js
Normal file
80
store/modules/useMainStore.js
Normal file
@ -0,0 +1,80 @@
|
||||
import { defineStore } from 'pinia'
|
||||
|
||||
import cookie from '@/utils/cookie'
|
||||
import { getUserInfo } from '@/api/user'
|
||||
import { getAddressCityList, getAddressList } from '@/api/address'
|
||||
import { useRouter } from "@/hooks/useRouter";
|
||||
import { getIntegralName } from "@/api/member";
|
||||
import store from "@/store";
|
||||
|
||||
const {push} = useRouter()
|
||||
|
||||
export const useMainStore = defineStore('main', {
|
||||
state: () => ({
|
||||
user: null,
|
||||
address: [],
|
||||
areaList: [],
|
||||
selectAddress: null,
|
||||
moreLoading: true,
|
||||
cartId: null,
|
||||
integralName: '积分'
|
||||
}),
|
||||
getters: {
|
||||
defaultAddress(state) {
|
||||
return state.address?.filter(item => item.isDefault)?.[0]
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
setAccessToken(user) {
|
||||
cookie.set('accessToken', user)
|
||||
return getUserInfo()
|
||||
},
|
||||
setSelectAddress(id) {
|
||||
this.selectAddress = this.address.filter(item => item.id == id)[0]
|
||||
},
|
||||
async getUserInfo() {
|
||||
let res = await getUserInfo()
|
||||
this.user = res
|
||||
return res
|
||||
},
|
||||
restAddress() {
|
||||
this.address = []
|
||||
this.moreLoading = true
|
||||
},
|
||||
clearSelectAddress() {
|
||||
this.selectAddress = null
|
||||
},
|
||||
async getAddressList(page) {
|
||||
let res = await getAddressList({page: page})
|
||||
if (res.length) {
|
||||
this.address = this.address.concat(res)
|
||||
} else {
|
||||
this.moreLoading = false
|
||||
}
|
||||
// console.log('--> % getUserInfo % res:\n', res)
|
||||
},
|
||||
async getAddressCityList() {
|
||||
this.areaList = await getAddressCityList()
|
||||
},
|
||||
init() {
|
||||
let accessToken = cookie.get('accessToken')
|
||||
if (accessToken) {
|
||||
return getUserInfo()
|
||||
}
|
||||
return null
|
||||
},
|
||||
logout() {
|
||||
this.user = null
|
||||
this.address = []
|
||||
this.areaList = []
|
||||
this.selectAddress = null
|
||||
cookie.remove('accessToken')
|
||||
push({url: '/pages/login/guid'}, {type: "redirectTo"})
|
||||
},
|
||||
async doGetIntegralName() {
|
||||
this.integralName = await getIntegralName()
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export const useMainStoreWithOut = () => useMainStore(store)
|
@ -659,14 +659,14 @@ image {
|
||||
box-sizing: border-box;
|
||||
|
||||
&-btn {
|
||||
z-index: 999;
|
||||
position: absolute;
|
||||
right: 32rpx;
|
||||
//z-index: 999;
|
||||
//position: absolute;
|
||||
width: 50px !important;
|
||||
height: 25px !important;
|
||||
line-height: 25px !important;
|
||||
font-size: 12px !important;
|
||||
bottom: 130rpx;
|
||||
margin-right: 10rpx;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
}
|
||||
@ -838,6 +838,7 @@ image {
|
||||
line-height: 33rpx;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
|
||||
|
2
uni.scss
2
uni.scss
@ -13,7 +13,7 @@
|
||||
*/
|
||||
|
||||
/* 颜色变量 */
|
||||
@import 'uview-plus/theme.scss';
|
||||
@import '@/uni_modules/uv-ui-tools/theme.scss';
|
||||
/* 行为相关颜色 */
|
||||
$uni-color-primary: #007aff;
|
||||
$uni-color-success: #4cd964;
|
||||
|
11
unpackage/dist/build/.nvue/app.css.js
vendored
Normal file
11
unpackage/dist/build/.nvue/app.css.js
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __commonJS = (cb, mod) => function __require() {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
};
|
||||
var require_app_css = __commonJS({
|
||||
"app.css.js"(exports) {
|
||||
const _style_0 = {};
|
||||
exports.styles = [_style_0];
|
||||
}
|
||||
});
|
||||
export default require_app_css();
|
2
unpackage/dist/build/.nvue/app.js
vendored
Normal file
2
unpackage/dist/build/.nvue/app.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
Promise.resolve("./app.css.js").then(() => {
|
||||
});
|
1
unpackage/dist/build/h5/assets/CheckOffCode-9a5a89b0.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/CheckOffCode-9a5a89b0.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/CheckOffCode.028f54e3.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/CheckOffCode.028f54e3.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/CouponItem.b5e0454b.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/CouponItem.b5e0454b.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{t as e,o as t,j as s,w as a,h as o,i as u,I as p,z as n,l,f as c,s as d,B as i,u as r}from"./index-d4baa715.js";import{r as y}from"./coupon.18b394c1.js";import{_ as f}from"./_plugin-vue_export-helper.1b428a4d.js";const _=f({__name:"CouponItem",props:{coupons:{type:Object,default:()=>({})},type:{type:String,default:"select"},tabType:{type:Number,default:0}},emits:["receiveCoupon"],setup(f,{emit:_}){const b=f,{push:m}=r(),{coupons:k}=e(b),T=async()=>{await y(k.value.id),_("receiveCoupon"),d({title:"领取成功",icon:"none",duration:2e3})};return(e,d)=>{const r=i;return t(),s(r,{class:"coupon-item"},{default:a((()=>[o(r,{class:"discount"},{default:a((()=>[1===u(k).couponType?(t(),s(r,{key:0,class:"unit pre-unit"},{default:a((()=>[p(" ¥ ")])),_:1})):n("",!0),p(" "+l(1==u(k).couponType?u(k).couponValue:u(k).discount)+" ",1),2===u(k).couponType?(t(),s(r,{key:1,class:"unit"},{default:a((()=>[p(" 折 ")])),_:1})):n("",!0)])),_:1}),o(r,{class:"info"},{default:a((()=>[o(r,{class:"row"},{default:a((()=>[p(l(1==u(k).couponType?"满减券":"折扣券"),1)])),_:1}),o(r,{class:"row tip"},{default:a((()=>[p(" (实付"+l(u(k).threshold)+"元使用) ",1)])),_:1})])),_:1}),"select"===f.type?(t(),s(r,{key:0},{default:a((()=>[0===f.tabType?(t(),s(r,{key:0,class:"button"},{default:a((()=>[c("span",{onClick:d[0]||(d[0]=e=>{return t=u(k),void m({url:"/pages/goodsList/goodsList"},{data:{couponId:t.id}});var t})},"去使用")])),_:1})):n("",!0),1===f.tabType?(t(),s(r,{key:1,class:"button disable"},{default:a((()=>[c("span",null,"已使用")])),_:1})):n("",!0),2===f.tabType?(t(),s(r,{key:2,class:"button expired"},{default:a((()=>[c("span",null,"已失效")])),_:1})):n("",!0)])),_:1})):n("",!0),"get"===f.type?(t(),s(r,{key:1,class:"button get-coupon",onClick:T},{default:a((()=>[p(" 领取 ")])),_:1})):n("",!0)])),_:1})}}},[["__scopeId","data-v-52d18deb"]]);export{_ as C};
|
1
unpackage/dist/build/h5/assets/Goods-5ac64c6f.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/Goods-5ac64c6f.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/Goods.95cf79f1.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/Goods.95cf79f1.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/Goods.ed14922a.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/Goods.ed14922a.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{t,x as e,o as a,j as s,w as o,h as l,y as i,i as d,m as u,I as r,l as p,a0 as n,B as c,u as f}from"./index-d4baa715.js";import{L as g}from"./index.6c6cd02e.js";import{d as m}from"./utils.052a93d2.js";import{_ as y}from"./_plugin-vue_export-helper.1b428a4d.js";const _="NEW",h=y({__name:"Goods",props:{goods:{type:Object,default:()=>({})},imgWidth:{type:String,default:"100%"},ratio:{type:[String,Boolean],default:()=>"1/1"},infoPadding:{type:String,default:()=>"0 0"},titleWrap:{type:Boolean,default:()=>!1},titleSize:{type:Number,default:()=>28},type:{type:String,default:()=>_},row:{type:Boolean,default:!1},jump:{type:Boolean,default:!0}},setup(y){const _=y,{goods:h,imgWidth:w,ratio:j,infoPadding:v,titleWrap:x,titleSize:S,row:W,jump:B}=t(_),{push:I}=f(),$=e((()=>""+1/m(1,1.3)));function b(){B.value&&I({url:"/pages/goodsDetail/goodsDetail"},{data:{id:h.value.id,skuId:h.value.skuId}})}return(t,e)=>{const f=c;return a(),s(f,{class:u({goods:!0,row:d(W)}),onClick:b},{default:o((()=>[l(f,{class:"goods-image",style:i({width:d(w),"aspect-ratio":!0===d(j)?d($):d(j)})},{default:o((()=>[l(g,{unique:d(h).id,src:d(h).image,class:"image",mode:!0===d(j)?"aspectFit":"aspectFill"},null,8,["unique","src","mode"])])),_:1},8,["style"]),l(f,{class:"goods-info",style:i({padding:d(v),width:d(W)?`calc( 100% - ${d(w)} )`:"100%",height:d(W)?`${d(w)}`:"auto"})},{default:o((()=>[l(f,{class:u({"title-row":!0,nowrap:!d(x)}),style:i({"font-size":`${d(S)}rpx`})},{default:o((()=>[r(p(d(h).storeName),1)])),_:1},8,["class","style"]),l(f,{class:"",style:{width:"100%"}},{default:o((()=>[n(t.$slots,"options",{goods:d(h)},void 0,!0)])),_:3})])),_:3},8,["style"])])),_:3},8,["class"])}}},[["__scopeId","data-v-0b4acd91"]]);export{h as G};
|
1
unpackage/dist/build/h5/assets/InviteFriends.9f2730eb.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/InviteFriends.9f2730eb.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{a as e,o as l,j as a,w as s,f as n,h as t,e as c,F as o,k as u,I as i,l as r,p as f,A as _,N as p,B as m}from"./index-d4baa715.js";import{P as x}from"./Popup.965f3d92.js";import{a4 as d,a5 as h}from"./images.f0a6f614.js";import{_ as v}from"./_plugin-vue_export-helper.1b428a4d.js";const k=v({__name:"InviteFriends",emits:["share"],setup(v,{expose:k,emit:j}){const b=e(null),y=e("分享");function C(){b.value.close()}function w(e){j("share",e),C()}k({open:function(e){e&&(y.value=e),b.value.show()}});const I=[{label:"微信好友",value:"wechat",icon:d},{label:"生成海报",value:"photo",icon:h}];return(e,d)=>{const h=f,v=_,k=p,j=m;return l(),a(x,{ref_key:"popupRef",ref:b,title:y.value},{rightOption:s((()=>[n("span")])),default:s((()=>[t(j,{class:"share-box flex flex-ai__center flex-jc__sa"},{default:s((()=>[(l(),c(o,null,u(I,(e=>(l(),c(o,{key:e.value},["wechat"===e.value?(l(),a(k,{key:0,"open-type":"share",onClick:l=>w(e),class:"item flex flex-column flex-jc__center flex-ai__center"},{default:s((()=>[t(h,{src:e.icon},null,8,["src"]),t(v,null,{default:s((()=>[i(r(e.label),1)])),_:2},1024)])),_:2},1032,["onClick"])):(l(),a(j,{key:1,onClick:l=>w(e),class:"item flex flex-column flex-jc__center flex-ai__center"},{default:s((()=>[t(h,{src:e.icon},null,8,["src"]),t(v,null,{default:s((()=>[i(r(e.label),1)])),_:2},1024)])),_:2},1032,["onClick"]))],64)))),64))])),_:1}),t(j,{class:"cancel",onClick:C},{default:s((()=>[i(" 取消 ")])),_:1})])),_:1},8,["title"])}}},[["__scopeId","data-v-9c41d5c5"]]);export{k as I};
|
1
unpackage/dist/build/h5/assets/Popup-72276d43.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/Popup-72276d43.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/Popup.965f3d92.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/Popup.965f3d92.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/address-2d566922.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/address-2d566922.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/auth.56423d4c.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/auth.56423d4c.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{aK as t,V as e}from"./index-d4baa715.js";function s(e){return t.post("/member/auth/sms-login",e,{login:!1})}function a(e){return t.post("/member/auth/send-sms-code",e,{login:!1})}const m=`${e}/system/dict-data/agreement/1`,n=`${e}/system/dict-data/agreement/2`,r=`${e}/system/dict-data/get-stream?dictType=distributor_agreement&label=分销商协议`;export{s as a,r as d,n as p,a as s,m as u};
|
1
unpackage/dist/build/h5/assets/blank.b43c37d2.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/blank.b43c37d2.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{a as s,o as a,j as e,y as t,B as n}from"./index-d4baa715.js";const l={__name:"blank",props:["size"],setup(l){const o=s(l.size);return(s,l)=>{const r=n;return a(),e(r,{class:"blank",style:t({height:o.value+"px"})},null,8,["style"])}}};export{l as _};
|
1
unpackage/dist/build/h5/assets/card.5267ca05.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/card.5267ca05.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{a as s,o as a,j as t,w as e,a0 as o,m as r,y as l,B as c}from"./index-d4baa715.js";import{_ as d}from"./_plugin-vue_export-helper.1b428a4d.js";const p=d({__name:"card",props:["class","width"],setup(d){const p=d;s(p.class);const n=s(p.width);return(s,d)=>{const u=c;return a(),t(u,{class:r(["card",p.class]),style:l({width:n.value?n.value+"rpx":"100%"})},{default:e((()=>[o(s.$slots,"default",{},void 0,!0)])),_:3},8,["class","style"])}}},[["__scopeId","data-v-4aee1572"]]);export{p as _};
|
1
unpackage/dist/build/h5/assets/cart.301868c6.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/cart.301868c6.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{aK as t}from"./index-d4baa715.js";function a(a){return t.post("/cart/add",a)}function r(a){return t.get("/cart/cart/list",a)}function c(a){return t.get("/cart/count",a)}const s=a=>t.post("/cart/num",a),n=a=>t.post("/order/confirm",a),o=a=>t.post("/cart/cart/del",a),e=a=>t.post("/cart/cart/changeSku",a);export{e as a,c as b,n as c,o as d,a as e,r as g,s as u};
|
1
unpackage/dist/build/h5/assets/container.5dc152f7.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/container.5dc152f7.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{a as s,o as a,j as e,w as n,a0 as o,m as t,B as r}from"./index-d4baa715.js";/* empty css */import{_}from"./_plugin-vue_export-helper.1b428a4d.js";const i=_({__name:"container",props:["min"],setup(_){const i=s(null!=(null==_?void 0:_.min));return(s,_)=>{const l=r;return a(),e(l,{class:t(["container",i.value?"container-min":""])},{default:n((()=>[o(s.$slots,"default",{},void 0,!0)])),_:3},8,["class"])}}},[["__scopeId","data-v-fd4d18c7"]]);export{i as _};
|
1
unpackage/dist/build/h5/assets/coupon.18b394c1.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/coupon.18b394c1.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{aK as o}from"./index-d4baa715.js";const t=t=>o.get(`/product/coupon/relation/searchUserCoupon/${t}`,{}),c=t=>o.get(`/product/coupon/relation/receive/${t}`,{}),e=t=>o.get(`/product/coupon/receive-list/${t}`,{}),r=t=>o.get(`/cart/coupon/?cartIds=${t}`,{}),a=t=>o.get("/product/coupon/canvas-list",t);export{r as a,e as b,t as c,a as g,c as r};
|
1
unpackage/dist/build/h5/assets/createAddress-d022f33d.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/createAddress-d022f33d.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.flex[data-v-aba9466d]{display:flex!important}.flex-wrap[data-v-aba9466d]{flex-wrap:wrap}.flex-nowrap[data-v-aba9466d]{flex-wrap:nowrap}.flex-lr__center[data-v-aba9466d]{justify-content:space-between;align-items:center}.flex-lr__start[data-v-aba9466d]{justify-content:space-between;align-items:flex-start}.flex-lr__end[data-v-aba9466d]{justify-content:space-between;align-items:flex-end}.flex-start__center[data-v-aba9466d]{justify-content:flex-start;align-items:center}.flex-start__start[data-v-aba9466d]{justify-content:flex-start;align-items:flex-start}.flex-start__end[data-v-aba9466d]{justify-content:flex-start;align-items:flex-end}.flex-end__center[data-v-aba9466d]{justify-content:flex-end;align-items:center}.flex-end__start[data-v-aba9466d]{justify-content:flex-start;align-items:flex-start}.flex-end__end[data-v-aba9466d]{justify-content:flex-end;align-items:flex-end}.flex-tb__center[data-v-aba9466d]{flex-direction:column;justify-content:space-between;align-items:center}.flex-tb__start[data-v-aba9466d]{flex-direction:column;justify-content:space-between;align-items:flex-start}.flex-tb__end[data-v-aba9466d]{flex-direction:column;justify-content:space-between;align-items:flex-end}.flex-top__center[data-v-aba9466d]{flex-direction:column;justify-content:flex-start;align-items:center}.flex-top__start[data-v-aba9466d]{flex-direction:column;justify-content:flex-start;align-items:flex-start}.flex-top__end[data-v-aba9466d]{flex-direction:column;justify-content:flex-start;align-items:flex-end}.flex-bottom__center[data-v-aba9466d]{flex-direction:column;justify-content:flex-end;align-items:center}.flex-bottom__start[data-v-aba9466d]{flex-direction:column;justify-content:flex-end;align-items:flex-start}.flex-bottom__end[data-v-aba9466d]{flex-direction:column;justify-content:flex-end;align-items:flex-end}.flex-center__center[data-v-aba9466d]{flex-direction:column;justify-content:center;align-items:center}.flex-center__start[data-v-aba9466d]{flex-direction:column;justify-content:center;align-items:flex-start}.flex-center_end[data-v-aba9466d]{flex-direction:column;justify-content:center;align-items:flex-end}.flex-column[data-v-aba9466d]{flex-direction:column}.flex-jc__sb[data-v-aba9466d]{justify-content:space-between}.flex-jc__sa[data-v-aba9466d]{justify-content:space-around}.flex-jc__se[data-v-aba9466d]{justify-content:space-evenly}.flex-jc__start[data-v-aba9466d]{justify-content:flex-start}.flex-jc__center[data-v-aba9466d]{justify-content:center}.flex-jc__end[data-v-aba9466d]{justify-content:flex-end}.flex-ai__start[data-v-aba9466d]{align-items:flex-start}.flex-ai__center[data-v-aba9466d]{align-items:center}.flex-ai__end[data-v-aba9466d]{align-items:flex-end}.primary-color[data-v-aba9466d]{color:#ee6d46}.animation-button[data-v-aba9466d]{background:#ee6d46;color:#fff;transition:all .3s}.animation-button[data-v-aba9466d]:active{scale:1.1}.animation-button.disabled[data-v-aba9466d]{background:#999}.h5-tabbar-height[data-v-aba9466d]{width:100%;height:var(--window-bottom)}.tabbar-height[data-v-aba9466d]{height:3.6875rem;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.create-address[data-v-aba9466d]{background:#fff}.form-checkbox[data-v-aba9466d]{padding-left:1.09375rem}.w-158[data-v-aba9466d]{flex:0 0 4.9375rem}.chooise[data-v-aba9466d]{display:flex;flex-direction:row;flex-wrap:nowrap;gap:0;justify-content:space-between;align-items:center;color:#999}
|
1
unpackage/dist/build/h5/assets/createAnimation.a561e009.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/createAnimation.a561e009.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{aV as t}from"./index-d4baa715.js";class e{constructor(e,s){this.options=e,this.animation=t({...e}),this.currentStepAnimates={},this.next=0,this.$=s}_nvuePushAnimates(t,e){let i=this.currentStepAnimates[this.next],n={};if(n=i||{styles:{},config:{}},s.includes(t)){n.styles.transform||(n.styles.transform="");let s="";"rotate"===t&&(s="deg"),n.styles.transform+=`${t}(${e+s}) `}else n.styles[t]=`${e}`;this.currentStepAnimates[this.next]=n}_animateRun(t={},e={}){let s=this.$.$refs.ani.ref;if(s)return new Promise(((i,n)=>{nvueAnimation.transition(s,{styles:t,...e},(t=>{i()}))}))}_nvueNextAnimate(t,e=0,s){let i=t[e];if(i){let{styles:n,config:a}=i;this._animateRun(n,a).then((()=>{e+=1,this._nvueNextAnimate(t,e,s)}))}else this.currentStepAnimates={},"function"==typeof s&&s(),this.isEnd=!0}step(t={}){return this.animation.step(t),this}run(t){this.$.animationData=this.animation.export(),this.$.timer=setTimeout((()=>{"function"==typeof t&&t()}),this.$.durationTime)}}const s=["matrix","matrix3d","rotate","rotate3d","rotateX","rotateY","rotateZ","scale","scale3d","scaleX","scaleY","scaleZ","skew","skewX","skewY","translate","translate3d","translateX","translateY","translateZ"];function i(t,s){if(s)return clearTimeout(s.timer),new e(t,s)}s.concat(["opacity","backgroundColor"],["width","height","left","right","top","bottom"]).forEach((t=>{e.prototype[t]=function(...e){return this.animation[t](...e),this}}));export{i as c};
|
1
unpackage/dist/build/h5/assets/detail-ff86080e.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/detail-ff86080e.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/good-attr-select.827f4d84.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/good-attr-select.827f4d84.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/goods-a9d38099.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/goods-a9d38099.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/goods.bed5081e.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/goods.bed5081e.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{aK as t}from"./index-d4baa715.js";function r(r){return t.get(`/product/reply/list/${r.id}`,r)}function e(r){return t.get("/teamwork/wait-list",r)}function a(r){return t.get("/teamwork/product-detail",r)}export{a,e as g,r};
|
1
unpackage/dist/build/h5/assets/goods.c9518c7a.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/goods.c9518c7a.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{a,x as s,G as o,H as t,o as e,j as l,w as d,h as u,I as i,l as r,i as c,z as n,f as g,Q as f,a0 as p,m as _,B as m,A as v,p as k,u as y}from"./index-d4baa715.js";import{_ as b}from"./uv-line-progress.9ba483c2.js";import{_ as h}from"./uv-button.4742932f.js";import{G as x}from"./good-attr-select.827f4d84.js";import{a3 as E}from"./images.f0a6f614.js";import{L as j}from"./index.6c6cd02e.js";import{_ as C}from"./_plugin-vue_export-helper.1b428a4d.js";const I=C({__name:"goods",props:["data","groupBuy","original","stock","list","buyProgress","total","selectModel","model","purchase","link","price","hasFirst"],setup(C){const I=C,P=a(void 0!==I.list),T=a(I.groupBuy),w=a(I.stock),D=a(I.total),F=a(I.buyProgress),q=a(void 0!==I.selectModel),B=a(void 0!==I.model),M=a(I.purchase);a(I.price);const S=a(I.original),A=a(null),G=a(void 0!==I.link),N=a(I.hasFirst),{push:z}=y(),H=()=>{G.value&&z({url:"/pages/goodsDetail/goodsDetail"},{data:{id:I.data.id,skuId:I.data.skuId}})},L=()=>{A.value.open()},Q=()=>{},W=s((()=>{const a=I.data.campaignTotal||I.data.total;return(a-(I.data.campaignStock||I.data.stock))/a*100})),X=s((()=>{const a=I.data.campaignTotal||I.data.total,s=I.data.campaignStock||I.data.stock;return Math.floor((a-s)/a*100).toFixed(0)+"%"}));return(a,s)=>{const y=m,I=o(t("uv-line-progress"),b),G=v,z=k,$=o(t("uv-button"),h),J=o(t("good-attr-select"),x);return e(),l(y,{class:_(["goods",[P.value&&"goods-list",N.value&&"goods-first"]]),onClick:H},{default:d((()=>[u(y,{class:"goods-header"},{default:d((()=>[u(y,{class:"goods-thumb"},{default:d((()=>[u(j,{unique:C.data.id,src:C.data.image,class:"goods-thumb-img",mode:"aspectFit"},null,8,["unique","src"])])),_:1})])),_:1}),u(y,{class:"goods-content"},{default:d((()=>[u(y,null,{default:d((()=>[u(y,{class:"goods-storeName"},{default:d((()=>[i(r(C.data.storeName),1)])),_:1}),N.value&&F.value?(e(),l(y,{key:0,class:"buy-progress-first"},{default:d((()=>[u(I,{activeColor:"#EE6D46",inactiveColor:"#E6E6E6",height:"14rpx",percentage:c(W),showText:!1},null,8,["percentage"]),u(G,{class:"text"},{default:d((()=>[i("已售"+r(c(X)),1)])),_:1})])),_:1})):n("",!0)])),_:1}),q.value?(e(),l(y,{key:0,class:"goods-list-model"},{default:d((()=>[g("div",{class:"goods-list-model-border",onClick:f(L,["stop"])},[u(y,{class:"goods-list-model-label"},{default:d((()=>[i(r(C.data.attrInfo.sku),1)])),_:1}),u(y,{class:"goods-list-model-action icon"},{default:d((()=>[u(z,{src:c(E)},null,8,["src"])])),_:1})],8,["onClick"])])),_:1})):n("",!0),B.value?(e(),l(y,{key:1,class:"goods-list-model-info"},{default:d((()=>[u(y,{class:"goods-list-model-label"},{default:d((()=>[i(r(C.data.attrInfo.sku),1)])),_:1})])),_:1})):n("",!0),u(y,null,{default:d((()=>[u(y,{class:"goods-info"},{default:d((()=>[u(y,{class:"goods-info-left"},{default:d((()=>[T.value?(e(),l(y,{key:0,class:"goods-desc"},{default:d((()=>[i(r(C.data.person)+"人团 ",1)])),_:1})):n("",!0),u(y,{class:"goods-price-row"},{default:d((()=>[u(y,{class:"goods-price"},{default:d((()=>[i(" ¥"+r(C.data.campaignPrice||C.data.price),1)])),_:1}),S.value?(e(),l(y,{key:0,class:"goods-price goods-price-original"},{default:d((()=>[i(" ¥"+r(C.data.otPrice||C.data.originalPrice),1)])),_:1})):n("",!0)])),_:1})])),_:1}),u(y,{class:"goods-info-action"},{default:d((()=>[u(y,{class:"goods-info-action-btn"},{default:d((()=>[p(a.$slots,"action",{},void 0,!0)])),_:3}),w.value?(e(),l(y,{key:0,class:"goods-info-action-desc"},{default:d((()=>[C.data.stock?(e(),l(G,{key:0},{default:d((()=>[i("仅剩"+r(C.data.stock)+"件",1)])),_:1})):(e(),l(G,{key:1},{default:d((()=>[i("库存不足")])),_:1}))])),_:1})):n("",!0),M.value?(e(),l(y,{key:1,class:"buy-num"},{default:d((()=>[u(y,{class:"buy-num-info-desc"},{default:d((()=>[i(" x"+r(M.value),1)])),_:1})])),_:1})):n("",!0),T.value?(e(),l($,{key:2,class:"button",round:"",block:"",type:"primary"},{default:d((()=>[i(" 立刻拼团 ")])),_:1})):n("",!0)])),_:3})])),_:3}),!N.value&&F.value?(e(),l(y,{key:0,class:"buy-progress"},{default:d((()=>[u(y,{class:"buy-progress-info"},{default:d((()=>[D.value?(e(),l(y,{key:0,class:"buy-progress-info-desc"},{default:d((()=>[i(" 限量"+r(C.data.campaignTotal||C.data.total)+"件 ",1)])),_:1})):n("",!0),u(I,{activeColor:"#EE6D46",inactiveColor:"#E6E6E6",height:"14rpx",percentage:c(W),showText:!1},null,8,["percentage"])])),_:1}),u(y,{class:"buy-progress-action"},{default:d((()=>[u($,{round:"",block:"",type:"primary"},{default:d((()=>[i(" 立即抢购 ")])),_:1})])),_:1})])),_:1})):n("",!0)])),_:3})])),_:3}),u(J,{ref_key:"selectAttrPanel",ref:A,id:C.data.id,onSelect:Q},null,8,["id"])])),_:3},8,["class"])}}},[["__scopeId","data-v-880dbd95"]]);export{I as _};
|
1
unpackage/dist/build/h5/assets/goodsCategory-4040c4da.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/goodsCategory-4040c4da.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/goodsDetail-92503a70.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/goodsDetail-92503a70.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/guid-cd243236.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/guid-cd243236.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.flex[data-v-88d0f1e2]{display:flex!important}.flex-wrap[data-v-88d0f1e2]{flex-wrap:wrap}.flex-nowrap[data-v-88d0f1e2]{flex-wrap:nowrap}.flex-lr__center[data-v-88d0f1e2]{justify-content:space-between;align-items:center}.flex-lr__start[data-v-88d0f1e2]{justify-content:space-between;align-items:flex-start}.flex-lr__end[data-v-88d0f1e2]{justify-content:space-between;align-items:flex-end}.flex-start__center[data-v-88d0f1e2]{justify-content:flex-start;align-items:center}.flex-start__start[data-v-88d0f1e2]{justify-content:flex-start;align-items:flex-start}.flex-start__end[data-v-88d0f1e2]{justify-content:flex-start;align-items:flex-end}.flex-end__center[data-v-88d0f1e2]{justify-content:flex-end;align-items:center}.flex-end__start[data-v-88d0f1e2]{justify-content:flex-start;align-items:flex-start}.flex-end__end[data-v-88d0f1e2]{justify-content:flex-end;align-items:flex-end}.flex-tb__center[data-v-88d0f1e2]{flex-direction:column;justify-content:space-between;align-items:center}.flex-tb__start[data-v-88d0f1e2]{flex-direction:column;justify-content:space-between;align-items:flex-start}.flex-tb__end[data-v-88d0f1e2]{flex-direction:column;justify-content:space-between;align-items:flex-end}.flex-top__center[data-v-88d0f1e2]{flex-direction:column;justify-content:flex-start;align-items:center}.flex-top__start[data-v-88d0f1e2]{flex-direction:column;justify-content:flex-start;align-items:flex-start}.flex-top__end[data-v-88d0f1e2]{flex-direction:column;justify-content:flex-start;align-items:flex-end}.flex-bottom__center[data-v-88d0f1e2]{flex-direction:column;justify-content:flex-end;align-items:center}.flex-bottom__start[data-v-88d0f1e2]{flex-direction:column;justify-content:flex-end;align-items:flex-start}.flex-bottom__end[data-v-88d0f1e2]{flex-direction:column;justify-content:flex-end;align-items:flex-end}.flex-center__center[data-v-88d0f1e2]{flex-direction:column;justify-content:center;align-items:center}.flex-center__start[data-v-88d0f1e2]{flex-direction:column;justify-content:center;align-items:flex-start}.flex-center_end[data-v-88d0f1e2]{flex-direction:column;justify-content:center;align-items:flex-end}.flex-column[data-v-88d0f1e2]{flex-direction:column}.flex-jc__sb[data-v-88d0f1e2]{justify-content:space-between}.flex-jc__sa[data-v-88d0f1e2]{justify-content:space-around}.flex-jc__se[data-v-88d0f1e2]{justify-content:space-evenly}.flex-jc__start[data-v-88d0f1e2]{justify-content:flex-start}.flex-jc__center[data-v-88d0f1e2]{justify-content:center}.flex-jc__end[data-v-88d0f1e2]{justify-content:flex-end}.flex-ai__start[data-v-88d0f1e2]{align-items:flex-start}.flex-ai__center[data-v-88d0f1e2]{align-items:center}.flex-ai__end[data-v-88d0f1e2]{align-items:flex-end}.primary-color[data-v-88d0f1e2]{color:#ee6d46}.animation-button[data-v-88d0f1e2]{background:#ee6d46;color:#fff;transition:all .3s}.animation-button[data-v-88d0f1e2]:active{scale:1.1}.animation-button.disabled[data-v-88d0f1e2]{background:#999}.h5-tabbar-height[data-v-88d0f1e2]{width:100%;height:var(--window-bottom)}.tabbar-height[data-v-88d0f1e2]{height:3.6875rem;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.login-guid[data-v-88d0f1e2]{width:100%;height:100vh;background:#fff}.login-guid .main-box[data-v-88d0f1e2]{width:100%;top:9.375rem;position:absolute}.login-guid .main-box .logo[data-v-88d0f1e2]{width:7.96875rem;height:3rem}.login-guid .button-group[data-v-88d0f1e2]{padding:0 1.5625rem;box-sizing:border-box;width:100%;font-size:.875rem;position:absolute;bottom:20%}.login-guid .button-group .button[data-v-88d0f1e2]{width:100%;margin-bottom:.9375rem;display:flex;align-items:center;justify-content:center;height:2.75rem;font-size:.875rem;border-radius:0}.login-guid .button-group .button .icon[data-v-88d0f1e2]{width:1.25rem;height:1.25rem;margin-right:.625rem}.login-guid .button-group .white-button[data-v-88d0f1e2]{background:#fff;border:.03125rem solid #333;color:#333}.agreement-box[data-v-88d0f1e2]{padding:0 .9375rem;box-sizing:border-box;position:fixed;bottom:5%;width:100%;font-size:.75rem;color:#999;transition:all .3s}.agreement-box .agreement-text[data-v-88d0f1e2]{text-align:center}.agreement-box .agreement-text .color[data-v-88d0f1e2]{color:#ee6d46}.agreement-box[data-v-88d0f1e2] .uv-checkbox{width:100%;align-items:flex-start}.error-animation[data-v-88d0f1e2]{animation:error-text-88d0f1e2 .8s 1}@keyframes error-text-88d0f1e2{0%{transform:translate(0)}5%,25%,45%,65%,85%{transform:translate(-.3125rem)}10%,30%,50%,70%,90%{transform:translate(.3125rem)}15%,35%,55%,75%,95%{transform:translate(.625rem)}20%,40%,60%,80%,to{transform:translate(-.625rem)}}
|
1
unpackage/dist/build/h5/assets/images.f0a6f614.js
vendored
Normal file
1
unpackage/dist/build/h5/assets/images.f0a6f614.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import{aJ as a}from"./index-d4baa715.js";const s=`${a}static/icon/empty/优惠券.png`,i=`${a}static/icon/empty/收藏.png`,n=`${a}static/icon/empty/购物车.png`,t=`${a}static/icon/empty/订单.png`,g=`${a}static/icon/empty/地址.png`,c=`${a}static/icon/empty/good.png`,p=`${a}static/icon/logo.png`,o=`${a}static/icon/login/手机@2x.png`,e=`${a}static/icon/login/验证码@2x.png`,$=`${a}static/icon/user/mine.png`,m=`${a}static/icon/pay/weixin.png`,r=`${a}static/icon/pay/zhifubao.png`,d=`${a}static/icon/pay/yue.png`,y=`${a}static/icon/shop.png`,h=`${a}static/icon/location.png`,l=`${a}static/icon/location-1.png`,u=`${a}static/icon/phone.png`,f=`${a}static/icon/time.png`,b=`${a}static/icon/phone-grey.png`,k=`${a}static/icon/loaction-grey.png`,z=`${a}static/images/icon-dfk.png`,j=`${a}static/images/icon-dfh.png`,q=`${a}static/images/icon-dsh.png`,E=`${a}static/images/icon-dpj.png`,w=`${a}static/images/icon-wdzj.png`,x=`${a}static/images/icon-yhq.png`,B=`${a}static/images/icon-wdsc.png`,A=`${a}static/images/icon-kqzb.png`,D=`${a}static/images/icon-wdtg.png`,v=`${a}static/images/icon-kqjl.png`,I=`${a}static/images/icon-kqjl.png`,J=`${a}static/images/icon-lxkf.png`,K=`${a}static/images/icon-address.png`,S=`${a}static/images/icon-zhsz.png`,V=`${a}static/icon/login/phone.png`,C=`${a}static/images/icon-dpj.png`,F=`${a}static/images/%E5%8D%95%E5%95%86%E6%88%B7%E5%8A%A0%E8%BD%BD%E5%8A%A8%E5%9B%BE.gif`,G=`${a}static/images/up.png`,H=`${a}static/icon/pay/pay-success.png`,L=`${a}static/icon/pay/pay-error.png`,M=`${a}static/images/icon-edit.png`,N=`${a}static/images/order-info-bg.png`,O=`${a}static/images/icon-location.png`,P=`${a}static/images/down.png`,Q=`${a}static/images/icon-kefu.png`,R=`${a}static/images/icon-gouwuche.png`,T=`${a}static/images/icon-shouceng.png`,U=`${a}static/images/icon-shouceng-o.png`,W=`${a}static/images/banner.png`,X=`${a}static/images/kjzq.png`,Y=`${a}static/images/zkzq.png`,Z=`${a}static/images/flashKilling.png`,_=`${a}static/images/ptzq.png`,aa=`${a}static/images/see.png`,sa=`${a}static/images/notSee.png`,ia=`${a}static/images/delete.png`,na=`${a}static/images/refund-order-bg.png`,ta=`${a}static/images/next.png`,ga=`${a}static/share/wechat.png`,ca=`${a}static/share/photo.png`,pa=s=>`${a}static/my/${s}`,oa=pa("signIn.png"),ea=pa("scancle.png"),$a=pa("none.png"),ma=pa("vip-1.png"),ra=s=>`${a}static/activity/${s}`,da=ra("groupBy/groupBy-bg.png"),ya=ra("afterVerification/qr-scan.png"),ha=s=>`${a}static/distribution/${s}`,la=ha("audit.png"),ua=ha("error.png"),fa=ha("team.png"),ba=ha("share.png"),ka=ha("money.png"),za=ha("order.png"),ja=ha("user.png"),qa=ha("goods.png"),Ea=ha("share-bg.png"),wa=s=>`${a}static/account/${s}`,xa=wa("sign-in-bg.png"),Ba=wa("ok.png"),Aa=wa("star.png"),Da=wa("integral-bg.png"),va=wa("sign-success-bg.png");export{U as $,o as A,e as B,aa as C,sa as D,ia as E,i as F,m as G,d as H,r as I,s as J,ta as K,y as L,l as M,f as N,u as O,b as P,h as Q,k as R,W as S,_ as T,Z as U,Y as V,X as W,c as X,Q as Y,R as Z,T as _,j as a,O as a0,N as a1,G as a2,P as a3,ga as a4,ca as a5,na as a6,C as a7,H as a8,L as a9,da as aa,ya as ab,fa as ac,ka as ad,za as ae,qa as af,ba as ag,ja as ah,Ea as ai,la as aj,ua as ak,xa as al,va as am,Ba as an,Aa as ao,Da as ap,q as b,E as c,w as d,n as e,x as f,B as g,A as h,D as i,v as j,I as k,J as l,K as m,S as n,ea as o,$ as p,oa as q,ma as r,$a as s,z as t,F as u,t as v,g as w,M as x,V as y,p as z};
|
1
unpackage/dist/build/h5/assets/index-016b7541.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-016b7541.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-0e19f1b3.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-0e19f1b3.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-1fcb26b2.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-1fcb26b2.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-4a5b4308.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-4a5b4308.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.flex[data-v-a2ed81fa]{display:flex!important}.flex-wrap[data-v-a2ed81fa]{flex-wrap:wrap}.flex-nowrap[data-v-a2ed81fa]{flex-wrap:nowrap}.flex-lr__center[data-v-a2ed81fa]{justify-content:space-between;align-items:center}.flex-lr__start[data-v-a2ed81fa]{justify-content:space-between;align-items:flex-start}.flex-lr__end[data-v-a2ed81fa]{justify-content:space-between;align-items:flex-end}.flex-start__center[data-v-a2ed81fa]{justify-content:flex-start;align-items:center}.flex-start__start[data-v-a2ed81fa]{justify-content:flex-start;align-items:flex-start}.flex-start__end[data-v-a2ed81fa]{justify-content:flex-start;align-items:flex-end}.flex-end__center[data-v-a2ed81fa]{justify-content:flex-end;align-items:center}.flex-end__start[data-v-a2ed81fa]{justify-content:flex-start;align-items:flex-start}.flex-end__end[data-v-a2ed81fa]{justify-content:flex-end;align-items:flex-end}.flex-tb__center[data-v-a2ed81fa]{flex-direction:column;justify-content:space-between;align-items:center}.flex-tb__start[data-v-a2ed81fa]{flex-direction:column;justify-content:space-between;align-items:flex-start}.flex-tb__end[data-v-a2ed81fa]{flex-direction:column;justify-content:space-between;align-items:flex-end}.flex-top__center[data-v-a2ed81fa]{flex-direction:column;justify-content:flex-start;align-items:center}.flex-top__start[data-v-a2ed81fa]{flex-direction:column;justify-content:flex-start;align-items:flex-start}.flex-top__end[data-v-a2ed81fa]{flex-direction:column;justify-content:flex-start;align-items:flex-end}.flex-bottom__center[data-v-a2ed81fa]{flex-direction:column;justify-content:flex-end;align-items:center}.flex-bottom__start[data-v-a2ed81fa]{flex-direction:column;justify-content:flex-end;align-items:flex-start}.flex-bottom__end[data-v-a2ed81fa]{flex-direction:column;justify-content:flex-end;align-items:flex-end}.flex-center__center[data-v-a2ed81fa]{flex-direction:column;justify-content:center;align-items:center}.flex-center__start[data-v-a2ed81fa]{flex-direction:column;justify-content:center;align-items:flex-start}.flex-center_end[data-v-a2ed81fa]{flex-direction:column;justify-content:center;align-items:flex-end}.flex-column[data-v-a2ed81fa]{flex-direction:column}.flex-jc__sb[data-v-a2ed81fa]{justify-content:space-between}.flex-jc__sa[data-v-a2ed81fa]{justify-content:space-around}.flex-jc__se[data-v-a2ed81fa]{justify-content:space-evenly}.flex-jc__start[data-v-a2ed81fa]{justify-content:flex-start}.flex-jc__center[data-v-a2ed81fa]{justify-content:center}.flex-jc__end[data-v-a2ed81fa]{justify-content:flex-end}.flex-ai__start[data-v-a2ed81fa]{align-items:flex-start}.flex-ai__center[data-v-a2ed81fa]{align-items:center}.flex-ai__end[data-v-a2ed81fa]{align-items:flex-end}.primary-color[data-v-a2ed81fa]{color:#ee6d46}.animation-button[data-v-a2ed81fa]{background:#ee6d46;color:#fff;transition:all .3s}.animation-button[data-v-a2ed81fa]:active{scale:1.1}.animation-button.disabled[data-v-a2ed81fa]{background:#999}.h5-tabbar-height[data-v-a2ed81fa]{width:100%;height:var(--window-bottom)}.tabbar-height[data-v-a2ed81fa]{height:3.6875rem;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.container[data-v-a2ed81fa]{--header-height: 0;--side-distance: .9375rem}.container .header-container[data-v-a2ed81fa]{width:100%;position:fixed;top:0;left:0;z-index:99}.container .header-container .system-bar-area[data-v-a2ed81fa]{width:100%;z-index:1}.container .header-container .header-row[data-v-a2ed81fa]{z-index:1;width:100%;height:var(--header-height);position:relative}.container .header-container .header-row .left[data-v-a2ed81fa],.container .header-container .header-row .right[data-v-a2ed81fa],.container .header-container .header-row .title[data-v-a2ed81fa]{position:absolute;top:50%;height:100%;transform:translateY(-50%);display:flex;align-items:center}.container .header-container .header-row .left[data-v-a2ed81fa]{left:var(--side-distance)}.container .header-container .header-row .right[data-v-a2ed81fa]{right:var(--side-distance)}.container .header-container .header-row .title[data-v-a2ed81fa]{left:50%;transform:translate(-50%) translateY(-50%);color:#333}.container .header-container .bg-mask[data-v-a2ed81fa]{z-index:0;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;box-shadow:0 0 .46875rem rgba(162,162,162,.5)}.container .prop-up[data-v-a2ed81fa]{width:100%;height:var(--header-height)}.circle-back[data-v-a2ed81fa]{aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.7);border-radius:50%;box-shadow:0 0 .3125rem rgba(225,225,225,.48);border:.03125rem solid rgba(225,225,225,.8)}
|
1
unpackage/dist/build/h5/assets/index-5168e889.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-5168e889.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-65d5db01.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-65d5db01.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-7d6affc2.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-7d6affc2.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-8574e335.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-8574e335.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.flex[data-v-d2f4925f]{display:flex!important}.flex-wrap[data-v-d2f4925f]{flex-wrap:wrap}.flex-nowrap[data-v-d2f4925f]{flex-wrap:nowrap}.flex-lr__center[data-v-d2f4925f]{justify-content:space-between;align-items:center}.flex-lr__start[data-v-d2f4925f]{justify-content:space-between;align-items:flex-start}.flex-lr__end[data-v-d2f4925f]{justify-content:space-between;align-items:flex-end}.flex-start__center[data-v-d2f4925f]{justify-content:flex-start;align-items:center}.flex-start__start[data-v-d2f4925f]{justify-content:flex-start;align-items:flex-start}.flex-start__end[data-v-d2f4925f]{justify-content:flex-start;align-items:flex-end}.flex-end__center[data-v-d2f4925f]{justify-content:flex-end;align-items:center}.flex-end__start[data-v-d2f4925f]{justify-content:flex-start;align-items:flex-start}.flex-end__end[data-v-d2f4925f]{justify-content:flex-end;align-items:flex-end}.flex-tb__center[data-v-d2f4925f]{flex-direction:column;justify-content:space-between;align-items:center}.flex-tb__start[data-v-d2f4925f]{flex-direction:column;justify-content:space-between;align-items:flex-start}.flex-tb__end[data-v-d2f4925f]{flex-direction:column;justify-content:space-between;align-items:flex-end}.flex-top__center[data-v-d2f4925f]{flex-direction:column;justify-content:flex-start;align-items:center}.flex-top__start[data-v-d2f4925f]{flex-direction:column;justify-content:flex-start;align-items:flex-start}.flex-top__end[data-v-d2f4925f]{flex-direction:column;justify-content:flex-start;align-items:flex-end}.flex-bottom__center[data-v-d2f4925f]{flex-direction:column;justify-content:flex-end;align-items:center}.flex-bottom__start[data-v-d2f4925f]{flex-direction:column;justify-content:flex-end;align-items:flex-start}.flex-bottom__end[data-v-d2f4925f]{flex-direction:column;justify-content:flex-end;align-items:flex-end}.flex-center__center[data-v-d2f4925f]{flex-direction:column;justify-content:center;align-items:center}.flex-center__start[data-v-d2f4925f]{flex-direction:column;justify-content:center;align-items:flex-start}.flex-center_end[data-v-d2f4925f]{flex-direction:column;justify-content:center;align-items:flex-end}.flex-column[data-v-d2f4925f]{flex-direction:column}.flex-jc__sb[data-v-d2f4925f]{justify-content:space-between}.flex-jc__sa[data-v-d2f4925f]{justify-content:space-around}.flex-jc__se[data-v-d2f4925f]{justify-content:space-evenly}.flex-jc__start[data-v-d2f4925f]{justify-content:flex-start}.flex-jc__center[data-v-d2f4925f]{justify-content:center}.flex-jc__end[data-v-d2f4925f]{justify-content:flex-end}.flex-ai__start[data-v-d2f4925f]{align-items:flex-start}.flex-ai__center[data-v-d2f4925f]{align-items:center}.flex-ai__end[data-v-d2f4925f]{align-items:flex-end}.primary-color[data-v-d2f4925f]{color:#ee6d46}.animation-button[data-v-d2f4925f]{background:#ee6d46;color:#fff;transition:all .3s}.animation-button[data-v-d2f4925f]:active{scale:1.1}.animation-button.disabled[data-v-d2f4925f]{background:#999}.h5-tabbar-height[data-v-d2f4925f]{width:100%;height:var(--window-bottom)}.tabbar-height[data-v-d2f4925f]{height:3.6875rem;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.balance[data-v-d2f4925f]{padding:1rem;box-sizing:border-box;width:100%}.balance .balance-detail[data-v-d2f4925f]{padding:1rem;box-sizing:border-box;background:#333333;color:#fff;width:100%;border-radius:.46875rem}.balance .balance-detail .title[data-v-d2f4925f]{color:#999;font-size:.875rem;margin-bottom:.625rem}.balance .balance-detail .money[data-v-d2f4925f]{font-size:1.5rem}.balance .balance-detail .button[data-v-d2f4925f]{padding:.375rem 1.1875rem;box-sizing:border-box;background:#fff;border-radius:.46875rem;color:#333}.balance .list-card[data-v-d2f4925f]{width:100%;padding:1rem;box-sizing:border-box;background:#fff;border-radius:.46875rem;margin-top:.9375rem}.balance .list-card .title[data-v-d2f4925f]{font-size:1rem;font-weight:600}.balance .list-card .row[data-v-d2f4925f]{margin:.75rem 0}.balance .list-card .row .left .icon[data-v-d2f4925f]{width:2.5rem;height:2.5rem;border-radius:.3125rem;background:#b9b9b9;margin-right:.625rem}.balance .list-card .row .left .type-name[data-v-d2f4925f]{font-size:.875rem}.balance .list-card .row .left .time[data-v-d2f4925f]{color:#999;font-size:.75rem}.balance .list-card .row .right[data-v-d2f4925f]{padding:.21875rem 1.1875rem;box-sizing:border-box;border-radius:.3125rem}.balance .list-card .row .success[data-v-d2f4925f]{color:#28c445;background:rgba(40,196,69,.1)}.balance .list-card .row .error[data-v-d2f4925f]{color:#ee6d46;background:#FFF7F5}
|
1
unpackage/dist/build/h5/assets/index-9e69ec1c.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-9e69ec1c.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-a21b214d.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-a21b214d.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-b31e423a.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-b31e423a.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-b54b1e6b.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-b54b1e6b.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-b9f1f8fa.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-b9f1f8fa.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-bbf20d01.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-bbf20d01.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.flex[data-v-8e2af78d]{display:flex!important}.flex-wrap[data-v-8e2af78d]{flex-wrap:wrap}.flex-nowrap[data-v-8e2af78d]{flex-wrap:nowrap}.flex-lr__center[data-v-8e2af78d]{justify-content:space-between;align-items:center}.flex-lr__start[data-v-8e2af78d]{justify-content:space-between;align-items:flex-start}.flex-lr__end[data-v-8e2af78d]{justify-content:space-between;align-items:flex-end}.flex-start__center[data-v-8e2af78d]{justify-content:flex-start;align-items:center}.flex-start__start[data-v-8e2af78d]{justify-content:flex-start;align-items:flex-start}.flex-start__end[data-v-8e2af78d]{justify-content:flex-start;align-items:flex-end}.flex-end__center[data-v-8e2af78d]{justify-content:flex-end;align-items:center}.flex-end__start[data-v-8e2af78d]{justify-content:flex-start;align-items:flex-start}.flex-end__end[data-v-8e2af78d]{justify-content:flex-end;align-items:flex-end}.flex-tb__center[data-v-8e2af78d]{flex-direction:column;justify-content:space-between;align-items:center}.flex-tb__start[data-v-8e2af78d]{flex-direction:column;justify-content:space-between;align-items:flex-start}.flex-tb__end[data-v-8e2af78d]{flex-direction:column;justify-content:space-between;align-items:flex-end}.flex-top__center[data-v-8e2af78d]{flex-direction:column;justify-content:flex-start;align-items:center}.flex-top__start[data-v-8e2af78d]{flex-direction:column;justify-content:flex-start;align-items:flex-start}.flex-top__end[data-v-8e2af78d]{flex-direction:column;justify-content:flex-start;align-items:flex-end}.flex-bottom__center[data-v-8e2af78d]{flex-direction:column;justify-content:flex-end;align-items:center}.flex-bottom__start[data-v-8e2af78d]{flex-direction:column;justify-content:flex-end;align-items:flex-start}.flex-bottom__end[data-v-8e2af78d]{flex-direction:column;justify-content:flex-end;align-items:flex-end}.flex-center__center[data-v-8e2af78d]{flex-direction:column;justify-content:center;align-items:center}.flex-center__start[data-v-8e2af78d]{flex-direction:column;justify-content:center;align-items:flex-start}.flex-center_end[data-v-8e2af78d]{flex-direction:column;justify-content:center;align-items:flex-end}.flex-column[data-v-8e2af78d]{flex-direction:column}.flex-jc__sb[data-v-8e2af78d]{justify-content:space-between}.flex-jc__sa[data-v-8e2af78d]{justify-content:space-around}.flex-jc__se[data-v-8e2af78d]{justify-content:space-evenly}.flex-jc__start[data-v-8e2af78d]{justify-content:flex-start}.flex-jc__center[data-v-8e2af78d]{justify-content:center}.flex-jc__end[data-v-8e2af78d]{justify-content:flex-end}.flex-ai__start[data-v-8e2af78d]{align-items:flex-start}.flex-ai__center[data-v-8e2af78d]{align-items:center}.flex-ai__end[data-v-8e2af78d]{align-items:flex-end}.primary-color[data-v-8e2af78d]{color:#ee6d46}.animation-button[data-v-8e2af78d]{background:#ee6d46;color:#fff;transition:all .3s}.animation-button[data-v-8e2af78d]:active{scale:1.1}.animation-button.disabled[data-v-8e2af78d]{background:#999}.h5-tabbar-height[data-v-8e2af78d]{width:100%;height:var(--window-bottom)}.tabbar-height[data-v-8e2af78d]{height:3.6875rem;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.recommend-container[data-v-8e2af78d]{padding:.625rem .9375rem;box-sizing:border-box;width:100%}.recommend-container .title-row[data-v-8e2af78d]{width:100%;font-size:1rem;text-align:center;position:relative;color:#333;font-weight:700}.recommend-container .title-row[data-v-8e2af78d]:before,.recommend-container .title-row[data-v-8e2af78d]:after{content:"";position:absolute;width:10%;height:.09375rem;border-radius:.15625rem;background:#333;top:50%;transform:translateY(50%)}.recommend-container .title-row[data-v-8e2af78d]:before{left:25%}.recommend-container .title-row[data-v-8e2af78d]:after{right:25%}.product-box[data-v-8e2af78d]{margin-top:.9375rem;width:100%;box-sizing:border-box;overflow:hidden}.product-box .goods-col[data-v-8e2af78d]{width:49%;display:flex;flex-wrap:wrap;justify-content:space-between;flex-grow:0;float:left}.product-box .goods-col[data-v-8e2af78d]:nth-child(2){float:right}.product-box .goods-col .product[data-v-8e2af78d]{flex-grow:0;width:100%;background:#fff;border-radius:.625rem;overflow:hidden;margin-bottom:.625rem}.product-box .goods-col .product .good-bottom[data-v-8e2af78d]{display:flex;align-items:center;justify-content:space-between;font-size:.625rem}.product-box .goods-col .product .good-bottom .price[data-v-8e2af78d]{font-size:.875rem}.product-box .goods-col .product .good-bottom .sale[data-v-8e2af78d]{color:#999}
|
12
unpackage/dist/build/h5/assets/index-d4baa715.js
vendored
Normal file
12
unpackage/dist/build/h5/assets/index-d4baa715.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
unpackage/dist/build/h5/assets/index-db0e86af.css
vendored
Normal file
1
unpackage/dist/build/h5/assets/index-db0e86af.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.flex[data-v-3fd0056f]{display:flex!important}.flex-wrap[data-v-3fd0056f]{flex-wrap:wrap}.flex-nowrap[data-v-3fd0056f]{flex-wrap:nowrap}.flex-lr__center[data-v-3fd0056f]{justify-content:space-between;align-items:center}.flex-lr__start[data-v-3fd0056f]{justify-content:space-between;align-items:flex-start}.flex-lr__end[data-v-3fd0056f]{justify-content:space-between;align-items:flex-end}.flex-start__center[data-v-3fd0056f]{justify-content:flex-start;align-items:center}.flex-start__start[data-v-3fd0056f]{justify-content:flex-start;align-items:flex-start}.flex-start__end[data-v-3fd0056f]{justify-content:flex-start;align-items:flex-end}.flex-end__center[data-v-3fd0056f]{justify-content:flex-end;align-items:center}.flex-end__start[data-v-3fd0056f]{justify-content:flex-start;align-items:flex-start}.flex-end__end[data-v-3fd0056f]{justify-content:flex-end;align-items:flex-end}.flex-tb__center[data-v-3fd0056f]{flex-direction:column;justify-content:space-between;align-items:center}.flex-tb__start[data-v-3fd0056f]{flex-direction:column;justify-content:space-between;align-items:flex-start}.flex-tb__end[data-v-3fd0056f]{flex-direction:column;justify-content:space-between;align-items:flex-end}.flex-top__center[data-v-3fd0056f]{flex-direction:column;justify-content:flex-start;align-items:center}.flex-top__start[data-v-3fd0056f]{flex-direction:column;justify-content:flex-start;align-items:flex-start}.flex-top__end[data-v-3fd0056f]{flex-direction:column;justify-content:flex-start;align-items:flex-end}.flex-bottom__center[data-v-3fd0056f]{flex-direction:column;justify-content:flex-end;align-items:center}.flex-bottom__start[data-v-3fd0056f]{flex-direction:column;justify-content:flex-end;align-items:flex-start}.flex-bottom__end[data-v-3fd0056f]{flex-direction:column;justify-content:flex-end;align-items:flex-end}.flex-center__center[data-v-3fd0056f]{flex-direction:column;justify-content:center;align-items:center}.flex-center__start[data-v-3fd0056f]{flex-direction:column;justify-content:center;align-items:flex-start}.flex-center_end[data-v-3fd0056f]{flex-direction:column;justify-content:center;align-items:flex-end}.flex-column[data-v-3fd0056f]{flex-direction:column}.flex-jc__sb[data-v-3fd0056f]{justify-content:space-between}.flex-jc__sa[data-v-3fd0056f]{justify-content:space-around}.flex-jc__se[data-v-3fd0056f]{justify-content:space-evenly}.flex-jc__start[data-v-3fd0056f]{justify-content:flex-start}.flex-jc__center[data-v-3fd0056f]{justify-content:center}.flex-jc__end[data-v-3fd0056f]{justify-content:flex-end}.flex-ai__start[data-v-3fd0056f]{align-items:flex-start}.flex-ai__center[data-v-3fd0056f]{align-items:center}.flex-ai__end[data-v-3fd0056f]{align-items:flex-end}.primary-color[data-v-3fd0056f]{color:#ee6d46}.animation-button[data-v-3fd0056f]{background:#ee6d46;color:#fff;transition:all .3s}.animation-button[data-v-3fd0056f]:active{scale:1.1}.animation-button.disabled[data-v-3fd0056f]{background:#999}.h5-tabbar-height[data-v-3fd0056f]{width:100%;height:var(--window-bottom)}.tabbar-height[data-v-3fd0056f]{height:3.6875rem;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.account-setting .card[data-v-3fd0056f]{padding:0 1.0625rem;box-sizing:border-box;background:#fff;margin-bottom:.625rem}.account-setting .card .cell-row[data-v-3fd0056f]{padding:1.40625rem 0;box-sizing:border-box;display:flex;flex-direction:row;flex-wrap:nowrap;gap:0;justify-content:space-between;align-items:center;border-bottom:.03125rem solid #E6E6E6}.account-setting .card .cell-row[data-v-3fd0056f]:last-child{border-bottom:0}.account-setting .card .cell-row .label[data-v-3fd0056f]{font-size:.875rem;color:#333}.account-setting .card .cell-row .value[data-v-3fd0056f]{display:flex;flex-direction:row;flex-wrap:nowrap;gap:.3125rem;justify-content:flex-end;align-items:center;font-size:.875rem;color:#999}.account-setting .card .cell-row .value uni-input[data-v-3fd0056f]{text-align:right}.account-setting .button[data-v-3fd0056f]{padding:.78125rem 1.0625rem;box-sizing:border-box;text-align:center}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user