统一排行榜对齐星雀UI,页面资源后台配置实时刷新
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user