From 3b256e6746661117724e7222fb509284ec9affde Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期二, 01 十一月 2022 17:50:19 +0800
Subject: [PATCH] 智能巡查页面
---
src/api/intelligentPatrol/statistics.js | 19 +
src/store/index.js | 4
src/store/intelligentPatrol/statistics.js | 12 +
src/views/intelligentPatrol/statistics/unlawful/time/index.vue | 13 +
src/views/intelligentPatrol/studyJudge/index.vue | 13 +
src/views/intelligentPatrol/statistics/unlawful/shop/index.vue | 13 +
src/views/intelligentPatrol/illegalSearch/index.vue | 13 +
src/views/intelligentPatrol/statistics/unlawful/type/index.vue | 356 +++++++++++++++++++++++++++++++++++
src/views/intelligentPatrol/trendAnalysis/index.vue | 13 +
src/router/index.js | 95 ++++++---
src/views/intelligentPatrol/statistics/unlawful/area/index.vue | 13 +
src/views/intelligentPatrol/statistics/unlawful/point/index.vue | 13 +
12 files changed, 544 insertions(+), 33 deletions(-)
diff --git a/src/api/intelligentPatrol/statistics.js b/src/api/intelligentPatrol/statistics.js
new file mode 100644
index 0000000..fe0261a
--- /dev/null
+++ b/src/api/intelligentPatrol/statistics.js
@@ -0,0 +1,19 @@
+import axios from "axios";
+import {
+ getToken
+} from '@/utils/helper'
+const baseUrl = '/sccg/intelligentPatrol/statistics'
+const token = {
+ 'Authorization': getToken()
+}
+export default {
+ // 鎸夎繚瑙勭被鍨嬬粺璁�
+ searchByType: (data) => axios({
+ method: 'get',
+ url: baseUrl + '/unlawful/type',
+ headers: {
+ ...token
+ },
+ params: data
+ }),
+};
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
index 156daa2..a36d7c7 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,8 +1,7 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
-const routes = [
- {
+const routes = [{
path: "/",
name: 'index',
redirect: '/home'
@@ -14,18 +13,15 @@
meta: {
needLogin: true,
},
- children: [
- {
+ children: [{
path: 'system',
name: 'system',
component: () => import('@/views/systemSetting'),
- children: [
- {
+ children: [{
path: 'userSetting',
name: 'userSetting',
component: () => import('@/views/systemSetting/baseSetting'),
- children: [
- {
+ children: [{
path: "user",
name: "user",
component: () => import('@/views/systemSetting/baseSetting/user')
@@ -47,8 +43,7 @@
path: 'platform',
name: 'platform',
component: () => import('@/views/systemSetting/platform'),
- children: [
- {
+ children: [{
path: 'portalSetting',
name: 'portalSetting',
component: () => import('@/views/systemSetting/platform/portalSetting')
@@ -69,8 +64,7 @@
path: 'device',
name: 'device',
component: () => import('@/views/systemSetting/device'),
- children: [
- {
+ children: [{
path: 'bayonet',
name: 'bayonet',
component: () => import('@/views/systemSetting/device/bayonet')
@@ -89,8 +83,7 @@
path: 'handheldTerminal',
name: 'handheldTerminal',
component: () => import('@/views/systemSetting/device/handheldTerminal'),
- }
- ,
+ },
{
path: 'loudspeaker',
name: 'loudspeaker',
@@ -104,13 +97,11 @@
path: "operate",
name: 'operate',
component: () => import('@/views/operate'),
- children: [
- {
+ children: [{
path: 'baseSetting',
name: 'baseSetting',
component: () => import('@/views/operate/baseSetting'),
- children: [
- {
+ children: [{
path: "violation",
name: 'violation',
component: () => import('@/views/operate/baseSetting/violation'),
@@ -126,8 +117,7 @@
path: 'casepool',
name: 'casepool',
component: () => import('@/views/operate/disposal'),
- children: [
- {
+ children: [{
path: 'pool',
name: 'pool',
component: () => import('@/views/operate/disposal/casepool/pool'),
@@ -158,8 +148,7 @@
path: "fivepack",
name: 'fivepack',
component: () => import('@/views/operate/fivepack'),
- children: [
- {
+ children: [{
path: "shop",
name: 'shop',
component: () => import('@/views/operate/fivepack/shop'),
@@ -180,8 +169,7 @@
path: 'rectification',
name: 'rectification',
component: () => import('@/views/operate/rectification'),
- children: [
- {
+ children: [{
path: "taskList",
name: 'taskList',
component: () => import('@/views/operate/rectification/taskList'),
@@ -208,8 +196,7 @@
name: 'management',
component: () => import('@/views/operate/management'),
redirect: '/home/operate/management/myIndex',
- children: [
- {
+ children: [{
path: 'myIndex',
name: 'myIndex',
component: () => import('@/views/operate/management/myIndex'),
@@ -225,8 +212,7 @@
path: 'car',
name: 'car',
component: () => import('@/views/operate/car'),
- children: [
- {
+ children: [{
path: 'carIndex',
name: 'carIndex',
component: () => import('@/views/operate/car/myIndex'),
@@ -247,8 +233,7 @@
path: 'message',
name: 'message',
component: () => import('@/views/operate/message'),
- children: [
- {
+ children: [{
path: 'messageIndex',
name: 'messageIndex',
component: () => import('@/views/operate/message/myIndex'),
@@ -292,6 +277,49 @@
name: 'info',
component: () => import('@/views/info')
},
+
+ // 鏅鸿兘宸℃煡
+ {
+ path: 'studyJudge', // 棰勮鐮斿垽
+ name: 'studyJudge',
+ component: () => import('@/views/intelligentPatrol/studyJudge'),
+ },
+ {
+ path: 'illegalSearch', // 杩濊妫�绱�
+ name: 'illegalSearch',
+ component: () => import('@/views/intelligentPatrol/illegalSearch'),
+ },
+ {
+ path: 'trendAnalysis', // 瓒嬪娍鍒嗘瀽
+ name: 'trendAnalysis',
+ component: () => import('@/views/intelligentPatrol/trendAnalysis'),
+ },
+ // 杩濇硶缁熻
+ {
+ path: 'typeStatistics', // 鎸夎繚瑙勭被鍨嬬粺璁�
+ name: 'typeStatistics',
+ component: () => import('@/views/intelligentPatrol/statistics/unlawful/type'),
+ },
+ {
+ path: 'pointStatistics', //鎸夌偣浣嶇粺璁�
+ name: 'pointStatistics',
+ component: () => import('@/views/intelligentPatrol/statistics/unlawful/point'),
+ },
+ {
+ path: 'timeStatistics', //鎸夋椂闂寸粺璁�
+ name: 'timeStatistics',
+ component: () => import('@/views/intelligentPatrol/statistics/unlawful/time'),
+ },
+ {
+ path: 'areaStatistics', //鎸夊尯鍩熺粺璁�
+ name: 'areaStatistics',
+ component: () => import('@/views/intelligentPatrol/statistics/unlawful/area'),
+ },
+ {
+ path: 'shopStatistics', //闂ㄥ墠涓夊寘缁熻
+ name: 'shopStatistics',
+ component: () => import('@/views/intelligentPatrol/statistics/unlawful/shop'),
+ }
]
},
{
@@ -319,7 +347,10 @@
name: "/success",
component: () => import('@/views/info/Success'),
},
- { path: '*', redirect: '/404' }
+ {
+ path: '*',
+ redirect: '/404'
+ }
]
const router = new VueRouter({
@@ -331,4 +362,4 @@
router.push = function push(location) {
return originalPush.call(this, location).catch(err => err);
}
-export default router
+export default router
\ No newline at end of file
diff --git a/src/store/index.js b/src/store/index.js
index c271a66..84a64f1 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -6,6 +6,7 @@
import loudspeaker from './system/loudspeaker'
import handheldTerminal from './system/handheldTerminal'
import shortMessage from './operate/managenment/shortMessage'
+import statistics from './intelligentPatrol/statistics'
Vue.use(Vuex)
export default new Vuex.Store({
@@ -19,6 +20,7 @@
bayonet,
shortMessage,
loudspeaker,
- handheldTerminal
+ handheldTerminal,
+ statistics
}
})
\ No newline at end of file
diff --git a/src/store/intelligentPatrol/statistics.js b/src/store/intelligentPatrol/statistics.js
new file mode 100644
index 0000000..b22147a
--- /dev/null
+++ b/src/store/intelligentPatrol/statistics.js
@@ -0,0 +1,12 @@
+import api from "@/api/intelligentPatrol/statistics";
+export default {
+ namespaced: true,
+ state: {
+ userInfo: {},
+ },
+ actions: {
+ searchByType(context, params) {
+ return api.searchByType(params);
+ }
+ },
+};
\ No newline at end of file
diff --git a/src/views/intelligentPatrol/illegalSearch/index.vue b/src/views/intelligentPatrol/illegalSearch/index.vue
new file mode 100644
index 0000000..83fe1d5
--- /dev/null
+++ b/src/views/intelligentPatrol/illegalSearch/index.vue
@@ -0,0 +1,13 @@
+<template>
+ <div>杩濊妫�绱�</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>
\ 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
new file mode 100644
index 0000000..3e73bbc
--- /dev/null
+++ b/src/views/intelligentPatrol/statistics/unlawful/area/index.vue
@@ -0,0 +1,13 @@
+<template>
+ <div>鎸夊尯鍩熺粺璁�</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</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
new file mode 100644
index 0000000..b8057e0
--- /dev/null
+++ b/src/views/intelligentPatrol/statistics/unlawful/point/index.vue
@@ -0,0 +1,13 @@
+<template>
+ <div>鎸夌偣浣嶇粺璁�</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</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
new file mode 100644
index 0000000..110ca53
--- /dev/null
+++ b/src/views/intelligentPatrol/statistics/unlawful/shop/index.vue
@@ -0,0 +1,13 @@
+<template>
+ <div>闂ㄥ墠涓夊寘缁熻</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</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
new file mode 100644
index 0000000..000f533
--- /dev/null
+++ b/src/views/intelligentPatrol/statistics/unlawful/time/index.vue
@@ -0,0 +1,13 @@
+<template>
+ <div>鎸夋椂闂寸粺璁�</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
diff --git a/src/views/intelligentPatrol/statistics/unlawful/type/index.vue b/src/views/intelligentPatrol/statistics/unlawful/type/index.vue
new file mode 100644
index 0000000..adbf32a
--- /dev/null
+++ b/src/views/intelligentPatrol/statistics/unlawful/type/index.vue
@@ -0,0 +1,356 @@
+<template>
+ <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>
+ </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");
+
+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(["searchByType"]),
+
+ 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.searchByType({
+ 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;
+
+ 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/studyJudge/index.vue b/src/views/intelligentPatrol/studyJudge/index.vue
new file mode 100644
index 0000000..9278ea7
--- /dev/null
+++ b/src/views/intelligentPatrol/studyJudge/index.vue
@@ -0,0 +1,13 @@
+<template>
+ <div>棰勮鐮斿垽</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
diff --git a/src/views/intelligentPatrol/trendAnalysis/index.vue b/src/views/intelligentPatrol/trendAnalysis/index.vue
new file mode 100644
index 0000000..da3bee6
--- /dev/null
+++ b/src/views/intelligentPatrol/trendAnalysis/index.vue
@@ -0,0 +1,13 @@
+<template>
+ <div>瓒嬪娍鍒嗘瀽</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
--
Gitblit v1.8.0