|
|
@@ -82,7 +82,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { validateInvitation, validateFamilyCode, checkUserFamily, bindReferral } from '@/utils/api.js'
|
|
|
+import { validateInvitation, validateFamilyCode, checkUserFamily, bindReferral, getMyJoinRequest } from '@/utils/api.js'
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
|
@@ -99,6 +99,7 @@ export default {
|
|
|
isLoggedIn: false,
|
|
|
inviteInfo: null,
|
|
|
familyStatus: null,
|
|
|
+ joinRequest: null,
|
|
|
error: '',
|
|
|
// 动态文案
|
|
|
tipText: '',
|
|
|
@@ -224,13 +225,11 @@ export default {
|
|
|
this.$store && this.$store.commit('setFamilyId', res.data.familyId)
|
|
|
uni.setStorageSync('familyId', res.data.familyId)
|
|
|
}
|
|
|
- // 已在目标家庭 -> 直接进首页
|
|
|
- if (this.inviteInfo && this.familyStatus.inFamily &&
|
|
|
+ // 已在目标家庭
|
|
|
+ if (this.inviteInfo && this.familyStatus.inFamily &&
|
|
|
this.familyStatus.familyId === this.inviteInfo.familyId) {
|
|
|
- this.setRedirectInfo(true)
|
|
|
- this.loading = false
|
|
|
- // 延迟跳转,让用户看到成功提示
|
|
|
- setTimeout(() => this.goHome(), 1000)
|
|
|
+ // 检查加入请求状态
|
|
|
+ await this.checkJoinRequestStatus()
|
|
|
return
|
|
|
}
|
|
|
// 不在目标家庭 -> 去完善个人信息页提交申请
|
|
|
@@ -247,6 +246,45 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ // 检查加入请求状态
|
|
|
+ async checkJoinRequestStatus() {
|
|
|
+ try {
|
|
|
+ var reqRes = await getMyJoinRequest()
|
|
|
+ if (reqRes && reqRes.data) {
|
|
|
+ var req = reqRes.data
|
|
|
+ if (req && req.status === 'pending') {
|
|
|
+ // 已提交申请但等待审批
|
|
|
+ this.tipText = '您的加入申请已提交,等待邀请人同意'
|
|
|
+ this.btnText = '查看申请状态'
|
|
|
+ this.joinRequest = req
|
|
|
+ this.loading = false
|
|
|
+ return
|
|
|
+ } else if (req && req.status === 'approved') {
|
|
|
+ // 已批准,直接进入成员管理页面
|
|
|
+ this.loading = false
|
|
|
+ uni.redirectTo({
|
|
|
+ url: '/pages/profile-extra/family-members'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ } else if (req && req.status === 'rejected') {
|
|
|
+ // 已拒绝
|
|
|
+ this.tipText = '您的加入申请已被拒绝,如需重新申请请联系邀请人'
|
|
|
+ this.btnText = '返回首页'
|
|
|
+ this.loading = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 无请求记录,视为已是正式成员
|
|
|
+ this.setRedirectInfo(true)
|
|
|
+ this.loading = false
|
|
|
+ } catch (e) {
|
|
|
+ console.log('检查加入请求状态失败', e)
|
|
|
+ // 降级处理:直接进入首页
|
|
|
+ this.setRedirectInfo(true)
|
|
|
+ this.loading = false
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
setRedirectInfo(isInTargetFamily) {
|
|
|
if (isInTargetFamily) {
|
|
|
this.tipText = '您已是该家庭成员'
|
|
|
@@ -262,9 +300,17 @@ export default {
|
|
|
if (this.redirecting) return
|
|
|
this.redirecting = true
|
|
|
|
|
|
- // 已在目标家庭 -> 直接进首页
|
|
|
+ // 已在目标家庭且请求已批准 -> 直接进入成员管理页面
|
|
|
if (this.inviteInfo && this.familyStatus && this.familyStatus.inFamily &&
|
|
|
this.familyStatus.familyId === this.inviteInfo.familyId) {
|
|
|
+ if (this.joinRequest && this.joinRequest.status === 'approved') {
|
|
|
+ this.redirecting = false
|
|
|
+ uni.redirectTo({
|
|
|
+ url: '/pages/profile-extra/family-members'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 已在家庭但请求 pending,不重复跳转,直接返回首页
|
|
|
this.redirecting = false
|
|
|
this.goHome()
|
|
|
return
|