index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. <!-- -->
  2. <template>
  3. <div
  4. class="indexbox"
  5. v-loading="indexloading"
  6. element-loading-text="欢迎登录!加载中,请稍后..."
  7. element-loading-spinner="el-icon-loading"
  8. element-loading-background="rgba(255, 255, 255)"
  9. >
  10. <div class="menubox">
  11. <div class="index_title">
  12. <img
  13. v-if="imgurl"
  14. :src="
  15. imgurl.indexOf('http') == -1 ? this.$deriveData + imgurl : imgurl
  16. "
  17. alt=""
  18. class="menubox_logo_img"
  19. />
  20. <p>{{ headline }}</p>
  21. </div>
  22. <div class="index_out" style="display: flex; align-items: center;">
  23. <div class="index_out_info">
  24. <i class="el-icon-message-solid" @click="towarn"></i>
  25. <p class="dian" v-if="warntf"></p>
  26. </div>
  27. <div title="去大屏" v-if="hasNewHome">
  28. <router-link target="_blank" style="margin-right: 15px; font-size: 22px; color: #666666" to="/newHome/home"><i class="el-icon-monitor"></i></router-link>
  29. </div>
  30. <div
  31. class="iconfont icon-erweima"
  32. style="margin-right: 15px; font-size: 22px; color: #666666"
  33. @click="QRcode"
  34. ></div>
  35. <el-dropdown trigger="click" @command="quit">
  36. <span class="el-dropdown-link" style="cursor: pointer">
  37. <span>{{ username }}</span>
  38. <i class="el-icon-arrow-down el-icon--right"></i>
  39. </span>
  40. <el-dropdown-menu slot="dropdown">
  41. <el-dropdown-item command="a">更改密码</el-dropdown-item>
  42. <el-dropdown-item command="b">退出</el-dropdown-item>
  43. </el-dropdown-menu>
  44. </el-dropdown>
  45. <!-- <p><i class="el-icon-switch-button" @click="quit"></i></p> -->
  46. </div>
  47. </div>
  48. <div class="contentbox">
  49. <div
  50. class="menubox_item"
  51. :style="{ width: menunoneele ? '226px' : '0px' }"
  52. >
  53. <div class="elmenubox">
  54. <el-menu
  55. default-active="2"
  56. class="el-menu-vertical-demo"
  57. @open="handleOpen"
  58. background-color="#0D3756"
  59. text-color="#fff"
  60. :default-active="menuActiveId"
  61. active-text-color="#409EFF"
  62. :unique-opened="true"
  63. >
  64. <el-submenu
  65. v-for="item in infodata"
  66. :key="item.pur_id"
  67. :index="item.pur_id.toString()"
  68. >
  69. <template slot="title">
  70. <i :class="icon[item.pur_id]" style="color: #fff"></i>
  71. <span>{{ item.purview_name }}</span>
  72. </template>
  73. <template v-for="items in item.children">
  74. <el-submenu
  75. :index="items.pur_id.toString()"
  76. v-if="items.children"
  77. :key="items.pur_id"
  78. @click="skip('/index/' + items.menu)"
  79. >
  80. <span slot="title">{{ items.purview_name }}</span>
  81. <el-menu-item-group>
  82. <el-menu-item
  83. v-for="item2 in items.children"
  84. :index="item2.pur_id.toString()"
  85. :key="item2.pur_id"
  86. @click="skip('/index/' + item2.menu)"
  87. >
  88. <span slot="title">{{ item2.purview_name }}</span>
  89. </el-menu-item>
  90. </el-menu-item-group>
  91. </el-submenu>
  92. <el-menu-item
  93. :index="items.pur_id.toString()"
  94. v-else
  95. :key="items.pur_id"
  96. @click="skip('/index/' + items.menu)"
  97. class="el-menu-item2"
  98. >
  99. <span slot="title"> {{ items.purview_name }}</span>
  100. </el-menu-item>
  101. </template>
  102. </el-submenu>
  103. </el-menu>
  104. </div>
  105. <div
  106. class="operationbox"
  107. :style="{ left: menunoneele ? '226px' : '0px' }"
  108. >
  109. <img
  110. :src="
  111. menunoneele
  112. ? '../../../static/images/homepage/shou.png'
  113. : '../../../static/images/homepage/chu.png'
  114. "
  115. alt=""
  116. @click="menunone"
  117. />
  118. </div>
  119. </div>
  120. <div
  121. class="contentbox_right"
  122. :style="{ width: menunoneele ? 'calc(100% - 226px)' : '100%' }"
  123. >
  124. <div class="contentbox_crumbs">
  125. <el-breadcrumb separator="/">
  126. <el-breadcrumb-item
  127. v-for="(item, index) in routerinfo"
  128. :key="item.pur_id"
  129. >
  130. <!-- <a
  131. v-if="
  132. index == routerinfo.length - 2 &&
  133. item.menu != '' &&
  134. item.purview_name != '查看图片'
  135. "
  136. :href="'/#/index/' + item.menu"
  137. style="cursor: pointer"
  138. >{{ item.purview_name }}</a
  139. > -->
  140. <span>{{ item.purview_name }}</span></el-breadcrumb-item
  141. >
  142. </el-breadcrumb>
  143. </div>
  144. <div class="contentbox_box">
  145. <router-view />
  146. </div>
  147. </div>
  148. </div>
  149. <el-dialog
  150. title="提示"
  151. :visible.sync="alterpassTF"
  152. width="500px"
  153. :before-close="handleClose"
  154. >
  155. <div>
  156. <el-form
  157. :model="ruleForm"
  158. :rules="rules"
  159. ref="ruleForm"
  160. label-width="110px"
  161. class="demo-ruleForm"
  162. >
  163. <el-form-item label="原始密码:" prop="oldpass">
  164. <el-input type="password" v-model="ruleForm.oldpass"></el-input>
  165. </el-form-item>
  166. <el-form-item label="新密码:" prop="newpass">
  167. <el-input type="password" v-model="ruleForm.newpass"></el-input>
  168. </el-form-item>
  169. <el-form-item label="确认新密码:" prop="newpasstrue">
  170. <el-input type="password" v-model="ruleForm.newpasstrue"></el-input>
  171. </el-form-item>
  172. </el-form>
  173. </div>
  174. <span slot="footer" class="dialog-footer">
  175. <el-button @click="resetForm('ruleForm')" size="mini">取 消</el-button>
  176. <el-button type="primary" @click="submitForm('ruleForm')" size="mini"
  177. >确 定</el-button
  178. >
  179. </span>
  180. </el-dialog>
  181. <el-dialog title="扫描下载智网监测APP" :visible.sync="QRtf" width="300px">
  182. <div class="qrcode" ref="qrCodeUrl" style="margin: 0 auto"></div>
  183. </el-dialog>
  184. </div>
  185. </template>
  186. <script>
  187. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  188. import QRCode from 'qrcodejs2';
  189. // import testData from './test';
  190. export default {
  191. //import引入的组件需要注入到对象中才能使用
  192. components: {},
  193. data() {
  194. //这里存放数据
  195. var validatePass = (rule, value, callback) => {
  196. console.log(value);
  197. if (value == this.ruleForm.newpass) {
  198. callback();
  199. } else {
  200. callback(new Error('俩次密码不一致,请重新确认密码!'));
  201. }
  202. };
  203. return {
  204. hasNewHome:false,
  205. infodata: [],
  206. username: '',
  207. routerdata: [],
  208. menuActiveId: '1',
  209. // menuOpeneds:["18"]
  210. routerinfo: [],
  211. options: [],
  212. value: '',
  213. imgurl: '', //系统logo
  214. headline: '', //系统标题
  215. alterpassTF: false, //修改密码框
  216. ruleForm: {
  217. oldpass: '',
  218. newpass: '',
  219. newpasstrue: ''
  220. },
  221. rules: {
  222. oldpass: [
  223. { required: true, message: '请输入原始密码', trigger: 'blur' },
  224. {
  225. min: 6,
  226. max: 15,
  227. message: '长度在 6 到 15 个字符',
  228. trigger: 'blur'
  229. }
  230. ],
  231. newpass: [
  232. { required: true, message: '请输入新密码', trigger: 'blur' },
  233. {
  234. min: 6,
  235. max: 15,
  236. message: '长度在 6 到 15 个字符',
  237. trigger: 'blur'
  238. }
  239. ],
  240. newpasstrue: [
  241. { required: true, message: '请再次输入新密码', trigger: 'blur' },
  242. {
  243. min: 6,
  244. max: 15,
  245. message: '长度在 6 到 15 个字符',
  246. trigger: 'blur'
  247. },
  248. { validator: validatePass, trigger: 'blur' }
  249. ]
  250. },
  251. indexloading: false,
  252. pur_id: '',
  253. icon: {
  254. 1: 'iconfont icon-minggaoshouye',
  255. 4: 'iconfont icon-xietongzhihuidaping',
  256. 10: 'iconfont icon-didian',
  257. 20: 'iconfont icon-gongzuoguanli-dingdanguanli',
  258. 22: 'iconfont icon-database-full',
  259. 25: 'iconfont icon-shezhi1',
  260. 45: 'iconfont icon-yujing1'
  261. },
  262. QRtf: false,
  263. app_url: '',
  264. menunoneele: true,
  265. warntf: false
  266. };
  267. },
  268. //监听属性 类似于data概念
  269. computed: {},
  270. //监控data中的数据变化
  271. watch: {
  272. '$route.path': function(newVal) {
  273. console.log(newVal);
  274. if (
  275. newVal == '/index/facilitydistribute' ||
  276. newVal == '/index/pestdistribute'
  277. ) {
  278. console.log('触发');
  279. this.menunone();
  280. }
  281. this.routemap(this.routerdata);
  282. // this.menuActiveId = this.$route.path;
  283. }
  284. },
  285. //方法集合
  286. methods: {
  287. handleOpen(e) {
  288. console.log(e);
  289. // localStorage.setItem("menuActiveId", e);
  290. },
  291. handleClose() {},
  292. // user.login.user_login_info
  293. getuserinfo() {
  294. this.indexloading = true;
  295. this.$axios({
  296. method: 'POST',
  297. url: '/api/api_gateway?method=sysmenage.usermanager.user_info'
  298. }).then(res => {
  299. // 测试代码 ---- start
  300. // res = { data: testData };
  301. // --- end
  302. this.indexloading = false;
  303. this.app_url = res.data.data.app_url;
  304. this.imgurl = res.data.data.theme_info.logo_url;
  305. this.headline = res.data.data.theme_info.sys_name;
  306. this.routerdata = JSON.parse(JSON.stringify(res.data.data.children));
  307. var titleList = [];
  308. res.data.data.children.forEach(item => {
  309. if (item.purview_name !== 'APP' && item.pur_id != 62) {
  310. titleList.push(item);
  311. }
  312. });
  313. this.hasNewHome = res.data.data.children.some(item => {
  314. return item.pur_id == 62
  315. })
  316. // this.infodata = res.data.data.children;
  317. this.infodata = titleList;
  318. console.log(
  319. this.routerdata,
  320. this.infodata,
  321. '-------------------------- get'
  322. );
  323. // this.infodata.shift();
  324. localStorage.setItem('userID', res.data.data.im_user_id); // 存储当前登录账号的ID
  325. this.username = res.data.data.username;
  326. localStorage.setItem('username', this.username);
  327. this.routemap(this.routerdata);
  328. });
  329. },
  330. quit(e) {
  331. // user.login.logout_user
  332. console.log(e);
  333. if (e == 'a') {
  334. this.alterpassTF = true;
  335. } else if (e == 'b') {
  336. this.outsystem();
  337. }
  338. },
  339. outsystem() {
  340. this.$axios({
  341. method: 'POST',
  342. url: '/api/api_gateway?method=sysmenage.usermanager.user_logout'
  343. }).then(res => {
  344. if (res.data.data) {
  345. localStorage.removeItem('session');
  346. // localStorage.removeItem("username");
  347. this.$router.push('/Login');
  348. }
  349. });
  350. },
  351. skip(path) {
  352. // console.log(this.$route);ssssss
  353. if (this.$route.path != path) {
  354. this.$router.push(path);
  355. }
  356. },
  357. submitForm(formName) {
  358. this.$refs[formName].validate(valid => {
  359. if (valid) {
  360. this.$axios({
  361. method: 'POST',
  362. url: '/api/api_gateway?method=app.my.app_change_pwd',
  363. data: this.qs.stringify({
  364. old_password: this.ruleForm.oldpass, // 必传 旧密码
  365. new_password: this.ruleForm.newpass, // 必传 新密码
  366. confirm_password: this.ruleForm.newpasstrue // 必传 再次确认新密码
  367. })
  368. }).then(res => {
  369. if (res.data.data) {
  370. this.alterpassTF = false;
  371. if (document.getElementsByClassName('el-message').length == 0) {
  372. this.$message({
  373. message: '修改成功!',
  374. type: 'success'
  375. });
  376. }
  377. this.outsystem();
  378. } else {
  379. if (document.getElementsByClassName('el-message').length == 0) {
  380. this.$message({
  381. message: '修改失败!' + res.data.data.message,
  382. type: 'error'
  383. });
  384. }
  385. }
  386. });
  387. } else {
  388. if (document.getElementsByClassName('el-message').length == 0) {
  389. this.$message({
  390. message: '请完成信息填写!',
  391. type: 'warning'
  392. });
  393. }
  394. return false;
  395. }
  396. });
  397. },
  398. resetForm(formName) {
  399. this.$refs[formName].resetFields();
  400. this.alterpassTF = false;
  401. },
  402. QRcode() {
  403. this.QRtf = true;
  404. this.$nextTick(() => {
  405. console.log(this.$deriveData + this.app_url);
  406. if (!this.$refs.qrCodeUrl.firstChild) {
  407. new QRCode(this.$refs.qrCodeUrl, {
  408. text: this.$deriveData + this.app_url, // 需要转换为二维码的内容
  409. // text: "http://114.115.147.140:12345"+this.app_url,
  410. width: 100,
  411. height: 100,
  412. colorDark: '#000000',
  413. colorLight: '#ffffff',
  414. correctLevel: QRCode.CorrectLevel.H
  415. });
  416. }
  417. });
  418. },
  419. routemap(routerdata) {
  420. var newrouter = this.$route.path;
  421. const pathList = newrouter.split('/').filter(item => !!item);
  422. // console.log(routerdata, 'route map', newrouter, pathList);
  423. var tf = routerdata.filter(item => {
  424. if (item.menu != '') {
  425. if (pathList.includes(item.menu)) {
  426. // 第一层菜单是否包含当前路由
  427. // var arr = [item.menu,item.pur_id]
  428. // console.log(item.pur_id)
  429. // return arr
  430. // var a = '111111111'
  431. return [item.menu, item.pur_id];
  432. } else {
  433. if (item.children) {
  434. this.routemap(item.children);
  435. }
  436. }
  437. } else {
  438. if (item.children) {
  439. this.routemap(item.children);
  440. }
  441. }
  442. });
  443. // console.log(tf, 'route map -----');
  444. if (tf.length != 0) {
  445. // console.log(tf);
  446. // this.menuActiveId = tf[0].pur_id.toString();
  447. this.routerinfo = [];
  448. this.routerinfo.unshift(tf[0]);
  449. var newpath = this.routerdata.filter(item => {
  450. // console.log(item)
  451. if (item.pur_id == tf[0].parent_perm_id) {
  452. return item.pur_id == tf[0].parent_perm_id;
  453. } else {
  454. var newpath2 = item.children.filter(items => {
  455. if (items.pur_id == tf[0].parent_perm_id) {
  456. return items.pur_id == tf[0].parent_perm_id;
  457. } else {
  458. if (items.children) {
  459. var newpath3 = items.children.filter(itemsa => {
  460. // console.log(itemsa.pur_id,tf[0].parent_perm_id)
  461. if (itemsa.pur_id == tf[0].parent_perm_id) {
  462. return itemsa.pur_id == tf[0].parent_perm_id;
  463. } else {
  464. // console.log(itemsa)
  465. if (itemsa.children) {
  466. var newpath4 = itemsa.children.filter(itemsaa => {
  467. if (itemsaa.pur_id == tf[0].parent_perm_id) {
  468. return itemsaa.pur_id == tf[0].parent_perm_id;
  469. } else {
  470. }
  471. });
  472. console.log(newpath4);
  473. if (newpath4.length != 0) {
  474. this.routerinfo.unshift(newpath4[0]);
  475. return newpath4;
  476. }
  477. }
  478. }
  479. });
  480. if (newpath3.length != 0) {
  481. this.routerinfo.unshift(newpath3[0]);
  482. return newpath3;
  483. }
  484. }
  485. }
  486. // return items.pur_id == tf[0].parent_perm_id;
  487. });
  488. if (newpath2.length != 0) {
  489. this.routerinfo.unshift(newpath2[0]);
  490. return newpath2;
  491. }
  492. }
  493. });
  494. // console.log(newpath)
  495. this.routerinfo.unshift(newpath[0]);
  496. // console.log(this.routerinfo);
  497. } else {
  498. // console.log(this.routerinfo, 'home');
  499. var obj = {
  500. menu: '',
  501. parent_perm_id: '88',
  502. pur_id: '88',
  503. purview_name: '查看详情'
  504. };
  505. if (this.routerinfo[1] && !this.routerinfo[2]) {
  506. if (this.$route.path == '/index/taskRegulatorDetails') {
  507. this.routerinfo.push(obj);
  508. } else if (this.$route.path == '/index/superviseAdminDetails') {
  509. this.routerinfo.push(obj);
  510. } else if (this.$route.path == '/index/superviseDetails') {
  511. this.routerinfo.push(obj);
  512. } else if (this.$route.path == '/index/superviseLogDetails') {
  513. this.routerinfo.push(obj);
  514. }
  515. } else if (
  516. this.routerinfo.length === 3 &&
  517. this.$route.path === '/index/fillinrecord'
  518. ) {
  519. this.routerinfo.push({
  520. menu: '',
  521. purview_name: '填报记录'
  522. });
  523. }
  524. }
  525. },
  526. menunone() {
  527. this.menunoneele = !this.menunoneele;
  528. },
  529. towarn() {
  530. this.$router.push('/index/warningrecord');
  531. },
  532. getwarnnum() {
  533. this.$axios({
  534. method: 'POST',
  535. url: '/api/api_gateway?method=alert_manage.alert.alert_unread_num',
  536. data: this.qs.stringify({})
  537. })
  538. .then(res => {
  539. console.log(res);
  540. if (res.data.data.unread_num > 0) {
  541. this.warntf = true;
  542. } else {
  543. this.warntf = false;
  544. }
  545. })
  546. .catch(err => {
  547. console.log(err);
  548. });
  549. }
  550. },
  551. beforeCreate() {}, //生命周期 - 创建之前
  552. //生命周期 - 创建完成(可以访问当前this实例)
  553. created() {},
  554. beforeMount() {}, //生命周期 - 挂载之前
  555. //生命周期 - 挂载完成(可以访问DOM元素)
  556. mounted() {
  557. // this.menuActiveId = localStorage.getItem("menuActiveId");
  558. this.getuserinfo();
  559. // console.log(this.$route.path)
  560. if (
  561. this.$route.path == '/Index/facilitydistribute' ||
  562. this.$route.path == '/Index/pestdistribute'
  563. ) {
  564. // console.log("触发")
  565. this.menunone();
  566. }
  567. this.getwarnnum();
  568. // this.menunone()
  569. },
  570. beforeUpdate() {}, //生命周期 - 更新之前
  571. updated() {}, //生命周期 - 更新之后
  572. beforeDestroy() {}, //生命周期 - 销毁之前
  573. destroyed() {}, //生命周期 - 销毁完成
  574. activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
  575. };
  576. </script>
  577. <style lang="less" scoped>
  578. p {
  579. margin: 0;
  580. }
  581. .indexbox {
  582. // display: flex;
  583. }
  584. .index_out_info {
  585. position: relative;
  586. margin-right: 15px;
  587. i {
  588. font-size: 18px;
  589. }
  590. .dian {
  591. width: 8px;
  592. height: 8px;
  593. border-radius: 8px;
  594. background-color: rgb(249, 63, 61);
  595. position: absolute;
  596. top: 20px;
  597. right: 0;
  598. }
  599. }
  600. .menubox {
  601. width: 100%;
  602. display: flex;
  603. height: 62px;
  604. line-height: 62px;
  605. justify-content: space-between;
  606. padding: 0 15px;
  607. box-sizing: border-box;
  608. background-color: #fff;
  609. box-shadow: 0 2px 3px -1px rgb(224, 219, 219); //底部阴影
  610. .index_title {
  611. display: flex;
  612. .menubox_logo_img {
  613. width: 40px;
  614. height: 40px;
  615. margin: 11px;
  616. }
  617. p {
  618. font-size: 18px;
  619. font-weight: 700;
  620. }
  621. }
  622. }
  623. .contentbox {
  624. // width: calc(100% - 240px);
  625. display: flex;
  626. .menubox_item {
  627. background-color: #0d3756;
  628. // overflow-x: visible;
  629. // width: 226px;
  630. // display: none;
  631. position: relative;
  632. transition: width 1s ease;
  633. .elmenubox {
  634. width: 100%;
  635. overflow-y: auto;
  636. height: calc(100vh - 62px);
  637. }
  638. .operationbox {
  639. width: 16px;
  640. height: 128px;
  641. position: absolute;
  642. top: 50%;
  643. margin-top: -64px;
  644. z-index: 1999;
  645. transition: all 1s ease;
  646. }
  647. /deep/.el-menu {
  648. border: 0;
  649. }
  650. /deep/.el-menu-vertical-demo {
  651. width: 220px;
  652. }
  653. /deep/.el-submenu__title {
  654. text-align: left;
  655. // padding-left: 67px !important;
  656. }
  657. /deep/.el-menu--inline {
  658. .el-submenu__title {
  659. text-align: left;
  660. padding-left: 67px !important;
  661. }
  662. .el-menu-item {
  663. padding-left: 80px !important;
  664. }
  665. }
  666. /deep/.el-submenu__title:hover {
  667. color: rgb(64, 158, 255) !important;
  668. background-color: rgba(0, 0, 0, 0.3) !important;
  669. }
  670. /deep/.is-opened > .el-submenu__title {
  671. background-color: rgba(0, 0, 0, 0.3) !important;
  672. }
  673. /deep/.is-active {
  674. background-color: rgba(0, 0, 0, 0.3) !important;
  675. }
  676. /deep/.el-menu-item {
  677. text-align: left;
  678. // background-color: rgba(0, 0, 0, 0.3) !important;
  679. }
  680. /deep/.el-menu-item:hover {
  681. color: rgb(64, 158, 255) !important;
  682. }
  683. /deep/.el-menu--inline > .el-menu-item2 {
  684. padding-left: 67px !important;
  685. background-color: transparent !important;
  686. }
  687. /deep/.el-menu-item-group__title {
  688. display: none;
  689. }
  690. /deep/.el-icon-arrow-down:before {
  691. content: '\E6DF';
  692. color: #fff;
  693. font-size: 16px;
  694. }
  695. .firstmenu {
  696. text-align: left;
  697. padding-left: 20px !important;
  698. }
  699. }
  700. /*滚动条样式*/
  701. ::-webkit-scrollbar {
  702. width: 6px;
  703. // margin-left: -1px;
  704. /*height: 4px;*/
  705. }
  706. ::-webkit-scrollbar-thumb {
  707. border-radius: 10px;
  708. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
  709. background: rgba(0, 0, 0, 0.1);
  710. }
  711. ::-webkit-scrollbar-track {
  712. border-radius: 10px;
  713. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
  714. // border-radius: 0;
  715. background: rgba(0, 0, 0, 0.1);
  716. }
  717. .contentbox_right {
  718. // width: calc(100% - 226px);
  719. // width: 100%;
  720. margin: 10px auto 0;
  721. transition: width 1s ease;
  722. .contentbox_crumbs {
  723. width: 98%;
  724. margin: 0;
  725. /deep/.el-breadcrumb {
  726. margin: 0 0 0 20px;
  727. padding: 0 !important;
  728. background-color: transparent !important;
  729. font-size: 14px !important;
  730. }
  731. }
  732. .contentbox_box {
  733. width: 98%;
  734. height: calc(100vh - 100px);
  735. // background-color: chartreuse;
  736. margin: 15px auto 0;
  737. overflow-y: auto;
  738. }
  739. }
  740. }
  741. /deep/.qrcode {
  742. img {
  743. margin: 0 auto;
  744. }
  745. }
  746. </style>