feat(前端): 配套授权、监控与同步进度页面

- 角色授权:权限矩阵抽屉与角色创建,按模块分组勾选
- 系统监控:总览、趋势、接口与事件页,15 秒自动刷新,
  请求可中断、窗口切换暂停,详情抽屉支持导出
- T+ 同步:同步进度条组件与工作台状态拆分
- 工资:试用期面板、产品提取弹窗与无权限占位页
- 路由权限:按权限码控制菜单与页面可达性

影响范围:前端全部页面
验证:随本次后端联调本地人工核对,e2e 脚本入库待跑
This commit is contained in:
liuwenxin committed 2026-11-03 11:21:19 +08:00
1 parent 1461a8d113
commit a2f9a58de5
74 files changed
+3025 -576

No files matched your search

@@ -24,7 +24,7 @@ async function submit(): Promise<void> {
entity_types: taskType.value === 'AUDIT' ? [] : [...selected.value], request_key: requestKey })
requestKey = newRequestKey()
visible.value = false
ElMessage.success('任务已排队,处理完成后可刷新查看')
ElMessage.success('任务已提交,处理结果会自动更新')
emit('created', batch)
} catch (error) { handledError(error) }
finally { pending.value = false }
@@ -45,11 +45,11 @@ async function submit(): Promise<void> {
<el-checkbox v-for="item in entities" :key="item.value" :value="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</el-form-item>
<p class="task-note">{{ taskType === 'READ' ? '全量读取所选范围,重复快照自动跳过。只保存原始数据,不写入工资业务表。' : '核对收款方向、单据类型及订单关联,只返回字典和统计数量。' }}</p>
<p class="task-note">{{ taskType === 'READ' ? '读取所选范围内的数据,自动跳过未变化的记录。读取完成后可预览导入,不会自动生成工资。' : '检查收付款单据与订单、销货单的关联情况,供导入前核对;不会修改业务数据。' }}</p>
</el-form>
<template #footer>
<el-button :disabled="pending" @click="visible = false">取消</el-button>
<el-button type="primary" :loading="pending" :disabled="!configured || (taskType === 'READ' && !selected.length)" @click="submit">加入处理队列</el-button>
<el-button type="primary" :loading="pending" :disabled="!configured || (taskType === 'READ' && !selected.length)" @click="submit">创建任务</el-button>
</template>
</el-dialog>
</template>