统一排行榜对齐星雀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()
|
||||
|
||||
@@ -75,6 +75,7 @@ page {
|
||||
font-weight: 600;
|
||||
background: rgba(107, 163, 247, 0.45);
|
||||
border-color: rgba(107, 163, 247, 0.65);
|
||||
box-shadow: 0 0 20rpx rgba(107, 163, 247, 0.2);
|
||||
}
|
||||
|
||||
.date-grid {
|
||||
@@ -183,16 +184,19 @@ page {
|
||||
.badge-first {
|
||||
color: #fff;
|
||||
background: linear-gradient(145deg, #6BA3F7, #4A7FD4);
|
||||
box-shadow: 0 4rpx 16rpx rgba(107, 163, 247, 0.4);
|
||||
}
|
||||
|
||||
.badge-silver {
|
||||
color: #fff;
|
||||
background: linear-gradient(145deg, #A8B4C4, #7A8899);
|
||||
box-shadow: 0 4rpx 12rpx rgba(168, 180, 196, 0.25);
|
||||
}
|
||||
|
||||
.badge-bronze {
|
||||
color: #fff;
|
||||
background: linear-gradient(145deg, #C4A882, #9A7858);
|
||||
box-shadow: 0 4rpx 12rpx rgba(196, 168, 130, 0.25);
|
||||
}
|
||||
|
||||
.p-avatar-wrap {
|
||||
@@ -201,7 +205,12 @@ page {
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
|
||||
.wrap-first { padding: 5rpx; background: linear-gradient(145deg, #8EB8FF, #5B8FD8); }
|
||||
.wrap-first {
|
||||
padding: 5rpx;
|
||||
background: linear-gradient(145deg, #8EB8FF, #5B8FD8);
|
||||
box-shadow: 0 6rpx 24rpx rgba(107, 163, 247, 0.3);
|
||||
}
|
||||
|
||||
.wrap-silver { background: linear-gradient(145deg, #C8D0DA, #909AA8); }
|
||||
.wrap-bronze { background: linear-gradient(145deg, #D4B896, #A88860); }
|
||||
|
||||
@@ -222,6 +231,7 @@ page {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.p-name-first { font-size: 28rpx; color: #fff; }
|
||||
@@ -270,6 +280,16 @@ page {
|
||||
.p-pedestal {
|
||||
width: 88%;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.p-pedestal::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0; left: 10%; right: 10%;
|
||||
height: 2rpx;
|
||||
background: rgba(255,255,255,0.15);
|
||||
border-radius: 2rpx;
|
||||
}
|
||||
|
||||
.pedestal-first {
|
||||
@@ -335,6 +355,7 @@ page {
|
||||
align-items: center;
|
||||
padding: 20rpx 22rpx;
|
||||
background: rgba(12, 16, 28, 0.92);
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
.lc-rank {
|
||||
|
||||
Reference in New Issue
Block a user