From bebc625c00b8418895a71cabe1b76ebb16f6ecae Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期二, 01 十一月 2022 22:18:56 +0800
Subject: [PATCH] 违章统计
---
src/api/intelligentPatrol/statistics.js | 36 +
src/store/intelligentPatrol/statistics.js | 13
src/views/intelligentPatrol/statistics/unlawful/time/index.vue | 343 ++++++++++++++
src/views/intelligentPatrol/statistics/unlawful/shop/index.vue | 347 ++++++++++++++
src/views/intelligentPatrol/statistics/unlawful/area/index.vue | 343 ++++++++++++++
src/views/intelligentPatrol/statistics/unlawful/point/index.vue | 353 ++++++++++++++
6 files changed, 1,419 insertions(+), 16 deletions(-)
diff --git a/src/api/intelligentPatrol/statistics.js b/src/api/intelligentPatrol/statistics.js
index fe0261a..2ba6fd0 100644
--- a/src/api/intelligentPatrol/statistics.js
+++ b/src/api/intelligentPatrol/statistics.js
@@ -16,4 +16,40 @@
},
params: data
}),
+ // 鎸夌偣浣嶇粺璁�
+ searchByPoint: (data) => axios({
+ method: 'get',
+ url: baseUrl + '/unlawful/point',
+ headers: {
+ ...token
+ },
+ params: data
+ }),
+ // 鎸夋椂闂寸粺璁�
+ searchByTime: (data) => axios({
+ method: 'get',
+ url: baseUrl + '/unlawful/time',
+ headers: {
+ ...token
+ },
+ params: data
+ }),
+ // 鎸夊尯鍩熺粺璁�
+ searchByArea: (data) => axios({
+ method: 'get',
+ url: baseUrl + '/unlawful/area',
+ headers: {
+ ...token
+ },
+ params: data
+ }),
+ // 闂ㄥ墠涓夊寘缁熻
+ searchByShop: (data) => axios({
+ method: 'get',
+ url: baseUrl + '/unlawful/shop',
+ headers: {
+ ...token
+ },
+ params: data
+ }),
};
\ No newline at end of file
diff --git a/src/store/intelligentPatrol/statistics.js b/src/store/intelligentPatrol/statistics.js
index b22147a..abf7ac5 100644
--- a/src/store/intelligentPatrol/statistics.js
+++ b/src/store/intelligentPatrol/statistics.js
@@ -7,6 +7,19 @@
actions: {
searchByType(context, params) {
return api.searchByType(params);
+ },
+
+ searchByPoint(context, params) {
+ return api.searchByPoint(params);
+ },
+ searchByTime(context, params) {
+ return api.searchByTime(params);
+ },
+ searchByArea(context, params) {
+ return api.searchByArea(params);
+ },
+ searchByShop(context, params) {
+ return api.searchByShop(params);
}
},
};
\ No newline at end of file
diff --git a/src/views/intelligentPatrol/statistics/unlawful/area/index.vue b/src/views/intelligentPatrol/statistics/unlawful/area/index.vue
index 3e73bbc..15df60f 100644
--- a/src/views/intelligentPatrol/statistics/unlawful/area/index.vue
+++ b/src/views/intelligentPatrol/statistics/unlawful/area/index.vue
@@ -1,13 +1,348 @@
<template>
- <div>鎸夊尯鍩熺粺璁�</div>
+ <div class="list">
+ <header>
+ <div class="header-content">
+ <div class="search">
+ <span style="padding-right: 20px">鏃堕棿鑼冨洿:</span>
+ <el-date-picker
+ v-model="value2"
+ type="daterange"
+ align="right"
+ unlink-panels
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ :picker-options="pickerOptions"
+ >
+ </el-date-picker>
+ </div>
+
+ <div class="find">
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ @click="setTableDataHandle"
+ >鏌ヨ</el-button
+ >
+ <el-button icon="el-icon-delete-solid" @click="resetTableData"
+ >閲嶇疆</el-button
+ >
+ </div>
+
+ <div class="main-nav-right">
+ <el-button type="primary" icon="el-icon-upload2" @click="handleExport"
+ >瀵煎嚭</el-button
+ >
+ </div>
+ </div>
+ </header>
+ <main>
+ <div class="main-content">
+ <!-- 鏁版嵁灞曠ず -->
+ <el-table
+ ref="multipleTable"
+ :header-cell-style="{
+ background: '#06122c',
+ 'font-size': '12px',
+ color: '#4b9bb7',
+ 'font-weight': '650',
+ 'line-height': '45px',
+ }"
+ :row-class-name="tableRowClassName"
+ :data="list"
+ style="width: 100%"
+ >
+ <el-table-column type="selection" min-width="5"> </el-table-column>
+ <el-table-column prop="name" label="鍖哄煙鍚嶇О" min-width="10">
+ </el-table-column>
+ <el-table-column prop="count" label="浜嬩欢鎬绘暟" min-width="5">
+ </el-table-column>
+ <el-table-column prop="ratio" label="鍗犳瘮" min-width="5">
+ </el-table-column>
+ <el-table-column prop="checked" label="宸插鏍�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="register" label="绔嬫" min-width="5">
+ </el-table-column>
+ <el-table-column prop="registerRatio" label="绔嬫鐜�" min-width="5">
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!-- tools -->
+ <div class="tools">
+ <div class="funs"></div>
+ <div class="pagination">
+ <el-pagination
+ background
+ :current-page="currentPage"
+ layout="prev, pager, next"
+ :total="totalNum"
+ :page-size="pageSize"
+ @current-change="changeCurrentPage"
+ @prev-click="handlePrev"
+ @next-click="handleNext"
+ >
+ </el-pagination>
+ </div>
+ </div>
+ </main>
+ </div>
</template>
+ <script>
+import { createNamespacedHelpers } from "vuex";
+const { mapActions } = createNamespacedHelpers("statistics");
-<script>
export default {
+ data() {
+ return {
+ pickerOptions: {
+ shortcuts: [
+ {
+ text: "鏈�杩戜竴鍛�",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜竴涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜笁涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ ],
+ },
+ value1: "",
+ value2: "",
+ list: [],
+ totalNum: 0,
+ pageSize: 10,
+ currentPage: 1,
+ };
+ },
+ created() {
+ this.setTableData();
+ },
+ methods: {
+ ...mapActions(["searchByArea"]),
-}
+ handleExport(e) {},
+ setTableDataHandle(e) {},
+ resetTableData(e) {},
+ // 璁剧疆琛ㄦ牸鏂戦┈绾�
+ tableRowClassName({ row, rowIndex }) {
+ if ((rowIndex + 1) % 2 == 0) {
+ return "warning-row";
+ } else {
+ return "success-row";
+ }
+ return "";
+ },
+ // 璁剧疆tableData
+ setTableData() {
+ const { currentPage, pageSize, context } = this;
+ this.searchByArea({
+ currentPage,
+ pageSize,
+ beginTime:'2022-05-01 00:00:00',
+ endTime:'2022-09-01 00:00:00'
+ }).then((res) => {
+ if (res.data.code == 200) {
+ this.list = res.data.data.records;
+ this.totalNum = res.data.data.total;
+ }
+ });
+ },
+ // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠�
+ changeCurrentPage(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ // 涓婁竴椤电偣鍑讳簨浠�
+ handlePrev(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ // 涓嬩竴椤电偣鍑讳簨浠�
+ handleNext(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ },
+};
</script>
+ <style lang="scss" scoped>
+.list {
+ text-align: left;
+ margin: 10px 20px;
+ color: #4b9bb7;
-<style>
+ header {
+ background-color: #09152f;
+ border: 1pox solid #fff;
+ .header-content {
+ padding: 0 40px;
+ display: flex;
+ line-height: 100px;
+ justify-content: space-between;
+ align-items: center;
+
+ .search {
+ // display: flex;
+ justify-content: flex-start;
+
+ span {
+ flex: 1;
+ }
+
+ .el-input {
+ flex: 2;
+ color: #1d3f57;
+
+ &::v-deep .el-input__inner {
+ background-color: #09152f;
+ border: 1px solid #17324c;
+ }
+ }
+ .el-select {
+ flex: 1;
+ }
+ .el-date-editor {
+ flex: 1;
+ }
+ :deep(.el-range-input) {
+ background-color: #09152f;
+ }
+ }
+ .find {
+ margin-right: auto;
+ margin-left: 30px;
+ }
+ }
+ }
+
+ :deep(.el-range-separator) {
+ padding: 0px !important;
+ }
+ main {
+ background-color: #09152f;
+ margin-top: 20px;
+ padding-bottom: 50px;
+ border: 1pox solid #fff;
+
+ .main-title {
+ line-height: 60px;
+ padding: 10px 20px;
+ }
+
+ .tools {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 20px;
+
+ .funs {
+ display: flex;
+
+ .funsItem {
+ line-height: 28px;
+ display: flex;
+ align-items: center;
+ border: 1px solid #17324c;
+ border-radius: 4px;
+ font-size: 12px;
+ margin-left: 10px;
+
+ .el-checkbox {
+ width: 80px;
+ padding: 0 10px;
+ }
+
+ .el-select {
+ width: 120px;
+ }
+
+ &::v-deep .el-input__inner {
+ border: none;
+ background-color: #09152f;
+ }
+
+ &:hover {
+ border: 1px solid #4b9bb7;
+ }
+
+ &:hover .el-checkbox {
+ color: #4b9bb7;
+ }
+ }
+ }
+
+ .pagination {
+ margin-top: 50px;
+ display: flex;
+ line-height: 50px;
+ justify-content: center;
+
+ .el-pagination {
+ &::v-deep li,
+ &::v-deep .btn-prev,
+ &::v-deep .btn-next {
+ background-color: #071f39;
+ color: #4b9bb7;
+ }
+
+ &::v-deep .active {
+ background-color: #409eff;
+ color: #fff;
+ }
+ }
+ }
+ }
+ &::v-deep .warning-row {
+ background-color: #06122c;
+ }
+
+ &::v-deep .success-row {
+ background-color: #071f39;
+ }
+
+ .operationBox {
+ display: flex;
+ }
+
+ .el-divider {
+ background-color: #4b9bb7;
+ }
+ .el-table {
+ color: #4b9bb7;
+ font-size: 10px;
+ .operation {
+ display: flex;
+
+ .line {
+ padding: 0 5px;
+ }
+
+ span:hover {
+ cursor: pointer;
+ }
+ }
+ }
+ }
+}
</style>
\ No newline at end of file
diff --git a/src/views/intelligentPatrol/statistics/unlawful/point/index.vue b/src/views/intelligentPatrol/statistics/unlawful/point/index.vue
index b8057e0..63b8e87 100644
--- a/src/views/intelligentPatrol/statistics/unlawful/point/index.vue
+++ b/src/views/intelligentPatrol/statistics/unlawful/point/index.vue
@@ -1,13 +1,358 @@
<template>
- <div>鎸夌偣浣嶇粺璁�</div>
+ <div class="list">
+ <header>
+ <div class="header-content">
+ <div class="search">
+ <span style="padding-right: 20px">鏃堕棿鑼冨洿:</span>
+ <el-date-picker
+ v-model="value2"
+ type="daterange"
+ align="right"
+ unlink-panels
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ :picker-options="pickerOptions"
+ >
+ </el-date-picker>
+ </div>
+
+ <div class="find">
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ @click="setTableDataHandle"
+ >鏌ヨ</el-button
+ >
+ <el-button icon="el-icon-delete-solid" @click="resetTableData"
+ >閲嶇疆</el-button
+ >
+ </div>
+
+ <div class="main-nav-right">
+ <el-button type="primary" icon="el-icon-upload2" @click="handleExport"
+ >瀵煎嚭</el-button
+ >
+ </div>
+ </div>
+ </header>
+ <main>
+ <div class="main-content">
+ <!-- 鏁版嵁灞曠ず -->
+ <el-table
+ ref="multipleTable"
+ :header-cell-style="{
+ background: '#06122c',
+ 'font-size': '12px',
+ color: '#4b9bb7',
+ 'font-weight': '650',
+ 'line-height': '45px',
+ }"
+ :row-class-name="tableRowClassName"
+ :data="list"
+ style="width: 100%"
+ >
+ <el-table-column type="selection" min-width="5"> </el-table-column>
+ <el-table-column prop="name" label="鐐逛綅鍚嶇О" min-width="10">
+ </el-table-column>
+ <el-table-column prop="count" label="浜嬩欢鎬绘暟" min-width="5">
+ </el-table-column>
+ <el-table-column prop="ratio" label="鍗犳瘮" min-width="5">
+ </el-table-column>
+ <el-table-column prop="register" label="绔嬫" min-width="5">
+ </el-table-column>
+ <el-table-column prop="notRegister" label="鏆備笉绔嬫" min-width="5">
+ </el-table-column>
+ <el-table-column prop="closing" label="缁撴" min-width="5">
+ </el-table-column>
+ <el-table-column prop="relearn" label="鍐嶅涔�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="checked" label="宸插鏍�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="checkedRatio" label="瀹℃牳鐜�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="registerRatio" label="绔嬫鐜�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="accuracyRatio" label="鍑嗙‘鐜�" min-width="5">
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!-- tools -->
+ <div class="tools">
+ <div class="funs"></div>
+ <div class="pagination">
+ <el-pagination
+ background
+ :current-page="currentPage"
+ layout="prev, pager, next"
+ :total="totalNum"
+ :page-size="pageSize"
+ @current-change="changeCurrentPage"
+ @prev-click="handlePrev"
+ @next-click="handleNext"
+ >
+ </el-pagination>
+ </div>
+ </div>
+ </main>
+ </div>
</template>
+ <script>
+import { createNamespacedHelpers } from "vuex";
+const { mapActions } = createNamespacedHelpers("statistics");
-<script>
export default {
+ data() {
+ return {
+ pickerOptions: {
+ shortcuts: [
+ {
+ text: "鏈�杩戜竴鍛�",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜竴涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜笁涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ ],
+ },
+ value1: "",
+ value2: "",
+ list: [],
+ totalNum: 0,
+ pageSize: 10,
+ currentPage: 1,
+ };
+ },
+ created() {
+ this.setTableData();
+ },
+ methods: {
+ ...mapActions(["searchByPoint"]),
-}
+ handleExport(e) {},
+ setTableDataHandle(e) {},
+ resetTableData(e) {},
+ // 璁剧疆琛ㄦ牸鏂戦┈绾�
+ tableRowClassName({ row, rowIndex }) {
+ if ((rowIndex + 1) % 2 == 0) {
+ return "warning-row";
+ } else {
+ return "success-row";
+ }
+ return "";
+ },
+ // 璁剧疆tableData
+ setTableData() {
+ const { currentPage, pageSize, context } = this;
+ this.searchByPoint({
+ currentPage,
+ pageSize,
+ beginTime:'2022-05-01 00:00:00',
+ endTime:'2022-09-01 00:00:00'
+ }).then((res) => {
+ if (res.data.code == 200) {
+ this.list = res.data.data.records;
+ this.totalNum = res.data.data.total;
+ }
+ });
+ },
+ // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠�
+ changeCurrentPage(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ // 涓婁竴椤电偣鍑讳簨浠�
+ handlePrev(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ // 涓嬩竴椤电偣鍑讳簨浠�
+ handleNext(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ },
+};
</script>
+ <style lang="scss" scoped>
+.list {
+ text-align: left;
+ margin: 10px 20px;
+ color: #4b9bb7;
-<style>
+ header {
+ background-color: #09152f;
+ border: 1pox solid #fff;
+ .header-content {
+ padding: 0 40px;
+ display: flex;
+ line-height: 100px;
+ justify-content: space-between;
+ align-items: center;
+
+ .search {
+ // display: flex;
+ justify-content: flex-start;
+
+ span {
+ flex: 1;
+ }
+
+ .el-input {
+ flex: 2;
+ color: #1d3f57;
+
+ &::v-deep .el-input__inner {
+ background-color: #09152f;
+ border: 1px solid #17324c;
+ }
+ }
+ .el-select {
+ flex: 1;
+ }
+ .el-date-editor {
+ flex: 1;
+ }
+ :deep(.el-range-input) {
+ background-color: #09152f;
+ }
+ }
+ .find {
+ margin-right: auto;
+ margin-left: 30px;
+ }
+ }
+ }
+
+ :deep(.el-range-separator) {
+ padding: 0px !important;
+ }
+ main {
+ background-color: #09152f;
+ margin-top: 20px;
+ padding-bottom: 50px;
+ border: 1pox solid #fff;
+
+ .main-title {
+ line-height: 60px;
+ padding: 10px 20px;
+ }
+
+ .tools {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 20px;
+
+ .funs {
+ display: flex;
+
+ .funsItem {
+ line-height: 28px;
+ display: flex;
+ align-items: center;
+ border: 1px solid #17324c;
+ border-radius: 4px;
+ font-size: 12px;
+ margin-left: 10px;
+
+ .el-checkbox {
+ width: 80px;
+ padding: 0 10px;
+ }
+
+ .el-select {
+ width: 120px;
+ }
+
+ &::v-deep .el-input__inner {
+ border: none;
+ background-color: #09152f;
+ }
+
+ &:hover {
+ border: 1px solid #4b9bb7;
+ }
+
+ &:hover .el-checkbox {
+ color: #4b9bb7;
+ }
+ }
+ }
+
+ .pagination {
+ margin-top: 50px;
+ display: flex;
+ line-height: 50px;
+ justify-content: center;
+
+ .el-pagination {
+ &::v-deep li,
+ &::v-deep .btn-prev,
+ &::v-deep .btn-next {
+ background-color: #071f39;
+ color: #4b9bb7;
+ }
+
+ &::v-deep .active {
+ background-color: #409eff;
+ color: #fff;
+ }
+ }
+ }
+ }
+ &::v-deep .warning-row {
+ background-color: #06122c;
+ }
+
+ &::v-deep .success-row {
+ background-color: #071f39;
+ }
+
+ .operationBox {
+ display: flex;
+ }
+
+ .el-divider {
+ background-color: #4b9bb7;
+ }
+ .el-table {
+ color: #4b9bb7;
+ font-size: 10px;
+ .operation {
+ display: flex;
+
+ .line {
+ padding: 0 5px;
+ }
+
+ span:hover {
+ cursor: pointer;
+ }
+ }
+ }
+ }
+}
</style>
\ No newline at end of file
diff --git a/src/views/intelligentPatrol/statistics/unlawful/shop/index.vue b/src/views/intelligentPatrol/statistics/unlawful/shop/index.vue
index 110ca53..42aa22b 100644
--- a/src/views/intelligentPatrol/statistics/unlawful/shop/index.vue
+++ b/src/views/intelligentPatrol/statistics/unlawful/shop/index.vue
@@ -1,13 +1,352 @@
<template>
- <div>闂ㄥ墠涓夊寘缁熻</div>
+ <div class="list">
+ <header>
+ <div class="header-content">
+ <div class="search">
+ <span style="padding-right: 20px">鏃堕棿鑼冨洿:</span>
+ <el-date-picker
+ v-model="value2"
+ type="daterange"
+ align="right"
+ unlink-panels
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ :picker-options="pickerOptions"
+ >
+ </el-date-picker>
+ </div>
+
+ <div class="find">
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ @click="setTableDataHandle"
+ >鏌ヨ</el-button
+ >
+ <el-button icon="el-icon-delete-solid" @click="resetTableData"
+ >閲嶇疆</el-button
+ >
+ </div>
+
+ <div class="main-nav-right">
+ <el-button type="primary" icon="el-icon-upload2" @click="handleExport"
+ >瀵煎嚭</el-button
+ >
+ </div>
+ </div>
+ </header>
+ <main>
+ <div class="main-content">
+ <!-- 鏁版嵁灞曠ず -->
+ <el-table
+ ref="multipleTable"
+ :header-cell-style="{
+ background: '#06122c',
+ 'font-size': '12px',
+ color: '#4b9bb7',
+ 'font-weight': '650',
+ 'line-height': '45px',
+ }"
+ :row-class-name="tableRowClassName"
+ :data="list"
+ style="width: 100%"
+ >
+ <el-table-column type="selection" min-width="5"> </el-table-column>
+ <el-table-column prop="name" label="鍟嗘埛鍚嶇О" min-width="10">
+ </el-table-column>
+ <el-table-column prop="count" label="浜嬩欢鎬绘暟" min-width="5">
+ </el-table-column>
+ <el-table-column prop="sanitation" label="鍖呭崼鐢�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="orderliness" label="鍖呯З缁�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="facility" label="鍖呰鏂�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="checked" label="宸插鏍�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="register" label="绔嬫" min-width="5">
+ </el-table-column>
+ <el-table-column prop="registerRatio" label="绔嬫鐜�" min-width="5">
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!-- tools -->
+ <div class="tools">
+ <div class="funs"></div>
+ <div class="pagination">
+ <el-pagination
+ background
+ :current-page="currentPage"
+ layout="prev, pager, next"
+ :total="totalNum"
+ :page-size="pageSize"
+ @current-change="changeCurrentPage"
+ @prev-click="handlePrev"
+ @next-click="handleNext"
+ >
+ </el-pagination>
+ </div>
+ </div>
+ </main>
+ </div>
</template>
+ <script>
+import { createNamespacedHelpers } from "vuex";
+const { mapActions } = createNamespacedHelpers("statistics");
-<script>
export default {
+ data() {
+ return {
+ pickerOptions: {
+ shortcuts: [
+ {
+ text: "鏈�杩戜竴鍛�",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜竴涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜笁涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ ],
+ },
+ value1: "",
+ value2: "",
+ list: [],
+ totalNum: 0,
+ pageSize: 10,
+ currentPage: 1,
+ };
+ },
+ created() {
+ this.setTableData();
+ },
+ methods: {
+ ...mapActions(["searchByShop"]),
-}
+ handleExport(e) {},
+ setTableDataHandle(e) {},
+ resetTableData(e) {},
+ // 璁剧疆琛ㄦ牸鏂戦┈绾�
+ tableRowClassName({ row, rowIndex }) {
+ if ((rowIndex + 1) % 2 == 0) {
+ return "warning-row";
+ } else {
+ return "success-row";
+ }
+ return "";
+ },
+ // 璁剧疆tableData
+ setTableData() {
+ const { currentPage, pageSize, context } = this;
+ this.searchByShop({
+ currentPage,
+ pageSize,
+ beginTime:'2022-05-01 00:00:00',
+ endTime:'2022-09-01 00:00:00'
+ }).then((res) => {
+ if (res.data.code == 200) {
+ this.list = res.data.data.records;
+ this.totalNum = res.data.data.total;
+ }
+ });
+ },
+ // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠�
+ changeCurrentPage(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ // 涓婁竴椤电偣鍑讳簨浠�
+ handlePrev(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ // 涓嬩竴椤电偣鍑讳簨浠�
+ handleNext(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ },
+};
</script>
+ <style lang="scss" scoped>
+.list {
+ text-align: left;
+ margin: 10px 20px;
+ color: #4b9bb7;
-<style>
+ header {
+ background-color: #09152f;
+ border: 1pox solid #fff;
+ .header-content {
+ padding: 0 40px;
+ display: flex;
+ line-height: 100px;
+ justify-content: space-between;
+ align-items: center;
+
+ .search {
+ // display: flex;
+ justify-content: flex-start;
+
+ span {
+ flex: 1;
+ }
+
+ .el-input {
+ flex: 2;
+ color: #1d3f57;
+
+ &::v-deep .el-input__inner {
+ background-color: #09152f;
+ border: 1px solid #17324c;
+ }
+ }
+ .el-select {
+ flex: 1;
+ }
+ .el-date-editor {
+ flex: 1;
+ }
+ :deep(.el-range-input) {
+ background-color: #09152f;
+ }
+ }
+ .find {
+ margin-right: auto;
+ margin-left: 30px;
+ }
+ }
+ }
+
+ :deep(.el-range-separator) {
+ padding: 0px !important;
+ }
+ main {
+ background-color: #09152f;
+ margin-top: 20px;
+ padding-bottom: 50px;
+ border: 1pox solid #fff;
+
+ .main-title {
+ line-height: 60px;
+ padding: 10px 20px;
+ }
+
+ .tools {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 20px;
+
+ .funs {
+ display: flex;
+
+ .funsItem {
+ line-height: 28px;
+ display: flex;
+ align-items: center;
+ border: 1px solid #17324c;
+ border-radius: 4px;
+ font-size: 12px;
+ margin-left: 10px;
+
+ .el-checkbox {
+ width: 80px;
+ padding: 0 10px;
+ }
+
+ .el-select {
+ width: 120px;
+ }
+
+ &::v-deep .el-input__inner {
+ border: none;
+ background-color: #09152f;
+ }
+
+ &:hover {
+ border: 1px solid #4b9bb7;
+ }
+
+ &:hover .el-checkbox {
+ color: #4b9bb7;
+ }
+ }
+ }
+
+ .pagination {
+ margin-top: 50px;
+ display: flex;
+ line-height: 50px;
+ justify-content: center;
+
+ .el-pagination {
+ &::v-deep li,
+ &::v-deep .btn-prev,
+ &::v-deep .btn-next {
+ background-color: #071f39;
+ color: #4b9bb7;
+ }
+
+ &::v-deep .active {
+ background-color: #409eff;
+ color: #fff;
+ }
+ }
+ }
+ }
+ &::v-deep .warning-row {
+ background-color: #06122c;
+ }
+
+ &::v-deep .success-row {
+ background-color: #071f39;
+ }
+
+ .operationBox {
+ display: flex;
+ }
+
+ .el-divider {
+ background-color: #4b9bb7;
+ }
+ .el-table {
+ color: #4b9bb7;
+ font-size: 10px;
+ .operation {
+ display: flex;
+
+ .line {
+ padding: 0 5px;
+ }
+
+ span:hover {
+ cursor: pointer;
+ }
+ }
+ }
+ }
+}
</style>
\ No newline at end of file
diff --git a/src/views/intelligentPatrol/statistics/unlawful/time/index.vue b/src/views/intelligentPatrol/statistics/unlawful/time/index.vue
index 000f533..791de09 100644
--- a/src/views/intelligentPatrol/statistics/unlawful/time/index.vue
+++ b/src/views/intelligentPatrol/statistics/unlawful/time/index.vue
@@ -1,13 +1,348 @@
<template>
- <div>鎸夋椂闂寸粺璁�</div>
+ <div class="list">
+ <header>
+ <div class="header-content">
+ <div class="search">
+ <span style="padding-right: 20px">鏃堕棿鑼冨洿:</span>
+ <el-date-picker
+ v-model="value2"
+ type="daterange"
+ align="right"
+ unlink-panels
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ :picker-options="pickerOptions"
+ >
+ </el-date-picker>
+ </div>
+
+ <div class="find">
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ @click="setTableDataHandle"
+ >鏌ヨ</el-button
+ >
+ <el-button icon="el-icon-delete-solid" @click="resetTableData"
+ >閲嶇疆</el-button
+ >
+ </div>
+
+ <div class="main-nav-right">
+ <el-button type="primary" icon="el-icon-upload2" @click="handleExport"
+ >瀵煎嚭</el-button
+ >
+ </div>
+ </div>
+ </header>
+ <main>
+ <div class="main-content">
+ <!-- 鏁版嵁灞曠ず -->
+ <el-table
+ ref="multipleTable"
+ :header-cell-style="{
+ background: '#06122c',
+ 'font-size': '12px',
+ color: '#4b9bb7',
+ 'font-weight': '650',
+ 'line-height': '45px',
+ }"
+ :row-class-name="tableRowClassName"
+ :data="list"
+ style="width: 100%"
+ >
+ <el-table-column type="selection" min-width="5"> </el-table-column>
+ <el-table-column prop="name" label="浜嬩欢鏃ユ湡" min-width="10">
+ </el-table-column>
+ <el-table-column prop="count" label="浜嬩欢鎬绘暟" min-width="5">
+ </el-table-column>
+ <el-table-column prop="ratio" label="鍗犳瘮" min-width="5">
+ </el-table-column>
+ <el-table-column prop="checked" label="宸插鏍�" min-width="5">
+ </el-table-column>
+ <el-table-column prop="register" label="绔嬫" min-width="5">
+ </el-table-column>
+ <el-table-column prop="registerRatio" label="绔嬫鐜�" min-width="5">
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!-- tools -->
+ <div class="tools">
+ <div class="funs"></div>
+ <div class="pagination">
+ <el-pagination
+ background
+ :current-page="currentPage"
+ layout="prev, pager, next"
+ :total="totalNum"
+ :page-size="pageSize"
+ @current-change="changeCurrentPage"
+ @prev-click="handlePrev"
+ @next-click="handleNext"
+ >
+ </el-pagination>
+ </div>
+ </div>
+ </main>
+ </div>
</template>
+ <script>
+import { createNamespacedHelpers } from "vuex";
+const { mapActions } = createNamespacedHelpers("statistics");
-<script>
export default {
+ data() {
+ return {
+ pickerOptions: {
+ shortcuts: [
+ {
+ text: "鏈�杩戜竴鍛�",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜竴涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜笁涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ ],
+ },
+ value1: "",
+ value2: "",
+ list: [],
+ totalNum: 0,
+ pageSize: 10,
+ currentPage: 1,
+ };
+ },
+ created() {
+ this.setTableData();
+ },
+ methods: {
+ ...mapActions(["searchByTime"]),
-}
+ handleExport(e) {},
+ setTableDataHandle(e) {},
+ resetTableData(e) {},
+ // 璁剧疆琛ㄦ牸鏂戦┈绾�
+ tableRowClassName({ row, rowIndex }) {
+ if ((rowIndex + 1) % 2 == 0) {
+ return "warning-row";
+ } else {
+ return "success-row";
+ }
+ return "";
+ },
+ // 璁剧疆tableData
+ setTableData() {
+ const { currentPage, pageSize, context } = this;
+ this.searchByTime({
+ currentPage,
+ pageSize,
+ beginTime:'2022-05-01 00:00:00',
+ endTime:'2022-09-01 00:00:00'
+ }).then((res) => {
+ if (res.data.code == 200) {
+ this.list = res.data.data.records;
+ this.totalNum = res.data.data.total;
+ }
+ });
+ },
+ // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠�
+ changeCurrentPage(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ // 涓婁竴椤电偣鍑讳簨浠�
+ handlePrev(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ // 涓嬩竴椤电偣鍑讳簨浠�
+ handleNext(page) {
+ this.currentPage = page;
+ this.setTableData();
+ },
+ },
+};
</script>
+ <style lang="scss" scoped>
+.list {
+ text-align: left;
+ margin: 10px 20px;
+ color: #4b9bb7;
-<style>
+ header {
+ background-color: #09152f;
+ border: 1pox solid #fff;
+ .header-content {
+ padding: 0 40px;
+ display: flex;
+ line-height: 100px;
+ justify-content: space-between;
+ align-items: center;
+
+ .search {
+ // display: flex;
+ justify-content: flex-start;
+
+ span {
+ flex: 1;
+ }
+
+ .el-input {
+ flex: 2;
+ color: #1d3f57;
+
+ &::v-deep .el-input__inner {
+ background-color: #09152f;
+ border: 1px solid #17324c;
+ }
+ }
+ .el-select {
+ flex: 1;
+ }
+ .el-date-editor {
+ flex: 1;
+ }
+ :deep(.el-range-input) {
+ background-color: #09152f;
+ }
+ }
+ .find {
+ margin-right: auto;
+ margin-left: 30px;
+ }
+ }
+ }
+
+ :deep(.el-range-separator) {
+ padding: 0px !important;
+ }
+ main {
+ background-color: #09152f;
+ margin-top: 20px;
+ padding-bottom: 50px;
+ border: 1pox solid #fff;
+
+ .main-title {
+ line-height: 60px;
+ padding: 10px 20px;
+ }
+
+ .tools {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 20px;
+
+ .funs {
+ display: flex;
+
+ .funsItem {
+ line-height: 28px;
+ display: flex;
+ align-items: center;
+ border: 1px solid #17324c;
+ border-radius: 4px;
+ font-size: 12px;
+ margin-left: 10px;
+
+ .el-checkbox {
+ width: 80px;
+ padding: 0 10px;
+ }
+
+ .el-select {
+ width: 120px;
+ }
+
+ &::v-deep .el-input__inner {
+ border: none;
+ background-color: #09152f;
+ }
+
+ &:hover {
+ border: 1px solid #4b9bb7;
+ }
+
+ &:hover .el-checkbox {
+ color: #4b9bb7;
+ }
+ }
+ }
+
+ .pagination {
+ margin-top: 50px;
+ display: flex;
+ line-height: 50px;
+ justify-content: center;
+
+ .el-pagination {
+ &::v-deep li,
+ &::v-deep .btn-prev,
+ &::v-deep .btn-next {
+ background-color: #071f39;
+ color: #4b9bb7;
+ }
+
+ &::v-deep .active {
+ background-color: #409eff;
+ color: #fff;
+ }
+ }
+ }
+ }
+ &::v-deep .warning-row {
+ background-color: #06122c;
+ }
+
+ &::v-deep .success-row {
+ background-color: #071f39;
+ }
+
+ .operationBox {
+ display: flex;
+ }
+
+ .el-divider {
+ background-color: #4b9bb7;
+ }
+ .el-table {
+ color: #4b9bb7;
+ font-size: 10px;
+ .operation {
+ display: flex;
+
+ .line {
+ padding: 0 5px;
+ }
+
+ span:hover {
+ cursor: pointer;
+ }
+ }
+ }
+ }
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0