header.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977
  1. <template>
  2. <div id="proginn-header" :class="{ transparent: transparent }" :style="{ position: customPosition }">
  3. <div class="list">
  4. <a :href="baseUrl" @click="cnzz('导航栏目','logo','')" class="nav-item">
  5. <img
  6. class="logo"
  7. :src="
  8. transparent
  9. ? WhiteLogo
  10. : 'https://stacdn.proginn.com/image/common/logo3@2x.png'
  11. "
  12. />
  13. </a>
  14. <a :href="baseUrl" @click="cnzz('导航栏目','首页','')" class="nav-item">首页</a>
  15. <a :href="baseUrl + '/users'" @click="cnzz('导航栏目','程序员','')" class="nav-item">程序员</a>
  16. <div class="dropDownArea">
  17. <el-button
  18. type="text"
  19. @click="cnzz('导航栏目','解决方案','')"
  20. class="dashboard-title"
  21. :class="{ on: selectedDropTitle === 0 }"
  22. @mouseover.native="handleTitleMouseover(0)"
  23. @mouseout.native="handleTitleMouseout(0)">解决方案</el-button>
  24. <el-button
  25. type="text"
  26. class="dashboard-title"
  27. @click="cnzz('导航栏目','服务','')"
  28. :class="{ on: selectedDropTitle === 1 }"
  29. style="margin-left: 20px !important;"
  30. @mouseover.native="handleTitleMouseover(1)"
  31. @mouseout.native="handleTitleMouseout(1)">服务</el-button>
  32. <div class="showDropDownArea">
  33. <div class="contentArea">
  34. <div class="leftSelect">
  35. <div
  36. class="downCell"
  37. v-for="(item, index) in dropDownData"
  38. @mouseover="selectedDrop = index"
  39. :class="{ choosed: index === selectedDrop }"
  40. >
  41. <div class="cnName">{{ item.title }}</div>
  42. <div class="enName">{{ item.titleEn }}</div>
  43. </div>
  44. </div>
  45. <div class="rightShow">
  46. <div
  47. class="rightBigCell"
  48. v-for="(big, bigIndex) in dropDownData"
  49. :class="{ ok: selectedDrop === bigIndex }"
  50. >
  51. <a
  52. class="smallCell"
  53. v-for="(small, smallIndex) in big.list"
  54. @click="cnzz('导航栏目',small.title,'')"
  55. :href="small.href"
  56. :target="small.blank ? '_blank' : ''"
  57. >
  58. <div class="cellLeftIcon">
  59. <img :src="small.icon" alt="" />
  60. </div>
  61. <div class="cellRightArea">
  62. <div class="cellRightName">{{ small.title }}</div>
  63. <div class="cellRightDesc">{{ small.desc }}</div>
  64. </div>
  65. </a>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. <div>
  72. <div style="position: relative;">
  73. <input
  74. class="input"
  75. autocomplete="off"
  76. placeholder="搜索您感兴趣的解决方案"
  77. v-model="keywork"
  78. @keyup.enter="clickInputEnter"
  79. />
  80. <i class="el-icon-search" @click="clickInputEnter"></i>
  81. </div>
  82. <div class="dropdown" style="display:none;"></div>
  83. <div class="dropdown" style="display:none;"></div>
  84. </div>
  85. <!-- 更多 -->
  86. <el-dropdown class="more-dropdown" placement="bottom-start">
  87. <el-button type="text" @click="cnzz('导航栏目','更多','')" class="dashboard-title">更多</el-button>
  88. <el-dropdown-menu slot="dropdown">
  89. <el-dropdown-item>
  90. <a class="more-item" @click="cnzz('导航栏目','开发屋','')" :href="kaifainUrl">
  91. <img :src="KaifainIcon" alt="" >
  92. <span>开发屋</span>
  93. </a>
  94. </el-dropdown-item>
  95. <el-dropdown-item>
  96. <a class="more-item" @click="cnzz('导航栏目','技术圈','')" :href="jishuBaseUrl">
  97. <img :src="JishuinIcon" alt="" >
  98. <span>技术圈</span>
  99. </a>
  100. </el-dropdown-item>
  101. <el-dropdown-item>
  102. <a class="more-item" @click="cnzz('导航栏目','UniSMS','')" href="https://unisms.apistd.com/?source=pi.pc.nav" target="_blank">
  103. <img src="https://uni-cdn.oss-cn-hangzhou.aliyuncs.com/public/img/unisms-icon.png" alt="" >
  104. <span>UniSMS (合一短信)</span>
  105. </a>
  106. </el-dropdown-item>
  107. <el-dropdown-item>
  108. <a class="more-item" @click="cnzz('导航栏目','YesDev','')" href="https://www.yesdev.cn/" target="_blank">
  109. <img :src="YesDevIcon" alt="" >
  110. <span>YesDev</span>
  111. </a>
  112. </el-dropdown-item>
  113. </el-dropdown-menu>
  114. </el-dropdown>
  115. <template v-if="myInfo.nickname">
  116. <el-dropdown class="nav-dropdown">
  117. <el-button type="text" @click="cnzz('导航栏目','工作台','')" class="dashboard-title">
  118. <i class="el-icon-tickets"></i>工作台
  119. </el-button>
  120. <el-dropdown-menu slot="dropdown">
  121. <el-dropdown-item>
  122. <a class="workstation" @click="cnzz('导航栏目','待办任务','')" :href="baseUrl + '/wo/work_todo'">
  123. <i class="el-icon-edit"></i>待办任务
  124. </a>
  125. </el-dropdown-item>
  126. <el-dropdown-item>
  127. <a class="workstation" @click="cnzz('导航栏目','整包项目','')" :href="baseUrl + '/wo/work_platform'">
  128. <i class="el-icon-date"></i>整包项目
  129. </a>
  130. </el-dropdown-item>
  131. <el-dropdown-item>
  132. <a class="workstation" @click="cnzz('导航栏目','按月雇佣','')" :href="baseUrl + '/wo/work_hire'">
  133. <i class="el-icon-news"></i>按月雇佣
  134. </a>
  135. </el-dropdown-item>
  136. <!-- <el-dropdown-item>
  137. <a class="workstation" :href="baseUrl + '/wo/work_cloud'">
  138. <i class="el-icon-service"></i>我的远程
  139. </a>
  140. </el-dropdown-item> -->
  141. </el-dropdown-menu>
  142. </el-dropdown>
  143. <el-dropdown class="nav-dropdown">
  144. <el-button type="text" @click="cnzz('导航栏目','消息','')" class="message-box-title">
  145. <i class="el-icon-message"></i>消息
  146. <span
  147. v-if="messageCount.total > 0"
  148. class="message-count message-total"
  149. >{{ messageCount.total }}</span
  150. >
  151. </el-button>
  152. <el-dropdown-menu slot="dropdown">
  153. <el-dropdown-item
  154. class="message-box"
  155. @click.native="clickMessages('/message/system')"
  156. >
  157. <i class="circle blue"></i>系统消息
  158. <span v-if="messageCount.system" class="message-count">{{
  159. messageCount.system
  160. }}</span>
  161. </el-dropdown-item>
  162. <el-dropdown-item
  163. class="message-box"
  164. @click.native="clickMessages('/message/project')"
  165. >
  166. <i class="circle orange"></i>工作通知
  167. <span v-if="messageCount.work" class="message-count">{{
  168. messageCount.work
  169. }}</span>
  170. </el-dropdown-item>
  171. <el-dropdown-item
  172. class="message-box"
  173. @click.native="clickMessages('/message/comment')"
  174. >
  175. <i class="circle red"></i>评论回复
  176. <span v-if="messageCount.reply" class="message-count">{{
  177. messageCount.reply
  178. }}</span>
  179. </el-dropdown-item>
  180. <el-dropdown-item
  181. class="message-box"
  182. @click.native="clickMessages('/message/at')"
  183. >
  184. <i class="circle green"></i>@我的
  185. <span v-if="messageCount.at" class="message-count">{{
  186. messageCount.at
  187. }}</span>
  188. </el-dropdown-item>
  189. <el-dropdown-item
  190. class="message-box"
  191. @click.native="clickMessages('/message/plus')"
  192. >
  193. <i class="circle pink"></i>赞及其它
  194. <span v-if="messageCount.community_other" class="message-count">{{
  195. messageCount.community_other
  196. }}</span>
  197. </el-dropdown-item>
  198. <el-dropdown-item
  199. class="message-box"
  200. @click.native="clickMessages('/message/coin')"
  201. >
  202. <i class="circle yellow"></i>收支信息
  203. <span v-if="messageCount.balance" class="message-count">{{
  204. messageCount.balance
  205. }}</span>
  206. </el-dropdown-item>
  207. </el-dropdown-menu>
  208. </el-dropdown>
  209. <el-popover
  210. class="nav-popover"
  211. placement="bottom"
  212. width="226"
  213. trigger="hover"
  214. >
  215. <div class="ref" slot="reference">
  216. <a class="nav-header" :href="baseUrl + '/wo/work_todo'">
  217. <img class="header-user" :src="myInfo.icon_url" />
  218. <img
  219. v-if="myInfo.is_vip"
  220. class="header-vip-icon"
  221. :src="baseUrl + `/Public/image/h5/vip_icon${vipImage}.png`"
  222. alt="vip-icon"
  223. />
  224. </a>
  225. <span class="nickname">{{ myInfo.nickname }}</span>
  226. </div>
  227. <div class="menu">
  228. <div v-if="myInfo.is_vip" class="vip-info vip-info-com">
  229. <div class="vip-info-top">
  230. <img
  231. class="vip-icon"
  232. :src="baseUrl + `/Public/image/h5/vip_icon${vipImage}.png`"
  233. alt="vip-icon"
  234. />
  235. <span class="vip-content">
  236. <span class="vip-title" :class="vipTextClass">{{
  237. vipText
  238. }}</span>
  239. <br />
  240. <span class="vip-end-date">{{ vipInfo.endDate }}到期</span>
  241. </span>
  242. </div>
  243. <div class="vip-arcs">
  244. <a
  245. class="vip-arc"
  246. :class="vipTextClass"
  247. :href="baseUrl + '/type/vip/' + vipType"
  248. >查看权益</a
  249. >
  250. <a
  251. class="vip-arc"
  252. :class="vipTextClass"
  253. :href="
  254. baseUrl +
  255. '/vip/pay?number=3&amp;product_id=' +
  256. this.$store.state.userinfo.vip_type_id +
  257. '&amp;next=/type/vip/' +
  258. vipType
  259. "
  260. >立即续费</a
  261. >
  262. </div>
  263. </div>
  264. <div class="vip-items">
  265. <!-- <a class="vip-item divider" :href="baseUrl + '/wo/work_platform'">
  266. <i class="el-icon-date"></i>我的项目
  267. </a>
  268. <a class="vip-item" :href="baseUrl + '/wo/work_hire'">
  269. <i class="el-icon-news"></i>我的雇佣
  270. </a>
  271. <a class="vip-item" :href="baseUrl + '/wo/work_cloud'">
  272. <i class="el-icon-service"></i>我的远程
  273. </a> -->
  274. <a
  275. class="vip-item divider"
  276. @click="cnzz('我的','我的主页','')"
  277. :href="baseUrl + `/wo/manage_homepage/`"
  278. >
  279. <i class="el-icon-document"></i>我的主页
  280. </a>
  281. <a class="vip-item" @click="cnzz('我的','技术信用','')" :href="baseUrl + '/credit/pages'">
  282. <i class="el-icon-credit"></i>技术信用
  283. </a>
  284. <a
  285. class="vip-item"
  286. @click="cnzz('我的','收藏中心','')"
  287. :href="baseUrl + '/otherpage/user/collection'"
  288. >
  289. <i class="el-icon-collection"></i>收藏中心
  290. </a>
  291. <a class="vip-item divider" @click="cnzz('我的','APP下载','')" :href="baseUrl + '/index/app'">
  292. <i class="el-icon-download-app"></i>APP下载
  293. </a>
  294. <a class="vip-item" @click="clickQuit">
  295. <i class="el-icon-back" style="margin: 0 10px !important;"></i
  296. >退出
  297. </a>
  298. </div>
  299. </div>
  300. </el-popover>
  301. </template>
  302. <div v-else>
  303. <a
  304. class="account-ctrl"
  305. @click="cnzz('导航栏目','APP下载','')"
  306. style="margin-right: 40px"
  307. :href="baseUrl + '/index/app'"
  308. >APP下载</a
  309. >
  310. <a class="account-ctrl" @click="cnzz('导航栏目','登录','')" :href="loginUrl">登录</a>
  311. <a
  312. class="account-ctrl"
  313. @click="cnzz('导航栏目','注册','')"
  314. style="margin-left: 40px;"
  315. :href="baseUrl + '/user/register'"
  316. >注册</a
  317. >
  318. </div>
  319. </div>
  320. </div>
  321. </template>
  322. <script>
  323. import WhiteLogo from "@/assets/img/white_logo@2x.png";
  324. import KaifainIcon from "@/assets/img/header/new/kaifain2@2x.png"
  325. import JishuinIcon from "@/assets/img/header/new/jishuin@2x.png"
  326. import YesDevIcon from "@/assets/img/header/new/yesdev@2x.png"
  327. import DropDownData from "./headers/dropDownData.js";
  328. export default {
  329. props: ["transparent"],
  330. data() {
  331. return {
  332. KaifainIcon,
  333. JishuinIcon,
  334. YesDevIcon,
  335. baseUrl: "",
  336. jishuBaseUrl: "",
  337. kaifainUrl: "",
  338. jobUrl: "",
  339. // 搜索的关键词
  340. keywork: "",
  341. // 消息数量
  342. messageCount: {},
  343. WhiteLogo,
  344. loginUrl: "",
  345. dropDownData: [],
  346. selectedDropTitle: '',
  347. selectedDrop: 0,
  348. showDropDown: false
  349. };
  350. },
  351. computed: {
  352. vipInfo() {
  353. let userinfo = this.$store.state.userinfo;
  354. return {
  355. id: userinfo.vip_type_id,
  356. endDate: userinfo.vip_end_date
  357. };
  358. },
  359. myInfo() {
  360. return this.$store.state.userinfo;
  361. },
  362. isCom() {
  363. return this.$store.state.userinfo.vip_type_id === "1";
  364. },
  365. vipImage() {
  366. switch (parseInt(this.$store.state.userinfo.vip_type_id)) {
  367. case 1:
  368. return "_com";
  369. case 2:
  370. return "";
  371. case 3:
  372. return "_premium";
  373. default:
  374. return "";
  375. }
  376. },
  377. vipType() {
  378. switch (parseInt(this.$store.state.userinfo.vip_type_id)) {
  379. case 1:
  380. case 3:
  381. return "enterprise";
  382. break;
  383. case 2:
  384. return "developer";
  385. }
  386. },
  387. vipTextClass() {
  388. switch (parseInt(this.$store.state.userinfo.vip_type_id)) {
  389. case 1:
  390. return "is-newly";
  391. case 2:
  392. return "is-dev";
  393. case 3:
  394. return "is-premium";
  395. default:
  396. return "";
  397. }
  398. },
  399. vipText() {
  400. switch (parseInt(this.$store.state.userinfo.vip_type_id)) {
  401. case 1:
  402. return "初创版会员";
  403. case 2:
  404. return "开发者会员";
  405. case 3:
  406. return "企业版会员";
  407. default:
  408. return "";
  409. }
  410. },
  411. customPosition () {
  412. let customPosition = 'relative'
  413. const routeName = this.$route.name
  414. if (routeName.indexOf('SeoConsultUser') > -1) {
  415. customPosition = 'fixed'
  416. }
  417. return customPosition
  418. }
  419. },
  420. mounted() {
  421. // console.error(this.app.co)
  422. if (this.myInfo && this.myInfo.nickname) {
  423. this.getMessageCount();
  424. }
  425. this.loginUrl =
  426. this.baseUrl +
  427. "/?loginbox=show&next=" +
  428. encodeURIComponent(location.href);
  429. this.keywork = this.$route.query.keyword;
  430. // console.log("this.keywork = ", this.key)
  431. },
  432. methods: {
  433. async clickQuit() {
  434. this.cnzz('我的','退出登录','');
  435. location.href = this.baseUrl + "/user/quit";
  436. },
  437. clickMessages(url) {
  438. location.href = this.baseUrl + url;
  439. },
  440. clickInputEnter() {
  441. let url = "";
  442. console.log(this.$route)
  443. if (this.$route.name === "job") {
  444. url = "/?keyword=" + this.keywork;
  445. } else if (this.$route.name==="user-searchTopic") {
  446. url = "/user/searchTopic?keyword=" + this.keywork;
  447. }
  448. console.log(url);
  449. this.cnzz('我的','放大镜搜索','');
  450. window.location.href = url;
  451. },
  452. async getMessageCount() {
  453. let res = await this.$axios.$get(
  454. "/api/message/getUnreadCount",
  455. {},
  456. { neverLogout: true }
  457. );
  458. if (res) {
  459. this.messageCount = res.data;
  460. }
  461. },
  462. handleTitleMouseover (index) {
  463. this.selectedDropTitle = index
  464. this.selectedDrop = index
  465. },
  466. handleTitleMouseout (index) {
  467. this.selectedDropTitle = ''
  468. }
  469. },
  470. created() {
  471. this.dropDownData = DropDownData(this.$store.state.domainConfig);
  472. this.baseUrl = this.$store.state.domainConfig.siteUrl;
  473. this.jishuBaseUrl = this.$store.state.domainConfig.jishuinUrl;
  474. this.kaifainUrl = this.$store.state.domainConfig.kaifainUrl;
  475. this.jobUrl = this.$store.state.domainConfig.jobUrl;
  476. }
  477. };
  478. </script>
  479. <style lang="scss" scoped>
  480. .dropDownArea {
  481. position: relative;
  482. .showDropDownArea {
  483. display: none;
  484. }
  485. &:hover {
  486. .showDropDownArea {
  487. margin-top: 28px;
  488. padding-top: 32px;
  489. display: block;
  490. position: absolute;
  491. left: 0;
  492. top: 0;
  493. background: transparent;
  494. transform: translateX(-30%);
  495. .contentArea {
  496. display: flex;
  497. box-sizing: content-box;
  498. width: 830px;
  499. height: 360px;
  500. background: #ffffff;
  501. border-radius: 6px;
  502. box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.06);
  503. .leftSelect {
  504. width: 180px;
  505. height: 100%;
  506. background: #f4f5f9;
  507. .downCell {
  508. height: 75px;
  509. box-sizing: border-box;
  510. padding-left: 30px;
  511. display: flex;
  512. justify-content: center;
  513. flex-direction: column;
  514. .cnName {
  515. height: 23px;
  516. font-size: 17px;
  517. text-align: left;
  518. color: #222222;
  519. line-height: 23px;
  520. font-weight: 600;
  521. }
  522. .enName {
  523. height: 17px;
  524. font-size: 12px;
  525. text-align: left;
  526. color: #999999;
  527. line-height: 17px;
  528. }
  529. &.choosed {
  530. background: #fff;
  531. position: relative;
  532. &:after {
  533. position: absolute;
  534. content: "";
  535. width: 3px;
  536. height: 31px;
  537. background: #308eff;
  538. left: 0;
  539. top: 50%;
  540. transform: translateY(-50%);
  541. }
  542. }
  543. }
  544. }
  545. .rightShow {
  546. width: 650px;
  547. background: #fff;
  548. height: 100%;
  549. box-sizing: border-box;
  550. padding: 0 34px 0 23px;
  551. .rightBigCell {
  552. display: none;
  553. justify-content: space-between;
  554. width: 594px;
  555. height: auto;
  556. // box-shadow: 0px -1px 0px 0px #e2e8ee inset;
  557. padding-bottom: 14px;
  558. box-sizing: border-box;
  559. flex-wrap: wrap;
  560. &:last-child {
  561. box-shadow: none;
  562. }
  563. .smallCell {
  564. height: 110px;
  565. margin-top: 14px;
  566. display: flex;
  567. justify-content: flex-start;
  568. align-items: center;
  569. width: 280px;
  570. cursor: pointer;
  571. box-sizing: border-box;
  572. padding-left: 40px;
  573. border-radius: 12px;
  574. .cellLeftIcon {
  575. flex-shrink: 0;
  576. width: 40px;
  577. height: 40px;
  578. img {
  579. width: 40px;
  580. height: 40px;
  581. }
  582. }
  583. .cellRightArea {
  584. margin-left: 11px;
  585. .cellRightName {
  586. height: 24px;
  587. font-size: 18px;
  588. text-align: left;
  589. color: #222222;
  590. line-height: 24px;
  591. font-weight: 600;
  592. }
  593. .cellRightDesc {
  594. margin-top: 1px;
  595. height: 19px;
  596. font-size: 14px;
  597. text-align: left;
  598. color: #999999;
  599. line-height: 19px;
  600. }
  601. }
  602. }
  603. &.ok {
  604. display: flex;
  605. .smallCell {
  606. background-color: rgb(238, 246, 254);
  607. }
  608. }
  609. }
  610. }
  611. }
  612. }
  613. }
  614. }
  615. .more-item {
  616. // padding: 4px 12px 4px 8px;
  617. display: flex;
  618. align-items: center;
  619. img {
  620. width: 24px;
  621. height: 24px;
  622. margin-right: 12px;
  623. }
  624. span {
  625. font-size: 15px;
  626. color: rgba(0, 0, 0, .85);
  627. font-weight: 500;
  628. }
  629. }
  630. </style>
  631. <style scoped>
  632. #proginn-header {
  633. position: relative;
  634. display: flex;
  635. justify-content: center;
  636. width: 100%;
  637. background: white;
  638. z-index: 10;
  639. }
  640. .list {
  641. display: flex;
  642. justify-content: space-between;
  643. align-items: center;
  644. width: 1000px;
  645. }
  646. .nav-item {
  647. display: flex;
  648. height: 83px;
  649. align-items: center;
  650. font-size: 15px;
  651. color: #515151;
  652. /* padding: 0 15px; */
  653. box-sizing: border-box;
  654. }
  655. .nav-item:first-child {
  656. padding: 0;
  657. }
  658. .nav-item:nth-child(n + 2):hover {
  659. color: #1782d9;
  660. border-top: 5px solid transparent;
  661. border-bottom: 5px solid #1782d9;
  662. }
  663. .nav-dropdown,
  664. .nav-popover {
  665. --imgWidth: 28px;
  666. height: 40px;
  667. display: flex;
  668. align-items: center;
  669. }
  670. .nav-popover > .ref {
  671. display: flex;
  672. align-items: center;
  673. }
  674. .nav-header {
  675. position: relative;
  676. width: var(--imgWidth);
  677. height: var(--imgWidth);
  678. margin-right: 5px;
  679. }
  680. .logo {
  681. width: 140px;
  682. height: auto;
  683. }
  684. .input {
  685. width: 234px;
  686. height: 40px;
  687. border-radius: 20px;
  688. background: #f6f6f6;
  689. padding: 0 40px;
  690. border: 1px solid #ebebeb;
  691. font-size: 13px;
  692. }
  693. .el-icon-search {
  694. position: absolute;
  695. top: 12px;
  696. right: 20px;
  697. color: grey;
  698. cursor: pointer;
  699. }
  700. .el-icon-credit {
  701. background: url("~@/assets/img/header/creditIconMine.png") no-repeat;
  702. background-size: cover;
  703. width: 16px;
  704. height: 16px;
  705. vertical-align: middle;
  706. margin: 0 9px !important;
  707. }
  708. .el-icon-download-app {
  709. background: url("~@/assets/img/header/download@2x.png") no-repeat;
  710. background-size: cover;
  711. width: 16px;
  712. height: 16px;
  713. vertical-align: middle;
  714. margin: 0 9px !important;
  715. }
  716. .el-icon-search::before {
  717. font-size: 14px;
  718. font-weight: 800;
  719. }
  720. i {
  721. margin-right: 4px;
  722. }
  723. i.circle {
  724. display: inline-block;
  725. --width: 12px;
  726. width: var(--width);
  727. height: var(--width);
  728. border-radius: calc(var(--width) / 2);
  729. }
  730. i.blue {
  731. background: #3b83c0;
  732. }
  733. i.orange {
  734. background: #e07b53;
  735. }
  736. i.red {
  737. background: #d95c5c;
  738. }
  739. i.green {
  740. background: #5bbd72;
  741. }
  742. i.pink {
  743. background: #d9499a;
  744. }
  745. i.yellow {
  746. background: #f2c61f;
  747. }
  748. .message-box {
  749. position: relative;
  750. display: flex;
  751. align-items: center;
  752. }
  753. .message-count {
  754. color: white;
  755. margin-left: 4px;
  756. display: block;
  757. line-height: 18px;
  758. padding: 0 8px;
  759. border-radius: 9px;
  760. background: grey;
  761. }
  762. .message-count.message-total {
  763. position: absolute;
  764. top: 0px;
  765. right: -10px;
  766. background: #d95c5c;
  767. }
  768. span.other-icon {
  769. display: block;
  770. margin-left: 30px;
  771. }
  772. .nickname {
  773. font-size: 15px;
  774. }
  775. .vip-info {
  776. display: flex;
  777. flex-direction: column;
  778. justify-content: center;
  779. align-items: center;
  780. width: 206px;
  781. height: 120px;
  782. }
  783. .vip-info-top {
  784. display: flex;
  785. width: 142px;
  786. }
  787. .vip-title {
  788. color: #cb9d53;
  789. font-size: 16px;
  790. line-height: 36px;
  791. }
  792. .vip-icon {
  793. width: 24px;
  794. height: 24px;
  795. margin: 10px 8px 0 0;
  796. }
  797. .vip-end-date {
  798. font-size: 12px;
  799. color: #999;
  800. }
  801. .vip-arcs {
  802. display: flex;
  803. justify-content: space-between;
  804. width: 142px;
  805. margin-top: 11px;
  806. }
  807. .vip-arc {
  808. flex: 1;
  809. font-size: 13px;
  810. color: #cb9d53;
  811. text-align: center;
  812. }
  813. .vip-arc:first-child {
  814. border-right: 1px solid rgba(245, 245, 245, 1);
  815. }
  816. .vip-info-com .vip-title {
  817. color: rgb(113, 177, 253);
  818. }
  819. .vip-info-com .vip-arc {
  820. color: rgb(113, 177, 253);
  821. }
  822. .header-user {
  823. width: var(--imgWidth);
  824. height: var(--imgWidth);
  825. border-radius: 20px;
  826. }
  827. .header-vip-icon {
  828. position: absolute;
  829. top: 16px;
  830. left: 18px;
  831. width: 16px;
  832. height: 16px;
  833. }
  834. .vip-items {
  835. display: flex;
  836. flex-direction: column;
  837. }
  838. .vip-item {
  839. line-height: 32px;
  840. color: #606266;
  841. }
  842. .vip-item > i {
  843. margin: 0 10px;
  844. }
  845. .divider {
  846. border-top: 1px solid rgba(0, 0, 0, 0.05);
  847. margin-top: 10px;
  848. padding-top: 10px;
  849. cursor: pointer;
  850. }
  851. .vip-info-com .is-dev {
  852. color: #cb9d53;
  853. }
  854. .vip-info-com .is-newly {
  855. color: #308eff;
  856. }
  857. .vip-info-com .is-premium {
  858. color: #00c469;
  859. }
  860. .workstation {
  861. color: #606266;
  862. }
  863. .account-ctrl {
  864. color: #606266;
  865. font-size: 15px;
  866. }
  867. #proginn-header a {
  868. text-decoration: none !important;
  869. }
  870. #proginn-header.transparent {
  871. background: transparent;
  872. border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  873. }
  874. #proginn-header.transparent a {
  875. color: white;
  876. }
  877. .message-box-title,
  878. .dashboard-title {
  879. color: #515151;
  880. font-size: 15px;
  881. }
  882. .dashboard-title.on {
  883. color: #1782d9;
  884. }
  885. #proginn-header.transparent .message-box-title,
  886. #proginn-header.transparent .dashboard-title {
  887. color: white;
  888. }
  889. #proginn-header.transparent .nickname {
  890. color: white;
  891. }
  892. </style>