hydrology.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. <template>
  2. <view>
  3. <view class="top">
  4. <image src="../img/top.jpg" mode="widthFix"></image>
  5. </view>
  6. <view class="container">
  7. <view class="info">
  8. <view class="item" v-for="(item,index) in info" :key="index">
  9. <view class="label">{{item.label}}</view>
  10. <view class="value">{{item.value}}</view>
  11. </view>
  12. </view>
  13. <view class="content">
  14. <view class="section">
  15. <view class="title">
  16. <view class="left">分站统计</view>
  17. </view>
  18. <view class="inner">
  19. <view class="charts-box">
  20. <qiun-data-charts type="pie" :opts="opts" :chartData="chartData" />
  21. </view>
  22. </view>
  23. </view>
  24. <view class="section">
  25. <view class="title">
  26. <view class="left">近7日降雨量</view>
  27. </view>
  28. <view class="inner">
  29. <view class="charts-box">
  30. <qiun-data-charts type="column" :opts="opts_2" :chartData="chartData_2" :ontouch="true" />
  31. </view>
  32. </view>
  33. </view>
  34. <view class="section" v-for="(item,index) in table" :key="index">
  35. <view class="title">
  36. <view class="left">{{item.title}}</view>
  37. </view>
  38. <view class="inner">
  39. <view class="table">
  40. <uni-table emptyText="暂无更多数据">
  41. <uni-tr>
  42. <uni-th align="center" v-for="(item_2,index_2) in item.thead"
  43. :key="index_2">{{item_2}}</uni-th>
  44. </uni-tr>
  45. <uni-tr v-for="(item_2,index_2) in item.tbody" :key="index_2">
  46. <uni-td style="text-align: center;vertical-align: middle;"
  47. v-for="(item_3,index_3) in item_2">{{item_3}}</uni-td>
  48. </uni-tr>
  49. </uni-table>
  50. </view>
  51. </view>
  52. </view>
  53. </view>
  54. </view>
  55. </view>
  56. </template>
  57. <script>
  58. export default {
  59. data() {
  60. return {
  61. info: [{
  62. label: "地面传感器",
  63. value: "92"
  64. },
  65. {
  66. label: "压力水位传感器",
  67. value: "2"
  68. },
  69. {
  70. label: "流量传感器",
  71. value: "3"
  72. },
  73. {
  74. label: "自动雨量站",
  75. value: "1"
  76. },
  77. {
  78. label: "地面断线传感器",
  79. value: "0"
  80. },
  81. {
  82. label: "井下断线传感器",
  83. value: "0"
  84. }
  85. ],
  86. chartData: {
  87. series: [{
  88. data: []
  89. }]
  90. },
  91. opts: {
  92. legend: {
  93. lineHeight: 20
  94. }
  95. },
  96. chartData_2: {
  97. categories: [],
  98. series: [{
  99. name: "降雨量(mm)",
  100. data: []
  101. }]
  102. },
  103. opts_2: {
  104. xAxis: {
  105. labelCount: 5
  106. }
  107. },
  108. table: [{
  109. title: "实时数据:地面水文长观孔",
  110. thead: ["孔名", "含水层", "监测时间", "埋深(m)", "埋深变化量", "温度(℃)", "水位(m)"],
  111. tbody: [
  112. ["BK2", "Ⅱ含水层(烧变岩)", "2024-07-17 00:00:00", "141.25", "0.01", "15.59", "1210.06"],
  113. ["BK4", "Ⅱ含水层(烧变岩)", "2024-07-17 00:00:00", "141.25", "0.01", "15.59", "1210.06"],
  114. ["BK5", "Ⅱ含水层(烧变岩)", "2024-07-17 00:00:00", "141.25", "0.01", "15.59", "1210.06"]
  115. ]
  116. },
  117. {
  118. title: "实时数据:井下传感器",
  119. thead: ["传感器编号", "测点位置", "监测时间", "监测量", "监测值", "单位", "监测状态"],
  120. tbody: [
  121. ["64010300100009", "湿度", "2024-07-17 15:13:00", "湿度", "24.2", "%RH", "正常"],
  122. ["64010300100009", "湿度", "2024-07-17 15:13:00", "湿度", "24.2", "%RH", "正常"],
  123. ["64010300100009", "湿度", "2024-07-17 15:13:00", "湿度", "24.2", "%RH", "正常"],
  124. ["64010300100009", "湿度", "2024-07-17 15:13:00", "湿度", "24.2", "%RH", "正常"]
  125. ]
  126. }
  127. ]
  128. };
  129. },
  130. mounted() {
  131. this.getServerData()
  132. },
  133. methods: {
  134. getServerData() {
  135. // 模拟从服务器获取数据时的延时
  136. setTimeout(() => {
  137. //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
  138. let res = {
  139. series: [{
  140. data: [{
  141. "name": "(2016款)KJ402-F系列",
  142. "value": 9
  143. }, {
  144. "name": "KJ402-FB-1",
  145. "value": 9
  146. }, {
  147. "name": "XN-流量统计分站",
  148. "value": 1
  149. }, {
  150. "name": "XN-水质分站",
  151. "value": 7
  152. }, {
  153. "name": "XPH气象站6要素",
  154. "value": 1
  155. }]
  156. }]
  157. };
  158. this.chartData = JSON.parse(JSON.stringify(res));
  159. }, 500);
  160. setTimeout(() => {
  161. //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
  162. let res = {
  163. categories: ["07-13", "07-14", "07-15", "07-16", "07-17", "07-18", "07-19"],
  164. series: [{
  165. name: "降雨量(mm)",
  166. data: [3.2, 3.6, 0, 0, 0, 0, 0]
  167. }]
  168. };
  169. this.chartData_2 = JSON.parse(JSON.stringify(res));
  170. }, 500);
  171. this.$api.zaoquan_dcs_getSupport({
  172. sys_code: "shuiwen"
  173. }).then((res) => {
  174. console.log(res.data)
  175. this.info = res.data.info
  176. this.table = res.data.table
  177. this.chartData.series = res.data.series
  178. this.chartData_2.categories = res.data['7day'][0].categories
  179. this.chartData_2.series = res.data['7day'][0].series
  180. })
  181. },
  182. }
  183. }
  184. </script>
  185. <style lang="scss">
  186. page {
  187. background-color: #F7F7F7;
  188. }
  189. .top {
  190. margin-top: -80rpx;
  191. image {
  192. width: 750rpx;
  193. }
  194. }
  195. .container {
  196. margin: -900rpx 0 0 0;
  197. position: relative;
  198. .info {
  199. margin: 40rpx 0;
  200. box-sizing: border-box;
  201. padding: 20rpx;
  202. display: grid;
  203. grid-template-columns: repeat(3, 1fr);
  204. gap: 40rpx 10rpx;
  205. .item {
  206. text-align: center;
  207. border-right: 1rpx solid #FFFFFF80;
  208. .label {
  209. font-size: 22rpx;
  210. color: #FFF;
  211. margin-bottom: 10rpx;
  212. }
  213. .value {
  214. flex-wrap: wrap;
  215. color: #FFF600;
  216. font-weight: 700;
  217. }
  218. }
  219. .item:nth-child(3n) {
  220. border: none;
  221. }
  222. }
  223. .content {
  224. background-color: #F7F7F7;
  225. border-radius: 35rpx 35rpx 0 0;
  226. box-sizing: border-box;
  227. padding: 35rpx;
  228. .section {
  229. margin-bottom: 40rpx;
  230. border-radius: 14rpx;
  231. overflow: hidden;
  232. .title {
  233. background: linear-gradient(-90deg, #FFFFFF, #E6FAFF);
  234. display: flex;
  235. align-items: flex-end;
  236. justify-content: space-between;
  237. box-sizing: border-box;
  238. padding: 24rpx;
  239. .left {
  240. border-left: 6rpx solid #33C777;
  241. padding-left: 10rpx;
  242. font-size: 34rpx;
  243. font-weight: 700;
  244. color: #343434;
  245. }
  246. .right {
  247. font-size: 22rpx;
  248. color: #3394F9;
  249. }
  250. }
  251. .inner {
  252. background-color: #FFFFFF;
  253. padding: 30rpx 20rpx;
  254. display: grid;
  255. grid-template-columns: repeat(2, 1fr);
  256. gap: 0 40rpx;
  257. .charts-box {
  258. width: 640rpx;
  259. height: 550rpx;
  260. }
  261. .table {
  262. width: 640rpx;
  263. border-radius: 20rpx;
  264. overflow: hidden;
  265. /deep/.uni-table-tr {
  266. // background-color: #FFFFFF;
  267. }
  268. /deep/.uni-table-th {
  269. border: none;
  270. background-color: #FFFFFF;
  271. padding: 27rpx 20rpx;
  272. color: #7A7A7A;
  273. font-size: 28rpx;
  274. color: #1966E2;
  275. font-weight: 700;
  276. border-bottom: 2rpx #EBEEF5 dashed;
  277. }
  278. /deep/.uni-table-td {
  279. font-size: 28rpx;
  280. color: #010101;
  281. border-bottom: 2rpx #EBEEF5 dashed;
  282. padding: 27rpx 20rpx;
  283. }
  284. /deep/.table--border {
  285. border: none;
  286. }
  287. }
  288. }
  289. }
  290. }
  291. }
  292. </style>