feat(M08-C): 补会员检索与员工概况
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user