feat: 操作日志系统 + 日期修复 + 协同去重 + 主题持久化 + 计划自动完成

本次累积提交包含以下功能:

1. 修复:el-date-picker 缺失 value-format 导致日期保存偏移(8处)
2. 新增:协同拜访 visit_group_id 去重机制(完整副本 + 周报合并 + 亮灯去重)
3. 新增:计划自动完成(创建计划检测已有拜访 / 编辑拜访触发)
4. 新增:拜访表单选择客户后自动预填过期计划内容
5. 新增:移动端主题切换按钮 + 后端持久化
6. 新增:操作日志系统 (audit_logs),全覆盖 8 个模块 CRUD
7. 新增:PC端「我的数据」支局长/领导视角客户经理列

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-30 12:01:14 +08:00
parent 9b5805447e
commit 2187be7aeb
35 changed files with 839 additions and 80 deletions
+13 -2
View File
@@ -9,6 +9,17 @@ const route = useRoute()
const auth = useAuthStore()
const loading = ref(false)
function isMobileDevice(): boolean {
const ua = navigator.userAgent || ''
return /Android|iPhone|iPad|iPod|webOS/i.test(ua) || window.innerWidth < 768
}
function getHomePath(): string {
// 客户经理永远走移动端;支局长/分管领导根据设备自动适配
if (auth.isManager) return '/m'
return isMobileDevice() ? '/m' : '/'
}
function goCasdoorLogin() {
const returnUrl = (route.query.redirect as string) || ''
if (returnUrl) {
@@ -32,7 +43,7 @@ onMounted(async () => {
const returnUrl = sessionStorage.getItem('login_return_url')
if (returnUrl) { sessionStorage.removeItem('login_return_url'); router.push(returnUrl); return }
ElMessage.success('登录成功')
router.push(auth.isManager ? '/m' : '/')
router.push(getHomePath())
} catch (e: any) {
ElMessage.error('登录失败: ' + (e.response?.data?.detail || e.message))
} finally {
@@ -60,7 +71,7 @@ onMounted(async () => {
const returnUrl = sessionStorage.getItem('login_return_url')
if (returnUrl) { sessionStorage.removeItem('login_return_url'); router.push(returnUrl); return }
ElMessage.success('登录成功')
router.push(auth.isManager ? '/m' : '/')
router.push(getHomePath())
} catch (e: any) {
ElMessage.error('企微登录失败')
} finally {