Home.vue 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426
  1. <template>
  2. <div id="containercon">
  3. <el-aside :width="isCollapse ? '70px' : '200px'" v-if="isHaveAside">
  4. <div id="main_left">
  5. <div class="logo_cont">
  6. <!-- 正常logo尺寸 -->
  7. <img class="logo" v-if="!isCollapse" :src="logoLarge" />
  8. <!-- 折叠侧边栏logo尺寸 -->
  9. <img class="logo_coll" v-else :src="$setting.g_mini_logo" />
  10. </div>
  11. <div
  12. style="overflow-y: auto; height: 90%; overflow-x: hidden"
  13. class="asider-cont"
  14. >
  15. <aside class="menu-expanded">
  16. <!--导航菜单-->
  17. <el-menu
  18. :background-color="$setting.menu_bg"
  19. text-color="#333"
  20. :collapse-transition="false"
  21. :active-text-color="$setting.theme_color"
  22. :default-active="$route.path.replace('/', '')"
  23. :collapse="isCollapse"
  24. unique-opened
  25. router
  26. class="el-menu-vertical-demo"
  27. @select="handleselect"
  28. ref="expandmenu"
  29. >
  30. <template v-for="(item, index) in navlists">
  31. <el-menu-item
  32. :index="item.path"
  33. :key="item.MenuId"
  34. :style="!isCollapse ? 'text-align:left' : ''"
  35. v-if="!item.children || item.children.length === 0"
  36. >
  37. <a
  38. :href="`${prefixPath}${item.path}`"
  39. class="el-level-path"
  40. :style="`display: block;color:${
  41. item.path === activePath
  42. ? $setting.theme_color
  43. : '#666'
  44. }`"
  45. @click="handleClickSubMenuItem(item, $event)"
  46. >
  47. <img
  48. :src="getMenuIcon(item)"
  49. alt=""
  50. style="width: 24px; height: 24px"
  51. />
  52. <span class="titleLetter" v-show="isCollapse">{{
  53. isCollapse ? MenuLetterMap[item.name] || "" : ""
  54. }}</span>
  55. <span
  56. style="
  57. display: inline-block;
  58. width: 96px;
  59. text-align: left;
  60. font-size: 15px;
  61. margin-left: 20px;
  62. "
  63. >{{
  64. $i18nt.locale === "zh" ? item.name : item.name_en
  65. }}</span
  66. >
  67. </a>
  68. </el-menu-item>
  69. <el-submenu v-else :index="item.MenuId" :key="item.MenuId">
  70. <template slot="title">
  71. <img
  72. :src="getMenuIcon(item)"
  73. alt=""
  74. style="width: 24px; height: 24px"
  75. />
  76. <span class="titleLetter" v-show="isCollapse">{{
  77. isCollapse ? MenuLetterMap[item.name] || "" : ""
  78. }}</span>
  79. <span
  80. style="
  81. display: inline-block;
  82. width: 96px;
  83. text-align: left;
  84. font-size: 15px;
  85. margin-left: 20px;
  86. "
  87. >{{
  88. $i18nt.locale === "zh" ? item.name : item.name_en
  89. }}</span
  90. >
  91. </template>
  92. <template v-for="second in item.children">
  93. <el-menu-item
  94. :index="second.path"
  95. :key="second.MenuId"
  96. v-if="!second.children || second.children.length === 0"
  97. >
  98. <a
  99. :href="`${prefixPath}${second.path}`"
  100. :style="`display: flex;align-items:center;color:${
  101. second.path === activePath
  102. ? $setting.theme_color
  103. : '#666'
  104. }`"
  105. @click="handleClickSubMenuItem(second, $event)"
  106. >
  107. <svg
  108. t="1689672247666"
  109. class="icon"
  110. viewBox="0 0 1024 1024"
  111. version="1.1"
  112. xmlns="http://www.w3.org/2000/svg"
  113. p-id="7676"
  114. width="30"
  115. height="30"
  116. >
  117. <path
  118. d="M640 499.2v25.6a21.333333 21.333333 0 0 1-21.333333 21.333333h-213.333334a21.333333 21.333333 0 0 1-21.333333-21.333333v-25.6a21.333333 21.333333 0 0 1 21.333333-21.333333h213.333334a21.333333 21.333333 0 0 1 21.333333 21.333333z"
  119. p-id="7677"
  120. :fill="
  121. second.path === activePath
  122. ? $setting.theme_color
  123. : '#666'
  124. "
  125. ></path>
  126. </svg>
  127. <span style="margin-left: 15px"
  128. >{{
  129. $i18nt.locale === "zh"
  130. ? second.name
  131. : second.name_en
  132. }}</span
  133. >
  134. </a>
  135. </el-menu-item>
  136. <el-submenu v-else :index="second.MenuId" :key="second.MenuId">
  137. <template slot="title">
  138. <span style="margin-left:-20px">
  139. <svg
  140. t="1689672247666"
  141. class="icon"
  142. viewBox="0 0 1024 1024"
  143. version="1.1"
  144. xmlns="http://www.w3.org/2000/svg"
  145. p-id="7676"
  146. width="30"
  147. height="30"
  148. >
  149. <path
  150. d="M640 499.2v25.6a21.333333 21.333333 0 0 1-21.333333 21.333333h-213.333334a21.333333 21.333333 0 0 1-21.333333-21.333333v-25.6a21.333333 21.333333 0 0 1 21.333333-21.333333h213.333334a21.333333 21.333333 0 0 1 21.333333 21.333333z"
  151. p-id="7677"
  152. :fill="
  153. second.path === activePath
  154. ? $setting.theme_color
  155. : '#666'
  156. "
  157. ></path>
  158. </svg>
  159. <span style="margin-left: 10px">{{
  160. $i18nt.locale === "zh"
  161. ? second.name
  162. : second.name_en
  163. }}</span>
  164. </span>
  165. </template>
  166. <el-menu-item
  167. :index="third.path"
  168. :key="third.MenuId"
  169. v-for="third in second.children"
  170. >
  171. <a
  172. :href="`${prefixPath}${third.path}`"
  173. :style="`display: flex;align-items:center;color:${
  174. third.path === activePath ? $setting.theme_color : '#666'
  175. }`"
  176. @click="handleClickSubMenuItem(third,$event)"
  177. >
  178. <span
  179. style="
  180. display: inline-block;
  181. width: 96px;
  182. text-align: left;
  183. font-size: 15px;
  184. margin-left:40px
  185. "
  186. >{{
  187. $i18nt.locale === "zh" ? third.name : third.name_en
  188. }}</span
  189. >
  190. </a>
  191. </el-menu-item>
  192. </el-submenu>
  193. </template>
  194. </el-submenu>
  195. </template>
  196. </el-menu>
  197. </aside>
  198. </div>
  199. </div>
  200. </el-aside>
  201. <el-container>
  202. <div id="main_right">
  203. <div class="main_right_top">
  204. <div class="main_left_container">
  205. <div class="main_left_section" v-if="isHaveAside">
  206. <!-- 折叠按钮 -->
  207. <div class="coll_btn" @click="collapseHandle">
  208. <i class="el-icon-s-unfold coll_ico" v-if="isCollapse"></i>
  209. <i class="el-icon-s-fold coll_ico" v-else></i>
  210. </div>
  211. <!-- 面包屑 -->
  212. <el-breadcrumb separator="/" class="breadcrumb-inner">
  213. <template v-if="$route.path !== '/edbHistory'">
  214. <el-breadcrumb-item
  215. v-for="item in $route.matched"
  216. :key="item.path"
  217. >
  218. <span
  219. v-if="item.meta.pathFrom"
  220. @click.stop="handleClickBread(item)"
  221. :style="`cursor: pointer; color: ${$setting.theme_color}`"
  222. >
  223. {{
  224. $i18nt.locale === "zh"
  225. ? item.meta.pathName
  226. : item.meta.pathName_en
  227. }}
  228. </span>
  229. <span
  230. v-if="item.meta.pathFrom"
  231. style="
  232. margin: 0 9px;
  233. font-weight: 700;
  234. color: #c0c4cc;
  235. font-size: 16px;
  236. "
  237. >/</span
  238. >
  239. <span
  240. v-if="item.parent"
  241. :style="`cursor: pointer; color: ${$setting.theme_color}`"
  242. @click.stop="routeClick(item)"
  243. >
  244. <template
  245. v-if="$route.path === '/positionAnalysisDetail'"
  246. >
  247. <!-- {{breadSelfName||'持仓详情'}} -->
  248. {{
  249. $i18nt.locale === "zh"
  250. ? "持仓详情"
  251. : "Position Analysis"
  252. }}
  253. </template>
  254. <template v-else>
  255. {{
  256. $i18nt.locale === "zh" ? item.name : item.meta.name_en
  257. }}
  258. </template>
  259. </span>
  260. <span v-else>{{
  261. $i18nt.locale === "zh" ? item.name : item.meta.name_en
  262. }}</span>
  263. </el-breadcrumb-item>
  264. </template>
  265. <template v-else>
  266. <el-breadcrumb-item
  267. v-for="(item, index) in edbHistoryPath"
  268. :key="item.path"
  269. >
  270. <span v-if="index === 0">{{ item.name }}</span>
  271. <span v-else>
  272. <span
  273. @click.stop="$router.push(item.path)"
  274. :style="`cursor: pointer; color: ${$setting.theme_color}`"
  275. >
  276. {{ $i18nt.locale === "zh" ? item.name : item.name_en }}
  277. </span>
  278. </span>
  279. </el-breadcrumb-item>
  280. </template>
  281. </el-breadcrumb>
  282. </div>
  283. <img
  284. src="~@/assets/img/home/logo_white.png"
  285. alt=""
  286. class="left_section_logo"
  287. v-else
  288. />
  289. </div>
  290. <div class="right_section">
  291. <div style="display:flex;align-items:center;gap:0 5px" @click="handleGoSJJD">
  292. <img style="width:24px" src="~@/assets/img/icons/home_sjjd.png" alt="">
  293. <span>数据节点</span>
  294. </div>
  295. <div class="userinfo">
  296. <div class="userinfo-fingerpost">
  297. <el-dropdown
  298. trigger="click"
  299. style="width: 140px"
  300. v-if="isUpdateLogShow || isHelpDocShow"
  301. >
  302. <span
  303. class="el-dropdown-link userinfo-inner help-center-inner"
  304. >
  305. <svg
  306. width="20"
  307. height="20"
  308. viewBox="0 0 20 20"
  309. fill="none"
  310. xmlns="http://www.w3.org/2000/svg"
  311. style="color: #333"
  312. >
  313. <path
  314. d="M9.24255 14.5C9.24255 14.0858 9.57834 13.75 9.99255 13.75C10.4068 13.75 10.7426 14.0858 10.7426 14.5C10.7426 14.9142 10.4068 15.25 9.99255 15.25C9.57834 15.25 9.24255 14.9142 9.24255 14.5Z"
  315. fill="currentColor"
  316. />
  317. <path
  318. d="M9.99261 5.00763C8.32056 5.00763 6.96136 6.36682 6.96136 8.03888H8.21136C8.21136 7.05718 9.01092 6.25763 9.99261 6.25763C10.9743 6.25763 11.7739 7.05718 11.7739 8.03888C11.7739 8.71106 11.2183 9.3851 10.4931 9.67971L10.4899 9.68101C9.82793 9.95419 9.36767 10.6052 9.36767 11.3656V12.5H10.6177V11.3656C10.6177 11.1228 10.7618 10.9216 10.9655 10.837C11.9996 10.4161 13.0239 9.37337 13.0239 8.03888C13.0239 6.36682 11.6647 5.00763 9.99261 5.00763Z"
  319. fill="currentColor"
  320. />
  321. <path
  322. d="M18.7427 10C18.7427 5.16751 14.8252 1.25 9.99268 1.25C5.16019 1.25 1.24268 5.16751 1.24268 10C1.24267 14.8325 5.16018 18.75 9.99267 18.75C14.8252 18.75 18.7427 14.8325 18.7427 10ZM17.4927 10C17.4927 14.1421 14.1348 17.5 9.99267 17.5C5.85054 17.5 2.49267 14.1421 2.49268 10C2.49268 5.85786 5.85054 2.5 9.99268 2.5C14.1348 2.5 17.4927 5.85787 17.4927 10Z"
  323. fill="currentColor"
  324. />
  325. </svg>
  326. <span style="line-height: 20px; margin-left: 4px"
  327. ><!-- 帮助中心 -->{{ $t("MainPage.help_center") }}</span
  328. >
  329. <i class="el-icon-arrow-down el-icon--right" />
  330. </span>
  331. <el-dropdown-menu slot="dropdown">
  332. <el-dropdown-item
  333. divided
  334. @click.native="toDoc"
  335. v-if="isUpdateLogShow"
  336. ><!-- 更新日志 -->{{
  337. $t("MainPage.tab_help_update")
  338. }}</el-dropdown-item
  339. >
  340. <el-dropdown-item
  341. divided
  342. @click.native="toOperation"
  343. v-if="isHelpDocShow"
  344. ><!-- 帮助文档 -->{{
  345. $t("MainPage.tab_help_docs")
  346. }}</el-dropdown-item
  347. >
  348. </el-dropdown-menu>
  349. </el-dropdown>
  350. <div class="userinfo-fingerpost">
  351. <img
  352. src="~@/assets/img/questionnaire.png"
  353. v-if="isQuestionShow"
  354. @click="showQuestionDia = true"
  355. style="width: 84px; height: 24; cursor: pointer"
  356. />
  357. </div>
  358. </div>
  359. <!-- 消息通知 -->
  360. <notification-msg ref="notification" />
  361. <el-dropdown trigger="click" style="width: 130px;margin-left:10px" disabled>
  362. <span class="el-dropdown-link userinfo-inner">
  363. <img src="~@/assets/img/home/avatar.png" />
  364. {{ sysUserName }}
  365. <!-- <i class="el-icon-arrow-down el-icon--right" /> -->
  366. </span>
  367. <!-- <el-dropdown-menu slot="dropdown">
  368. <el-dropdown-item divided @click.native="resetpwd"
  369. >{{
  370. $t("MainPage.tab_reset_pwd")
  371. }}</el-dropdown-item
  372. >
  373. <el-dropdown-item divided @click.native="logout"
  374. >{{
  375. $t("MainPage.tab_log_out")
  376. }}</el-dropdown-item
  377. >
  378. </el-dropdown-menu> -->
  379. </el-dropdown>
  380. </div>
  381. </div>
  382. </div>
  383. <section class="content-container" id="displayMain" ref="displayMain">
  384. <el-row
  385. class="grid-content bg-purple-light contentc"
  386. style="min-width: 1000px"
  387. >
  388. <el-col :span="24" class="content-wrapper">
  389. <transition name="fade" mode="out-in">
  390. <router-view :key="$route.fullPath"></router-view>
  391. </transition>
  392. </el-col>
  393. </el-row>
  394. </section>
  395. </div>
  396. </el-container>
  397. <!-- //重置初始密码 -->
  398. <pwd-dlg :dialogVisiblePwd="dialogVisiblePwd" />
  399. <!-- 问卷调查弹窗 -->
  400. <questionnaire-dia
  401. :dialogVisiblePwd.sync="showQuestionDia"
  402. @submitSuccess="questionSubmitSuccess"
  403. :questionList="questionList"
  404. ></questionnaire-dia>
  405. </div>
  406. </template>
  407. <script>
  408. import {
  409. checkPwd,
  410. departInterence,
  411. customInterence,
  412. roadshowInterence,
  413. getBusinessCode,
  414. homeInterface,
  415. userLogOut
  416. } from "api/api.js";
  417. import { getPublicSettingsApi } from '@/api/modules/oldApi';
  418. import PwdDlg from "@/components/pwdDlg.vue";
  419. import questionMsgDia from "@/components/questionMsgDia.vue";
  420. import questionnaireDia from "../components/questionnaireDia.vue";
  421. import EventBus from "@/api/bus.js";
  422. import storage from '@/utils/storage'
  423. import NotificationMsg from "../components/notificationMsg.vue";
  424. export default {
  425. components: {
  426. PwdDlg,
  427. questionMsgDia,
  428. questionnaireDia,
  429. NotificationMsg
  430. },
  431. inject: ["reload"],
  432. filters: {
  433. formatDate(e) {
  434. return e.replace(/-/g, ".");
  435. },
  436. },
  437. watch: {
  438. "$route.path"(newval) {
  439. console.log(newval);
  440. if (this.$route.meta.pathFrom) {
  441. this.activePath = this.$route.meta.pathFrom;
  442. } else {
  443. this.activePath = newval.replace("/", "");
  444. }
  445. this.sysUserName = localStorage.getItem("userName") || "";
  446. this.Role = localStorage.getItem("Role") || "";
  447. this.RoleType = localStorage.getItem("RoleType") || "";
  448. },
  449. },
  450. computed: {
  451. edbHistoryPath() {
  452. return JSON.parse(sessionStorage.getItem('edbHistoryPath')) || []
  453. },
  454. breadSelfName() {
  455. return this.$store.state.breadSelfName;
  456. },
  457. isShowRole() {
  458. let role = localStorage.getItem("RoleIdentity") || "";
  459. return (
  460. role == "rai_group" ||
  461. role == "ficc_group" ||
  462. role == "rai_admin" ||
  463. role == "ficc_admin" ||
  464. role == "rai_seller" ||
  465. role == "ficc_seller" ||
  466. role == "admin"
  467. );
  468. },
  469. /* layout2 不展示侧边 */
  470. isHaveAside() {
  471. return this.$route.path !== "/mychartdetail";
  472. },
  473. //帮助文档是否展示
  474. isHelpDocShow() {
  475. return this.permissionBtn.checkPermissionBtn(
  476. this.permissionBtn.baseConfigPermission.sysJump_helpDoc
  477. )
  478. },
  479. //更新日志是否展示
  480. isUpdateLogShow() {
  481. return this.permissionBtn.checkPermissionBtn(
  482. this.permissionBtn.baseConfigPermission.sysJump_updateLog
  483. )
  484. },
  485. // 是否是eta试用
  486. isTrail() {
  487. return this.$store.state.hasTrialUserPermisson
  488. },
  489. logoLarge() {
  490. return this.$store.state.baseInfo.logoCh || this.$setting.g_logo
  491. },
  492. prefixPath() {
  493. return process.env.VUE_APP_BASE_URL
  494. }
  495. },
  496. data() {
  497. return {
  498. showTodayRemark: {
  499. CompanyId: 0,
  500. ProductId: 0,
  501. remark: "",
  502. toDoRemark: "",
  503. show: false,
  504. index: 0,
  505. new: false, //是否为新增
  506. isGiveUp: false, //是否不继续跟进
  507. }, //显示填写待办备注弹窗
  508. isCollapse: false, //侧边栏折叠
  509. breadcrumbFixed: false, //吸顶盒固定
  510. Role: "", //角色名称
  511. RoleType: "", //角色类型
  512. sysUserName: "", //登录系统用户名
  513. sysUserAvatar: "", //登录系统用户头像
  514. form: {
  515. name: "",
  516. region: "",
  517. date1: "",
  518. date2: "",
  519. delivery: false,
  520. type: [],
  521. resource: "",
  522. desc: "",
  523. },
  524. navlists: [],
  525. activePath: "",
  526. noticeList: [], //消息提醒列表
  527. isShowNotice: false, //显示提示红点
  528. currentNoticeList: [], //当前显示的消息提醒列表
  529. noticeType: "客户", //消息类型 客户/合同/用印
  530. noticeCount: 0, //总共多少消息
  531. flag1: false, //显示客户提示红点
  532. flag2: false, //显示合同提示红点
  533. flag3: false, //显示用印提示红点
  534. dialogVisiblePwd: false, //初始密码的弹框
  535. // ----------------问卷调查弹窗
  536. showQuestionDia: false,
  537. // 问卷调查icon是否展示
  538. isQuestionShow: false,
  539. // 问题列表
  540. questionList: [],
  541. flag4: false,
  542. flag5: false, //显示ETA试用相关的红点
  543. flag6: false, //显示出差相关的红点
  544. /* 路演反馈*/
  545. isFeedbackDialog: false,
  546. roadshowFeedbackList: [],
  547. isShowApprovalNotice: false, // 是否显示用印审批的公告
  548. //新的icon
  549. MenuLetterMap: {
  550. 销售管理: "Sale",
  551. 客户管理: "Clnt",
  552. 路演管理: "RShow",
  553. 出差管理: "Trip",
  554. 研报管理: "Rpt",
  555. 语义分析: "Nlp",
  556. 表格: "Tbl",
  557. 指标库: "Inx",
  558. 相关性: "Co-R",
  559. 预测指标: "FInx",
  560. 图库: "Gra",
  561. /* 151:'FData', */
  562. 供应分析: "Sup",
  563. 商品价格曲线: "Crv",
  564. },
  565. //链接系统
  566. linkSystems: this.$setting.linkSystems,
  567. bus_code: "",
  568. };
  569. },
  570. created() {
  571. //this.isInitialPwd(); //判断是否为初始密码
  572. this.Role = localStorage.getItem("Role") || "";
  573. this.RoleType = localStorage.getItem("RoleType") || "";
  574. this.sysUserName = localStorage.getItem("userName") || "";
  575. this.sysUserAvatar = "../assets/img/userLogo.png";
  576. if (this.$route.path === "/sealApprovalList") {
  577. this.isShowApprovalNotice = true;
  578. }
  579. this.resetLinkSys()
  580. this.getBusinessCodeFun()
  581. this.getQuestionStaus()
  582. this.getSystemInfo();//获取配置信息
  583. },
  584. mounted() {
  585. if (sessionStorage.getItem("hasGetMenu")) {
  586. this.navlists = JSON.parse(sessionStorage.getItem("MenuList"));
  587. sessionStorage.removeItem("hasGetMenu");
  588. } else {
  589. this.getMenuList();
  590. }
  591. this.getPublicSettings();
  592. this.$refs.notification && this.$refs.notification.getMsgList()
  593. },
  594. methods: {
  595. getMenuIcon(item) {
  596. const iconMap = new Map([
  597. ['首页', require('@/assets/icons/menu/icon01.png')],
  598. ['数据分析', require('@/assets/icons/menu/icon02.png')],
  599. ['模型应用', require('@/assets/icons/menu/icon03.png')],
  600. ['图表工具', require('@/assets/icons/menu/icon04.png')],
  601. ['知识资源', require('@/assets/icons/menu/icon05.png')],
  602. ['语义分析', require('@/assets/icons/menu/icon06.png')],
  603. ['BI看板', require('@/assets/icons/menu/icon07.png')],
  604. ['研报管理', require('@/assets/icons/menu/icon08.png')],
  605. ['任务管理', require('@/assets/icons/menu/icon09.png')],
  606. ['AI问答', require('@/assets/icons/menu/icon11.png')],
  607. ['系统设置', require('@/assets/icons/menu/icon10.png')],
  608. ])
  609. return iconMap.get(item.name) || require('@/assets/icons/menu/icon01.png')
  610. },
  611. // 跳转数据节点
  612. handleGoSJJD(){
  613. let path = `${location.origin}/space/`
  614. window.open(path, '_blank')
  615. },
  616. handleClickSubMenuItem(item, e) {
  617. e.preventDefault();
  618. if (item.path === 'AIQA') {
  619. e.stopPropagation();
  620. let { href } = this.$router.resolve({
  621. path: '/' + item.path
  622. });
  623. window.open(href, '_blank')
  624. }
  625. },
  626. // 获取商家Code
  627. getBusinessCodeFun() {
  628. getBusinessCode().then(res => {
  629. if (res.Ret !== 200) return
  630. this.bus_code = res.Data || ''
  631. this.$setting.bus_code = this.bus_code
  632. })
  633. },
  634. //判断是否为初始密码
  635. async isInitialPwd() {
  636. const res = await checkPwd();
  637. if (res.Ret === 200) {
  638. this.dialogVisiblePwd = res.Data;
  639. }
  640. },
  641. // 点击完成 批量提交备注
  642. handleTodayFinished() {
  643. let arr = this.todayList.map((item) => {
  644. return customInterence.sellerTodayListRemark({
  645. CompanyId: item.CompanyId,
  646. ProductId: item.ProductId,
  647. Remark: item.RenewalReason,
  648. Renew: item.isGiveUp ? 1 : 0,
  649. RenewalTodo: item.RenewalTodo,
  650. });
  651. });
  652. Promise.all(arr)
  653. .then((res) => {
  654. this.show = false;
  655. this.getSellerFeedBackList();
  656. })
  657. .catch((error) => {
  658. this.$message.waring("部分提交失败请重试");
  659. this.getSellerTodayList();
  660. });
  661. },
  662. //提交备注
  663. async handleSubmitTodayRemark() {
  664. if (!this.showTodayRemark.remark && !this.showTodayRemark.isGiveUp) {
  665. this.$message.warning("请填写最新情况");
  666. return;
  667. }
  668. if (!this.showTodayRemark.toDoRemark && !this.showTodayRemark.isGiveUp) {
  669. this.$message.warning("请填写To Do事项");
  670. return;
  671. }
  672. // 如果选中不再跟进,需要在备注中添加额外内容
  673. const addRemark = this.showTodayRemark.isGiveUp
  674. ? this.showTodayRemark.remark
  675. ? "。客户无续约意向,不再跟进(转为冻结客户)"
  676. : "客户无续约意向,不再跟进(转为冻结客户)"
  677. : "";
  678. // 自动开大的点击完成时批量更新
  679. if (this.todayListOpen === "auto") {
  680. this.todayList[this.showTodayRemark.index].RenewalReason =
  681. this.showTodayRemark.remark + addRemark;
  682. this.todayList[this.showTodayRemark.index].RenewalTodo =
  683. this.showTodayRemark.toDoRemark;
  684. this.todayList[this.showTodayRemark.index].isGiveUp =
  685. this.showTodayRemark.isGiveUp;
  686. this.$set(this.todayList[this.showTodayRemark.index], "isEdited", true);
  687. this.handleTodayRemarkClose();
  688. } else {
  689. const res = await customInterence.sellerTodayListRemark({
  690. CompanyId: this.showTodayRemark.CompanyId,
  691. ProductId: this.showTodayRemark.ProductId,
  692. Remark: this.showTodayRemark.remark + addRemark,
  693. Renew: this.showTodayRemark.isGiveUp ? 1 : 0,
  694. RenewalTodo: this.showTodayRemark.toDoRemark,
  695. });
  696. if (res.Ret === 200) {
  697. this.todayList[this.showTodayRemark.index].RenewalReason =
  698. this.showTodayRemark.remark;
  699. this.todayList[this.showTodayRemark.index].RenewalTodo =
  700. this.showTodayRemark.toDoRemark;
  701. this.handleTodayRemarkClose();
  702. this.getSellerTodayList();
  703. }
  704. }
  705. },
  706. handleTodayRemarkClose() {
  707. this.showTodayRemark = {
  708. remark: "",
  709. toDoRemark: "",
  710. show: false,
  711. index: 0,
  712. new: false,
  713. ProductId: 0,
  714. CompanyId: 0,
  715. isGiveUp: false,
  716. };
  717. },
  718. //显示填写今日待办备注
  719. handleShowEditTodayRemark(e) {
  720. this.showTodayRemark.remark = e.row.RenewalReason;
  721. this.showTodayRemark.toDoRemark = e.row.RenewalTodo;
  722. this.showTodayRemark.CompanyId = e.row.CompanyId;
  723. this.showTodayRemark.ProductId = e.row.ProductId;
  724. if (e.row.RenewalReason && this.todayListOpen !== "auto") {
  725. // 如果有说明且不是自动弹出,则为编辑
  726. this.showTodayRemark.new = false;
  727. } else {
  728. this.showTodayRemark.new = true;
  729. }
  730. this.showTodayRemark.show = true;
  731. this.showTodayRemark.index = e.$index;
  732. },
  733. //获取销售今日待办
  734. async getSellerTodayList(type) {
  735. this.todayListOpen = type;
  736. let ReasonStatus = -1;
  737. if (type === "auto") {
  738. ReasonStatus = -1;
  739. } else {
  740. ReasonStatus = 0;
  741. }
  742. const res = await customInterence.sellerTodayList({
  743. ReasonStatus: ReasonStatus,
  744. PageSize: 10000,
  745. CurrentIndex: 1,
  746. });
  747. if (res.Ret === 200) {
  748. if (type === "auto" && res.Data.Paging.Totals > 0) {
  749. // 自动弹出清除上次说明
  750. res.Data.List &&
  751. res.Data.List.forEach((item) => (item.RenewalReason = ""));
  752. }
  753. if (
  754. (type === "auto" && res.Data.Paging.Totals > 0) ||
  755. type !== "auto"
  756. ) {
  757. this.show = true;
  758. } else {
  759. this.getSellerFeedBackList();
  760. }
  761. this.$nextTick(() => {
  762. this.todayList = res.Data.List;
  763. });
  764. }
  765. },
  766. //获取销售代办中的历史记录
  767. async getSellerTodayHistoryList(item) {
  768. const res = await customInterence.sellerTodayHistoryList({
  769. CompanyId: Number(item.CompanyId),
  770. ProductId: Number(item.ProductId),
  771. });
  772. if (res.Ret === 200) {
  773. this.showTodayHistoryList = true;
  774. this.$nextTick(() => {
  775. this.todayHistoryList = res.Data || [];
  776. });
  777. }
  778. },
  779. /* 获取销售路演待反馈 */
  780. getSellerFeedBackList() {
  781. roadshowInterence.toFeedbacklist().then((res) => {
  782. if (res.Ret !== 200) return;
  783. const { Data } = res;
  784. if (!Data || !Data.length) return;
  785. this.isFeedbackDialog = true;
  786. this.roadshowFeedbackList = Data;
  787. });
  788. },
  789. // 获取用户的问卷调查状态
  790. getQuestionStaus() {
  791. if (!this.isTrail) {
  792. this.showQuestionDia = false
  793. this.isQuestionShow = false
  794. this.questionList = []
  795. return
  796. }
  797. homeInterface.getQuestionnaireDetail().then(res => {
  798. // console.log(res);
  799. if (res.Ret == 200 && res.Data) {
  800. this.showQuestionDia = !!res.Data.IsPopup && (!!res.Data.IsShow)
  801. this.isQuestionShow = !!res.Data.IsShow
  802. this.questionList = res.Data.Question.List || []
  803. }
  804. })
  805. },
  806. // 问卷提交成功
  807. questionSubmitSuccess() {
  808. this.isQuestionShow = false
  809. },
  810. // 操作指南的跳转
  811. toOperation() {
  812. //打开帮助文档
  813. const href = `${process.env.VUE_APP_ETA_HELP_DOCS}?bus_code=${this.bus_code}`
  814. window.open(href, "_blank");
  815. },
  816. // 跳转去其他的系统
  817. async linkToOtherMS({ path, key }) {
  818. /**
  819. * VUE_APP_HR_MANAGEMENT_SYSTEM -- HR管理系统
  820. * VUE_APP_FINANCIAL_MANAGEMENT_SYSTEM -- 财务管理系统
  821. */
  822. let href = path;
  823. if (key === 'crm') {
  824. // 获取临时code
  825. const res = await departInterence.getToCRMSysCode()
  826. if (res.Ret === 200) {
  827. href = `${href}?code=${res.Data}`
  828. }
  829. }
  830. window.open(href, "_blank");
  831. },
  832. // 切换通知消息类型
  833. handleNoticeTypeChange(e) {
  834. this.noticeType = e;
  835. if (e === "客户") {
  836. this.currentNoticeList = this.noticeList.Company.List;
  837. } else if (e === "合同") {
  838. this.currentNoticeList = this.noticeList.Contract.List;
  839. } else if (e === "用印") {
  840. this.currentNoticeList = this.noticeList.Seal.List;
  841. } else if (e === "ETA试用") {
  842. this.currentNoticeList = this.noticeList.ETATrial.List;
  843. } else if (e === "出差") {
  844. this.currentNoticeList = this.noticeList.BusinessTrip.List;
  845. } else {
  846. this.currentNoticeList = this.noticeList.EdbReplace.List;
  847. }
  848. },
  849. routeClick(item) {
  850. if (this.$route.path == item.path) {
  851. window.location.reload();
  852. } else {
  853. this.$router.push({ path: item.path });
  854. }
  855. },
  856. /* 侧边栏菜单列表 */
  857. getMenuList() {
  858. departInterence.getMenu().then((res) => {
  859. if (res.Ret === 200) {
  860. this.navlists = res.Data.List.length ? res.Data.List : [];
  861. sessionStorage.setItem("MenuList", JSON.stringify(this.navlists));
  862. /* 是否有数据报表权限 */
  863. let bool_data = this.navlists.some((item) => {
  864. return item.name === "数据报表";
  865. });
  866. this.$store.commit("SET_DATA_AUTH", bool_data);
  867. // 需要确认是否有权限的路由
  868. /**
  869. * Sysdatauth-手工数据权限
  870. */
  871. let shouldVerificationRoute = ["Sysdatauth"]
  872. shouldVerificationRoute.map(sMenu => {
  873. this.navlists.forEach(item => {
  874. if (item.children && item.children.some(menu => menu.path === sMenu || '/' + menu.path === sMenu)) {
  875. // 添加有权限的路由
  876. this.$store.commit("ADD_PERMISSION_ROUTE", sMenu);
  877. return
  878. }
  879. })
  880. })
  881. }
  882. });
  883. },
  884. resetpwd() {
  885. //修改密码
  886. this.$router.push({ path: "/resetpsd" });
  887. },
  888. handleselect: function (a, b) {
  889. // 清除筛选条件
  890. sessionStorage.removeItem("pickListBack");
  891. sessionStorage.removeItem("customSearchBack");
  892. sessionStorage.removeItem("customListBack");
  893. sessionStorage.removeItem("approvalListBack");
  894. this.activePath = a;
  895. // this.defaultPath = a.replace('/','');
  896. if (a == this.$route.path.replace(/\//g, "")) {
  897. window.location.reload();
  898. }
  899. },
  900. logout() {
  901. //退出登录
  902. var that = this;
  903. this.$confirm(/* "确认退出吗?" */this.$t('MsgPrompt.confirm_logout_msg'), this.$t('Dialog.warn_tit'), {
  904. type: "warning",
  905. }).then(() => {
  906. userLogOut().then(res => { })
  907. .finally(() => {
  908. this.toLoginVariable()
  909. })
  910. setTimeout(() => {
  911. // 退出登录时可能有一些请求需要发送或者处理
  912. localStorage.setItem("auth", "");
  913. localStorage.setItem("userName", "");
  914. localStorage.setItem("Role", "");
  915. localStorage.setItem("RoleType", "");
  916. localStorage.setItem("AdminId", "");
  917. localStorage.setItem("AdminName", "");
  918. localStorage.setItem("ManageType", "");
  919. localStorage.setItem("RoleIdentity", "");
  920. localStorage.setItem("loginTime", "");
  921. // storage.setCookie('ai_user','',-1)
  922. }, 10);
  923. }).catch(() => { });
  924. },
  925. toLoginVariable() {
  926. let logoutUrl = this.$setting.publicConfigs ? this.$setting.publicConfigs.LogoutUrl || "" : ""
  927. if (logoutUrl) {
  928. window.location.href = logoutUrl
  929. } else {
  930. this.$router.push("/login?HZ=1");
  931. }
  932. },
  933. toDoc() {
  934. //打开更新日志项目
  935. const href = `${process.env.VUE_APP_ETA_DOCS}?bus_code=${this.bus_code}`
  936. window.open(href, "_blank");
  937. },
  938. collapseHandle() {
  939. //折叠导航栏
  940. this.isCollapse = !this.isCollapse;
  941. this.$store.commit('SET_COLLAPSE', this.isCollapse)
  942. // 派发折叠导航栏事件
  943. EventBus.$emit("collapseHandle", this.isCollapse);
  944. },
  945. handleScroll() {
  946. //页面滚动监听
  947. let mainDiv = document.getElementById("displayMain");
  948. var scrollTop = mainDiv.scrollTop;
  949. if (scrollTop > 80) {
  950. this.breadcrumbFixed = true;
  951. } else {
  952. this.breadcrumbFixed = false;
  953. }
  954. },
  955. handleClickBread(item) {
  956. if (item.meta.pathFrom == "dayorweek") {
  957. this.$router.go(-1);
  958. } else {
  959. this.$router.push({ path: "/" + item.meta.pathFrom });
  960. }
  961. },
  962. resetLinkSys() {
  963. const { baseConfigPermission, checkPermissionBtn } = this.permissionBtn
  964. const sysMap = {
  965. 'fd': baseConfigPermission.sysJump_finance,
  966. 'hr': baseConfigPermission.sysJump_hr,
  967. 'crm': baseConfigPermission.sysJump_crm,
  968. }
  969. const linkSystems = this.$setting.linkSystems
  970. let linkArr = []
  971. for (const k in sysMap) {
  972. if (checkPermissionBtn(sysMap[k])) {
  973. linkArr.push(linkSystems.find(i => i.key === k))
  974. }
  975. }
  976. this.linkSystems = linkArr
  977. },
  978. /* 获取动态配置 外部动态链接 */
  979. async getPublicSettings() {
  980. const res = await getPublicSettingsApi();
  981. if (res.Ret !== 200) return
  982. this.$store.commit('SET_DYNAMIC_LINK', res.Data)
  983. },
  984. // 中英文的切换
  985. langChangeHandler() {
  986. this.$i18n.locale = this.$i18n.locale == 'zh' ? 'en' : 'zh'
  987. localStorage.setItem('i18n', this.$i18n.locale)
  988. this.$store.commit('SET_LANG', this.$i18n.locale)
  989. },
  990. getSystemInfo() {
  991. departInterence.getBaseInfo().then(res => {
  992. if (res.Ret == 200) {
  993. this.$store.commit('SET_BASE_INFO',
  994. { logoCh: res.Data.LogoCn ? res.Data.LogoCn.ConfVal : '', logoEn: res.Data.LogoEn ? res.Data.LogoEn.ConfVal : '' }
  995. )
  996. }
  997. })
  998. },
  999. handleGoETAForum(item, e) {
  1000. const href = `${process.env.VUE_APP_ETA_FORUM}`
  1001. window.open(href, '_blank')
  1002. }
  1003. },
  1004. };
  1005. </script>
  1006. <style lang="scss">
  1007. @import "../styles/theme-vars.scss";
  1008. #containercon {
  1009. width: 100%;
  1010. position: absolute;
  1011. top: 0px;
  1012. bottom: 0px;
  1013. overflow: hidden;
  1014. display: flex;
  1015. .asider-cont {
  1016. &::-webkit-scrollbar {
  1017. width: 0 !important;
  1018. }
  1019. }
  1020. // reset
  1021. .el-breadcrumb {
  1022. font-size: 16px;
  1023. }
  1024. #main_left {
  1025. // width: 200px;
  1026. height: 100%;
  1027. background: $menu_bg !important;
  1028. color: #000;
  1029. border-bottom: 1px solid #eaeaea;
  1030. position: fixed;
  1031. left: 0;
  1032. top: 0;
  1033. z-index: 99;
  1034. .logo_cont {
  1035. height: 60px;
  1036. box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1);
  1037. display: flex;
  1038. align-items: center;
  1039. justify-content: center;
  1040. border-bottom: 1px solid #dcdfe6;
  1041. .logo {
  1042. width: 148px;
  1043. height: 38px;
  1044. display: block;
  1045. overflow: hidden;
  1046. }
  1047. .logo_coll {
  1048. width: 45px;
  1049. height: 45px;
  1050. display: block;
  1051. overflow: hidden;
  1052. }
  1053. }
  1054. aside {
  1055. text-align: center;
  1056. z-index: 10;
  1057. margin-left: -1px;
  1058. .el-menu {
  1059. width: 200px;
  1060. height: 100%;
  1061. box-sizing: border-box;
  1062. /* background: #323a58 !important; */
  1063. }
  1064. .el-menu--collapse {
  1065. width: 70px;
  1066. height: 100%;
  1067. box-sizing: border-box;
  1068. /* background: #323a58 !important; */
  1069. }
  1070. .menuitem {
  1071. height: 55px;
  1072. padding-left: 28px;
  1073. box-sizing: border-box;
  1074. cursor: pointer;
  1075. color: #1f2e4d;
  1076. font-size: 15px;
  1077. display: flex;
  1078. align-items: center;
  1079. overflow: hidden;
  1080. img {
  1081. width: 20px;
  1082. margin-right: 6px;
  1083. }
  1084. }
  1085. .el-submenu .el-menu-item {
  1086. font-size: 15px;
  1087. padding: 0 0 0 20px !important;
  1088. text-align: left;
  1089. }
  1090. .el-menu-item.is-active {
  1091. background: #ecf2fe !important;
  1092. color: $theme-color !important;
  1093. a {
  1094. color: $theme-color !important;
  1095. }
  1096. }
  1097. .el-submenu__title {
  1098. //padding-left: 0 !important;
  1099. display: flex;
  1100. align-items: center;
  1101. }
  1102. .el-level-path {
  1103. position: relative;
  1104. height: 56px;
  1105. display: flex;
  1106. align-items: center;
  1107. .titleLetter {
  1108. font: 12px "\5FAE\8F6F\96C5\9ED1";
  1109. letter-spacing: 1px;
  1110. left: 0;
  1111. }
  1112. }
  1113. .titleLetter {
  1114. position: absolute;
  1115. bottom: -2px;
  1116. width: auto;
  1117. height: auto;
  1118. visibility: visible;
  1119. font-size: 12px;
  1120. }
  1121. .el-menu--collapse .el-submenu__title {
  1122. padding-left: 20px !important;
  1123. }
  1124. }
  1125. .el-submenu__title:hover,
  1126. .el-menu-item:hover {
  1127. background: #ecf2fe !important;
  1128. }
  1129. .subItem {
  1130. overflow: hidden;
  1131. .sub-item {
  1132. height: 55px;
  1133. padding-left: 52px;
  1134. box-sizing: border-box;
  1135. cursor: pointer;
  1136. color: #1f2e4d;
  1137. font-size: 15px;
  1138. display: flex;
  1139. align-items: center;
  1140. overflow: hidden;
  1141. &.sub_act {
  1142. background: #dbe4fc;
  1143. }
  1144. }
  1145. }
  1146. .menu-expanded > .el-menu-vertical-demo {
  1147. // width: 200px;
  1148. // min-height: calc(100vh - 80px);
  1149. color: #fff;
  1150. padding-bottom: 20px;
  1151. overflow: hidden;
  1152. overflow-y: auto;
  1153. border-right: none;
  1154. /* .el-submenu > .el-menu > .active {
  1155. background: rgba($color: #fdb863, $alpha: 0.2) !important;
  1156. color: #fdb863 !important;
  1157. } */
  1158. }
  1159. .el-submenu__title > i:nth-of-type(1) {
  1160. color: #c0c4cc !important;
  1161. }
  1162. }
  1163. .left_section_logo {
  1164. width: 148px;
  1165. height: 38px;
  1166. }
  1167. #main_right {
  1168. width: 100%;
  1169. overflow: hidden;
  1170. background: #f5f7f9;
  1171. position: relative;
  1172. .main_right_top {
  1173. // width: 100%;
  1174. background: #fff;
  1175. height: 60px;
  1176. box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1);
  1177. box-sizing: border-box;
  1178. display: flex;
  1179. justify-content: space-between;
  1180. align-items: center;
  1181. padding: 0 30px;
  1182. .main_left_container {
  1183. display: flex;
  1184. flex-shrink: 0;
  1185. align-items: center;
  1186. .main_left_section {
  1187. display: flex;
  1188. align-items: center;
  1189. }
  1190. .approval_notice {
  1191. display: flex;
  1192. align-items: center;
  1193. margin-left: 60px;
  1194. img {
  1195. margin-right: 10px;
  1196. }
  1197. div {
  1198. font-size: 16px;
  1199. font-family: PingFang SC-Regular, PingFang SC;
  1200. font-weight: 400;
  1201. color: #ee9a34;
  1202. line-height: 19px;
  1203. }
  1204. }
  1205. }
  1206. .coll_btn {
  1207. margin-right: 20px;
  1208. .coll_ico {
  1209. font-size: 22px;
  1210. display: block;
  1211. cursor: pointer;
  1212. color: #606266;
  1213. &:hover {
  1214. color: #4099ef;
  1215. }
  1216. }
  1217. }
  1218. .breadcrumb-container {
  1219. padding: 12px 20px;
  1220. box-sizing: border-box;
  1221. line-height: 18px;
  1222. margin-bottom: 0px;
  1223. .title {
  1224. width: 150px;
  1225. color: #475669;
  1226. float: left;
  1227. }
  1228. .breadcrumb-inner {
  1229. font: 14px/19px "微软雅黑";
  1230. }
  1231. }
  1232. .breadFixed {
  1233. display: block !important;
  1234. background: rgb(255, 255, 255);
  1235. border-bottom: 1px solid #eaeaea;
  1236. padding: 13px 245px 12px 20px;
  1237. box-sizing: border-box;
  1238. position: fixed;
  1239. top: 60px;
  1240. left: 150px;
  1241. right: 0;
  1242. z-index: 10;
  1243. overflow: hidden;
  1244. }
  1245. .breadCollapsedFixed {
  1246. display: block !important;
  1247. background: rgb(255, 255, 255);
  1248. border-bottom: 1px solid #eaeaea;
  1249. padding: 15px 105px 15px 25px;
  1250. box-sizing: border-box;
  1251. position: fixed;
  1252. top: 60px;
  1253. left: 60px;
  1254. right: 0;
  1255. z-index: 10;
  1256. }
  1257. .userinfo {
  1258. /* min-width: 420px;
  1259. width: 480px; */
  1260. height: 60px;
  1261. text-align: right;
  1262. overflow: hidden;
  1263. position: relative;
  1264. margin-left: 15px;
  1265. display: flex;
  1266. justify-content: space-between;
  1267. align-items: center;
  1268. .userinfo-fingerpost {
  1269. display: flex;
  1270. align-items: center;
  1271. // margin-right: 50px;
  1272. color: $theme-color;
  1273. .el-button:hover {
  1274. background: #ecf2fe;
  1275. }
  1276. }
  1277. .userinfo-inner {
  1278. cursor: pointer;
  1279. color: #666 !important;
  1280. display: flex;
  1281. align-items: center;
  1282. font-size: 16px;
  1283. img {
  1284. width: 25px;
  1285. height: 25px;
  1286. margin: 10px;
  1287. }
  1288. }
  1289. .userinfo-inner:hover {
  1290. color: #5882ef;
  1291. }
  1292. .help-center-inner {
  1293. }
  1294. .icon-box-item {
  1295. padding: 12px;
  1296. border-radius: 4px;
  1297. &:hover {
  1298. background: #ecf2fe;
  1299. }
  1300. }
  1301. }
  1302. }
  1303. .right_section {
  1304. display: flex;
  1305. align-items: center;
  1306. }
  1307. .lang-content {
  1308. display: flex;
  1309. align-items: center;
  1310. justify-content: center;
  1311. width: 100px;
  1312. height: 40px;
  1313. border-radius: 4px;
  1314. color: #0052d9;
  1315. background-color: #ecf2fe;
  1316. cursor: pointer;
  1317. }
  1318. .safariStyle {
  1319. border-right: none;
  1320. margin-left: -1px;
  1321. }
  1322. .content-container {
  1323. //height: calc(100vh - 90px);
  1324. background: #f2f6fa;
  1325. // position: relative;
  1326. overflow-y: auto;
  1327. position: absolute;
  1328. //padding-top: 22px;
  1329. left: 0;
  1330. right: 0;
  1331. top: 68px; //应该是60px 但为了留出header的box-shadow多移了8px
  1332. bottom: 0;
  1333. z-index: 100;
  1334. /*修改滚动条样式*/
  1335. &::-webkit-scrollbar {
  1336. width: 10px;
  1337. height: 10px;
  1338. }
  1339. &::-webkit-scrollbar-track {
  1340. background: rgb(239, 239, 239);
  1341. border-radius: 2px;
  1342. }
  1343. &::-webkit-scrollbar-thumb {
  1344. background: #ccc;
  1345. border-radius: 10px;
  1346. }
  1347. &::-webkit-scrollbar-thumb:hover {
  1348. background: #888;
  1349. }
  1350. &::-webkit-scrollbar-corner {
  1351. background: #666;
  1352. }
  1353. /**/
  1354. .contentc {
  1355. width: 100%;
  1356. overflow: auto;
  1357. .content-wrapper {
  1358. width: 100%;
  1359. //padding-top:22px,是给header的box-shadow留出位置;
  1360. //padding-bottom:22px,是给内容页的滚动条留出位置
  1361. padding: 22px 30px;
  1362. box-sizing: border-box;
  1363. overflow: auto;
  1364. }
  1365. .note_entrance {
  1366. display: inline-block;
  1367. position: absolute;
  1368. right: 20px;
  1369. top: 50%;
  1370. height: 100%;
  1371. transform: translateY(-50%);
  1372. > img {
  1373. width: 20px;
  1374. margin-right: 5px;
  1375. vertical-align: middle;
  1376. }
  1377. }
  1378. }
  1379. }
  1380. }
  1381. }
  1382. </style>