index.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <template>
  2. <div class="view-content">
  3. <style-mode :number="1">
  4. <template slot="left"
  5. ><span class="titleNumber">3000</span><img src="../../assets/img/icon_keliuzongliang.png" alt="" />客流总量</template
  6. >
  7. <template slot="cont">
  8. <div class="flexPer">
  9. <div class="itme-inlineBlock">
  10. <div class="width100">今日</div>
  11. <div class="flex width100">
  12. <div class="greText width50">
  13. <div class="numberColor ft20 greenText">3000</div>
  14. <div class="grdText">进入人数</div>
  15. </div>
  16. <div class="greText width50">
  17. <div class="numberColor ft20 redText">1000</div>
  18. <div class="grdText">出去人数</div>
  19. </div>
  20. </div>
  21. <div class="greText width100">
  22. <div class="numberColor ft20 violetText">4000</div>
  23. <div class="grdText">总客流</div>
  24. </div>
  25. </div>
  26. <div class="itme-inlineBlock">
  27. <div class="width100">昨日</div>
  28. <div class="flex width100">
  29. <div class="greText width50">
  30. <div class="numberColor ft20 greenText">2000</div>
  31. <div class="grdText">进入人数</div>
  32. </div>
  33. <div class="greText width50">
  34. <div class="numberColor ft20 redText">2000</div>
  35. <div class="grdText">出去人数</div>
  36. </div>
  37. </div>
  38. <div class="greText width100">
  39. <div class="numberColor ft20 violetText">4000</div>
  40. <div class="grdText">总客流</div>
  41. </div>
  42. </div>
  43. <div class="itme-inlineBlock">
  44. <div class="width100">同比</div>
  45. <div class="flex width100">
  46. <div class="greText width50">
  47. <div class="numberColor ft20 greenText">50%</div>
  48. <div class="grdText">总进入人数</div>
  49. </div>
  50. <div class="greText width50">
  51. <div class="numberColor ft20 redText">50%</div>
  52. <div class="grdText">总出去人口</div>
  53. </div>
  54. </div>
  55. <div class="greText width100">
  56. <div class="numberColor ft20 violetText">0%</div>
  57. <div class="grdText">总客流</div>
  58. </div>
  59. </div>
  60. </div>
  61. </template>
  62. </style-mode>
  63. <style-mode :number="2">
  64. <template slot="left">客流趋势</template>
  65. <template slot="right">
  66. <el-select class="item.class" v-model="trendsValue" clearable @change="activeTrendsValue(trendsValue)">
  67. <el-option v-for="(item, index) in selectTime" :key="index" :label="item.name" :value="item.value"></el-option>
  68. </el-select>
  69. </template>
  70. <template slot="cont">
  71. <zz-echart :option="options"></zz-echart>
  72. </template>
  73. </style-mode>
  74. <style-mode :number="3">
  75. <template slot="left">平均客流</template>
  76. <template slot="right">
  77. <el-select class="item.class" v-model="selectValue" clearable @change="activeValue(selectValue)">
  78. <el-option v-for="(item, index) in selectTime" :key="index" :label="item.name" :value="item.value"></el-option>
  79. </el-select>
  80. </template>
  81. <template slot="cont">
  82. <div class="itme-inlineBlock width100 column">
  83. <div class="width100">
  84. <div class="echTitle">周平均</div>
  85. <zz-echart :option="avgWeekOptions"></zz-echart>
  86. </div>
  87. <div class="width100">
  88. <div class="echTitle">月平均</div>
  89. <zz-echart :option="avgWeekOptions"></zz-echart>
  90. </div>
  91. <div class="width100">
  92. <div class="echTitle">年平均</div>
  93. <zz-echart :option="avgWeekOptions"></zz-echart>
  94. </div>
  95. </div>
  96. </template>
  97. </style-mode>
  98. <style-mode :number="4">
  99. <template slot="left">
  100. <el-date-picker
  101. v-model="pickerTime"
  102. value-format="yyyy-MM-dd"
  103. type="daterange"
  104. range-separator="至"
  105. start-placeholder="开始日期"
  106. end-placeholder="结束日期"
  107. @change="timeToggle"
  108. ></el-date-picker>
  109. <el-button class="search-btn" type="primary" @click="mixins_search()" icon="el-icon-search">查询</el-button>
  110. </template>
  111. <template slot="right">
  112. <img src="../../assets/img/icon_daochu.png" alt="" />
  113. </template>
  114. <template slot="cont">
  115. <zz-table :settings="{ hideFoot: true, showIndex: true, tableBorder: false }" :cols="cols"> </zz-table>
  116. </template>
  117. </style-mode>
  118. </div>
  119. </template>
  120. <script>
  121. import styleMode from './styleMode';
  122. import { discountedWave, columnOptionsChart } from './EachartOptions';
  123. let dataArr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  124. let dataDay = [
  125. '1',
  126. '2',
  127. '3',
  128. '4',
  129. '5',
  130. '6',
  131. '7',
  132. '8',
  133. '9',
  134. '10',
  135. '11',
  136. '12',
  137. '13',
  138. '14',
  139. '15',
  140. '16',
  141. '17',
  142. '18',
  143. '19',
  144. '20',
  145. '21',
  146. '22',
  147. '23',
  148. '24',
  149. '25',
  150. '26',
  151. '27',
  152. '28',
  153. '29',
  154. '30',
  155. '31'
  156. ];
  157. let weekArr = ['一', '二', '三', '四', '五', '六', '日'];
  158. let yearArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];
  159. export default {
  160. components: {
  161. styleMode
  162. },
  163. data() {
  164. return {
  165. selectTime: [
  166. {
  167. name: '全部',
  168. value: ''
  169. },
  170. {
  171. name: '本周',
  172. value: 1
  173. },
  174. {
  175. name: '本月',
  176. value: 2
  177. },
  178. {
  179. name: '本年',
  180. value: 3
  181. }
  182. ],
  183. cols: [
  184. {
  185. label: '统计日期',
  186. prop: 'alarmName'
  187. },
  188. {
  189. label: '位置区域',
  190. prop: 'waringDate'
  191. },
  192. {
  193. label: '进入人数',
  194. prop: 'createBy'
  195. },
  196. {
  197. label: '出去人数',
  198. prop: 'alarmGrade'
  199. },
  200. {
  201. label: '当日客流',
  202. prop: 'alarmStat',
  203. format(val) {
  204. if (val == 1) {
  205. return '告警产生';
  206. } else if (val == 2) {
  207. return '告警消失';
  208. } else {
  209. return '--';
  210. }
  211. }
  212. }
  213. ],
  214. selectValue: '',
  215. trendsValue: '',
  216. pickerTime: [],
  217. options: discountedWave('(次)', dataDay, dataArr),
  218. avgWeekOptions: columnOptionsChart('(人)', dataDay, [{ name: '999', type: 'bar', data: [20] }])
  219. };
  220. },
  221. created() {
  222. this.getAreaInfo();
  223. },
  224. methods: {
  225. //获取本月多少天
  226. getMonthLength() {
  227. let thisD = new Date();
  228. return new Date(thisD.getFullYear(), thisD.getMonth() + 1, 0).getDate();
  229. },
  230. //查询时间
  231. timeToggle() {},
  232. activeTrendsValue(val) {
  233. console.log(val);
  234. },
  235. activeValue(val) {
  236. console.log(val);
  237. },
  238. getAreaInfo() {
  239. this.$http.post('/sc-community/dahuaDevice/getAreaInfo', { pageIndex: 1, pageSize: 100 }).then((res) => {
  240. console.log(JSON.parse(res.data));
  241. });
  242. },
  243. getQueryPassengerFlowData() {
  244. this.$http.post('/sc-community/dahuaDevice/queryPassengerFlowData', { pageIndex: 1, pageSize: 100 }).then((res) => {
  245. console.log(JSON.parse(res.data));
  246. });
  247. }
  248. }
  249. };
  250. </script>
  251. <style lang="scss" scoped>
  252. @import './index.scss';
  253. .column {
  254. flex-direction: column;
  255. & > div {
  256. height: calc((100% - #{rem(60)}) / 3);
  257. }
  258. }
  259. .view-content {
  260. /deep/ .el-table {
  261. background: transparent !important;
  262. }
  263. /deep/.el-table th {
  264. background: transparent !important;
  265. }
  266. /deep/.el-table tr {
  267. background: transparent !important;
  268. }
  269. }
  270. .echTitle {
  271. }
  272. </style>