Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <template>
  2. <view class="charts-box">
  3. <qiun
  4. type="map"
  5. :chartData="state.chartData"
  6. :opts="state.opts"
  7. :canvas2d="true"
  8. canvasId="pVNxVgTQDlKlgMCPbMtJrifnZlluhrNf"
  9. />
  10. </view>
  11. <view class="describe">
  12. <view>
  13. <view class="all">您共到访过<text class="num">{{state.mapArr.length}}</text>个城市</view>
  14. <view>您的足迹已踏遍{{state.mileages}}的国土超过了{{state.ranking}}%的九州ETC用户</view>
  15. </view>
  16. <image class="car" src="../../../static/image/home-on.png" mode="aspectFit"></image>
  17. </view>
  18. </template>
  19. <script lang="ts" setup>
  20. import { reactive } from "vue";
  21. import {request} from "@/utils/network/request.js";
  22. import {stringToJson} from "@/utils/network/encryption.js";
  23. import { onLoad,onMounted} from "@dcloudio/uni-app";
  24. import mapChina from "@/datas/mapChina.json";
  25. import {mapData,mapColor} from "@/datas/mapData.js";
  26. import qiun from "./qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue";
  27. const state = reactive({
  28. mapArr:[],//后端传过来的省
  29. lastData:[],
  30. chartData: {},
  31. opts: { //["贵州省","海南省"] #EE6666
  32. color: ["#1890FF","#1890FF","#1890FF","#1890FF","#1890FF",
  33. "#1890FF","#1890FF","#1890FF","#1890FF","#1890FF",
  34. "#1890FF","#1890FF","#1890FF","#1890FF","#1890FF",
  35. "#1890FF","#1890FF","#1890FF","#1890FF","#1890FF",
  36. "#1890FF","#1890FF","#1890FF","#1890FF","#1890FF",
  37. "#1890FF","#1890FF","#1890FF","#1890FF","#1890FF",
  38. "#1890FF","#1890FF","#1890FF","#1890FF","#1890FF"],
  39. padding: [0,0,0,0],
  40. dataLabel: true,
  41. fontSize:9,
  42. enableScroll: false,
  43. extra: {
  44. map: {
  45. active:false,
  46. border: true,
  47. borderWidth: 1,
  48. borderColor: "#666666",
  49. fillOpacity: 0.6,
  50. activeBorderColor: "#F04864",
  51. activeFillColor: "#FACC14",
  52. activeFillOpacity: 1
  53. }
  54. }
  55. }
  56. })
  57. onLoad((option : any) => {
  58. getServerData();
  59. state.mapArr=option.data.split(",");
  60. state.mileages=option.mileages;
  61. state.ranking=option.ranking;
  62. console.log("option",option.data.split(","))
  63. dealData();
  64. })
  65. const getServerData=()=>{
  66. console.log("111")
  67. //模拟从服务器获取数据时的延时
  68. setTimeout(() => {
  69. //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
  70. let res = {series:mapChina.features};
  71. console.log("111")
  72. state.chartData = JSON.parse(JSON.stringify(res));
  73. console.log("state.chartData",state.chartData)
  74. }, 500);
  75. }
  76. const dealData=()=>{
  77. for(var i=0;i<state.mapArr.length;i++){
  78. console.log(mapColor[mapData[state.mapArr[i]]])
  79. state.lastData.push(mapColor[mapData[state.mapArr[i]]])
  80. }
  81. console.log("lastData",state.lastData)
  82. changeColor();
  83. }
  84. const changeColor=()=>{
  85. for(var i=0;i<state.lastData.length;i++){
  86. state.opts.color[state.lastData[i]]="#EE6666"
  87. }
  88. console.log("state.opts.color",state.opts.color)
  89. }
  90. </script>
  91. <style scoped>
  92. .charts-box {
  93. width: 100%;
  94. height: 300px;
  95. }
  96. .describe{
  97. display: flex;
  98. width: 90%;
  99. margin: 20rpx auto;
  100. padding: 30rpx 30rpx 60rpx 30rpx;
  101. box-sizing: border-box;
  102. background-color: #f6f6f6;
  103. border-radius: 20rpx;
  104. font-size: 30rpx;
  105. }
  106. .describe>view{
  107. flex: 5;
  108. }
  109. .describe>image{
  110. flex: 3;
  111. }
  112. .car{
  113. width: 150rpx;
  114. height: 150rpx;
  115. display: inline-block;
  116. }
  117. .all{
  118. font-size: 36rpx;
  119. margin-bottom: 20rpx;
  120. margin-left: 20rpx;
  121. }
  122. .num{
  123. font-size: 38rpx;
  124. font-weight: bold;
  125. }
  126. </style>