初步将merchant在开发者工具上面运行
This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
<template>
|
||||
<view class="exclusive-discounts-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="header">
|
||||
<text class="title">由于您的需求,为 {{ userName }} 配置专属商品折扣</text>
|
||||
<text class="subtitle">专属打折商品的折扣不受全场默认 VIP 折扣影响。</text>
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 财务管理页面 -->
|
||||
<template>
|
||||
<view class="finance-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="balance-card">
|
||||
<text class="balance-label">账户余额(元)</text>
|
||||
<text class="balance-value">¥{{ balance }}</text>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<view class="header-bg"></view>
|
||||
<view class="header-content">
|
||||
<view class="shop-info">
|
||||
<image :src="shopInfo.shop_logo || '/static/images/default-shop.png'" class="shop-logo" mode="aspectFill" @click="goToSettings" />
|
||||
<image :src="shopInfo.shop_logo || '/static/logo.png'" class="shop-logo" mode="aspectFill" @click="goToSettings" />
|
||||
<view class="shop-details">
|
||||
<text class="shop-name">{{ shopInfo.shop_name || '我的店铺' }}</text>
|
||||
<view class="shop-meta">
|
||||
@@ -373,9 +373,9 @@
|
||||
},
|
||||
|
||||
startRealtimeSubscription() {
|
||||
// #ifndef MP-WEIXIN
|
||||
// 小程序不支持 Supabase Realtime WebSocket,仅在其他平台运行
|
||||
if (!this.merchantId) return
|
||||
|
||||
// 监听订单表的变化
|
||||
try {
|
||||
supa.channel('ml_orders_realtime')
|
||||
.on('postgres_changes', {
|
||||
@@ -385,7 +385,6 @@
|
||||
filter: `merchant_id=eq.${this.merchantId}`
|
||||
}, (payload) => {
|
||||
console.log('收到订单实时更新:', payload)
|
||||
// 延迟一下再刷新,避免连续变动导致频繁请求
|
||||
setTimeout(() => {
|
||||
this.loadTodayStats()
|
||||
this.loadPendingCounts()
|
||||
@@ -396,14 +395,17 @@
|
||||
} catch (e) {
|
||||
console.error('订阅实时更新失败:', e)
|
||||
}
|
||||
// #endif
|
||||
},
|
||||
|
||||
stopRealtimeSubscription() {
|
||||
// #ifndef MP-WEIXIN
|
||||
try {
|
||||
supa.channel('ml_orders_realtime').unsubscribe()
|
||||
} catch (e) {
|
||||
console.error('取消订阅失败:', e)
|
||||
}
|
||||
// #endif
|
||||
},
|
||||
|
||||
async loadAllData() {
|
||||
@@ -674,7 +676,7 @@
|
||||
|
||||
this.recentOrders = ordersData
|
||||
} catch (e) {
|
||||
console.error('加载最新订单异常:', e); uni.showModal({title: '最新订单报错', content: e.toString()})
|
||||
console.error('加载最新订单异常:', e)
|
||||
}
|
||||
},
|
||||
|
||||
@@ -687,7 +689,7 @@
|
||||
.eq('is_read', false)
|
||||
.execute()
|
||||
|
||||
if (response.error != null) { uni.showModal({title: 'ml_chat_messages报错', content: JSON.stringify(response.error)}) }
|
||||
if (response.error != null) { console.error('ml_chat_messages报错', response.error) }
|
||||
this.unreadCount = response.total || 0
|
||||
} catch (e) {
|
||||
console.error('获取未读消息数失败:', e)
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 库存管理页面 -->
|
||||
<template>
|
||||
<view class="inventory-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="stats-bar">
|
||||
<view class="stat-item">
|
||||
<text class="stat-value">{{ stats.totalProducts }}</text>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<template>
|
||||
<view class="members-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="tabs">
|
||||
<view class="tab" :class="{ active: activeTab === 0 }" @click="activeTab = 0">等级设置</view>
|
||||
<view class="tab" :class="{ active: activeTab === 1 }" @click="activeTab = 1">客户列表</view>
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 消息中心页面 -->
|
||||
<template>
|
||||
<view class="messages-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="header">
|
||||
<text class="header-title">消息</text>
|
||||
<text class="header-subtitle">与客户的聊天记录</text>
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 订单详情页面 -->
|
||||
<template>
|
||||
<view class="order-detail-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- 订单状态头部 -->
|
||||
<view class="status-header" :class="getStatusBgClass(order.order_status)">
|
||||
<text class="status-icon">{{ getStatusIcon(order.order_status) }}</text>
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 订单管理页面 -->
|
||||
<template>
|
||||
<view class="orders-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- 标签页切换 -->
|
||||
<view class="tabs-container">
|
||||
<view class="tabs-scroll">
|
||||
@@ -405,6 +413,7 @@
|
||||
this.hasMore = rawData.length >= this.limit
|
||||
} catch (e) {
|
||||
console.error('获取订单异常:', e)
|
||||
uni.showToast({ title: '加载失败,请检查网络连接', icon: 'none' })
|
||||
} finally {
|
||||
this.loading = false
|
||||
this.refreshing = false
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 商品管理详情页 -->
|
||||
<template>
|
||||
<view class="product-manage-detail">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- 商品基本信息 -->
|
||||
<view class="product-section">
|
||||
<view class="section-header">
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 商品编辑页面 -->
|
||||
<template>
|
||||
<view class="product-edit-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- 商品基本信息 -->
|
||||
<view class="section">
|
||||
<view class="section-title">基本信息</view>
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 商品管理列表页面 -->
|
||||
<template>
|
||||
<view class="products-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- 搜索栏 -->
|
||||
<view class="search-bar">
|
||||
<input
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 个人中心 -->
|
||||
<template>
|
||||
<view class="merchant-profile">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- 店铺信息头部 -->
|
||||
<view class="profile-header">
|
||||
<image :src="shopInfo.shop_logo || '/static/default-shop.png'" class="shop-logo" @click="editShop" />
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 营销活动页面 -->
|
||||
<template>
|
||||
<view class="promotions-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="tabs">
|
||||
<view class="tab" :class="{ active: currentTab === 'coupon' }" @click="switchTab('coupon')">优惠券</view>
|
||||
<view class="tab" :class="{ active: currentTab === 'seckill' }" @click="switchTab('seckill')">秒杀活动</view>
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 评价管理页面 -->
|
||||
<template>
|
||||
<view class="reviews-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="filter-tabs">
|
||||
<view class="filter-tab" :class="{ active: currentFilter === 'all' }" @click="switchFilter('all')">全部</view>
|
||||
<view class="filter-tab" :class="{ active: currentFilter === 'pending' }" @click="switchFilter('pending')">待回复</view>
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 店铺编辑页面 -->
|
||||
<template>
|
||||
<view class="shop-edit-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="section">
|
||||
<view class="section-title">店铺信息</view>
|
||||
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<!-- 商家端 - 数据统计页面 -->
|
||||
<template>
|
||||
<view class="statistics-page">
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
|
||||
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;">‹</text>
|
||||
<text style="font-size: 28rpx; color: #333333;">返回</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="date-picker">
|
||||
<view class="date-btn" :class="{ active: dateRange === 'today' }" @click="setDateRange('today')">今日</view>
|
||||
<view class="date-btn" :class="{ active: dateRange === 'week' }" @click="setDateRange('week')">本周</view>
|
||||
|
||||
Reference in New Issue
Block a user