统一排行榜对齐星雀UI,页面资源后台配置实时刷新

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-06-27 01:26:11 +08:00
parent 1ab2e2080a
commit 21112173f2
292 changed files with 64010 additions and 81 deletions

View File

@@ -1,9 +1,10 @@
/**
* 统一排行榜(打手/管事/组长/商家)
* 统一排行榜(打手/管事/组长/商家)— 对齐星雀 fighter-rank排序按收益/流水
* POST /yonghu/phbhqsj
*/
import request from '../../utils/request.js'
import { resolveAvatarUrl, getDefaultAvatarUrl } from '../../utils/avatar.js'
import { getPaihangImgUrls } from '../../utils/page-assets.js'
const RANK_API = '/yonghu/phbhqsj'
@@ -32,8 +33,8 @@ const ROLE_META = {
mainType: 'money',
metrics: [
{ field: 'jiedan_zongliang', label: '接单量', type: 'int' },
{ field: 'chengjiao_zongliang', label: '成交量', type: 'int' },
{ field: 'jiedan_zonge', label: '接单额', type: 'money' },
{ field: 'chengjiao_zongliang', label: '成交量', type: 'int' },
],
},
guanshi: {
@@ -71,7 +72,7 @@ const ROLE_META = {
function buildAvatar(path, app) {
const def = getDefaultAvatarUrl(app)
if (!path) return def
if (!path || path === 'null' || path === 'undefined') return def
return resolveAvatarUrl(path, app) || def
}
@@ -83,7 +84,7 @@ Page({
currentRole: 'dashou',
currentDate: '今日',
roleMeta: ROLE_META.dashou,
sortLabel: '成交总额',
sortLabel: '收益',
isLoading: true,
rankList: [],
topThree: [],
@@ -95,34 +96,34 @@ Page({
onLoad(options) {
const type = options.type || options.rankType || 'dashou'
const validRole = ROLE_META[type] ? type : 'dashou'
this._onConfigReady = () => this.initPageAssets()
getApp().on('configReady', this._onConfigReady)
this.initPageAssets()
this.applyRole(validRole, false)
this.fetchRankList()
},
onUnload() {
if (this._onConfigReady) {
getApp().off('configReady', this._onConfigReady)
}
},
onPullDownRefresh() {
this.initPageAssets()
this.fetchRankList().finally(() => wx.stopPullDownRefresh())
},
initPageAssets() {
this.syncDefaultAvatar()
const g = getApp().globalData
const oss = (g.ossImageUrl || '').replace(/\/$/, '')
const assets = g.paihangAssets || {}
const url = (p) => (p ? `${oss}/${String(p).replace(/^\//, '')}` : '')
this.setData({
imgUrls: {
pageBg: url(assets.pageBg) || `${oss}/beijing/paihangbang/page-bg.jpg`,
cardBg: url(assets.cardBg) || `${oss}/beijing/paihangbang/list-card-bg.png`,
emptyIcon: url(assets.emptyIcon) || `${oss}/beijing/paihangbang/empty.png`,
refreshIcon: url(assets.refreshIcon) || `${oss}/beijing/paihangbang/icon-refresh.png`,
},
})
this.setData({ imgUrls: getPaihangImgUrls() })
},
syncDefaultAvatar() {
const def = getDefaultAvatarUrl()
if (def) this.setData({ defaultAvatar: def })
if (def && def !== this.data.defaultAvatar) {
this.setData({ defaultAvatar: def })
}
},
ensureAvatars() {
@@ -134,7 +135,8 @@ Page({
this.setData({ defaultAvatar: def })
return
}
const isValid = (url) => url && typeof url === 'string' && (url.startsWith('http') || (oss && url.indexOf(oss) === 0))
const isValid = (url) =>
url && typeof url === 'string' && (url.startsWith('http') || (oss && url.indexOf(oss) === 0))
const fix = (item) => ({ ...item, avatar: isValid(item.avatar) ? item.avatar : def })
this.setData({
defaultAvatar: def,
@@ -165,6 +167,7 @@ Page({
},
onRefreshTap() {
this.initPageAssets()
this.fetchRankList()
},
@@ -256,6 +259,7 @@ Page({
},
onShow() {
this.initPageAssets()
this.syncDefaultAvatar()
this.ensureAvatars()
this.registerNotificationComponent()