微信

index.vue 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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>共计已使用:{{caseTotal.total}}杯</span>
  17. </div>
  18. </div>
  19. <div class="flex-item">
  20. <div>
  21. <span>本月已用:{{caseTotal.monthtotal}}杯</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. const { mapState: mapCaseState, mapActions: mapCaseActions } = createNamespacedHelpers('case')
  90. export default {
  91. name: '',
  92. data () {
  93. return {
  94. navActive: 1,
  95. cutNavList: [{
  96. value: '城咖啡',
  97. id: '1',
  98. }, {
  99. value: '我的卡券',
  100. id: '2',
  101. }, {
  102. value: '我的客户',
  103. id: '3',
  104. }],
  105. topCaseInfoData: {
  106. caseName: '',
  107. caseId: '',
  108. showSelect: true,
  109. userName: 'xxx'
  110. },
  111. caseInfo: {
  112. value: '',
  113. id: ''
  114. },
  115. showSelect: false,
  116. caseList: [{
  117. value: '案场一',
  118. id: ''
  119. }, {
  120. value: '案场二',
  121. id: ''
  122. }, {
  123. value: '案场三',
  124. id: ''
  125. }, {
  126. value: '案场四',
  127. id: ''
  128. }],
  129. list: [{
  130. name: '案场名称1',
  131. list: [{}, {}, {}, {}, {}],
  132. }, {
  133. name: '案场名称2',
  134. list: [{}, {}, {}, {}, {}],
  135. }],
  136. cardList: [
  137. {
  138. invalid: true
  139. },
  140. {
  141. invalid: false
  142. },
  143. {
  144. invalid: false
  145. }
  146. ]
  147. }
  148. },
  149. computed: {
  150. ...mapState({
  151. userInfo: x => x.userCenter.userInfo,
  152. CaseList: x => x.app.CaseList,
  153. CaseTableList: x => x.placeOrderForCoffee.CaseTableList,
  154. }),
  155. ...mapCaseState({
  156. caseTotal: x => x.caseTotal,
  157. })
  158. },
  159. components: {
  160. topCaseInfo,
  161. caseTableItem,
  162. myCard,
  163. customerCard
  164. },
  165. created () {
  166. this.getCaseList().then((res) => {
  167. this.topCaseInfoData.CaseName = res.cases[0].CaseName
  168. this.topCaseInfoData.CaseId = res.cases[0].CaseId
  169. this.getCaseTableList({
  170. caseid: this.topCaseInfoData.CaseId
  171. })
  172. this.getCaseTotal({
  173. caseid: this.topCaseInfoData.CaseId
  174. })
  175. })
  176. },
  177. methods: {
  178. ...actions([
  179. 'getCaseList',
  180. ]),
  181. ...caseTableActions([
  182. 'getCaseTableList',
  183. ]),
  184. ...mapCaseActions([
  185. 'getCaseTotal',
  186. ]),
  187. selectCase (val) { // 选择案场
  188. this.topCaseInfoData.CaseName = val.CaseName
  189. this.topCaseInfoData.CaseId = val.CaseId
  190. this.getCaseTableList({
  191. caseid: this.topCaseInfoData.CaseId
  192. })
  193. this.ShowSelect = false
  194. },
  195. cutNav (index) { // 切换nav
  196. this.navActive = index
  197. },
  198. share (item) {
  199. console.log(item)
  200. }
  201. }
  202. }
  203. </script>
  204. <!-- Add "scoped" attribute to limit CSS to this component only -->
  205. <style lang="scss" scoped>
  206. @import "page.scss";
  207. </style>