MtaNavbar.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. <template>
  2. <uni-nav-bar dark :fixed="true" shadow background-color="transparent" title="自定义导航栏" class="dljt-navBar-box">
  3. <view class="dljt-logo-box"></view>
  4. <icon class="dljt-menu-box" v-if="hasRight" @click="handleChangeMenu"></icon>
  5. </uni-nav-bar>
  6. <!-- 菜单面板 -->
  7. <uni-collapse class="head-collapse-box" ref="collapse" accordion v-model="data.activeMenu" v-show="data.showMenu">
  8. <uni-collapse-item class="head-collapse-item" :title="item.title" v-for="item in data.list" :key="item.title"
  9. :name="item.url">
  10. <view class="head-item-text" v-for="cIt in item.children" :key="item.title"
  11. :class="{active: cIt.isActive && cIt.isActive(data.activePath)}" @click="handleClick(cIt)">
  12. {{cIt.title}}
  13. </view>
  14. </uni-collapse-item>
  15. </uni-collapse>
  16. </template>
  17. <script setup>
  18. import {
  19. ref,
  20. reactive,
  21. watch,
  22. onMounted,
  23. nextTick
  24. } from "vue"
  25. const showLeft = ref(null)
  26. import {
  27. onLoad
  28. } from "@dcloudio/uni-app"
  29. const props = defineProps({
  30. hasRight: {
  31. type: Boolean,
  32. default: true
  33. }
  34. })
  35. const ani = ref(null)
  36. const data = reactive({
  37. list: [{
  38. title: '学校主页',
  39. url: '/pages/index/index',
  40. children: [{
  41. title: '首页',
  42. url: '/pages/index/index',
  43. isActive: () => ['/pages/index/index'].some(item => item.includes(data.activePath))
  44. }]
  45. },
  46. {
  47. title: '学院概况',
  48. url: '/pages/xygkXueyuanjianjie/xygkXueyuanjianjie',
  49. children: [{
  50. title: '学院简介',
  51. url: '/pages/xygkXueyuanjianjie/xygkXueyuanjianjie',
  52. isActive: () => ['/pages/xygkXueyuanjianjie/xygkXueyuanjianjie'].some(item => item
  53. .includes(data.activePath))
  54. }, {
  55. title: '机构设置',
  56. url: '/pages/xygkJigoushezhi/xygkJigoushezhi',
  57. isActive: () => ['/pages/xygkJigoushezhi/xygkJigoushezhi'].some(item => item
  58. .includes(data.activePath))
  59. }, {
  60. title: '学院荣誉',
  61. url: '/pages/xygkXueyuanrongyu/xygkXueyuanrongyu',
  62. isActive: () => ['/pages/xygkXueyuanrongyu/xygkXueyuanrongyu'].some(item => item
  63. .includes(data.activePath))
  64. }, {
  65. title: '学院文化',
  66. url: '/pages/xygkXueyuanwenhua/xygkXueyuanwenhua',
  67. isActive: () => ['/pages/xygkXueyuanwenhua/xygkXueyuanwenhua'].some(item => item
  68. .includes(data.activePath))
  69. }, {
  70. title: '校园风光',
  71. url: '/pages/xygkXiaoyuanfengguang/xygkXiaoyuanfengguang',
  72. isActive: () => ['/pages/xygkXiaoyuanfengguang/xygkXiaoyuanfengguang'].some(item =>
  73. item.includes(data.activePath))
  74. }, {
  75. title: '联系方式',
  76. url: '/pages/xygkLianxifangshi/xygkLianxifangshi',
  77. isActive: () => ['/pages/xygkLianxifangshi/xygkLianxifangshi'].some(item => item
  78. .includes(data.activePath))
  79. },
  80. ]
  81. },
  82. {
  83. title: '党群工作',
  84. url: '/pages/dqgzDangzuzhijiagou/dqgzDangzuzhijiagou',
  85. children: [{
  86. title: '党组织架构',
  87. url: '/pages/dqgzDangzuzhijiagou/dqgzDangzuzhijiagou',
  88. isActive: () => ['/pages/dqgzDangzuzhijiagou/dqgzDangzuzhijiagou'].some(item =>
  89. item.includes(data.activePath))
  90. }, {
  91. title: '工会组织架构',
  92. url: '/pages/dqgzGonghuizuzhijiagou/dqgzGonghuizuzhijiagou',
  93. isActive: () => ['/pages/dqgzGonghuizuzhijiagou/dqgzGonghuizuzhijiagou'].some(
  94. item => item.includes(data.activePath))
  95. }, {
  96. title: '党建工作',
  97. url: '/pages/dqgzDangjiangongzuo/dqgzDangjiangongzuo',
  98. isActive: () => ['/pages/dqgzDangjiangongzuo/dqgzDangjiangongzuo',
  99. '/pages/dqgzDangjiangongzuoInfo/dqgzDangjiangongzuoInfo'
  100. ].some(item => item.includes(data.activePath))
  101. }, {
  102. title: '党员风采',
  103. url: '/pages/dqgzDangyuanfengcai/dqgzDangyuanfengcai',
  104. isActive: () => ['/pages/dqgzDangyuanfengcai/dqgzDangyuanfengcai',
  105. '/pages/dqgzXueyuanfengcaiInfo/dqgzXueyuanfengcaiInfo'
  106. ].some(item => item.includes(data.activePath))
  107. }, {
  108. title: '工会之家',
  109. url: '/pages/dqgzGonghuizhijia/dqgzGonghuizhijia',
  110. isActive: () => ['/pages/dqgzGonghuizhijia/dqgzGonghuizhijia',
  111. '/pages/dqgzGongzhuizhijiaInfo/dqgzGongzhuizhijiaInfo'
  112. ].some(item => item.includes(data.activePath))
  113. }]
  114. },
  115. {
  116. title: '校园动态',
  117. url: '3',
  118. children: [{
  119. title: '学院新闻',
  120. url: '/pages/xydtXueyuanxingwen/xydtXueyuanxingwen',
  121. isActive: () => ['/pages/xydtXueyuanxingwen/xydtXueyuanxingwen',
  122. '/pages/xydtXueyuanxinwenInfo/xydtXueyuanxinwenInfo'
  123. ].some(item => item.includes(data.activePath))
  124. }, {
  125. title: '通知公告',
  126. url: '/pages/xydtTongzhigonggao/xydtTongzhigonggao',
  127. isActive: () => ['/pages/xydtTongzhigonggao/xydtTongzhigonggao',
  128. '/pages/xydtTongzhigonggaoInfo/xydtTongzhigonggaoInfo'
  129. ].some(item => item.includes(data.activePath))
  130. }, {
  131. title: '校务公开',
  132. url: '/pages/xydtXiaowugongkai/xydtXiaowugongkai',
  133. isActive: () => ['/pages/xydtXiaowugongkai/xydtXiaowugongkai',
  134. '/pages/xydtXiaowugongkaiInfo/xydtXiaowugongkaiInfo'
  135. ].some(item => item.includes(data.activePath))
  136. }, {
  137. title: '学院风采',
  138. url: '/pages/xydtXueyuanfengcai/xydtXueyuanfengcai',
  139. isActive: () => ['/pages/xydtXueyuanfengcai/xydtXueyuanfengcai',
  140. '/pages/xydtXueyuanfengcaiInfo/xydtXueyuanfengcaiInfo'
  141. ].some(item => item.includes(data.activePath))
  142. }]
  143. },
  144. {
  145. title: '教育教学',
  146. url: '/pages/jyjxZhuanyejianshe/jyjxZhuanyejianshe',
  147. children: [{
  148. title: '专业建设',
  149. url: '/pages/jyjxZhuanyejianshe/jyjxZhuanyejianshe',
  150. isActive: () => ['/pages/jyjxZhuanyejianshe/jyjxZhuanyejianshe',
  151. '/pages/jyjxZhuanyejiansheInfo/jyjxZhuanyejiansheInfo'
  152. ].some(item => item.includes(data.activePath))
  153. }, {
  154. title: '师资队伍',
  155. url: '/pages/jyjxShiziduiwu/jyjxShiziduiwu',
  156. isActive: () => ['/pages/jyjxShiziduiwu/jyjxShiziduiwu',
  157. '/pages/jyjxShiziduiwuInfo/jyjxShiziduiwuInfo'
  158. ].some(item => item.includes(data.activePath))
  159. }, {
  160. title: '教研活动',
  161. url: '/pages/jyjxKeyanhuodong/jyjxKeyanhuodong',
  162. isActive: () => ['/pages/jyjxKeyanhuodong/jyjxKeyanhuodong',
  163. '/pages/jyjxKeyanhuodongInfo/jyjxKeyanhuodongInfo'
  164. ].some(item => item.includes(data.activePath))
  165. }, {
  166. title: '科研动态',
  167. url: '/pages/jyjxKeyandongtai/jyjxKeyandongtai',
  168. isActive: () => ['/pages/jyjxKeyandongtai/jyjxKeyandongtai',
  169. '/pages/jyjxKeyandongtaiInfo/jyjxKeyandongtaiInfo'
  170. ].some(item => item.includes(data.activePath))
  171. }, {
  172. title: '技能鉴定',
  173. url: '/pages/jyjxJinengjianding/jyjxJinengjianding',
  174. isActive: () => ['/pages/jyjxJinengjianding/jyjxJinengjianding',
  175. '/pages/jyjxJinengjiandingInfo/jyjxJinengjiandingInfo'
  176. ].some(item => item.includes(data.activePath))
  177. }, {
  178. title: '第二课堂',
  179. url: '/pages/jyjxDierketang/jyjxDierketang',
  180. isActive: () => ['/pages/jyjxDierketang/jyjxDierketang',
  181. '/pages/jyjxDierketangInfo/jyjxDierketangInfo'
  182. ].some(item => item.includes(data.activePath))
  183. }, {
  184. title: '大赛风采',
  185. url: '/pages/jyjxDasaifengcai/jyjxDasaifengcai',
  186. isActive: () => ['/pages/jyjxDasaifengcai/jyjxDasaifengcai',
  187. '/pages/jyjxDasaifengcaiInfo/jyjxDasaifengcaiInfo'
  188. ].some(item => item.includes(data.activePath))
  189. }, {
  190. title: '重点项目',
  191. url: '/pages/jyjxZhongdianxiangmu/jyjxZhongdianxiangmu',
  192. isActive: () => ['/pages/jyjxZhongdianxiangmu/jyjxZhongdianxiangmu',
  193. '/pages/jyjxZhongdianxiangmuInfo/jyjxZhongdianxiangmuInfo'
  194. ].some(item => item.includes(data.activePath))
  195. },
  196. {
  197. title: '校企合作',
  198. url: '/pages/jyjxXiaoqihezuo/jyjxXiaoqihezuo',
  199. isActive: () => ['/pages/jyjxXiaoqihezuoInfo/jyjxXiaoqihezuoInfo',
  200. '/pages/jyjxXiaoqihezuo/jyjxXiaoqihezuo'
  201. ].some(item => item.includes(data.activePath))
  202. },
  203. {
  204. title: '规章制度',
  205. url: '/pages/jyjxGuizhangzhidu/jyjxGuizhangzhidu',
  206. isActive: () => ['/pages/jyjxGuizhangzhidu/jyjxGuizhangzhidu',
  207. '/pages/jyjxGuizhangzhiduInfo/jyjxGuizhangzhiduInfo'
  208. ].some(item => item.includes(data.activePath))
  209. },
  210. ]
  211. }, {
  212. title: '学生园地',
  213. url: '/pages/xsydDeyuduiwu/xsydDeyuduiwu',
  214. children: [{
  215. title: '德育队伍',
  216. url: '/pages/xsydDeyuduiwu/xsydDeyuduiwu',
  217. isActive: () => ['/pages/xsydDeyuduiwu/xsydDeyuduiwu',
  218. '/pages/xsydDeyuduiwuInfo/xsydDeyuduiwuInfo'
  219. ].some(item => item.includes(data.activePath))
  220. }, {
  221. title: '学生活动',
  222. url: '/pages/xsydXueshenghuodong/xsydXueshenghuodong',
  223. isActive: () => ['/pages/xsydXueshenghuodong/xsydXueshenghuodong',
  224. '/pages/xsydXueshenghuodongInfo/xsydXueshenghuodongInfo'
  225. ].some(item => item.includes(data.activePath))
  226. }, {
  227. title: '共青团',
  228. url: '/pages/xsydGongqingtuan/xsydGongqingtuan',
  229. isActive: () => ['/pages/xsydGongqingtuan/xsydGongqingtuan',
  230. '/pages/xsydGongqingtuanInfo/xsydGongqingtuanInfo'
  231. ].some(item => item.includes(data.activePath))
  232. }, {
  233. title: '资助管理',
  234. url: '/pages/xsydZizhuguanli/xsydZizhuguanli',
  235. isActive: () => ['/pages/xsydZizhuguanli/xsydZizhuguanli',
  236. '/pages/xsydZizhuguanliInfo/xsydZizhuguanliInfo'
  237. ].some(item => item.includes(data.activePath))
  238. }]
  239. },
  240. {
  241. title: '招生就业',
  242. url: "pages/zsjyZhaoshengjianzhang/zsjyZhaoshengjianzhang",
  243. children: [{
  244. title: '招生简章',
  245. url: "/pages/zsjyZhaoshengjianzhang/zsjyZhaoshengjianzhang",
  246. isActive: () => ['/pages/zsjyZhaoshengjianzhang/zsjyZhaoshengjianzhang'].some(
  247. item => item.includes(data.activePath))
  248. }, {
  249. title: '专业介绍',
  250. url: '/pages/zsjyZhuanyejieshao/zsjyZhuanyejieshao',
  251. isActive: () => ['/pages/zsjyZhuanyejieshao/zsjyZhuanyejieshao'].some(item => item
  252. .includes(data.activePath))
  253. }, {
  254. title: '升学',
  255. url: '/pages/zsjyShengxue/zsjyShengxue',
  256. isActive: () => ['/pages/zsjyShengxue/zsjyShengxue'].some(item => item.includes(
  257. data.activePath))
  258. }, {
  259. title: '报考指南',
  260. url: '/pages/zsjyBaokaozhinan/zsjyBaokaozhinan',
  261. isActive: () => ['/pages/zsjyBaokaozhinan/zsjyBaokaozhinan'].some(item => item
  262. .includes(
  263. data.activePath))
  264. }, {
  265. title: '往年录取分数',
  266. url: '/pages/zsjyWangnianluqufenshu/zsjyWangnianluqufenshu',
  267. isActive: () => ['/pages/zsjyWangnianluqufenshu/zsjyWangnianluqufenshu'].some(
  268. item => item.includes(
  269. data.activePath))
  270. }, {
  271. title: '校企合作',
  272. url: '/pages/zsjyXiaoqihezuo/zsjyXiaoqihezuo',
  273. isActive: () => ['/pages/zsjyXiaoqihezuo/zsjyXiaoqihezuo',
  274. '/pages/zsjyXiaoqihezuoInfo/zsjyXiaoqihezuoInfo'
  275. ].some(item => item.includes(
  276. data.activePath))
  277. }, {
  278. title: '招聘信息',
  279. url: '/pages/zsjyZhaopinxinxi/zsjyZhaopinxinxi',
  280. isActive: () => ['/pages/zsjyZhaopinxinxi/zsjyZhaopinxinxi'].some(item => item
  281. .includes(
  282. data.activePath))
  283. }, {
  284. title: '政策文件',
  285. url: '/pages/zsjyZhengcewenjian/zsjyZhengcewenjian',
  286. isActive: () => ['/pages/zsjyZhengcewenjian/zsjyZhengcewenjian',
  287. '/pages/zsjyZhengcewenhuaInfo/zsjyZhengcewenhuaInfo'
  288. ].some(item => item.includes(
  289. data.activePath))
  290. }, {
  291. title: '优秀毕业生',
  292. url: '/pages/zsjyYouxiubiyesheng/zsjyYouxiubiyesheng',
  293. isActive: () => ['/pages/zsjyYouxiubiyesheng/zsjyYouxiubiyesheng',
  294. '/pages/zsjyYouxiubiyeshengInfo/zsjyYouxiubiyeshengInfo'
  295. ].some(item => item.includes(
  296. data.activePath))
  297. }, {
  298. title: '预报名',
  299. url: '/pages/zsjyYubaoming/zsjyYubaoming',
  300. isActive: () => ['/pages/zsjyYubaoming/zsjyYubaoming'].some(item => item.includes(
  301. data.activePath))
  302. }]
  303. }, {
  304. title: '职业培训',
  305. url: '/pages/zypxTongzhigonggao/zypxTongzhigonggao',
  306. children: [{
  307. title: '线上教育',
  308. type: 'link',
  309. url: '',
  310. isActive: () => {}
  311. }, {
  312. title: '课程查询',
  313. type: 'link',
  314. url: '',
  315. isActive: () => {}
  316. }, {
  317. title: '通知公告',
  318. url: '/pages/zypxTongzhigonggao/zypxTongzhigonggao',
  319. isActive: () => ['/pages/zypxTongzhigonggao/zypxTongzhigonggao',
  320. '/pages/zypxTongzhigonggaoInfo/zypxTongzhigonggaoInfo'
  321. ].some(item => item.includes(
  322. data.activePath))
  323. }]
  324. }, {
  325. title: '下载中心',
  326. url: '/pages/xzzxXiazaizhongxin/xzzxXiazaizhongxin',
  327. children: [{
  328. title: '下载',
  329. url: '/pages/xzzxXiazaizhongxin/xzzxXiazaizhongxin',
  330. isActive: () => ['/pages/xzzxXiazaizhongxin/xzzxXiazaizhongxin'].some(item => item
  331. .includes(
  332. data.activePath))
  333. }]
  334. },
  335. ],
  336. activeMenu: null,
  337. activePath: '',
  338. showMenu: false,
  339. })
  340. onLoad(() => {
  341. const pages = getCurrentPages();
  342. data.activePath = pages[pages.length - 1].route;
  343. const parentMenu = data.list.find(item => item.children.some(cit => cit.isActive(data.activePath)));
  344. if (parentMenu) {
  345. data.activeMenu = parentMenu.url;
  346. }
  347. })
  348. function handleClick(data) {
  349. console.log(`菜单:${data.title};路径:${data.url}`);
  350. if (data.type == 'link') {
  351. if (data.url) {
  352. window.location.href = data.url;
  353. }
  354. return;
  355. }
  356. if (data.url) {
  357. uni.redirectTo({
  358. url: data.url
  359. })
  360. }
  361. }
  362. function handleChangeMenu() {
  363. data.showMenu = !data.showMenu;
  364. // data.showMenu && scrollToElement('.head-item-text.active')
  365. }
  366. </script>
  367. <style>
  368. </style>