index.vue 23 KB

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