修改本地测试连接,增加会员中心分包和页面

This commit is contained in:
2025-09-25 11:12:20 +08:00
parent c7e4e5e26b
commit e38cfe1eaa
16 changed files with 491 additions and 48 deletions

View File

@@ -5,8 +5,9 @@ export default (params) => {
let type = params.type || 1;
let toast = params.toast || true;
let token=uni.cache.get('token') || '';
const shopId=uni.cache.get('shopId')*1;
// #ifdef H5
token="b152112b96e24feb8aa47062136c043b"
token="21f0a0b10e1d40ce9c6464037fedb792"
// #endif
let header = {
version: uni.conf.version,
@@ -25,7 +26,7 @@ export default (params) => {
// #endif
token,
id: uni.cache.get('userInfo').id || '',
shopId: uni.cache.get('shopId') || '',
shopId:shopId || '',
userId: uni.cache.get('userInfo').id || '',
}
if (toast) {

View File

@@ -52,4 +52,37 @@ page,
}
.bg-main{
background-color: $my-main-color;
}
.color-666{
color: #666;
}
.text-center{
text-align: center;
}
.color-333{
color: #333;
}
.color-000{
color: #000;
}
.color-999{
color: #999;
}
.font-16 {
font-size: 16px;
}
.font-700{
font-weight: 700;
}
.font-14{
font-size: 14px;
}
.font-10{
font-size: 10px;
}
.font-12 {
font-size: 12px;
}
.no-wrap{
white-space: nowrap;
}

View File

@@ -5,16 +5,16 @@ const proxyApi = "/api"
// #endif
// #ifdef MP-WEIXIN || APP || MP-ALIPAY
const proxyApi = 'http://192.168.1.31' // 调试地址
const proxyApiwws = 'ws://192.168.1.31:2348' // 调试地址
const proxyApi = 'http://192.168.0.71' // 调试地址
const proxyApiwws = 'ws://192.168.0.71:2348' // 调试地址
// 测试
// const proxyApi = "https://fv901fw8033.vicp.fun"
// const proxyApiwws = 'wss://sockets.sxczgkj.com/wss'
// #endif
// #ifdef H5
const baseUrl = debug ? proxyApi : "http://192.168.1.31"
const baseUrlwws = 'ws://192.168.1.31:2348'
const baseUrl = debug ? proxyApi : "http://192.168.0.71"
const baseUrlwws = 'ws://192.168.0.71:2348'
// #endif
// #ifdef APP || MP-WEIXIN || MP-ALIPAY

View File

@@ -185,6 +185,21 @@
}
}
],
"subPackages": [
{
"root": "user",
"pages": [{
"path" : "vip/vip",
"style" :
{
"navigationBarTitleText" : "",
"navigationStyle": "custom"
}
}
]
}
],
"uniIdRouter": {},
"globalStyle": {
"navigationBarTextStyle": "black",

View File

@@ -17,35 +17,79 @@
</view>
</view>
<up-gap height="26rpx" bg-color="#F9F9F9"></up-gap>
<view class="my_item my_assets" @click="Myassets">
<view class="my_item_title">我的资产</view>
<view class="my_assets_list">
<view class="my_list_item">
<image class="my_list_item_icon"
src="https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/storedValue.png" mode="aspectFill">
</image>
<view class="my_list_item_name">储值</view>
<view class="my_list_item_num">{{userInfo.amount || '0'}}</view>
<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>
<text class="color-333 font-14 u-m-l-20">储值</text>
</view>
<view class="u-flex color-666">
<text class="font-12 u-m-r-4">3家店</text>
<up-icon name="arrow-down" color="#666" size="12px"></up-icon>
</view>
</view>
<view class="my_list_item">
<image class="my_list_item_icon"
src="https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/points.png">
</image>
<view class="my_list_item_name">积分</view>
<view class="my_list_item_num">{{userInfo.accountPoints || 0}}</view>
</view>
<view class="my_list_item">
<image class="my_list_item_icon"
src="https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/coupon.png">
</image>
<view class="my_list_item_name">优惠券</view>
<view class="my_list_item_num">{{userInfo.couponNum ||'0'}}</view>
<view class="card-list">
<view class="card-list-item" v-for="(item,index) in 3" :key="index">
<up-image radius="20rpx" width="182rpx" height="182rpx"></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 ">9999.99</text>
</view>
<view class="font-12 color-666">这里是店铺名称</view>
</view>
</view>
<view class="u-flex u-flex-column u-flex-center">
<view class="text-center color-333 font-12">查看全部</view>
</view>
</view>
</view>
</view>
<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: 37rpx;"
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">
<text class="font-12 u-m-r-4">3家店</text>
<up-icon name="arrow-down" color="#666" size="12px"></up-icon>
</view>
</view>
<view class="card-list">
<view class="card-list-item" v-for="(item,index) in 3" :key="index">
<up-image radius="20rpx" width="182rpx" height="182rpx"></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 ">9999.99</text>
</view>
<view class="font-12 color-666">这里是店铺名称</view>
</view>
</view>
<view class="u-flex u-flex-column u-flex-center">
<view class="text-center color-333 font-12">查看全部</view>
</view>
</view>
</view>
<view class="my_item my_fun">
<view class="my_item_title">我的功能</view>
</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)">
@@ -53,8 +97,11 @@
<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-icon name="play-right-fill" color="#999999" size="12"></u-icon>
<view class="my_list_item_right u-flex ">
<text v-if="item.type=='score'" class="font-12 ">{{userInfo.accountPoints || 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>
</view>
</view>
</view>
@@ -82,26 +129,31 @@
} from '@/stores/user.js';
const store = productStore();
const myFunList = ref([{
name: "我的优惠券",
name: "积分",
type: "score",
icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/points.png"
},
{
name: "优惠券",
type: "my_coupon",
icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_coupon.png"
},
{
name: "我的订单",
type: "my_order",
icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_order.png"
},
// {
// name: "我的订单",
// type: "my_order",
// icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_order.png"
// },
// { name: "收货地址", type: "", icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_address.png"},
// {
// name: "个人资料",
// type: "myself",
// icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/personal.png"
// },
{
name: "我的会员卡",
type: "my_member",
icon: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_member.png"
},
// {
// name: "我的会员卡",
// type: "my_member",
// 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"},
])
@@ -218,13 +270,12 @@
.myContent {
position: relative;
z-index: 1;
padding: 298rpx 20rpx 0 20rpx;
padding: 298rpx 0 0 0;
.my_info {
height: 172rpx;
align-items: center;
background-color: #fff;
padding: 0 32rpx;
padding: 32rpx 32rpx;
border-radius: 18rpx;
.my_info_left {
@@ -272,9 +323,8 @@
.my_item {
background-color: #fff;
padding: 22rpx 32rpx;
padding: 0 32rpx;
border-radius: 18rpx;
margin-top: 16rpx;
.my_item_title {
font-weight: bold;
@@ -362,4 +412,22 @@
}
}
}
.card-list {
display: grid;
grid-template-columns: repeat(4, 1fr);
column-gap: 40rpx;
margin-top: 20rpx;
.card-list-item{
max-width: 182rpx;
box-shadow: 8rpx 8rpx 32rpx 0 #0b18390f;
.info{
padding-bottom: 16rpx;
overflow: hidden;
}
}
}
</style>

BIN
static/icon/vip.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
user/images/Frame_220.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
user/images/Frame_221.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
user/images/Frame_222.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
user/images/Frame_223.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
user/images/Frame_224.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
user/images/Frame_225.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
user/images/image_21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

326
user/vip/vip.vue Normal file
View File

@@ -0,0 +1,326 @@
<template>
<view>
<up-navbar bg-color="transparent" title="会员中心" @leftClick="back"></up-navbar>
<view class="top">
<view class="vip-box">
<view class="icon">
<image src="/user/images/image_21.png" class="huangguan" mode=""></image>
</view>
<view class="tag">当前等级</view>
<view class="shop-name">店铺名称</view>
<view class="lv">白银会员</view>
<view class="time">
<text>2025.10.14到期 </text>
<text>月度会员</text>
</view>
<view class="rule u-m-t-40 u-flex u-flex-between u-flex-y-center">
<text class="color-one ">
<text class="font-16">11000</text>
<text class="font-12">经验值</text>
</text>
<text class="desc">等级说明</text>
</view>
<view class="progress">
<view class="block" :style="{width:100+'px'}"></view>
</view>
<view class="u-m-t-12 next-tips">还差5695成长值可以升级到黄金会员</view>
</view>
</view>
<view class="vip-quanyi">
<view class="u-flex u-flex-between">
<text class="color-2 font-14 font-700">会员权益</text>
<view class="u-flex">
<text class="color-666 u-m-r-4 font-12">会员说明</text>
<up-icon name="question-circle" size="12" @click="modelShow"></up-icon>
</view>
</view>
<view class="">
<view class="menus" :class="state.pay_types=='tiaojian'?'menus-tiaojian' :'menus-pays'">
<view class="item u-m-t-32" v-for="(item,index) in menus" :key="index">
<view class="u-flex u-flex-x-center u-m-t-4">
<image :src="item.icon" mode="" style="width: 100rpx;height: 100rpx;"></image>
</view>
<view class="font-14 color-333 text-center u-m-t-4 u-flex">
<text class="no-wrap u-m-r-4">{{item.name}}</text>
<up-icon @click="modelShow" size="12" name="question-circle" color="#333" v-if="showQuestion(index)"></up-icon>
</view>
<view class="font-12 color-666 text-center">{{item.desc}}</view>
</view>
</view>
</view>
</view>
<view class="u-p-l-30 u-p-r-30">
<view class="color-333 font-700 font-14">升级规则</view>
<view class="color-666 font-14 u-m-t-16">
每消费1元获得10成长值
</view>
<view class="color-666 font-14 u-m-t-16">
每消费1元获得10成长值
</view>
</view>
<up-popup :show="model.show" mode="center" round="16rpx">
<view class="model-box">
<view class="u-flex u-flex-between">
<text class="color-000 font-700 font-16">详情说明</text>
<up-icon name="close-circle" color="#666" size="28rpx" @click="modelHide"></up-icon>
</view>
<view class="u-m-t-18 up-content">
<up-parse :content="modelContent"></up-parse>
</view>
</view>
</up-popup>
</view>
</template>
<script setup>
import {
ref,
reactive,
computed
} from "vue"
const model =reactive({
show:false
})
function modelHide(){
model.show=false;
}
function modelShow(){
model.show=true;
}
const modelContent = ref(`
1、可适用门店全部门店<br>
2、可适用商品部分商品<br>
3、可使用类型堂食<br>
4、可用时间段全时段可用<br>
5、限量规则每人限领3张每日可最多使用3张<br>
6、同享规则与限时折扣同享、与会员价同享<br>
7、其它说明这里是后台配置内容
`)
const state = reactive({
pay_types: 'tiaojian'
})
const pay_menus = [{
name: '赠送成长值',
desc: '赠送10000成长值',
icon: '/user/images/Frame_220.png',
},
{
name: '优惠券',
desc: '每月赠送2张优惠券',
icon: '/user/images/Frame_221.png'
},
{
name: '享会员价',
desc: '全店会员价',
icon: '/user/images/Frame_222.png'
},
{
name: '会员折扣',
desc: '全店折扣98折',
icon: '/user/images/Frame_223.png'
},
{
name: '消费送积分',
desc: '',
icon: '/user/images/Frame_224.png'
},
{
name: '周期福利',
desc: '',
icon: '/user/images/Frame_225.png'
}
]
const tiaojian_menus = [{
name: '享会员价',
desc: '全店会员价',
icon: '/user/images/Frame_222.png'
},
{
name: '会员折扣',
desc: '全店折扣98折',
icon: '/user/images/Frame_223.png'
},
{
name: '消费送积分',
desc: '',
icon: '/user/images/Frame_224.png'
},
{
name: '周期福利',
desc: '',
icon: '/user/images/Frame_225.png'
}
]
const menus = ref(tiaojian_menus)
function showQuestion(index) {
const len = menus.value.length
if (index >= len - 2) {
return true
}
return false
}
function back(){
uni.navigateBack()
}
</script>
<style>
page {
background: #F9F9F9;
}
</style>
<style lang="scss" scoped>
.font-700 {
font-weight: 700;
}
.color-one {
color: #558ABF;
}
.color-2 {
color: #273d7a;
}
.top {
background: linear-gradient(283deg, #A9CBF8 11.62%, #E5E7EB 74.58%);
}
.top {
padding: 100rpx 30rpx 78rpx 30rpx;
}
.vip-box {
background-image: url(/user/images/Rectangle_25.png);
background-size: cover;
position: relative;
border-radius: 12px;
overflow: hidden;
padding-left: 6px;
padding-right: 64rpx;
padding-bottom: 24rpx;
.icon {
position: absolute;
right: 42rpx;
top: 0;
.huangguan {
width: 214rpx;
height: 206rpx;
}
}
.tag {
position: absolute;
top: 0;
font-size: 12px;
color: #46739F;
padding: 2px 12px;
background: #c7d0da;
border-radius: 0 0 12px 0;
}
.shop-name {
margin-top: 23px;
color: #6988AB;
font-size: 16px;
}
.lv {
color: #273d7a;
font-weight: 700;
font-size: 64rpx;
letter-spacing: 4rpx;
transform: skewX(-10deg);
}
.time {
color: #6988ab;
font-size: 24rpx;
font-weight: 400;
}
.rule {
.exp {}
.desc {
color: #273d7a;
font-size: 24rpx;
font-weight: 400;
}
}
.next-tips {
color: #6988ab;
font-size: 24rpx;
font-weight: 400;
}
}
.progress {
margin-top: 8rpx;
background-color: #BDD5E9;
height: 10rpx;
border-radius: 10rpx;
.block {
height: 100%;
border-radius: 10rpx;
background: linear-gradient(90deg, #F9FBFA 0.03%, #334783 115.59%);
}
}
.vip-quanyi {
background-color: #fff;
padding: 36rpx 18rpx 42rpx 38rpx;
border-radius: 40rpx 40rpx 0 0;
transform: translateY(-40rpx);
}
.menus-pays {
display: grid;
/* 每行显示3列每列宽度相等 */
grid-template-columns: repeat(3, 1fr);
/* 列间距 */
column-gap: 10px;
/* 行间距 */
row-gap: 10px;
/* 可以添加容器的内边距 */
}
.menus-tiaojian {
display: grid;
/* 每行显示3列每列宽度相等 */
grid-template-columns: repeat(4, 1fr);
/* 列间距 */
column-gap: 10px;
/* 行间距 */
row-gap: 10px;
/* 可以添加容器的内边距 */
}
.model-box {
padding: 32rpx 56rpx;
width: 702rpx;
}
.up-content {
color: #999;
font-size: 12px;
}
</style>

View File

@@ -9,7 +9,7 @@ export default defineConfig({
hmr: true,
proxy: {
'/api': {
target: 'http://192.168.1.31',
target: 'http://192.168.0.71',
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, ''),
secure: false