index.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <template>
  2. <div class="manage-layout">
  3. <div class="m-nav" v-if="!noNavs">
  4. <span>{{title}}</span>
  5. <span v-if="title==='我的设备'||title==='My Devices'" @click="addDevice" class="btns">
  6. {{langDevices.add}}
  7. </span>
  8. <span v-if="Number(consumpselected.id)===2&&(title==='消费记录'||title==='Billing Records')" @click="openInvoice" class="btns">
  9. 开具发票
  10. </span>
  11. <div v-if="title==='我的场景'||title==='My Scene'">
  12. <i class="iconfont icon-sousuo" @click="$router.push({name:'scenesearch'})"></i>
  13. </div>
  14. <div v-if="title==='我的设备'||title==='My Devices'" style="min-width:12%;" class="select" ref="mbMenu1" @click="selectedActive=!selectedActive">
  15. {{selected.name}}
  16. <div class="s-sub" :class="{'s-active':selectedActive}">
  17. <div v-for="(item,i) in selectType" :key="i" :class="{'item-active':selected.name===item.name}" @click="emithandle(item)" class="s-item">{{item.name}}</div>
  18. </div>
  19. </div>
  20. <div v-if="title==='消费记录'||title==='Billing Records'" class="select" ref="mbMenu1" @click="selectedActive=!selectedActive">
  21. {{consumpselected.name}}
  22. <div class="s-sub" :class="{'s-active':selectedActive}">
  23. <div v-for="(item,i) in consumpType" :key="i" :class="{'item-active':consumpselected.name===item.name}" @click="emithandlerecord(item)" class="s-item">{{item.name}}</div>
  24. </div>
  25. </div>
  26. </div>
  27. <router-view />
  28. </div>
  29. </template>
  30. <script>
  31. import {mapState} from 'vuex'
  32. let titleName = {
  33. 'information': '个人中心',
  34. 'order': '我的订单',
  35. 'myscene': '我的场景',
  36. 'device': '我的设备',
  37. 'consumption': '消费记录',
  38. 'consumpdetail': '记录详细',
  39. 'change': '修改密码',
  40. 'confirm': '确认订单',
  41. 'submit': '确认订单',
  42. 'paytype': '确认订单',
  43. 'openInvoice': '开具发票',
  44. 'payselect': '支付方式',
  45. 'cart': '购物车',
  46. 'vieworder': '确认订单'
  47. }
  48. let titleNameEn = {
  49. 'information': 'Account Information',
  50. 'order': 'My Order',
  51. 'myscene': 'My Scene',
  52. 'device': 'My Devices',
  53. 'consumption': 'Billing Records',
  54. 'consumpdetail': 'Detail',
  55. 'change': 'Change Password',
  56. 'confirm': 'Confirm',
  57. 'submit': 'Confirm',
  58. 'paytype': 'Confirm',
  59. 'openInvoice': '开具发票',
  60. 'payselect': 'Payment method:',
  61. 'cart': 'cart',
  62. 'vieworder': 'Confirm'
  63. }
  64. let noNav = ['consumpdetail', 'information', 'openInvoice', 'openInvoice', 'orderInvoice']
  65. let recid = {
  66. 0: '扩容记录',
  67. 1: '充值记录',
  68. 2: '增值发票'
  69. }
  70. let recidEn = {
  71. 0: 'Expansion Records',
  72. 1: '充值记录',
  73. 2: '增值发票'
  74. }
  75. let deviceid = {
  76. 0: 'Lite',
  77. 4: 'Pro'
  78. }
  79. let consumpType = [
  80. {
  81. name: '扩容记录',
  82. id: 0
  83. }, {
  84. name: '充值记录',
  85. id: 1
  86. }, {
  87. name: '增值发票',
  88. id: 2
  89. }
  90. ]
  91. let consumpTypeEn = [
  92. {
  93. name: 'Expansion Records',
  94. id: 0
  95. }
  96. ]
  97. export default {
  98. watch: {
  99. language (newVal) {
  100. }
  101. },
  102. computed: {
  103. ...mapState({
  104. langDevices: state => state.language.home.manage.myDevices,
  105. language: state => state.language.current
  106. // iscart: state => state.user.iscart
  107. }),
  108. title: function () {
  109. if (this.$route.name === 'consumpdetail') {
  110. return this.consumpselected.name
  111. }
  112. // if (this.$route.name === 'cart' && this.iscart === 'order') {
  113. // return titleName['cartorder']
  114. // }
  115. return this.language === 'en' ? titleNameEn[this.$route.name] : titleName[this.$route.name]
  116. },
  117. consumpselected: function () {
  118. return {
  119. name: this.language === 'en' ? recidEn[this.$route.params.id] : recid[this.$route.params.id],
  120. id: this.$route.params.id
  121. }
  122. },
  123. consumpType: function () {
  124. return this.language === 'en' ? consumpTypeEn : consumpType
  125. },
  126. noNavs: function () {
  127. for (let i = 0; i < noNav.length; i++) {
  128. let ele = noNav[i]
  129. if (this.$route.name === ele) {
  130. return true
  131. }
  132. }
  133. return false
  134. },
  135. selected: function () {
  136. return {
  137. name: deviceid[this.$route.params.id],
  138. id: this.$route.params.id
  139. }
  140. }
  141. },
  142. methods: {
  143. addDevice () {
  144. let val = this.selected.id === 4 ? 1 : 0
  145. this.$toast.showBinding(val, () => {
  146. })
  147. },
  148. openInvoice () {
  149. this.$router.push({
  150. name: 'openInvoice'
  151. })
  152. },
  153. emithandle (item) {
  154. let name = this.$route.name
  155. console.log(name)
  156. switch (name) {
  157. case 'device':
  158. this.$router.push({name: 'device', params: {id: item.id}})
  159. break
  160. default:
  161. this.$router.push({name: 'myscene'})
  162. break
  163. }
  164. },
  165. emithandlerecord (item) {
  166. this.$router.push({name: 'consumption', params: {id: item.id}})
  167. // this.consumpselected = item
  168. // this.$bus.$emit('selectdevice', item.id)
  169. }
  170. },
  171. data () {
  172. let selectType = [
  173. {
  174. name: 'Pro',
  175. id: 4
  176. }, {
  177. name: 'Lite',
  178. id: 0
  179. }
  180. ]
  181. return {
  182. selectedActive: false,
  183. selectType
  184. }
  185. },
  186. mounted () {
  187. document.addEventListener('click', (e) => {
  188. if (this.$refs.mbMenu1) {
  189. if (!this.$refs.mbMenu1.contains(e.target)) {
  190. this.selectedActive = false
  191. }
  192. }
  193. })
  194. }
  195. }
  196. </script>
  197. <style lang="scss" scoped>
  198. @import './style.scss';
  199. </style>