sync changes: 出场顺序优化、联系人功能

This commit is contained in:
Z-WICK
2026-01-15 15:57:08 +08:00
committed by DevOps
parent 412069524e
commit 7c4507c3ed
7 changed files with 81 additions and 16 deletions
+4 -4
View File
@@ -10,7 +10,7 @@ import request from '@/utils/request.js'
*/ */
export function getScheduleResult(competitionId) { export function getScheduleResult(competitionId) {
return request.get('/martial/schedule/result', { return request.get('/martial/schedule/result', {
params: { competitionId } competitionId
}) })
} }
@@ -97,7 +97,7 @@ export function saveDispatch(data) {
*/ */
export function getScheduleStatus(competitionId) { export function getScheduleStatus(competitionId) {
return request.get('/mini/schedule/status', { return request.get('/mini/schedule/status', {
params: { competitionId } competitionId
}) })
} }
@@ -106,9 +106,9 @@ export function getScheduleStatus(competitionId) {
* @param {Number} competitionId - 赛事ID * @param {Number} competitionId - 赛事ID
* @param {Number} projectId - 项目ID (可选) * @param {Number} projectId - 项目ID (可选)
*/ */
export function getLineup(competitionId, projectId) { export function getLineup(competitionId, projectId, orderId) {
return request.get('/mini/schedule/lineup', { return request.get('/mini/schedule/lineup', {
params: { competitionId, projectId } competitionId, projectId, orderId
}) })
} }
+30
View File
@@ -124,6 +124,36 @@ export default {
try { try {
await athleteAPI.saveContact(this.formData); await athleteAPI.saveContact(this.formData);
uni.showToast({ title: '保存成功', icon: 'success' }); uni.showToast({ title: '保存成功', icon: 'success' });
// Set flag to notify previous page
uni.setStorageSync('contactListNeedRefresh', true);
// Notify previous page to refresh contact list
try {
const pages = getCurrentPages();
console.log('页面栈长度:', pages.length);
console.log('页面栈:', pages);
if (pages.length >= 2) {
const prevPage = pages[pages.length - 2];
console.log('上一页:', prevPage);
// Try different ways to access the component
const vm = prevPage.$vm || prevPage;
console.log('vm:', vm);
if (vm && typeof vm.loadContactList === 'function') {
console.log('调用 loadContactList');
vm.loadContactList();
} else if (vm && vm.$refs && vm.$refs.page && typeof vm.$refs.page.loadContactList === 'function') {
console.log('通过 $refs 调用');
vm.$refs.page.loadContactList();
}
}
} catch (e) {
console.error('通知上一页失败:', e);
}
// Also emit event as backup
uni.$emit('contactAdded');
setTimeout(() => { uni.navigateBack(); }, 1500); setTimeout(() => { uni.navigateBack(); }, 1500);
} catch (err) { } catch (err) {
console.error('保存联系人失败:', err); console.error('保存联系人失败:', err);
+9 -1
View File
@@ -168,7 +168,15 @@ export default {
}) })
let list = res.records || (Array.isArray(res) ? res : []) let list = res.records || (Array.isArray(res) ? res : [])
this.playerList = list.map(item => ({ // Deduplicate by idCard
const seen = new Set()
const uniqueList = list.filter(item => {
const idCard = item.idCard || item.idCardNumber
if (idCard && seen.has(idCard)) return false
if (idCard) seen.add(idCard)
return true
})
this.playerList = uniqueList.map(item => ({
id: item.id, id: item.id,
name: item.name || item.playerName, name: item.name || item.playerName,
idCard: item.idCard || item.idCardNumber, idCard: item.idCard || item.idCardNumber,
+3 -1
View File
@@ -82,6 +82,7 @@ export default {
data() { data() {
return { return {
eventId: '', eventId: '',
orderId: '',
eventInfo: { eventInfo: {
id: '', id: '',
title: '', title: '',
@@ -96,6 +97,7 @@ export default {
onLoad(options) { onLoad(options) {
if (options.id) { if (options.id) {
this.eventId = options.id this.eventId = options.id
this.orderId = options.orderId || null
this.loadEventDetail(options.id) this.loadEventDetail(options.id)
} }
}, },
@@ -192,7 +194,7 @@ export default {
if (url) { if (url) {
// 跳转时传递赛事ID // 跳转时传递赛事ID
uni.navigateTo({ uni.navigateTo({
url: `${url}?eventId=${this.eventId}` url: `${url}?eventId=${this.eventId}&orderId=${this.orderId || ""}`
}) })
} else { } else {
uni.showToast({ uni.showToast({
+7 -5
View File
@@ -63,6 +63,7 @@ export default {
data() { data() {
return { return {
eventId: '', eventId: '',
orderId: '',
loading: true, loading: true,
isScheduleCompleted: false, isScheduleCompleted: false,
currentGroupIndex: 0, currentGroupIndex: 0,
@@ -79,6 +80,7 @@ export default {
onLoad(options) { onLoad(options) {
if (options.eventId) { if (options.eventId) {
this.eventId = options.eventId this.eventId = options.eventId
this.orderId = options.orderId || null
this.checkScheduleStatus() this.checkScheduleStatus()
} }
}, },
@@ -87,8 +89,8 @@ export default {
async checkScheduleStatus() { async checkScheduleStatus() {
try { try {
const res = await getScheduleStatus(this.eventId) const res = await getScheduleStatus(this.eventId)
if (res.data) { if (res) {
this.isScheduleCompleted = res.data.isCompleted this.isScheduleCompleted = res.isCompleted
if (this.isScheduleCompleted) { if (this.isScheduleCompleted) {
await this.loadLineup() await this.loadLineup()
} }
@@ -103,9 +105,9 @@ export default {
async loadLineup() { async loadLineup() {
try { try {
const res = await getLineup(this.eventId) const res = await getLineup(this.eventId, null, this.orderId)
if (res.data && res.data.groups) { if (res && res.groups) {
this.groups = res.data.groups this.groups = res.groups
} }
} catch (error) { } catch (error) {
console.error('加载出场顺序失败:', error) console.error('加载出场顺序失败:', error)
+26 -3
View File
@@ -282,6 +282,11 @@ export default {
} }
}, },
onLoad(options) { onLoad(options) {
// Listen for contact added event
uni.$on('contactAdded', () => {
console.log('=== 收到 contactAdded 事件 ===')
this.loadContactList()
})
if (options.eventId) { if (options.eventId) {
this.eventId = options.eventId this.eventId = options.eventId
this.loadEventDetail(options.eventId) this.loadEventDetail(options.eventId)
@@ -309,9 +314,21 @@ export default {
this.loadPlayerList() this.loadPlayerList()
} }
}, },
onUnload() {
uni.$off('contactAdded')
},
onShow() { onShow() {
// Refresh contact list when returning from add-contact page console.log('=== onShow 被触发 ===')
// Check if contact list needs refresh
const needRefresh = uni.getStorageSync('contactListNeedRefresh')
if (needRefresh) {
console.log('检测到需要刷新联系人列表')
uni.removeStorageSync('contactListNeedRefresh')
this.loadContactList() this.loadContactList()
} else {
// Always refresh contact list when page shows
this.loadContactList()
}
if (this.currentStep === 1) { if (this.currentStep === 1) {
if (this.isTeamProject) { if (this.isTeamProject) {
this.loadTeamList() this.loadTeamList()
@@ -324,13 +341,19 @@ export default {
// Contact methods // Contact methods
async loadContactList() { async loadContactList() {
try { try {
console.log('=== 开始加载联系人列表 ===')
const res = await athleteAPI.getContactList({ current: 1, size: 100 }) const res = await athleteAPI.getContactList({ current: 1, size: 100 })
this.contactList = (res.records || []).map(item => ({ console.log('联系人API返回:', res)
const records = res.records || res.data?.records || []
console.log('联系人记录:', records)
this.contactList = records.map(item => ({
id: item.id, id: item.id,
name: item.name, name: item.name,
phone: item.phone, phone: item.phone,
idCard: item.idCard idCard: item.idCard,
isDefault: item.isDefault
})) }))
console.log('处理后的联系人列表:', this.contactList)
// Auto select default contact if exists // Auto select default contact if exists
if (!this.selectedContact && this.contactList.length > 0) { if (!this.selectedContact && this.contactList.length > 0) {
const defaultContact = this.contactList.find(c => c.isDefault) || this.contactList[0] const defaultContact = this.contactList.find(c => c.isDefault) || this.contactList[0]
@@ -341,7 +341,7 @@ export default {
}, },
goToEventDetail(item) { goToEventDetail(item) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/event-detail/event-detail?id=' + item.competitionId url: '/pages/event-detail/event-detail?id=' + item.competitionId + '&orderId=' + item.id
}); });
}, },
handleViewCert(item) { handleViewCert(item) {