敢为人鲜小程序前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.5 KiB

  1. <template>
  2. <view class="page">
  3. <!-- 导航栏 -->
  4. <navbar :title="'团餐' + (mealInfo ? mealInfo.id : '')" leftClick @leftClick="$utils.navigateBack"
  5. bgColor="#019245" color="#fff" />
  6. <view class="container">
  7. <!-- 成员列表 -->
  8. <view class="member-list">
  9. <!-- 使用封装的成员项组件 -->
  10. <member-food-item
  11. v-for="(member, index) in members"
  12. :key="index"
  13. :member="member"
  14. :status="mealInfo.status"
  15. :default-expanded="index === defaultExpandedIndex"
  16. @toggle="handleMemberToggle"
  17. />
  18. </view>
  19. <!-- 空数据提示 -->
  20. <uv-empty v-if="members.length === 0" text="暂无成员" mode="list"></uv-empty>
  21. </view>
  22. </view>
  23. </template>
  24. <script>
  25. import navbar from '@/components/base/navbar.vue'
  26. import MemberFoodItem from '../components/order/MemberFoodItem.vue'
  27. import { mockFoodMember } from '@/static/js/mockOrders'
  28. // 创造了一个新的status 用来代表当前列表应该的状态
  29. export default {
  30. components: {
  31. navbar,
  32. MemberFoodItem
  33. },
  34. data() {
  35. return {
  36. mealId: null,
  37. mealInfo: null,
  38. defaultExpandedIndex: -1, // 默认不展开任何成员
  39. members: []
  40. }
  41. },
  42. onLoad(options) {
  43. if (options.id) {
  44. this.mealId = options.id
  45. // 得到当前订单的成员与其餐点信息
  46. this.getMealInfo(options.status)
  47. }
  48. console.log(options.status);
  49. this.members = mockFoodMember
  50. },
  51. methods: {
  52. // 获取团餐信息
  53. getMealInfo(status) {
  54. // 模拟获取团餐数据
  55. this.mealInfo = {
  56. id: this.mealId,
  57. name: '团餐' + this.mealId,
  58. price: 18.00,
  59. status: status
  60. }
  61. },
  62. // 处理成员项展开/收起事件
  63. handleMemberToggle(data) {
  64. console.log(`成员 ${data.member.name} ${data.expanded ? '展开' : '收起'} 了餐点列表`);
  65. // 可以在这里添加其他逻辑,如记录统计数据等
  66. }
  67. }
  68. }
  69. </script>
  70. <style lang="scss" scoped>
  71. .page {
  72. background-color: #f5f5f5;
  73. min-height: 100vh;
  74. }
  75. .container {
  76. padding: 20rpx;
  77. }
  78. .member-list {
  79. // 成员列表样式被移到组件中
  80. }
  81. </style>