index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858
  1. <template>
  2. <div class="app-header pc" :class="{bg1:route.path!='/'}">
  3. <div class="top">
  4. <a> <span class="iconfont icon-youxiang"></span> market@aporesearch.com</a>
  5. <a><span class="iconfont icon-lianxidianhua"></span> 1-332-251-9412</a>
  6. <!-- <template v-if="isLogin">
  7. <div class="userInfo">
  8. <img click="toMine" class="avatar" src="@/assets/images/avatar.png" alt="avatar" width="30" />
  9. <span class="username" @click="toMine">{{
  10. userInfo.name
  11. }}</span>
  12. <span>|</span>
  13. <span class="logout" @click="handleLogout">{{t('common.login.logout')}}</span>
  14. </div>
  15. </template>
  16. <template v-if="!isLogin">
  17. <div><span class="iconfont icon-weidenglu"></span>
  18. <div @click="handleSignIn()">Login</div> / <div @click="closeSginDialog('register')">Register</div>
  19. </div>
  20. </template> -->
  21. </div>
  22. <div class="navBox">
  23. <a class="navBox_l" href="/">
  24. <img src="/assets/images/img2.png" alt="">
  25. </a>
  26. <div class="navBox_c">
  27. <n-dropdown :options="reportOptions" trigger="hover" size="huge" @select="chooseReportMenu">
  28. <a :class="{'router-link-active':(route.name=='reports')}" :href="jumpLink('/report-industries')">
  29. {{$t('common.navigate.report')}}
  30. </a>
  31. </n-dropdown>
  32. <a :class="{'router-link-active':route.path=='/market'}" :href="jumpLink('/market')">
  33. <!-- Custom Research -->
  34. {{$t('common.navigate.market')}}
  35. </a>
  36. <n-dropdown :options="newsOptions" trigger="hover" size="huge" @select="chooseNewsMenu">
  37. <a :class="{'router-link-active':(route.name=='newsCategories'||route.path=='/news-categories')}" :href="jumpLink('/news-categories')">
  38. <!-- Industry News -->
  39. {{$t('common.navigate.news')}}
  40. </a>
  41. </n-dropdown>
  42. <n-dropdown :options="aboutOptions" trigger="hover" size="huge" @select="chooseAboutMenu">
  43. <a :class="{'router-link-active':route.path=='/about'||route.path=='/link'||route.path=='/order'||route.path=='/term'||route.path=='/qualify'}" :href="jumpLink('/about')">
  44. <!-- About Us -->
  45. {{$t('common.navigate.aboutUs')}}
  46. </a>
  47. </n-dropdown>
  48. <a :class="{'router-link-active':route.path=='/contactUs'}" :href="jumpLink('/contactUs')">{{$t('common.navigate.Contact')}}</a>
  49. </div>
  50. <div class="navBox_r">
  51. <div class="search">
  52. <div class="search_l">
  53. <n-dropdown trigger="hover" :keyboard="false" :options="selectTypeList" @select="selectValueFun">
  54. <div class="search_l_type">
  55. {{ selectTypeLabel }}
  56. <span class="iconfont icon-dkw_guanbi-"></span>
  57. </div>
  58. </n-dropdown>
  59. </div>
  60. <div class="search_c">
  61. <n-input v-model:value="keyword" @keydown.enter="handleSearch()" type="text" clearable :placeholder="$t('common.keyword')" />
  62. </div>
  63. <div class="search_r" @click="handleSearch()">
  64. <span class="iconfont icon-sousuo"></span>
  65. <!-- Search -->
  66. {{$t('myInfo.search')}}
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. <div class="headPhone">
  73. <div class="head_t">
  74. <div class="head_t_l">
  75. <a href="/">
  76. <img src="/assets/images/img2.png" alt="" />
  77. </a>
  78. </div>
  79. <div class="head_t_r">
  80. <n-dropdown placement="bottom-start" class="en" trigger="click" size="small" :options="mobileMenu" @select="chooseMenu">
  81. <img src="/assets/images/menu.png" alt="" />
  82. </n-dropdown>
  83. </div>
  84. </div>
  85. <div class="head_c_box">
  86. <div class="head_c">
  87. <div class="head_c_l">
  88. <n-dropdown trigger="click" :options="selectTypeList" @select="selectValueFun" placement="bottom-start" :class="language">
  89. <div style="color: #000">
  90. {{ selectTypeLabel }}<span class="iconfont icon-dkw_guanbi-"></span>
  91. </div>
  92. </n-dropdown>
  93. </div>
  94. <div class="head_c_c">
  95. <n-input v-model:value="keyword" type="text" clearable :placeholder="$t('report.content.keyword')" />
  96. </div>
  97. <div class="head_c_r" @click="handleSearch()">
  98. {{$t('myInfo.search')}}
  99. </div>
  100. </div>
  101. </div>
  102. <!-- <div class="head_b">
  103. <div>
  104. <div class="userInfo" v-if="userStore.getToken">
  105. <span class="username">
  106. <a href="/mine/mineCenter">
  107. {{ userStore.getUserInfo?.name }}
  108. </a>
  109. </span>
  110. <span>|</span>
  111. <span class="logout" @click="handleLogout">{{
  112. $t("common.login.logout")
  113. }}</span>
  114. </div>
  115. <div v-else class="head_t_r_login">
  116. <span @click="handleSignIn()">
  117. Login</span>/
  118. <span @click="closeSginDialog('register')">Register</span>
  119. </div>
  120. </div>
  121. </div> -->
  122. </div>
  123. <n-modal :show="signInVisible" :title="signInTitle" :showIcon="false" @esc="signInVisible = false" @mask-click="signInVisible = false" @close="signInVisible = false" class="modalCls" :class="{ 'login-dialog': !pcShow }">
  124. <SignInLogin @closeSginDialog="closeSginDialog" v-if="sginType == 'login'"></SignInLogin>
  125. <SignInRegister @closeSginDialog="closeSginDialog" v-if="sginType == 'register'"></SignInRegister>
  126. <SignInForgot @closeSginDialog="closeSginDialog" v-if="sginType == 'forgot'"></SignInForgot>
  127. </n-modal>
  128. <n-modal v-model:show="logoutVisible" preset="dialog" title="Hint" :showIcon="false" content="Are you sure you want to log out?" positive-text="Confirm" negative-text="Cancel" :close-on-esc="false" :mask-closable="false" @positive-click="submitLogoutCallback" @negative-click="cancelLogoutCallback" :class="{ 'login-dialog': !pcShow }" />
  129. </template>
  130. <script lang="ts" setup>
  131. import { useI18n } from "#imports";
  132. import SignInLogin from "@/components/Login/index.vue";
  133. import SignInRegister from "@/components/Login/register.vue";
  134. import SignInForgot from "@/components/Login/forgot.vue";
  135. import { useLocaleStoreWithOut } from "@/store";
  136. import {
  137. // Component,
  138. // h,
  139. onMounted,
  140. ref,
  141. onUnmounted,
  142. onBeforeMount,
  143. watch,
  144. computed,
  145. inject,
  146. onServerPrefetch,
  147. } from "vue";
  148. import { createDiscreteApi } from "naive-ui";
  149. import { useRouter, useRoute } from "vue-router";
  150. import {
  151. MdApps,
  152. MdHome,
  153. IosPaper,
  154. IosSearch,
  155. MdToday,
  156. MdPeople,
  157. MdSearch,
  158. IosCall,
  159. IosGlobe,
  160. } from "@vicons/ionicons4";
  161. import { useUserStore } from "@/store/user";
  162. const message = createDiscreteApi(["message"]);
  163. const { t, locale, setLocale } = useI18n();
  164. const switchLocalePath = useSwitchLocalePath();
  165. const router = useRouter();
  166. const route = useRoute();
  167. const userStore = useUserStore();
  168. const pcShow = ref(true);
  169. const keyword = ref<string>(""); //关键字
  170. userStore.setLang(locale.value == "en" ? "en-US" : "zh-CN");
  171. const value = userStore.getLang;
  172. const language = ref("");
  173. const langSelected = ref("zh");
  174. language.value = value === "en-US" ? "en" : "";
  175. langSelected.value = value === "en-US" ? "en" : "zh";
  176. const renderIcon = (icon: string) => {
  177. return () => {
  178. return h("span", { class: icon });
  179. };
  180. };
  181. const renderIconC4 = (icon: Component) => {
  182. return () => {
  183. return h(NIcon, null, {
  184. default: () => h(icon),
  185. });
  186. };
  187. };
  188. const selectValueFun = (value: any) => {
  189. selectTypeValue.value = selectTypeList.value[value].value;
  190. selectTypeLabel.value = selectTypeList.value[value].label;
  191. };
  192. // const renderIconLabel = (option: DropdownOption) => {
  193. // return h('a',{ onclick: () => chooseMenu, target: '_blank' },{ default: () => option.label});
  194. // }
  195. const reportOptions = [] as any; //报告列表
  196. const newsOptions = [] as any; //行业资讯
  197. const aboutOptions = [] as any; //关于我们
  198. const bulletinOptions = [] as any; // 简报智库
  199. const mobileMenu = [
  200. { label: t("common.navigate.home"), key: "home", name: "index" },
  201. {
  202. label: t("common.navigate.report"),
  203. key: "reports",
  204. children: reportOptions,
  205. name: "reports",
  206. },
  207. { label: t("common.navigate.market"), key: "market", name: "marketIndex" },
  208. {
  209. label: t("common.navigate.news"),
  210. key: "newsCategories",
  211. children: newsOptions,
  212. name: "newsCategories",
  213. },
  214. {
  215. label: t("common.navigate.aboutUs"),
  216. key: "about",
  217. children: aboutOptions,
  218. name: "about",
  219. },
  220. {
  221. label: t("common.navigate.contactUs"),
  222. key: "contactUs",
  223. name: "contactUsIndex",
  224. },
  225. // {
  226. // label: "简报智库",
  227. // key: "bulletin",
  228. // children: bulletinOptions,
  229. // name: "bulletin",
  230. // },
  231. ];
  232. const selectTypeValue = ref("reports");
  233. const selectTypeLabel = ref(t("common.navigate.report"));
  234. const selectTypeList = ref([
  235. {
  236. label: t("common.navigate.report"),
  237. value: "reports",
  238. key: 0,
  239. },
  240. {
  241. label: t("common.navigate.news"),
  242. value: "newsCategories",
  243. key: 1,
  244. },
  245. //{
  246. // label: t("common.navigate.bulletin"),
  247. // value: "bulletinThinkTank",
  248. //},
  249. ]);
  250. const signInVisible = ref<boolean>(false);
  251. const signInTitle = ref<string>("");
  252. const sginType = ref<string>("login");
  253. const logoutVisible = ref(false);
  254. const userInfo = computed(() => userStore.getUserInfo);
  255. const isLogin = computed(() =>
  256. userStore.getToken && userStore.getUserInfo ? true : false
  257. );
  258. const jumpLink = (url: string) => {
  259. return url;
  260. };
  261. watch(
  262. () => userStore.getSearchType,
  263. (val) => {
  264. selectTypeValue.value = val || null;
  265. }
  266. );
  267. watch(langSelected, () => {
  268. if (langSelected.value == "en") {
  269. selectTypeList.value = [
  270. {
  271. label: t("common.navigate.report"),
  272. value: "reports",
  273. },
  274. {
  275. label: t("common.navigate.news"),
  276. value: "newsCategories",
  277. },
  278. ];
  279. // userStore.resetState();
  280. }
  281. });
  282. watch(
  283. () => userStore.getShowLoginDialog,
  284. (newval, oldval) => {
  285. signInVisible.value = newval;
  286. sginType.value = "login";
  287. signInTitle.value = t("common.login.title");
  288. }
  289. );
  290. watch(signInVisible, (val) => {
  291. if (val === false) {
  292. userStore.setShowLoginDialog(false);
  293. }
  294. });
  295. // 中英文切换
  296. const langChange = async (lng: string) => {
  297. userStore.setLang(lng == "zh" ? "zh-CN" : "en-US");
  298. const path = switchLocalePath(lng);
  299. setLocale(lng);
  300. // router.push(path);
  301. // location.reload();
  302. location.href = path;
  303. };
  304. // 研究报告菜单切换
  305. function chooseReportMenu(key: string | number, _option: DropdownOption) {
  306. router.push({
  307. name: "reports",
  308. // params: { category: key, lang: language.value },
  309. params: { category: key },
  310. });
  311. }
  312. // 行业资讯
  313. function chooseNewsMenu(key: string | number) {
  314. router.push({
  315. name: "newsCategories",
  316. // params: { marketType: key, lang: language.value },
  317. params: { marketType: key },
  318. });
  319. }
  320. onBeforeMount(async () => {
  321. pcShow.value = !isMobile();
  322. });
  323. // 关于我们跳转
  324. function chooseAboutMenu(key: string | number, option: DropdownOption) {
  325. router.push({ name: option.name, params: { lang: language.value } });
  326. }
  327. // 关于简报智库
  328. function chooseBulletinMenu(key: string | number, _option: DropdownOption) {
  329. router.push({
  330. name: "bulletinThinkTank",
  331. params: {
  332. marketType: _option.marketType,
  333. },
  334. });
  335. }
  336. // 手机端跳转
  337. function chooseMenu(key: string | number, option: DropdownOption) {
  338. if ("reports" === option.name) {
  339. router.push({
  340. name: option.name,
  341. params: { category: key, lang: language.value },
  342. });
  343. } else if ("newsCategories" === option.name) {
  344. router.push({
  345. name: option.name,
  346. params: { marketType: key, lang: language.value },
  347. });
  348. } else if ("index" === option.name) {
  349. router.push({
  350. name: "index___en",
  351. params: { marketType: key, lang: language.value },
  352. });
  353. } else {
  354. router.push({ name: option.name, params: { lang: language.value } });
  355. }
  356. }
  357. function handleSearch() {
  358. switch (selectTypeValue.value) {
  359. case "reports":
  360. router.push({
  361. name: "reports",
  362. params: { lang: language.value, keyword: keyword.value },
  363. });
  364. break;
  365. case "newsCategories":
  366. router.push({
  367. name: "newsCategories",
  368. params: { lang: language.value, keyword: keyword.value },
  369. });
  370. break;
  371. case "bulletinThinkTank":
  372. router.push({
  373. name: "bulletinThinkTank",
  374. params: { marketType: "industry-brief", title: keyword.value },
  375. });
  376. break;
  377. default:
  378. router.push({
  379. name: "reports",
  380. params: { lang: language.value, keyword: keyword.value },
  381. });
  382. break;
  383. }
  384. }
  385. function keyDown() {
  386. handleSearch();
  387. }
  388. const handleSignIn = () => {
  389. signInVisible.value = true;
  390. sginType.value = "login";
  391. signInTitle.value = t("common.login.title");
  392. };
  393. const toMine = () => {
  394. router.push({
  395. name: "mine",
  396. });
  397. };
  398. const handleLogout = () => {
  399. logoutVisible.value = true;
  400. };
  401. const submitLogoutCallback = () => {
  402. logOut_Api().then((res) => {
  403. message.message.success(t("report.demand.success"));
  404. userStore.resetState();
  405. router.push("/");
  406. });
  407. };
  408. const cancelLogoutCallback = () => {
  409. logoutVisible.value = false;
  410. };
  411. const closeSginDialog = (type: string) => {
  412. switch (type) {
  413. case "success":
  414. signInVisible.value = false;
  415. break;
  416. case "login":
  417. signInTitle.value = t("common.login.title");
  418. break;
  419. case "register":
  420. signInVisible.value = true;
  421. sginType.value = type;
  422. signInTitle.value = t("common.login.register");
  423. break;
  424. case "forgot":
  425. sginType.value = type;
  426. signInTitle.value = t("common.login.forgetPasswordTitle");
  427. break;
  428. default:
  429. break;
  430. }
  431. };
  432. // onMounted(async () => {
  433. //window.addEventListener('scroll',onScroll);
  434. // 下拉菜单
  435. const getDictListData = async () => {
  436. const cacheDict = await getLocalSessionReport();
  437. cacheDict?.forEach(
  438. (vo: { dictLabel: any; dictValue: any; dictIcon: any }) => {
  439. reportOptions.push({
  440. label: vo.dictLabel,
  441. key: vo.dictValue,
  442. icon: renderIcon(vo.dictIcon),
  443. name: "reports",
  444. });
  445. }
  446. );
  447. const cacheDictNews = await getLocalSessionNews();
  448. cacheDictNews?.forEach((vo: any) => {
  449. newsOptions.push({
  450. label: vo.dictLabel,
  451. key: vo.dictValue,
  452. icon: renderIcon(vo.dictIcon),
  453. name: "newsCategories",
  454. });
  455. });
  456. aboutOptions.push({
  457. label: t("common.navAboutUs.comp"),
  458. name: "about",
  459. icon: renderIcon("iconfont iconfont icon-ziyuan"),
  460. });
  461. aboutOptions.push({
  462. label: t("common.navAboutUs.method"),
  463. name: "link",
  464. icon: renderIcon("iconfont icon-chaxun"),
  465. });
  466. aboutOptions.push({
  467. label: t("common.navAboutUs.order"),
  468. name: "order",
  469. icon: renderIcon("iconfont icon-a-dingdanguanli2x"),
  470. });
  471. aboutOptions.push({
  472. label: t("common.navAboutUs.term"),
  473. name: "term",
  474. icon: renderIcon("iconfont icon-shejiyukaifa-"),
  475. });
  476. // aboutOptions.push({
  477. // label: t("common.navAboutUs.qualify"),
  478. // name: "qualify",
  479. // icon: renderIcon("iconfont iconfont icon-ziyuan"),
  480. // });
  481. bulletinOptions.push({
  482. label: "行业简报",
  483. name: "bulletinThinkTank",
  484. marketType: "industry-brief",
  485. icon: renderIcon("bqfl-iconfont bqfl-iconfont icon-zhinengjianbao"),
  486. });
  487. bulletinOptions.push({
  488. label: "企业洞察",
  489. name: "bulletinThinkTank",
  490. marketType: "enterprise-hole-analysis",
  491. icon: renderIcon("bqfl-iconfont bqfl-iconfont icon-yanjiubaogao"),
  492. });
  493. bulletinOptions.push({
  494. label: "行业简报",
  495. name: "bulletinThinkTank",
  496. marketType: "industry-brief",
  497. icon: renderIcon("bqfl-iconfont bqfl-iconfont icon-zhinengjianbao"),
  498. });
  499. };
  500. watch(
  501. () => route.path,
  502. (val) => {
  503. getDictListData();
  504. }
  505. );
  506. getDictListData();
  507. </script>
  508. <style lang='scss' >
  509. @import "~/assets/css/tool.scss";
  510. .headPhone {
  511. display: none;
  512. }
  513. .bg1 {
  514. background: #37404a !important;
  515. }
  516. .app-header {
  517. z-index: 9;
  518. width: 100%;
  519. position: fixed;
  520. background: rgba(6, 17, 29, 0.5);
  521. left: 0;
  522. top: 0;
  523. .top {
  524. display: flex;
  525. align-items: center;
  526. justify-content: end;
  527. padding: 0 var(--size-60);
  528. border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  529. > a,
  530. > div {
  531. display: inline-block;
  532. font-size: var(--size-14);
  533. color: #ffffff;
  534. margin-left: var(--size-35);
  535. height: var(--size-45);
  536. line-height: var(--size-45);
  537. cursor: pointer;
  538. display: flex;
  539. align-items: center;
  540. span {
  541. font-size: var(--size-19);
  542. display: inline-block;
  543. margin-right: var(--size-4);
  544. }
  545. &:last-child {
  546. padding-left: var(--size-35);
  547. border-left: var(--size-1) solid #fff;
  548. }
  549. }
  550. .userInfo {
  551. display: flex;
  552. align-items: center;
  553. .avatar {
  554. width: var(--size-30);
  555. height: var(--size-30);
  556. margin-right: var(--size-10);
  557. vertical-align: middle;
  558. border-radius: 50%;
  559. }
  560. .username {
  561. font-size: var(--size-14);
  562. }
  563. span {
  564. margin-right: var(--size-10);
  565. cursor: pointer;
  566. &:last-child {
  567. margin-right: 0;
  568. }
  569. }
  570. > .logout {
  571. font-size: var(--size-14);
  572. }
  573. }
  574. }
  575. .navBox {
  576. display: flex;
  577. align-items: center;
  578. justify-content: space-between;
  579. padding: 0 var(--size-60);
  580. border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  581. height: var(--size-85);
  582. .navBox_l {
  583. font-size: var(--size-34);
  584. color: #ffffff;
  585. img {
  586. width: var(--size-366);
  587. height: var(--size-57);
  588. display: block;
  589. }
  590. }
  591. .navBox_c {
  592. font-size: var(--size-18);
  593. color: #ffffff;
  594. display: flex;
  595. cursor: pointer;
  596. > a {
  597. padding: var(--size-7) var(--size-43);
  598. border-right: var(--size-1) solid rgba(255, 255, 255, 0.5);
  599. }
  600. }
  601. .navBox_r {
  602. .search {
  603. display: flex;
  604. align-items: center;
  605. width: var(--size-450);
  606. height: var(--size-44);
  607. background: #ffffff;
  608. border-radius: var(--size-8);
  609. overflow: hidden;
  610. .search_l {
  611. width: var(--size-148);
  612. font-size: var(--size-14);
  613. text-align: center;
  614. cursor: pointer;
  615. .search_l_type {
  616. span {
  617. transform: rotateZ(90deg);
  618. display: inline-block;
  619. color: #1a1a1a;
  620. }
  621. }
  622. }
  623. .search_c {
  624. border-left: var(--size-1) solid #cccccc;
  625. .n-input {
  626. --n-height: var(--size-26) !important;
  627. line-height: var(--size-26) !important;
  628. }
  629. :deep(.n-input__input) {
  630. width: var(--size-180) !important;
  631. }
  632. /* 全局placeholder样式 */
  633. .n-input .n-input__placeholder {
  634. font-size: 14px !important;
  635. }
  636. .n-input .n-input-wrapper .n-input__placeholder {
  637. font-size: 14px !important;
  638. }
  639. .n-input input::placeholder {
  640. font-size: 14px !important;
  641. }
  642. .n-input .n-input__input-el::placeholder {
  643. font-size: 14px !important;
  644. }
  645. }
  646. .search_r {
  647. width: var(--size-105);
  648. font-size: var(--size-16);
  649. color: #ffffff;
  650. height: var(--size-44);
  651. background: linear-gradient(0deg, #7b9c4f 0%, #2da19d 100%), #1a1a1a;
  652. cursor: pointer;
  653. display: flex;
  654. align-items: center;
  655. justify-content: center;
  656. span {
  657. font-size: var(--size-20);
  658. margin-right: var(--size-4);
  659. }
  660. }
  661. }
  662. }
  663. }
  664. }
  665. .n-input {
  666. --n-border: none !important;
  667. --n-border-hover: none !important;
  668. --n-border-focus: none !important;
  669. --n-box-shadow-focus: none !important;
  670. // --n-caret-color: #000000 !important;
  671. font-size: var(--size-16) !important;
  672. --n-text-color-hover: none !important;
  673. }
  674. .modalCls {
  675. width: var(--size-720) !important;
  676. }
  677. .router-link-active {
  678. font-weight: 700;
  679. color: #6aaa87;
  680. }
  681. @include responseTo("phone") {
  682. .pc {
  683. display: none;
  684. }
  685. .headPhone {
  686. // background: rgba(6, 17, 29, 0.5);
  687. background: #37404a;
  688. z-index: 9;
  689. width: 100%;
  690. position: fixed;
  691. left: 0;
  692. top: 0;
  693. background-size: cover;
  694. padding: var(--size-10) var(--size-20);
  695. display: block;
  696. .head_t {
  697. display: flex;
  698. justify-content: space-between;
  699. .head_t_l {
  700. font-size: 0;
  701. img {
  702. height: var(--size-36);
  703. }
  704. }
  705. .head_t_r {
  706. img {
  707. width: var(--size-36);
  708. height: var(--size-36);
  709. }
  710. }
  711. }
  712. .head_c {
  713. height: var(--size-30);
  714. margin: var(--size-10) auto;
  715. display: flex;
  716. align-items: center;
  717. justify-content: space-between;
  718. background: #ffffff;
  719. border: 1px solid none;
  720. overflow: hidden;
  721. border-radius: var(--size-4);
  722. .head_c_l {
  723. font-size: var(--size-12);
  724. color: #808080;
  725. padding-left: var(--size-7);
  726. position: relative;
  727. padding-right: var(--size-6);
  728. cursor: pointer;
  729. display: flex;
  730. align-items: center;
  731. .icon-dkw_guanbi- {
  732. transform: rotateZ(90deg);
  733. display: inline-block;
  734. }
  735. &::after {
  736. content: "";
  737. display: block;
  738. width: 1px;
  739. height: var(--size-16);
  740. background: #cccccc;
  741. position: absolute;
  742. right: 0;
  743. }
  744. .icon-jiantou {
  745. display: inline-block;
  746. transform: rotateZ(-90deg);
  747. font-size: var(--size-10);
  748. color: #000000;
  749. vertical-align: text-bottom;
  750. }
  751. }
  752. .head_c_c {
  753. flex: 1;
  754. padding: 0 var(--size-9);
  755. .n-input {
  756. --n-border: none !important;
  757. }
  758. }
  759. .head_c_r {
  760. width: var(--size-53);
  761. height: var(--size-30);
  762. font-size: var(--size-12);
  763. background: linear-gradient(0deg, #7b9c4f 0%, #2da19d 100%), #1a1a1a;
  764. color: #fff;
  765. display: flex;
  766. align-items: center;
  767. justify-content: center;
  768. cursor: pointer;
  769. .icon-sousuo {
  770. font-size: var(--size-12);
  771. margin-right: var(--size-3);
  772. }
  773. }
  774. .n-input {
  775. font-size: var(--size-12) !important;
  776. ::v-deep .n-input-wrapper {
  777. padding: 0 !important;
  778. }
  779. }
  780. }
  781. .head_b {
  782. display: flex;
  783. justify-content: flex-end;
  784. .head_b_lang {
  785. font-size: var(--size-12);
  786. color: #ffffff;
  787. display: flex;
  788. align-items: center;
  789. margin-right: var(--size-30);
  790. cursor: pointer;
  791. .head_b_lang_l {
  792. width: var(--size-13);
  793. height: var(--size-13);
  794. margin-right: var(--size-4);
  795. }
  796. .head_b_lang_r {
  797. width: var(--size-9);
  798. height: var(--size-5);
  799. margin-left: var(--size-5);
  800. margin-right: var(--size-10);
  801. }
  802. }
  803. .userInfo {
  804. display: flex;
  805. align-items: center;
  806. .username {
  807. font-size: var(--size-14);
  808. color: #fff;
  809. }
  810. span {
  811. margin-right: var(--size-5);
  812. cursor: pointer;
  813. color: #fff;
  814. font-size: var(--size-14);
  815. &:last-child {
  816. margin-right: 0;
  817. }
  818. }
  819. }
  820. .head_t_r_login {
  821. font-size: var(--size-12);
  822. color: #ffffff;
  823. cursor: pointer;
  824. }
  825. }
  826. }
  827. }
  828. </style>