feat: 本地 Java 发票 OCR + 策划方案多角色开放 + H5 相机脱敏修复

- OCR: 进程内 PaddleOCR ONNX Runtime 识别替代远程 Python 微服务
  (新增 ocr/core/service/config 引擎, 删 OcrClient/OcrConfig, PDF 文本层优先 + QR 快路径)
- 投稿: 项目设计投稿 → 项目策划方案, doctor/executor/sponsor 三角色开放
  (BizProjectPlan 按非 admin/manager 隔离, 复用 Submissions.vue, 设计文件改 OssFileUploader)
- H5: <video> 去掉 autoplay + safePlay 重试, 穿透 uni-app wrapper 找原生 video
- 脱敏: 签到表高斯模糊由横向条带改为全高竖条带 (20%~50% 宽度)
- 域名: ringdoctor.com → risingdoctor.com
This commit is contained in:
郭庆泰
2026-08-24 19:23:53 +08:00
parent 904e28710f
commit 0c882ae846
36 changed files with 2851 additions and 296 deletions
+9 -2
View File
@@ -48,7 +48,7 @@
</p>
</div>
<div class="hero-cta">
<span class="cta-btn" @click="onSubmit">项目提案</span>
<span v-if="canPropose" class="cta-btn" @click="onSubmit">项目提案</span>
</div>
</section>
@@ -169,6 +169,11 @@ function openPlan(id) {
const topNavClass = computed(() => isScrolled.value ? 'is-scrolled' : '')
const loggedIn = computed(() => !!userStore.token)
const userName = computed(() => userStore.user?.userName || '用户')
// 投稿角色: admin/manager 不开放投稿 → 隐藏「项目提案」按钮; 未登录 user 为 null → 显示(点击引导登录)
const canPropose = computed(() => {
const r = userStore.user?.role || ''
return r !== 'admin' && r !== 'manager'
})
const planSvg = `<svg viewBox="0 150 1200 370" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="2025-2030年项目规划">
<defs>
@@ -257,7 +262,9 @@ function onSubmit() {
router.push('/login')
return
}
router.push('/publicity')
const role = userStore.user?.role
const map = { doctor: '/doctor/submissions', executor: '/executor/submissions', sponsor: '/sponsor/submissions' }
router.push(map[role] || '/doctor/submissions')
}
</script>