Navbar.vue 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. <template>
  2. <div class="top-nav">
  3. <!-- <div class="nav-logo">
  4. <img :src="require(`../../../assets/logo/logo.png`)" alt="">
  5. </div>
  6. <el-menu class="navbar" mode="horizontal">
  7. <div>
  8. <span> {{this.$store.getters.xt_user.org.org_name}}
  9. </span>
  10. </div>
  11. <div class="system-nav">
  12. <div class="system-nav-menu active">
  13. <a>
  14. <span><i class="icon iconfont icon-jiankangshuidi"></i> 血透管理</span>
  15. </a>
  16. </div>
  17. <div class="system-nav-menu" v-if="this.$store.getters.xt_user.cdm_role_exist">
  18. <a :href="CDMWebsit()">
  19. <span><i class="icon iconfont icon-manbing-xuanzhong"></i> 慢病管理</span>
  20. </a>
  21. </div>
  22. <div class="system-nav-menu" v-if="this.$store.getters.xt_user.scrm_role_exist">
  23. <a :href="SCRMWebsit()">
  24. <span><i class="iconfont icon-pengyou"></i> SCRM</span>
  25. </a>
  26. </div>
  27. <div class="system-nav-menu" v-if="this.$store.getters.xt_user.mall_role_exist">
  28. <a :href="MircoMallWebsit()">
  29. <span><i class="icon iconfont icon-service_fill"></i> 微商城</span>
  30. </a>
  31. </div>
  32. <div class="system-nav-menu">
  33. <a :href="APPManageWebsit()">
  34. <span><i class="icon iconfont icon-suoyou"></i> 应用</span>
  35. </a>
  36. </div>
  37. </div>
  38. <div class="right-menu">
  39. <el-dropdown class="avatar-container right-menu-item" trigger="click" @command="handleCommand">
  40. <div class="avatar-wrapper">
  41. <img class="user-avatar" :src="avater">
  42. <span class="user-title">{{ this.$store.getters.xt_user.user.user_name }}</span>
  43. <i class="el-icon-caret-bottom"></i>
  44. </div>
  45. <el-dropdown-menu slot="dropdown">
  46. <el-dropdown-item command="modifyUserInfoAction">
  47. 个人信息
  48. </el-dropdown-item>
  49. <el-dropdown-item command="modifyOrgInfoAction">
  50. 机构信息
  51. </el-dropdown-item>
  52. <el-dropdown-item divided command="logout">
  53. {{$t('navbar.logOut')}}
  54. </el-dropdown-item>
  55. </el-dropdown-menu>
  56. </el-dropdown>
  57. <modify-user-info-dialog ref="modify_user_info_dialog"></modify-user-info-dialog>
  58. <modify-org-info-dialog ref="modify_org_info_dialog"></modify-org-info-dialog>
  59. </div>
  60. </el-menu>-->
  61. <div style="display:flex;align-items: center;">
  62. <div class="nav-logo">
  63. <img :src="require(`../../../assets/logo/logo2.png`)" alt="">
  64. </div>
  65. <div class="dropdownBox">
  66. <el-dropdown trigger="click" @command="handleOrgCommand">
  67. <span class="el-dropdown-link">
  68. {{ org_name }}
  69. <i class="el-icon-arrow-down el-icon--right"></i>
  70. </span>
  71. <el-dropdown-menu slot="dropdown">
  72. <el-dropdown-item
  73. v-for="(item, index) in orgs"
  74. :key="index"
  75. :command="item.id"
  76. >{{ item.org_name }}</el-dropdown-item
  77. >
  78. </el-dropdown-menu>
  79. </el-dropdown>
  80. </div>
  81. <div style="margin-left: 50px" v-if="org_config.code&&org_config.code.length >0">机构编码:{{org_config.code}}</div>
  82. </div>
  83. <div class="navRight">
  84. <!-- <el-input placeholder="搜索患者透析号/姓名/首拼" prefix-icon="el-icon-search" v-model="input2"></el-input>
  85. <div style="color: #b2b2b3;">通知中心</div> -->
  86. <div class="right-menu">
  87. <el-dropdown
  88. class="avatar-container right-menu-item"
  89. trigger="click"
  90. @command="handleCommand"
  91. >
  92. <div class="avatar-wrapper">
  93. <img class="user-avatar" :src="avater" />
  94. <span class="user-title">{{
  95. this.$store.getters.xt_user.user.user_name
  96. }}</span>
  97. <i class="el-icon-caret-bottom"></i>
  98. </div>
  99. <el-dropdown-menu slot="dropdown">
  100. <el-dropdown-item >医师编码: {{role.doctor_number}}</el-dropdown-item>
  101. <el-dropdown-item command="modifyUserInfoAction"
  102. >个人信息</el-dropdown-item
  103. >
  104. <el-dropdown-item
  105. command="modifyOrgInfoAction"
  106. v-if="is_super_admin === 1"
  107. >机构信息</el-dropdown-item
  108. >
  109. <el-dropdown-item divided command="logout">{{
  110. $t("navbar.logOut")
  111. }}</el-dropdown-item>
  112. </el-dropdown-menu>
  113. </el-dropdown>
  114. <modify-user-info-dialog
  115. ref="modify_user_info_dialog"
  116. ></modify-user-info-dialog>
  117. <modify-org-info-dialog
  118. ref="modify_org_info_dialog"
  119. ></modify-org-info-dialog>
  120. </div>
  121. <div>
  122. <!-- <i class="el-icon-question"></i>
  123. <a href="https://sso.kuyicloud.com/help" target="_blank">帮助中心</a> -->
  124. <div class="fixedBox">
  125. <div class="fixed-item" @mouseover="mouseOver" @mouseleave="leave">
  126. <i class="el-icon-chat-line-round"></i>
  127. <div class="fixed-text">联系客户经理</div>
  128. <div class="fixed-wrap" v-show="wrap1">
  129. <div class="fixed-inner">
  130. <div class="fixed-inner-item">您的专属客户经理:{{ information.name }}</div>
  131. <div class="fixed-inner-item">电话:{{ information.phone }}</div>
  132. <div class="fixed-inner-item">微信:{{ information.wechat }}</div>
  133. <div class="fixed-inner-item">QQ:{{ information.qqchat }}</div>
  134. <div class="fixed-inner-item">邮箱:{{ information.email }}</div>
  135. <div class="fixed-inner-triangle"></div>
  136. </div>
  137. </div>
  138. </div>
  139. <div class="fixed-item" @mouseover="mouseOver1" @mouseleave="leave1">
  140. <i class="el-icon-full-screen"></i>
  141. <div class="fixed-text">微信联系</div>
  142. <div class="fixed-wrap" v-show="wrap2">
  143. <div class="fixed-inner">
  144. <img :src="information.wechat_link" alt="">
  145. <div>扫码加微信</div>
  146. <div class="fixed-inner-triangle"></div>
  147. </div>
  148. </div>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. </template>
  155. <script>
  156. import axios from 'axios'
  157. import { mapGetters } from "vuex";
  158. // import Breadcrumb from "@/components/Breadcrumb";
  159. // import Hamburger from "@/components/Hamburger";
  160. import Screenfull from "@/components/Screenfull";
  161. import ModifyUserInfoDialog from "@/xt_pages/home/modify_user_info_dialog";
  162. import ModifyOrgInfoDialog from "@/xt_pages/home/modifyOrgInfoDialog";
  163. import { getFiledConfigList, setFiledConfigList } from "@/utils/data_config"; // getConfigList from sessionStorage
  164. import {
  165. getAdminUserInfoCache,
  166. cacheAdminUserInfo,
  167. removeAdminUserInfoCache
  168. } from "@/utils/admin_info_cache";
  169. import { getOrgs, changeOrg } from "@/api/config";
  170. import { getConnect } from "@/api/login";
  171. export default {
  172. inject: ["reload"],
  173. data() {
  174. return {
  175. orgs: [],
  176. org_id: this.$store.getters.xt_user.org.id,
  177. org_name: this.$store.getters.xt_user.org.org_name,
  178. is_super_admin: 0,
  179. wrap1:false,
  180. wrap2:false,
  181. information:{},
  182. org_config:{},
  183. role:{},
  184. // scrm_role_exist: $store.getters.xt_user.scrm_role_exist
  185. };
  186. },
  187. components: {
  188. Screenfull,
  189. ModifyUserInfoDialog,
  190. ModifyOrgInfoDialog
  191. },
  192. computed: {
  193. ...mapGetters(["sidebar"]),
  194. avater: function() {
  195. var avatar = this.$store.getters.xt_user.user.avatar;
  196. return avatar.length > 0
  197. ? avatar
  198. : require("../../../assets/home/userData.png");
  199. },
  200. websocket() {
  201. return this.$store.state.user.websocket;
  202. }
  203. },
  204. methods: {
  205. handleOrgCommand(org_id) {
  206. let params = {
  207. org_id: org_id
  208. };
  209. changeOrg(params)
  210. .then(response => {
  211. if (response.data.state === 1) {
  212. // window.location.reload()
  213. this.$message.success("切换成功");
  214. let data = response.data.data;
  215. this.org_id = data.org.id;
  216. this.org_name = data.org.org_name;
  217. // this.$store.dispatch("ModifyAdminUserOrgInfo", {
  218. // user: data.user,
  219. // cur_org_id: data.current_org_id,
  220. // cur_app_id: data.current_app_id,
  221. // org: data.org,
  222. // subscibe: data.subscibe,
  223. // template_info: data.template_info,
  224. // scrm_role_exist: data.scrm_role_exist,
  225. // cdm_role_exist: data.cdm_role_exist,
  226. // mall_role_exist: data.mall_role_exist
  227. // });
  228. //
  229. // this.$store.dispatch("ModifyUrlInfo", {
  230. // urlfors: data.urlfors
  231. // });
  232. //
  233. // this.$store.dispatch("ModifyFiled", {
  234. // fileds: data.fileds
  235. // });
  236. // setFiledConfigList(JSON.stringify(data.fileds));
  237. // cacheAdminUserInfo(JSON.stringify(data));
  238. window.location.reload();
  239. // this.$store
  240. // .dispatch(
  241. // "xt_GenerateRoutes",
  242. // this.$store.getters.current_role_urls
  243. // )
  244. // .then(() => {
  245. // this.$store.dispatch("VerifyConfigList").then(() => {
  246. // // alert('token 验证成功')
  247. // // console.log(this.$store.getters.xt_permission.addRouters)
  248. // this.$router.addRoutes(
  249. // this.$store.getters.xt_permission.addRouters
  250. // ); // 动态添加可访问路由表
  251. // // next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
  252. // // this.$router.replace({ path: '/' })
  253. // // this.$router.go(0)
  254. // // this.reload()
  255. // });
  256. // });
  257. } else {
  258. this.$message.success(response.data.msg);
  259. }
  260. })
  261. .catch(e => {
  262. // this.$message.success("网络异常")
  263. });
  264. },
  265. handleCommand(command) {
  266. switch (command) {
  267. case "modifyUserInfoAction":
  268. this.modifyUserInfoAction();
  269. break;
  270. case "modifyOrgInfoAction":
  271. this.modifyOrgInfoAction();
  272. break;
  273. case "logout":
  274. this.logout();
  275. break;
  276. }
  277. },
  278. logout() {
  279. this.$store.dispatch("FrontendLogout");
  280. window.location.href = process.env.BASE_API + "/logout";
  281. },
  282. modifyOrgInfoAction() {
  283. // this.$refs.modify_org_info_dialog.show()
  284. this.$router.push("/orginfo");
  285. return false;
  286. },
  287. modifyUserInfoAction() {
  288. this.$refs.modify_user_info_dialog.show();
  289. },
  290. myServe() {
  291. this.$router.push("/service");
  292. return false;
  293. },
  294. SCRMWebsit() {
  295. return process.env.SRCM_HOST;
  296. },
  297. MircoMallWebsit() {
  298. return process.env.MIRCO_MALL_HOST;
  299. },
  300. CDMWebsit() {
  301. return process.env.CDM_HOST;
  302. },
  303. APPManageWebsit() {
  304. return (
  305. process.env.SSO_HOST +
  306. "/org/admin/apps?org=" +
  307. this.$store.getters.xt_user.org_id
  308. );
  309. },
  310. getToken(orgId,adminUserId){
  311. axios.get('/api/index/gettoken/'+ orgId + '/'+ adminUserId
  312. ).then((res) => {
  313. console.log('res',res.data)
  314. if(res.data.code == 0){
  315. let token = res.data.data.token
  316. localStorage.setItem("token",token)
  317. let http = 'wss://socket.sgjyun.com?token='
  318. // let http = 'ws://socket.szjkhd.com?token='//测试
  319. console.log(this.$store.state.user.websocket)
  320. this.$store.state.user.websocket = new ReconnectingWebSocket(
  321. http + token
  322. );
  323. this.$store.state.user.websocket.timeoutInterval = 3000;
  324. setInterval(() => {
  325. if (navigator.onLine == false) {
  326. this.showWsErr = true;
  327. this.wsErrMsg = "网络已断开,请检查网络后重新打开页面";
  328. console.log('navigator',navigator)
  329. let http = 'wss://socket.sgjyun.com?token='
  330. // let http = 'ws://socket.szjkhd.com?token=' //测试
  331. let token = localStorage.getItem("token")
  332. this.$store.state.user.websocket = new ReconnectingWebSocket(
  333. http + token
  334. );
  335. } else if (
  336. navigator.onLine == true &&
  337. this.websocket.readyState == 1
  338. ) {
  339. this.showWsErr = false;
  340. }
  341. this.websocket.send("1");
  342. }, 30000);
  343. }
  344. }).catch(error => {
  345. // window.location.href = error.response.data.redirect;
  346. });
  347. },
  348. mouseOver() {
  349. this.wrap1 = true;
  350. },
  351. leave() {
  352. this.wrap1 = false;
  353. },
  354. mouseOver1() {
  355. this.wrap2 = true;
  356. },
  357. leave1() {
  358. this.wrap2 = false;
  359. },
  360. getConnect(){
  361. getConnect().then(res => {
  362. console.log(res)
  363. this.information = res.data.data.information
  364. })
  365. }
  366. },
  367. created() {
  368. this.getConnect()
  369. getOrgs().then(response => {
  370. if (response.data.state === 1) {
  371. this.orgs = response.data.data.orgs;
  372. console.log("org", this.orgs);
  373. var creator = response.data.data.creator;
  374. console.log("creator", creator);
  375. var admin = response.data.data.admin;
  376. console.log("admin", admin);
  377. this.is_super_admin = admin.is_super_admin;
  378. for (let i = 0; i < this.orgs.length; i++) {
  379. if (this.orgs[i].id == this.org_id) {
  380. this.org_name = this.orgs[i].org_name;
  381. }
  382. }
  383. this.org_config = response.data.data.org_config
  384. this.role = response.data.data.role
  385. localStorage.setItem("org_id",creator.org_id);
  386. sessionStorage.setItem("org_id",creator.org_id);
  387. sessionStorage.setItem("admin_user_id",creator.admin_user_id);
  388. this.getToken(creator.org_id,creator.admin_user_id)
  389. }
  390. });
  391. },
  392. };
  393. </script>
  394. <style rel="stylesheet/scss" lang="scss" scoped>
  395. .top-nav {
  396. background: #fff;
  397. position: fixed;
  398. top: 0;
  399. left: 0px;
  400. right: 0;
  401. z-index: 1000;
  402. height: 50px;
  403. display: flex;
  404. align-items: center;
  405. justify-content: space-between;
  406. color: #000;
  407. .dropdownBox {
  408. margin-left: 10px;
  409. }
  410. .navRight {
  411. display: flex;
  412. align-items: center;
  413. justify-content: space-between;
  414. min-width: 200px;
  415. margin-right: 10px;
  416. font-size: 14px;
  417. .right-menu {
  418. float: right;
  419. height: 100%;
  420. z-index: 99999;
  421. color: #000;
  422. & :focus {
  423. outline: none;
  424. }
  425. .right-menu-item {
  426. display: inline-block;
  427. margin: 0 8px;
  428. .iconfont {
  429. font-size: 18px;
  430. }
  431. }
  432. .screenfull {
  433. height: 20px;
  434. }
  435. .international {
  436. vertical-align: top;
  437. }
  438. .theme-switch {
  439. vertical-align: 15px;
  440. }
  441. .avatar-container {
  442. margin-right: 10px;
  443. .avatar-wrapper {
  444. cursor: pointer;
  445. margin-top: 3px;
  446. display: flex;
  447. align-items: center;
  448. justify-content: center;
  449. .user-avatar {
  450. width: 40px;
  451. height: 40px;
  452. border-radius: 50%;
  453. object-fit: cover;
  454. object-position: center;
  455. }
  456. .user-title {
  457. margin: 0 8px;
  458. font-size: 14px;
  459. color: #000;
  460. }
  461. .el-icon-caret-bottom {
  462. font-size: 12px;
  463. color: #000;
  464. }
  465. }
  466. }
  467. }
  468. }
  469. .nav-logo {
  470. width: 140px;
  471. display: flex;
  472. align-items: center;
  473. // height: 60px;
  474. text-align: center;
  475. justify-content: center;
  476. // padding: 10px 0;
  477. box-sizing: border-box;
  478. float: left;
  479. img {
  480. display: inline-block;
  481. width: 100px;
  482. }
  483. }
  484. .navbar {
  485. border-radius: 0px !important;
  486. display: flex;
  487. justify-content: space-between;
  488. width: calc(100% - 180px);
  489. align-items: center;
  490. color: #fff;
  491. border: none;
  492. background: #409eff;
  493. float: left;
  494. .breadcrumb-container {
  495. float: left;
  496. }
  497. .errLog-container {
  498. display: inline-block;
  499. vertical-align: top;
  500. }
  501. .right-menu {
  502. float: right;
  503. height: 100%;
  504. z-index: 99999;
  505. & :focus {
  506. outline: none;
  507. }
  508. .right-menu-item {
  509. display: inline-block;
  510. margin: 0 8px;
  511. .iconfont {
  512. font-size: 18px;
  513. }
  514. }
  515. .screenfull {
  516. height: 20px;
  517. }
  518. .international {
  519. vertical-align: top;
  520. }
  521. .theme-switch {
  522. vertical-align: 15px;
  523. }
  524. .avatar-container {
  525. margin-right: 10px;
  526. .avatar-wrapper {
  527. cursor: pointer;
  528. margin-top: 3px;
  529. display: flex;
  530. align-items: center;
  531. justify-content: center;
  532. .user-avatar {
  533. width: 40px;
  534. height: 40px;
  535. border-radius: 50%;
  536. object-fit: cover;
  537. object-position: center;
  538. }
  539. .user-title {
  540. margin: 0 8px;
  541. font-size: 14px;
  542. color: #000;
  543. }
  544. .el-icon-caret-bottom {
  545. font-size: 12px;
  546. color: #000;
  547. }
  548. }
  549. }
  550. }
  551. }
  552. .system-nav {
  553. .system-nav-menu {
  554. float: left;
  555. height: 60px;
  556. line-height: 60px;
  557. padding: 0 25px;
  558. a {
  559. font-size: 15px;
  560. .iconfont {
  561. font-size: 18px;
  562. }
  563. }
  564. }
  565. .active {
  566. background: #3090eb;
  567. border-left: 1px #5fabf7 solid;
  568. border-right: 1px #5fabf7 solid;
  569. }
  570. }
  571. .el-menu::after,
  572. .el-menu::before {
  573. width: 1px;
  574. height: 1px;
  575. position: absolute;
  576. top: 0;
  577. left: 0;
  578. }
  579. }
  580. .el-dropdown-menu {
  581. z-index: 9999 ;
  582. }
  583. // .v-modal {
  584. // z-index: 9999 !important;
  585. // }
  586. </style>
  587. <style lang="scss">
  588. .navRight {
  589. .el-input {
  590. width: 250px;
  591. }
  592. .el-input__inner {
  593. border-radius: 30px;
  594. background: #f5f7fa;
  595. }
  596. }
  597. .dropdownBox {
  598. .el-dropdown-link {
  599. font-size: 14px;
  600. color: #000;
  601. }
  602. }
  603. </style>
  604. <style>
  605. .fixedBox{
  606. /* position: fixed;
  607. right: 10px;
  608. top: 60%;
  609. -webkit-box-shadow: 0 5px 10px 0 rgb(0 0 0 / 10%);
  610. -moz-box-shadow: 0 5px 10px 0 rgba(0,0,0,.1);
  611. box-shadow: 0 5px 10px 0 rgb(0 0 0 / 10%);
  612. background-color: #fff;
  613. color: #000;
  614. z-index: 998; */
  615. display: flex;
  616. }
  617. .fixed-item{
  618. width: 100%;
  619. padding: 20px 10px;
  620. -webkit-box-sizing: border-box;
  621. -moz-box-sizing: border-box;
  622. box-sizing: border-box;
  623. position: relative;
  624. cursor: pointer;
  625. text-align: center;
  626. display: flex;
  627. align-items: center;
  628. }
  629. .fixed-text{
  630. display: block;
  631. width: 90px;
  632. left: 0;
  633. top: 0;
  634. margin: auto;
  635. color: #000;
  636. line-height: 16px;
  637. font-size: 13px;
  638. -webkit-box-sizing: content-box;
  639. -moz-box-sizing: content-box;
  640. box-sizing: content-box;
  641. text-align: center;
  642. }
  643. .fixed-wrap{
  644. position: absolute;
  645. right: 0;
  646. top: 160px;
  647. -webkit-transform: translateY(-50%);
  648. -moz-transform: translateY(-50%);
  649. -ms-transform: translateY(-50%);
  650. transform: translateY(-50%);
  651. background-color: #409EFF;
  652. color: #FFF;
  653. z-index: 9999999;
  654. border-radius: 4px;
  655. }
  656. .fixed-inner{
  657. width: 308px;
  658. padding: 9px 0;
  659. box-shadow: 0 5px 10px 0 rgb(0 0 0 / 10%);
  660. }
  661. .fixed-inner-item{
  662. padding: 15px;
  663. text-align: left;
  664. }
  665. .fixed-inner-triangle{
  666. position: absolute;
  667. right: 15%;
  668. top: -10px;
  669. -webkit-transform: rotate(-45deg) translateY(-50%);
  670. -moz-transform: rotate(-45deg) translateY(-50%);
  671. -ms-transform: rotate(-45deg) translateY(-50%);
  672. transform: rotate(-135deg) translateY(-50%);
  673. width: 12px;
  674. height: 12px;
  675. border-color: transparent #409EFF #409EFF transparent;
  676. border-style: solid;
  677. border-width: 6px;
  678. background: transparent;
  679. -webkit-box-shadow: 5px 5px 10px 0 rgb(0 0 0 / 10%);
  680. -moz-box-shadow: 5px 5px 10px 0 rgba(0,0,0,.1);
  681. box-shadow: 5px 5px 10px 0 rgb(0 0 0 / 10%);
  682. -webkit-box-sizing: border-box;
  683. -moz-box-sizing: border-box;
  684. box-sizing: border-box;
  685. }
  686. .fixed-inner img{
  687. height: 160px;
  688. }
  689. </style>