微信

index.vue 6.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <div class="mainPage flex-v">
  3. <div class="top">
  4. <topCaseInfo :data="topCaseInfoData" :userName="userInfo.customer !== undefined ? userInfo.customer.CustomerName : ''" @selectCase="showVanPicker"></topCaseInfo>
  5. </div>
  6. <nav class="flex-h" v-if="userInfo.customer.MapUser !== ''">
  7. <a class="flex-item" v-for="(item,index) in cutNavList" :key="index" v-if="userInfo.customer.UserTypeId !== 'manager' || item.id !== '3'" :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 && userInfo.customer.MapUser !== ''" class="placeOrder">
  13. <div class="topInfo flex-h" v-if="userInfo.customer.MapUser !== ''">
  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. <router-link :to="{name: 'orderList'}">点单记录</router-link>
  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. <a @click="toSalesHistory">销售记录</a>
  58. <!-- <router-link :to="{name: 'salesRecord',query: {}}">销售记录</router-link> -->
  59. </div>
  60. <myCard v-for="(item,index) in cardList" :key="index" :data='item' @share='share'></myCard>
  61. </div>
  62. </li>
  63. <li :hidden="navActive !== 2" class="customer-card">
  64. <div class="list-box">
  65. <customerCard v-for="(item,index) in cardList" :key="index" :data='item' @share='share'></customerCard>
  66. </div>
  67. </li>
  68. </ul>
  69. </div>
  70. </div>
  71. <div class="selectCase" :hidden="!showSelect"></div>
  72. <van-picker :hidden="!showSelect"
  73. show-toolbar
  74. title="选择案场"
  75. :columns="CaseList"
  76. @cancel="showSelect = false"
  77. @confirm="selectCase"
  78. value-key="CaseName"
  79. />
  80. </div>
  81. </template>
  82. <script>
  83. import caseTableItem from '../../../../components/caseTableItem/index'
  84. import topCaseInfo from '../../../../components/topCaseInfo/index'
  85. import myCard from '../../../../components/myCard/myCard'
  86. import customerCard from '../../../../components/customerCard/customerCard'
  87. import { mapState, createNamespacedHelpers } from 'vuex'
  88. const { mapActions: actions } = createNamespacedHelpers('app')
  89. const { mapActions: caseTableActions } = createNamespacedHelpers('placeOrderForCoffee')
  90. const { mapState: mapCaseState, mapActions: mapCaseActions } = createNamespacedHelpers('case')
  91. export default {
  92. name: '',
  93. data () {
  94. return {
  95. navActive: 0,
  96. cutNavList: [{
  97. value: '城咖啡',
  98. id: '1',
  99. }, {
  100. value: '我的卡券',
  101. id: '2',
  102. }, {
  103. value: '我的客户',
  104. id: '3',
  105. }],
  106. topCaseInfoData: {
  107. CaseName: '',
  108. CaseId: '',
  109. ShowSelect: true,
  110. },
  111. caseInfo: {
  112. value: '',
  113. id: ''
  114. },
  115. showSelect: false,
  116. list: [{
  117. name: '案场名称1',
  118. list: [{}, {}, {}, {}, {}],
  119. }, {
  120. name: '案场名称2',
  121. list: [{}, {}, {}, {}, {}],
  122. }],
  123. cardList: [
  124. {
  125. invalid: true
  126. },
  127. {
  128. invalid: false
  129. },
  130. {
  131. invalid: false
  132. }
  133. ]
  134. }
  135. },
  136. computed: {
  137. ...mapState({
  138. userInfo: x => x.userCenter.userInfo,
  139. CaseList: x => x.app.CaseList,
  140. CaseTableList: x => x.placeOrderForCoffee.CaseTableList,
  141. }),
  142. ...mapCaseState({
  143. caseTotal: x => x.caseTotal,
  144. }),
  145. },
  146. components: {
  147. topCaseInfo,
  148. caseTableItem,
  149. myCard,
  150. customerCard
  151. },
  152. created () {
  153. this.getCaseList().then((res) => {
  154. this.topCaseInfoData.CaseName = res.cases[0].CaseName
  155. this.topCaseInfoData.CaseId = res.cases[0].CaseId
  156. this.getCaseTableList({
  157. caseid: this.topCaseInfoData.CaseId
  158. })
  159. this.getCaseTotal({
  160. caseid: this.topCaseInfoData.CaseId
  161. })
  162. })
  163. },
  164. methods: {
  165. ...actions([
  166. 'getCaseList',
  167. ]),
  168. ...caseTableActions([
  169. 'getCaseTableList',
  170. ]),
  171. ...mapCaseActions([
  172. 'getCaseTotal',
  173. ]),
  174. toSalesHistory () {
  175. console.log(this.getUrl('salesRecord'))
  176. window.location.href = this.getUrl('salesRecord')
  177. },
  178. getUrl (val) {
  179. var url = window.location.pathname
  180. return url.replace('user.html', 'sales.html') + '#/' + val
  181. },
  182. showVanPicker () {
  183. this.showSelect = true
  184. },
  185. selectCase (val) { // 选择案场
  186. this.topCaseInfoData.CaseName = val.CaseName
  187. this.topCaseInfoData.CaseId = val.CaseId
  188. this.getCaseTableList({
  189. caseid: this.topCaseInfoData.CaseId
  190. })
  191. this.showSelect = false
  192. },
  193. cutNav (index) { // 切换nav
  194. this.navActive = index
  195. },
  196. share (item) {
  197. console.log(item)
  198. }
  199. }
  200. }
  201. </script>
  202. <!-- Add "scoped" attribute to limit CSS to this component only -->
  203. <style lang="scss" scoped>
  204. @import 'page.scss';
  205. </style>