backup: 紫色UI换肤前完整备份(当前橙色逍遥梦主题)

保留改造前全部页面样式与功能代码,便于回滚。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-06-29 01:59:42 +08:00
parent a751708d6e
commit c03d22776f
49 changed files with 6025 additions and 3784 deletions

View File

@@ -1,5 +1,10 @@
import { createPage, request, ensureRoleOnCenterPage } from '../../utils/base-page.js';
import { getOrderStatusText } from '../../utils/api-helper.js';
import {
STAFF_API, isStaffMode, isMerchantPortalUser, refreshStaffContext, syncStaffUi,
restoreStaffContextAfterAuth, applyStaffStatsToPage, getStaffContext,
} from '../../utils/staff-api.js';
import { ensurePhoneAuth } from '../../utils/phone-auth.js';
const app = getApp();
@@ -12,6 +17,11 @@ Page(createPage({
statusBar: 20,
navBar: 44,
isShangjia: false,
isStaffMode: false,
staffRoleName: '',
quotaAvailable: '0.00',
canDispatch: true,
canStaffManage: true,
lunboList: [],
lunbozhanwei: '/images/lunbozhanwei.jpg',
gonggao: '',
@@ -32,21 +42,42 @@ Page(createPage({
recentLoading: false,
},
onLoad() {
async onLoad() {
const sys = wx.getSystemInfoSync();
this.setData({
statusBar: sys.statusBarHeight || 20,
navBar: (sys.statusBarHeight || 20) + 44,
lunbozhanwei: app.globalData.lunbozhanwei || '/images/lunbozhanwei.jpg',
});
if (wx.getStorageSync('token')) {
await restoreStaffContextAfterAuth();
}
this.checkRole();
syncStaffUi(this);
this.waitForConfigAndLoadBanner();
this.checkColdStartPopup('shangjiaduan');
},
onShow() {
async onShow() {
const phoneOk = await ensurePhoneAuth({ redirect: true, role: 'shangjia' });
if (!phoneOk) return;
this.registerNotificationComponent();
// 先用本地缓存渲染,再向服务端同步子客服身份
this.checkRole();
syncStaffUi(this);
const token = wx.getStorageSync('token');
const isOwner = Number(wx.getStorageSync('shangjiastatus')) === 1;
if (token && !isOwner) {
await restoreStaffContextAfterAuth();
this.checkRole();
syncStaffUi(this);
} else if (isStaffMode()) {
await refreshStaffContext(request);
this.checkRole();
syncStaffUi(this);
applyStaffStatsToPage(this, getStaffContext());
}
if (this.data.isShangjia) {
ensureRoleOnCenterPage(this, 'shangjia');
this.loadDashboard();
@@ -78,8 +109,7 @@ Page(createPage({
},
checkRole() {
const ok = Number(wx.getStorageSync('shangjiastatus')) === 1;
this.setData({ isShangjia: ok });
this.setData({ isShangjia: isMerchantPortalUser() });
},
loadBannerData(forceFetch) {
@@ -132,6 +162,12 @@ Page(createPage({
},
async loadShangjiaBrief() {
if (isStaffMode()) {
const ctx = await refreshStaffContext(request);
syncStaffUi(this);
applyStaffStatsToPage(this, ctx);
return;
}
try {
const res = await request({
url: '/yonghu/shangjiaxinxi',
@@ -156,7 +192,7 @@ Page(createPage({
async loadPendingStats() {
try {
const res = await request({
url: '/dingdan/sjdingdanhq',
url: isStaffMode() ? STAFF_API.orderList : '/dingdan/sjdingdanhq',
method: 'POST',
data: { zhuangtai_list: [8], page: 1, page_size: 20 },
});
@@ -187,7 +223,7 @@ Page(createPage({
this.setData({ recentLoading: true });
try {
const res = await request({
url: '/dingdan/sjdingdanhq',
url: isStaffMode() ? STAFF_API.orderList : '/dingdan/sjdingdanhq',
method: 'POST',
data: {
zhuangtai_list: ALL_ORDER_ZHUANGTAI,
@@ -206,7 +242,7 @@ Page(createPage({
return {
dingdan_id: item.dingdan_id,
title: item.jieshao || '暂无描述',
time: item.create_time || '',
time: item.create_time || item.CreateTime || '',
status: getOrderStatusText(item.zhuangtai),
money: item.jine || '0.00',
raw,

View File

@@ -7,7 +7,7 @@
</view>
</view>
<block wx:if="{{!isShangjia}}">
<block wx:if="{{!isShangjia && !isStaffMode}}">
<view class="guest-box sj-mx20 sj-panel">
<text class="guest-title">商家入驻</text>
<text class="guest-desc">完成入驻后可发单、管理订单</text>
@@ -39,7 +39,11 @@
<text class="sj-notice-txt">{{gonggao}}</text>
</view>
<view class="sj-fadan-row">
<view class="staff-banner sj-mx20" wx:if="{{isStaffMode}}">
<text class="staff-banner-txt">商家客服 · {{staffRoleName}} · 可用额度 ¥{{quotaAvailable}}</text>
</view>
<view class="sj-fadan-row" wx:if="{{canDispatch}}">
<view class="sj-fadan-img-btn sj-fadan-img-btn--left" bindtap="goExpress"/>
<view class="sj-fadan-img-btn sj-fadan-img-btn--right" bindtap="goDispatch"/>
</view>
@@ -73,7 +77,7 @@
<text class="stat-num">{{stats.todayRefund}}</text>
</view>
</view>
<view class="stats-kefu-wrap">
<view class="stats-kefu-wrap" wx:if="{{canStaffManage}}">
<view class="kefu-row-inset flexm">
<view class="kefu-btn-inset" bindtap="goKefuKey">
<image class="kefu-inset-img" src="{{imgUrls.kefuKeyBtn}}" mode="widthFix"/>

View File

@@ -307,3 +307,16 @@ page {
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.staff-banner {
margin-top: 16rpx;
padding: 16rpx 24rpx;
background: #fff8e8;
border-radius: 12rpx;
border: 1rpx solid #f0d89a;
}
.staff-banner-txt {
font-size: 24rpx;
color: #8a6d2b;
}