diff --git a/.env b/.env
index 4250b81..dc0dca0 100644
--- a/.env
+++ b/.env
@@ -1,8 +1,8 @@
# 网站主标题
-VITE_GLOBAL_TITLE= 'PIGX ADMIN'
+VITE_GLOBAL_TITLE= '智慧安防平台'
# footer
-VITE_FOOTER_TITLE= '©2025 pig4cloud.com'
+VITE_FOOTER_TITLE= ''
# 是否是微服务架构(重要)
VITE_IS_MICRO= true
@@ -38,13 +38,13 @@ VITE_VERIFY_IMAGE_ENABLE = false
VITE_WEBSOCKET_ENABLE = false
# 是否开启注册
-VITE_REGISTER_ENABLE = true
+VITE_REGISTER_ENABLE = false
# 是否开启租户自动选择 (根据租户域名)
VITE_AUTO_TENANT = false
# 是否开启多语言切换
-VITE_I18N_ENABLE = true
+VITE_I18N_ENABLE = false
# 是否开启暗黑模式切换
VITE_DARK_MODE_ENABLE = true
diff --git a/.env.prod b/.env.prod
index 7a603b7..e01ec94 100644
--- a/.env.prod
+++ b/.env.prod
@@ -8,10 +8,10 @@ VITE_OPEN = true
ENV = 'prod'
# ADMIN 服务地址
-# VITE_ADMIN_PROXY_PATH = http://127.0.0.1:36588
+VITE_ADMIN_PROXY_PATH = http://127.0.0.1:36588
# 本地
-VITE_ADMIN_PROXY_PATH = http://172.20.10.2:36588
+# VITE_ADMIN_PROXY_PATH = http://172.20.10.2:36588
# 图片访问基础地址
VITE_IMAGE_BASE_PATH = http://123.157.250.162:36588/api
diff --git a/public/favicon.ico b/public/favicon.ico
index df36fcf..30504e2 100644
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/src/api/door/doorRecord.ts b/src/api/door/doorRecord.ts
index a696fc7..a65234a 100644
--- a/src/api/door/doorRecord.ts
+++ b/src/api/door/doorRecord.ts
@@ -1,5 +1,27 @@
import request from "/@/utils/request"
+/**
+ * 加入考勤的人员在位数量分页
+ */
+export function reignCount(data: any) {
+ return request({
+ url: '/admin/door/total/reignCount',
+ method: 'post',
+ data,
+ })
+}
+
+/**
+ * 迟到、早退数量统计
+ */
+export function beLateCount(data: any) {
+ return request({
+ url: '/admin/door/total/beLateCount',
+ method: 'post',
+ data,
+ })
+}
+
export function fetchList(query?: Object) {
return request({
url: '/admin/door/doorRecord/page',
diff --git a/src/layout/logo/index.vue b/src/layout/logo/index.vue
index 284e39c..81d67ea 100644
--- a/src/layout/logo/index.vue
+++ b/src/layout/logo/index.vue
@@ -1,29 +1,29 @@
- {{ themeConfig.globalTitle }}
+ {{ themeConfig.globalTitle }}
-
![]()
+
\ No newline at end of file
diff --git a/src/views/alarm/setting/door/door-setting.vue b/src/views/alarm/setting/door/door-setting.vue
new file mode 100644
index 0000000..6663038
--- /dev/null
+++ b/src/views/alarm/setting/door/door-setting.vue
@@ -0,0 +1,173 @@
+
+
+ 人员高频次出入
+
+
+
+ 道闸报警频次
+
+
+
+
+
+
+
+
+ 次
+
+
+ 人员工作时间
+
+
+
+ 人员工作时间(上午)
+
+
+
+
+
+
+
+ 人员工作时间(下午)
+
+
+
+
+ 夜晚报警
+
+
+
+ 人员夜晚报警时间
+
+
+
+
+ 主楼配置
+
+
+
+ 主楼入口摄像头
+
+
+
+
+ 考勤配置
+
+
+
+ 考勤摄像头
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/alarm/setting/index.vue b/src/views/alarm/setting/index.vue
index bb2cea9..3f4500c 100644
--- a/src/views/alarm/setting/index.vue
+++ b/src/views/alarm/setting/index.vue
@@ -4,61 +4,14 @@
-
-
-
-
-
-
-
-
- 人闸报警频次
-
-
-
-
-
-
-
-
-
- 请输入人闸报警频次
-
-
-
-
-
-
- 次
-
-
-
-
-
-
-
-
-
- 道闸报警频次
-
-
-
-
-
-
-
-
- 次
-
-
-
-
-
-
+
保存配置
@@ -68,16 +21,11 @@
\ No newline at end of file
diff --git a/src/views/car/carAlarm/index.vue b/src/views/car/carAlarm/index.vue
index 05d50b8..229811a 100644
--- a/src/views/car/carAlarm/index.vue
+++ b/src/views/car/carAlarm/index.vue
@@ -35,7 +35,7 @@
-
+
@@ -84,7 +84,7 @@
-
+
@@ -112,8 +112,8 @@
-
+
回放
@@ -195,6 +195,19 @@ function getDictByValue(value: any, tag: any) {
}
}
+function openReplayDialog(row: any) {
+ const dateTime = row.capTime
+ if (!dateTime) return
+ // 获取dateTime前后30秒的时间
+ const baseTime = new Date(dateTime)
+ const startDateTime = new Date(baseTime.getTime() - 30 * 1000)
+ const endDateTime = new Date(baseTime.getTime() + 30 * 1000)
+
+ const startTime = parseTime(startDateTime, '{y}-{m}-{d} {h}:{i}:{s}')
+ const endTime = parseTime(endDateTime, '{y}-{m}-{d} {h}:{i}:{s}')
+
+ replayVideoDialogRef.value.openDialog('channel', row.devChnId, { startTime, endTime })
+}
\ No newline at end of file
diff --git a/src/views/car/carRecord/index.vue b/src/views/car/carRecord/index.vue
index e13408a..f76c609 100644
--- a/src/views/car/carRecord/index.vue
+++ b/src/views/car/carRecord/index.vue
@@ -68,7 +68,7 @@
-
+
diff --git a/src/views/car/carTimes/carTimesTableDialog.vue b/src/views/car/carTimes/carTimesTableDialog.vue
index 12f731f..6ebda7e 100644
--- a/src/views/car/carTimes/carTimesTableDialog.vue
+++ b/src/views/car/carTimes/carTimesTableDialog.vue
@@ -51,7 +51,7 @@
-
+
diff --git a/src/views/door/doorTimes/doorTimesTableDialog.vue b/src/views/door/components/doorTableDialog.vue
similarity index 97%
rename from src/views/door/doorTimes/doorTimesTableDialog.vue
rename to src/views/door/components/doorTableDialog.vue
index 2958622..d0935b0 100644
--- a/src/views/door/doorTimes/doorTimesTableDialog.vue
+++ b/src/views/door/components/doorTableDialog.vue
@@ -1,6 +1,6 @@
-
+
@@ -147,8 +147,8 @@ const resetQuery = () => {
}
// 打开弹窗
-function openDialog(row: any) {
- state.queryForm.personCode = row.personCode
+function openDialog(query: any) {
+ state.queryForm = query
visible.value = true
getDataList();
}
diff --git a/src/views/door/doorAlarm/index.vue b/src/views/door/doorAlarm/index.vue
index ffc9005..264489b 100644
--- a/src/views/door/doorAlarm/index.vue
+++ b/src/views/door/doorAlarm/index.vue
@@ -10,8 +10,8 @@
-
-
+
@@ -30,7 +30,6 @@
@sort-change="sortChangeHandle">
-
@@ -48,7 +47,7 @@
-
+
@@ -112,11 +111,10 @@
-
-
+
回放
diff --git a/src/views/door/doorBeLate/index.vue b/src/views/door/doorBeLate/index.vue
new file mode 100644
index 0000000..c052922
--- /dev/null
+++ b/src/views/door/doorBeLate/index.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common.queryBtn') }}
+
+ {{ $t('common.resetBtn') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.time }}
+ -
+ {{ row.weekStr }}
+
+
+
+
+
+ {{ row.morningPreCount }}
+ 次
+
+
+
+
+
+
+ {{ row.afternoonPreCount }}
+ 人
+
+
+
+
+
+
+ {{ row.timeCount }}
+ 次
+
+
+
+
+
+
+ {{ row.preCount }}
+ 人
+
+
+
+
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/door/doorRecord/index.vue b/src/views/door/doorRecord/index.vue
index c505200..7c0917c 100644
--- a/src/views/door/doorRecord/index.vue
+++ b/src/views/door/doorRecord/index.vue
@@ -39,25 +39,25 @@
{{ row.personCode }}
- 未知
+ 访客
{{ row.personName }}
- 未知
+ 访客
{{ row.paperNumber }}
- 未知
+ 访客
{{ row.deptName }}
- 未知
+ 访客
diff --git a/src/views/door/doorReign/index.vue b/src/views/door/doorReign/index.vue
new file mode 100644
index 0000000..98e96a4
--- /dev/null
+++ b/src/views/door/doorReign/index.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common.queryBtn') }}
+
+ {{ $t('common.resetBtn') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.time }}
+ -
+ {{ row.weekStr }}
+
+
+
+
+
+ {{ row.preCount }}
+ 次
+
+
+
+
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/door/doorTimes/index.vue b/src/views/door/doorTimes/index.vue
index bebfe49..9800dfa 100644
--- a/src/views/door/doorTimes/index.vue
+++ b/src/views/door/doorTimes/index.vue
@@ -71,7 +71,7 @@
详情
+ @click="openDoorTableDialogRef(row)">详情
@@ -79,7 +79,7 @@
v-bind="state.pagination" />
-
+
@@ -91,9 +91,9 @@ import { useDict } from '/@/hooks/dict';
import * as DoorRecordApi from "/@/api/door/doorRecord";
// 引入组件
-const DoorTimesTableDialog = defineAsyncComponent(() => import("./doorTimesTableDialog.vue"));
+const DoorTableDialog = defineAsyncComponent(() => import("../components/doorTableDialog.vue"));
-const doorTimesTableDialogRef = ref
(null)
+const doorTableDialogRef = ref(null)
// 搜索变量
const queryRef = ref()
@@ -152,6 +152,10 @@ const getSummaries = (param: any) => {
return totalRow
}
+function openDoorTableDialogRef(row: any) {
+ doorTableDialogRef.value.openDialog({ personCode: row.personCode })
+}
+
\ No newline at end of file
diff --git a/src/views/login/component/control.vue b/src/views/login/component/control.vue
index 7d2a86b..44c238c 100644
--- a/src/views/login/component/control.vue
+++ b/src/views/login/component/control.vue
@@ -3,12 +3,9 @@
-
+ class="flex items-center justify-center transition-colors rounded-lg cursor-pointer w-9 h-9 bg-white/80 dark:bg-slate-800/80 hover:bg-gray-100 dark:hover:bg-slate-700 backdrop-blur-sm">
+
@@ -20,10 +17,8 @@
-
+
@@ -66,7 +61,7 @@ const onLanguageChange = (lang: string) => {
// 主题切换
const onThemeClick = () => {
if (!isDarkModeEnabled) return; // 如果未启用暗黑模式,直接返回
-
+
const body = document.documentElement as HTMLElement;
themeConfig.value.isDark = !themeConfig.value.isDark;
@@ -91,11 +86,11 @@ const getThemeConfig = computed(() => {
// 在 script setup 中添加
const initLanguage = () => {
if (!isI18nEnabled) return; // 如果未启用多语言,直接返回
-
+
if (Local.get('themeConfig')) {
state.disabledI18n = Local.get('themeConfig').globalI18n;
// 确保 i18n locale 与存储的语言保持一致
-
+
locale.value = state.disabledI18n;
} else {
// 如果没有存储的主题配置,设置默认语言
diff --git a/src/views/login/component/password.vue b/src/views/login/component/password.vue
index b7d3d51..5085fb8 100644
--- a/src/views/login/component/password.vue
+++ b/src/views/login/component/password.vue
@@ -1,14 +1,9 @@
-
+
-
+
@@ -17,31 +12,26 @@
-
+
-
+ @click="state.isShowPassword = !state.isShowPassword">
-
+
@@ -55,17 +45,19 @@
-
+
{{ $t('password.accountBtnText') }}
-
+
@@ -73,14 +65,8 @@
{{ $t('browserMsgText') }}
-
+