left.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <template>
  2. <BasePanelLeft>
  3. <div class="sand-monitor-left-container">
  4. <base-header title="采砂区总览"></base-header>
  5. <div class="card-item">
  6. <div class="icon-content">
  7. <div class="icon-item">
  8. <div class="icon-item-content">
  9. <img src="@/assets/image/sand-monitor/采砂区.png" style="width: 0.38rem; height: 0.32rem" />
  10. <div class="item-content">
  11. <span class="label">采砂区个数</span>
  12. <span class="value" style="color: #4183d3">2个</span>
  13. </div>
  14. </div>
  15. <img src="@/assets/image/sand-monitor/icon-bg.png" style="width: 1.6rem" />
  16. </div>
  17. <div class="icon-item">
  18. <div class="icon-item-content">
  19. <img src="@/assets/image/sand-monitor/监控设备.png" style="width: 0.32rem; height: 0.3rem" />
  20. <div class="item-content">
  21. <span class="label">监控设备</span>
  22. <span class="value" style="color: #fcd294">2个</span>
  23. </div>
  24. </div>
  25. <img src="@/assets/image/sand-monitor/icon-bg.png" style="width: 1.6rem" />
  26. </div>
  27. </div>
  28. <div class="progress-content">
  29. <div class="progress-item" v-for="(item, index) in progressList" :key="index">
  30. <div class="progress-item-text">
  31. <span>{{ item.name }}</span>
  32. <span>{{ item.value }}</span>
  33. </div>
  34. <el-progress size="large" :percentage="item.percentage" :color="item.color" :show-text="false" define-back-color="#213F61" :stroke-width="10"></el-progress>
  35. </div>
  36. </div>
  37. </div>
  38. <base-header title="采砂预警总览"></base-header>
  39. <div class="card-item">
  40. <div class="warning-content">
  41. <div class="warning-title">
  42. <div class="title">预警总数</div>
  43. <div class="num">0</div>
  44. <div class="unit">条</div>
  45. </div>
  46. <PieChart style="height: 1.45rem" />
  47. </div>
  48. </div>
  49. <base-header title="采砂区详情">
  50. <div style="position: absolute; top: -2px; right: 0.1rem">
  51. <el-radio-group v-model="date" size="mini">
  52. <el-radio-button label="日"></el-radio-button>
  53. <el-radio-button label="周"></el-radio-button>
  54. <el-radio-button label="月"></el-radio-button>
  55. </el-radio-group>
  56. </div>
  57. </base-header>
  58. <div class="card-item">
  59. <div class="info-content">
  60. <div class="base-info-container">
  61. <div class="title">基本信息</div>
  62. <div class="base-info-card">
  63. <div class="base-info-item">
  64. <span>采砂区名称</span>
  65. <span class="value">1#采砂区</span>
  66. </div>
  67. <div class="base-info-item">
  68. <span>采砂区面积</span>
  69. <span class="value">1#采砂区 <span>万㎡</span></span>
  70. </div>
  71. <div class="base-info-item">
  72. <span>采砂区状态</span>
  73. <span class="value">正常开采</span>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="base-info-container">
  78. <div class="title">采砂信息</div>
  79. <div class="base-info-card">
  80. <div class="base-info-item">
  81. <span>采砂控制总量</span>
  82. <span class="value">50<span>万吨</span></span>
  83. </div>
  84. <div class="base-info-item">
  85. <span>过磅总量</span>
  86. <span class="value">25<span>万吨</span></span>
  87. </div>
  88. <div class="base-info-item">
  89. <span>监测已采总量</span>
  90. <span class="value">24<span>万吨</span></span>
  91. </div>
  92. </div>
  93. </div>
  94. <div class="base-info-container">
  95. <div class="title">趋势分析</div>
  96. <LineChart style="height: 1.05rem" />
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. </BasePanelLeft>
  102. </template>
  103. <script>
  104. import BasePanelLeft from '@/components/base-panel/base-panel-left'
  105. import BaseHeader from '@/components/base-header/base-header'
  106. import PieChart from './pie-chart'
  107. import LineChart from './line-chart'
  108. export default {
  109. name: 'sandMonitorLeft',
  110. components: { BasePanelLeft, BaseHeader, PieChart, LineChart },
  111. data() {
  112. return {
  113. progressList: [
  114. { name: '允许采砂总量', value: '400吨', percentage: 50, color: '#3FEBED' },
  115. { name: '监测已采总量', value: '0吨', percentage: 50, color: '#FCD294' },
  116. { name: '过磅采砂总量', value: '0吨', percentage: 50, color: '#4183D3' }
  117. ],
  118. date: '日'
  119. }
  120. },
  121. methods: {}
  122. }
  123. </script>
  124. <style scoped lang="scss">
  125. @import url('@/assets/scss/px-to-rem.scss');
  126. .sand-monitor-left-container {
  127. position: relative;
  128. height: 100%;
  129. z-index: 1;
  130. // height: calc(100vh - 100px);
  131. // overflow: auto;
  132. &::-webkit-scrollbar {
  133. display: none; // 针对 webkit 内核隐藏滚动条
  134. }
  135. :deep(.el-radio-button__inner) {
  136. background: transparent;
  137. color: #4487d8;
  138. border-color: #4487d8;
  139. font-size: px-to-rem(14);
  140. }
  141. :deep(.el-radio-button__orig-radio:checked + .el-radio-button__inner) {
  142. background-color: #409eff;
  143. color: #fff;
  144. }
  145. .card-item {
  146. position: relative;
  147. width: 3.68rem;
  148. padding: px-to-rem(10);
  149. margin-bottom: px-to-rem(19);
  150. background: url('@/assets/image/common/areaBg.png') no-repeat 0 0 / 100% 100%;
  151. .icon-content {
  152. display: flex;
  153. align-items: center;
  154. justify-content: space-between;
  155. .icon-item {
  156. display: flex;
  157. flex-direction: column;
  158. align-items: center;
  159. .icon-item-content {
  160. display: flex;
  161. justify-content: space-between;
  162. align-items: center;
  163. .item-content {
  164. display: flex;
  165. flex-direction: column;
  166. justify-content: center;
  167. align-items: center;
  168. margin-left: px-to-rem(10);
  169. margin-bottom: px-to-rem(-6);
  170. .label {
  171. font-weight: 500;
  172. font-size: px-to-rem(16);
  173. color: #ffffff;
  174. }
  175. .value {
  176. font-weight: bold;
  177. font-size: px-to-rem(18);
  178. }
  179. }
  180. }
  181. }
  182. }
  183. .progress-content {
  184. display: flex;
  185. flex-direction: column;
  186. margin-top: px-to-rem(10);
  187. .progress-item {
  188. display: flex;
  189. flex-direction: column;
  190. margin-bottom: px-to-rem(6);
  191. .progress-item-text {
  192. display: flex;
  193. justify-content: space-between;
  194. margin-bottom: px-to-rem(4);
  195. span {
  196. font-size: px-to-rem(16);
  197. color: #fff;
  198. }
  199. }
  200. }
  201. }
  202. .warning-content {
  203. height: px-to-rem(200);
  204. .warning-title {
  205. display: flex;
  206. justify-content: space-between;
  207. align-items: center;
  208. color: #fff;
  209. font-size: px-to-rem(16);
  210. .title {
  211. &::before {
  212. content: '';
  213. display: inline-block;
  214. background: #4487d8;
  215. width: px-to-rem(30);
  216. height: px-to-rem(2);
  217. margin-bottom: px-to-rem(4);
  218. margin-right: px-to-rem(6);
  219. }
  220. &::after {
  221. content: '';
  222. display: inline-block;
  223. background: #4487d8;
  224. width: px-to-rem(30);
  225. height: px-to-rem(2);
  226. margin-bottom: px-to-rem(4);
  227. margin-left: px-to-rem(6);
  228. }
  229. }
  230. .num {
  231. text-align: center;
  232. width: px-to-rem(75);
  233. height: px-to-rem(45);
  234. font-size: px-to-rem(30);
  235. color: #f5f5f5;
  236. background: url('@/assets/image/sand-monitor/mid-bg.png') no-repeat;
  237. background-size: 100% 100%;
  238. }
  239. .unit {
  240. margin-right: px-to-rem(10);
  241. }
  242. }
  243. }
  244. .info-content {
  245. color: #fff;
  246. .base-info-container {
  247. .title {
  248. font-size: px-to-rem(16);
  249. text-align: left;
  250. &::before {
  251. content: '';
  252. display: inline-block;
  253. width: px-to-rem(8);
  254. height: px-to-rem(10);
  255. background: #81b1f5;
  256. margin-right: px-to-rem(6);
  257. }
  258. }
  259. .base-info-card {
  260. display: flex;
  261. justify-content: space-between;
  262. .base-info-item {
  263. display: flex;
  264. flex-direction: column;
  265. margin-bottom: px-to-rem(10);
  266. span {
  267. font-weight: bold;
  268. font-size: px-to-rem(12);
  269. color: #c4c6c8;
  270. }
  271. .value {
  272. font-size: px-to-rem(14);
  273. color: #81b1f5;
  274. }
  275. }
  276. }
  277. }
  278. }
  279. }
  280. }
  281. </style>