微信

index.vue 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <template>
  2. <div class="mainPage flex-v">
  3. <div class="top">
  4. <topCaseInfo :data="topCaseInfoData" @selectCase="showSelect = true"></topCaseInfo>
  5. </div>
  6. <nav class="flex-h">
  7. <a class="flex-item" v-for="(item,index) in cutNavList" :key="index" :class="{'active': navActive === index}" @click="cutNav(index)">{{item.value}}</a>
  8. </nav>
  9. <div class="content flex-item">
  10. <div>
  11. <ul>
  12. <li :hidden="navActive !== 0" class="placeOrder">
  13. <div class="topInfo flex-h">
  14. <div class="flex-item">
  15. <div>
  16. <span>共计已使用:45杯</span>
  17. </div>
  18. </div>
  19. <div class="flex-item">
  20. <div>
  21. <span>本月已用:0杯</span>
  22. </div>
  23. </div>
  24. <a>点单记录</a>
  25. </div>
  26. <div class="areaListParent flex-h">
  27. <div class="flex-item">
  28. <div>
  29. <ul class="areaList">
  30. <li v-for="(item,index) in CaseTableList" :key="index">
  31. <div class="title">
  32. <i class="iconfont icon-yinchenglogo"></i>
  33. <span>{{item.AreaName}}</span>
  34. </div>
  35. <ul class="subAreaList flex-h">
  36. <router-link tag="li" class="flex-item flex-h" v-for="(subItem,subIndex) in item.Tables" :key="subIndex" :to="{name: 'placeOrder', query: { tableid: encodeURI(subItem.TableId), tableno: encodeURI(subItem.TableNo), caseid: encodeURI(subItem.CaseId), casename: encodeURI(topCaseInfoData.CaseName), areaid: encodeURI(subItem.AreaId), areaname: encodeURI(item.AreaName)}}">
  37. <caseTableItem :item="subItem" :index="subIndex"></caseTableItem>
  38. </router-link>
  39. <li class="flex-item noData" v-if="item.Tables.length % 2 != 0"></li>
  40. </ul>
  41. </li>
  42. </ul>
  43. </div>
  44. </div>
  45. </div>
  46. </li>
  47. <li :hidden="navActive !== 1" class="my-card">
  48. <div class="list-box">
  49. <div class="cardAndCouponInfo flex-h">
  50. <div class="flex-item">
  51. <div>
  52. <span>卡券货值总额:</span>
  53. <span>¥1000</span>
  54. <span>万</span>
  55. </div>
  56. </div>
  57. <router-link :to="{name: 'salesRecord',query: {}}">销售记录</router-link>
  58. </div>
  59. <myCard v-for="(item,index) in cardList" :key="index" :data='item' @share='share'></myCard>
  60. </div>
  61. </li>
  62. <li :hidden="navActive !== 2" class="customer-card">
  63. <div class="list-box">
  64. <customerCard v-for="(item,index) in cardList" :key="index" :data='item' @share='share'></customerCard>
  65. </div>
  66. </li>
  67. </ul>
  68. </div>
  69. </div>
  70. <div class="selectCase" :hidden="!showSelect"></div>
  71. <van-picker :hidden="!showSelect"
  72. show-toolbar
  73. title="选择案场"
  74. :columns="caseList"
  75. @cancel="showSelect = false"
  76. @confirm="selectCase"
  77. value-key="value"
  78. />
  79. </div>
  80. </template>
  81. <script>
  82. import caseTableItem from '../../../components/caseTableItem/index'
  83. import topCaseInfo from '../../../components/topCaseInfo/index'
  84. import myCard from '../../../components/myCard/myCard'
  85. import customerCard from '../../../components/customerCard/customerCard'
  86. import { mapState, createNamespacedHelpers } from 'vuex'
  87. const { mapActions: actions } = createNamespacedHelpers('app')
  88. const { mapActions: caseTableActions } = createNamespacedHelpers('placeOrderForCoffee')
  89. export default {
  90. name: '',
  91. data () {
  92. return {
  93. navActive: 1,
  94. cutNavList: [{
  95. value: '城咖啡',
  96. id: '1',
  97. }, {
  98. value: '我的卡券',
  99. id: '2',
  100. }, {
  101. value: '我的客户',
  102. id: '3',
  103. }],
  104. topCaseInfoData: {
  105. caseName: '',
  106. caseId: '',
  107. showSelect: true,
  108. userName: 'xxx'
  109. },
  110. caseInfo: {
  111. value: '',
  112. id: ''
  113. },
  114. showSelect: false,
  115. caseList: [{
  116. value: '案场一',
  117. id: ''
  118. }, {
  119. value: '案场二',
  120. id: ''
  121. }, {
  122. value: '案场三',
  123. id: ''
  124. }, {
  125. value: '案场四',
  126. id: ''
  127. }],
  128. list: [{
  129. name: '案场名称1',
  130. list: [{}, {}, {}, {}, {}],
  131. }, {
  132. name: '案场名称2',
  133. list: [{}, {}, {}, {}, {}],
  134. }],
  135. cardList: [
  136. {
  137. invalid: true
  138. },
  139. {
  140. invalid: false
  141. },
  142. {
  143. invalid: false
  144. }
  145. ]
  146. }
  147. },
  148. computed: {
  149. ...mapState({
  150. userInfo: x => x.userCenter.userInfo,
  151. CaseList: x => x.app.CaseList,
  152. CaseTableList: x => x.placeOrderForCoffee.CaseTableList,
  153. })
  154. },
  155. components: {
  156. topCaseInfo,
  157. caseTableItem,
  158. myCard,
  159. customerCard
  160. },
  161. created () {
  162. this.getCaseList().then((res) => {
  163. this.topCaseInfoData.CaseName = res.cases[0].CaseName
  164. this.topCaseInfoData.CaseId = res.cases[0].CaseId
  165. this.getCaseTableList({
  166. caseid: this.topCaseInfoData.CaseId
  167. })
  168. })
  169. },
  170. methods: {
  171. ...actions([
  172. 'getCaseList',
  173. ]),
  174. ...caseTableActions([
  175. 'getCaseTableList',
  176. ]),
  177. selectCase (val) { // 选择案场
  178. this.topCaseInfoData.CaseName = val.CaseName
  179. this.topCaseInfoData.CaseId = val.CaseId
  180. this.getCaseTableList({
  181. caseid: this.topCaseInfoData.CaseId
  182. })
  183. this.ShowSelect = false
  184. },
  185. cutNav (index) { // 切换nav
  186. this.navActive = index
  187. },
  188. share (item) {
  189. console.log(item)
  190. }
  191. }
  192. }
  193. </script>
  194. <!-- Add "scoped" attribute to limit CSS to this component only -->
  195. <style lang="scss" scoped>
  196. @import "page.scss";
  197. </style>