my_entries.wxml 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <view class="page">
  2. <!-- Loading -->
  3. <view class="center-tip" wx:if="{{loading}}">
  4. <view class="loading-spinner"></view>
  5. <text class="tip-text">加载中...</text>
  6. </view>
  7. <!-- Empty -->
  8. <view class="center-tip" wx:elif="{{empty}}">
  9. <text class="empty-icon">📋</text>
  10. <text class="tip-text">还没有录入任何成员</text>
  11. <text class="tip-sub">去「录入成员」添加第一条记录吧</text>
  12. </view>
  13. <!-- List -->
  14. <scroll-view scroll-y class="list-wrap" wx:else>
  15. <view class="list-header">
  16. <text class="list-count">共 {{members.length}} 条录入</text>
  17. <view class="refresh-btn" bindtap="onRefresh">
  18. <text class="refresh-icon">↻</text>
  19. <text>刷新</text>
  20. </view>
  21. </view>
  22. <view class="member-card" wx:for="{{members}}" wx:key="id">
  23. <view class="card-main" bindtap="viewDetail" data-member="{{item}}">
  24. <view class="card-avatar sex-{{item.sex}}">
  25. <text>{{item.name[0]}}</text>
  26. </view>
  27. <view class="card-info">
  28. <view class="card-name-row">
  29. <text class="card-name">{{item.name}}</text>
  30. <text class="card-tag sex-tag-{{item.sex}}">{{item.sex === 1 ? '男' : item.sex === 2 ? '女' : ''}}</text>
  31. <text class="card-tag pass-tag" wx:if="{{item.is_pass_away === 1}}">已故</text>
  32. </view>
  33. <view class="card-meta">
  34. <text wx:if="{{item.birthday_date}}">{{item.birthday_date}}</text>
  35. <text wx:if="{{item.family_rank}}" class="meta-sep">· 第{{item.family_rank}}世</text>
  36. <text wx:if="{{item.name_word_generation}}" class="meta-sep">· {{item.name_word_generation}}字辈</text>
  37. </view>
  38. <text class="card-time">录入于 {{item.create_time}}</text>
  39. </view>
  40. </view>
  41. <view class="card-actions">
  42. <view class="action-btn view-btn" bindtap="viewDetail" data-member="{{item}}">查看</view>
  43. <view class="action-btn edit-btn" bindtap="openEdit" data-member="{{item}}">编辑</view>
  44. <view class="action-btn del-btn" bindtap="confirmDelete" data-member="{{item}}">删除</view>
  45. </view>
  46. </view>
  47. </scroll-view>
  48. <!-- Detail Modal -->
  49. <view class="modal-mask" wx:if="{{showDetail}}" bindtap="closeDetail">
  50. <view class="modal-box" catchtap="stopProp">
  51. <view class="modal-header">
  52. <text class="modal-title">成员详情</text>
  53. <view class="modal-close" bindtap="closeDetail">✕</view>
  54. </view>
  55. <scroll-view scroll-y class="modal-body">
  56. <view class="detail-row"><text class="detail-label">姓名</text><text class="detail-value">{{detailMember.name}}</text></view>
  57. <view class="detail-row" wx:if="{{detailMember.simplified_name}}"><text class="detail-label">简名</text><text class="detail-value">{{detailMember.simplified_name}}</text></view>
  58. <view class="detail-row"><text class="detail-label">性别</text><text class="detail-value">{{detailMember.sex === 1 ? '男' : detailMember.sex === 2 ? '女' : '未知'}}</text></view>
  59. <view class="detail-row" wx:if="{{detailMember.birthday_date}}"><text class="detail-label">出生日期</text><text class="detail-value">{{detailMember.birthday_date}}</text></view>
  60. <view class="detail-row" wx:if="{{detailMember.family_rank}}"><text class="detail-label">世序</text><text class="detail-value">第{{detailMember.family_rank}}世</text></view>
  61. <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>
  62. <view class="detail-row"><text class="detail-label">状态</text><text class="detail-value">{{detailMember.is_pass_away === 1 ? '已故' : '健在'}}</text></view>
  63. <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>
  64. <view class="detail-row" wx:if="{{detailMember.phone}}"><text class="detail-label">手机</text><text class="detail-value">{{detailMember.phone}}</text></view>
  65. <view class="detail-row" wx:if="{{detailMember.notes}}"><text class="detail-label">备注</text><text class="detail-value">{{detailMember.notes}}</text></view>
  66. <view class="detail-row"><text class="detail-label">录入时间</text><text class="detail-value">{{detailMember.create_time}}</text></view>
  67. </scroll-view>
  68. <view class="modal-footer">
  69. <view class="modal-btn edit-btn" bindtap="openEdit" data-member="{{detailMember}}">编辑</view>
  70. <view class="modal-btn del-btn" bindtap="confirmDelete" data-member="{{detailMember}}">删除</view>
  71. </view>
  72. </view>
  73. </view>
  74. <!-- Edit Modal -->
  75. <view class="modal-mask" wx:if="{{showEditModal}}" bindtap="closeEdit">
  76. <view class="modal-box edit-modal-box" catchtap="stopProp">
  77. <view class="modal-header">
  78. <text class="modal-title">编辑成员信息</text>
  79. <view class="modal-close" bindtap="closeEdit">✕</view>
  80. </view>
  81. <scroll-view scroll-y class="modal-body edit-modal-body">
  82. <view class="form-item">
  83. <text class="form-label">姓名 <text class="required">*</text></text>
  84. <input class="form-input" value="{{editForm.name}}" placeholder="请输入姓名" data-field="name" bindinput="onEditInput" />
  85. </view>
  86. <view class="form-item">
  87. <text class="form-label">简名</text>
  88. <input class="form-input" value="{{editForm.simplified_name}}" placeholder="简化姓名(可选)" data-field="simplified_name" bindinput="onEditInput" />
  89. </view>
  90. <view class="form-item">
  91. <text class="form-label">性别</text>
  92. <picker mode="selector" range="{{sexOptions}}" value="{{editForm.sex}}" data-field="sex" bindchange="onPickerChange">
  93. <view class="form-picker">{{sexOptions[editForm.sex] || '请选择'}}</view>
  94. </picker>
  95. </view>
  96. <view class="form-item">
  97. <text class="form-label">出生日期</text>
  98. <input class="form-input" value="{{editForm.birthday}}" placeholder="YYYY-MM-DD" data-field="birthday" bindinput="onEditInput" />
  99. </view>
  100. <view class="form-item">
  101. <text class="form-label">世序</text>
  102. <input class="form-input" type="number" value="{{editForm.family_rank}}" placeholder="第几世" data-field="family_rank" bindinput="onEditInput" />
  103. </view>
  104. <view class="form-item">
  105. <text class="form-label">字辈</text>
  106. <input class="form-input" value="{{editForm.name_word_generation}}" placeholder="字辈" data-field="name_word_generation" bindinput="onEditInput" />
  107. </view>
  108. <view class="form-item">
  109. <text class="form-label">状态</text>
  110. <picker mode="selector" range="{{isPassAwayOptions}}" value="{{editForm.is_pass_away}}" data-field="is_pass_away" bindchange="onPickerChange">
  111. <view class="form-picker">{{isPassAwayOptions[editForm.is_pass_away] || '请选择'}}</view>
  112. </picker>
  113. </view>
  114. <view class="form-item">
  115. <text class="form-label">婚姻状况</text>
  116. <picker mode="selector" range="{{maritalStatusOptions}}" value="{{editForm.marital_status}}" data-field="marital_status" bindchange="onPickerChange">
  117. <view class="form-picker">{{maritalStatusOptions[editForm.marital_status] || '请选择'}}</view>
  118. </picker>
  119. </view>
  120. <view class="form-item">
  121. <text class="form-label">手机号</text>
  122. <input class="form-input" type="number" value="{{editForm.phone}}" placeholder="手机号(可选)" data-field="phone" bindinput="onEditInput" />
  123. </view>
  124. <view class="form-item">
  125. <text class="form-label">备注</text>
  126. <textarea class="form-textarea" value="{{editForm.notes}}" placeholder="备注信息(可选)" data-field="notes" bindinput="onEditInput" />
  127. </view>
  128. </scroll-view>
  129. <view class="modal-footer">
  130. <view class="modal-btn cancel-btn" bindtap="closeEdit">取消</view>
  131. <view class="modal-btn submit-btn {{submitting ? 'disabled' : ''}}" bindtap="submitEdit">{{submitting ? '保存中...' : '保存'}}</view>
  132. </view>
  133. </view>
  134. </view>
  135. </view>