feat(M08-C): 补会员检索与员工概况

This commit is contained in:
Codex
2026-08-10 10:35:44 +08:00
parent 8b46863cd8
commit 1b0839e881
22 changed files with 758 additions and 74 deletions
+43 -6
View File
@@ -9,7 +9,11 @@ Page({
storeName: '',
rooms: [],
roomIndex: 0,
userId: '',
memberLoading: false,
memberSearch: '',
members: [],
selectedMemberId: '',
selectedMemberName: '',
startDate: '',
startTime: '',
endDate: '',
@@ -34,7 +38,7 @@ Page({
endDate: this.datePart(end),
endTime: this.timePart(end),
})
await this.loadRooms()
await Promise.all([this.loadRooms(), this.loadMembers()])
},
async loadRooms() {
@@ -60,7 +64,14 @@ Page({
}
},
inputUserId(event) { this.setData({ userId: String(event.detail.value || '').trim() }) },
inputMemberSearch(event) { this.setData({ memberSearch: String(event.detail.value || '').trim() }) },
searchMembers() { this.loadMembers() },
selectMember(event) {
const memberId = event.currentTarget.dataset.memberId
const member = this.data.members.find((item) => item.memberId === memberId)
if (!member) return
this.setData({ selectedMemberId: member.memberId, selectedMemberName: member.displayName })
},
selectRoom(event) { this.setData({ roomIndex: Number(event.detail.value) }) },
selectPricingMode(event) { this.setData({ pricingModeIndex: Number(event.detail.value) }) },
changeStartDate(event) { this.setData({ startDate: event.detail.value }) },
@@ -68,13 +79,39 @@ Page({
changeEndDate(event) { this.setData({ endDate: event.detail.value }) },
changeEndTime(event) { this.setData({ endTime: event.detail.value }) },
async loadMembers() {
this.setData({ memberLoading: true, errorMessage: '' })
try {
await ensureLogin()
const search = this.data.memberSearch
? `&search=${encodeURIComponent(this.data.memberSearch)}`
: ''
const response = await request(`/management/members?page=1&pageSize=20&status=ACTIVE${search}`)
const members = (response.data?.items || []).map((member) => ({
...member,
displayName: `${member.nickname || '未命名会员'} · ${member.maskedPhone || `ID ${member.memberId}`}`,
balanceText: cents(member.wallet?.totalBalanceCents),
}))
const selectedStillVisible = members.some((member) => member.memberId === this.data.selectedMemberId)
this.setData({
members,
selectedMemberId: selectedStillVisible ? this.data.selectedMemberId : '',
selectedMemberName: selectedStillVisible ? this.data.selectedMemberName : '',
})
} catch (error) {
this.setData({ errorMessage: error.message || '会员加载失败' })
} finally {
this.setData({ memberLoading: false })
}
},
async submit() {
if (this.data.submitting) return
const room = this.data.rooms[this.data.roomIndex]
const pricingMode = this.data.pricingModes[this.data.pricingModeIndex]?.value
const userId = this.data.userId
if (!/^[1-9]\d{0,19}$/.test(userId)) {
this.setData({ errorMessage: '请输入有效的会员用户 ID' })
const userId = this.data.selectedMemberId
if (!userId) {
this.setData({ errorMessage: '请从授权范围内选择会员' })
return
}
if (!room) {