Compare commits
26 Commits
a4580bdd1c
...
prod
| Author | SHA1 | Date | |
|---|---|---|---|
| d8c2aef83e | |||
| 362f3cee96 | |||
| ca53618004 | |||
| cbe27a43de | |||
| 5fcbba0cb4 | |||
| 0944635c69 | |||
| 067025f532 | |||
| 8d917d49ed | |||
| bcc44a0886 | |||
| 811abf935c | |||
| bde30fa70c | |||
| ac7af51a92 | |||
| 9b78ee0f48 | |||
| 75ed724fbb | |||
| 113193b142 | |||
| b5ecab0a03 | |||
| f75f90d34f | |||
| edd10edf9f | |||
| cf562b28b0 | |||
| e645aa5516 | |||
| 33453ab961 | |||
| 158a025ba1 | |||
| 65554b043c | |||
| 4d7c388f74 | |||
| b3c1ab3b8b | |||
| e1000c6b40 |
3
common/api/apiPrve.js
Normal file
3
common/api/apiPrve.js
Normal file
@@ -0,0 +1,3 @@
|
||||
export const urlAccount = '/account'
|
||||
export const urlProduct = '/product'
|
||||
export const urlOrder = '/order'
|
||||
@@ -1,8 +1,7 @@
|
||||
// 引入 request 文件
|
||||
import request from '@/common/api/request.js'
|
||||
const urlAccount = '/account'
|
||||
const urlProduct = '/product'
|
||||
const urlOrder = '/order'
|
||||
|
||||
import {urlAccount,urlProduct,urlOrder} from '@/common/api/apiPrve.js'
|
||||
|
||||
//获取商品列表数据
|
||||
export const APIproductqueryProduct = (data) => {
|
||||
@@ -47,3 +46,12 @@ export const APIminiAppskuinfo = (data) => {
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
//获取相关推荐商品
|
||||
export const productRelated = (data) => {
|
||||
return request({
|
||||
url: urlProduct + '/user/product/related/'+data.id,
|
||||
method: 'get',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
@@ -7,33 +7,7 @@ export default async (params) => {
|
||||
let token = uni.cache.get("token") || "";
|
||||
const shopId = uni.cache.get("shopId") * 1;
|
||||
const userInfo = uni.cache.get("userInfo") || {};
|
||||
// #ifdef H5
|
||||
token = "1b5e8baf0cc1492a858a208f113d0971";
|
||||
uni.cache.set('userInfo', {
|
||||
"acQrcodeValidTime": "2026-01-13 13:35:59",
|
||||
"alipayOpenId": "",
|
||||
"birthDay": "",
|
||||
"createTime": "2024-03-13 10:56:40",
|
||||
"distributionAmount": 0,
|
||||
"headImg": "https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132",
|
||||
"id": "36689",
|
||||
"idCard": "",
|
||||
"isAc": 0,
|
||||
"lastLoginTime": "2025-12-24 11:24:12",
|
||||
"nickName": "微信用户",
|
||||
"password": "",
|
||||
"payPwd": "e10adc3949ba59abbe56e057f20f883e",
|
||||
"phone": "",
|
||||
"realName": "",
|
||||
"sex": null,
|
||||
"status": 1,
|
||||
"updateTime": "2025-12-24 11:22:47",
|
||||
"usePayPwd": 0,
|
||||
"wechatAcOpenId": "",
|
||||
"wechatAcQrcode": "http://weixin.qq.com/q/029s5JtP1xfmJ1g_HDxFco",
|
||||
"wechatOpenId": "or1l86yipGvwyfPhrKIAcQuSfAV8"
|
||||
})
|
||||
// #endif
|
||||
|
||||
let header = {
|
||||
version: uni.conf.version,
|
||||
type: uni.getSystemInfoSync().platform,
|
||||
@@ -60,7 +34,10 @@ export default async (params) => {
|
||||
mask: true,
|
||||
});
|
||||
}
|
||||
|
||||
// #ifdef H5
|
||||
uni.cache.set('token', '1b5e8baf0cc1492a858a208f113d0971')
|
||||
uni.cache.set('userInfo',{"acQrcodeValidTime":"2026-01-13 13:35:59","alipayOpenId":"","birthDay":"2025-12-25","createTime":"2024-03-13 10:56:40","distributionAmount":0,"headImg":"https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132","id":"36689","idCard":"","isAc":0,"lastLoginTime":"2025-12-26 10:01:12","nickName":"微信用户","password":"","payPwd":"e10adc3949ba59abbe56e057f20f883e","phone":"18049104914","realName":"","sex":1,"status":1,"updateTime":"2025-12-26 09:59:31","usePayPwd":0,"wechatAcOpenId":"","wechatAcQrcode":"http://weixin.qq.com/q/029s5JtP1xfmJ1g_HDxFco","wechatOpenId":"or1l86yipGvwyfPhrKIAcQuSfAV8"})
|
||||
// #endif
|
||||
return new Promise((resolve, reject) => {
|
||||
const timeoutDuration = params.timeout || 10000; // 可以通过 params 传入超时时间,默认 10 秒
|
||||
uni.request({
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
// const debug = process.env.NODE_ENV == 'development' ? true : false;
|
||||
// const debug = false; // false线上 true本地
|
||||
const debug = false; // false线上 true本地
|
||||
let baseUrl = ''
|
||||
let baseUrlwws = ''
|
||||
|
||||
|
||||
|
||||
|
||||
const version = "100";
|
||||
const autoRemoveCache = {
|
||||
count: 100000,
|
||||
@@ -22,7 +24,7 @@ function init(){
|
||||
// #ifdef H5
|
||||
|
||||
if (debug) {
|
||||
baseUrl = "/api";
|
||||
baseUrl = "/testApi";
|
||||
baseUrlwws = "http://192.168.1.42:2348";
|
||||
} else {
|
||||
baseUrl = "/prodApi";
|
||||
@@ -47,7 +49,7 @@ export const changeEnv = (env) => {
|
||||
let baseUrl = "http://192.168.1.42"
|
||||
let baseUrlwws = "ws://192.168.1.42:2348"
|
||||
// #ifdef H5
|
||||
baseUrl = "/api"
|
||||
baseUrl = "/testApi"
|
||||
baseUrlwws = "http://192.168.1.42:2348"
|
||||
// #endif
|
||||
uni.conf = {
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
</template>
|
||||
</view>
|
||||
<!-- 优惠券名称与领取按钮 -->
|
||||
<view class="u-flex u-row-between u-m-t-16">
|
||||
<view class="u-flex u-row-between u-m-t-16 u-col-center">
|
||||
<view>
|
||||
<text class="title">{{ item.couponInfo.title }}</text>
|
||||
<text class="num">x{{ item.num }}</text>
|
||||
@@ -507,6 +507,7 @@ function close() {
|
||||
outline: none;
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
white-space: nowrap;
|
||||
&:active {
|
||||
background: #f07080; // 点击深色反馈
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<block v-if="limitDiscount && limitDiscount.id" class="limit-price">
|
||||
<text>
|
||||
<block v-if="limitDiscount && limitDiscount.id" >
|
||||
<text class="limit-price">
|
||||
{{ returnPrice() }}
|
||||
</text>
|
||||
</block>
|
||||
|
||||
@@ -1,260 +0,0 @@
|
||||
<template>
|
||||
<!-- 支付方式 -->
|
||||
<view class="paymentMethod">
|
||||
<view class="paymentMethod_content">
|
||||
<view class="paymentMethod_title">支付方式</view>
|
||||
<up-radio-group v-model="radiovalue" iconPlacement="right" @change="groupChanges" :size="28"
|
||||
placement="column">
|
||||
<block v-for="(item,index) in paymentMethodList" :key="index">
|
||||
<view class="method_list" @click="groupChanges(item.type)" :class="{disabled:returnDisabled(item)}"
|
||||
v-if="(index+1) == radiovalue?!changeFreeenable:true">
|
||||
<view class="method_list_top">
|
||||
<view class="method_list_top_left">
|
||||
<image class="icon" :src="item.url" mode="aspectFill" />
|
||||
<view class="method_list_top_cen">
|
||||
<view class="name"> {{ item.name }} </view>
|
||||
<view class="method_list_bom" v-if="item.type == 1">
|
||||
<text class="balance">
|
||||
当前余额¥{{orderVIP?(orderVIP.amount||0):0}}</text>
|
||||
<text class="topUpNow" @click="goRecharge">去充值</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<up-radio :disabled="returnDisabled(item)" activeColor="#E8AD7B" icon-size="18" size="18" :name="item.type">
|
||||
</up-radio>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</up-radio-group>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
reactive,
|
||||
defineProps,
|
||||
computed,
|
||||
defineEmits,
|
||||
watch,
|
||||
watchEffect,
|
||||
defineExpose
|
||||
} from 'vue'
|
||||
|
||||
const props = defineProps({
|
||||
rechargeFreeChecked: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
payAmount: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
freeCheck: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
changeFreeenable: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
disablePayType: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function returnDisabled(item) {
|
||||
if (props.disablePayType.includes(item.name)) {
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
const orderVIP = ref(null)
|
||||
const emits = defineEmits(['customevent', 'groupChange']);
|
||||
watchEffect(() => {
|
||||
orderVIP.value = uni.cache.get('orderVIP')
|
||||
})
|
||||
|
||||
const orderVIPfun = (data) => {
|
||||
orderVIP.value = data
|
||||
}
|
||||
|
||||
const paymentMethodList = ref([
|
||||
// #ifdef MP-WEIXIN
|
||||
{
|
||||
name: "微信支付",
|
||||
type: 2,
|
||||
url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/weChat.png",
|
||||
payType: 'wechatPay'
|
||||
},
|
||||
// #endif
|
||||
// #ifdef MP-ALIPAY
|
||||
{
|
||||
name: "支付宝支付",
|
||||
type: 3,
|
||||
url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/alipay.png",
|
||||
payType: 'aliPay'
|
||||
},
|
||||
// #endif
|
||||
{
|
||||
name: "余额支付",
|
||||
type: 1,
|
||||
url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/drder/wechat.png",
|
||||
payType: 'accountPay'
|
||||
}
|
||||
])
|
||||
|
||||
|
||||
const paymentMethodName = ref([{
|
||||
name: "余额支付",
|
||||
type: 1,
|
||||
url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/drder/wechat.png",
|
||||
payType: 'accountPay'
|
||||
},
|
||||
{
|
||||
name: "微信支付",
|
||||
type: 2,
|
||||
url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/weChat.png",
|
||||
payType: 'wechatPay'
|
||||
},
|
||||
{
|
||||
name: "支付宝支付",
|
||||
type: 3,
|
||||
url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/alipay.png",
|
||||
payType: 'aliPay'
|
||||
},
|
||||
])
|
||||
|
||||
const radiovalue = ref(2) // 支付方式
|
||||
|
||||
const ispws = ref(false) // 输入支付密码
|
||||
|
||||
const storeInfo = ref({})
|
||||
|
||||
// * 监听支付方式切换
|
||||
const groupChanges = (type) => {
|
||||
if (props.freeCheck && type == 1) {
|
||||
return;
|
||||
}
|
||||
const item=paymentMethodList.value.find(v=>v.type==type)
|
||||
if(item&&returnDisabled(item)){
|
||||
uni.showToast({
|
||||
title:"当前支付方式不可用",
|
||||
icon:'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
// if (props.payAmount <= 0 && type != 1) {
|
||||
// return;
|
||||
// }
|
||||
radiovalue.value = type;
|
||||
let name = paymentMethodName.value[type - 1].name;
|
||||
|
||||
emits("groupChange", paymentMethodName.value[type - 1])
|
||||
}
|
||||
|
||||
// 去充值
|
||||
const goRecharge = () => {
|
||||
if (orderVIP.value.isVip) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/user/member/czzx?shopId=' + orderVIP.value.shopId
|
||||
})
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/user/vip/buy-vip?shopId=' + orderVIP.value.shopId
|
||||
})
|
||||
|
||||
// uni.pro.navigateTo('user/member/index', {
|
||||
// shopId: orderVIP.value.shopId
|
||||
// })
|
||||
}
|
||||
// 将方法暴露给父组件
|
||||
defineExpose({
|
||||
groupChanges,
|
||||
orderVIPfun
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.paymentMethod {
|
||||
box-sizing: border-box;
|
||||
margin-top: 30rpx;
|
||||
border-radius: 18rpx;
|
||||
|
||||
.paymentMethod_content {
|
||||
background-color: #fff;
|
||||
border-radius: 22rpx;
|
||||
padding: 30rpx 30rpx 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.paymentMethod_title {
|
||||
font-weight: 500;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.method_list {
|
||||
padding: 40rpx 0;
|
||||
box-sizing: border-box;
|
||||
&.disabled{
|
||||
opacity: .6;
|
||||
}
|
||||
.method_list_top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.method_list_top_left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.icon {
|
||||
width: 54.67rpx !important;
|
||||
height: 48rpx !important;
|
||||
margin-right: 22rpx;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.method_list_top_cen {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.method_list_bom {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.balance {
|
||||
margin-right: 20rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.topUpNow {
|
||||
color: #FF803D;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.method_list:nth-child(odd) {
|
||||
border-bottom: 2rpx solid #e5e5e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -15,7 +15,7 @@
|
||||
<view class="name"> {{ item.name }} </view>
|
||||
<view class="method_list_bom" v-if="item.name == '余额支付'">
|
||||
<text class="balance">
|
||||
当前余额¥{{ orderVIP ? orderVIP.amount || 0 : 0 }}</text>
|
||||
当前余额¥{{ shopUserInfo ? shopUserInfo.amount || 0 : 0 }}</text>
|
||||
<text class="topUpNow" @click="goRecharge">去充值</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -66,6 +66,14 @@ const props = defineProps({
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
shopUserInfo:{
|
||||
type: Object,
|
||||
default: () => {
|
||||
return{
|
||||
amount:0
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
// 工具函数 - 深拷贝对象(切断引用)
|
||||
@@ -77,15 +85,10 @@ function returnDisabled(item) {
|
||||
return props.disablePayType.includes(item.name);
|
||||
}
|
||||
|
||||
const orderVIP = ref(null);
|
||||
const emits = defineEmits(["customevent", "groupChange"]);
|
||||
watchEffect(() => {
|
||||
orderVIP.value = uni.cache.get("orderVIP");
|
||||
});
|
||||
|
||||
const orderVIPfun = (data) => {
|
||||
orderVIP.value = data;
|
||||
};
|
||||
|
||||
|
||||
|
||||
// 支付方式列表(保持不变)
|
||||
const paymentMethodList = ref([
|
||||
@@ -207,13 +210,12 @@ const goRecharge = () => {
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: `/pages/user/member/czzx?shopId=${orderVIP.value?.shopId || ''}`,
|
||||
url: `/pages/user/member/czzx?shopId=${props.shopUserInfo?.shopId || ''}`,
|
||||
});
|
||||
};
|
||||
|
||||
defineExpose({
|
||||
groupChanges,
|
||||
orderVIPfun,
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -45,17 +45,17 @@
|
||||
</view>
|
||||
</view>
|
||||
<view>
|
||||
<view
|
||||
<!-- <view
|
||||
class="u-p-t-16 u-p-b-20 u-flex u-p-l-28 u-p-r-28"
|
||||
style="align-items: baseline; justify-content: flex-end"
|
||||
>
|
||||
<text class="color-666 font-12"> 总计:</text>
|
||||
<text class="font-16 color-333 font-700" v-if="centerUserInfo">
|
||||
{{ centerUserInfo.totalIncome }}</text
|
||||
<text class="font-16 color-333 font-700" >
|
||||
{{ totalIncome }}</text
|
||||
>
|
||||
</view>
|
||||
</view> -->
|
||||
|
||||
<view class="list">
|
||||
<view class="list u-m-t-32">
|
||||
<view v-for="(item, index) in state.records" :key="index" class="item">
|
||||
<view class="u-flex justify-between">
|
||||
<view>
|
||||
@@ -113,6 +113,7 @@
|
||||
<scroll-view
|
||||
class="popup-list"
|
||||
direction="vertical"
|
||||
:scroll-y="true"
|
||||
@scrollend="scrollBottom"
|
||||
>
|
||||
<view
|
||||
@@ -301,6 +302,7 @@ async function centerUser() {
|
||||
}
|
||||
onShow(() => {});
|
||||
|
||||
|
||||
onLoad(async (opt) => {
|
||||
await getCouponShopsAjax();
|
||||
|
||||
@@ -314,13 +316,24 @@ onLoad(async (opt) => {
|
||||
}
|
||||
if (opt.shopId) {
|
||||
querForm.value.shopId = opt.shopId;
|
||||
const findItem = couponShops.value.find((item) => item.id == opt.shopId);
|
||||
const findItem = shopList.value.find((item) => item.shopId == opt.shopId);
|
||||
querForm.value.shopName = findItem.shopName || "";
|
||||
}
|
||||
centerUser();
|
||||
getIncomeDetailsAjax();
|
||||
});
|
||||
|
||||
const totalIncome=computed(()=>{
|
||||
if(!querForm.value.shopId){
|
||||
return centerUserInfo.value?(centerUserInfo.value.totalIncome||0):0;
|
||||
}
|
||||
const findItem = shopList.value.find((item) => item.shopId == querForm.value.shopId );
|
||||
if(findItem){
|
||||
return findItem.income||0
|
||||
}
|
||||
return 0
|
||||
})
|
||||
|
||||
watch(
|
||||
() => querForm.value.status,
|
||||
(newVal, oldVal) => {
|
||||
|
||||
@@ -566,7 +566,7 @@ export function calcSingleGoodsRealPrice(
|
||||
>
|
||||
) : number {
|
||||
const { isMember, memberDiscountRate, limitTimeDiscount: activity } = config;
|
||||
|
||||
console.log('isMember',isMember);
|
||||
//如果是增菜价格为0
|
||||
if (goods.is_gift || goods.isGift) {
|
||||
return 0;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"pinia": "^2.3.1",
|
||||
"pinia-plugin-unistorage": "^0.1.2",
|
||||
"ysk-utils": "^1.0.81"
|
||||
"ysk-utils": "^1.0.83"
|
||||
},
|
||||
"devDependencies": {
|
||||
"unplugin-auto-import": "^0.16.7"
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
<view class="content min-page bg-f7">
|
||||
<view class="contentbox">
|
||||
<template v-if="shopExtend.length">
|
||||
<image class="bg" :src="shopExtend[0].value" mode="aspectFill"
|
||||
v-if="!isJsonArrayString(shopExtend[0].value)"></image>
|
||||
<image class="bg" :src="shopExtend[0].value" mode="aspectFill" v-if="!isJsonArrayString(shopExtend[0].value)"></image>
|
||||
<swiper class="swiper" autoplay circular v-else>
|
||||
<swiper-item class="swiper-item" v-for="(item, index) in JSON.parse(shopExtend[0].value)"
|
||||
:key="index">
|
||||
<swiper-item class="swiper-item" v-for="(item, index) in JSON.parse(shopExtend[0].value)" :key="index">
|
||||
<image class="swiper-bg" :src="item"></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
@@ -29,7 +27,6 @@
|
||||
<image :src="imgs.code" class="code"></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="new-menus-box">
|
||||
<view class="new-menus layout2" v-if="allConfig.takeout">
|
||||
<view class="diner" @click="scanCodehandle(0)">
|
||||
@@ -60,7 +57,6 @@
|
||||
|
||||
<view class="u-font-28 color-999">一键分享,快速拼单</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<view class="points" @click="toIntegralMall">
|
||||
@@ -123,23 +119,10 @@
|
||||
|
||||
<script setup>
|
||||
import attractPopup from '@/components/attract-popup.vue';
|
||||
import {
|
||||
homeData
|
||||
} from '@/common/api/market/index.js';
|
||||
import {
|
||||
getMemberConfig,
|
||||
getRechargeConfig
|
||||
} from '@/common/api/index/index.js';
|
||||
import {
|
||||
ref,
|
||||
reactive,
|
||||
defineProps,
|
||||
defineEmits,
|
||||
onMounted
|
||||
} from 'vue';
|
||||
import {
|
||||
isJsonArrayString
|
||||
} from '@/utils/util.js';
|
||||
import { homeData } from '@/common/api/market/index.js';
|
||||
import { getMemberConfig, getRechargeConfig } from '@/common/api/index/index.js';
|
||||
import { ref, reactive, defineProps, defineEmits, onMounted } from 'vue';
|
||||
import { isJsonArrayString } from '@/utils/util.js';
|
||||
|
||||
const attractPopupRef = ref(null);
|
||||
|
||||
@@ -167,7 +150,7 @@
|
||||
function toGroupBuying() {
|
||||
uni.navigateTo({
|
||||
url: '/groupBuying/index/index'
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
function toFenxiao() {
|
||||
@@ -182,12 +165,8 @@
|
||||
});
|
||||
}
|
||||
|
||||
import {
|
||||
productStore
|
||||
} from '@/stores/user.js';
|
||||
import {
|
||||
onShow
|
||||
} from '@dcloudio/uni-app';
|
||||
import { productStore } from '@/stores/user.js';
|
||||
import { onShow } from '@dcloudio/uni-app';
|
||||
|
||||
// 显示弹窗
|
||||
const popupShow = ref(false);
|
||||
@@ -215,7 +194,7 @@
|
||||
function toTaocan() {
|
||||
uni.navigateTo({
|
||||
url: '/userPackage/index/index'
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
const memberindex = (url) => {
|
||||
@@ -301,7 +280,7 @@
|
||||
function getHomeData() {
|
||||
homeData().then((res) => {
|
||||
Object.assign(allConfig, res);
|
||||
imgs.defaultAvatar = res.userAvatar ? res.userAvatar : imgs.defaultAvatar
|
||||
imgs.defaultAvatar = res.userAvatar ? res.userAvatar : imgs.defaultAvatar;
|
||||
});
|
||||
}
|
||||
onMounted(() => {
|
||||
@@ -544,7 +523,8 @@
|
||||
background: #ededed;
|
||||
}
|
||||
|
||||
.takeout {}
|
||||
.takeout {
|
||||
}
|
||||
}
|
||||
|
||||
&.layout1 {
|
||||
|
||||
@@ -7,13 +7,20 @@
|
||||
<view class="limitDiscount" v-if="showLimitDiscount(item)"
|
||||
>限时折扣</view
|
||||
>
|
||||
|
||||
<up-image
|
||||
width="76"
|
||||
height="76"
|
||||
radius="6"
|
||||
:src="item.productImg"
|
||||
v-if="item.productId != -999"
|
||||
v-if="item.isTemporary != 1&&item.is_temporary!=1"
|
||||
></up-image>
|
||||
<up-image
|
||||
v-else-if="(item.isTemporary||item.is_temporary) &&(item.product_name=='签子'||item.productName=='签子')"
|
||||
width="76"
|
||||
height="76"
|
||||
radius="6"
|
||||
src="https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/5/b97054debd83486ab7ad8e20ca6a360a.png"
|
||||
mode="heightFix"
|
||||
></up-image>
|
||||
<up-image
|
||||
width="76"
|
||||
@@ -25,7 +32,7 @@
|
||||
></up-image>
|
||||
</view>
|
||||
<view class="info">
|
||||
<text class="productName">{{ item.productName }}</text>
|
||||
<text class="productName">{{ item.productName||item.product_name }}</text>
|
||||
<text class="productSkuName" v-if="item.skuName">{{
|
||||
item.skuName
|
||||
}}</text>
|
||||
@@ -55,18 +62,22 @@
|
||||
<view class="price">
|
||||
<view class="priceAmount">
|
||||
¥
|
||||
|
||||
<goodsPrice
|
||||
v-if="!item.is_temporary&&!item.isTemporary"
|
||||
:cart="item"
|
||||
:limitDiscount="limitDiscount"
|
||||
:shopUserInfo="shopUserInfo"
|
||||
:shopInfo="shopInfo"
|
||||
idKey="product_id"
|
||||
></goodsPrice>
|
||||
<text v-else>{{item.discount_sale_amount}}</text>
|
||||
<view class="old-price" v-if="showLimitDiscount(item)"
|
||||
>¥{{ item.salePrice }}</view
|
||||
>
|
||||
</view>
|
||||
<view class="num">x{{ item.num }}</view>
|
||||
<view class="num" v-if="!item.is_temporary&&!item.isTemporary">x{{ item.num }}</view>
|
||||
<view class="num" v-else>x{{ item.number }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -40,10 +40,20 @@
|
||||
:nowCarts="nowCarts"
|
||||
:limitDiscount="cartStore.limitTimeDiscount"
|
||||
></orderItemVue> -->
|
||||
<orderItemVue :useVipPrice="useVipPrice" v-if="cartStore.allGoods.length" :nowCarts="cartStore.allGoods"
|
||||
<orderItemVue :useVipPrice="useVipPrice" v-if="nowCarts" :nowCarts="nowCarts"
|
||||
:shopInfo="cartStore.shopInfo" :shopUserInfo="cartStore.shopUserInfo"
|
||||
:limitDiscount="cartStore.limitTimeDiscount"></orderItemVue>
|
||||
|
||||
<view class="u-flex u-row-center u-m-t-16 u-font-28" v-if="cartStore.allGoods.length>4">
|
||||
<view class="u-flex u-col-baseline" @click="showAllGoods=!showAllGoods">
|
||||
<text>{{showAllGoods?'收起':'展开'}}</text>
|
||||
<view class="guodu u-m-l-10 u-m-t-2" :class="{rotate:!showAllGoods}">
|
||||
<up-icon name="arrow-down" size="14"></up-icon>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<template v-if="listinfo.id&&listinfo.status=='done'">
|
||||
<view class="cell-item" v-if="is_type != 0">
|
||||
<view class="label">打包费</view>
|
||||
@@ -329,6 +339,8 @@
|
||||
BigNumber
|
||||
} from "bignumber.js";
|
||||
|
||||
|
||||
const showAllGoods=ref(false)
|
||||
let hasCouponCanUse = ref(false);
|
||||
|
||||
const usePoints = ref(false);
|
||||
@@ -852,6 +864,16 @@
|
||||
await getConsumeDiscount();
|
||||
getDiscountActivity();
|
||||
});
|
||||
|
||||
const nowCarts=computed(()=>{
|
||||
if(cartStore.allGoods.length<=0){
|
||||
return []
|
||||
}
|
||||
if(showAllGoods.value){
|
||||
return cartStore.allGoods
|
||||
}
|
||||
return cartStore.allGoods.slice(0,4)
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@@ -1587,4 +1609,11 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.guodu{
|
||||
transition:all .3s linear;
|
||||
padding-top: 2rpx;
|
||||
}
|
||||
.rotate{
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
</style>
|
||||
@@ -70,7 +70,10 @@
|
||||
<view class="item" v-for="item in value" :key="item.id">
|
||||
<view class="cover">
|
||||
<up-image width="76" height="76" radius="16" :src="item.productImg"
|
||||
v-if="item.productId!=-999"></up-image>
|
||||
v-if="!item.isTemporary"></up-image>
|
||||
<u-image width="56" height="56" radius="10"
|
||||
v-else-if="item.isTemporary &&item.productName=='签子'"
|
||||
src="https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/5/b97054debd83486ab7ad8e20ca6a360a.png"></u-image>
|
||||
<up-image width="76" height="76" radius="16"
|
||||
:src="'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/table.png'"
|
||||
mode="heightFix" v-else></up-image>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -67,7 +67,7 @@
|
||||
</rechargeFree>
|
||||
|
||||
<!-- 支付方式 -->
|
||||
<paymentMethodes ref="paymentMethodref" :orderVIP="orderVIP" @groupChange="groupChange"
|
||||
<paymentMethodes ref="paymentMethodref" :shopUserInfo="orderVIP" @groupChange="groupChange"
|
||||
:disablePayType="disablePayType" :changeFreeenable="isBwc" v-model="paymentmethod"
|
||||
v-if="listinfo.status == 'unpaid' || !listinfo.id">
|
||||
<template #bottom>
|
||||
@@ -203,6 +203,7 @@
|
||||
useWebSocket
|
||||
} from "@/stores/carts-websocket.js";
|
||||
import * as chatApi from "@/http/php/chat";
|
||||
import * as rechargeApi from '@/common/api/market/recharge.js'
|
||||
|
||||
import MsgListItem from '@/components/msg-list-item/msg-list-item.vue'
|
||||
|
||||
@@ -858,8 +859,6 @@
|
||||
icon: "none",
|
||||
});
|
||||
const shopUserInfo = uni.cache.get("shopUserInfo");
|
||||
console.log("shopUserInfo", shopUserInfo);
|
||||
console.log("listinfo", listinfo);
|
||||
if (shopUserInfo) {
|
||||
if (shopUserInfo.userId == listinfo.userId) {
|
||||
pay_unlock();
|
||||
@@ -1011,7 +1010,6 @@
|
||||
// 更新数据
|
||||
if (orderVIP.value) {
|
||||
orderVIP.value = uni.cache.get("orderVIP");
|
||||
paymentMethodref.value.orderVIPfun(uni.cache.get("orderVIP"));
|
||||
if (listinfo.id && ordershopUserInfo.value.registerType != "before") {
|
||||
orderorderInfo();
|
||||
}
|
||||
@@ -1034,7 +1032,7 @@
|
||||
console.log("跳转到加菜页面");
|
||||
const arr= getCurrentPages()
|
||||
console.log(arr);
|
||||
if(arr[arr.length-1]&&arr[arr.length-1].route=='pages/product/index'){
|
||||
if(arr.length>=2&&arr[arr.length-2]&&arr[arr.length-2].route=='pages/product/index'){
|
||||
back();
|
||||
}else{
|
||||
uni.cache.set('tableCode',listinfo.tableCode)
|
||||
@@ -1113,10 +1111,11 @@
|
||||
}
|
||||
|
||||
const limitTimeDiscountRes = ref(null)
|
||||
const rechargeConfig=ref(null)
|
||||
async function init(opt) {
|
||||
await storeuser.actionsproductqueryProduct();
|
||||
|
||||
console.log("init");
|
||||
const res1= await storeuser.actionsproductqueryProduct();
|
||||
orderVIP.value=res1
|
||||
console.log('orderVIP',orderVIP.value)
|
||||
cartStore.clearOrderConfig();
|
||||
Object.assign(options, opt);
|
||||
listinfo.id = options.orderId;
|
||||
@@ -1146,10 +1145,23 @@
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//获取台桌信息
|
||||
let tableRes = await getTableInfo({
|
||||
tableCode: options.tableCode || "",
|
||||
});
|
||||
console.log("tableRes", tableRes);
|
||||
listinfo.tableName = tableRes?tableRes.name:'';
|
||||
|
||||
//获取店铺信息
|
||||
const shopInfoRes = await APIusershopInfodetail({
|
||||
shopId: options.shopId,
|
||||
});
|
||||
//智慧充值
|
||||
const rechargeConfigRes=await rechargeApi.config({shopId: options.shopId})
|
||||
if(rechargeConfigRes&&typeof rechargeConfigRes ==='object'){
|
||||
rechargeConfig.value=rechargeConfigRes
|
||||
}
|
||||
//获取积分配置
|
||||
pointsApi.pointsConfig().then(res => {
|
||||
cartStore.setPointDeductionRule(res);
|
||||
@@ -1274,6 +1286,9 @@
|
||||
if (!isCanUseCharge.value) {
|
||||
arr.add("余额支付");
|
||||
}
|
||||
if(rechargeConfig.value&&!rechargeConfig.value.isEnable){
|
||||
arr.add("余额支付");
|
||||
}
|
||||
|
||||
return Array.from(arr);
|
||||
});
|
||||
|
||||
@@ -583,7 +583,6 @@
|
||||
console.log(uni.cache.get('orderVIP'))
|
||||
orderVIP.value = uni.cache.get('orderVIP')
|
||||
ordershopUserInfo.value = orderVIP.value.shopInfo
|
||||
paymentMethodref.value.orderVIPfun(uni.cache.get('orderVIP'))
|
||||
if (orderId.value) {
|
||||
orderorderInfo()
|
||||
}
|
||||
|
||||
@@ -62,8 +62,14 @@
|
||||
<view class="shop-info">
|
||||
<view class="shop-item">
|
||||
<view class="cover" v-for="(item1,index1) in item.goods" :key="index1">
|
||||
<u-image width="56" height="56" radius="10" :src='item1.productImg'
|
||||
v-if="item1.productId!=-999"></u-image>
|
||||
|
||||
<u-image width="56" height="56" radius="10" :src="item1.productImg"
|
||||
v-if="!item1.isTemporary"></u-image>
|
||||
|
||||
<u-image width="56" height="56" radius="10"
|
||||
v-else-if="item1.isTemporary &&item1.productName=='签子'"
|
||||
src="https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/5/b97054debd83486ab7ad8e20ca6a360a.png"
|
||||
></u-image>
|
||||
<u-image width="112" height="112" radius="20"
|
||||
:src="'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/table.png'"
|
||||
mode="heightFix" v-else></u-image>
|
||||
@@ -130,7 +136,9 @@
|
||||
import {
|
||||
useNavbarStore
|
||||
} from '@/stores/navbarStore';
|
||||
import {APIshopUserInfo} from '@/common/api/member.js'
|
||||
import {
|
||||
APIshopUserInfo
|
||||
} from '@/common/api/member.js'
|
||||
const store = useNavbarStore();
|
||||
|
||||
async function agignOrder(item) {
|
||||
@@ -142,12 +150,14 @@
|
||||
uni.cache.set("tableCode", shopUserInfo.id);
|
||||
uni.cache.set("shopId", item.shopId);
|
||||
uni.navigateTo({
|
||||
url: "/pages/product/index?type=beforehand&order_id="+item.id+'&one_more_order=1',
|
||||
url: "/pages/product/index?type=beforehand&order_id=" + item.id +
|
||||
'&one_more_order=1',
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
function totalGoodsNum(arr) {
|
||||
if (!arr) {
|
||||
return 0
|
||||
@@ -156,6 +166,7 @@
|
||||
return prve + cur.num
|
||||
}, 0)
|
||||
}
|
||||
|
||||
function isRemoveOrder(item) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
@@ -578,6 +589,7 @@
|
||||
.ml-20 {
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.take_food_number {
|
||||
padding: 20rpx;
|
||||
background-color: #F8F8F8;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -26,17 +26,18 @@
|
||||
<view class="limit-discount" v-if="showLimitDiscount(item)">
|
||||
限时折扣
|
||||
</view>
|
||||
<up-image :src="item.coverImg" width="124rpx" height="124rpx" mode="aspectFill"
|
||||
<up-image v-if="!item.cartListinfo.is_temporary" :src="item.coverImg" width="124rpx" height="124rpx" mode="aspectFill"
|
||||
radius="10"></up-image>
|
||||
<up-image v-else-if="item.cartListinfo.is_temporary&&item.cartListinfo.product_name=='签子'" src="https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/5/b97054debd83486ab7ad8e20ca6a360a.png" width="124rpx" height="124rpx" mode="aspectFill"
|
||||
radius="10"></up-image>
|
||||
<up-image v-else width="124rpx" height="124rpx" mode="aspectFill"
|
||||
radius="10"></up-image>
|
||||
</view>
|
||||
<view class="info">
|
||||
<view class="name">
|
||||
{{
|
||||
item.cartListinfo.is_temporary == 1
|
||||
? "临时菜"
|
||||
: item.name
|
||||
}}
|
||||
<view class="name" v-if=" item.cartListinfo.is_temporary == 1">
|
||||
{{item.cartListinfo.product_name||item.cartListinfo.name|| item.name}}
|
||||
</view>
|
||||
<view class="name" v-else>{{item.name}}</view>
|
||||
<view class="select-sku-wrap" v-if="item.type == 'sku'">
|
||||
<text v-for="i in item.skuList" :key="i.id">
|
||||
{{ item.cartListinfo.sku_id == i.id ? i.name : "" }}
|
||||
@@ -206,9 +207,6 @@
|
||||
limitDiscount: props.limitDiscount.id ? props.limitDiscount : null,
|
||||
shopUserInfo: shopUserInfo,
|
||||
});
|
||||
if (goods.name == "纯生纯生纯生") {
|
||||
console.log("returnRealPrice", price);
|
||||
}
|
||||
return price;
|
||||
}
|
||||
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
|
||||
|
||||
<view class="relative">
|
||||
<image @click.stop="getProductImgs(item)" class="panelfiveitemimage" :src="item.coverImg"
|
||||
mode="aspectFill"></image>
|
||||
<image @click.stop="getProductImgs(item)" class="panelfiveitemimage"
|
||||
:src="item.coverImg" mode="aspectFill"></image>
|
||||
<view class="limitDiscount" v-if="showLimitDiscount(item)">
|
||||
限时折扣{{ limitDiscountCountdown }}</view>
|
||||
<!-- <view class="limitDiscount" v-if="item.is_time_discount">
|
||||
@@ -105,7 +105,7 @@
|
||||
:class="shopInfo.isVip == 0 || shopInfo.isMemberPrice == 0 ? 'lineThrough' : ''">¥</text>
|
||||
<!-- 会员价与价格 -->
|
||||
<text class="price">
|
||||
{{ shopInfo.isVip == 1 && shopInfo.isMemberPrice == 1 ? item.memberPrice || item.salePrice : item.salePrice }}
|
||||
{{ shopUserInfo.isVip == 1 && shopUserInfo.isMemberPrice == 1 ? item.memberPrice || item.salePrice : item.salePrice }}
|
||||
</text>
|
||||
<!-- 单位 -->
|
||||
<text class="unit" v-if="item.unitName">/{{ item.unitName }}</text>
|
||||
@@ -148,8 +148,10 @@
|
||||
@click.stop="clickspecifications(item, index, index1)">
|
||||
<text class="t no-wrap" v-if="item.groupType == '1'">选择套餐</text>
|
||||
<text class="t" v-else>选规格</text>
|
||||
<!-- <text class="dot num"
|
||||
v-if="item.cartNumber > 0">{{ ifcartNumber(item) < 99 ? ifcartNumber(item) : '99+' }}</text> -->
|
||||
<text class="dot num"
|
||||
v-if="item.cartNumber > 0">{{ ifcartNumber(item) < 99 ? ifcartNumber(item) : '99+' }}</text>
|
||||
v-if="returnGoodsImCartNum(item)">{{ returnGoodsImCartNum(item) < 99 ? returnGoodsImCartNum(item) : '99+' }}</text>
|
||||
</view>
|
||||
<view class="Controls" v-else>
|
||||
<view class="btn" v-if="item.cartNumber != '0'">
|
||||
@@ -158,7 +160,10 @@
|
||||
<!-- <view class="btnClick"
|
||||
@tap.stop="$u.throttle(() => singleclick(item, '-'), 500)"></view> -->
|
||||
</view>
|
||||
<text class="num">{{ ifcartNumber(item) }}</text>
|
||||
<!-- <text class="num">{{ ifcartNumber(item) }}</text> -->
|
||||
|
||||
<text class="dot num"
|
||||
v-if="returnGoodsImCartNum(item1)">{{ returnGoodsImCartNum(item1) < 99 ? returnGoodsImCartNum(item1) : '99+' }}</text>
|
||||
<view class="btn">
|
||||
<up-icon name="plus-circle-fill" color="#E9AB7A" size="25"></up-icon>
|
||||
<!-- <view class="btnClick"
|
||||
@@ -197,8 +202,8 @@
|
||||
<view class="goods" @click="clickspecifications(item1, index, index1)"
|
||||
v-for="(item1, index1) in item.productList" :key="item1.id">
|
||||
<view class="relative">
|
||||
<image class="goodsImg" @click.stop="getProductImgs(item1)" v-if="item1.coverImg != null"
|
||||
:lazy-load="true"
|
||||
<image class="goodsImg" @click.stop="getProductImgs(item1)"
|
||||
v-if="item1.coverImg != null" :lazy-load="true"
|
||||
:src="`${item1.coverImg}${!item1.imgLoad ? '?x-oss-process=image/resize,m_lfit,w_150,h_150' : ''}`"
|
||||
mode="aspectFill"></image>
|
||||
<image class="goodsImg"
|
||||
@@ -252,7 +257,7 @@
|
||||
<view class="money">
|
||||
<view>¥</view>
|
||||
<text class="money_num" style="margin-right: 10rpx">
|
||||
{{ shopInfo.isVip == 1 && shopInfo.isMemberPrice == 1 ? item1.memberPrice || item1.salePrice : item1.salePrice }}
|
||||
{{ shopUserInfo.isVip == 1 && shopUserInfo.isMemberPrice == 1 ? item1.memberPrice || item1.salePrice : item1.salePrice }}
|
||||
</text>
|
||||
<text v-if="item1.unitName">/{{ item1.unitName }}</text>
|
||||
</view>
|
||||
@@ -288,8 +293,11 @@
|
||||
@click.stop="clickspecifications(item1, index, index1)">
|
||||
<text class="t no-wrap" v-if="item1.groupType == '1'">选择套餐</text>
|
||||
<text class="t" v-else>选规格</text>
|
||||
<!-- <text class="dot num"
|
||||
v-if="item1.cartNumber > 0">{{ ifcartNumber(item1) < 99 ? ifcartNumber(item1) : '99+' }}</text> -->
|
||||
|
||||
<text class="dot num"
|
||||
v-if="item1.cartNumber > 0">{{ ifcartNumber(item1) < 99 ? ifcartNumber(item1) : '99+' }}</text>
|
||||
v-if="returnGoodsImCartNum(item1)">{{ returnGoodsImCartNum(item1) < 99 ? returnGoodsImCartNum(item1) : '99+' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="Controls" v-else>
|
||||
@@ -437,9 +445,39 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 推荐搭配 -->
|
||||
<view class="u-m-t-48 u-p-30">
|
||||
<view class="font-bold u-font-32 ">推荐搭配</view>
|
||||
<view class="u-flex recommand-goods">
|
||||
<view class=" item" v-for="(item,index) in 6" :key="index">
|
||||
<up-image width="210rpx" height="210rpx" radius="12rpx"></up-image>
|
||||
<view class="info">
|
||||
<view class="u-line-2 name u-m-t-10 u-font-32 font-500">
|
||||
商品名
|
||||
</view>
|
||||
|
||||
<view class="u-flex u-row-between">
|
||||
<view class="font-bold">
|
||||
<text class="u-font-24">¥</text>
|
||||
<text class="u-font-32">40</text>
|
||||
</view>
|
||||
<view class="btn">
|
||||
<up-icon name="plus-circle-fill" color="#E9AB7A" size="25"></up-icon>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
</scroll-view>
|
||||
<!-- 占位 -->
|
||||
<view style="height: 42rpx;"></view>
|
||||
<view class="shop_bottom">
|
||||
<view class="flex-between">
|
||||
<view class="price price-sku"
|
||||
@@ -453,7 +491,7 @@
|
||||
|
||||
<text class="num" v-if="false">
|
||||
{{
|
||||
shopInfo.isVip == 1 && shopInfo.isMemberPrice == 1
|
||||
shopUserInfo.isVip == 1 && shopUserInfo.isMemberPrice == 1
|
||||
? specifications.item.result.memberPrice || specifications.item.result.salePrice
|
||||
: specifications.item.result.salePrice
|
||||
}}
|
||||
@@ -471,7 +509,7 @@
|
||||
</view>
|
||||
<text class="num" v-if="false">
|
||||
{{
|
||||
shopInfo.isVip == 1 && shopInfo.isMemberPrice == 1
|
||||
shopUserInfo.isVip == 1 && shopUserInfo.isMemberPrice == 1
|
||||
? specifications.item.memberPrice || specifications.item.salePrice
|
||||
: specifications.item.salePrice
|
||||
}}
|
||||
@@ -536,7 +574,17 @@
|
||||
<Loading :isLoading="!useSocket.isConnected" />
|
||||
<ModalList></ModalList>
|
||||
<recommendGoodsModal v-if="isDataLoaded" @onBuyClick="onBuyClick"></recommendGoodsModal>
|
||||
<goodsModal></goodsModal>
|
||||
|
||||
<view
|
||||
v-for="(item,index) in goodsModalList" :key="index"
|
||||
>
|
||||
<goodsModal :key="index" v-model="item.show" :goods="item.goods" @prveImgs="prveImgs" @close="goodsModalClose(index)"
|
||||
@websocketsendMessage="websocketsendMessage"
|
||||
@modalAdd="modalAdd"
|
||||
:GoodsIDInCartNumMap="GoodsIDInCartNumMap"
|
||||
></goodsModal>
|
||||
</view>
|
||||
|
||||
<xbSwiperPreview :visable="showPrveImg" :imgs="prveImgsList" @update:visable="updateShowPrveImg">
|
||||
</xbSwiperPreview>
|
||||
<!-- 显示选择人数popup -->
|
||||
@@ -594,7 +642,8 @@
|
||||
productminiApphotsquery,
|
||||
APIgroupquery,
|
||||
APIminiAppinfo,
|
||||
APIminiAppskuinfo
|
||||
APIminiAppskuinfo,
|
||||
productRelated
|
||||
} from '@/common/api/product/product.js';
|
||||
|
||||
import {
|
||||
@@ -700,6 +749,9 @@
|
||||
import {
|
||||
useCartStore
|
||||
} from '@/stores/order.js';
|
||||
import {
|
||||
computed, provide
|
||||
} from 'vue';
|
||||
const cartStore = useCartStore();
|
||||
/**
|
||||
* store本地存储 end
|
||||
@@ -710,7 +762,6 @@
|
||||
proxy
|
||||
} = getCurrentInstance();
|
||||
|
||||
|
||||
//点单智能推荐
|
||||
function onBuyClick(item) {
|
||||
let index = -1;
|
||||
@@ -750,6 +801,7 @@
|
||||
/**
|
||||
* 通用数据合集 start
|
||||
*/
|
||||
|
||||
// 门店信息
|
||||
const shopInfo = reactive({});
|
||||
Object.assign(shopInfo, uni.cache.get('shopInfo'));
|
||||
@@ -804,6 +856,35 @@
|
||||
|
||||
|
||||
|
||||
|
||||
// 购物车对应的商品数
|
||||
const GoodsIDInCartNumMap = computed(() => {
|
||||
const map = {}
|
||||
for (let cart of cartStore.carts) {
|
||||
if (map[cart.product_id]) {
|
||||
map[cart.product_id] += cart.number * 1
|
||||
} else {
|
||||
map[cart.product_id] = cart.number * 1
|
||||
}
|
||||
|
||||
}
|
||||
return map
|
||||
})
|
||||
|
||||
/**
|
||||
* 返回购物车对应的商品数量
|
||||
*/
|
||||
function returnGoodsImCartNum(goods) {
|
||||
if(!goods){
|
||||
return 0
|
||||
}
|
||||
if (GoodsIDInCartNumMap.value.hasOwnProperty(goods.id)) {
|
||||
GoodsIDInCartNumMap.value[goods.id]
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
// 获取商品数据
|
||||
const shopProductList = reactive({
|
||||
hots: [],
|
||||
@@ -1290,6 +1371,15 @@
|
||||
prveImgs(res.images);
|
||||
}
|
||||
|
||||
const goodsModalList=ref([])
|
||||
|
||||
function goodsModalClose(index){
|
||||
goodsModalList.value.splice(index,1)
|
||||
}
|
||||
function modalAdd(item){
|
||||
clickspecifications(item)
|
||||
}
|
||||
|
||||
//获取多规格数据
|
||||
const clickspecifications = async (item, index, indexs, type) => {
|
||||
console.log('clickspecifications', item);
|
||||
@@ -1305,7 +1395,10 @@
|
||||
// }
|
||||
|
||||
if (item.isSoldStock == 1 || (item.isSaleTime == 0 && !item.isSaleTimeshow)) {
|
||||
return false;
|
||||
return uni.showToast({
|
||||
title:'商品已下架或不在可售时间内',
|
||||
icon:'none'
|
||||
});
|
||||
}
|
||||
|
||||
shopCartNumber.value = 0;
|
||||
@@ -1350,7 +1443,11 @@
|
||||
.filter(([_, value]) => value.length > 0));
|
||||
// 给默认数量
|
||||
specifications.item.amountcartNumber = 0;
|
||||
showShopsku.value = true;
|
||||
// showShopsku.value = true;
|
||||
goodsModalList.value.push({
|
||||
show:true,
|
||||
goods:specifications.item
|
||||
})
|
||||
};
|
||||
// 判断商品是否在可售时间内
|
||||
const isProductAvailable = async (sellDaysStr, startTimeStr, endTimeStr) => {
|
||||
@@ -1585,20 +1682,27 @@
|
||||
// 返回商品对应sku数据
|
||||
|
||||
function cartInit(arr) {
|
||||
|
||||
const result = []
|
||||
console.log('cartInitArr',arr);
|
||||
console.log('allGoodsArr',allGoodsArr);
|
||||
cartStore.carts = arr.map(v => {
|
||||
const goods = allGoodsArr.find(g => g.id == v.product_id)
|
||||
const goods = cartStore.allGoodsArr.find(g => g.id == v.product_id)
|
||||
const goodsSkuList = goods ? goods.skuList : []
|
||||
const findSku = goodsSkuList.find(sku => sku.id == v.sku_id)
|
||||
const memberPrice = findSku ? findSku.memberPrice : 0
|
||||
const is_temporary=v.is_temporary||v.isTemporary
|
||||
const is_time_discount = limitUtils.canUseLimitTimeDiscount({
|
||||
...v,
|
||||
memberPrice
|
||||
}, cartStore.limitTimeDiscount, shopInfo,
|
||||
shopUserInfo.value, 'product_id');
|
||||
if(!goods){
|
||||
if (!goods&&!is_temporary) {
|
||||
console.log('删除未匹配到的商品', {
|
||||
id: v.id,
|
||||
operate_type: "del",
|
||||
table_code: uni.cache.get('tableCode'),
|
||||
shop_id: uni.cache.get('shopId'),
|
||||
type: "shopping",
|
||||
})
|
||||
useSocket.sendMessage({
|
||||
id: v.id,
|
||||
operate_type: "del",
|
||||
@@ -1647,7 +1751,7 @@
|
||||
isLoading.value = false;
|
||||
return false;
|
||||
}
|
||||
console.log('product index 收到消息', Message);
|
||||
|
||||
// 检查消息是否已经处理过
|
||||
if (processedMessageIds.has(Message.msg_id)) {
|
||||
return;
|
||||
@@ -2084,11 +2188,11 @@
|
||||
}
|
||||
return currentTime >= startTime && currentTime <= endTime;
|
||||
});
|
||||
let allGoodsArr=[]
|
||||
const allGoodsArr = ref([])
|
||||
// 列表请求
|
||||
const productqueryProduct = async () => {
|
||||
cartStore.goodsIsloading = false;
|
||||
allGoodsArr=[]
|
||||
allGoodsArr.value=[]
|
||||
try {
|
||||
shopProductList.hots = await productminiApphotsquery();
|
||||
shopProductList.productInfo = await APIgroupquery();
|
||||
@@ -2100,40 +2204,46 @@
|
||||
setTimeout(() => {
|
||||
uni.pro.switchTab('index/index');
|
||||
}, 1000);
|
||||
return; // 出错直接返回,避免后续逻辑
|
||||
}
|
||||
|
||||
if (shopProductList.productInfo.length > 0 || shopProductList.hots.length > 0) {
|
||||
//TODO handle the exception
|
||||
//第一步:将所有商品的 cartNumber 初始化为 0
|
||||
shopProductList.productInfo.forEach((group) => {
|
||||
group.productList.forEach(async (product) => {
|
||||
// 第一步:处理productInfo(替换forEach为for...of,支持await)
|
||||
for (const group of shopProductList.productInfo) {
|
||||
for (const product of group.productList) {
|
||||
product.cartNumber = 0;
|
||||
product.isSaleTimeshow = await isProductAvailable(product.days, product
|
||||
.startTime, product.endTime);
|
||||
|
||||
allGoodsArr.push(product)
|
||||
|
||||
// 等待异步函数执行完成后,再push
|
||||
product.isSaleTimeshow = await isProductAvailable(
|
||||
product.days,
|
||||
product.startTime,
|
||||
product.endTime
|
||||
);
|
||||
allGoodsArr.value.push(product);
|
||||
cartStore.setGoodsMap(product.id, product);
|
||||
});
|
||||
});
|
||||
shopProductList.hots.forEach(async (i) => {
|
||||
}
|
||||
}
|
||||
|
||||
// 第二步:处理hots(同理替换forEach为for...of)
|
||||
for (const i of shopProductList.hots) {
|
||||
i.cartNumber = 0;
|
||||
i.isSaleTimeshow = await isProductAvailable(i.days, i.startTime, i.endTime);
|
||||
allGoodsArr.push(i)
|
||||
allGoodsArr.value.push(i);
|
||||
cartStore.setGoodsMap(i.id, i);
|
||||
});
|
||||
console.log('shopProductList', shopProductList);
|
||||
}
|
||||
|
||||
// 此时所有异步操作完成,allGoodsArr已有数据
|
||||
// console.log('allGoodsArr', allGoodsArr);
|
||||
// console.log('shopProductList', shopProductList);
|
||||
console.log('cartStore.carts', cartStore.carts)
|
||||
cartStore.allGoodsArr=allGoodsArr.value
|
||||
if (cartStore.carts.length > 0) {
|
||||
cartInit(cartStore.carts)
|
||||
cartInit(cartStore.carts);
|
||||
}
|
||||
|
||||
cartStore.goodsIsloading = true;
|
||||
scrollTopSize.value = 0;
|
||||
topArr.value = [];
|
||||
// userStore.actionsAPIuser()
|
||||
// 数据可以更新
|
||||
isDataLoaded.value = true;
|
||||
// 历史订单
|
||||
Historicalorders();
|
||||
updateProductQuantities();
|
||||
} else {
|
||||
@@ -3199,7 +3309,6 @@
|
||||
border-radius: 20rpx;
|
||||
background: #fff;
|
||||
box-sizing: border-box;
|
||||
padding-bottom: 200rpx;
|
||||
|
||||
.positionabsolute {
|
||||
position: absolute;
|
||||
@@ -3234,9 +3343,7 @@
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
}
|
||||
|
||||
.shop_sku_box:last-child {
|
||||
padding-bottom: 140rpx;
|
||||
}
|
||||
|
||||
|
||||
.shop_sku_box {
|
||||
padding: 20rpx;
|
||||
@@ -3322,9 +3429,6 @@
|
||||
padding: 30rpx 28rpx;
|
||||
background-color: #fff;
|
||||
box-shadow: 0rpx -6rpx 14rpx 2rpx rgba(0, 0, 0, 0.1);
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
|
||||
.price {
|
||||
display: flex;
|
||||
@@ -3700,4 +3804,31 @@
|
||||
font-size: 12px;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.recommand-goods {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 24rpx;
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-right: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
width: 210rpx;
|
||||
|
||||
&:nth-child(3n) {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.name {
|
||||
height: 84rpx;
|
||||
}
|
||||
|
||||
.info {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -60,6 +60,9 @@
|
||||
<text v-if="item.bizCode == 'cashback'">
|
||||
消费返现
|
||||
</text>
|
||||
<text v-if="item.bizCode == 'cashback_refund'">
|
||||
消费返现扣减
|
||||
</text>
|
||||
<text v-if="item.bizCode == 'freeIn'">
|
||||
霸王餐充值
|
||||
</text>
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<image class="topBack" :src="
|
||||
<image
|
||||
class="topBack"
|
||||
:src="
|
||||
userInfo.shopExtendList
|
||||
? userInfo.shopExtendList[1].value
|
||||
? userInfo.shopExtendList[1].value
|
||||
: 'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/myTopBack.png'
|
||||
: 'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/myTopBack.png'
|
||||
" mode="aspectFill"></image>
|
||||
"
|
||||
mode="aspectFill"
|
||||
></image>
|
||||
<view class="myContent">
|
||||
<view class="my_info flex-between">
|
||||
<view class="my_info_left">
|
||||
@@ -15,8 +19,7 @@
|
||||
<image class="my_info_left_head" :src="userInfo.headImg" mode="aspectFill"></image>
|
||||
</button>
|
||||
<!-- <view class="name">{{ userInfo.nickName }}</view> -->
|
||||
<input type="nickname" class="name" v-model="userInfo.nickName" placeholder="输入昵称"
|
||||
@blur="onNicknameInput" />
|
||||
<input type="nickname" class="name" v-model="userInfo.nickName" placeholder="输入昵称" @blur="onNicknameInput" />
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef MP-WEIXIN -->
|
||||
<image class="my_info_left_head" :src="userInfo.headImg" mode="aspectFill"></image>
|
||||
@@ -27,8 +30,7 @@
|
||||
<image class="my_info_right_qr" src="/static/icon/code.png" mode="aspectFill"></image>
|
||||
<view class="msg-view" @click="viewUserMsgList">
|
||||
<view class="msg-icon-wrapper">
|
||||
<image v-if="unreadMsgCount > 0" class="my-msg-icon" src="/static/mine/msg_select.png"
|
||||
mode="aspectFill"></image>
|
||||
<image v-if="unreadMsgCount > 0" class="my-msg-icon" src="/static/mine/msg_select.png" mode="aspectFill"></image>
|
||||
<image v-else class="my-msg-icon" src="/static/mine/msg.png" mode="aspectFill"></image>
|
||||
|
||||
<!-- 角标 -->
|
||||
@@ -39,7 +41,6 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
<!-- <image class="my_info_right_qr" @click="clickEvent" v-if="userInfo.isVip == 1 && ShopId"
|
||||
:src="'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_qRcode.png'" mode="aspectFill">
|
||||
</image>
|
||||
@@ -55,9 +56,7 @@
|
||||
<view class="amount">
|
||||
<view class="u-flex u-flex-between u-m-t-20">
|
||||
<view class="u-flex">
|
||||
<image style="width: 50rpx; height: 37rpx"
|
||||
src="https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/storedValue.png"
|
||||
mode="aspectFill"></image>
|
||||
<image style="width: 50rpx; height: 37rpx" src="https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/storedValue.png" mode="aspectFill"></image>
|
||||
<text class="color-333 font-14 u-m-l-20">储值</text>
|
||||
</view>
|
||||
<view class="u-flex color-666" @click="toChargeList">
|
||||
@@ -67,23 +66,17 @@
|
||||
</view>
|
||||
|
||||
<view class="card-list">
|
||||
<view class="card-list-item" v-for="(item, index) in rechargeList" :key="index"
|
||||
@click="toCharge(item)">
|
||||
<view class="card-list-item" v-for="(item, index) in rechargeList" :key="index" @click="toCharge(item)">
|
||||
<up-image radius="20rpx" width="182rpx" height="182rpx" :src="item.logo"></up-image>
|
||||
<view class="info text-center">
|
||||
<view class="color-333 u-m-t-14">
|
||||
<text class="font-10">¥</text>
|
||||
<text class="font-16 font-700">{{
|
||||
item.amount || "0.00"
|
||||
}}</text>
|
||||
<text class="font-16 font-700">{{ item.amount || '0.00' }}</text>
|
||||
</view>
|
||||
<view class="font-12 color-666 u-line-1">{{
|
||||
item.shopName
|
||||
}}</view>
|
||||
<view class="font-12 color-666 u-line-1">{{ item.shopName }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-flex u-flex-column u-flex-center" style="width: 12px" v-if="rechargeList.length"
|
||||
@click="toChargeList">
|
||||
<view class="u-flex u-flex-column u-flex-center" style="width: 12px" v-if="rechargeList.length" @click="toChargeList">
|
||||
<view class="text-center color-333 font-12">查看全部</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -91,8 +84,7 @@
|
||||
<view class="vip u-m-t-40">
|
||||
<view class="u-flex u-flex-between u-m-t-20">
|
||||
<view class="u-flex">
|
||||
<image style="width: 50rpx; height: 40rpx" src="/static/icon/vip.png" mode="aspectFill">
|
||||
</image>
|
||||
<image style="width: 50rpx; height: 40rpx" src="/static/icon/vip.png" mode="aspectFill"></image>
|
||||
<text class="color-333 font-14 u-m-l-20">会员</text>
|
||||
</view>
|
||||
<view class="u-flex color-666" @click="tomemberList">
|
||||
@@ -102,13 +94,10 @@
|
||||
</view>
|
||||
|
||||
<view class="card-list">
|
||||
<view class="card-list-item" v-for="(item, index) in memberList" :key="index"
|
||||
@click="tomember(item)">
|
||||
<view class="card-list-item" v-for="(item, index) in memberList" :key="index" @click="tomember(item)">
|
||||
<up-image radius="20rpx" width="182rpx" height="182rpx" :src="item.logo"></up-image>
|
||||
<view class="info text-center">
|
||||
<view class="font-12 color-666 u-m-t-14 u-line-1">{{
|
||||
item.shopName
|
||||
}}</view>
|
||||
<view class="font-12 color-666 u-m-t-14 u-line-1">{{ item.shopName }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-flex u-flex-column u-flex-center" style="width: 12px" v-if="memberList.length">
|
||||
@@ -119,9 +108,7 @@
|
||||
<view class="amount">
|
||||
<view class="u-flex u-flex-between u-m-t-20">
|
||||
<view class="u-flex">
|
||||
<image style="width: 50rpx; height: 44rpx"
|
||||
src="https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/points.png" mode="aspectFill">
|
||||
</image>
|
||||
<image style="width: 50rpx; height: 44rpx" src="https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/points.png" mode="aspectFill"></image>
|
||||
<text class="color-333 font-14 u-m-l-20">积分</text>
|
||||
</view>
|
||||
<view class="u-flex color-666" @click="toCoin()">
|
||||
@@ -131,22 +118,16 @@
|
||||
</view>
|
||||
|
||||
<view class="card-list">
|
||||
<view class="card-list-item" v-for="(item, index) in coinList" :key="index"
|
||||
@click="toCoin(item)">
|
||||
<view class="card-list-item" v-for="(item, index) in coinList" :key="index" @click="toCoin(item)">
|
||||
<up-image radius="20rpx" width="182rpx" height="182rpx" :src="item.logo"></up-image>
|
||||
<view class="info text-center">
|
||||
<view class="color-333 u-m-t-14">
|
||||
<text class="font-16 font-700">{{
|
||||
item.pointBalance || "0"
|
||||
}}</text>
|
||||
<text class="font-16 font-700">{{ item.pointBalance || '0' }}</text>
|
||||
</view>
|
||||
<view class="font-12 color-666 u-line-1">{{
|
||||
item.shopName
|
||||
}}</view>
|
||||
<view class="font-12 color-666 u-line-1">{{ item.shopName }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-flex u-flex-column u-flex-center" style="width: 12px" v-if="coinList.length"
|
||||
@click="toCoin()">
|
||||
<view class="u-flex u-flex-column u-flex-center" style="width: 12px" v-if="coinList.length" @click="toCoin()">
|
||||
<view class="text-center color-333 font-12">查看全部</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -154,16 +135,13 @@
|
||||
</view>
|
||||
<view class="my_item my_fun u-m-t-30">
|
||||
<view class="my_fun_list">
|
||||
<view class="my_list_item" v-for="(item, index) in myFunList" :key="index"
|
||||
@click="clickTo(item, index)">
|
||||
<view class="my_list_item" v-for="(item, index) in myFunList" :key="index" @click="clickTo(item, index)">
|
||||
<view class="my_list_item_left">
|
||||
<image class="my_list_item_icon" :src="item.icon" mode="aspectFill"></image>
|
||||
<view class="my_list_item_name">{{ item.name }}</view>
|
||||
</view>
|
||||
<view class="my_list_item_right u-flex">
|
||||
<text v-if="item.type == 'score'" class="font-12">{{
|
||||
userInfo.pointBalance || 0
|
||||
}}</text>
|
||||
<text v-if="item.type == 'score'" class="font-12">{{ userInfo.pointBalance || 0 }}</text>
|
||||
<!-- <text v-else-if="item.type=='my_coupon'" class="font-12 ">{{userInfo.couponNum || 0}}</text> -->
|
||||
<text class="font-12 color-999" v-else>查看</text>
|
||||
<u-icon class="u-m-t-2" name="arrow-right" color="#999999" size="12"></u-icon>
|
||||
@@ -190,40 +168,51 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import weQrcode from "@/components/wechat-ac-qrcode.vue";
|
||||
import devetools from "@/components/devetools.vue";
|
||||
|
||||
import {
|
||||
ref,
|
||||
computed,
|
||||
onMounted,
|
||||
reactive,
|
||||
watch
|
||||
} from "vue";
|
||||
import {
|
||||
onLoad,
|
||||
onReady,
|
||||
onShow
|
||||
} from "@dcloudio/uni-app";
|
||||
import {
|
||||
productStore
|
||||
} from "@/stores/user.js";
|
||||
import * as vipApi from "@/common/api/account/vip.js";
|
||||
import * as rechargeApi from "@/common/api/market/recharge.js";
|
||||
import {
|
||||
pointsShopList
|
||||
} from '@/common/api/market/points.js'
|
||||
import {
|
||||
getUnReadCountReq
|
||||
} from "../../common/api/account/message";
|
||||
import {
|
||||
updateUserInfoReq
|
||||
} from "../../common/api/api";
|
||||
import {
|
||||
uploadFile
|
||||
} from '@/common/api/upload.js';
|
||||
import weQrcode from '@/components/wechat-ac-qrcode.vue';
|
||||
import devetools from '@/components/devetools.vue';
|
||||
|
||||
import { ref, computed, onMounted, reactive, watch } from 'vue';
|
||||
import { onLoad, onReady, onShow } from '@dcloudio/uni-app';
|
||||
import { productStore, Storelogin } from '@/stores/user.js';
|
||||
import * as vipApi from '@/common/api/account/vip.js';
|
||||
import * as rechargeApi from '@/common/api/market/recharge.js';
|
||||
import { pointsShopList } from '@/common/api/market/points.js';
|
||||
import { getUnReadCountReq } from '../../common/api/account/message';
|
||||
import { updateUserInfoReq } from '../../common/api/api';
|
||||
import { uploadFile } from '@/common/api/upload.js';
|
||||
|
||||
// 打开企业微信客服
|
||||
const userStore = Storelogin();
|
||||
function openContact() {
|
||||
const shopInfo = uni.cache.get('ordershopUserInfo');
|
||||
if (shopInfo.weworkId && shopInfo.weworkUrl) {
|
||||
wx.openCustomerServiceChat({
|
||||
// corpId: 'wwc76ab19fa6df267f',
|
||||
corpId: shopInfo.weworkId,
|
||||
extInfo: {
|
||||
// url: 'https://work.weixin.qq.com/kfid/kfc40ac2dc5e20c2e8e'
|
||||
url: shopInfo.weworkUrl
|
||||
},
|
||||
// 成功回调
|
||||
success: (res) => {
|
||||
console.log('跳转企业微信客服成功', res);
|
||||
},
|
||||
// 失败回调
|
||||
fail: (err) => {
|
||||
console.error('跳转企业微信客服失败', err);
|
||||
uni.showToast({
|
||||
title: '跳转客服失败,请稍后重试',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '未开放',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function qrcodeResult(res) {
|
||||
qrcode.value = res;
|
||||
@@ -238,14 +227,14 @@
|
||||
// url: '/user/score/list'
|
||||
// },
|
||||
{
|
||||
name: "优惠券",
|
||||
type: "my_coupon",
|
||||
icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_coupon.png",
|
||||
name: '优惠券',
|
||||
type: 'my_coupon',
|
||||
icon: 'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_coupon.png'
|
||||
},
|
||||
{
|
||||
name: "分销",
|
||||
type: "fenxiao",
|
||||
icon: "/static/icon/fenxiao.svg",
|
||||
name: '分销',
|
||||
type: 'fenxiao',
|
||||
icon: '/static/icon/fenxiao.svg'
|
||||
},
|
||||
// {
|
||||
// name: "商家推送",
|
||||
@@ -269,22 +258,23 @@
|
||||
// icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_member.png"
|
||||
// },
|
||||
// { name: "关于", type: "", icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/inRegard.png"},
|
||||
// { name: '联系商家', type: 'contact', icon: 'https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/1/2b0480c32c1844dbae2c09f6a729c6e8.png' }
|
||||
]);
|
||||
|
||||
const userInfo = reactive({});
|
||||
|
||||
const ShopId = ref(uni.cache.get("shopId"));
|
||||
console.log("ShopId", uni.cache.get("shopId"));
|
||||
const ShopId = ref(uni.cache.get('shopId'));
|
||||
console.log('ShopId', uni.cache.get('shopId'));
|
||||
|
||||
function tomemberList() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/member/list",
|
||||
url: '/pages/user/member/list'
|
||||
});
|
||||
}
|
||||
|
||||
function tomember(item) {
|
||||
uni.navigateTo({
|
||||
url: "/user/vip/vip?shopId=" + item.shopId,
|
||||
url: '/user/vip/vip?shopId=' + item.shopId
|
||||
});
|
||||
}
|
||||
|
||||
@@ -292,11 +282,11 @@
|
||||
if (ShopId.value) {
|
||||
if (!userInfo.isVip) {
|
||||
uni.navigateTo({
|
||||
url: "/user/vip/buy-vip?shopId=" + ShopId.value,
|
||||
url: '/user/vip/buy-vip?shopId=' + ShopId.value
|
||||
});
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: "/user/vip/vip?shopId=" + ShopId.value,
|
||||
url: '/user/vip/vip?shopId=' + ShopId.value
|
||||
});
|
||||
}
|
||||
|
||||
@@ -312,104 +302,107 @@
|
||||
// })
|
||||
// }
|
||||
} else {
|
||||
uni.pro.navigateTo("member/list", {
|
||||
type: "user_payCode",
|
||||
uni.pro.navigateTo('member/list', {
|
||||
type: 'user_payCode'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// 我的资产
|
||||
const Myassets = () => {
|
||||
if (uni.cache.get("shopId")) {
|
||||
uni.pro.navigateTo("user/member/memberdetails", {
|
||||
shopId: uni.cache.get("shopId"),
|
||||
type: "index",
|
||||
if (uni.cache.get('shopId')) {
|
||||
uni.pro.navigateTo('user/member/memberdetails', {
|
||||
shopId: uni.cache.get('shopId'),
|
||||
type: 'index'
|
||||
});
|
||||
} else {
|
||||
uni.pro.navigateTo("user/member/list", {
|
||||
shopId: uni.cache.get("shopId"),
|
||||
type: "index",
|
||||
uni.pro.navigateTo('user/member/list', {
|
||||
shopId: uni.cache.get('shopId'),
|
||||
type: 'index'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function toCharge(item) {
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/member/czzx?shopId=" + item.shopId,
|
||||
url: '/pages/user/member/czzx?shopId=' + item.shopId
|
||||
});
|
||||
}
|
||||
|
||||
function toChargeList() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/member/amount-list",
|
||||
url: '/pages/user/member/amount-list'
|
||||
});
|
||||
}
|
||||
|
||||
const clickTo = (item, index) => {
|
||||
if (item.url) {
|
||||
uni.navigateTo({
|
||||
url: item.url,
|
||||
url: item.url
|
||||
});
|
||||
return;
|
||||
}
|
||||
let shopId = null;
|
||||
switch (item.type) {
|
||||
case "msg":
|
||||
case 'msg':
|
||||
uni.navigateTo({
|
||||
url: "/pageChat/index"
|
||||
url: '/pageChat/index'
|
||||
});
|
||||
break;
|
||||
case "my_order":
|
||||
uni.pro.switchTab("order/index");
|
||||
case 'my_order':
|
||||
uni.pro.switchTab('order/index');
|
||||
break;
|
||||
case "my_member":
|
||||
uni.pro.navigateTo("user/member/list");
|
||||
case 'my_member':
|
||||
uni.pro.navigateTo('user/member/list');
|
||||
break;
|
||||
case "recharge":
|
||||
if (uni.cache.get("shopId") && uni.cache.get("token")) {
|
||||
uni.pro.navigateTo("member/index", {
|
||||
shopId: uni.cache.get("shopId"),
|
||||
type: "index",
|
||||
case 'recharge':
|
||||
if (uni.cache.get('shopId') && uni.cache.get('token')) {
|
||||
uni.pro.navigateTo('member/index', {
|
||||
shopId: uni.cache.get('shopId'),
|
||||
type: 'index'
|
||||
});
|
||||
} else {
|
||||
uni.pro.navigateTo("member/list", {
|
||||
type: "user_recharge",
|
||||
uni.pro.navigateTo('member/list', {
|
||||
type: 'user_recharge'
|
||||
});
|
||||
}
|
||||
break;
|
||||
case "points": //积分
|
||||
if (uni.cache.get("shopId") && uni.cache.get("token")) {
|
||||
uni.pro.navigateTo("/pagesPoints/index/index", {
|
||||
shopId: uni.cache.get("shopId"),
|
||||
type: "user",
|
||||
case 'points': //积分
|
||||
if (uni.cache.get('shopId') && uni.cache.get('token')) {
|
||||
uni.pro.navigateTo('/pagesPoints/index/index', {
|
||||
shopId: uni.cache.get('shopId'),
|
||||
type: 'user'
|
||||
});
|
||||
} else {
|
||||
uni.pro.navigateTo("member/list", {
|
||||
type: "user_points",
|
||||
uni.pro.navigateTo('member/list', {
|
||||
type: 'user_points'
|
||||
});
|
||||
}
|
||||
break;
|
||||
case "my_coupon": //优惠券
|
||||
uni.pro.navigateTo("user/coupon", {
|
||||
shopId: uni.cache.get("shopId") || "",
|
||||
case 'my_coupon': //优惠券
|
||||
uni.pro.navigateTo('user/coupon', {
|
||||
shopId: uni.cache.get('shopId') || ''
|
||||
});
|
||||
break;
|
||||
case "fenxiao": //优惠券
|
||||
case 'fenxiao': //优惠券
|
||||
uni.navigateTo({
|
||||
url: "/distribution/index",
|
||||
url: '/distribution/index'
|
||||
});
|
||||
break;
|
||||
case "myself": //内部页面
|
||||
uni.pro.navigateTo("user/myself");
|
||||
case 'myself': //内部页面
|
||||
uni.pro.navigateTo('user/myself');
|
||||
break;
|
||||
case "scan_applet":
|
||||
case 'scan_applet':
|
||||
uni.navigateToMiniProgram(JSON.parse(item.value));
|
||||
break;
|
||||
case "absolute": //外链url
|
||||
case 'absolute': //外链url
|
||||
uni.navigateTo({
|
||||
url: `/pages/webview/webview?url=${item.menuUrl}`,
|
||||
url: `/pages/webview/webview?url=${item.menuUrl}`
|
||||
});
|
||||
break;
|
||||
case 'contact': // 联系商家
|
||||
openContact();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -430,93 +423,93 @@
|
||||
|
||||
const res3 = await pointsShopList();
|
||||
coinTotal.value = res3.length;
|
||||
coinList.value = res3;
|
||||
coinList.value = res3.slice(0, 3);
|
||||
}
|
||||
|
||||
function toCoin(item) {
|
||||
if (item) {
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/member/billDetails?type=2&shopId="+item.shopId+"&id="+(item.id||''),
|
||||
url: '/pages/user/member/billDetails?type=2&shopId=' + item.shopId + '&id=' + (item.id || '')
|
||||
});
|
||||
return
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: "/user/score/list",
|
||||
url: '/user/score/list'
|
||||
});
|
||||
}
|
||||
|
||||
const unreadMsgCount = ref(0);
|
||||
|
||||
const getUnReadMsgCount = async () => {
|
||||
let res = await getUnReadCountReq()
|
||||
let res = await getUnReadCountReq();
|
||||
|
||||
let badge = Number(res)
|
||||
let badge = Number(res);
|
||||
if (badge > 0) {
|
||||
uni.setTabBarBadge({
|
||||
index: 2,
|
||||
text: badge.toString()
|
||||
})
|
||||
});
|
||||
} else {
|
||||
uni.removeTabBarBadge({
|
||||
index: 2
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
unreadMsgCount.value = badge
|
||||
}
|
||||
unreadMsgCount.value = badge;
|
||||
};
|
||||
|
||||
const viewUserMsgList = () => {
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/message/index"
|
||||
})
|
||||
}
|
||||
url: '/pages/user/message/index'
|
||||
});
|
||||
};
|
||||
|
||||
onShow(() => {
|
||||
loadUserInfo()
|
||||
console.log("userInfo", userInfo);
|
||||
loadUserInfo();
|
||||
console.log('userInfo', userInfo);
|
||||
getData();
|
||||
|
||||
getUnReadMsgCount()
|
||||
getUnReadMsgCount();
|
||||
});
|
||||
|
||||
const loadUserInfo = async () => {
|
||||
await store.actionsAPIuser();
|
||||
if (uni.cache.get("shopId")) {
|
||||
Object.assign(userInfo, uni.cache.get("orderVIP"));
|
||||
if (uni.cache.get('shopId')) {
|
||||
Object.assign(userInfo, uni.cache.get('orderVIP'));
|
||||
} else {
|
||||
Object.assign(userInfo, {
|
||||
...uni.cache.get("userInfo"),
|
||||
...uni.cache.get("userInfo").assetsSummary,
|
||||
...uni.cache.get('userInfo'),
|
||||
...uni.cache.get('userInfo').assetsSummary
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const qrcode = ref("");
|
||||
const qrcode = ref('');
|
||||
const showQrcode = computed(() => {
|
||||
const followIndex = uni.cache.get("followIndex");
|
||||
if (followIndex == "mine" && qrcode.value) {
|
||||
const followIndex = uni.cache.get('followIndex');
|
||||
if (followIndex == 'mine' && qrcode.value) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
const onChooseAvatar = async (e) => {
|
||||
const fileRes = await uploadFile(e.detail.avatarUrl)
|
||||
const fileRes = await uploadFile(e.detail.avatarUrl);
|
||||
updateUserInfo({
|
||||
"headImg": fileRes
|
||||
})
|
||||
}
|
||||
headImg: fileRes
|
||||
});
|
||||
};
|
||||
|
||||
const onNicknameInput = (e) => {
|
||||
updateUserInfo({
|
||||
"nickName": e.detail.value
|
||||
})
|
||||
}
|
||||
nickName: e.detail.value
|
||||
});
|
||||
};
|
||||
|
||||
const updateUserInfo = async (param) => {
|
||||
await updateUserInfoReq(param)
|
||||
await updateUserInfoReq(param);
|
||||
|
||||
loadUserInfo()
|
||||
}
|
||||
loadUserInfo();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
10
pnpm-lock.yaml
generated
10
pnpm-lock.yaml
generated
@@ -30,8 +30,8 @@ importers:
|
||||
specifier: ^0.1.2
|
||||
version: 0.1.2
|
||||
ysk-utils:
|
||||
specifier: ^1.0.81
|
||||
version: 1.0.81
|
||||
specifier: ^1.0.83
|
||||
version: 1.0.83
|
||||
devDependencies:
|
||||
unplugin-auto-import:
|
||||
specifier: ^0.16.7
|
||||
@@ -357,8 +357,8 @@ packages:
|
||||
webpack-virtual-modules@0.6.2:
|
||||
resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
|
||||
|
||||
ysk-utils@1.0.81:
|
||||
resolution: {integrity: sha512-c6SOfOaw43aDDuyXgEv24Vo561EfFoa1gfGbY+p1EfXHoGPOE6tQLekbWW9bn37KAse0Gdef7VCbdv0Dr6ltaw==}
|
||||
ysk-utils@1.0.83:
|
||||
resolution: {integrity: sha512-48KLQJXQtF8nLaaFHR1hAFx/QGS848fg7n37BpZEtwliD+D5ZHQFPOCZNaM68jiwDTWhNg41rHpZzhAUQXe+/Q==}
|
||||
|
||||
snapshots:
|
||||
|
||||
@@ -684,7 +684,7 @@ snapshots:
|
||||
|
||||
webpack-virtual-modules@0.6.2: {}
|
||||
|
||||
ysk-utils@1.0.81:
|
||||
ysk-utils@1.0.83:
|
||||
dependencies:
|
||||
bignumber.js: 9.3.1
|
||||
loadsh: 0.0.4
|
||||
|
||||
@@ -40,6 +40,9 @@ export const useCartsStore = defineStore("cart", () => {
|
||||
//用户信息
|
||||
const shopUserInfo = ref(uni.cache.get("shopUserInfo") || {});
|
||||
|
||||
//全部的商品列表
|
||||
const allGoodsArr=ref([])
|
||||
|
||||
const consumeDiscount = ref({});
|
||||
|
||||
// 适配工具库 BaseCartItem 接口的商品数据转换函数
|
||||
@@ -326,7 +329,11 @@ export const useCartsStore = defineStore("cart", () => {
|
||||
.map((v) => {
|
||||
|
||||
const item = getProductDetails(v);
|
||||
if (!item) {
|
||||
const is_temporary=v.is_temporary||v.isTemporary
|
||||
if(is_temporary){
|
||||
return v
|
||||
}
|
||||
if (!item&&!is_temporary) {
|
||||
socketSendMsg({
|
||||
id: v.id,
|
||||
operate_type: "del",
|
||||
@@ -496,10 +503,10 @@ export const useCartsStore = defineStore("cart", () => {
|
||||
return false;
|
||||
}
|
||||
const isUse =
|
||||
shopUserInfo.value.isVip && shopUserInfo.value.isMemberPrice && shopInfo.value
|
||||
.isMemberPrice == 1 ?
|
||||
shopUserInfo.value.isVip && shopUserInfo.value.isMemberPrice ?
|
||||
true :
|
||||
false;
|
||||
console.log('useVipPrice',isUse);
|
||||
return isUse;
|
||||
});
|
||||
|
||||
@@ -754,6 +761,6 @@ export const useCartsStore = defineStore("cart", () => {
|
||||
//限时折扣
|
||||
limitTimeDiscount,
|
||||
shopUserInfo,
|
||||
socketSendMsg,
|
||||
socketSendMsg,allGoodsArr
|
||||
};
|
||||
});
|
||||
@@ -716,9 +716,10 @@
|
||||
const index = item.packageInfo.tieredDiscount.findIndex(v => v.peopleNum==nowStep.value.peopleNum)
|
||||
if (index != -1) {
|
||||
const percent= (index + 1) / item.packageInfo.tieredDiscount.length * 100
|
||||
return percent>=100?100:0;
|
||||
}
|
||||
return percent>=100?100:percent;
|
||||
}else{
|
||||
return 0
|
||||
}
|
||||
})
|
||||
const nowPrice = computed(() => {
|
||||
if (!item.packageInfo) {
|
||||
|
||||
@@ -33,11 +33,11 @@ module.exports = defineConfig({
|
||||
],
|
||||
server: {
|
||||
proxy: {
|
||||
'/api': {
|
||||
'/testApi': {
|
||||
// target: 'https://cashier.sxczgkj.com', // 目标服务器地址
|
||||
target: 'http://192.168.1.42/', // 目标服务器地址
|
||||
changeOrigin: true, // 是否更改请求源
|
||||
rewrite: path => path.replace(/^\/api/, '')
|
||||
rewrite: path => path.replace(/^\/testApi/, '')
|
||||
},
|
||||
'/prodApi': {
|
||||
target: 'https://cashier.sxczgkj.com', // 目标服务器地址
|
||||
|
||||
Reference in New Issue
Block a user