修正了 pages 名为拼音的问题

This commit is contained in:
2026-06-13 10:44:02 +08:00
parent 76cc4ac55e
commit 296e41a8a7
249 changed files with 29660 additions and 29505 deletions

37
app.js
View File

@@ -1,11 +1,10 @@
// app.js - 稳健生产版本(修复 GoEasy 初始化错误 + 配置100%加载)
// app.js
import GoEasy from './static/lib/goeasy-2.13.24.esm.min';
const ChatCore = require('./utils/chat-core');
import { check } from './utils/phone-auth';
import { getPrimaryRole, lockPrimaryRole, migrateLegacyCenterRole, PRIMARY_DEFAULT_PAGES } from './utils/primary-role';
// ===== 三端固定首页(与 custom-tab-bar 一致) =====
// 三端固定首页
const roleDefaultPage = PRIMARY_DEFAULT_PAGES;
App({
@@ -163,20 +162,20 @@ App({
primaryRole: 'normal'
},
// ========== 核心启动流程 ==========
// 核心启动流程
async onLaunch() {
// ---------- ① 立即隐藏返回首页按钮 ----------
// 隐藏返回首页按钮
wx.hideHomeButton();
wx.onAppRoute((res) => {
wx.hideHomeButton();
const path = (res && res.path) || '';
if (path === 'pages/guanshiduan/guanshiduan' || path === 'pages/zuzhangduan/zuzhangduan') {
if (path === 'pages/manager/manager' || path === 'pages/leader/leader') {
migrateLegacyCenterRole(this);
lockPrimaryRole('dashou', this);
}
});
// ---------- ② 恢复主端并跳转(旧管事/组长标识自动归打手端) ----------
// ② 恢复主端并跳转
migrateLegacyCenterRole(this);
const savedRole = getPrimaryRole(this);
lockPrimaryRole(savedRole, this);
@@ -188,18 +187,18 @@ App({
}, 0);
}
// ---------- ③ 立刻应用本地缓存配置 ----------
// ③ 应用本地缓存配置
const cachedConfig = this.readConfigFromStorage();
if (cachedConfig) {
this.applyDynamicConfig(cachedConfig);
}
// ---------- ④ 初始化基础设施 ----------
// ④ 初始化
this.initGoEasyWithConfig(); // 只有appkey有效时才真正初始化
ChatCore.initGlobalMessageSystem(this);
this.initCurrentUser();
// ---------- ⑤ 建立连接 ----------
// ⑤ 建立连接
const saved = this.getSavedConnection();
console.log('【启动】缓存身份:', saved ? saved.identityType : '无',
'userId:', saved ? saved.userId : '无');
@@ -208,7 +207,7 @@ App({
else if (this.ensureConnection) this.ensureConnection();
}, 300);
// ---------- ⑥ 后台静默获取最新配置 ----------
// ⑥ 获取远程配置
this.fetchConfigSafely()
.then(latestConfig => {
this.saveConfigToStorage(latestConfig);
@@ -223,7 +222,7 @@ App({
console.warn('远程配置获取失败,继续使用本地缓存', err);
});
// ---------- ⑦ 手机号认证检查 ----------
// ⑦ 手机号认证检查
try {
const needAuth = await check();
if (needAuth) {
@@ -233,7 +232,7 @@ App({
} catch (e) {}
},
// ========== 连接管理方法 ==========
// 连接管理方法
getSavedConnection() {
try {
const saved = wx.getStorageSync(
@@ -245,7 +244,7 @@ App({
}
},
// ========== 配置缓存读写 ==========
// 配置缓存读写
CONFIG_CACHE_KEY: 'app_dynamic_config',
readConfigFromStorage() {
@@ -266,7 +265,7 @@ App({
} catch (e) {}
},
// ========== 安全获取远程配置(永不报错) ==========
// 获取远程配置
fetchConfigSafely() {
return new Promise((resolve) => {
wx.request({
@@ -289,7 +288,7 @@ App({
});
},
// ========== 原有方法(保留,仅增强) ==========
// 获取远程配置
fetchDynamicConfig() {
return new Promise((resolve, reject) => {
wx.request({
@@ -340,7 +339,7 @@ App({
}
},
// 🔥 关键修复:只在有效 appkey 时初始化,且避免重复初始化
// 在有效 appkey 时初始化
initGoEasyWithConfig() {
const cfg = this.globalData.goEasyConfig;
if (!cfg || !cfg.appkey) {
@@ -348,7 +347,7 @@ App({
return;
}
// 如果已经初始化过,就不再重复创建实例
// 避免重复初始化
if (wx.goEasy && wx.GoEasy) {
console.log('GoEasy 已初始化,跳过');
return;
@@ -389,7 +388,7 @@ App({
}
},
/** 切换当前角色并通知 custom-tab-bar 立即刷新Storage + globalData + 事件) */
/** 切换角色并通知刷新 */
setCurrentRole(role) {
if (!role) return;
this.globalData.currentRole = role;

116
app.json
View File

@@ -1,68 +1,68 @@
{
"pages": [
"pages/index/index",
"pages/fenlei/fenlei",
"pages/xuanren/xuanren",
"pages/xiaoxi/xiaoxi",
"pages/wode/wode",
"pages/shangpinxiangqing/shangpinxiangqing",
"pages/tijiao/tijiao",
"pages/xiugai/xiugai",
"pages/dashouduan/dashouduan",
"pages/shangjiaduan/shangjiaduan",
"pages/guanshiduan/guanshiduan",
"pages/dingdan/dingdan",
"pages/dingdanxiangqing/dingdanxiangqing",
"pages/dashouguize/dashouguize",
"pages/dashouxiugai/dashouxiugai",
"pages/dashoupaihang/dashoupaihang",
"pages/dashouchongzhi/dashouchongzhi",
"pages/dashouxiaoxi/dashouxiaoxi",
"pages/dashoudingdan/dashoudingdan",
"pages/jiedan/jiedan",
"pages/tixian/tixian",
"pages/yaoqingdashou/yaoqingdashou",
"pages/wodedashou/wodedashou",
"pages/czjilu/czjilu",
"pages/guanshipaihang/guanshipaihang",
"pages/sjpaidan/sjpaidan",
"pages/sjdingdan/sjdingdan",
"pages/sjxiaoxi/sjxiaoxi",
"pages/sjpaihang/sjpaihang",
"pages/sjchongzhi/sjchongzhi",
"pages/sjddxq/sjddxq",
"pages/dsddxq/dsddxq",
"pages/liaotian/liaotian",
"pages/jisufd/jisufd",
"pages/jiedanchi/jiedanchi",
"pages/haibao/haibao",
"pages/jinpaids/jinpaids",
"pages/zuzhangduan/zuzhangduan",
"pages/guanzhual/guanzhual",
"pages/zzfhjilu/zzfhjilu",
"pages/yqguanshi/yqguanshi",
"pages/jiedanchi2/jiedanchi2",
"pages/qunliaotian/qunliaotian",
"pages/kefuliaotian/kefuliaotian",
"pages/renzheng/renzheng",
"pages/category/category",
"pages/pick-user/pick-user",
"pages/messages/messages",
"pages/mine/mine",
"pages/product-detail/product-detail",
"pages/submit/submit",
"pages/edit/edit",
"pages/fighter/fighter",
"pages/merchant/merchant",
"pages/manager/manager",
"pages/orders/orders",
"pages/order-detail/order-detail",
"pages/fighter-rules/fighter-rules",
"pages/fighter-edit/fighter-edit",
"pages/fighter-rank/fighter-rank",
"pages/fighter-recharge/fighter-recharge",
"pages/fighter-msg/fighter-msg",
"pages/fighter-orders/fighter-orders",
"pages/accept-order/accept-order",
"pages/withdraw/withdraw",
"pages/invite-fighter/invite-fighter",
"pages/my-fighter/my-fighter",
"pages/recharge-log/recharge-log",
"pages/manager-rank/manager-rank",
"pages/merchant-dispatch/merchant-dispatch",
"pages/merchant-orders/merchant-orders",
"pages/merchant-msg/merchant-msg",
"pages/merchant-rank/merchant-rank",
"pages/merchant-recharge/merchant-recharge",
"pages/merchant-order-detail/merchant-order-detail",
"pages/fighter-order-detail/fighter-order-detail",
"pages/chat/chat",
"pages/express-order/express-order",
"pages/order-pool/order-pool",
"pages/poster/poster",
"pages/gold-fighter/gold-fighter",
"pages/leader/leader",
"pages/manager-assign/manager-assign",
"pages/leader-bonus-log/leader-bonus-log",
"pages/invite-manager/invite-manager",
"pages/order-pool2/order-pool2",
"pages/group-chat/group-chat",
"pages/cs-chat/cs-chat",
"pages/verify/verify",
"components/global-notification/global-notification",
"components/popup-notice/popup-notice",
"components/order-card/order-card",
"components/order-sender/order-sender",
"pages/cfss/cfss/cfss",
"pages/cfss/components/fakuan-list/fakuan-list",
"pages/cfss/components/jifen-list/jifen-list",
"pages/cfss/components/fakuan-pay/fakuan-pay",
"pages/penalty/penalty/penalty",
"pages/penalty/components/fakuan-list/fakuan-list",
"pages/penalty/components/jifen-list/jifen-list",
"pages/penalty/components/fakuan-pay/fakuan-pay",
"pages/phone-auth/phone-auth",
"components/chenghao-tag/chenghao-tag",
"pages/kaoheguan/kaoheguan",
"pages/kaohe_dafen/kaohe_dafen",
"pages/kaohe_jilu/kaohe_jilu",
"pages/kaohe_zhongxin/kaohe_zhongxin",
"pages/kaohe_jinpai/kaohe_jinpai",
"pages/peihuDingdan/peihuDingdan",
"pages/tixian/components/mode1/mode1",
"pages/tixian/components/mode2/mode2"
"pages/assessor/assessor",
"pages/assess-score/assess-score",
"pages/assess-log/assess-log",
"pages/assess-center/assess-center",
"pages/assess-gold/assess-gold",
"pages/escort-orders/escort-orders",
"pages/withdraw/components/mode1/mode1",
"pages/withdraw/components/mode2/mode2"
],
@@ -85,13 +85,13 @@
{
"pagePath": "pages/jiedanchi/jiedanchi",
"pagePath": "pages/order-pool/order-pool",
"text": "接单池",
"iconPath": "/images/jiedanchi.png",
"selectedIconPath": "/images/jiedanchi.png"
},
{
"pagePath": "pages/jiedanchi2/jiedanchi2",
"pagePath": "pages/order-pool2/order-pool2",
"text": "接单池",
"iconPath": "/images/jiedanchi.png",
"selectedIconPath": "/images/jiedanchi.png"

891
app.wxss
View File

@@ -1,10 +1,889 @@
/**app.wxss**/
.container {
height: 100%;
/* app.wxss — 全局共享样式 */
/* ========== CSS 变量 ========== */
page {
--color-price: #ff4444;
--color-text-main: #333;
--color-text-gray: #999;
--color-border-light: #f0f0f0;
--bg-white: #ffffff;
--bg-gray-hover: #f5f5f5;
--radius-lg: 30rpx;
--radius-normal: 25rpx;
--radius-full: 50%;
--padding-base: 40rpx;
--shadow-modal: 0 20rpx 60rpx rgba(0, 0, 0, 0.2);
box-sizing: border-box;
}
/* ========== 动画 ========== */
@keyframes spin {
to { transform: rotate(360deg); }
}
@keyframes pulse {
0%, 100% { opacity: 0.8; transform: scale(1); }
50% { opacity: 1; transform: scale(1.2); }
}
@keyframes modalShow {
from { opacity: 0; transform: scale(0.9); }
to { opacity: 1; transform: scale(1); }
}
@keyframes marquee {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
@keyframes slideUp {
from { transform: translateY(100%); }
to { transform: translateY(0); }
}
@keyframes slideDown {
from { transform: translateY(0); }
to { transform: translateY(100%); }
}
/* ========== 加载提示 ========== */
.loading-toast {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(10px);
padding: 30rpx 50rpx;
border-radius: var(--radius-normal);
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 200rpx 0;
box-sizing: border-box;
z-index: 999;
}
.loading-spinner {
width: 60rpx;
height: 60rpx;
border: 6rpx solid rgba(255, 255, 255, 0.3);
border-top-color: #fff;
border-radius: var(--radius-full);
animation: spin 1s linear infinite;
margin-bottom: 20rpx;
}
.loading-text {
font-size: 26rpx;
color: #fff;
}
/* ========== 价格组件 ========== */
.price-wrap {
color: var(--color-price);
font-weight: bold;
}
.price-icon {
font-size: 24rpx;
margin-right: 2rpx;
}
.price-integer {
font-size: 32rpx;
}
.price-decimal {
font-size: 24rpx;
}
/* ========== 弹窗基础 ========== */
.modal-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(5px);
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
}
.modal-content {
width: 600rpx;
background: var(--bg-white);
border-radius: var(--radius-lg);
overflow: hidden;
box-shadow: var(--shadow-modal);
z-index: 1001;
animation: modalShow 0.3s ease-out;
}
.modal-header {
padding: var(--padding-base);
border-bottom: 2rpx solid var(--color-border-light);
display: flex;
justify-content: space-between;
align-items: center;
}
.modal-title {
font-size: 32rpx;
font-weight: bold;
color: var(--color-text-main);
}
.modal-close {
font-size: 40rpx;
color: var(--color-text-gray);
width: 60rpx;
height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: var(--radius-full);
flex-shrink: 0;
}
.modal-close:active {
background: var(--bg-gray-hover);
}
.modal-body {
max-height: 600rpx;
padding: var(--padding-base);
overflow-y: auto;
}
.modal-text {
font-size: 28rpx;
color: var(--color-text-main);
line-height: 1.6;
white-space: normal;
word-break: break-word;
}
/* ========== Flex 工具类 ========== */
.flex-center {
display: flex;
align-items: center;
justify-content: center;
}
.flex-between {
display: flex;
align-items: center;
justify-content: space-between;
}
.flex-column {
display: flex;
flex-direction: column;
}
.flex-column-center {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.flex-1 {
flex: 1;
min-width: 0;
}
.flex-shrink-0 {
flex-shrink: 0;
}
.flex-wrap {
flex-wrap: wrap;
}
/* ========== 文本工具类 ========== */
.text-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.text-ellipsis-2 {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}
.text-ellipsis-3 {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
text-overflow: ellipsis;
}
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.text-bold {
font-weight: bold;
}
.text-gray {
color: var(--color-text-gray);
}
.text-main {
color: var(--color-text-main);
}
/* ========== 安全区域 ========== */
.safe-bottom {
padding-bottom: env(safe-area-inset-bottom);
}
.safe-bottom-fixed {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding-bottom: env(safe-area-inset-bottom);
}
/* ========== 通用卡片 ========== */
.card {
background: var(--bg-white);
border-radius: var(--radius-lg);
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
overflow: hidden;
}
.card-padding {
padding: var(--padding-base);
}
/* ========== 毛玻璃 ========== */
.glass {
background: rgba(255, 255, 255, 0.72);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
}
.glass-dark {
background: rgba(0, 0, 0, 0.55);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
}
/* ========== 圆形头像 ========== */
.avatar-circle {
border-radius: var(--radius-full);
border: 2rpx solid #fff;
object-fit: cover;
flex-shrink: 0;
}
.avatar-sm {
width: 64rpx;
height: 64rpx;
}
.avatar-md {
width: 88rpx;
height: 88rpx;
}
.avatar-lg {
width: 120rpx;
height: 120rpx;
}
/* ========== 红点/角标 ========== */
.badge-dot {
position: absolute;
top: -6rpx;
right: -6rpx;
width: 16rpx;
height: 16rpx;
background: #fa5151;
border-radius: var(--radius-full);
border: 2rpx solid #fff;
}
.badge-num {
position: absolute;
top: -10rpx;
right: -10rpx;
min-width: 32rpx;
height: 32rpx;
line-height: 32rpx;
padding: 0 8rpx;
background: #fa5151;
color: #fff;
font-size: 20rpx;
font-weight: 600;
border-radius: 16rpx;
text-align: center;
border: 2rpx solid #fff;
}
/* ========== 空状态 ========== */
.empty-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 120rpx 40rpx;
}
.empty-icon {
width: 200rpx;
height: 200rpx;
margin-bottom: 30rpx;
opacity: 0.5;
}
.empty-text {
font-size: 30rpx;
color: var(--color-text-gray);
margin-bottom: 10rpx;
}
.empty-subtext {
font-size: 26rpx;
color: #ccc;
}
/* ========== 分割线 ========== */
.divider {
height: 2rpx;
background: var(--color-border-light);
margin: 20rpx 0;
}
.divider-light {
height: 1rpx;
background: rgba(0, 0, 0, 0.04);
margin: 16rpx 0;
}
.divider-gradient {
height: 2rpx;
background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1), transparent);
margin: 20rpx 0;
}
/* ========== 固定底部按钮区 ========== */
.fixed-bottom {
position: fixed;
left: 0;
right: 0;
bottom: 0;
padding: 20rpx 30rpx;
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
background: linear-gradient(transparent, rgba(255, 255, 255, 0.95) 30%);
z-index: 100;
}
/* ========== 列表项 ========== */
.list-item {
display: flex;
align-items: center;
padding: 24rpx 28rpx;
border-bottom: 1rpx solid rgba(0, 0, 0, 0.04);
}
.list-item:last-child {
border-bottom: none;
}
.list-icon {
width: 36rpx;
height: 36rpx;
margin-right: 16rpx;
flex-shrink: 0;
}
.list-text {
flex: 1;
font-size: 28rpx;
color: var(--color-text-main);
}
.list-arrow {
width: 20rpx;
height: 20rpx;
opacity: 0.4;
flex-shrink: 0;
}
/* ========== 标签 ========== */
.tag {
display: inline-flex;
align-items: center;
padding: 4rpx 14rpx;
border-radius: 999rpx;
font-size: 20rpx;
font-weight: 600;
line-height: 1.4;
}
.tag-primary {
background: rgba(64, 156, 255, 0.1);
color: #409cff;
}
.tag-success {
background: rgba(82, 196, 26, 0.1);
color: #52c41a;
}
.tag-warning {
background: rgba(250, 173, 20, 0.1);
color: #faad14;
}
.tag-danger {
background: rgba(255, 77, 79, 0.1);
color: #ff4d4f;
}
.tag-gold {
background: rgba(201, 169, 98, 0.1);
color: #C9A962;
}
/* ========== 页面容器 ========== */
.page-container {
min-height: 100vh;
position: relative;
}
.page-bg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
pointer-events: none;
}
/* ========== 按钮 ========== */
.btn {
display: flex;
align-items: center;
justify-content: center;
border-radius: 48rpx;
font-weight: 600;
text-align: center;
border: none;
position: relative;
overflow: hidden;
transition: all 0.2s ease;
}
.btn:active {
transform: scale(0.98);
}
/* 主按钮(全宽) */
.btn-primary {
width: 100%;
height: 96rpx;
line-height: 96rpx;
font-size: 34rpx;
color: #fff;
}
.btn-primary--gold {
background: linear-gradient(135deg, #C9A962, #D4B56A);
box-shadow: 0 8rpx 20rpx rgba(201, 169, 98, 0.3);
}
.btn-primary--green {
background: linear-gradient(135deg, #52c41a, #389e0d);
box-shadow: 0 8rpx 20rpx rgba(82, 196, 26, 0.3);
}
.btn-primary--blue {
background: linear-gradient(135deg, #409cff, #3080e0);
box-shadow: 0 8rpx 20rpx rgba(64, 156, 255, 0.3);
}
.btn-primary--orange {
background: linear-gradient(135deg, #ffb347, #ff8c1a);
box-shadow: 0 8rpx 20rpx rgba(255, 140, 26, 0.3);
}
.btn-primary--purple {
background: linear-gradient(135deg, #6a11cb, #2575fc);
box-shadow: 0 8rpx 20rpx rgba(106, 17, 203, 0.3);
}
.btn-primary--red {
background: linear-gradient(135deg, #ff4d4f, #cf1322);
box-shadow: 0 8rpx 20rpx rgba(255, 77, 79, 0.3);
}
/* 次要按钮 */
.btn-secondary {
background: rgba(0, 0, 0, 0.04);
color: var(--color-text-main);
font-size: 28rpx;
padding: 16rpx 32rpx;
}
.btn-secondary:active {
background: rgba(0, 0, 0, 0.08);
}
/* 小型按钮 */
.btn-sm {
padding: 14rpx 32rpx;
font-size: 26rpx;
color: #fff;
border-radius: 40rpx;
}
.btn-sm--gold {
background: linear-gradient(135deg, #ffcc00, #ffaa00);
box-shadow: 0 6rpx 16rpx rgba(255, 170, 0, 0.3);
}
.btn-sm--green {
background: linear-gradient(135deg, #52c41a, #389e0d);
box-shadow: 0 6rpx 16rpx rgba(82, 196, 26, 0.3);
}
.btn-sm--blue {
background: linear-gradient(135deg, #409cff, #3080e0);
box-shadow: 0 6rpx 16rpx rgba(64, 156, 255, 0.3);
}
.btn-sm--red {
background: linear-gradient(135deg, #ff4d4f, #cf1322);
box-shadow: 0 6rpx 16rpx rgba(255, 77, 79, 0.3);
}
.btn-sm--dark {
background: linear-gradient(135deg, #3d4f66, #2c3e50);
box-shadow: 0 6rpx 16rpx rgba(44, 62, 80, 0.3);
}
/* 幽灵按钮(描边) */
.btn-ghost {
background: transparent;
border: 2rpx solid currentColor;
padding: 14rpx 32rpx;
font-size: 26rpx;
font-weight: 600;
}
.btn-ghost--primary {
color: #409cff;
border-color: #409cff;
}
.btn-ghost--gold {
color: #C9A962;
border-color: #C9A962;
}
/* 禁用状态 */
.btn[disabled],
.btn-disabled {
opacity: 0.5;
pointer-events: none;
}
/* ========== 输入框 ========== */
.input-rounded {
width: 100%;
height: 88rpx;
background: #fff;
border-radius: 44rpx;
padding: 0 32rpx;
font-size: 28rpx;
color: var(--color-text-main);
box-sizing: border-box;
border: none;
}
.input-rounded--dark {
background: rgba(255, 255, 255, 0.15);
color: #fff;
border: 1rpx solid rgba(255, 255, 255, 0.3);
}
.input-rounded--dark::placeholder {
color: rgba(255, 255, 255, 0.5);
}
.input-inline {
flex: 1;
font-size: 32rpx;
color: var(--color-text-main);
height: 50rpx;
line-height: 50rpx;
border: none;
background: transparent;
}
.input-box {
background: #F7F3ED;
border-radius: 24rpx;
padding: 0 24rpx;
}
/* ========== 搜索框 ========== */
.search-box {
display: flex;
align-items: center;
background: #f0f0f0;
border-radius: 40rpx;
padding: 0 20rpx;
height: 68rpx;
}
.search-box--glass {
background: rgba(255, 255, 255, 0.85);
backdrop-filter: blur(20px);
border: 1rpx solid rgba(255, 255, 255, 0.3);
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
height: 84rpx;
border-radius: 50rpx;
padding: 0 28rpx;
}
.search-input {
flex: 1;
height: 100%;
font-size: 28rpx;
margin-left: 10rpx;
}
.search-icon {
width: 32rpx;
height: 32rpx;
opacity: 0.5;
flex-shrink: 0;
}
/* ========== Tab 标签栏 ========== */
.tab-bar {
display: flex;
background: #fff;
border-bottom: 1rpx solid #f0f0f0;
}
.tab-item {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
padding: 24rpx 0;
position: relative;
color: #666;
font-size: 28rpx;
transition: color 0.3s;
}
.tab-item--active {
color: var(--color-price);
font-weight: 600;
}
.tab-indicator {
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 60rpx;
height: 6rpx;
background: var(--color-price);
border-radius: 3rpx;
}
/* 胶囊式 Tab */
.tab-capsule {
display: inline-flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 60rpx;
padding: 0 30rpx;
margin-right: 20rpx;
border-radius: 30rpx;
background: #f5f5f5;
color: #666;
font-size: 28rpx;
flex-shrink: 0;
transition: all 0.3s ease;
}
.tab-capsule--active {
background: #e8f5e9;
color: #2e7d32;
font-weight: 500;
box-shadow: 0 4rpx 12rpx rgba(46, 125, 50, 0.1);
}
/* ========== 加载遮罩 ========== */
.loading-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
.loading-mask--dark {
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(10px);
}
.loading-mask--light {
background: rgba(255, 255, 255, 0.85);
}
/* 旋转器尺寸变体 */
.spinner {
border-radius: var(--radius-full);
animation: spin 0.8s linear infinite;
}
.spinner--sm {
width: 40rpx;
height: 40rpx;
border: 3rpx solid rgba(0, 0, 0, 0.08);
border-top-color: var(--color-text-main);
}
.spinner--md {
width: 60rpx;
height: 60rpx;
border: 5rpx solid rgba(0, 0, 0, 0.08);
border-top-color: var(--color-text-main);
}
.spinner--lg {
width: 80rpx;
height: 80rpx;
border: 6rpx solid rgba(0, 0, 0, 0.08);
border-top-color: var(--color-text-main);
}
.spinner--white {
border-color: rgba(255, 255, 255, 0.3);
border-top-color: #fff;
}
/* ========== 刷新按钮 ========== */
.refresh-btn {
position: fixed;
top: 36rpx;
right: 32rpx;
width: 56rpx;
height: 56rpx;
border-radius: var(--radius-full);
display: flex;
align-items: center;
justify-content: center;
z-index: 20;
}
.refresh-btn--light {
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(12rpx);
border: 1rpx solid rgba(255, 255, 255, 0.6);
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.05);
}
.refresh-btn--dark {
background: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(10rpx);
}
.refresh-icon {
width: 28rpx;
height: 28rpx;
}
/* ========== 状态标签 ========== */
.status-tag {
display: inline-flex;
align-items: center;
padding: 6rpx 16rpx;
border-radius: 20rpx;
font-size: 24rpx;
font-weight: 500;
white-space: nowrap;
}
.status-tag--danger {
background: #fff5f5;
color: #ff6b6b;
}
.status-tag--success {
background: #f0fff0;
color: #52c41a;
}
.status-tag--warning {
background: #fffbe6;
color: #faad14;
}
.status-tag--info {
background: #e6f7ff;
color: #1890ff;
}
.status-tag--default {
background: #f5f5f5;
color: #999;
}
/* ========== 加载更多 ========== */
.load-more {
display: flex;
align-items: center;
justify-content: center;
padding: 40rpx 0;
}
.load-more-text {
font-size: 26rpx;
color: var(--color-text-gray);
}
.no-more {
text-align: center;
padding: 40rpx 0;
font-size: 26rpx;
color: #ccc;
}

View File

@@ -42,7 +42,6 @@ Component({
progressInterval: null,
positionClass: 'top',
// 滑动相关
touchStartY: 0,
touchStartX: 0,
currentY: 0,
@@ -317,20 +316,17 @@ Component({
let path = '';
let queryParam = null;
// 根据 notificationType 或消息字段判断
if (data.notificationType === 'cs' || msg.teamId) {
// 客服消息
const teamId = data.teamId || msg.teamId;
path = '/pages/kefuliaotian/kefuliaotian';
path = '/pages/cs-chat/cs-chat';
queryParam = { teamId: teamId };
} else if (data.notificationType === 'group' || msg.groupId) {
// 群聊消息
const groupId = data.groupId || msg.groupId;
const orderId = data.orderId || msg.orderId || '';
const groupName = data.groupName || '订单群聊';
const groupAvatar = data.groupAvatar || '';
const isCross = data.isCross || msg.isCross || 0;
path = '/pages/qunliaotian/qunliaotian';
path = '/pages/group-chat/group-chat';
queryParam = {
groupId,
orderId,
@@ -339,11 +335,10 @@ Component({
isCross
};
} else {
// 默认私聊
const toUserId = data.senderId || msg.senderId;
const toName = data.senderName || '用户';
const toAvatar = data.avatar || '';
path = '/pages/liaotian/liaotian';
path = '/pages/chat/chat';
queryParam = {
toUserId,
toName,
@@ -357,11 +352,11 @@ Component({
url: `${path}?data=${encoded}`,
fail: (err) => {
console.error('通知跳转失败:', err);
wx.switchTab({ url: '/pages/xiaoxi/xiaoxi' });
wx.switchTab({ url: '/pages/messages/messages' });
}
});
} else {
wx.switchTab({ url: '/pages/xiaoxi/xiaoxi' });
wx.switchTab({ url: '/pages/messages/messages' });
}
}
}

View File

@@ -18,7 +18,6 @@ Component({
isFullscreen: false,
timer: null,
// 悬浮窗相关数据
isMinimized: false,
floatX: 20,
floatY: 200,
@@ -163,7 +162,7 @@ Component({
this.setData({ muteChecked: e.detail.value.length > 0 });
},
// 🆕 替换原有的 onPreviewImage改用自定义预览不触发 onShow
// 自定义图片预览
onCustomPreview(e) {
const index = e.currentTarget.dataset.index;
const urls = this.data.processedImages.map(img => img.url);
@@ -174,7 +173,6 @@ Component({
});
},
// 🆕 关闭自定义预览
onCloseCustomPreview() {
this.setData({
showCustomPreview: false,
@@ -225,7 +223,7 @@ Component({
if (app.globalData.morentouxiang) {
avatarUrl = app.globalData.morentouxiang;
} else {
// 使用内嵌的默认头像 base64灰色圆形确保绝对显示不依赖外部图片
// 默认头像
avatarUrl = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0iI2NjY2NjYyIvPjxwYXRoIGQ9Ik01MCAyNWMtMTMuOCAwLTI1IDExLjItMjUgMjUgMCAzLjIgMS4yIDYuMSAzLjIgOC4zQzM0LjQgNzAuNyA0Mi4xIDc1IDUwIDc1czE1LjYtNC4zIDIxLjgtMTEuN0M3My44IDU2LjEgNzUgNTMuMiA3NSA1MGMwLTEzLjgtMTEuMi0yNS0yNS0yNXoiIGZpbGw9IiNmZmZmZmYiLz48L3N2Zz4=';
}
@@ -319,7 +317,7 @@ Component({
return false;
},
// 🆕 阻止事件冒泡(用于预览遮罩内部点击不关闭)
// 阻止事件冒泡
stopPropagation() {}
}
});

View File

@@ -1,6 +1,5 @@
<!-- components/popup-notice/popup-notice.wxml -->
<!-- 全屏弹窗遮罩层(完全不变) -->
<view class="popup-mask" wx:if="{{visible}}" catchtouchmove="preventMove">
<view class="popup-container {{isFullscreen ? 'fullscreen' : ''}}">
<!-- 右上角操作按钮组 -->

View File

@@ -229,7 +229,7 @@
transform: translateZ(0);
}
/* 以下原有 movable-view 相关样式已弃用,但保留以维持代码完整(用户要求不删代码) */
/* 弃用样式 */
.floating-area {
display: none;
}

View File

@@ -7,26 +7,26 @@ const roleCfg = {
name: '点单老板',
tabList: [
{ pagePath: 'pages/index/index', text: '商城', iconPath: '/images/zhuye.png', selectedIconPath: '/images/zhuye.png' },
{ pagePath: 'pages/fenlei/fenlei', text: '分类', iconPath: '/images/fenlei.png', selectedIconPath: '/images/fenlei.png' },
{ pagePath: 'pages/xiaoxi/xiaoxi', text: '消息', iconPath: '/images/xiaoxi.png', selectedIconPath: '/images/xiaoxi.png' },
{ pagePath: 'pages/wode/wode', text: '我的', iconPath: '/images/wode.png', selectedIconPath: '/images/wode.png' },
{ pagePath: 'pages/category/category', text: '分类', iconPath: '/images/fenlei.png', selectedIconPath: '/images/fenlei.png' },
{ pagePath: 'pages/messages/messages', text: '消息', iconPath: '/images/xiaoxi.png', selectedIconPath: '/images/xiaoxi.png' },
{ pagePath: 'pages/mine/mine', text: '我的', iconPath: '/images/wode.png', selectedIconPath: '/images/wode.png' },
],
},
dashou: {
name: '打手',
tabList: [
{ pagePath: 'pages/jiedan/jiedan', text: '接单池', iconPath: '/images/jiedanchi.png', selectedIconPath: '/images/jiedanchi.png' },
{ pagePath: 'pages/dashoudingdan/dashoudingdan', text: '订单', iconPath: '/images/dingdan.png', selectedIconPath: '/images/dingdan.png' },
{ pagePath: 'pages/xiaoxi/xiaoxi', text: '消息', iconPath: '/images/xiaoxi.png', selectedIconPath: '/images/xiaoxi.png' },
{ pagePath: 'pages/dashouduan/dashouduan', text: '我的', iconPath: '/images/wode.png', selectedIconPath: '/images/wode.png' },
{ pagePath: 'pages/accept-order/accept-order', text: '接单池', iconPath: '/images/jiedanchi.png', selectedIconPath: '/images/jiedanchi.png' },
{ pagePath: 'pages/fighter-orders/fighter-orders', text: '订单', iconPath: '/images/dingdan.png', selectedIconPath: '/images/dingdan.png' },
{ pagePath: 'pages/messages/messages', text: '消息', iconPath: '/images/xiaoxi.png', selectedIconPath: '/images/xiaoxi.png' },
{ pagePath: 'pages/fighter/fighter', text: '我的', iconPath: '/images/wode.png', selectedIconPath: '/images/wode.png' },
],
},
shangjia: {
name: '商家',
tabList: [
{ pagePath: 'pages/sjdingdan/sjdingdan', text: '订单', iconPath: '/images/dingdan.png', selectedIconPath: '/images/dingdan.png' },
{ pagePath: 'pages/xiaoxi/xiaoxi', text: '消息', iconPath: '/images/xiaoxi.png', selectedIconPath: '/images/xiaoxi.png' },
{ pagePath: 'pages/shangjiaduan/shangjiaduan', text: '我的', iconPath: '/images/wode.png', selectedIconPath: '/images/wode.png' },
{ pagePath: 'pages/merchant-orders/merchant-orders', text: '订单', iconPath: '/images/dingdan.png', selectedIconPath: '/images/dingdan.png' },
{ pagePath: 'pages/messages/messages', text: '消息', iconPath: '/images/xiaoxi.png', selectedIconPath: '/images/xiaoxi.png' },
{ pagePath: 'pages/merchant/merchant', text: '我的', iconPath: '/images/wode.png', selectedIconPath: '/images/wode.png' },
],
},
};

View File

@@ -8,7 +8,7 @@
data-index="{{index}}"
catchtap="switchTab"
>
<view class="badge-container" wx:if="{{item.pagePath === 'pages/xiaoxi/xiaoxi' && badgeText}}">
<view class="badge-container" wx:if="{{item.pagePath === 'pages/messages/messages' && badgeText}}">
<view class="tab-badge">{{badgeText}}</view>
</view>
<image

View File

@@ -364,7 +364,7 @@ Page({
// 跳转到充值页面(原封不动)
goToChongzhiPage(failureType, huiyuanId = null, requiredYajin = 0) {
let url = '/pages/dashouchongzhi/dashouchongzhi';
let url = '/pages/fighter-recharge/fighter-recharge';
let params = {};
switch (failureType) {

View File

@@ -193,7 +193,7 @@ Page({
success: (modalRes) => {
if (modalRes.confirm) {
wx.navigateTo({
url: '/pages/kaohe_dafen/kaohe_dafen?jilu_id=' + jiluId
url: '/pages/assess-score/assess-score?jilu_id=' + jiluId
});
}
}

View File

@@ -245,7 +245,6 @@
animation: spin 0.8s linear infinite;
margin-bottom: 20rpx;
}
@keyframes spin { to { transform: rotate(360deg); } }
/* 弹窗 */
.modal-mask {

View File

@@ -1,4 +1,4 @@
// pages/kaohe_jinpai/kaohe_jinpai.js
// pages/assess-gold/assess-gold.js
const app = getApp();
import request from '../../utils/request.js';
@@ -433,7 +433,7 @@ Page({
toAvatar: fullAvatar
};
wx.navigateTo({
url: '/pages/liaotian/liaotian?data=' + encodeURIComponent(JSON.stringify(param)),
url: '/pages/chat/chat?data=' + encodeURIComponent(JSON.stringify(param)),
fail: (err) => {
wx.showToast({ title: '打开聊天失败', icon: 'none' });
}

View File

@@ -1,4 +1,4 @@
<!-- pages/kaohe_jinpai/kaohe_jinpai.wxml -->
<!-- pages/assess-gold/assess-gold.wxml -->
<view class="page-root">
<!-- 顶部Tab切换 -->
<view class="tab-bar">

View File

@@ -1,4 +1,4 @@
/* pages/kaohe_jinpai/kaohe_jinpai.wxss - 晨雾微光风格 */
/* pages/assess-gold/assess-gold.wxss - 晨雾微光风格 */
.page-root {
min-height: 100vh;
background: linear-gradient(135deg, #F5F7FA 0%, #E4E8F0 100%);

View File

@@ -1,4 +1,4 @@
// pages/kaohe_jilu/kaohe_jilu.js
// pages/assess-log/assess-log.js
const app = getApp();
import request from '../../utils/request.js';
@@ -141,7 +141,7 @@ Page({
goJudge(e) {
const item = e.currentTarget.dataset.item;
if (!item) return;
wx.navigateTo({ url: '/pages/kaohe_dafen/kaohe_dafen?jilu_id=' + item.jilu_id });
wx.navigateTo({ url: '/pages/assess-score/assess-score?jilu_id=' + item.jilu_id });
},
// 阻止冒泡

View File

@@ -1,4 +1,4 @@
<!-- pages/kaohe_jilu/kaohe_jilu.wxml -->
<!-- pages/assess-log/assess-log.wxml -->
<view class="page-root">
<!-- 顶部筛选区 -->
<view class="filter-bar">

View File

@@ -1,4 +1,4 @@
/* pages/kaohe_jilu/kaohe_jilu.wxss - 晨露微光风格(左右均等边距) */
/* pages/assess-log/assess-log.wxss - 晨露微光风格(左右均等边距) */
page {
background: linear-gradient(135deg, #FDFBF7 0%, #F2EFE9 100%);
color: #4A4A4A;
@@ -260,4 +260,3 @@ page {
animation: spin 0.8s linear infinite;
margin-bottom: 20rpx;
}
@keyframes spin { to { transform: rotate(360deg); } }

View File

@@ -1,4 +1,4 @@
// pages/kaohe_dafen/kaohe_dafen.js
// pages/assess-score/assess-score.js
const app = getApp();
import request from '../../utils/request.js';
import { openPrivateChat, buildDashouPeerId } from '../../utils/im-user.js';

View File

@@ -1,4 +1,4 @@
<!-- pages/kaohe_dafen/kaohe_dafen.wxml -->
<!-- pages/assess-score/assess-score.wxml -->
<view class="root-page">
<view class="scroll-container" scroll-y="true" bindscrolltolower="onReachBottom">
<view class="list">

View File

@@ -1,4 +1,4 @@
// pages/kaoheguan/kaoheguan.js
// pages/assessor/assessor.js
// 只新增了两个字段的接收,其余所有代码未变
import request from '../../utils/request.js';
import {
@@ -48,7 +48,7 @@ Page({
_planetTimers: {},
onLoad() {
wx.redirectTo({ url: '/pages/dashouduan/dashouduan' });
wx.redirectTo({ url: '/pages/fighter/fighter' });
return;
const ossUrl = app.globalData.ossImageUrl || '';
const iconBase = 'beijing/kaohe/';
@@ -191,12 +191,12 @@ Page({
goToWithdraw() {
const yue = this.data.kaoheData.yue || 0;
wx.navigateTo({
url: `/pages/tixian/tixian?amount=${yue}&from=kaoheguan`
url: `/pages/withdraw/withdraw?amount=${yue}&from=kaoheguan`
});
},
goToDafen() { wx.navigateTo({ url: '/pages/kaohe_dafen/kaohe_dafen' }); },
goToJilu() { wx.navigateTo({ url: '/pages/kaohe_jilu/kaohe_jilu' }); },
goToZhongxin() { wx.navigateTo({ url: '/pages/kaohe_zhongxin/kaohe_zhongxin' }); },
goToDafen() { wx.navigateTo({ url: '/pages/assess-score/assess-score' }); },
goToJilu() { wx.navigateTo({ url: '/pages/assess-log/assess-log' }); },
goToZhongxin() { wx.navigateTo({ url: '/pages/assess-center/assess-center' }); },
onPlanetTouch(e) {
const id = e.currentTarget.dataset.id;

View File

@@ -1,4 +1,4 @@
<!-- pages/kaoheguan/kaoheguan.wxml -->
<!-- pages/assessor/assessor.wxml -->
<view class="universe-root">
<!-- 全屏弱化背景图 -->
<image class="full-bg" src="{{icons.bgImage}}" mode="aspectFill" />

View File

@@ -1,4 +1,4 @@
/* pages/kaoheguan/kaoheguan.wxss — 完整版:适度背景 + 整体下移 */
/* pages/assessor/assessor.wxss — 完整版:适度背景 + 整体下移 */
page {
background: #0a0c14;

View File

@@ -1,80 +1,52 @@
// pages/fenlei/fenlei.js
// pages/category/category.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
// 全局变量引用
ossImageUrl: '',
// 搜索相关
searchText: '',
showSearchResult: false,
searchResults: [],
isSearching: false,
// 页面数据
shangpinleixing: [],
shangpinzhuanqu: [],
shangpinliebiao: [],
// 状态控制
selectedLeixingId: null,
selectedZhuanquId: null,
filteredZhuanquList: [], // 当前类型下的专区列表
filteredShangpinList: [], // 当前专区下的商品列表
zhuanquByLeixing: {}, // 类型->专区映射对象
shangpinByZhuanqu: {}, // 专区->商品映射对象
zhuanquGoodsCount: {}, // 专区商品数量统计
// UI状态
filteredZhuanquList: [],
filteredShangpinList: [],
zhuanquByLeixing: {},
shangpinByZhuanqu: {},
zhuanquGoodsCount: {},
isLoading: false,
hasInitialized: false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
// 获取全局变量
this.setData({
ossImageUrl: app.globalData.ossImageUrl
})
// 初始化数据
this.initPageData()
},
onShow() {
// 原有代码...
// 🆕 注册通知组件
this.registerNotificationComponent();
},
},
// 🆕 新增:注册通知组件
registerNotificationComponent() {
registerNotificationComponent() {
const app = getApp();
const notificationComp = this.selectComponent('#global-notification');
if (notificationComp && notificationComp.showNotification) {
console.log('🏪 商城页面注册通知组件');
app.globalData.globalNotification = {
show: (data) => notificationComp.showNotification(data),
hide: () => notificationComp.hideNotification()
};
}
},
},
/**
* 初始化页面数据
*/
initPageData() {
const that = this
this.setData({ isLoading: true })
// 检查全局变量是否已有数据
if (app.globalData.shangpinleixing && app.globalData.shangpinleixing.length > 0) {
this.initFromGlobalData()
} else {
@@ -82,20 +54,15 @@ registerNotificationComponent() {
}
},
/**
* 从全局变量初始化数据
*/
initFromGlobalData() {
const leixingList = app.globalData.shangpinleixing || []
const zhuanquList = app.globalData.shangpinzhuanqu || []
const shangpinList = app.globalData.shangpinliebiao || []
// 构建映射关系对象
const zhuanquByLeixing = {}
const shangpinByZhuanqu = {}
const zhuanquGoodsCount = {}
// 1. 构建专区映射 (按类型分组)
zhuanquList.forEach(zhuanqu => {
const leixingId = zhuanqu.leixing_id
if (!zhuanquByLeixing[leixingId]) {
@@ -104,7 +71,6 @@ registerNotificationComponent() {
zhuanquByLeixing[leixingId].push(zhuanqu)
})
// 2. 构建商品映射 (按专区分组)并统计数量
shangpinList.forEach(shangpin => {
const zhuanquId = shangpin.zhuanqu_id
if (zhuanquId) {
@@ -112,17 +78,13 @@ registerNotificationComponent() {
shangpinByZhuanqu[zhuanquId] = []
zhuanquGoodsCount[zhuanquId] = 0
}
// 处理价格显示
const jiage = parseFloat(shangpin.jiage) || 0
const priceInteger = Math.floor(jiage)
let priceDecimal = '00'
const decimalPart = (jiage - priceInteger).toFixed(2)
if (decimalPart > 0) {
priceDecimal = decimalPart.toString().split('.')[1]
}
shangpinByZhuanqu[zhuanquId].push({
id: shangpin.id,
biaoqian: shangpin.biaoqian,
@@ -132,15 +94,12 @@ registerNotificationComponent() {
tupian_url: shangpin.tupian_url,
duiwai_xiaoliang: shangpin.duiwai_xiaoliang || 0
})
zhuanquGoodsCount[zhuanquId] += 1
}
})
// 设置初始选中状态(第一个类型和第一个专区)
const firstLeixing = leixingList[0]
let firstZhuanquId = null
if (firstLeixing && zhuanquByLeixing[firstLeixing.id]) {
firstZhuanquId = zhuanquByLeixing[firstLeixing.id][0]?.id || null
}
@@ -155,15 +114,11 @@ registerNotificationComponent() {
selectedLeixingId: firstLeixing?.id || null,
selectedZhuanquId: firstZhuanquId
}, () => {
// 筛选数据
this.filterData()
this.setData({ isLoading: false, hasInitialized: true })
})
},
/**
* 加载所有商品数据
*/
loadAllShangpinData() {
const that = this
wx.request({
@@ -175,13 +130,9 @@ registerNotificationComponent() {
success(res) {
if (res.statusCode === 200 && res.data) {
const data = res.data
// 存储到全局变量
app.globalData.shangpinleixing = data.shangpinleixing || []
app.globalData.shangpinzhuanqu = data.shangpinzhuanqu || []
app.globalData.shangpinliebiao = data.shangpinliebiao || []
// 从全局变量初始化
that.initFromGlobalData()
} else {
that.handleLoadError()
@@ -194,9 +145,6 @@ registerNotificationComponent() {
})
},
/**
* 处理加载错误
*/
handleLoadError() {
wx.showToast({
title: '加载失败,请重试',
@@ -205,46 +153,30 @@ registerNotificationComponent() {
this.setData({ isLoading: false })
},
/**
* 筛选数据
*/
filterData() {
const { selectedLeixingId, selectedZhuanquId, zhuanquByLeixing, shangpinByZhuanqu } = this.data
// 1. 筛选专区列表
const filteredZhuanquList = zhuanquByLeixing[selectedLeixingId] || []
// 2. 筛选商品列表
let filteredShangpinList = []
if (selectedZhuanquId) {
filteredShangpinList = shangpinByZhuanqu[selectedZhuanquId] || []
} else if (filteredZhuanquList.length > 0) {
// 如果没有选中的专区,默认显示第一个专区的商品
const firstZhuanquId = filteredZhuanquList[0].id
filteredShangpinList = shangpinByZhuanqu[firstZhuanquId] || []
this.setData({ selectedZhuanquId: firstZhuanquId })
}
this.setData({
filteredZhuanquList: filteredZhuanquList,
filteredShangpinList: filteredShangpinList
})
},
/**
* 选择商品类型
*/
selectLeixing(e) {
const leixingId = e.currentTarget.dataset.id
if (this.data.selectedLeixingId === leixingId) {
return
}
// 获取该类型下的第一个专区
const zhuanquList = this.data.zhuanquByLeixing[leixingId] || []
const firstZhuanquId = zhuanquList.length > 0 ? zhuanquList[0].id : null
this.setData({
selectedLeixingId: leixingId,
selectedZhuanquId: firstZhuanquId
@@ -253,20 +185,14 @@ registerNotificationComponent() {
})
},
/**
* 选择商品专区
*/
selectZhuanqu(e) {
const zhuanquId = e.currentTarget.dataset.id
if (this.data.selectedZhuanquId === zhuanquId) {
return
}
this.setData({
selectedZhuanquId: zhuanquId
}, () => {
// 筛选商品列表
const filteredShangpinList = this.data.shangpinByZhuanqu[zhuanquId] || []
this.setData({
filteredShangpinList: filteredShangpinList
@@ -274,18 +200,12 @@ registerNotificationComponent() {
})
},
/**
* 搜索框输入事件
*/
onSearchInput(e) {
this.setData({
searchText: e.detail.value
})
},
/**
* 点击搜索按钮
*/
onSearchTap() {
const searchText = this.data.searchText.trim()
if (!searchText) {
@@ -295,14 +215,9 @@ registerNotificationComponent() {
})
return
}
// 开始搜索
this.startSearch(searchText)
},
/**
* 键盘搜索事件回车键
*/
onSearchConfirm(e) {
const searchText = e.detail.value.trim()
if (!searchText) {
@@ -312,40 +227,28 @@ registerNotificationComponent() {
})
return
}
this.setData({
searchText: searchText
})
// 开始搜索
this.startSearch(searchText)
},
/**
* 执行搜索
*/
startSearch(searchText) {
this.setData({
isSearching: true,
showSearchResult: true
})
// 本地搜索
const allShangpin = this.data.shangpinliebiao
const results = []
for (const item of allShangpin) {
if (item.biaoqian && item.biaoqian.toLowerCase().includes(searchText.toLowerCase())) {
// 处理价格显示
const jiage = parseFloat(item.jiage) || 0
const priceInteger = Math.floor(jiage)
let priceDecimal = '00'
const decimalPart = (jiage - priceInteger).toFixed(2)
if (decimalPart > 0) {
priceDecimal = decimalPart.toString().split('.')[1]
}
results.push({
id: item.id,
biaoqian: item.biaoqian,
@@ -358,16 +261,12 @@ registerNotificationComponent() {
})
}
}
this.setData({
searchResults: results,
isSearching: false
})
},
/**
* 清空搜索
*/
onClearSearch() {
this.setData({
searchText: '',
@@ -376,9 +275,6 @@ registerNotificationComponent() {
})
},
/**
* 根据类型ID获取类型名称
*/
getLeixingName(leixingId) {
const leixingList = this.data.shangpinleixing
for (const item of leixingList) {
@@ -389,9 +285,6 @@ registerNotificationComponent() {
return ''
},
/**
* 根据专区ID获取专区名称
*/
getZhuanquName(zhuanquId) {
const zhuanquList = this.data.shangpinzhuanqu
for (const item of zhuanquList) {
@@ -402,34 +295,23 @@ registerNotificationComponent() {
return ''
},
/**
* 跳转到商品详情页
*/
goToDetail(e) {
const shangpinId = e.currentTarget.dataset.id
if (!shangpinId) return
wx.navigateTo({
url: `/pages/shangpinxiangqing/shangpinxiangqing?id=${shangpinId}`
url: `/pages/product-detail/product-detail?id=${shangpinId}`
})
},
/**
* 刷新所有数据
*/
onRefresh() {
wx.showLoading({
title: '刷新中...',
mask: true
})
// 清空全局变量
app.globalData.shangpinleixing = []
app.globalData.shangpinzhuanqu = []
app.globalData.shangpinliebiao = []
this.loadAllShangpinData()
setTimeout(() => {
wx.hideLoading()
wx.showToast({
@@ -440,13 +322,10 @@ registerNotificationComponent() {
}, 1000)
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
return {
title: '阿龙电竞 - 商品分类',
path: '/pages/fenlei/fenlei'
path: '/pages/category/category'
}
}
})

View File

@@ -1,8 +1,8 @@
<!-- pages/fenlei/fenlei.wxml -->
<!-- pages/category/category.wxml -->
<view class="fenlei-page">
<!-- 1. 毛玻璃搜索框区域(固定) -->
<view class="search-container">
<view class="search-box">
<view class="search-box search-box--glass">
<image src="/images/sousuo.png" class="search-icon" />
<input
type="text"
@@ -19,7 +19,7 @@
<image src="/images/clear.png" class="clear-icon" />
</view>
<!-- 搜索按钮 -->
<view class="search-btn" bindtap="onSearchTap">
<view class="search-btn btn btn-sm btn-sm--gold" bindtap="onSearchTap">
<text class="search-btn-text">搜索</text>
</view>
</view>
@@ -201,7 +201,7 @@
</view>
<!-- 全局加载状态 -->
<view class="loading-toast" wx:if="{{isLoading}}">
<view class="loading-toast loading-mask loading-mask--dark" wx:if="{{isLoading}}">
<view class="loading-content">
<view class="loading-spinner">
<view class="spinner-ring"></view>

View File

@@ -1,4 +1,4 @@
/* pages/fenlei/fenlei.wxss */
/* pages/category/category.wxss */
.fenlei-page {
width: 100%;
height: 100vh;
@@ -19,18 +19,11 @@
}
.search-box {
display: flex;
align-items: center;
background: rgba(255, 255, 255, 0.85);
backdrop-filter: blur(30rpx);
-webkit-backdrop-filter: blur(30rpx);
border-radius: 50rpx;
padding: 0 28rpx;
height: 84rpx;
box-shadow:
0 8rpx 32rpx rgba(31, 38, 135, 0.1),
inset 0 1rpx 0 rgba(255, 255, 255, 0.8);
border: 1rpx solid rgba(255, 255, 255, 0.3);
position: relative;
overflow: hidden;
}
@@ -55,9 +48,7 @@
}
.search-input {
flex: 1;
height: 100%;
font-size: 28rpx;
margin-left: 0;
color: #222;
font-weight: 400;
}
@@ -68,12 +59,7 @@
}
.search-btn {
background: linear-gradient(135deg, #ffcc00, #ffaa00);
border-radius: 40rpx;
padding: 14rpx 32rpx;
margin-left: 20rpx;
position: relative;
overflow: hidden;
box-shadow: 0 6rpx 20rpx rgba(255, 170, 0, 0.3);
transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@@ -127,7 +113,7 @@
height: 24rpx;
}
/* 2. 商品类型选择区域(固定)- 恢复原大小 */
/* 2. 商品类型选择区域(固定) */
.leixing-container {
padding: 0 32rpx 24rpx;
flex-shrink: 0;
@@ -165,8 +151,8 @@
}
.leixing-image-box {
width: 100rpx; /* 恢复原大小 */
height: 100rpx; /* 恢复原大小 */
width: 100rpx; /* 恢复原大小 */ /* 恢复原大小 */
height: 100rpx; /* 恢复原大小 */ /* 恢复原大小 */
border-radius: 50%;
position: relative;
margin-bottom: 16rpx;
@@ -230,7 +216,7 @@
.leixing-text {
font-size: 24rpx;
color: #555; /* 颜色加深 */
color: #555;
font-weight: 500;
transition: all 0.3s;
white-space: nowrap;
@@ -321,7 +307,7 @@
.zhuanqu-name {
font-size: 26rpx;
color: #444; /* 颜色加深 */
color: #444;
text-align: center;
line-height: 1.4;
margin-bottom: 8rpx;
@@ -444,7 +430,7 @@
.shangpin-item {
background: white;
padding: 28rpx 30rpx 22rpx; /* 底部距离缩小 */
padding: 28rpx 30rpx 22rpx;
position: relative;
display: flex;
align-items: flex-start;
@@ -736,13 +722,6 @@
box-shadow: 0 4rpx 16rpx rgba(255, 170, 0, 0.4);
}
.load-more {
display: flex;
align-items: center;
justify-content: center;
padding: 40rpx 0;
}
.load-more-line {
width: 60rpx;
height: 1rpx;
@@ -844,7 +823,7 @@
.search-results-list {
flex: 1;
height: 100%; /* 新增:修复滚动问题的关键代码 */
height: 100%;
}
.search-result-item {
@@ -1010,16 +989,7 @@
/* 全局加载状态 */
.loading-toast {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(10rpx);
display: flex;
align-items: center;
justify-content: center;
z-index: 3000;
}
@@ -1066,7 +1036,6 @@
.loading-text {
font-size: 28rpx;
color: white;
font-weight: 500;
}
@@ -1204,12 +1173,3 @@
transform: translate(0, 0) scale(0);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View File

@@ -1,6 +0,0 @@
{
"component": true,
"usingComponents": {
"fakuan-pay": "/pages/cfss/components/fakuan-pay/fakuan-pay"
}
}

View File

@@ -41,10 +41,8 @@ Page({
teamName = p.teamName || '客服';
teamAvatar = p.teamAvatar || '';
} catch (e) {
console.error('解析客服页面参数失败', e);
}
}
// 默认头像使用全局配置
if (!teamAvatar) {
teamAvatar = app.globalData.ossImageUrl + app.globalData.morentouxiang;
}
@@ -171,7 +169,7 @@ Page({
this.setData({ messages: msgs });
},
// ---------- 历史消息 + 永久欢迎语 ----------
// 历史消息
loadHistory(refresh) {
if (!refresh && !this.data.hasMore) return Promise.resolve();
return new Promise((resolve) => {
@@ -209,7 +207,7 @@ Page({
const unique = [];
for (const m of final) { if (!ids.has(m.messageId)) { ids.add(m.messageId); unique.push(m); } }
// 强制在第一行插入欢迎语(如果不存在)
// 插入欢迎语
const welcomeId = 'welcome-cs';
if (!unique.some(m => m.messageId === welcomeId)) {
const welcome = this.createWelcomeMessage();
@@ -249,7 +247,7 @@ Page({
};
},
// ---------- 接收新客服消息 ----------
// 接收新客服消息
listenNewMsg() {
if (this._msgHandler) wx.goEasy.im.off(wx.GoEasy.IM_EVENT.CS_MESSAGE_RECEIVED, this._msgHandler);
this._msgHandler = (msg) => {
@@ -310,7 +308,7 @@ Page({
wx.goEasy.im.on(wx.GoEasy.IM_EVENT.MESSAGE_DELETED, this._deleteHandler);
},
// ---------- 面板控制 ----------
// 面板控制
togglePlusPanel() { this.setData({ showPlusPanel: !this.data.showPlusPanel, showEmojiPanel: false }); },
closePlusPanel() { this.setData({ showPlusPanel: false }); },
openEmojiFromPlus() { this.setData({ showPlusPanel: false, showEmojiPanel: true }); },
@@ -318,7 +316,7 @@ Page({
insertEmoji(e) { this.setData({ inputText: this.data.inputText + e.currentTarget.dataset.emoji }); },
closeEmojiPanel() { this.setData({ showEmojiPanel: false }); },
// ---------- 发送消息 ----------
// 发送消息
onInput(e) { this.setData({ inputText: e.detail.value }); },
chooseImage() {
const that = this;
@@ -409,7 +407,7 @@ Page({
});
},
// ---------- 订单发送 ----------
// 订单发送
openOrderSender() { this.setData({ showOrderSender: true, showPlusPanel: false }); },
closeOrderSender() { this.setData({ showOrderSender: false }); },
onSendOrder(e) {
@@ -445,7 +443,7 @@ Page({
updateMsg(id, status) { this.setData({ messages: this.data.messages.map(m => m.messageId === id ? { ...m, status } : m) }); },
needShow(ts) { const ms = this.data.messages; if (!ms.length) return true; const last = ms[ms.length-1]; return (ts - last.timestamp) / 60000 > 5; },
// ---------- 消息操作 ----------
// 消息操作
onBubbleTap(e) {
const msgId = e.currentTarget.dataset.messageid;
const text = e.currentTarget.dataset.text;

View File

@@ -1,4 +1,4 @@
// pages/xiugai/xiugai.js
// pages/edit/edit.js
const app = getApp()
import upload from '../../utils/upload.js'
@@ -37,7 +37,7 @@ Page({
}
},
// 加载用户数据(手机号只读,不参与修改逻辑)
// 加载用户数据
loadUserData() {
try {
const uid = wx.getStorageSync('uid') || ''
@@ -59,7 +59,7 @@ Page({
avatarUrl,
uid,
nicheng,
phone, // 仅展示
phone,
originalAvatar: touxiang,
originalNicheng: nicheng,
isLoading: false
@@ -71,7 +71,7 @@ Page({
}
},
// 微信头像选择(未改动)
// 微信头像选择
onChooseAvatar(e) {
const avatarTempPath = e.detail.avatarUrl
this.setData({
@@ -83,14 +83,13 @@ Page({
},
chooseAvatar() {
// 仅保留动画效果(透明按钮已触发 onChooseAvatar
this.setData({ isAvatarActive: true })
setTimeout(() => {
this.setData({ isAvatarActive: false })
}, 500)
},
// 昵称输入(未改动)
// 昵称输入
onNicknameInput(e) {
const value = e.detail.value.trim()
this.setData({
@@ -101,14 +100,14 @@ Page({
})
},
// 检查变化(只比较昵称和头像)
// 检查变化
checkChanges() {
const { originalNicheng, nicheng, newAvatarFile } = this.data;
const hasChanges = (nicheng !== originalNicheng) || (newAvatarFile !== null);
this.setData({ hasChanges });
},
// 保存(不包含手机号逻辑)
// 保存
async onSave() {
if (!this.data.hasChanges) {
wx.showToast({ title: '没有需要保存的更改', icon: 'none' });
@@ -116,7 +115,7 @@ Page({
}
if (this.data.isSaving) return;
// 验证数据(昵称)
// 验证数据
if (!this.validateData()) return;
this.setData({ isSaving: true });
@@ -155,7 +154,7 @@ Page({
if (res.confirm) {
wx.removeStorageSync('token');
wx.removeStorageSync('userInfo');
wx.switchTab({ url: '/pages/wode/wode' });
wx.switchTab({ url: '/pages/mine/mine' });
}
}
});
@@ -168,7 +167,7 @@ Page({
}
},
// 验证数据(只验证昵称)
// 验证数据
validateData() {
const { nicheng } = this.data;
let hasError = false;
@@ -191,7 +190,7 @@ Page({
return true;
},
// 更新成功处理(不再处理手机号)
// 更新成功处理
async handleUpdateSuccess(updateData) {
if (updateData.touxiang !== undefined && updateData.touxiang !== null) {
wx.setStorageSync('touxiang', updateData.touxiang);

View File

@@ -1,4 +1,4 @@
<!-- pages/xiugai/xiugai.wxml -->
<!-- pages/edit/edit.wxml -->
<view class="xiugai-page">
<!-- 头像区域(未改动) -->

View File

@@ -1,4 +1,4 @@
/* pages/xiugai/xiugai.wxss */
/* pages/edit/edit.wxss */
page {
background: linear-gradient(135deg, #fffaf0 0%, #f0f8ff 100%);
min-height: 100vh;
@@ -8,7 +8,7 @@ page {
padding: 30rpx 40rpx 100rpx;
}
/* ============ 头像区域样式 ============ */
/* 头像区域样式 */
.avatar-section {
position: relative;
display: flex;
@@ -24,7 +24,7 @@ page {
align-items: center;
}
/* 头像包装器:精确居中,包含头像+光晕 */
/* 头像包装器 */
.avatar-image-wrapper {
position: relative;
width: 200rpx;
@@ -48,16 +48,16 @@ page {
box-shadow:
0 0 0 1rpx rgba(0, 200, 83, 0.3),
0 15rpx 40rpx rgba(0, 200, 83, 0.15);
box-sizing: border-box; /* 关键:边框向内计算,不占宽度 */
box-sizing: border-box;
}
/* ✅ 光晕精确居中:已计算头像 6rpx 边框的偏移量 */
/* 光晕 */
.avatar-halo {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* 强制居中,无视任何偏差 */
width: 228rpx; /* 精确计算200 + 6*2(边框) + 8*2(外延) = 228 */
transform: translate(-50%, -50%);
width: 228rpx;
height: 228rpx;
border-radius: 50%;
background: transparent;
@@ -68,7 +68,7 @@ page {
pointer-events: none;
}
/* 像素点环绕也强制居中 */
/* 像素点环绕 */
.avatar-image-wrapper::before {
content: '';
position: absolute;
@@ -215,11 +215,9 @@ page {
border: none;
}
/* ============ 表单区域 ============ */
/* 表单区域 */
.form-section {
background: white;
border-radius: 25rpx;
overflow: hidden;
margin-bottom: 50rpx;
box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.08);
border: 1rpx solid #f0f0f0;
@@ -251,13 +249,7 @@ page {
color: #666;
}
.item-input {
flex: 1;
font-size: 32rpx;
color: #333;
height: 50rpx;
line-height: 50rpx;
}
/* .item-input — 与全局 .input-inline 完全相同,已移除 */
.placeholder {
color: #ccc;
@@ -302,19 +294,13 @@ page {
to { opacity: 1; transform: translateY(0); }
}
/* ============ 保存按钮 ============ */
/* 保存按钮 */
.save-btn {
width: 100%;
height: 100rpx;
line-height: 100rpx;
border-radius: 50rpx;
background: linear-gradient(135deg, #00C853 0%, #64DD17 100%);
color: white;
font-size: 34rpx;
font-weight: 500;
border: none;
position: relative;
overflow: hidden;
box-shadow: 0 15rpx 40rpx rgba(0, 200, 83, 0.25);
margin-top: 30rpx;
}
@@ -361,7 +347,7 @@ page {
transform: scale(0.98);
}
/* ============ 手机号获取按钮 ============ */
/* 手机号获取按钮 */
.phone-row {
flex: 1;
display: flex;
@@ -380,15 +366,8 @@ page {
margin-left: 20rpx;
padding: 10rpx 24rpx;
background: #4a6cf7;
color: #fff;
font-size: 26rpx;
border-radius: 40rpx;
border: none;
line-height: 1.4;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
}
.phone-btn-hover {

View File

@@ -1,4 +1,4 @@
// pages/peihuDingdan/peihuDingdan.js
// pages/escort-orders/escort-orders.js
Page({
/**

View File

@@ -0,0 +1,2 @@
<!--pages/escort-orders/escort-orders.wxml-->
<text>pages/escort-orders/escort-orders.wxml</text>

View File

@@ -0,0 +1 @@
/* pages/escort-orders/escort-orders.wxss */

View File

@@ -1,4 +1,4 @@
// pages/jisufd/jisufd.js
// pages/express-order/express-order.js
import request from '../../utils/request.js'
const PAGE_SIZE = 50

View File

@@ -1,4 +1,4 @@
<!-- pages/jisufd/jisufd.wxml -->
<!-- pages/express-order/express-order.wxml -->
<view class="page-container">
<!-- 余额卡片 -->
<view class="balance-card">

View File

@@ -1,4 +1,4 @@
/* pages/jisufd/jisufd.wxss - 增强版,包含标签展示 */
/* pages/express-order/express-order.wxss - 增强版,包含标签展示 */
.page-container {
min-height: 100vh;
background: linear-gradient(135deg, #0a0a0f 0%, #1a1a2e 50%, #16213e 100%);

View File

@@ -1,4 +1,4 @@
// pages/cfss/cfss.js
// pages/penalty/penalty.js
import request from '../../utils/request.js'
const app = getApp()
const MEIYE_TIAOSHU = 5

View File

@@ -1,4 +1,4 @@
<!-- pages/cfss/cfss.wxml -->
<!-- pages/penalty/penalty.wxml -->
<view class="cfss-container">
<!-- 顶部统计卡片 -->
<view class="tongji-card">

View File

@@ -1,4 +1,4 @@
/* pages/cfss/cfss.wxss */
/* pages/penalty/penalty.wxss */
/* 🔴【恢复您原来的深色背景,但调淡一点】 */
:root {
@@ -907,7 +907,7 @@
/* pages/cfss/cfss.wxss 中新增样式 */
/* pages/penalty/penalty.wxss 中新增样式 */
/* 🔴【关键修改】图片网格和图片样式 */
.tupian-grid {

View File

@@ -1,4 +1,4 @@
// pages/dsddxq/dsddxq.js - 【最终版:提交前公告弹窗 + 修改图片至少保留一张】
// pages/fighter-order-detail/fighter-order-detail.js - 【最终版:提交前公告弹窗 + 修改图片至少保留一张】
const app = getApp()
import request from '../../utils/request.js'
const COS = require('../../utils/cos-wx-sdk-v5.js')
@@ -322,7 +322,7 @@ Page({
isCross,
}
wx.navigateTo({
url: '/pages/qunliaotian/qunliaotian?data=' + encodeURIComponent(JSON.stringify(param)),
url: '/pages/group-chat/group-chat?data=' + encodeURIComponent(JSON.stringify(param)),
})
},
onFailed: (err) => {

View File

@@ -1,4 +1,4 @@
/* pages/dsddxq/dsddxq.wxss */
/* pages/fighter-order-detail/fighter-order-detail.wxss */
/* 页面基础样式 */
.dsddxq-page {

View File

@@ -294,11 +294,11 @@ Page({
if (this.data.orderType === 'peihu') {
wx.navigateTo({
url: `/pages/peihuDingdan/peihuDingdan?dingdanData=${dataStr}`
url: `/pages/escort-orders/escort-orders?dingdanData=${dataStr}`
});
} else {
wx.navigateTo({
url: `/pages/dsddxq/dsddxq?dingdanData=${dataStr}`
url: `/pages/fighter-order-detail/fighter-order-detail?dingdanData=${dataStr}`
});
}
},

View File

@@ -281,9 +281,7 @@ page {
animation: spin 0.8s linear infinite;
margin-bottom: 24rpx;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.empty-img {
width: 200rpx;
height: 200rpx;

View File

@@ -132,8 +132,6 @@ page {
margin-bottom: 20rpx;
}
@keyframes spin { to { transform: rotate(360deg); } }
.state-img {
width: 160rpx; height: 160rpx;
margin-bottom: 20rpx;

View File

@@ -75,7 +75,7 @@ Page({
this.initPage();
},
// pages/tijiao/tijiao.js 中添加 onHide 方法(如果已有则合并内容)
// pages/submit/submit.js 中添加 onHide 方法(如果已有则合并内容)
onHide() {
const popupComp = this.selectComponent('#popupNotice');
if (popupComp && popupComp.cleanup) {

View File

@@ -18,7 +18,7 @@ const PLATFORM_INVITE_CODE = '0000008RffVgKHMj7kQC'
Page({
data: {
// 🆕 图片路径对象逻辑层拼接完整URL
// 图片路径对象
imgUrls: {},
isDashou: false,
@@ -188,7 +188,7 @@ Page({
}, 500);
}
}
// 注意:这里不再重复声明 app,直接使用上面的 app 变量
// 注意:不再重复声明 app
if (!app.globalData.hasShownPopupOnColdStart) {
app.globalData.hasShownPopupOnColdStart = true;
setTimeout(() => {
@@ -296,7 +296,7 @@ Page({
this.setData({ totalAssets: total.toFixed(2), assetBreakdown: breakdown });
},
/** 打手端:已认证不展示;商家始终第一位且靠左排列 */
/** 打手端:已认证不展示;商家始终第一位 */
_updatePendingAuth() {
const d = this.data;
const img = d.imgUrls || {};
@@ -671,23 +671,23 @@ Page({
},
goToGuanshiWithdraw() {
wx.navigateTo({ url: '/pages/tixian/tixian' });
wx.navigateTo({ url: '/pages/withdraw/withdraw' });
},
goToZuzhangWithdraw() {
wx.navigateTo({ url: `/pages/tixian/tixian?from=zuzhang&amount=${this.data.ketixian}` });
wx.navigateTo({ url: `/pages/withdraw/withdraw?from=zuzhang&amount=${this.data.ketixian}` });
},
goToInviteUser() { wx.navigateTo({ url: '/pages/yaoqingdashou/yaoqingdashou' }); },
goToMySubordinate() { wx.navigateTo({ url: '/pages/wodedashou/wodedashou' }); },
goToRechargeRecord() { wx.navigateTo({ url: '/pages/czjilu/czjilu' }); },
goToInviteUser() { wx.navigateTo({ url: '/pages/invite-fighter/invite-fighter' }); },
goToMySubordinate() { wx.navigateTo({ url: '/pages/my-fighter/my-fighter' }); },
goToRechargeRecord() { wx.navigateTo({ url: '/pages/recharge-log/recharge-log' }); },
goToGuanshiRanking() {
wx.navigateTo({ url: '/pages/dashoupaihang/dashoupaihang?type=guanshi' });
wx.navigateTo({ url: '/pages/fighter-rank/fighter-rank?type=guanshi' });
},
goToPromoPoster() { wx.navigateTo({ url: '/pages/haibao/haibao' }); },
goToFenhongJilu() { wx.navigateTo({ url: '/pages/zzfhjilu/zzfhjilu' }); },
goToYaoqingGuanshi() { wx.navigateTo({ url: '/pages/yqguanshi/yqguanshi' }); },
goToGuanshiAuthPage() { wx.navigateTo({ url: '/pages/renzheng/renzheng?type=guanshi' }); },
goToPromoPoster() { wx.navigateTo({ url: '/pages/poster/poster' }); },
goToFenhongJilu() { wx.navigateTo({ url: '/pages/leader-bonus-log/leader-bonus-log' }); },
goToYaoqingGuanshi() { wx.navigateTo({ url: '/pages/invite-manager/invite-manager' }); },
goToGuanshiAuthPage() { wx.navigateTo({ url: '/pages/verify/verify?type=guanshi' }); },
async contactZuzhang() {
wx.showLoading({ title: '获取组长信息...', mask: true });
@@ -723,20 +723,16 @@ Page({
if (res && res.data.code === 0 && res.data.data) {
const list = res.data.data.chenghao_list || [];
this.setData({ chenghaoList: list });
// 可选:也存入全局,方便其他页面使用
const app = getApp();
app.globalData.chenghaoList = list;
} else {
this.setData({ chenghaoList: [] });
}
} catch (e) {
console.error('获取称号标签失败', e);
// 失败不影响主流程
}
},
// ========================================================
// 联系邀请人(保持不变)
// 联系邀请人
async contactInviter() {
wx.showLoading({ title: '获取邀请人...', mask: true });
try {
@@ -798,7 +794,7 @@ Page({
fail: () => {
wx.hideLoading();
console.error('微信登录失败');
wx.reLaunch({ url: '/pages/wode/wode' });
wx.reLaunch({ url: '/pages/mine/mine' });
}
});
},
@@ -1079,7 +1075,7 @@ Page({
if (avatarUrl) wx.previewImage({ urls: [avatarUrl] });
},
goToWithdraw() { wx.navigateTo({ url: '/pages/tixian/tixian' }) },
goToWithdraw() { wx.navigateTo({ url: '/pages/withdraw/withdraw' }) },
goToTotalWithdraw() { this.goToWithdraw(); },
goToKefu() {
@@ -1111,7 +1107,7 @@ Page({
}
return;
}
wx.navigateTo({ url: `/pages/renzheng/renzheng?type=${type}` });
wx.navigateTo({ url: `/pages/verify/verify?type=${type}` });
},
onTapAuthItem(e) {
@@ -1125,7 +1121,7 @@ Page({
enterShangjiaCenter() {
if (!this.data.shangjiaCertified) {
wx.navigateTo({ url: '/pages/renzheng/renzheng?type=shangjia' });
wx.navigateTo({ url: '/pages/verify/verify?type=shangjia' });
return;
}
enterLockedRole('shangjia', getApp());
@@ -1136,28 +1132,28 @@ Page({
this.enterShangjiaCenter();
return;
}
wx.navigateTo({ url: '/pages/renzheng/renzheng?type=shangjia' });
wx.navigateTo({ url: '/pages/verify/verify?type=shangjia' });
},
goToReceiveOrder() { wx.navigateTo({ url: '/pages/jiedan/jiedan' }) },
goToMyOrders() { wx.navigateTo({ url: '/pages/dashoudingdan/dashoudingdan' }) },
goToMyPunishment() { wx.navigateTo({ url: '/pages/cfss/cfss/cfss' }) },
goToRecharge() { wx.navigateTo({ url: '/pages/dashouchongzhi/dashouchongzhi' }) },
goToReceiveOrder() { wx.navigateTo({ url: '/pages/accept-order/accept-order' }) },
goToMyOrders() { wx.navigateTo({ url: '/pages/fighter-orders/fighter-orders' }) },
goToMyPunishment() { wx.navigateTo({ url: '/pages/penalty/penalty/penalty' }) },
goToRecharge() { wx.navigateTo({ url: '/pages/fighter-recharge/fighter-recharge' }) },
goToRanking(e) {
const type = e?.currentTarget?.dataset?.type || 'dashou';
wx.navigateTo({ url: `/pages/dashoupaihang/dashoupaihang?type=${type}` });
wx.navigateTo({ url: `/pages/fighter-rank/fighter-rank?type=${type}` });
},
goToGuanzhuKs() { wx.navigateTo({ url: '/pages/guanzhual/guanzhual' }) },
goToKaoheDafen() { wx.navigateTo({ url: '/pages/kaohe_dafen/kaohe_dafen' }) },
goToKaoheJilu() { wx.navigateTo({ url: '/pages/kaohe_jilu/kaohe_jilu' }) },
goToKaoheZhongxin() { wx.navigateTo({ url: '/pages/kaohe_zhongxin/kaohe_zhongxin' }) },
goToGuanzhuKs() { wx.navigateTo({ url: '/pages/manager-assign/manager-assign' }) },
goToKaoheDafen() { wx.navigateTo({ url: '/pages/assess-score/assess-score' }) },
goToKaoheJilu() { wx.navigateTo({ url: '/pages/assess-log/assess-log' }) },
goToKaoheZhongxin() { wx.navigateTo({ url: '/pages/assess-center/assess-center' }) },
goToKaoheWithdraw() {
const yue = this.data.kaoheYue || '0.00';
wx.navigateTo({ url: `/pages/tixian/tixian?amount=${yue}&from=kaoheguan` });
wx.navigateTo({ url: `/pages/withdraw/withdraw?amount=${yue}&from=kaoheguan` });
},
goToModifyInfo() { wx.navigateTo({ url: '/pages/dashouxiugai/dashouxiugai' }) },
goToRules() { wx.navigateTo({ url: '/pages/dashouguize/dashouguize' }) },
goToModifyInfo() { wx.navigateTo({ url: '/pages/fighter-edit/fighter-edit' }) },
goToRules() { wx.navigateTo({ url: '/pages/fighter-rules/fighter-rules' }) },
goToKaohe() {
wx.navigateTo({ url: '/pages/kaohe_jinpai/kaohe_jinpai' });
wx.navigateTo({ url: '/pages/assess-gold/assess-gold' });
},
quickRegisterAsPlatform() {

View File

@@ -4,15 +4,9 @@ page {
color: #1A1A1A;
}
/* .page-bg 与全局相同,仅保留差异 */
.page-bg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0.42;
z-index: 0;
pointer-events: none;
}
.unreg-area {
@@ -50,31 +44,26 @@ page {
color: #444;
}
/* .unreg-input 与 .input-rounded 类似,仅保留差异 */
.unreg-input {
width: 100%;
height: 80rpx;
background: #FFFFFF;
border-radius: 40rpx;
padding: 0 32rpx;
font-size: 28rpx;
box-sizing: border-box;
margin-bottom: 16rpx;
}
.ph { color: #999; }
/* .unreg-btn 与 .btn .btn-secondary 类似,仅保留差异 */
.unreg-btn {
width: 100%;
height: 80rpx;
background: rgba(255, 255, 255, 0.65);
border-radius: 40rpx;
display: flex;
align-items: center;
justify-content: center;
border: 1rpx solid rgba(0, 0, 0, 0.06);
margin-bottom: 16rpx;
}
/* .unreg-btn-secondary 与 .btn-secondary 类似,仅保留差异 */
.unreg-btn-secondary {
margin-bottom: 0;
background: rgba(255, 255, 255, 0.45);
@@ -112,27 +101,9 @@ page {
padding: 0 24rpx 150rpx;
}
.refresh-btn {
position: fixed;
top: 36rpx;
right: 32rpx;
width: 56rpx;
height: 56rpx;
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(12rpx);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
z-index: 20;
border: 1rpx solid rgba(255, 255, 255, 0.6);
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.05);
}
/* .refresh-btn 与全局 .refresh-btn .refresh-btn--light 完全相同,删除 */
.refresh-icon {
width: 28rpx;
height: 28rpx;
}
/* .refresh-icon 与全局 .refresh-icon 完全相同,删除 */
.user-card {
position: relative;
@@ -163,13 +134,9 @@ page {
backdrop-filter: blur(12rpx);
}
/* .user-avatar 与 .avatar-circle .avatar-md 类似,仅保留差异 */
.user-avatar {
width: 88rpx;
height: 88rpx;
border-radius: 50%;
border: 2rpx solid #FFFFFF;
margin-right: 20rpx;
flex-shrink: 0;
}
.user-info { flex: 1; min-width: 0; }
@@ -254,7 +221,7 @@ page {
font-weight: 600;
}
/* ===== 黑卡 VIP ===== */
/* 黑卡 VIP */
.vip-black-card {
position: relative;
height: 152rpx;
@@ -329,7 +296,7 @@ page {
color: #f3ead8;
}
/* ===== 资产面板 ===== */
/* 资产面板 */
.asset-panel {
position: relative;
border-radius: 28rpx;
@@ -447,7 +414,7 @@ page {
margin-top: 4rpx;
}
/* ===== 排行榜(无大框,梯形格) ===== */
/* 排行榜 */
.rank-section {
margin-bottom: 22rpx;
padding: 0 2rpx;
@@ -613,7 +580,7 @@ page {
text-align: right;
}
/* ===== 功能面板 ===== */
/* 功能面板 */
.func-panel {
position: relative;
border-radius: 28rpx;
@@ -720,10 +687,10 @@ page {
font-weight: 600;
}
/* .list-card 与 .card 类似,仅保留差异 */
.list-card {
position: relative;
border-radius: 28rpx;
overflow: hidden;
box-shadow: 0 6rpx 24rpx rgba(0, 0, 0, 0.04);
}
@@ -743,23 +710,22 @@ page {
backdrop-filter: blur(12rpx);
}
/* .list-item 与全局 .list-item 类似,仅保留差异 */
.list-item {
display: flex;
align-items: center;
padding: 22rpx 20rpx;
border-bottom: 1rpx solid rgba(0, 0, 0, 0.04);
}
.list-item:last-child { border-bottom: none; }
/* .list-icon 与全局 .list-icon 类似,仅保留差异(缺少 flex-shrink:0 */
.list-icon {
width: 36rpx;
height: 36rpx;
margin-right: 16rpx;
}
/* .list-text 与全局 .list-text 类似,仅保留差异 */
.list-text {
flex: 1;
font-size: 26rpx;
}
@@ -769,13 +735,12 @@ page {
margin-right: 8rpx;
}
/* .list-arrow 与全局 .list-arrow 类似,仅保留差异 */
.list-arrow {
width: 20rpx;
height: 20rpx;
opacity: 0.45;
}
/* ===== 客服入口 ===== */
/* 客服入口 */
.kefu-banner {
position: relative;
margin-bottom: 18rpx;
@@ -851,7 +816,7 @@ page {
margin-left: 16rpx;
}
/* ===== 总资产 ===== */
/* 总资产 */
.total-asset-row {
position: relative;
border-radius: 24rpx;
@@ -937,6 +902,7 @@ page {
font-weight: 500;
}
/* .withdraw-btn 与 .btn-sm--dark 类似,仅保留差异 */
.withdraw-btn {
flex-shrink: 0;
min-width: 120rpx;
@@ -944,10 +910,7 @@ page {
line-height: 72rpx;
text-align: center;
padding: 0 28rpx;
font-size: 26rpx;
font-weight: 700;
color: #fff;
background: linear-gradient(135deg, #3d4f66 0%, #2c3e50 100%);
border-radius: 999rpx;
box-shadow: 0 6rpx 20rpx rgba(44, 62, 80, 0.22);
}
@@ -965,7 +928,7 @@ page {
box-sizing: border-box;
}
/* ===== 身份认证 ===== */
/* 身份认证 */
.auth-grid {
position: relative;
z-index: 1;
@@ -1008,28 +971,12 @@ page {
background: rgba(90, 107, 87, 0.1);
}
.loading-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.85);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
/* .loading-mask 与全局 .loading-mask .loading-mask--light 完全相同,删除 */
/* .loading-spinner 与 .spinner--md 类似,仅保留差异 */
.loading-spinner {
width: 52rpx;
height: 52rpx;
border: 3rpx solid rgba(0, 0, 0, 0.08);
border-top-color: #1A1A1A;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}

View File

@@ -1,4 +1,4 @@
// pages/jinpaids/jinpaids.js
// pages/gold-fighter/gold-fighter.js
import request from '../../utils/request.js'
import popupService from '../../services/popupService.js'
import {
@@ -68,11 +68,11 @@ Page({
},
onLoad() {
wx.redirectTo({ url: '/pages/dashouduan/dashouduan' });
wx.redirectTo({ url: '/pages/fighter/fighter' });
},
onShow() {
wx.redirectTo({ url: '/pages/dashouduan/dashouduan' });
wx.redirectTo({ url: '/pages/fighter/fighter' });
},
_deprecatedOnLoad() {
@@ -197,7 +197,7 @@ Page({
checkJinpaiAndRedirect(chenghao) {
if (chenghao !== '金牌选手') {
wx.setStorageSync('isJinpai', 0)
wx.redirectTo({ url: '/pages/dashouduan/dashouduan' })
wx.redirectTo({ url: '/pages/fighter/fighter' })
} else {
wx.setStorageSync('isJinpai', 1)
}
@@ -254,7 +254,7 @@ Page({
toAvatar: fullAvatar
}
wx.navigateTo({
url: '/pages/liaotian/liaotian?data=' + encodeURIComponent(JSON.stringify(param)),
url: '/pages/chat/chat?data=' + encodeURIComponent(JSON.stringify(param)),
fail: (err) => {
console.error('跳转私聊失败', err)
wx.showToast({ title: '打开聊天失败', icon: 'none' })
@@ -284,17 +284,17 @@ Page({
if (this.data.avatarUrl) wx.previewImage({ urls: [this.data.avatarUrl] })
},
goToWithdraw() { wx.navigateTo({ url: '/pages/tixian/tixian' }) },
goToReceiveOrder() { wx.navigateTo({ url: '/pages/jiedan/jiedan' }) },
goToRecharge() { wx.navigateTo({ url: '/pages/dashouchongzhi/dashouchongzhi' }) },
goToMyOrders() { wx.navigateTo({ url: '/pages/dashoudingdan/dashoudingdan' }) },
goToMyPunishment() { wx.navigateTo({ url: '/pages/cfss/cfss/cfss' }) },
goToRanking() { wx.navigateTo({ url: '/pages/dashoupaihang/dashoupaihang?type=dashou' }) },
goToModifyInfo() { wx.navigateTo({ url: '/pages/dashouxiugai/dashouxiugai' }) },
goToRules() { wx.navigateTo({ url: '/pages/dashouguize/dashouguize' }) },
goToWithdraw() { wx.navigateTo({ url: '/pages/withdraw/withdraw' }) },
goToReceiveOrder() { wx.navigateTo({ url: '/pages/accept-order/accept-order' }) },
goToRecharge() { wx.navigateTo({ url: '/pages/fighter-recharge/fighter-recharge' }) },
goToMyOrders() { wx.navigateTo({ url: '/pages/fighter-orders/fighter-orders' }) },
goToMyPunishment() { wx.navigateTo({ url: '/pages/penalty/penalty/penalty' }) },
goToRanking() { wx.navigateTo({ url: '/pages/fighter-rank/fighter-rank?type=dashou' }) },
goToModifyInfo() { wx.navigateTo({ url: '/pages/fighter-edit/fighter-edit' }) },
goToRules() { wx.navigateTo({ url: '/pages/fighter-rules/fighter-rules' }) },
// 跳转到考核金牌
goToKaohe() {
wx.navigateTo({ url: '/pages/kaohe_jinpai/kaohe_jinpai' });
wx.navigateTo({ url: '/pages/assess-gold/assess-gold' });
},
async fetchChenghaoList() {

View File

@@ -1,4 +1,4 @@
/* pages/jinpaids/jinpaids.wxss - 金牌打手机甲风格CSS变量版 */
/* pages/gold-fighter/gold-fighter.wxss - 金牌打手机甲风格CSS变量版 */
/* ========== 全局 ========== */
page {

View File

@@ -49,7 +49,6 @@ Page({
isCross: p.isCross
});
wx.setNavigationBarTitle({ title: this.data.groupName });
// 如果有外部传入的 currentUser 信息,直接用,不再依赖全局状态
if (p.currentUserId) {
this.setData({
currentUser: {
@@ -111,22 +110,6 @@ Page({
});
this.setData({ messages: msgs });
},
/*onLoad(options) {
if (options.data) {
try {
const p = JSON.parse(decodeURIComponent(options.data));
this.setData({
groupId: p.groupId || '',
groupName: p.groupName || '订单群聊',
groupAvatar: p.groupAvatar || '',
orderId: p.orderId || '',
isCross: p.isCross || 0
});
} catch (e) {}
}
wx.setNavigationBarTitle({ title: this.data.groupName });
this.initCurrentUser();
},*/
onShow() {
this.autoConnect();
@@ -189,8 +172,8 @@ Page({
if (!groupId) return;
wx.goEasy.im.subscribeGroup({
groupIds: [groupId],
onSuccess: () => console.log(`[群聊页] 订阅成功: ${groupId}`),
onFailed: (err) => console.error(`[群聊页] 订阅失败: ${groupId}`, err)
onSuccess: () => {},
onFailed: () => {}
});
},
@@ -279,7 +262,7 @@ Page({
this.markGroupMessageAsRead();
};
wx.goEasy.im.on(wx.GoEasy.IM_EVENT.GROUP_MESSAGE_RECEIVED, this._msgHandler);
this.markGroupMessageAsRead(); // ← 收到新消息就标记已读
this.markGroupMessageAsRead();
},
markGroupMessageAsRead() {

View File

@@ -5,23 +5,20 @@ import { fetchShopGoods, bindShop } from '../../utils/shop';
import { backfillUserProfileCache, getSessionToken } from '../../utils/role-tab-bar';
import PopupService from '../../services/popupService.js';
// 🔥 固定参数:扫码时从 scene 中获取店铺ID的字段名可在此处集中修改
const SCENE_PARAM = 'scene'; // 二维码参数统一使用 scene解码后即为店铺ID
// 扫码场景参数名
const SCENE_PARAM = 'scene';
Page({
data: {
// 全局变量引用
ossImageUrl: '',
lunbozhanwei: '',
// 页面数据
shangpingonggao: '',
lunboList: [],
shangpinleixing: [],
shangpinzhuanqu: [],
shangpinliebiao: [],
// 状态控制
selectedLeixingId: null,
filteredData: [],
showGonggaoModal: false,
@@ -33,16 +30,15 @@ Page({
currentTime: ''
},
// 从二维码解析的店铺ID(仅在扫码时存在)
// 码解析的店铺ID
shopId: null,
onLoad(options) {
// 🔥 解析二维码参数scene
// 解析二维码参数
if (options[SCENE_PARAM]) {
try {
// 微信会对 scene 进行编码,需要解码
const scene = decodeURIComponent(options[SCENE_PARAM]);
this.shopId = scene; // 例如dianpu_123
this.shopId = scene;
} catch (e) {
console.error('scene解码失败', e);
}
@@ -50,16 +46,15 @@ Page({
// 等待全局配置加载完成
this.waitForConfigAndInit();
// 🆕 修改:仅在已登录时检查弹窗,避免未登录时发起请求导致 401 弹窗
// 已登录时检查弹窗
const token = getSessionToken(app);
if (token) {
PopupService.checkAndShow(this, 'index');
}
},
// 🆕 页面隐藏时清理弹窗视图
// 页面隐藏时清理弹窗视图
onHide: function () {
const popupComp = this.selectComponent('#popupNotice');
if (popupComp && popupComp.cleanup) {
@@ -153,15 +148,15 @@ Page({
// 1. 确保登录(静默,不跳转)
await ensureLogin({ page: this });
// 2. 🔥 关键仅当通过扫码进入且携带了有效的店铺ID时才执行绑定
// 2. 扫码进入时绑定店铺
if (this.shopId) {
await bindShop(this.shopId);
}
// 3. 并行加载公告轮播图(复用原接口,独立请求)和店铺商品(新接口)
// 3. 并行加载公告轮播图和商品数据
const [gonggaoResult, shopData] = await Promise.all([
this.loadGonggaoAndLunbo(), // 公告轮播图使用原有的 wx.request 方式,不受影响
fetchShopGoods() // 商品数据通过封装的 request 获取
this.loadGonggaoAndLunbo(),
fetchShopGoods()
]);
// 4. 处理商品数据
@@ -169,8 +164,7 @@ Page({
const sortedZhuanqu = this.sortByPaixu(shopData.shangpinzhuanqu || []);
const sortedShangpin = this.sortByPaixu(shopData.shangpinliebiao || []);
// 更新全局缓存(可选,用于其他页面复用)
// 更新全局缓存
app.globalData.shangpinleixing = sortedLeixing;
app.globalData.shangpinzhuanqu = sortedZhuanqu;
app.globalData.shangpinliebiao = sortedShangpin;
@@ -189,12 +183,11 @@ Page({
} catch (error) {
console.error('初始化失败:', error);
this.setData({ isLoading: false });
// 错误提示已在各函数内部处理,此处仅做兜底
}
},
/**
* 加载公告和轮播图(完全复用原逻辑,使用 wx.request不使用封装 request
* 加载公告和轮播图
*/
loadGonggaoAndLunbo() {
return new Promise((resolve, reject) => {
@@ -237,7 +230,7 @@ Page({
},
/**
* 筛选商品数据(完全复用原有逻辑,不做任何改动)
* 筛选商品数据
*/
filterShangpinData() {
const { selectedLeixingId, shangpinzhuanqu, shangpinliebiao } = this.data;
@@ -337,8 +330,8 @@ Page({
},
/**
* 刷新所有数据(点击刷新按钮)
* 只刷新商品数据,公告轮播图保持不变(若需刷新可清空全局缓存后调用 loadGonggaoAndLunbo
* 刷新所有数据
* 只刷新商品数据
*/
async refreshAllData() {
if (this.data.isRefreshing) return;
@@ -346,11 +339,9 @@ Page({
wx.showLoading({ title: '刷新中...', mask: true });
try {
// 重新获取商品数据(登录状态由 fetchShopGoods 内部确保)
// 重新获取商品数据
const shopData = await fetchShopGoods();
// 公告轮播图通常不需要随刷新按钮更新,保持原样
const sortedLeixing = this.sortByPaixu(shopData.shangpinleixing || []);
const sortedZhuanqu = this.sortByPaixu(shopData.shangpinzhuanqu || []);
const sortedShangpin = this.sortByPaixu(shopData.shangpinliebiao || []);
@@ -381,7 +372,7 @@ Page({
const shangpinId = e.currentTarget.dataset.id;
if (!shangpinId) return;
wx.navigateTo({
url: `/pages/shangpinxiangqing/shangpinxiangqing?id=${shangpinId}`
url: `/pages/product-detail/product-detail?id=${shangpinId}`
});
},

View File

@@ -113,7 +113,6 @@
class="shangpin-image"
lazy-load="{{true}}"
/>
<!-- 移除已售标签 -->
</view>
<!-- 商品标题 -->

Some files were not shown because too many files have changed in this diff Show More