index.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
  1. <!--
  2. * @Author: daidai
  3. * @Date: 2022-03-04 09:23:59
  4. * @LastEditors: Please set LastEditors
  5. * @LastEditTime: 2022-05-07 11:05:02
  6. * @FilePath: \web-pc\src\pages\big-screen\view\indexs\index.vue
  7. -->
  8. <template>
  9. <div class="bg" id="index">
  10. <div class="host-body">
  11. <div class="d-flex jc-center title_wrap">
  12. <!-- <div class="titlebgc"></div> -->
  13. <div class="zuojuxing"></div>
  14. <div class="youjuxing"></div>
  15. <div class="guang"></div>
  16. <div class="d-flex jc-center">
  17. <div class="title">
  18. <span class="title-text">招粮云仓大数据分析平台</span>
  19. </div>
  20. </div>
  21. <div class="btn">
  22. <div :class="btnIndex==1?'activeBtn':''" @click="selectData(1)" class="btn-style">新季</div>
  23. <div :class="btnIndex==2?'activeBtn':''" @click="selectData(2)" class="btn-style">历史</div>
  24. </div>
  25. <div class="timers">
  26. {{ dateYear }} {{ dateWeek }} {{ dateDay }}
  27. <i class=" blq-icon-shezhi02" style="margin-left:10px" @click="showSetting"></i>
  28. </div>
  29. </div>
  30. </div>
  31. <div class="contents ">
  32. <div class="contetn_left">
  33. <!-- <div class="pagetab">
  34. <div class="item">实时监测</div>
  35. </div> -->
  36. <div @click="routergo(1)">
  37. <ItemWrap class="contetn_left-top contetn_lr-item" title="在途信息统计">
  38. <LeftTop :listData="leftTopDataList"/>
  39. </ItemWrap>
  40. </div>
  41. <div @click="routergo(2)">
  42. <ItemWrap class="contetn_left-center contetn_lr-item" title="合营比例">
  43. <LeftCenter :hylistData="leftCenterDataList"/>
  44. </ItemWrap>
  45. </div>
  46. <div @click="routergo(3)">
  47. <ItemWrap class="contetn_left-bottom contetn_lr-item" title="车辆信息" style="padding: 0 10px 16px 10px">
  48. <LeftBottom :ztxxlistData="leftBottomDataList"/>
  49. </ItemWrap>
  50. </div>
  51. </div>
  52. <div class="contetn_center">
  53. <div class="maptitle">
  54. <div class="zuo"></div>
  55. <span class="titletext">库点流向分布</span>
  56. <div class="you"></div>
  57. </div>
  58. <dv-border-box-13>
  59. <div id="china-map"></div>
  60. </dv-border-box-13>
  61. <dv-border-box-1 class="center_bottom">
  62. <div @click="routergo(2)" class="center_bottom_content">
  63. <div class="item">
  64. <div class="title">头寸</div>
  65. <div class="number">*****吨</div>
  66. <!-- <div class="number">{{centerBottomDataList[0]}}吨</div> -->
  67. </div>
  68. <div class="item">
  69. <div class="title">实际库存</div>
  70. <div class="number">*****吨</div>
  71. <!-- <div class="number">{{centerBottomDataList[1]}}吨</div> -->
  72. </div>
  73. <div class="item">
  74. <div class="title">采购待执行</div>
  75. <div class="number">*****吨</div>
  76. <!-- <div class="number">{{centerBottomDataList[2]}}吨</div> -->
  77. </div>
  78. <div class="item">
  79. <div class="title">销售待执行</div>
  80. <div class="number">*****吨</div>
  81. <!-- <div class="number">{{centerBottomDataList[3]}}吨</div> -->
  82. </div>
  83. <!-- <div class="row1">
  84. <div class="item_title">
  85. <span class="title-inner"> 头寸</span>
  86. </div>
  87. <div>123123吨</div>
  88. </div>
  89. <div class="row2 ">
  90. <div class="item_title">
  91. <span class="title-inner"> 实际库存</span>
  92. <div>123123吨</div>
  93. </div>
  94. <div class="item_title">
  95. <div class="title-inner">采购待执行(吨)</div>
  96. <div>123123吨</div>
  97. </div>
  98. <div class="item_title">
  99. <div class="title-inner">销售待执行(吨)</div>
  100. <div>123123吨</div>
  101. </div>
  102. </div> -->
  103. </div>
  104. </dv-border-box-1>
  105. <!-- <CenterMap class="contetn_center_top" /> -->
  106. <!-- <ItemWrap class="contetn_center-bottom" title="安装计划">
  107. <CenterBottom />
  108. </ItemWrap> -->
  109. </div>
  110. <div class="contetn_right">
  111. <div @click="routergo(2)">
  112. <ItemWrap class="contetn_left-bottom contetn_lr-item" title="出入库分布">
  113. <RightTop :crklistData="rightTopDataObj"/>
  114. </ItemWrap>
  115. </div>
  116. <div @click="routergo(2)">
  117. <ItemWrap class="contetn_left-bottom contetn_lr-item" title="库存排名" style="padding: 0 10px 16px 10px">
  118. <RightCenter :phklistData="rightCenterDataList"/>
  119. </ItemWrap>
  120. </div>
  121. <ItemWrap class="contetn_left-bottom contetn_lr-item" title="最新合同 ">
  122. <RightBottom :htlistData="rightBottomDataList"/>
  123. </ItemWrap>
  124. </div>
  125. </div>
  126. </div>
  127. </template>
  128. <script>
  129. import {
  130. gChartsData,
  131. } from '@/model/home/index'
  132. import { formatTime } from '../../utils/index.js';
  133. import LeftTop from './left-top.vue'
  134. import LeftCenter from './left-center.vue';
  135. import LeftBottom from './left-bottom.vue';
  136. import RightTop from './right-top.vue';
  137. import RightCenter from './right-center.vue';
  138. import RightBottom from './right-bottom.vue';
  139. // import CenterMap from "./center-map.vue";
  140. export default {
  141. components: {
  142. LeftTop,
  143. LeftCenter,
  144. LeftBottom,
  145. // CenterMap,
  146. RightTop,
  147. RightCenter,
  148. RightBottom
  149. },
  150. data() {
  151. return {
  152. dataListTimer:null,
  153. btnIndex:1,
  154. MapList:[],
  155. rightBottomDataList:[],
  156. rightCenterDataList:[],
  157. centerBottomDataList:[],
  158. leftBottomDataList:[],
  159. leftTopDataList:[],
  160. leftCenterDataList:[],
  161. rightTopDataObj:{},
  162. timing: null,
  163. loading: true,
  164. dateDay: null,
  165. dateYear: null,
  166. dateWeek: null,
  167. weekday: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
  168. };
  169. },
  170. filters: {
  171. numsFilter(msg) {
  172. return msg || 0;
  173. },
  174. },
  175. created() {
  176. },
  177. mounted() {
  178. this.timeFn();
  179. this.selectData(1)
  180. this.dataListTimer = setInterval(() => {
  181. this.selectData(1)
  182. }, 10*60000);
  183. },
  184. beforeDestroy() {
  185. clearInterval(this.timing);
  186. clearInterval(this.dataListTimer);
  187. },
  188. methods: {
  189. routergo(status){
  190. if(status==1){
  191. this.$router.push({name:'autoSettlementList',query:{status:true}})
  192. }else if(status==2){
  193. this.$router.push({name:'warehouseManagementList'})
  194. }else if(status==3){
  195. this.$router.push({name:'autoSettlementList'})
  196. }
  197. },
  198. selectData(type){
  199. let _seachMoth = ''
  200. this.btnIndex = type
  201. if(type==2){
  202. _seachMoth = '2021-10-10'
  203. }else{
  204. _seachMoth = '2022-10-10'
  205. }
  206. gChartsData({
  207. compId: localStorage.getItem('ws-pf_compId'),
  208. loadingstatus: 1,
  209. seachMoth: _seachMoth
  210. }).toPromise().then(res => {
  211. console.log('··············', res)
  212. this.leftTopDataList = res[0].biViewInfoList
  213. this.leftCenterDataList = res[6].biViewInfoList
  214. this.leftBottomDataList = res[9].tranCarInfos
  215. let _n = res[1].biViewInfoList
  216. this.centerBottomDataList.push((Number(_n[0].count)+Number(_n[1].count)-Number(_n[2].count)).toFixed(0))
  217. this.centerBottomDataList.push(Number(_n[0].count).toFixed(0))
  218. this.centerBottomDataList.push(Number(_n[1].count).toFixed(0))
  219. this.centerBottomDataList.push(Number(_n[2].count).toFixed(0))
  220. this.rightTopDataObj = {
  221. 'ck':res[4].biViewInfoList,
  222. 'rk':res[5].biViewInfoList,
  223. }
  224. this.rightCenterDataList = res[7].biViewInfoList
  225. this.rightBottomDataList = res[8].contractManagementInfos
  226. this.MapList = res[3].biViewInfoList
  227. this.cancelLoading();
  228. this.china_map();
  229. })
  230. },
  231. //中国地图
  232. china_map() {
  233. let mapChart = this.$echarts.init(document.getElementById('china-map')); //图表初始化,china-map是绑定的元素
  234. window.onresize = mapChart.resize; //如果容器变大小,自适应从新构图
  235. let series = []; //存放循环配置项
  236. let res = []; //存放射线的起始点和结束点位置
  237. let province = []; //存放有射线的省的名字,以此来拿到对应省份的坐标
  238. //提前存好的所有省份坐标,用于后面根据名字拿到对应的左边
  239. let chinaGeoCoordMap = {
  240. 新疆: [86.9023, 41.148],
  241. 西藏: [87.8695, 31.6846],
  242. 内蒙古: [110.5977, 41.3408],
  243. 青海: [95.2402, 35.4199],
  244. 四川: [102.9199, 30.1904],
  245. 黑龙江: [128.1445, 46.7156],
  246. 甘肃: [102.7129, 38.166],
  247. 云南: [101.0652, 24.6807],
  248. 广西: [108.7813, 23.6426],
  249. 湖南: [111.5332, 27.3779],
  250. 陕西: [108.5996, 33.7396],
  251. 广东: [113.8668, 22.8076],
  252. 吉林: [126.1746, 43.5938],
  253. 河北: [115.4004, 38.1688],
  254. 湖北: [112.2363, 30.8572],
  255. 贵州: [106.6113, 26.6385],
  256. 山东: [118.2402, 36.2307],
  257. 江西: [115.7156, 27.99],
  258. 河南: [113.0668, 33.8818],
  259. 辽宁: [123.0438, 41.0889],
  260. 山西: [112.4121, 36.6611],
  261. 安徽: [117.2461, 31.0361],
  262. 福建: [118.3008, 25.9277],
  263. 浙江: [120.498, 29.0918],
  264. 江苏: [119.8586, 32.915],
  265. 重庆: [107.7539, 29.8904],
  266. 宁夏: [105.9961, 37.1096],
  267. 海南: [109.9512, 19.2041],
  268. 台湾: [120.8254, 23.5986],
  269. 北京: [116.4551, 40.2539],
  270. 天津: [117.4219, 39.4189],
  271. 上海: [121.4648, 31.2891],
  272. 香港: [114.6178, 22.3242],
  273. 澳门: [113.5547, 21.6484],
  274. };
  275. let lineData = []
  276. for(let i = 0;i<this.MapList.length;i++){
  277. if(this.MapList[i].startPlace&&this.MapList[i].endPlace){
  278. let _w = Number(this.MapList[i].startPlace.split(',')[0])
  279. let _j = Number(this.MapList[i].startPlace.split(',')[1])
  280. let _ew = Number(this.MapList[i].endPlace.split(',')[0])
  281. let _ej = Number(this.MapList[i].endPlace.split(',')[1])
  282. let _obj = {
  283. val: this.MapList[i].name, //数据
  284. blat: [_j, _w], //发射点
  285. elon: [_ej, _ew], //接收点
  286. }
  287. lineData.push(_obj)
  288. }
  289. }
  290. for(let k = 0; k < lineData.length; k++) {
  291. // province.push(lineData[i].bcitysim); //存进去每个省的名字
  292. // province.push(lineData[i].ecitysim); //存进去每个省的名字
  293. res.push({
  294. fromName: lineData[k].name, //发射的省名,保存用于弹框显示
  295. toName: lineData[k].name, //接收的省名,保存用于弹框显示
  296. coords: [
  297. lineData[k].blat, //发射
  298. lineData[k].elon, //接收
  299. ],
  300. count: lineData[k].val, //数据
  301. });
  302. }
  303. let index_data = new Set(province); //把省的名字去重
  304. let data_res = []; //定义一个新的变量存放省的坐标
  305. //注意这里一定要用name和value的形式。不是这个格式的散点图显示不出来
  306. index_data.forEach((item) => {
  307. data_res.push({
  308. name: item, //每个省的名字
  309. value: chinaGeoCoordMap[item], //每个省的坐标
  310. });
  311. });
  312. //循环往series内添加配置项
  313. series.push(
  314. {
  315. //射线效果图层
  316. type: 'lines', //类型:射线
  317. zlevel: 1, //类似图层效果
  318. effect: {
  319. show: true, //是否显示图标
  320. symbol: 'arrow', //箭头图标
  321. symbolSize: 5, //图标大小
  322. trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重
  323. },
  324. label: {
  325. show: true,
  326. },
  327. lineStyle: {
  328. color: '#fff',
  329. normal: {
  330. color: '#00A0FF',
  331. width: 1, //尾迹线条宽度
  332. opacity: 0.5, //尾迹线条透明度
  333. curveness: 0.1, //尾迹线条曲直度
  334. },
  335. },
  336. //提示框信息
  337. tooltip: {
  338. formatter: function (param) {
  339. return (
  340. param.data.fromName +
  341. '>' +
  342. param.data.toName +
  343. '<br>数量:' +
  344. param.data.count
  345. );
  346. },
  347. },
  348. data: res, //拿到射线的起始点和结束点
  349. },
  350. //散点图
  351. // {
  352. // type: "effectScatter",//散点图
  353. // coordinateSystem: "geo",//这个不能删,删了不显示
  354. // zlevel: 1,
  355. // rippleEffect: {
  356. // //涟漪特效
  357. // period: 4, //动画时间,值越小速度越快
  358. // brushType: "stroke", //波纹绘制方式 stroke, fill
  359. // scale: 4, //波纹圆环最大限制,值越大波纹越大
  360. // },
  361. // //设置文字部分
  362. // label: {
  363. // normal: {
  364. // show: true, //省份名显示隐藏
  365. // position: "right", //省份名显示位置
  366. // offset: [5, 0], //省份名偏移设置
  367. // formatter: function (params) {
  368. // //圆环显示省份名
  369. // return params.name; //这个名字是根据data中的name来显示的
  370. // },
  371. // fontSize: 12,//文字大小
  372. // },
  373. // emphasis: {
  374. // show: true,
  375. // },
  376. // },
  377. // symbol: "circle",//散点图
  378. // symbolSize: 5,//散点大小
  379. // itemStyle: {//散点样式
  380. // normal: {
  381. // show: true,
  382. // color: "#fff",
  383. // },
  384. // },
  385. // data: data_res, //处理好后的散点图坐标数组
  386. // },
  387. //点击高亮
  388. {
  389. type: 'map',
  390. mapType: 'china',
  391. zlevel: 1,
  392. roam: true,
  393. geoIndex: 0,
  394. tooltip: {
  395. show: true,
  396. },
  397. itemStyle: {
  398. areaColor: '#00196d',
  399. borderColor: '#0a53e9',
  400. },
  401. emphasis: {
  402. show: true,
  403. label: {
  404. normal: {
  405. show: true, // 是否显示对应地名
  406. textStyle: {
  407. color: '#fff',
  408. },
  409. },
  410. },
  411. itemStyle: {
  412. areaColor: '#00196d',
  413. borderColor: '#0a53e9',
  414. },
  415. },
  416. }
  417. );
  418. //配置
  419. let option = {
  420. //title可要可不要
  421. // title: {
  422. // text: "查查的地图",
  423. // textStyle: {
  424. // color: "#ffffff",
  425. // },
  426. // },
  427. legend: {
  428. show: true,
  429. selected: {},
  430. x: 'left',
  431. orient: 'vertical',
  432. textStyle: {
  433. color: 'white',
  434. },
  435. data: [],
  436. },
  437. //鼠标移上去的弹框
  438. tooltip: {
  439. trigger: 'item',
  440. show: true,
  441. },
  442. //geo:这是重点
  443. geo: {
  444. map: 'china', //中国地图
  445. zoom: 1.2, //缩放倍数
  446. roam: false, //是否允许缩放和拖拽地图
  447. label: {
  448. normal: {
  449. show: true, // 是否显示省份名字,现在是隐藏的状态,因为和散点图的名字重叠了。如果需要就true
  450. textStyle: {
  451. //名字的样式
  452. color: '#fff',
  453. },
  454. },
  455. emphasis: {
  456. show: true,
  457. },
  458. },
  459. //地图样式
  460. itemStyle: {
  461. normal: {
  462. borderColor: '#293171', //地图边框颜色
  463. borderWidth: '2', //地图边框粗细
  464. areaColor: '#0A0F33', //地图背景色
  465. },
  466. //省份地图阴影
  467. emphasis: {
  468. areaColor: null,
  469. shadowOffsetX: 0,
  470. shadowOffsetY: 0,
  471. shadowBlur: 20,
  472. borderWidth: 0,
  473. shadowColor: '#fff',
  474. },
  475. },
  476. },
  477. series: series, //图表配置
  478. };
  479. mapChart.setOption(option); //生成图表
  480. },
  481. showSetting() {
  482. this.$refs.setting.init()
  483. },
  484. timeFn() {
  485. this.timing = setInterval(() => {
  486. this.dateDay = formatTime(new Date(), 'HH: mm: ss');
  487. this.dateYear = formatTime(new Date(), 'yyyy-MM-dd');
  488. this.dateWeek = this.weekday[new Date().getDay()];
  489. }, 1000);
  490. },
  491. cancelLoading() {
  492. setTimeout(() => {
  493. this.loading = false;
  494. }, 500);
  495. },
  496. },
  497. };
  498. </script>
  499. <style lang="scss" scoped>
  500. // &.pageisScale {
  501. // position: absolute;
  502. // top: 50%;
  503. // left: 50%;
  504. // transform: translate(-50%, -50%);
  505. // transform-origin: left top;
  506. // }
  507. .winseaview-view {
  508. background: #03050C
  509. }
  510. .bg {
  511. width: 100%;
  512. height: 100%;
  513. padding: 16px 16px 10px 16px;
  514. box-sizing: border-box;
  515. background-image: url("../../assets/images/pageBg.png");
  516. background-size: cover;
  517. background-position: center center;
  518. }
  519. .host-body {
  520. .title_wrap {
  521. height: 60px;
  522. background-image: url("../../assets/images/top.png");
  523. background-size: cover;
  524. background-position: center center;
  525. position: relative;
  526. margin-bottom: 4px;
  527. .guang {
  528. position: absolute;
  529. bottom:0px;
  530. background: url("../../assets/images/guang.gif") no-repeat center;
  531. background-position: cover;
  532. height: 1px;
  533. left: 0;
  534. right: 0;
  535. margin: auto;
  536. width:40%
  537. }
  538. .zuojuxing,
  539. .youjuxing {
  540. position: absolute;
  541. top: -2px;
  542. width: 140px;
  543. height: 6px;
  544. background: url("../../assets/images/headers/juxing1.png");
  545. }
  546. .titlebgc{
  547. background: url("../../assets//top.gif") no-repeat center;
  548. background-size: cover;
  549. }
  550. .zuojuxing {
  551. left: 11%;
  552. }
  553. .youjuxing {
  554. right: 11%;
  555. transform: rotate(180deg);
  556. }
  557. .timers {
  558. position: absolute;
  559. right: 0;
  560. top: 30px;
  561. font-size: 18px;
  562. display: flex;
  563. align-items: center;
  564. color:#fff;
  565. .blq-icon-shezhi02 {
  566. cursor: pointer;
  567. }
  568. }
  569. .btn{
  570. position: absolute;
  571. left: 0;
  572. top: 30px;
  573. font-size: 18px;
  574. display: flex;
  575. align-items: center;
  576. color:#fff;
  577. }
  578. }
  579. .title {
  580. position: relative;
  581. // width: 500px;
  582. text-align: center;
  583. background-size: cover;
  584. color: transparent;
  585. height: 60px;
  586. line-height: 46px;
  587. .title-text {
  588. font-size: 38px;
  589. font-weight: 900;
  590. letter-spacing: 6px;
  591. width: 100%;
  592. background: linear-gradient(92deg, #0072FF 0%, #00EAFF 48.8525390625%, #01AAFF 100%);
  593. -webkit-background-clip: text;
  594. -webkit-text-fill-color: transparent;
  595. }
  596. }
  597. }
  598. .index_home {
  599. .pagetab {
  600. position: absolute;
  601. top: -35px;
  602. display: flex;
  603. .item {
  604. width: 130px;
  605. height: 36px;
  606. border-radius: 18px 0px 0px 18px;
  607. color: #00FBF8;
  608. text-indent: 26px;
  609. line-height: 36px;
  610. font-size: 16px;
  611. margin-right: 20px;
  612. background: linear-gradient(to right, rgba(76, 245, 255, .5), rgba(76, 245, 255, 0));
  613. }
  614. }
  615. }
  616. .setting {
  617. position: fixed;
  618. width: 100%;
  619. height: 100%;
  620. z-index: 999;
  621. top: 0;
  622. left: 0;
  623. .left_shu {
  624. color: #000;
  625. font-weight: 900;
  626. position: relative;
  627. text-indent: 10px;
  628. padding: 16px 0 10px 0;
  629. &::before {
  630. display: block;
  631. content: " ";
  632. height: 16px;
  633. width: 4px;
  634. border-radius: 2px;
  635. background: #0072FF;
  636. position: absolute;
  637. left: 0px;
  638. }
  639. }
  640. .setting_dislog {
  641. background-color: rgba($color: #000000, $alpha: .5);
  642. position: absolute;
  643. width: 100%;
  644. height: 100%;
  645. z-index: 0;
  646. right: 0;
  647. top: 0;
  648. }
  649. .setting_inner {
  650. box-sizing: border-box;
  651. background: #FFF;
  652. width: 340px;
  653. height: 100%;
  654. position: absolute;
  655. right: 0px;
  656. top: 0;
  657. z-index: 1;
  658. color: #000000;
  659. box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12);
  660. .setting_header {
  661. font-size: 20px;
  662. color: rgb(0, 0, 0);
  663. font-weight: 900;
  664. text-align: center;
  665. line-height: 40px;
  666. }
  667. .setting_body {
  668. padding: 0px 16px;
  669. box-sizing: border-box;
  670. position: relative;
  671. }
  672. .setting_item {
  673. font-size: 14px;
  674. line-height: 1.5;
  675. // display: flex;
  676. .setting_label {
  677. color: #555454;
  678. }
  679. .setting_label_tip {
  680. font-size: 12px;
  681. color: #838282;
  682. }
  683. }
  684. }
  685. .setting_inner {
  686. animation: rtl-drawer-out .3s;
  687. }
  688. }
  689. .settingShow {
  690. .setting_inner {
  691. animation: rtl-drawer-in .3s 1ms;
  692. }
  693. }
  694. .yh-setting-fade-enter-active {
  695. animation: yh-setting-fade-in .3s;
  696. }
  697. .yh-setting-fade-leave-active {
  698. animation: yh-setting-fade-out .3s;
  699. }
  700. @keyframes yh-setting-fade-in {
  701. 0% {
  702. opacity: 0;
  703. }
  704. 100% {
  705. opacity: 1;
  706. }
  707. }
  708. @keyframes yh-setting-fade-out {
  709. 0% {
  710. opacity: 1;
  711. }
  712. 100% {
  713. opacity: 0;
  714. }
  715. }
  716. @keyframes rtl-drawer-in {
  717. 0% {
  718. transform: translate(100%, 0)
  719. }
  720. 100% {
  721. -webkit-transform: translate(0, 0);
  722. transform: translate(0, 0)
  723. }
  724. }
  725. @keyframes rtl-drawer-out {
  726. 0% {
  727. transform: translate(0, 0)
  728. }
  729. 100% {
  730. transform: translate(100%, 0)
  731. }
  732. }
  733. // 内容
  734. .contents {
  735. width: 100%;
  736. display: flex;
  737. min-height: calc(100% - 60px);
  738. justify-content: space-between;
  739. .contetn_left,
  740. .contetn_right {
  741. width: 540px;
  742. box-sizing: border-box;
  743. // padding: 16px 0;
  744. }
  745. .contetn_center {
  746. width: 720px;
  747. }
  748. //左右两侧 三个块
  749. .contetn_lr-item {
  750. height: 270px;
  751. }
  752. .contetn_center_top {
  753. width: 100%;
  754. }
  755. // 中间
  756. .contetn_center {
  757. display: flex;
  758. flex-direction: column;
  759. justify-content: space-around;
  760. }
  761. .contetn_center-bottom {
  762. height: 315px;
  763. }
  764. //左边 右边 结构一样
  765. .contetn_left,
  766. .contetn_right {
  767. display: flex;
  768. flex-direction: column;
  769. justify-content: space-around;
  770. position: relative;
  771. }
  772. }
  773. @keyframes rotating {
  774. 0% {
  775. -webkit-transform: rotate(0) scale(1);
  776. transform: rotate(0) scale(1);
  777. }
  778. 50% {
  779. -webkit-transform: rotate(180deg) scale(1.1);
  780. transform: rotate(180deg) scale(1.1);
  781. }
  782. 100% {
  783. -webkit-transform: rotate(360deg) scale(1);
  784. transform: rotate(360deg) scale(1);
  785. }
  786. }
  787. #china-map {
  788. height: 540px;
  789. // height: 740px;
  790. width: 100%;
  791. top: 0;
  792. }
  793. .maptitle {
  794. height: 60px;
  795. display: flex;
  796. justify-content: center;
  797. padding-top: 10px;
  798. box-sizing: border-box;
  799. .titletext {
  800. font-size: 28px;
  801. font-weight: 900;
  802. letter-spacing: 6px;
  803. background: linear-gradient(92deg,
  804. #0072ff 0%,
  805. #00eaff 48.8525390625%,
  806. #01aaff 100%);
  807. -webkit-background-clip: text;
  808. -webkit-text-fill-color: transparent;
  809. margin: 0 10px;
  810. }
  811. .zuo,
  812. .you {
  813. background-size: 100% 100%;
  814. width: 29px;
  815. height: 20px;
  816. margin-top: 8px;
  817. }
  818. .zuo {
  819. background: url("../../assets/images/xiezuo.png") no-repeat;
  820. }
  821. .you {
  822. background: url("../../assets/images/xieyou.png") no-repeat;
  823. }
  824. }
  825. .center_bottom {
  826. color: #fff;
  827. // font-size: 30px;
  828. margin-top:50px;
  829. }
  830. .center_bottom_content {
  831. padding: 20px;
  832. height: 100%;
  833. box-sizing: border-box;
  834. display:flex;
  835. justify-content: space-between;
  836. align-items: center;
  837. margin-bottom:50px;
  838. box-sizing:border-box;
  839. .item{
  840. .title{
  841. background: url("../../assets/index-1.png") no-repeat;
  842. background-size: 100% 100%;
  843. width: 140px;
  844. height: 44px;
  845. display: flex;
  846. justify-content: center;
  847. align-items:center
  848. }
  849. .number{
  850. background: url("../../assets/index-2.png") no-repeat;
  851. background-size: 100% 100%;
  852. width: 152px;
  853. height: 72px;
  854. margin-top:10px;
  855. display: flex;
  856. justify-content: center;
  857. align-items:center;
  858. font-size: 26px;
  859. color:#66FFFF;
  860. }
  861. }
  862. }
  863. .item_title {
  864. display: flex;
  865. align-items: center;
  866. }
  867. .zuo,
  868. .you {
  869. width: 58px;
  870. height: 14px;
  871. background-image: url("../../assets/images/titles/zuo.png");
  872. }
  873. .you {
  874. transform: rotate(180deg);
  875. }
  876. .title-inner {
  877. font-weight: 900;
  878. letter-spacing: 2px;
  879. background: linear-gradient(92deg,
  880. #0072ff 0%,
  881. #00eaff 48.8525390625%,
  882. #01aaff 100%);
  883. -webkit-background-clip: text;
  884. -webkit-text-fill-color: transparent;
  885. }
  886. .row1 {
  887. display: flex
  888. }
  889. .btn-style{
  890. // width: 70px;
  891. // height: 28px;
  892. background: rgba(47,108,233,0.2);
  893. border-radius: 4px;
  894. border: 1px solid rgba(0,220,255,0.2);
  895. padding: 5px 20px;
  896. box-sizing: border-box;
  897. font-size: 16px;
  898. margin-right: 10px;
  899. cursor:pointer
  900. }
  901. .activeBtn{
  902. color:#06DBF1
  903. }
  904. </style>