From 15b5c60d13655519a3a744a67e988b45656508a4 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期四, 06 三月 2025 11:10:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
server/system_service/src/main/java/com/doumee/core/utils/Constants.java | 2
admin/src/api/business/visitEvent.js | 5 +
admin/src/views/business/dangerStatic.vue | 112 ++++++++++++++++++++++
admin/src/views/platform/index.vue | 11 ++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java | 11 +-
admin/src/views/business/visitEvent.vue | 115 +++++++++++++---------
6 files changed, 202 insertions(+), 54 deletions(-)
diff --git a/admin/src/api/business/visitEvent.js b/admin/src/api/business/visitEvent.js
index 94918e5..6264012 100644
--- a/admin/src/api/business/visitEvent.js
+++ b/admin/src/api/business/visitEvent.js
@@ -14,3 +14,8 @@
download: true
})
}
+export function fetchcountNum (data) {
+ return request.post('/visitsAdmin/cloudService/business/visitEvent/countNum', data, {
+ trim: true
+ })
+}
\ No newline at end of file
diff --git a/admin/src/views/business/dangerStatic.vue b/admin/src/views/business/dangerStatic.vue
new file mode 100644
index 0000000..49d5e6d
--- /dev/null
+++ b/admin/src/views/business/dangerStatic.vue
@@ -0,0 +1,112 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getData(1)" @clear="clear"
+ @changeForm='changeForm'>
+ <template #fastdate>
+ <el-radio-group v-model="filters.fastdate" size="small" @input="changeForm">
+ <el-radio-button label="0">褰撳ぉ</el-radio-button>
+ <el-radio-button label="6">杩�7澶�</el-radio-button>
+ <el-radio-button label="29">杩�30澶�</el-radio-button>
+ </el-radio-group>
+ </template>
+ </QueryForm>
+ <div class="main_content">
+ <div class="type_wrap">
+ <div class="title">闅愭偅绫诲瀷缁熻</div>
+ <div class="type" ref="typeRef"></div>
+ </div>
+ <div class="dept_wrap">
+ <div class="title">闅愭偅褰掑睘閮ㄩ棬缁熻</div>
+ <div class="dept" ref="deptRef"></div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import QueryForm from '@/components/common/QueryForm'
+import echarts from 'echarts'
+export default {
+ components: {
+ QueryForm,
+ },
+ data() {
+ return {
+ filters: {},
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'status',
+ type: 'select',
+ label: '鐘舵��',
+ options: [
+ { label: '璁垮鐢宠', value: '0' },
+ { label: '璁垮鎶ュ', value: '1' },
+ { label: '鐢ㄨ溅鐢宠', value: '2' },
+ { label: '闅愭偅闅忔墜鎷�', value: '3' },
+ { label: '鐗╂祦杞︾敵璇�', value: '6' }
+ ]
+ },
+ {
+ filed1: 'startDate',
+ filed2: 'endDate',
+ type: 'datetime',
+ label: '鎻愭姤鏃堕棿'
+ },
+ {
+ type: 'slot',
+ filed: 'fastdate',
+ label: ''
+ }
+ ],
+ online: true
+ },
+ }
+ },
+ methods: {
+ getData(page) {
+ console.log(this.filters)
+ },
+ changeForm(form) {
+ console.log(form)
+ },
+ clear() {
+ this.filters = {}
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.main_app {
+ height: 100%;
+}
+
+.main_content {
+ display: flex;
+ height: calc(100% - 110px);
+ .title {
+ font-weight: 600;
+ font-size: 16px;
+ color: #222222;
+ margin-bottom: 20px;
+ margin-top: 20px;
+ }
+
+ .type_wrap {
+ flex: 5;
+ flex-shrink: 0;
+ border: 1px solid #E5E5E5;
+ height: 100%;
+ border-right: 12px solid #f7f7f7;
+ }
+
+ .dept_wrap {
+ flex: 4;
+ flex-shrink: 0;
+ border: 1px solid #E5E5E5;
+ height: 100%;
+ padding-left: 20px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/business/visitEvent.vue b/admin/src/views/business/visitEvent.vue
index 4af12b0..a95a8b9 100644
--- a/admin/src/views/business/visitEvent.vue
+++ b/admin/src/views/business/visitEvent.vue
@@ -1,58 +1,64 @@
<template>
<TableLayout :permissions="['business:visitevent:query']">
<!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyWords">
- <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="杞︾墝鍙�" prop="carNo">
- <el-input v-model="searchForm.carNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="缁勭粐鍚嶇О" prop="visitorWorkUint">
- <el-input v-model="searchForm.visitorWorkUint" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="浜嬩欢绫诲瀷" prop="eventType">
- <el-select v-model="searchForm.eventType" placeholder="璇烽�夋嫨">
- <el-option label="璁垮鐧昏" value="541200006"></el-option>
- <el-option label="璁垮绛剧" value="541200007"></el-option>
- <el-option label="璁垮閫氳" value="541200060"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="杩涘嚭绫诲瀷" prop="inOrOut">
- <el-select v-model="searchForm.inOrOut" placeholder="璇烽�夋嫨">
- <el-option label="杩�" value="0"></el-option>
- <el-option label="鍑�" value="1"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="璧峰鏃堕棿" prop="carNo">
- <!-- <el-date-picker @change="seleTime" v-model="time" type="datetimerange" format="yyyy-MM-dd HH:mm:ss"
+ <div slot="search-form" ref="QueryFormRef">
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyWords">
+ <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="杞︾墝鍙�" prop="carNo">
+ <el-input v-model="searchForm.carNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="缁勭粐鍚嶇О" prop="visitorWorkUint">
+ <el-input v-model="searchForm.visitorWorkUint" placeholder="璇疯緭鍏ョ粍缁囧悕绉�"
+ @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="浜嬩欢绫诲瀷" prop="eventType">
+ <el-select v-model="searchForm.eventType" placeholder="璇烽�夋嫨">
+ <el-option label="璁垮鐧昏" value="541200006"></el-option>
+ <el-option label="璁垮绛剧" value="541200007"></el-option>
+ <el-option label="璁垮閫氳" value="541200060"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="杩涘嚭绫诲瀷" prop="inOrOut">
+ <el-select v-model="searchForm.inOrOut" placeholder="璇烽�夋嫨">
+ <el-option label="杩�" value="0"></el-option>
+ <el-option label="鍑�" value="1"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璧峰鏃堕棿" prop="carNo">
+ <!-- <el-date-picker @change="seleTime" v-model="time" type="datetimerange" format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡">
</el-date-picker> -->
- <el-date-picker type="datetime" v-model="searchForm.startTime" value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="璇烽�夋嫨寮�濮嬫椂闂�" @change="changeRadio" />
- <el-date-picker type="datetime" v-model="searchForm.endTime" value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="璇烽�夋嫨缁撴潫鏃堕棿" @change="changeRadio" />
- </el-form-item>
- <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
- <el-radio-button label="0">褰撳ぉ</el-radio-button>
- <el-radio-button label="1">杩�7澶�</el-radio-button>
- <el-radio-button label="2">杩�30澶�</el-radio-button>
- </el-radio-group>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
+ <el-date-picker type="datetime" v-model="searchForm.startTime" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="璇烽�夋嫨寮�濮嬫椂闂�" @change="changeRadio" />
+ <el-date-picker type="datetime" v-model="searchForm.endTime" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="璇烽�夋嫨缁撴潫鏃堕棿" @change="changeRadio" />
+ </el-form-item>
+ <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+ <el-radio-button label="0">褰撳ぉ</el-radio-button>
+ <el-radio-button label="1">杩�7澶�</el-radio-button>
+ <el-radio-button label="2">杩�30澶�</el-radio-button>
+ </el-radio-group>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ </div>
+
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:visitevent:exportExcel']">
<li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:visitevent:exportExcel']"
@click="exportExcel">瀵煎嚭</el-button></li>
+ <li class="ml20"> 鎷滆浜烘锛�<span class="primaryColor">{{staticObj.eventNum}}娆�</span></li>
+ <li class="ml20"> 鎷滆浜烘暟锛�<span class="primaryColor">{{staticObj.visitorNum}}浜�</span></li>
</ul>
- <el-table v-loading="isWorking.search" :data="tableData.list" stripe>
- <el-table-column prop="personName" label="濮撳悕" min-width="100px"></el-table-column>
+ <el-table :max-height="tableHeight" v-loading="isWorking.search" :data="tableData.list" stripe>
+ <el-table-column prop="personName" label="濮撳悕" min-width="90px"></el-table-column>
<el-table-column prop="phone" label="鎵嬫満鍙风爜" min-width="100px"></el-table-column>
- <el-table-column prop="idcardDecode" label="韬唤璇佸彿鐮�" min-width="100px"></el-table-column>
+ <el-table-column prop="idcardDecode" label="韬唤璇佸彿鐮�" min-width="120px"></el-table-column>
<el-table-column prop="visitorWorkUint" label="缁勭粐" min-width="100px"></el-table-column>
<el-table-column prop="carNo" label="杞︾墝鍙�" min-width="100px"></el-table-column>
<el-table-column prop="beVisitedPersonName" label="琚浜�" min-width="100px"></el-table-column>
@@ -72,7 +78,7 @@
</el-image>
</template>
</el-table-column>
- <el-table-column prop="createDate" label="浜嬩欢鏃堕棿" min-width="100px"></el-table-column>
+ <el-table-column prop="createDate" label="浜嬩欢鏃堕棿" min-width="120px"></el-table-column>
</el-table>
<pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
</pagination>
@@ -85,6 +91,7 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { timeForMat } from '@/utils/util'
+import { fetchcountNum } from '@/api/business/visitEvent'
export default {
name: 'VisitEvent',
extends: BaseTable,
@@ -103,7 +110,9 @@
visitorWorkUint: '',
radio: '0'
},
- time: []
+ tableHeight: 400,
+ time: [],
+ staticObj: {}
}
},
created() {
@@ -117,12 +126,22 @@
this.changeRadio('0')
this.search()
},
+ mounted() {
+ this.$nextTick(() => {
+ this.tableHeight = document.body.scrollHeight - this.$refs.QueryFormRef.offsetHeight - 300
+ })
+ },
methods: {
seleTime(e) {
this.searchForm.startTime = e[0]
this.searchForm.endTime = e[1]
this.searchForm.radio = null
this.search()
+ },
+ getCountNum() {
+ fetchcountNum(this.searchForm).then(res => {
+ this.staticObj = res
+ })
},
changeRadio(e) {
if (e === '0') {
@@ -149,7 +168,11 @@
this.time = []
this.searchForm = {}
this.search()
- }
+ },
+ search() {
+ this.getCountNum()
+ this.handlePageChange(1)
+ },
}
}
</script>
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index e566346..82d288f 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -202,17 +202,26 @@
detail: {},
isShowQueuing: false,
timer: null,
+ timer2: null,
loadingOpen: false,
loadingFinish: false,
}
},
created() {
- setInterval(() => {
+ this.timer2 = setInterval(() => {
this.getPlatGroupList()
}, 1000 * 20)
this.getPlatGroupList()
},
+ beforeDestroy() {
+ if (this.timer2) {
+ clearInterval(this.timer2)
+ }
+ if (this.timer) {
+ clearInterval(this.timer)
+ }
+ },
methods: {
handleWork(item) {
this.loadingOpen = true
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 95c9d88..4b0a54c 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -726,7 +726,7 @@
"meeting_user_rel ur\n" +
"LEFT JOIN `SYSTEM_USER` su ON ur.USER_ID = su.id \n" +
"LEFT JOIN meeting_book b ON ur.OBJ_ID = b.id \n" +
- "WHERE DATE_FORMAT(b.START_TIME,'%Y') = #{yearNum} AND b.STATUS = 0" +
+ "WHERE DATE_FORMAT(b.START_TIME,'%Y') = #{yearNum} AND b.STATUS in(0,2) and b.isdeleted=0" +
"<if test='userId != null'>"+
"and ur.USER_ID = #{userId}\n" +
"</if>"+
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java
index df2ed78..82a6608 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java
@@ -258,17 +258,18 @@
if(count!=null){
data.setEventNum(count);
}
- Long count1 = visitEventJoinMapper.selectCount(new QueryWrapper<VisitEvent>().lambda()
+ VisitEvent count1 = visitEventJoinMapper.selectOne(new QueryWrapper<VisitEvent>()
+ .select("count(distinct(visitor_id)) as num")
+ .lambda()
.ge(StringUtils.isNotBlank(model.getStartTime()),VisitEvent::getCreateDate, model.getStartTime())
.le(StringUtils.isNotBlank(model.getEndTime()), VisitEvent::getCreateDate,model.getEndTime())
.eq( VisitEvent::getIsdeleted,Constants.ZERO)
.eq( VisitEvent::getInOrOut,Constants.ZERO)
.isNotNull(VisitEvent::getVisitorId)
.eq(VisitEvent::getEventType,HKConstants.EventTypes.VISIT_SIGN_ICCM_PASS.getKey())
- .groupBy(VisitEvent::getVisitorId)
);
if(count1!=null){
- data.setVisitorNum(count);
+ data.setVisitorNum((long)Constants.formatIntegerNum(count1.getNum()));
}
return data;
}
@@ -322,13 +323,11 @@
return visitEventDTOIPage;
}
-
private List<VisitEvent> newVisitEvent(List<VisitEvent> VisitEventDTOList) {
List<String> codes = Arrays.asList(Constants.FTP_RESOURCE_PATH,Constants.MEMBER_IMG);
List<SystemDictData> list = systemDictDataMapper.list(codes);
Map<String,SystemDictData> dataMap = list.stream().collect(Collectors.toMap(SystemDictData::getLabel, Function.identity()));
VisitEventDTOList.stream().forEach(obj->{
-
if(StringUtils.isNotBlank( obj.getCaptureUrl())
&& !obj.getCaptureUrl().startsWith(HKConstants.IMG_INDEX)
&& !obj.getCaptureUrl().startsWith(HKConstants.IMG_INDEX_ERROR)) {
@@ -338,7 +337,7 @@
+obj.getCaptureUrl());
}
}
- obj.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType())); ;
+ obj.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType()));
});
return VisitEventDTOList;
}
--
Gitblit v1.9.3