|
@@ -84,11 +84,12 @@
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <!-- 全量家庭成员列表(后备) -->
|
|
|
|
|
- <view class="member-list" v-if="familyMembers.length > 0 && (candidates.length === 0 || !showCandidatesOnly)">
|
|
|
|
|
|
|
+ <!-- 全量家庭成员列表(始终显示,候选区已展示的成员去重) -->
|
|
|
|
|
+ <view class="member-list" v-if="familyMembers.length > 0">
|
|
|
|
|
+ <text class="member-list-hint" v-if="candidates.length > 0">全部成员({{ otherMembers.length }} 人)</text>
|
|
|
<view
|
|
<view
|
|
|
class="member-item"
|
|
class="member-item"
|
|
|
- v-for="(member, mIdx) in familyMembers"
|
|
|
|
|
|
|
+ v-for="(member, mIdx) in otherMembers"
|
|
|
:key="mIdx"
|
|
:key="mIdx"
|
|
|
:class="{ 'member-selected': selectedMemberId === (member.userId || member.id) }"
|
|
:class="{ 'member-selected': selectedMemberId === (member.userId || member.id) }"
|
|
|
@click="selectAndClose(member)"
|
|
@click="selectAndClose(member)"
|
|
@@ -415,7 +416,6 @@ export default {
|
|
|
matchConfidence: null,
|
|
matchConfidence: null,
|
|
|
matchLabel: '',
|
|
matchLabel: '',
|
|
|
candidates: [],
|
|
candidates: [],
|
|
|
- showCandidatesOnly: false,
|
|
|
|
|
showMemberPanel: false,
|
|
showMemberPanel: false,
|
|
|
showAutoCreateForm: false,
|
|
showAutoCreateForm: false,
|
|
|
newMember: { name: '', gender: 'male', age: '' },
|
|
newMember: { name: '', gender: 'male', age: '' },
|
|
@@ -469,6 +469,23 @@ export default {
|
|
|
if (this.extractedName) return this.extractedName + (this.needBind ? '(待绑定)' : '')
|
|
if (this.extractedName) return this.extractedName + (this.needBind ? '(待绑定)' : '')
|
|
|
return '未选择'
|
|
return '未选择'
|
|
|
},
|
|
},
|
|
|
|
|
+ /** 全量成员减去候选区已展示的成员,避免重复 */
|
|
|
|
|
+ otherMembers() {
|
|
|
|
|
+ var candIds = {}
|
|
|
|
|
+ for (var i = 0; i < this.candidates.length; i++) {
|
|
|
|
|
+ var c = this.candidates[i]
|
|
|
|
|
+ var cid = c.id || c.userId
|
|
|
|
|
+ if (cid !== null && cid !== undefined) candIds[cid] = true
|
|
|
|
|
+ }
|
|
|
|
|
+ var list = []
|
|
|
|
|
+ for (var j = 0; j < this.familyMembers.length; j++) {
|
|
|
|
|
+ var m = this.familyMembers[j]
|
|
|
|
|
+ var mid = m.userId || m.id
|
|
|
|
|
+ if (mid !== null && mid !== undefined && candIds[mid]) continue
|
|
|
|
|
+ list.push(m)
|
|
|
|
|
+ }
|
|
|
|
|
+ return list
|
|
|
|
|
+ },
|
|
|
canConfirm() {
|
|
canConfirm() {
|
|
|
if (this.parsing) return false
|
|
if (this.parsing) return false
|
|
|
if (this.needBind && !this.selectedMemberId && !this.createdMemberId) return false
|
|
if (this.needBind && !this.selectedMemberId && !this.createdMemberId) return false
|
|
@@ -628,7 +645,6 @@ export default {
|
|
|
self.matchedMemberId = detail.matchedMemberId || null
|
|
self.matchedMemberId = detail.matchedMemberId || null
|
|
|
self.needBind = !!detail.needBind
|
|
self.needBind = !!detail.needBind
|
|
|
self.candidates = detail.candidates || []
|
|
self.candidates = detail.candidates || []
|
|
|
- self.showCandidatesOnly = !!detail.showCandidatesOnly
|
|
|
|
|
self.loadFamilyMembers()
|
|
self.loadFamilyMembers()
|
|
|
if (!self.needBind) {
|
|
if (!self.needBind) {
|
|
|
self.selectedMemberId = self.matchedMemberId
|
|
self.selectedMemberId = self.matchedMemberId
|
|
@@ -1277,6 +1293,12 @@ export default {
|
|
|
flex-wrap: wrap;
|
|
flex-wrap: wrap;
|
|
|
gap: 16rpx;
|
|
gap: 16rpx;
|
|
|
}
|
|
}
|
|
|
|
|
+.member-list-hint {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
|
+ color: #999;
|
|
|
|
|
+ margin-bottom: 8rpx;
|
|
|
|
|
+}
|
|
|
.member-item {
|
|
.member-item {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|