敢为人鲜小程序前端代码仓库
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.

126 lines
3.9 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. <!-- test按钮 -->
  8. <button @click="test1">通知所有人取餐</button>
  9. <button @click="test1">通知所有人完成订单</button>
  10. <!-- 成员列表 -->
  11. <view class="member-list">
  12. <!-- 使用封装的成员项组件 -->
  13. <member-food-item
  14. v-for="(member, index) in members"
  15. :key="index"
  16. :member="member"
  17. :status="status"
  18. :default-expanded="index === defaultExpandedIndex"
  19. @toggle="handleMemberToggle"
  20. @sendNotice="handleSend(member)"
  21. @completeOrder="handleComplete(member)"
  22. />
  23. </view>
  24. <!-- 空数据提示 -->
  25. <uv-empty v-if="members.length === 0" text="暂无成员" mode="list" style="padding-top: 200rpx;" />
  26. </view>
  27. </view>
  28. </template>
  29. <script>
  30. import navbar from '@/components/base/navbar.vue'
  31. import MemberFoodItem from '../components/order/MemberFoodItem.vue'
  32. // 创造了一个新的status 用来代表当前列表应该的状态
  33. // 0 待出餐 1 送餐中 2 待取餐 3 已完成
  34. export default {
  35. components: {
  36. navbar,
  37. MemberFoodItem
  38. },
  39. data() {
  40. return {
  41. mealId: null,
  42. mealInfo: null,
  43. defaultExpandedIndex: -1, // 默认不展开任何成员
  44. members: [],
  45. status: ''
  46. }
  47. },
  48. onLoad(options) {
  49. if (options.id) {
  50. this.mealId = options.id
  51. this.status = options.status
  52. // 得到当前订单的成员与其餐点信息
  53. // this.getMealInfo(options.status)
  54. this.$api('queryLeaderOrderListById', {
  55. teambuyOrderLeaderId: this.mealId
  56. }, res => {
  57. if (res.code === 200 ){
  58. this.members = res.result.orderMemberList
  59. }
  60. })
  61. }
  62. // console.log(options.status);
  63. // this.members = mockFoodMember
  64. },
  65. methods: {
  66. // 通知所有人取餐
  67. test1 () {
  68. this.$api('informOrderAll', { leaderOrderId: this.mealId }, res => {
  69. if (res.code === 200) {
  70. this.$utils.showToast('通知成功')
  71. }
  72. })
  73. },
  74. // 通知所有人完成订单
  75. test2 () {
  76. this.$api('finishOrderAll', { leaderOrderId: this.mealId }, res => {
  77. if (res.code === 200) {
  78. this.$utils.showToast('通知成功')
  79. }
  80. })
  81. },
  82. // 处理成员项展开/收起事件
  83. handleMemberToggle(data) {
  84. console.log(`成员 ${data.member.name} ${data.expanded ? '展开' : '收起'} 了餐点列表`);
  85. // 可以在这里添加其他逻辑,如记录统计数据等
  86. },
  87. // 通知取餐
  88. handleSend(member) {
  89. this.$api('informOrderOne', { memberOrderId: member.id }, res => {
  90. if (res.code === 200) {
  91. // this.$utils.showToast('通知成功')
  92. }
  93. })
  94. },
  95. // 完成取餐
  96. handleComplete(member) {
  97. this.$api('finishOrderOne', { memberOrderId: member.id }, res => {
  98. if (res.code === 200) {
  99. // this.$utils.showToast('完成取餐')
  100. }
  101. })
  102. }
  103. }
  104. }
  105. </script>
  106. <style lang="scss" scoped>
  107. .page {
  108. background-color: #f5f5f5;
  109. min-height: 100vh;
  110. }
  111. .container {
  112. padding: 20rpx;
  113. }
  114. .member-list {
  115. // 成员列表样式被移到组件中
  116. }
  117. </style>