| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <view class="page">
- <!-- Loading -->
- <view class="center-tip" wx:if="{{loading}}">
- <view class="loading-spinner"></view>
- <text class="tip-text">加载中...</text>
- </view>
- <!-- Empty -->
- <view class="center-tip" wx:elif="{{empty}}">
- <text class="empty-icon">📋</text>
- <text class="tip-text">还没有录入任何成员</text>
- <text class="tip-sub">去「录入成员」添加第一条记录吧</text>
- </view>
- <!-- List -->
- <scroll-view scroll-y class="list-wrap" wx:else>
- <view class="list-header">
- <text class="list-count">共 {{members.length}} 条录入</text>
- <view class="refresh-btn" bindtap="onRefresh">
- <text class="refresh-icon">↻</text>
- <text>刷新</text>
- </view>
- </view>
- <view class="member-card" wx:for="{{members}}" wx:key="id">
- <view class="card-main" bindtap="viewDetail" data-member="{{item}}">
- <view class="card-avatar sex-{{item.sex}}">
- <text>{{item.name[0]}}</text>
- </view>
- <view class="card-info">
- <view class="card-name-row">
- <text class="card-name">{{item.name}}</text>
- <text class="card-tag sex-tag-{{item.sex}}">{{item.sex === 1 ? '男' : item.sex === 2 ? '女' : ''}}</text>
- <text class="card-tag pass-tag" wx:if="{{item.is_pass_away === 1}}">已故</text>
- </view>
- <view class="card-meta">
- <text wx:if="{{item.birthday_date}}">{{item.birthday_date}}</text>
- <text wx:if="{{item.family_rank}}" class="meta-sep">· 第{{item.family_rank}}世</text>
- <text wx:if="{{item.name_word_generation}}" class="meta-sep">· {{item.name_word_generation}}字辈</text>
- </view>
- <text class="card-time">录入于 {{item.create_time}}</text>
- </view>
- </view>
- <view class="card-actions">
- <view class="action-btn view-btn" bindtap="viewDetail" data-member="{{item}}">查看</view>
- <view class="action-btn edit-btn" bindtap="openEdit" data-member="{{item}}">编辑</view>
- <view class="action-btn del-btn" bindtap="confirmDelete" data-member="{{item}}">删除</view>
- </view>
- </view>
- </scroll-view>
- <!-- Detail Modal -->
- <view class="modal-mask" wx:if="{{showDetail}}" bindtap="closeDetail">
- <view class="modal-box" catchtap="stopProp">
- <view class="modal-header">
- <text class="modal-title">成员详情</text>
- <view class="modal-close" bindtap="closeDetail">✕</view>
- </view>
- <scroll-view scroll-y class="modal-body">
- <view class="detail-row"><text class="detail-label">姓名</text><text class="detail-value">{{detailMember.name}}</text></view>
- <view class="detail-row" wx:if="{{detailMember.simplified_name}}"><text class="detail-label">简名</text><text class="detail-value">{{detailMember.simplified_name}}</text></view>
- <view class="detail-row"><text class="detail-label">性别</text><text class="detail-value">{{detailMember.sex === 1 ? '男' : detailMember.sex === 2 ? '女' : '未知'}}</text></view>
- <view class="detail-row" wx:if="{{detailMember.birthday_date}}"><text class="detail-label">出生日期</text><text class="detail-value">{{detailMember.birthday_date}}</text></view>
- <view class="detail-row" wx:if="{{detailMember.family_rank}}"><text class="detail-label">世序</text><text class="detail-value">第{{detailMember.family_rank}}世</text></view>
- <view class="detail-row" wx:if="{{detailMember.name_word_generation}}"><text class="detail-label">字辈</text><text class="detail-value">{{detailMember.name_word_generation}}</text></view>
- <view class="detail-row"><text class="detail-label">状态</text><text class="detail-value">{{detailMember.is_pass_away === 1 ? '已故' : '健在'}}</text></view>
- <view class="detail-row"><text class="detail-label">婚姻</text><text class="detail-value">{{detailMember.marital_status === 1 ? '未婚' : detailMember.marital_status === 2 ? '已婚' : detailMember.marital_status === 3 ? '离异/丧偶' : '未知'}}</text></view>
- <view class="detail-row" wx:if="{{detailMember.phone}}"><text class="detail-label">手机</text><text class="detail-value">{{detailMember.phone}}</text></view>
- <view class="detail-row" wx:if="{{detailMember.notes}}"><text class="detail-label">备注</text><text class="detail-value">{{detailMember.notes}}</text></view>
- <view class="detail-row"><text class="detail-label">录入时间</text><text class="detail-value">{{detailMember.create_time}}</text></view>
- </scroll-view>
- <view class="modal-footer">
- <view class="modal-btn edit-btn" bindtap="openEdit" data-member="{{detailMember}}">编辑</view>
- <view class="modal-btn del-btn" bindtap="confirmDelete" data-member="{{detailMember}}">删除</view>
- </view>
- </view>
- </view>
- <!-- Edit Modal -->
- <view class="modal-mask" wx:if="{{showEditModal}}" bindtap="closeEdit">
- <view class="modal-box edit-modal-box" catchtap="stopProp">
- <view class="modal-header">
- <text class="modal-title">编辑成员信息</text>
- <view class="modal-close" bindtap="closeEdit">✕</view>
- </view>
- <scroll-view scroll-y class="modal-body edit-modal-body">
- <view class="form-item">
- <text class="form-label">姓名 <text class="required">*</text></text>
- <input class="form-input" value="{{editForm.name}}" placeholder="请输入姓名" data-field="name" bindinput="onEditInput" />
- </view>
- <view class="form-item">
- <text class="form-label">简名</text>
- <input class="form-input" value="{{editForm.simplified_name}}" placeholder="简化姓名(可选)" data-field="simplified_name" bindinput="onEditInput" />
- </view>
- <view class="form-item">
- <text class="form-label">性别</text>
- <picker mode="selector" range="{{sexOptions}}" value="{{editForm.sex}}" data-field="sex" bindchange="onPickerChange">
- <view class="form-picker">{{sexOptions[editForm.sex] || '请选择'}}</view>
- </picker>
- </view>
- <view class="form-item">
- <text class="form-label">出生日期</text>
- <input class="form-input" value="{{editForm.birthday}}" placeholder="YYYY-MM-DD" data-field="birthday" bindinput="onEditInput" />
- </view>
- <view class="form-item">
- <text class="form-label">世序</text>
- <input class="form-input" type="number" value="{{editForm.family_rank}}" placeholder="第几世" data-field="family_rank" bindinput="onEditInput" />
- </view>
- <view class="form-item">
- <text class="form-label">字辈</text>
- <input class="form-input" value="{{editForm.name_word_generation}}" placeholder="字辈" data-field="name_word_generation" bindinput="onEditInput" />
- </view>
- <view class="form-item">
- <text class="form-label">状态</text>
- <picker mode="selector" range="{{isPassAwayOptions}}" value="{{editForm.is_pass_away}}" data-field="is_pass_away" bindchange="onPickerChange">
- <view class="form-picker">{{isPassAwayOptions[editForm.is_pass_away] || '请选择'}}</view>
- </picker>
- </view>
- <view class="form-item">
- <text class="form-label">婚姻状况</text>
- <picker mode="selector" range="{{maritalStatusOptions}}" value="{{editForm.marital_status}}" data-field="marital_status" bindchange="onPickerChange">
- <view class="form-picker">{{maritalStatusOptions[editForm.marital_status] || '请选择'}}</view>
- </picker>
- </view>
- <view class="form-item">
- <text class="form-label">手机号</text>
- <input class="form-input" type="number" value="{{editForm.phone}}" placeholder="手机号(可选)" data-field="phone" bindinput="onEditInput" />
- </view>
- <view class="form-item">
- <text class="form-label">备注</text>
- <textarea class="form-textarea" value="{{editForm.notes}}" placeholder="备注信息(可选)" data-field="notes" bindinput="onEditInput" />
- </view>
- </scroll-view>
- <view class="modal-footer">
- <view class="modal-btn cancel-btn" bindtap="closeEdit">取消</view>
- <view class="modal-btn submit-btn {{submitting ? 'disabled' : ''}}" bindtap="submitEdit">{{submitting ? '保存中...' : '保存'}}</view>
- </view>
- </view>
- </view>
- </view>
|