|
|
@@ -33,10 +33,7 @@
|
|
|
|
|
|
<!-- ===== 分享邀请卡海报 ===== -->
|
|
|
<SharePoster v-if="hasFamily" :show="showPoster" :referralCode="inviteCode" :qrCodeBase64="inviteQrCode" :nickname="userNickname" :userAvatar="userAvatar" @close="showPoster = false" />
|
|
|
- <view v-else class="empty-tip">暂无家庭成员,请先创建或加入家庭</view>
|
|
|
-
|
|
|
- <!-- ===== 无家庭引导弹窗 ===== -->
|
|
|
- <family-guard ref="familyGuard" @created="onFamilyCreated" />
|
|
|
+ <view v-else class="empty-tip">暂无家庭成员,正在为您创建家庭...</view>
|
|
|
|
|
|
<!-- ===== 成员详情弹窗 ===== -->
|
|
|
<view class="modal-mask" v-if="showMemberDetailModal" @click="closeMemberDetail">
|
|
|
@@ -118,15 +115,14 @@ import {
|
|
|
} from '../../utils/api.js'
|
|
|
import store from '../../store/index.js'
|
|
|
import SharePoster from '@/components/SharePoster.vue'
|
|
|
-import FamilyGuard from '../../components/family-guard.vue'
|
|
|
+import { ensureFamily } from '../../utils/api.js'
|
|
|
|
|
|
export default {
|
|
|
- components: { SharePoster, FamilyGuard },
|
|
|
+ components: { SharePoster },
|
|
|
data() {
|
|
|
return {
|
|
|
userId: 0,
|
|
|
familyId: 0,
|
|
|
- pendingCreate: false,
|
|
|
familyName: '',
|
|
|
inviteCode: '',
|
|
|
inviteQrCode: '',
|
|
|
@@ -156,9 +152,12 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
onLoad(options) {
|
|
|
- // 支持 ?action=create 直达:无家庭用户引导创建
|
|
|
- if (options && options.action === 'create') {
|
|
|
- this.pendingCreate = true
|
|
|
+ // 无家庭时自动创建
|
|
|
+ if (!this.hasFamily) {
|
|
|
+ var self = this
|
|
|
+ ensureFamily().then(function() {
|
|
|
+ self.loadMembers()
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
onShow() {
|
|
|
@@ -208,33 +207,16 @@ export default {
|
|
|
this.inviteCode = data.inviteCode || ''
|
|
|
this.creatorId = data.creatorId
|
|
|
this.isAdmin = this.creatorId === this.userId
|
|
|
- this.checkPendingCreate()
|
|
|
} else if (res.code === 5001 || (res.message && res.message.indexOf('未加入家庭') >= 0)) {
|
|
|
- // 无家庭:弹出创建家庭引导
|
|
|
- this.showFamilyGuard()
|
|
|
+ // 无家庭:自动创建
|
|
|
+ ensureFamily().then(function() {
|
|
|
+ self.loadMembers()
|
|
|
+ })
|
|
|
}
|
|
|
} catch (e) {
|
|
|
// 静默处理
|
|
|
}
|
|
|
},
|
|
|
- showFamilyGuard() {
|
|
|
- var self = this
|
|
|
- setTimeout(function() {
|
|
|
- if (self.$refs.familyGuard) {
|
|
|
- self.$refs.familyGuard.show()
|
|
|
- }
|
|
|
- }, 300)
|
|
|
- },
|
|
|
- checkPendingCreate() {
|
|
|
- if (this.pendingCreate) {
|
|
|
- this.pendingCreate = false
|
|
|
- this.showFamilyGuard()
|
|
|
- }
|
|
|
- },
|
|
|
- onFamilyCreated() {
|
|
|
- // 家庭创建成功后刷新成员列表
|
|
|
- this.loadMembers()
|
|
|
- },
|
|
|
showMemberDetail(member) {
|
|
|
this.detailMember = member
|
|
|
this.showMemberDetailModal = true
|