leftMenu.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <view class="leftMenuRoot df fdr" v-show="isShow">
  3. <!-- 左边导航栏 -->
  4. <view class="leftBox">
  5. <view class="leftMenu-topIcon df aic" @click="hide">
  6. <img src="../assets/leftMenu/icon_leftUp.png"></img>
  7. </view>
  8. <view class="df fdc" v-for="(menu1,i) in btnList" :key="i" @click="onLeftBtn1Click(i)">
  9. <view class="leftMenu-btn1 df fdr aic">
  10. <view class="leftMenu-btn1-icon df ">
  11. <img :src="checkedIndex1==i?menu1.icon_btn1_checked:menu1.icon_btn1_unchecked"></img>
  12. </view>
  13. <view class="leftMenu-btn1-text" :style="{color:checkedIndex1==i?color_checked:color_unchecked}">{{menu1.text}}</view>
  14. </view>
  15. <view class="leftMenu-line"></view>
  16. <view class="leftMenu-btn2-box1 df fdc" v-show="checkedIndex1==i" v-for="(menu2,m) in menu1.list" :key="m" @click="onLeftBtn2Click(m)">
  17. <view class="leftMenu-btn2-box2 df fdr aic">
  18. <view class="leftMenu-btn2-icon df">
  19. <img :src="checkedIndex2==m?icon_btn2_checked:icon_btn2_unchecked"></img>
  20. </view>
  21. <view class="leftMenu-btn2-text" :style="{color:checkedIndex2==m?color_checked:color_unchecked}">{{menu2}}</view>
  22. </view>
  23. </view>
  24. </view>
  25. </view>
  26. <!-- 右边半透明 -->
  27. <view class="rightBox" @click="hide"></view>
  28. </view>
  29. </template>
  30. <script>
  31. export default {
  32. data() {
  33. return {
  34. isShow: false,
  35. checkedIndex1: 3,
  36. checkedIndex2: 0,
  37. // ------以下为静态
  38. btnList: [{
  39. "text": '首页',
  40. "icon_btn1_checked": require('../assets/leftMenu/icon_sy_02.png'),
  41. "icon_btn1_unchecked": require('../assets/leftMenu/icon_sy_01.png'),
  42. "list": []
  43. },
  44. {
  45. "text": '实验简介',
  46. "icon_btn1_checked": require('../assets/leftMenu/icon_syjj_02.png'),
  47. "icon_btn1_unchecked": require('../assets/leftMenu/icon_syjj_01.png'),
  48. "list": ['评审账号', '快速进入实验', '实验概述', '实验使用环境与技术架构', '实验简介视频']
  49. },
  50. {
  51. "text": '学习流程',
  52. "icon_btn1_checked": require('../assets/leftMenu/icon_xxlc_02.png'),
  53. "icon_btn1_unchecked": require('../assets/leftMenu/icon_xxlc_01.png'),
  54. "list": ['原理认知', '实景勘察', '虚拟技术搭建', '虚拟艺术创作', '虚拟资源库建设']
  55. },
  56. {
  57. "text": '开始学习',
  58. "icon_btn1_checked": require('../assets/leftMenu/icon_ksxx_02.png'),
  59. "icon_btn1_unchecked": require('../assets/leftMenu/icon_ksxx_01.png'),
  60. "list": ['前序准备', '学习与实验', '测试与结果']
  61. },
  62. {
  63. "text": '后台',
  64. "icon_btn1_checked": require('../assets/leftMenu/icon_ksxx_02.png'),
  65. "icon_btn1_unchecked": require('../assets/leftMenu/icon_ksxx_01.png'),
  66. "list": []
  67. }
  68. ],
  69. icon_btn2_checked: require('../assets/leftMenu/icon_btn2_02.png'),
  70. icon_btn2_unchecked: require('../assets/leftMenu/icon_btn2_01.png'),
  71. color_checked: '#EA252C',
  72. color_unchecked: '#020202'
  73. }
  74. },
  75. methods: {
  76. initData() {
  77. this.checkedIndex1 = -1;
  78. this.checkedIndex2 = -1;
  79. },
  80. hide() {
  81. this.isShow = false;
  82. },
  83. show(indexArr) {
  84. this.isShow = true;
  85. console.log("左侧导航展示",indexArr);
  86. this.checkedIndex1 = indexArr[0];
  87. this.checkedIndex2 = indexArr[1];
  88. },
  89. onLeftBtn1Click(index) {
  90. this.checkedIndex2 = -1;
  91. if (this.btnList[index].list.length > 0) {
  92. // 收起
  93. if (index == this.checkedIndex1) {
  94. this.checkedIndex1 = -1;
  95. }
  96. // 展开
  97. else {
  98. this.checkedIndex1 = index;
  99. }
  100. } else {
  101. this.hide();
  102. this.$emit("onLeftMenuClick", [index,-1])
  103. }
  104. },
  105. onLeftBtn2Click(index) {
  106. this.checkedIndex2 = index;
  107. this.hide();
  108. this.$emit("onLeftMenuClick", [this.checkedIndex1,index])
  109. }
  110. }
  111. }
  112. </script>
  113. <style lang="scss">
  114. .leftMenuRoot {
  115. position: fixed;
  116. width: 100%;
  117. height: 100%;
  118. }
  119. .leftBox {
  120. width: px2vw(226);
  121. background: #FFFFFF;
  122. }
  123. .rightBox {
  124. flex: 1;
  125. background: #000000;
  126. opacity: 0.24;
  127. }
  128. .leftMenu-topIcon {
  129. background: #EA252C;
  130. height: 6.2vw;
  131. }
  132. .leftMenu-topIcon img {
  133. margin-left: px2vw(41);
  134. }
  135. .leftMenu-btn1-icon {
  136. margin-left: px2vw(21);
  137. margin-top: px2vw(32);
  138. margin-bottom: px2vw(32);
  139. }
  140. .leftMenu-btn1-text {
  141. margin-left: px2vw(14);
  142. font-size: px2vw(22);
  143. }
  144. .leftMenu-line {
  145. height: 2px;
  146. background: #F2F2F2;
  147. }
  148. .leftMenu-btn2-box1 {
  149. background: #F2F2F2;
  150. }
  151. .leftMenu-btn2-box2 {
  152. margin-left: px2vw(48);
  153. margin-right: px2vw(45);
  154. margin-top: px2vw(25);
  155. margin-bottom: px2vw(25);
  156. }
  157. .leftMenu-btn2-text {
  158. margin-left: px2vw(14);
  159. font-size: px2vw(20);
  160. }
  161. </style>