Navbar.vue 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368
  1. <template>
  2. <div class="navbar">
  3. <div class="pageTitle">{{ this.$route.meta.title }}</div>
  4. <!--收缩左侧菜单按钮-->
  5. <!-- <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
  6. <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> -->
  7. <!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" /> -->
  8. <div class="right-menu">
  9. <!--搜索,全屏,大小写转换和翻译-->
  10. <!-- <template v-if="device!=='mobile'">
  11. <search id="header-search" class="right-menu-item" />
  12. <error-log class="errLog-container right-menu-item hover-effect" />
  13. <screenfull id="screenfull" class="right-menu-item hover-effect" />
  14. <el-tooltip :content="$t('navbar.size')" effect="dark" placement="bottom">
  15. <size-select id="size-select" class="right-menu-item hover-effect" />
  16. </el-tooltip>
  17. <lang-select class="right-menu-item hover-effect" />
  18. </template> -->
  19. <div class="noticeIconBox">
  20. <img src="@/assets/public/nav/notice1.png" class="noticeIconImg" @click="showTabs = !showTabs" />
  21. <span class="unreadCount">{{ msg.count }}</span>
  22. <!-- <img src="@/assets/public/nav/arrowDown.png" class="arrowDown" /> -->
  23. <div class="noticeTabsBox" v-if="showTabs" ref="noticeTabsBox">
  24. <div class="noticeTabsTitleBox">
  25. <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 1 }" @click="changeTabs(1)">
  26. <div class="noticeTabsItem">
  27. 资讯
  28. <span class="noticeMessageNew" v-if="msg.apply_articale.length > 0"></span>
  29. </div>
  30. </div>
  31. <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 2 }" @click="changeTabs(2)">
  32. <div class="noticeTabsItem">
  33. 商品
  34. <span class="noticeMessageNew" v-if="msg.good.length > 0"></span>
  35. </div>
  36. </div>
  37. <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 4 }" @click="changeTabs(4)">
  38. <div class="noticeTabsItem">
  39. 书刊
  40. <span class="noticeMessageNew" v-if="msg.book.length > 0"></span>
  41. </div>
  42. </div>
  43. <!-- <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 5 }" @click="changeTabs(5)">
  44. <div class="noticeTabsItem">
  45. 聊天
  46. <span class="noticeMessageNew" v-if="msg.chat.length > 0"></span>
  47. </div>
  48. </div> -->
  49. <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 8 }" @click="changeTabs(8)">
  50. <div class="noticeTabsItem">
  51. 企业
  52. <span class="noticeMessageNew" v-if="msg.complany.length > 0"></span>
  53. </div>
  54. </div>
  55. <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 9 }" @click="changeTabs(9)">
  56. <div class="noticeTabsItem">
  57. 项目
  58. <span class="noticeMessageNew" v-if="msg.project.length > 0"></span>
  59. </div>
  60. </div>
  61. <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 3 }" @click="changeTabs(3)"
  62. v-if="userType == 10000 || userType == 1 || userType == 3">
  63. <div class="noticeTabsItem">
  64. 求职招聘
  65. <span class="noticeMessageNew"
  66. v-if="msg.job_hunting.length > 0 || msg.job_recruiting.length > 0 || msg.job_apply.length > 0 || msg.job_resume.length > 0">
  67. </span>
  68. </div>
  69. </div>
  70. <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 6 }" @click="changeTabs(6)"
  71. v-if="userType == 10000 || userType == 2">
  72. <div class="noticeTabsItem">
  73. 通知
  74. <span class="noticeMessageNew" v-if="msg.notice.length > 0"></span>
  75. </div>
  76. </div>
  77. <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 7 }" @click="changeTabs(7)"
  78. v-if="userType == 10000 || userType == 2">
  79. <div class="noticeTabsItem">
  80. 投诉
  81. <span class="noticeMessageNew" v-if="msg.complaint.length > 0 || msg.complaint_deal.length > 0"></span>
  82. </div>
  83. </div>
  84. </div>
  85. <!-- 求职,招聘切换按钮 -->
  86. <div class="noticeTabsLine" v-if="tabsIndex == 3" style="height: 20px; margin: 0px; margin-top: -20px;">
  87. <ul class="noticeTabsLink">
  88. <li v-if="userType == 1">
  89. 求职
  90. </li>
  91. <li v-if="userType == 3">
  92. 招聘
  93. </li>
  94. </ul>
  95. <ul class="noticeTabsLink" v-if="userType == 10000">
  96. <li v-if="qiu" @click="changeJob(1)">
  97. 求职
  98. <img src="@/assets/public/nav/arrowDown.png" class="arrowDown" />
  99. </li>
  100. <li v-if="zhao" @click="changeJob(2)">
  101. 招聘
  102. <img src="@/assets/public/nav/arrowDown.png" class="arrowDown" />
  103. </li>
  104. </ul>
  105. </div>
  106. <div class="noticeTabsLinkLine">
  107. <div v-if="userType == 10000">
  108. <div v-if="tabsIndex == 1" @click="goToPath(1, 0)">待审核列表</div>
  109. <div v-if="tabsIndex == 2" @click="goToPath(2, 0)">待审核列表</div>
  110. <div class="qiuFlex" v-if="tabsIndex == 3 && qiu == true && userType == 10000" @click="goToPath(3, 0)">
  111. <span :class="{ 'qiuPillow': true, 'qiuPillowHover': qiu1 == true }" @mouseover="handleQiu(1)"
  112. @click="goToPath(3.1, 0)">待审核列表</span>
  113. <span :class="{ 'qiuPillow': true, 'qiuPillowHover': qiu2 == true }" @mouseover="handleQiu(2)"
  114. @click="goToPath(3.2, 0)">职场机会</span>
  115. </div>
  116. <div class="qiuFlex" v-if="tabsIndex == 3 && zhao == true && userType == 10000" @click="goToPath(3, 0)">
  117. <span :class="{ 'qiuPillow': true, 'qiuPillowHover': zhao1 == true }" @mouseover="handleQiu(3)"
  118. @click="goToPath(3.3, 0)">待审核列表</span>
  119. <span :class="{ 'qiuPillow': true, 'qiuPillowHover': zhao2 == true }" @mouseover="handleQiu(4)"
  120. @click="goToPath(3.4, 0)">人才库</span>
  121. </div>
  122. <div v-if="tabsIndex == 4" @click="goToPath(4, 0)">待审核列表</div>
  123. <!-- 聊天 -->
  124. <div class="qiuFlex" v-if="tabsIndex == 5">
  125. <span style="cursor: default;" :class="{ 'qiuPillow': true, 'qiuPillowHover': single == true }"
  126. @mouseover="handleQiu(5)">单聊</span>
  127. <span style="cursor: default;" :class="{ 'qiuPillow': true, 'qiuPillowHover': group == true }"
  128. @mouseover="handleQiu(6)">群聊</span>
  129. </div>
  130. <!-- 通知 -->
  131. <div v-if="tabsIndex == 6" @click="goToPath(6, 0)">待审核列表</div>
  132. <!-- 投诉 -->
  133. <div v-if="tabsIndex == 7" @click="goToPath(7, 0)">待审核列表</div>
  134. <!-- 企业 -->
  135. <div v-if="tabsIndex == 8" @click="goToPath(8, 0)">待审核列表</div>
  136. <!-- 项目 -->
  137. <div v-if="tabsIndex == 9" @click="goToPath(9, 0)">待审核列表</div>
  138. </div>
  139. <div v-else>
  140. <div v-if="tabsIndex == 1" @click="goToPath(1, -1)">资讯列表</div>
  141. <div v-if="tabsIndex == 2" @click="goToPath(2, -1)">商品列表</div>
  142. <div v-if="tabsIndex == 3 && (userType == 2 || userType == 4)" @click="goToPath(3, -1)">求职招聘列表</div>
  143. <div class="qiuFlex" v-if="tabsIndex == 3 && qiu == true && userType == 1" @click="goToPath(3, 0)">
  144. <span :class="{ 'qiuPillow': true, 'qiuPillowHover': qiu1 == true }" @mouseover="handleQiu(1)"
  145. @click="goToPath(3.1, -1)">求职列表</span>
  146. <span :class="{ 'qiuPillow': true, 'qiuPillowHover': qiu2 == true }" @mouseover="handleQiu(2)"
  147. @click="goToPath(3.2, 0)">职场机会</span>
  148. </div>
  149. <div class="qiuFlex" v-if="tabsIndex == 3 && zhao == true && userType == 3" @click="goToPath(3, 0)">
  150. <span :class="{ 'qiuPillow': true, 'qiuPillowHover': zhao1 == true }" @mouseover="handleQiu(3)"
  151. @click="goToPath(3.3, -1)">招聘列表</span>
  152. <span :class="{ 'qiuPillow': true, 'qiuPillowHover': zhao2 == true }" @mouseover="handleQiu(4)"
  153. @click="goToPath(3.4, 0)">人才库</span>
  154. </div>
  155. <div v-if="tabsIndex == 4" @click="goToPath(4, -1)">书刊列表</div>
  156. <!-- <div class="qiuFlex" v-if="tabsIndex == 5">
  157. <span style="cursor: default;" :class="{ 'qiuPillow': true, 'qiuPillowHover': single == true }"
  158. @mouseover="handleQiu(5)">单聊</span>
  159. <span style="cursor: default;" :class="{ 'qiuPillow': true, 'qiuPillowHover': group == true }"
  160. @mouseover="handleQiu(6)">群聊</span>
  161. </div> -->
  162. <!-- 通知 -->
  163. <div v-if="tabsIndex == 6" @click="goToPath(6.1, -1)">通知列表</div>
  164. <!-- <div class="qiuFlex" v-if="tabsIndex == 6 && userType == 2">
  165. <span @click="goToPath(6.1, -1)" :class="{ 'qiuPillow': true, 'qiuPillowHover': notice1 == true }"
  166. @mouseover="handleQiu(7)">通知列表</span>
  167. <span @click="goToPath(6.2, 0)" :class="{ 'qiuPillow': true, 'qiuPillowHover': notice2 == true }"
  168. @mouseover="handleQiu(8)">行政通知</span>
  169. </div> -->
  170. <!-- 投诉 -->
  171. <div class="qiuFlex" v-if="tabsIndex == 7 && userType == 2">
  172. <span @click="goToPath(7.1, -1)" :class="{ 'qiuPillow': true, 'qiuPillowHover': complaint1 == true }"
  173. @mouseover="handleQiu(9)">投诉列表</span>
  174. <span @click="goToPath(7.2, -1)" :class="{ 'qiuPillow': true, 'qiuPillowHover': complaint2 == true }"
  175. @mouseover="handleQiu(10)">待处理列表</span>
  176. <!-- <span @click="goToPath(7.3, -1)" :class="{ 'qiuPillow': true, 'qiuPillowHover': complaint3 == true }"
  177. @mouseover="handleQiu(11)">行政投诉</span> -->
  178. </div>
  179. <!-- 企业 -->
  180. <div v-if="tabsIndex == 8" @click="goToPath(8, -1)">企业列表</div>
  181. <!-- 项目 -->
  182. <div v-if="tabsIndex == 9" @click="goToPath(9, -1)">项目列表</div>
  183. </div>
  184. </div>
  185. <div class="infinite-list" v-infinite-scroll style="overflow:overlay">
  186. <!-- 资讯 -->
  187. <div class="noticeTabsDataBox" v-if="tabsIndex == 1">
  188. <div v-if="msg.apply_articale && msg.apply_articale.length > 0">
  189. <div class="noticeTabsDataItem" v-for="item in msg.apply_articale" :key="item.id"
  190. @click="goToPath(1, item.id)">
  191. <div class="noticeTabsDataItemImg">
  192. <img src="@/assets/public/nav/news.png">
  193. </div>
  194. <div class="noticeTabsDataItemContent">
  195. <div class="noticeNewsTitle">{{ item.title }}</div>
  196. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  197. </div>
  198. </div>
  199. </div>
  200. <div v-else class="noticeTabsDataItemEmpty">
  201. <div class="noticeEmpty">
  202. <img src="@/assets/public/nav/message-empty.png">
  203. </div>
  204. <div class="noticeEmptyText">
  205. 暂无消息
  206. </div>
  207. </div>
  208. </div>
  209. <!-- 商品 -->
  210. <div class="noticeTabsDataBox" v-if="tabsIndex == 2">
  211. <div v-if="msg.good && msg.good.length > 0">
  212. <div class="noticeTabsDataItem" v-for="item in msg.good" :key="item.id" @click="goToPath(2, item.id)">
  213. <div class="noticeTabsDataItemImg ">
  214. <img src="@/assets/public/nav/goods.png">
  215. </div>
  216. <div class="noticeTabsDataItemContent">
  217. <div class="noticeNewsTitle">{{ item.name }}</div>
  218. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  219. </div>
  220. </div>
  221. </div>
  222. <div v-else class="noticeTabsDataItemEmpty">
  223. <div class="noticeEmpty">
  224. <img src="@/assets/public/nav/message-empty.png">
  225. </div>
  226. <div class="noticeEmptyText">
  227. 暂无消息
  228. </div>
  229. </div>
  230. </div>
  231. <!-- 求职信息 待审核 -->
  232. <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && qiu == true && qiu1 == true && userType == 10000">
  233. <div v-if="msg.job_hunting && msg.job_hunting.length > 0">
  234. <div class="noticeTabsDataItem" v-for="item in msg.job_hunting" :key="item.id"
  235. @click="goToPath(3.1, item.id)">
  236. <!-- 待审核求职 -->
  237. <div class="noticeTabsDataItemImg">
  238. <img src="@/assets/public/nav/job.png">
  239. </div>
  240. <div class="noticeTabsDataItemContent">
  241. <div class="noticeNewsTitle">{{ item.user_name + ':' + item.website_name + '-' + '发布求职信息了' }}</div>
  242. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  243. </div>
  244. </div>
  245. </div>
  246. <div v-else class="noticeTabsDataItemEmpty">
  247. <div class="noticeEmpty">
  248. <img src="@/assets/public/nav/message-empty.png">
  249. </div>
  250. <div class="noticeEmptyText">
  251. 暂无消息
  252. </div>
  253. </div>
  254. </div>
  255. <!-- 求职信息 职场机会 -->
  256. <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && qiu == true && qiu2 == true && userType == 10000">
  257. <div v-if="msg.job_resume && msg.job_resume.length > 0">
  258. <div class="noticeTabsDataItem" v-for="item in msg.job_resume" :key="item.id"
  259. @click="goToPath(3.2, item.recruit_id)">
  260. <div class="noticeTabsDataItemImg">
  261. <img src="@/assets/public/nav/job.png">
  262. </div>
  263. <div class="noticeTabsDataItemContent">
  264. <div class="noticeNewsTitle">{{ item.business_name + ':' + item.website_name + ' ' + '关注了' +
  265. item.user_name
  266. + '的简历' }}</div>
  267. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  268. </div>
  269. </div>
  270. </div>
  271. <div v-else class="noticeTabsDataItemEmpty">
  272. <div class="noticeEmpty">
  273. <img src="@/assets/public/nav/message-empty.png">
  274. </div>
  275. <div class="noticeEmptyText">
  276. 暂无消息
  277. </div>
  278. </div>
  279. </div>
  280. <!-- 招聘信息 招聘信息 job_recruiting -->
  281. <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && zhao == true && zhao1 == true && userType == 10000">
  282. <div v-if="msg.job_recruiting && msg.job_recruiting.length > 0">
  283. <div class="noticeTabsDataItem" v-for="item in msg.job_recruiting" :key="item.id"
  284. @click="goToPath(3.3, item.id)">
  285. <!-- 招聘信息 job_recruiting -->
  286. <div class="noticeTabsDataItemImg">
  287. <img src="@/assets/public/nav/job.png">
  288. </div>
  289. <div class="noticeTabsDataItemContent">
  290. <div class="noticeNewsTitle">{{ item.user_name + ':' + item.website_name + ' ' + '-' + item.title
  291. + '岗位' }}
  292. </div>
  293. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  294. </div>
  295. </div>
  296. </div>
  297. <div v-else class="noticeTabsDataItemEmpty">
  298. <div class="noticeEmpty">
  299. <img src="@/assets/public/nav/message-empty.png">
  300. </div>
  301. <div class="noticeEmptyText">
  302. 暂无消息
  303. </div>
  304. </div>
  305. </div>
  306. <!-- 招聘信息 人才库 job_apply -->
  307. <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && zhao == true && zhao2 == true && userType == 10000">
  308. <div v-if="msg.job_apply && msg.job_apply.length > 0">
  309. <div class="noticeTabsDataItem" v-for="item in msg.job_apply" :key="item.id"
  310. @click="goToPath(3.4, item.hunt_id)">
  311. <!-- 人才库 job_apply -->
  312. <div class="noticeTabsDataItemImg">
  313. <img src="@/assets/public/nav/job.png">
  314. </div>
  315. <div class="noticeTabsDataItemContent">
  316. <div class="noticeNewsTitle">{{ item.user_name + ': 求职了' + '-' + item.business_name +
  317. '-' +
  318. item.job_name }}</div>
  319. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  320. </div>
  321. </div>
  322. </div>
  323. <div v-else class="noticeTabsDataItemEmpty">
  324. <div class="noticeEmpty">
  325. <img src="@/assets/public/nav/message-empty.png">
  326. </div>
  327. <div class="noticeEmptyText">
  328. 暂无消息
  329. </div>
  330. </div>
  331. </div>
  332. <!-- 求职信息 待审核 -->
  333. <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && qiu == true && qiu1 == true && userType == 1">
  334. <div v-if="msg.job_hunting && msg.job_hunting.length > 0">
  335. <div class="noticeTabsDataItem" v-for="item in msg.job_hunting" :key="item.id"
  336. @click="goToPath(3.1, item.id)">
  337. <!-- 待审核求职 -->
  338. <div class="noticeTabsDataItemImg">
  339. <img src="@/assets/public/nav/job.png">
  340. </div>
  341. <div class="noticeTabsDataItemContent">
  342. <div class="noticeNewsTitle">{{ item.user_name + ':' + item.website_name + '-' + '发布求职信息了' }}</div>
  343. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  344. </div>
  345. </div>
  346. </div>
  347. <div v-else class="noticeTabsDataItemEmpty">
  348. <div class="noticeEmpty">
  349. <img src="@/assets/public/nav/message-empty.png">
  350. </div>
  351. <div class="noticeEmptyText">
  352. 暂无消息
  353. </div>
  354. </div>
  355. </div>
  356. <!-- 求职信息 职场机会 -->
  357. <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && qiu == true && qiu2 == true && userType == 1">
  358. <div v-if="msg.job_resume && msg.job_resume.length > 0">
  359. <div class="noticeTabsDataItem" v-for="item in msg.job_resume" :key="item.id"
  360. @click="goToPath(3.2, item.recruit_id)">
  361. <div class="noticeTabsDataItemImg">
  362. <img src="@/assets/public/nav/message-news.png">
  363. </div>
  364. <div class="noticeTabsDataItemContent">
  365. <div class="noticeNewsTitle">{{ item.business_name + ':' + item.website_name + ' ' + '关注了' +
  366. item.user_name
  367. + '的简历' }}</div>
  368. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  369. </div>
  370. </div>
  371. </div>
  372. <div v-else class="noticeTabsDataItemEmpty">
  373. <div class="noticeEmpty">
  374. <img src="@/assets/public/nav/message-empty.png">
  375. </div>
  376. <div class="noticeEmptyText">
  377. 暂无消息
  378. </div>
  379. </div>
  380. </div>
  381. <!-- 招聘信息 招聘信息 job_recruiting -->
  382. <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && zhao == true && zhao1 == true && userType == 3">
  383. <div v-if="msg.job_recruiting && msg.job_recruiting.length > 0">
  384. <div class="noticeTabsDataItem" v-for="item in msg.job_recruiting" :key="item.id"
  385. @click="goToPath(3.3, item.id)">
  386. <!-- 招聘信息 job_recruiting -->
  387. <div class="noticeTabsDataItemImg newsIcon">
  388. <img src="@/assets/public/nav/message-news.png">
  389. </div>
  390. <div class="noticeTabsDataItemContent">
  391. <div class="noticeNewsTitle">{{ item.user_name + ':' + item.website_name + ' ' + '-' + item.title
  392. + '岗位' }}
  393. </div>
  394. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  395. </div>
  396. </div>
  397. </div>
  398. <div v-else class="noticeTabsDataItemEmpty">
  399. <div class="noticeEmpty">
  400. <img src="@/assets/public/nav/message-empty.png">
  401. </div>
  402. <div class="noticeEmptyText">
  403. 暂无消息
  404. </div>
  405. </div>
  406. </div>
  407. <!-- 招聘信息 人才库 job_apply -->
  408. <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && zhao == true && zhao2 == true && userType == 3">
  409. <div v-if="msg.job_apply && msg.job_apply.length > 0">
  410. <div class="noticeTabsDataItem" v-for="item in msg.job_apply" :key="item.id"
  411. @click="goToPath(3.4, item.hunt_id)">
  412. <!-- 人才库 job_apply -->
  413. <div class="noticeTabsDataItemImg">
  414. <img src="@/assets/public/nav/job.png">
  415. </div>
  416. <div class="noticeTabsDataItemContent">
  417. <div class="noticeNewsTitle">{{ item.user_name + ': 求职了' + '-' + item.business_name +
  418. '-' +
  419. item.job_name }}</div>
  420. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  421. </div>
  422. </div>
  423. </div>
  424. <div v-else class="noticeTabsDataItemEmpty">
  425. <div class="noticeEmpty">
  426. <img src="@/assets/public/nav/message-empty.png">
  427. </div>
  428. <div class="noticeEmptyText">
  429. 暂无消息
  430. </div>
  431. </div>
  432. </div>
  433. <!-- 书刊信息 -->
  434. <div class="noticeTabsDataBox" v-if="tabsIndex == 4">
  435. <div v-if="msg.book && msg.book.length > 0">
  436. <div class="noticeTabsDataItem" v-for="item in msg.book" :key="item.id" @click="goToPath(4, item.id)">
  437. <div class="noticeTabsDataItemImg ">
  438. <img src="@/assets/public/nav/book.png">
  439. </div>
  440. <div class="noticeTabsDataItemContent">
  441. <div class="noticeNewsTitle">{{ item.title }}</div>
  442. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  443. </div>
  444. </div>
  445. </div>
  446. <div v-else class="noticeTabsDataItemEmpty">
  447. <div class="noticeEmpty">
  448. <img src="@/assets/public/nav/message-empty.png">
  449. </div>
  450. <div class="noticeEmptyText">
  451. 暂无消息
  452. </div>
  453. </div>
  454. </div>
  455. <!-- 单聊 -->
  456. <!-- <div class="noticeTabsDataBox" v-if="tabsIndex == 5 && single == true && group == false">
  457. <div v-if="msg.chat && msg.chat.length > 0">
  458. <div class="noticeTabsDataItem" v-for="item in msg.chat" :key="item.id" @click="goToPath(5.1, 0)">
  459. <div class="noticeTabsDataItemImg chatIcon">
  460. <img src="@/assets/public/nav/single.png">
  461. </div>
  462. <div class="noticeTabsDataItemContent">
  463. <div class="noticeNewsTitle">{{ item.user_name + ':' + item.content }}</div>
  464. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  465. </div>
  466. </div>
  467. </div>
  468. <div v-else class="noticeTabsDataItemEmpty">
  469. <div class="noticeEmpty">
  470. <img src="@/assets/public/nav/message-empty.png">
  471. </div>
  472. <div class="noticeEmptyText">
  473. 暂无消息
  474. </div>
  475. </div>
  476. </div> -->
  477. <!-- 群聊 -->
  478. <!-- <div class="noticeTabsDataBox" v-if="tabsIndex == 5 && group == true && single == false">
  479. <div v-if="msg.chat_group && msg.chat_group.length > 0">
  480. <div class="noticeTabsDataItem" v-for="item in msg.chat_group" :key="item.id" @click="goToPath(5.2, 0)">
  481. <div class="noticeTabsDataItemImg chatIcon">
  482. <img src="@/assets/public/nav/single.png">
  483. </div>
  484. <div class="noticeTabsDataItemContent">
  485. <div class="noticeNewsTitle">{{ item.user_name + ':' + item.content }}</div>
  486. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  487. </div>
  488. </div>
  489. </div>
  490. <div v-else class="noticeTabsDataItemEmpty">
  491. <div class="noticeEmpty">
  492. <img src="@/assets/public/nav/message-empty.png">
  493. </div>
  494. <div class="noticeEmptyText">
  495. 暂无消息
  496. </div>
  497. </div>
  498. </div> -->
  499. <!-- 通知 -->
  500. <div class="noticeTabsDataBox" v-if="tabsIndex == 6 && notice1 == true && notice2 == false">
  501. <div v-if="msg.notice && msg.notice.length > 0">
  502. <div class="noticeTabsDataItem" v-for="item in msg.notice" :key="item.id" @click="goToPath(6, item.id)">
  503. <div class="noticeTabsDataItemImg ">
  504. <img src="@/assets/public/nav/notices.png">
  505. </div>
  506. <div class="noticeTabsDataItemContent">
  507. <div class="noticeNewsTitle">{{ item.title }}</div>
  508. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  509. </div>
  510. </div>
  511. </div>
  512. <div v-else class="noticeTabsDataItemEmpty">
  513. <div class="noticeEmpty">
  514. <img src="@/assets/public/nav/message-empty.png">
  515. </div>
  516. <div class="noticeEmptyText">
  517. 暂无消息
  518. </div>
  519. </div>
  520. </div>
  521. <!-- 行政通知 -->
  522. <!-- <div class="noticeTabsDataBox" v-if="tabsIndex == 6 && notice1 == true && notice2 == false">
  523. <div v-if="msg.notice && msg.notice.length > 0">
  524. <div class="noticeTabsDataItem" v-for="item in msg.notice" :key="item.id" @click="goToPath(6.1, item.id)">
  525. <div class="noticeTabsDataItemImg ">
  526. <img src="@/assets/public/nav/notices.png">
  527. </div>
  528. <div class="noticeTabsDataItemContent">
  529. <div class="noticeNewsTitle">{{ item.title }}</div>
  530. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  531. </div>
  532. </div>
  533. </div>
  534. <div v-else class="noticeTabsDataItemEmpty">
  535. <div class="noticeEmpty">
  536. <img src="@/assets/public/nav/message-empty.png">
  537. </div>
  538. <div class="noticeEmptyText">
  539. 暂无消息
  540. </div>
  541. </div>
  542. </div> -->
  543. <!-- 投诉 待审核列表 -->
  544. <div class="noticeTabsDataBox" v-if="tabsIndex == 7 && complaint1 == true && complaint2 == false">
  545. <div v-if="msg.complaint && msg.complaint.length > 0">
  546. <div class="noticeTabsDataItem" v-for="item in msg.complaint" :key="item.id"
  547. @click="goToPath(7, item.id)">
  548. <div class="noticeTabsDataItemImg">
  549. <img src="@/assets/public/nav/complaint.png">
  550. </div>
  551. <div class="noticeTabsDataItemContent">
  552. <div class="noticeNewsTitle">{{ item.title }}</div>
  553. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  554. </div>
  555. </div>
  556. </div>
  557. <div v-else class="noticeTabsDataItemEmpty">
  558. <div class="noticeEmpty">
  559. <img src="@/assets/public/nav/message-empty.png">
  560. </div>
  561. <div class="noticeEmptyText">
  562. 暂无消息
  563. </div>
  564. </div>
  565. </div>
  566. <div class="noticeTabsDataBox" v-if="tabsIndex == 7 && complaint1 == false && complaint2 == true">
  567. <div v-if="msg.complaint_deal && msg.complaint_deal.length > 0">
  568. <div class="noticeTabsDataItem" v-for="item in msg.complaint_deal" :key="item.id"
  569. @click="goToPath(7, item.id)">
  570. <div class="noticeTabsDataItemImg">
  571. <img src="@/assets/public/nav/complaint.png">
  572. </div>
  573. <div class="noticeTabsDataItemContent">
  574. <div class="noticeNewsTitle">{{ item.title }}</div>
  575. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  576. </div>
  577. </div>
  578. </div>
  579. <div v-else class="noticeTabsDataItemEmpty">
  580. <div class="noticeEmpty">
  581. <img src="@/assets/public/nav/message-empty.png">
  582. </div>
  583. <div class="noticeEmptyText">
  584. 暂无消息
  585. </div>
  586. </div>
  587. </div>
  588. <!-- 企业 -->
  589. <div class="noticeTabsDataBox" v-if="tabsIndex == 8">
  590. <div v-if="msg.complany && msg.complany.length > 0">
  591. <div class="noticeTabsDataItem" v-for="item in msg.complany" :key="item.id"
  592. @click="goToPath(8, item.id)">
  593. <div class="noticeTabsDataItemImg ">
  594. <img src="@/assets/public/nav/company.png">
  595. </div>
  596. <div class="noticeTabsDataItemContent">
  597. <div class="noticeNewsTitle">{{ item.title }}</div>
  598. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  599. </div>
  600. </div>
  601. </div>
  602. <div v-else class="noticeTabsDataItemEmpty">
  603. <div class="noticeEmpty">
  604. <img src="@/assets/public/nav/message-empty.png">
  605. </div>
  606. <div class="noticeEmptyText">
  607. 暂无消息
  608. </div>
  609. </div>
  610. </div>
  611. <!-- 项目 -->
  612. <div class="noticeTabsDataBox" v-if="tabsIndex == 9">
  613. <div v-if="msg.project && msg.project.length > 0">
  614. <div class="noticeTabsDataItem" v-for="item in msg.project" :key="item.id"
  615. @click="goToPath(9, item.id)">
  616. <div class="noticeTabsDataItemImg ">
  617. <img src="@/assets/public/nav/project.png">
  618. </div>
  619. <div class="noticeTabsDataItemContent">
  620. <div class="noticeNewsTitle">{{ item.title }}</div>
  621. <div class="noticeNewsTime">{{ item.updated_at }}</div>
  622. </div>
  623. </div>
  624. </div>
  625. <div v-else class="noticeTabsDataItemEmpty">
  626. <div class="noticeEmpty">
  627. <img src="@/assets/public/nav/message-empty.png">
  628. </div>
  629. <div class="noticeEmptyText">
  630. 暂无消息
  631. </div>
  632. </div>
  633. </div>
  634. </div>
  635. </div>
  636. </div>
  637. <!-- 用户头像和菜单 -->
  638. <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
  639. <div class="avatar-wrapper">
  640. <!-- <img src="@/assets/public/nav/notice.png" class="user-notice"> -->
  641. <img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" v-if="avatar != ''">
  642. <img src="@/assets/login/userDefault.png" class="user-avatar" v-else>
  643. <span class="userName">{{ this.$store.state.user.name }}</span>
  644. <img src="@/assets/public/nav/arrowDown.png" class="arrowDown">
  645. <!--向下按钮-->
  646. <!-- <i class="el-icon-caret-bottom" /> -->
  647. </div>
  648. <el-dropdown-menu slot="dropdown">
  649. <router-link to="/profile/index">
  650. <div class="userMenuDownItem">
  651. <el-dropdown-item>
  652. <span style="display:block;">{{ $t('navbar.profile') }}</span>
  653. </el-dropdown-item>
  654. </div>
  655. </router-link>
  656. <!-- <router-link to="/">
  657. <el-dropdown-item>
  658. {{ $t('navbar.dashboard') }}
  659. </el-dropdown-item>
  660. </router-link>
  661. <a target="_blank" href="https://github.com/PanJiaChen/vue-element-admin/">
  662. <el-dropdown-item>
  663. {{ $t('navbar.github') }}
  664. </el-dropdown-item>
  665. </a>
  666. <a target="_blank" href="https://panjiachen.github.io/vue-element-admin-site/#/">
  667. <el-dropdown-item>Docs</el-dropdown-item>
  668. </a> -->
  669. <el-dropdown-item divided @click.native="logout">
  670. <div class="userMenuDownItem">
  671. <span style="display:block;">{{ $t('navbar.logOut') }}</span>
  672. <img src="@/assets/public/nav/Logout.png">
  673. </div>
  674. </el-dropdown-item>
  675. </el-dropdown-menu>
  676. </el-dropdown>
  677. </div>
  678. </div>
  679. </template>
  680. <script>
  681. import { mapGetters } from 'vuex'
  682. import Breadcrumb from '@/components/Breadcrumb'
  683. import Hamburger from '@/components/Hamburger'
  684. import ErrorLog from '@/components/ErrorLog'
  685. import Screenfull from '@/components/Screenfull'
  686. import SizeSelect from '@/components/SizeSelect'
  687. import LangSelect from '@/components/LangSelect'
  688. import Search from '@/components/HeaderSearch'
  689. import axios from 'axios';
  690. import router, { resetRouter } from '@/router'
  691. import BASEURL from '@/utils/baseUrl'
  692. import { getUseType, removeLoginStatus } from '@/utils/auth'
  693. export default {
  694. components: {
  695. Breadcrumb,
  696. Hamburger,
  697. ErrorLog,
  698. Screenfull,
  699. SizeSelect,
  700. LangSelect,
  701. Search
  702. },
  703. data() {
  704. return {
  705. msg: {},
  706. userType: '', //用户类型
  707. tabsIndex: 1, //显示哪个选项卡
  708. showTabs: false, //是否显示悬浮菜单
  709. //求职招聘
  710. qiu: false,
  711. zhao: true,
  712. qiu1: true,
  713. qiu2: false,
  714. zhao1: true,
  715. zhao2: false,
  716. pages: 1,
  717. single: true, //单聊
  718. group: false, //群聊
  719. notice1: true, //通知待审核列表
  720. notice2: false, //行政通知
  721. complaint1: true, //投诉待审核列表
  722. complaint2: false, //投诉待处理列表
  723. complaint3: false, //行政投诉
  724. }
  725. },
  726. computed: {
  727. ...mapGetters([
  728. 'sidebar',
  729. 'avatar',
  730. 'device'
  731. ]),
  732. },
  733. mounted() {
  734. this.getMsg();
  735. //获得用户类型
  736. this.userType = getUseType();
  737. if (this.userType == 1) {
  738. this.qiu = true;
  739. }
  740. // 添加点击事件监听器
  741. document.addEventListener('click', this.handleClickOutside);
  742. },
  743. beforeDestroy() {
  744. // 组件销毁前移除事件监听器
  745. document.removeEventListener('click', this.handleClickOutside);
  746. },
  747. methods: {
  748. //0.收缩菜单 start---------------------------------------->
  749. toggleSideBar() {
  750. this.$store.dispatch('app/toggleSideBar')
  751. },
  752. //0.收缩菜单 end---------------------------------------->
  753. //1.退出登录 start---------------------------------------->
  754. logout() {
  755. //获取 token
  756. const token = this.getTokenFromCookie();
  757. // 新做的,待替换
  758. // this.$store.dispatch('user/logoutapi', {token: token}).then(response => {
  759. // //重置访问过的路由
  760. // resetRouter()
  761. // dispatch('tagsView/delAllViews', null, { root: true })
  762. // console.log(response);
  763. // this.$store.commit("user/LOGOUT");
  764. // this.$router.push(`/login`);
  765. // }).catch(error => {
  766. // this.$store.commit("user/LOGOUT");
  767. // this.$router.push(`/login`);
  768. // });
  769. axios.get(BASEURL.WebCLogoutUrl, { params: { token: token } }).then(response => {
  770. console.log(response);
  771. this.$store.commit("user/LOGOUT");
  772. //this.$router.push(`/login`);
  773. //刷新页面
  774. window.location.reload();
  775. }).catch(error => {
  776. console.log(error);
  777. this.$store.commit("user/LOGOUT");
  778. //this.$router.push(`/login`);
  779. //this.$message.error(response.message);
  780. window.location.reload();
  781. });
  782. removeLoginStatus();
  783. },
  784. // async logout() {
  785. // await this.$store.dispatch('user/logout')
  786. // this.$router.push(`/login?redirect=${this.$route.fullPath}`)
  787. // },
  788. getTokenFromCookie() {
  789. const name = "Admin-Token=";
  790. const decodedCookie = decodeURIComponent(document.cookie);
  791. const cookieArray = decodedCookie.split(';');
  792. for (let i = 0; i < cookieArray.length; i++) {
  793. let cookie = cookieArray[i].trim();
  794. if (cookie.indexOf(name) === 0) {
  795. return cookie.substring(name.length, cookie.length); // 返回 token
  796. }
  797. }
  798. return ""; // 如果没有找到 token,返回空字符串
  799. },
  800. //1.退出登录 end---------------------------------------->
  801. //2.通知消息 start---------------------------------------->
  802. //2.1 获取通知消息列表
  803. getMsg() {
  804. this.$store.dispatch('news/getMSG').then(response => {
  805. // console.log('response1111111111', response);
  806. this.msg = response.data;
  807. // console.log('response1111111111msg', this.msg);
  808. }).catch(error => {
  809. console.log(error);
  810. });
  811. },
  812. //2.2 切换
  813. changeTabs(index) {
  814. this.tabsIndex = index;
  815. },
  816. //2.3跳转方法
  817. goToPath(type, id) {
  818. //如果id是0 跳转到列表
  819. if (id == 0) {
  820. if (type == 1) {
  821. this.$router.push(`/examine`);
  822. }
  823. else if (type == 2) {
  824. this.$router.push(`/goodListApply`);
  825. }
  826. else if (type == 3.1) { //求职 待审核
  827. this.$router.push(`/jobHuntingListApply`);
  828. }
  829. else if (type == 3.2) { // 职场机会
  830. this.$router.push(`/jobOpportunities`);
  831. }
  832. else if (type == 3.3) { // 招聘 待审核
  833. this.$router.push(`/checkjobRecruitingList`);
  834. }
  835. else if (type == 3.4) { // 人才库
  836. this.$router.push(`/jobHuntingApplyList`);
  837. }
  838. else if (type == 4) { //书刊 待审核
  839. this.$router.push(`/bookListApply`);
  840. }
  841. else if (type == 6) { //通知 待审核
  842. this.$router.push(`/noticeListApply`);
  843. }
  844. else if (type == 7) { //投诉 待审核
  845. this.$router.push(`/ncomplaintListApply`);
  846. }
  847. else if (type == 8) { //企业 待审核
  848. this.$router.push(`/checkcompanyList`);
  849. }
  850. else if (type == 9) { //项目 待审核
  851. this.$router.push(`/checkprojectList`);
  852. }
  853. } else if (id == -1) {
  854. if (type == 1) {
  855. this.$router.push(`/articleList`);
  856. }
  857. else if (type == 2) {
  858. this.$router.push(`/goodList`);
  859. }
  860. else if (type == 3) {
  861. this.$router.push(`/jobHuntingList`);
  862. }
  863. else if (type == 3.1) { //求职 待审核
  864. this.$router.push(`/jobHuntingList`);
  865. }
  866. else if (type == 3.2) { // 职场机会
  867. this.$router.push(`/jobOpportunities`);
  868. }
  869. else if (type == 3.3) { // 招聘 待审核
  870. this.$router.push(`/jobRecruitingList`);
  871. }
  872. else if (type == 3.4) { // 人才库
  873. this.$router.push(`/jobHuntingApplyList`);
  874. }
  875. else if (type == 4) { //书刊
  876. this.$router.push(`/bookList`);
  877. }
  878. else if (type == 6.1) { //通知
  879. this.$router.push(`/noticeList`);
  880. }
  881. else if (type == 7.1) { //投诉
  882. this.$router.push(`/ncomplaintList`);
  883. }
  884. else if (type == 7.2) { //投诉处理
  885. this.$router.push(`/ncomplaintListDeal`);
  886. }
  887. else if (type == 8) { //企业
  888. this.$router.push(`/companyList`);
  889. }
  890. else if (type == 9) { //项目
  891. this.$router.push(`/projectList`);
  892. }
  893. } else {
  894. if (type == 1) {
  895. this.$router.push(`/creatNews?id=${id}`);
  896. }
  897. else if (type == 2) {
  898. this.$router.push(`/addGood?id=${id}`);
  899. }
  900. else if (type == 3) {
  901. this.$router.push(`/addJobHunting?id=${id}`);
  902. }
  903. else if (type == 3.1) { //求职 待审核
  904. this.$router.push(`/addJobHunting?id=${id}`);
  905. }
  906. else if (type == 3.2) { // 职场机会
  907. this.$router.push(`/jobOpportunitiesDetails?id=${id}`);
  908. }
  909. else if (type == 3.3) { // 招聘 待审核
  910. this.$router.push(`/creatJob?id=${id}&to=checkjob`);
  911. }
  912. else if (type == 3.4) { // 人才库
  913. this.$router.push(`/jobHuntingApplyDetil?id=${id}`);
  914. }
  915. else if (type == 4) { //书刊
  916. this.$router.push(`/addBook?id=${id}`);
  917. }
  918. else if (type == 6) { //通知
  919. this.$router.push(`/addNotice?id=${id}`);
  920. }
  921. else if (type == 7) { //投诉
  922. this.$router.push(`/addNcomplaint?id=${id}`);
  923. }
  924. else if (type == 7.1) { //投诉处理
  925. this.$router.push(`/addNComplaint?id=${id}&read=1`);
  926. }
  927. else if (type == 8) { //企业
  928. this.$router.push(`/creatCompany?id=${id}&to=checkCompany`);
  929. }
  930. else if (type == 9) { //项目
  931. this.$router.push(`/creatProject?id=${id}&to=checkProject`);
  932. }
  933. }
  934. this.showTabs = false;
  935. },
  936. // 添加处理点击外部的方法
  937. handleClickOutside(event) {
  938. const noticeTabsBox = this.$refs.noticeTabsBox;
  939. const noticeIconImg = event.target.closest('.noticeIconImg');
  940. // 如果点击的不是通知图标,并且点击的区域不在通知框内,则关闭通知框
  941. if (!noticeIconImg && noticeTabsBox && !noticeTabsBox.contains(event.target)) {
  942. this.showTabs = false;
  943. }
  944. },
  945. //2.通知消息 end---------------------------------------->
  946. changeJob(index) {
  947. if (index == 1) {
  948. this.qiu = false;
  949. this.zhao = true;
  950. } else if (index == 2) {
  951. this.qiu = true;
  952. this.zhao = false;
  953. }
  954. },
  955. handleQiu(index) {
  956. if (index == 1) { //求职招聘
  957. this.qiu1 = true;
  958. this.qiu2 = false;
  959. } else if (index == 2) {
  960. this.qiu1 = false;
  961. this.qiu2 = true;
  962. } else if (index == 3) {
  963. this.zhao1 = true;
  964. this.zhao2 = false;
  965. } else if (index == 4) {
  966. this.zhao1 = false;
  967. this.zhao2 = true;
  968. } else if (index == 5) { //聊天部分
  969. this.single = true;
  970. this.group = false;
  971. } else if (index == 6) {
  972. this.single = false;
  973. this.group = true;
  974. } else if (index == 7) { //通知
  975. this.notice1 = true;
  976. this.notice2 = false;
  977. } else if (index == 8) {
  978. this.notice1 = false;
  979. this.notice2 = true;
  980. } else if (index == 9) { //投诉
  981. this.complaint1 = true;
  982. this.complaint2 = false;
  983. } else if (index == 10) {
  984. this.complaint1 = false;
  985. this.complaint2 = true;
  986. } else if (index == 11) {
  987. this.complaint1 = false;
  988. this.complaint2 = false;
  989. this.complaint3 = true;
  990. }
  991. }
  992. }
  993. }
  994. </script>
  995. <style lang="scss" scoped>
  996. .navbar {
  997. height: 60px;
  998. position: relative;
  999. display: flex;
  1000. align-items: center;
  1001. justify-content: space-between;
  1002. background: #fff;
  1003. // box-shadow: 0 1px 4px rgba(0,21,41,.08);
  1004. border-bottom: 1px solid #E9EDF7;
  1005. .pageTitle {
  1006. font-size: 20px;
  1007. font-weight: bold;
  1008. padding-left: 30px;
  1009. color: #45464E;
  1010. }
  1011. .userName {
  1012. font-size: 14px;
  1013. color: #1C1D22;
  1014. margin-left: 10px;
  1015. font-weight: bold;
  1016. }
  1017. .hamburger-container {
  1018. line-height: 46px;
  1019. height: 100%;
  1020. float: left;
  1021. cursor: pointer;
  1022. transition: background .3s;
  1023. -webkit-tap-highlight-color: transparent;
  1024. &:hover {
  1025. background: rgba(0, 0, 0, .025)
  1026. }
  1027. }
  1028. .breadcrumb-container {
  1029. float: left;
  1030. }
  1031. .errLog-container {
  1032. display: inline-block;
  1033. vertical-align: top;
  1034. }
  1035. .right-menu {
  1036. float: right;
  1037. height: 100%;
  1038. line-height: 50px;
  1039. display: flex;
  1040. align-items: center;
  1041. position: relative;
  1042. &:focus {
  1043. outline: none;
  1044. }
  1045. .right-menu-item {
  1046. display: inline-block;
  1047. padding: 0 8px;
  1048. height: 100%;
  1049. font-size: 18px;
  1050. color: #5a5e66;
  1051. vertical-align: text-bottom;
  1052. &.hover-effect {
  1053. cursor: pointer;
  1054. transition: background .3s;
  1055. &:hover {
  1056. background: rgba(0, 0, 0, .025)
  1057. }
  1058. }
  1059. }
  1060. .avatar-container {
  1061. margin-right: 30px;
  1062. .avatar-wrapper {
  1063. margin-top: 5px;
  1064. display: flex;
  1065. align-items: center;
  1066. .user-avatar {
  1067. cursor: pointer;
  1068. width: 32px;
  1069. height: 32px;
  1070. }
  1071. .arrowDown {
  1072. width: 12px;
  1073. height: 8px;
  1074. margin-left: 10px;
  1075. }
  1076. .user-notice {
  1077. width: 20px;
  1078. height: 20px;
  1079. margin-right: 20px;
  1080. }
  1081. .el-icon-caret-bottom {
  1082. cursor: pointer;
  1083. position: absolute;
  1084. right: -20px;
  1085. top: 25px;
  1086. font-size: 12px;
  1087. }
  1088. }
  1089. }
  1090. //通知消息 图标
  1091. .noticeIconBox {
  1092. width: 55px;
  1093. height: 50px;
  1094. box-sizing: border-box;
  1095. padding-top: 8px;
  1096. position: relative;
  1097. .noticeIconImg {
  1098. width: 34px;
  1099. height: 34px;
  1100. cursor: pointer;
  1101. }
  1102. .unreadCount {
  1103. position: absolute;
  1104. top: 5px;
  1105. right: 8px;
  1106. width: 30px;
  1107. height: 20px;
  1108. background: #FF4E4E;
  1109. font-size: 12px;
  1110. line-height: 20px;
  1111. text-align: center;
  1112. color: #fff;
  1113. border-radius: 23px;
  1114. }
  1115. //通知消息 悬浮菜单
  1116. .noticeTabsBox {
  1117. position: absolute;
  1118. max-width: 570px;
  1119. height: 640px;
  1120. border-radius: 8px;
  1121. background: #fff;
  1122. z-index: 999;
  1123. right: 20px;
  1124. top: 50px;
  1125. box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15);
  1126. padding: 25px 20px;
  1127. box-sizing: border-box;
  1128. .noticeTabsTitleBox {
  1129. display: flex;
  1130. border-bottom: 1px solid #E9EDF7;
  1131. .noticeTabs {
  1132. height: 41px;
  1133. border-bottom: 2px solid #fff;
  1134. margin-right: 30px;
  1135. display: flex;
  1136. cursor: pointer;
  1137. .noticeTabsItem {
  1138. width: max-content;
  1139. height: 20px;
  1140. line-height: 20px;
  1141. font-size: 16px;
  1142. position: relative;
  1143. .noticeMessageNew {
  1144. width: 5px;
  1145. height: 5px;
  1146. border-radius: 50%;
  1147. background: #FF4E4E;
  1148. position: absolute;
  1149. right: -5px;
  1150. top: 0;
  1151. }
  1152. }
  1153. }
  1154. .active {
  1155. border-bottom: 2px solid #5570F1;
  1156. }
  1157. }
  1158. .noticeTabsLinkLine {
  1159. height: 38px;
  1160. box-sizing: border-box;
  1161. font-size: 14px;
  1162. cursor: pointer;
  1163. background: #F5F7FB;
  1164. border: 1px solid #E3E8FA;
  1165. text-align: center;
  1166. line-height: 38px;
  1167. border-radius: 8px;
  1168. margin: 20px 0;
  1169. }
  1170. .noticeTabsDataBox {
  1171. height: 470px;
  1172. .noticeTabsDataItem {
  1173. display: flex;
  1174. align-items: flex-start;
  1175. cursor: pointer;
  1176. border-radius: 8px;
  1177. box-sizing: border-box;
  1178. padding: 5px 10px;
  1179. &:hover {
  1180. background: #F5F7FB;
  1181. }
  1182. height: 95px;
  1183. .noticeTabsDataItemImg {
  1184. border-radius: 50%;
  1185. width: 26px;
  1186. height: 26px;
  1187. display: flex;
  1188. align-items: center;
  1189. justify-content: center;
  1190. margin-right: 15px;
  1191. margin-top: 6px;
  1192. }
  1193. .newsIcon {
  1194. background: #BAC5F8;
  1195. }
  1196. .chatIcon {
  1197. background: #dbe8e3;
  1198. }
  1199. .noticeTabsDataItemContent {
  1200. flex: 1;
  1201. .noticeNewsTitle {
  1202. font-size: 14px;
  1203. line-height: 28px;
  1204. height: 56px;
  1205. color: #333;
  1206. overflow: hidden;
  1207. text-overflow: ellipsis;
  1208. display: -webkit-box;
  1209. -webkit-line-clamp: 2;
  1210. -webkit-box-orient: vertical;
  1211. }
  1212. .noticeNewsTime {
  1213. height: 30px;
  1214. line-height: 30px;
  1215. font-size: 14px;
  1216. color: #999;
  1217. }
  1218. }
  1219. }
  1220. .noticeTabsDataItemEmpty {
  1221. .noticeEmpty {
  1222. text-align: center;
  1223. padding-top: 150px;
  1224. box-sizing: border-box;
  1225. }
  1226. .noticeEmptyText {
  1227. text-align: center;
  1228. color: #999;
  1229. font-size: 14px;
  1230. }
  1231. }
  1232. }
  1233. }
  1234. }
  1235. }
  1236. }
  1237. .userMenuDownItem {
  1238. width: 100px;
  1239. display: flex;
  1240. align-items: center;
  1241. justify-content: space-between;
  1242. }
  1243. .el-dropdown-menu__item:not(.is-disabled):hover {
  1244. background: none;
  1245. color: #606266;
  1246. }
  1247. .unread-count {
  1248. position: relative;
  1249. display: inline-block;
  1250. width: 20px;
  1251. height: 20px;
  1252. border-radius: 50%;
  1253. background-color: red;
  1254. color: white;
  1255. font-size: 12px;
  1256. text-align: center;
  1257. line-height: 20px;
  1258. margin-left: -40px;
  1259. margin-top: -20px;
  1260. /* 调整位置,使其贴合通知图标 */
  1261. }
  1262. /* 如果未读数量为 0,则隐藏角标 */
  1263. .unread-count:empty {
  1264. display: none;
  1265. }
  1266. .noticeTabsLink {
  1267. padding-left: 10px;
  1268. // 去掉圆点
  1269. list-style: none;
  1270. }
  1271. .qiuPillow {
  1272. border-radius: 4px;
  1273. padding: -1px;
  1274. width: 48%;
  1275. height: 36px;
  1276. display: block;
  1277. }
  1278. .qiuPillowHover {
  1279. border-radius: 4px;
  1280. padding: -1px;
  1281. width: 48%;
  1282. height: 36px;
  1283. background: #dfe9ee;
  1284. border: #dfe1e7 1px solid;
  1285. }
  1286. .qiuFlex {
  1287. display: flex;
  1288. justify-content: space-between;
  1289. text-align: center;
  1290. }
  1291. </style>