chart_statistics.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. <template>
  2. <view>
  3. <view class="section">
  4. <view class="title">统计图</view>
  5. <view class="box">
  6. <view class="charts-box">
  7. <qiun-data-charts type="ring" :opts="ring_1" :chartData="chartData" tooltipFormat="column_1"
  8. background="none" />
  9. </view>
  10. </view>
  11. </view>
  12. <view class="content">
  13. <view class="input_box">
  14. <view class="label"><text> * </text>时间范围:</view>
  15. <view class="box">
  16. <uni-datetime-picker v-model="range" type="daterange" rangeSeparator="至" />
  17. </view>
  18. </view>
  19. <view class="input_box">
  20. <view class="label"><text> * </text>网格编号(单选):</view>
  21. <view class="box" @click="change()">
  22. {{array_text}}
  23. </view>
  24. </view>
  25. <view class="btn" @click="get_trouble_grid_region_annular()">查询</view>
  26. </view>
  27. </view>
  28. </template>
  29. <script>
  30. Date.prototype.format = function(fmt) {
  31. var o = {
  32. "M+": this.getMonth() + 1, //月份
  33. "d+": this.getDate(), //日
  34. "h+": this.getHours(), //小时
  35. "m+": this.getMinutes(), //分
  36. "s+": this.getSeconds(), //秒
  37. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  38. "S": this.getMilliseconds() //毫秒
  39. };
  40. if (/(y+)/.test(fmt)) {
  41. fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  42. }
  43. for (var k in o) {
  44. if (new RegExp("(" + k + ")").test(fmt)) {
  45. fmt = fmt.replace(
  46. RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  47. }
  48. }
  49. return fmt;
  50. }
  51. export default {
  52. data() {
  53. return {
  54. // 时间范围
  55. range: [],
  56. array_text: "",
  57. // 网格编号的配置参数
  58. array: [],
  59. // 网格编号的原始数据
  60. array_data: [],
  61. // 选中网格编号的id
  62. array_id: "",
  63. // 图表数据
  64. chartData: {
  65. categories: [],
  66. "series": [{
  67. "data": []
  68. }]
  69. },
  70. ring_1: {
  71. "dataLabel": false,
  72. "legend": {
  73. "position": "bottom",
  74. "float": "left"
  75. },
  76. "title": {
  77. "name": " "
  78. },
  79. "subtitle": {
  80. "name": " "
  81. },
  82. "extra": {
  83. "ring": {
  84. "centerColor": "#FFFFFF",
  85. "border": true,
  86. },
  87. }
  88. }
  89. };
  90. },
  91. watch: {
  92. range(newval) {
  93. console.log("范围选:", this.range);
  94. },
  95. },
  96. onLoad() {
  97. // 初始化时间
  98. this.range[0] = new Date().format("yyyy-MM-01")
  99. this.range[1] = new Date().format("yyyy-MM-dd")
  100. // console.log(this.range)
  101. this.get_trouble_grid_number_list()
  102. },
  103. methods: {
  104. // 配置参数 网格编号
  105. get_trouble_grid_number_list() {
  106. this.$api.trouble_grid_number_list({
  107. type: 1
  108. }).then((res)=>{
  109. // console.log(res.data.data)
  110. this.array_data = res.data.data
  111. const data = res.data.data
  112. data.forEach((item, index) => {
  113. this.array.push(item.itemValue)
  114. })
  115. // 初始化
  116. // 当前显示的名称
  117. this.array_text = data[0].itemValue
  118. // 当前选中的id
  119. this.array_id = data[0].id
  120. // 初始化查询
  121. this.get_trouble_grid_region_annular()
  122. })
  123. },
  124. change() {
  125. uni.showActionSheet({
  126. itemList: this.array,
  127. success: (res) => {
  128. // 当前显示的名称
  129. this.array_text = this.array_data[res.tapIndex].itemValue
  130. // 当前选中的id
  131. this.array_id = this.array_data[res.tapIndex].id
  132. }
  133. });
  134. },
  135. // 查询
  136. get_trouble_grid_region_annular() {
  137. uni.showLoading({
  138. mask: true
  139. })
  140. this.$api.trouble_grid_region_annular({
  141. type: 1,
  142. number_id: this.array_id,
  143. start_time: this.range[0],
  144. end_time: this.range[1]
  145. }).then((res)=>{
  146. uni.hideLoading()
  147. console.log(res.data.data)
  148. const data = res.data.data
  149. const series = []
  150. data.map((item, index) => {
  151. //新数组的项,用来盛放每一项中的各个参数,每次清空,这样避免改变sevm的值
  152. var sevm = {};
  153. //给每一项中的参数初始化并赋值
  154. sevm['name'] = item.name + '(' + item.size + '次' + ')';
  155. sevm['value'] = item.size;
  156. //将项放进新的数组
  157. series.push(sevm)
  158. })
  159. this.chartData.series[0].data = series
  160. console.log(this.chartData.series[0].data)
  161. })
  162. }
  163. }
  164. }
  165. </script>
  166. <style lang="scss">
  167. .section {
  168. box-sizing: border-box;
  169. padding: 25rpx;
  170. .title {
  171. line-height: 60rpx;
  172. border-left: 8rpx solid #009FE8;
  173. box-sizing: border-box;
  174. padding-left: 20rpx;
  175. margin-bottom: 20rpx;
  176. }
  177. .box {
  178. /* 请根据需求修改图表容器尺寸,如果父容器没有高度图表则会显示异常 */
  179. .charts-box {
  180. width: 100%;
  181. height: 350px;
  182. }
  183. }
  184. }
  185. .content {
  186. margin-bottom: 50rpx;
  187. box-sizing: border-box;
  188. padding: 25rpx;
  189. .input_box {
  190. margin-bottom: 20rpx;
  191. font-size: 32rpx;
  192. .label {
  193. min-height: 80rpx;
  194. line-height: 80rpx;
  195. color: #6C6F74;
  196. text {
  197. color: red;
  198. }
  199. }
  200. .box {
  201. width: 700rpx;
  202. min-height: 90rpx;
  203. line-height: 90rpx;
  204. background: #FFFFFF;
  205. border-radius: 8rpx;
  206. border: 2rpx solid #E9EBF2;
  207. box-sizing: border-box;
  208. padding: 0 25rpx;
  209. /deep/.uni-date-editor--x {
  210. .uniui-clear {
  211. display: none;
  212. }
  213. }
  214. /deep/.uni-date-x--border {
  215. box-sizing: border-box;
  216. border-radius: 4px;
  217. border: none;
  218. }
  219. /deep/.uni-date-x {
  220. padding: 0;
  221. }
  222. }
  223. }
  224. .btn {
  225. margin-top: 40rpx;
  226. background-color: #009FE8;
  227. padding: 25rpx 50rpx;
  228. color: #FFFFFF;
  229. text-align: center;
  230. }
  231. }
  232. </style>