From cc08b164d0b581eea5d087b3696b2f5ddd977c85 Mon Sep 17 00:00:00 2001 From: wuyongtao Date: Mon, 3 Aug 2026 11:02:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=89=8D=E7=AB=AF=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E8=A1=8C=E7=B1=BB=E5=9E=8B=E6=96=AD=E8=A8=80=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=B9=B6=E8=A1=A5=E5=85=85=20psycopg-pool=20=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 审批/项目/租户/用户设置等视图新增 asXxx 类型断言辅助函数 - search-fields 由字符串改为数组传参 - backend 依赖新增 psycopg-pool,Dockerfile 依赖校验同步更新 --- backend/pyproject.toml | 1 + backend/requirements.txt | 1 + docker/app/Dockerfile.backend | 2 +- .../views/approvals/ApprovalInstanceView.vue | 13 ++++-- .../src/views/projects/ProjectDetailView.vue | 9 ++++- .../src/views/projects/ProjectListView.vue | 8 +++- .../src/views/system/UserSettingsView.vue | 40 ++++++++++++------- frontend/src/views/tenants/TenantListView.vue | 15 +++++-- 8 files changed, 63 insertions(+), 26 deletions(-) diff --git a/backend/pyproject.toml b/backend/pyproject.toml index a1d4e4f..02cd526 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -10,6 +10,7 @@ dependencies = [ "pydantic>=2.7.0", "sqlalchemy>=2.0.30", "psycopg[binary]>=3.2.1", + "psycopg-pool>=3.2.1", "alembic>=1.13.1", "redis>=5.0.4", "httpx>=0.27.0", diff --git a/backend/requirements.txt b/backend/requirements.txt index 900f72b..04e346a 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -4,6 +4,7 @@ python-multipart>=0.0.9 pydantic>=2.7.0 sqlalchemy>=2.0.30 psycopg[binary]>=3.2.1 +psycopg-pool>=3.2.1 alembic>=1.13.1 redis>=5.0.4 httpx>=0.27.0 diff --git a/docker/app/Dockerfile.backend b/docker/app/Dockerfile.backend index 1f03dca..c5a7195 100644 --- a/docker/app/Dockerfile.backend +++ b/docker/app/Dockerfile.backend @@ -11,7 +11,7 @@ RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple \ && pip install -r /tmp/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple \ && rm -f /tmp/requirements.txt -RUN python -c "import fastapi, uvicorn, psycopg, sqlalchemy, redis, jwt, passlib, httpx, alembic; print('backend dependency check ok')" +RUN python -c "import fastapi, uvicorn, psycopg, psycopg_pool, sqlalchemy, redis, jwt, passlib, httpx, alembic; print('backend dependency check ok')" RUN mkdir -p /opt/yg-ft/logs/backend /data/yg-ft \ && chmod -R 0775 /opt/yg-ft /data/yg-ft diff --git a/frontend/src/views/approvals/ApprovalInstanceView.vue b/frontend/src/views/approvals/ApprovalInstanceView.vue index db29b4f..4664758 100644 --- a/frontend/src/views/approvals/ApprovalInstanceView.vue +++ b/frontend/src/views/approvals/ApprovalInstanceView.vue @@ -3,7 +3,8 @@ import { onMounted, reactive, ref } from 'vue' import { ElMessage } from 'element-plus' import DataTablePage from '@/components/DataTablePage.vue' import { getApprovalInstances, decideApproval, type ApprovalInstance } from '@/api/modules/approval' -import { getUsers, type SystemUser } from '@/api/modules/system' +import { getUsers } from '@/api/modules/system' +import type { SystemUser } from '@/types' const loading = ref(false) const instances = ref([]) @@ -48,6 +49,10 @@ function openDecide(inst: ApprovalInstance) { showDecide.value = true } +function asApprovalInstance(row: unknown): ApprovalInstance { + return row as ApprovalInstance +} + async function submitDecision() { if (!current.value) return if (!decision.value.approver_id) { @@ -72,7 +77,7 @@ onMounted(() => { diff --git a/frontend/src/views/projects/ProjectListView.vue b/frontend/src/views/projects/ProjectListView.vue index 5f9447b..9deff91 100644 --- a/frontend/src/views/projects/ProjectListView.vue +++ b/frontend/src/views/projects/ProjectListView.vue @@ -41,6 +41,10 @@ function openDetail(id: string) { router.push(`/projects/${id}`) } +function asProject(row: unknown): Project { + return row as Project +} + async function submitCreate() { if (!form.value.name || !form.value.code) { ElMessage.warning('请填写项目名与编码') @@ -61,7 +65,7 @@ onMounted(() => {