index.vue 23 KB

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