yeg
2026-09-28 85bfb9351803d97a33329d507f30a2f78bf1fc75
rencaika/pages/family-card-unbind/family-card-unbind.uvue
@@ -27,7 +27,7 @@
<script setup lang="uts">
   import { apiEnvironment } from '../../config/api.uts'
   import { getFamilyCards, unbindFamilyCards } from '../../services/portal.uts'
   import { getFamilyCards, getTalentCardProfile, unbindFamilyCards } from '../../services/portal.uts'
   import { safeBack } from '../../utils/navigation.uts'
   const navTop = ref(28)
@@ -41,6 +41,10 @@
   const listLoaded = ref(false)
   const listError = ref(false)
   const talentId = ref('')
   const talentCardId = ref('')
   // 模板上的返回按钮一直挂着 @tap="goBack" 却没定义处理函数,点了没有任何反应。
   const goBack = () => safeBack('/pages/family-card/family-card')
   onLoad((options: any) => {
      // #ifdef MP-WEIXIN
@@ -52,22 +56,36 @@
      navRight.value = systemInfo.windowWidth - capsule.right
      // #endif
      talentId.value = options != null && options['talentId'] != null ? options['talentId'] as string : (apiEnvironment == 'development' ? '2' : '')
      loadMembers()
      resolveTalentCardId()
   })
   const loadMembers = () => {
      listLoading.value = true
      listLoaded.value = false
      listError.value = false
      if (talentId.value == '') { listLoading.value = false; listError.value = true; return }
      getFamilyCards(talentId.value, (data: any) => {
         familyMembers.value = (data as any[]).filter((item: any) => item.canUnbind === true).map((item: any) => { item.id = '' + item.id; return item })
      if (talentCardId.value == '') { listLoading.value = false; listError.value = true; return }
      getFamilyCards(talentCardId.value, (data: any) => {
         const items = (data as any[]) || []
         familyMembers.value = items.filter((item: any) => item.status === 1).map((item: any) => ({
            id: '' + item.id,
            name: item.dependentName != null ? item.dependentName : '',
            mobile: item.dependentMobile != null ? item.dependentMobile : '',
            relationship: item.relation != null ? item.relation : ''
         }))
         selectedIds.value = selectedIds.value.filter((id: string) => familyMembers.value.some((item: any) => item.id == id))
         listLoading.value = false
         listLoaded.value = true
      }, () => { listLoading.value = false; listError.value = true })
   }
   const goBack = () => safeBack('/pages/family-card/family-card')
   const resolveTalentCardId = () => {
      if (talentId.value == '') { listLoading.value = false; listError.value = true; return }
      getTalentCardProfile(talentId.value, (data: any) => {
         const card = data != null ? data.card : null
         talentCardId.value = card != null && card.id != null ? '' + card.id : ''
         if (talentCardId.value == '') { listLoading.value = false; listError.value = true; return }
         loadMembers()
      }, () => { listLoading.value = false; listError.value = true })
   }
   const isSelected = (id: string) => selectedIds.value.indexOf(id) >= 0
   const toggleMember = (id: string) => {
      const next = selectedIds.value.slice()
@@ -96,7 +114,7 @@
      })
   }
   const unbindSelected = (ids: string[]) => {
      unbindFamilyCards(ids, talentId.value, () => { isSubmitting.value = false; uni.showToast({ title: '已解除绑定', icon: 'success' }); setTimeout(() => safeBack('/pages/family-card/family-card'), 700) }, (error) => { isSubmitting.value = false; uni.showToast({ title: error.message, icon: 'none' }) })
      unbindFamilyCards(ids, talentCardId.value, () => { isSubmitting.value = false; uni.showToast({ title: '已解除绑定', icon: 'success' }); setTimeout(() => safeBack('/pages/family-card/family-card'), 700) }, (error) => { isSubmitting.value = false; uni.showToast({ title: error.message, icon: 'none' }) })
   }
</script>