From 641c4b0c7094c98115dc12ee171ec161e780f876 Mon Sep 17 00:00:00 2001 From: xiaocp2009 <39615122+xiaocp2009@users.noreply.github.com> Date: Wed, 5 Nov 2025 14:06:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=97=A0=E6=B3=95=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E5=B7=A5=E4=BD=9C=E6=B5=81=E4=BF=A1=E6=81=AF=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cds-fontend-2025.V1/readme | 6 ++++- .../workflow/form/flow_demo1/index.vue | 22 +++++++++++++----- .../src/service/api/flowDemo/demo-demo1.ts | 8 +++++++ ....api.d.ts => flowdemo.demo-demo1.api.d.ts} | 0 .../demo-demo1/demo-demo1-flow.vue.flow.bak | 23 +++++++++++++++---- .../demo-demo1/index.vue.vue.flow.bak | 14 +++++------ .../src/main/resources/vm/soy/api/api.ts.vm | 8 +++++++ .../resources/vm/soy/flow.vue.flow.bak.vm | 6 +++-- 8 files changed, 66 insertions(+), 21 deletions(-) rename cds-fontend-2025.V1/src/typings/api/{flowDemo.demo-demo1.api.d.ts => flowdemo.demo-demo1.api.d.ts} (100%) diff --git a/cds-fontend-2025.V1/readme b/cds-fontend-2025.V1/readme index 5829a33..da92110 100644 --- a/cds-fontend-2025.V1/readme +++ b/cds-fontend-2025.V1/readme @@ -29,6 +29,10 @@ https://blog.csdn.net/user990378983/article/details/130324181 2、审批表单中的flowCode必须写死,并一一对应flow_definition表中的flow_code(流程定义时的流程定义编码) 3、不同业务的列表页还是放到views下,当作业务路由组件,但审批表单bicultural放到components下,作为其他工作流动态组件使用 -4、为节省不必要的操作,暂时考虑使用代码工具生成代码后,将模态组件复制到components目录下并微调(flowCode)即可 +4、为节省不必要的操作,暂时考虑使用代码工具生成代码后,将模态组件复制到相关目录下并微调(flowCode)即可 + 审批业务和普通业务不一样,需要使用审批功能时 + 1、将servie.bak、serviceimpl.bak、controller.bak分别替换到正常的java类内容(调整flowCode) + 2、将index.vue.bak的内容替换到index.vue + 3、将flow.vue.bak转移到src/components/workflow/form路径下(调整flowCode) 5、使用附件需要有共享存储,后续优化 diff --git a/cds-fontend-2025.V1/src/components/workflow/form/flow_demo1/index.vue b/cds-fontend-2025.V1/src/components/workflow/form/flow_demo1/index.vue index 5d0cb2a..7b00fc5 100644 --- a/cds-fontend-2025.V1/src/components/workflow/form/flow_demo1/index.vue +++ b/cds-fontend-2025.V1/src/components/workflow/form/flow_demo1/index.vue @@ -3,7 +3,7 @@ import { computed, reactive, ref, watch } from 'vue'; import dayjs from 'dayjs'; import { useBoolean, useLoading } from '@sa/hooks'; import { fetchStartWorkflow } from '@/service/api/workflow'; -import { fetchCreateDemoDemo1, fetchGetDemoDemo1List, fetchUpdateDemoDemo1 } from '@/service/api/flowdemo/demo-demo1'; +import { fetchCreateDemoDemo1, fetchGetDemoDemo1Detail, fetchUpdateDemoDemo1 } from '@/service/api/flowdemo/demo-demo1'; import { useFormRules, useNaiveForm } from '@/hooks/common/form'; import { useDict } from '@/hooks/business/dict'; import { $t } from '@/locales'; @@ -15,6 +15,7 @@ defineOptions({ name: 'DemoDemo1Flow' }); +useDict('wf_task_status'); interface Props { operateType: CommonType.WorkflowTableOperateType; @@ -73,12 +74,23 @@ const model: Model = reactive(createDefaultModel()); function createDefaultModel(): Model { return { - flowCode: 'flow1DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', applyCode: '', + flowCode: 'DemoDemo1', name: '', + flowCode: 'DemoDemo1', age: undefined, + flowCode: 'DemoDemo1', remark: '', + flowCode: 'DemoDemo1', status: '', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', }; } @@ -90,7 +102,7 @@ const modelDetail: ModelDetail = reactive(createDefaultModelDetail()); function createDefaultModelDetail(): ModelDetail { return { - flowCode: 'flow1DemoDemo1', + flowCode: 'DemoDemo1', applyCode: '', name: '', age: undefined, @@ -149,7 +161,7 @@ async function handleUpdateModelWhenEdit() { Object.assign(model, props.rowData); Object.assign(modelDetail, props.rowData); } else { - const { error, data } = await fetchGetDemoDemo1List(props.businessId!); + const { error, data } = await fetchGetDemoDemo1Detail(props.businessId!); if (error) { window.$message?.error(error.message); return; @@ -168,8 +180,6 @@ async function handleOperate() { const { id, applyCode, name, age, remark, status } = model; - console.log(JSON.stringify(model)) - // request if (props.operateType === 'add') { const { error , data } = await fetchCreateDemoDemo1({ applyCode, name, age, remark, status }); diff --git a/cds-fontend-2025.V1/src/service/api/flowDemo/demo-demo1.ts b/cds-fontend-2025.V1/src/service/api/flowDemo/demo-demo1.ts index 03ec448..2fda1bd 100644 --- a/cds-fontend-2025.V1/src/service/api/flowDemo/demo-demo1.ts +++ b/cds-fontend-2025.V1/src/service/api/flowDemo/demo-demo1.ts @@ -9,6 +9,14 @@ export function fetchGetDemoDemo1List (params?: Api.Flowdemo.DemoDemo1SearchPara }); } +/** 获取业务审批demo1详情 */ +export function fetchGetDemoDemo1Detail(id: CommonType.IdType) { + return request({ + url: `/flowdemo/demoDemo1/${id}`, + method: 'get' + }); +} + /** 新增业务审批demo1 */ export function fetchCreateDemoDemo1 (data: Api.Flowdemo.DemoDemo1OperateParams) { return request({ diff --git a/cds-fontend-2025.V1/src/typings/api/flowDemo.demo-demo1.api.d.ts b/cds-fontend-2025.V1/src/typings/api/flowdemo.demo-demo1.api.d.ts similarity index 100% rename from cds-fontend-2025.V1/src/typings/api/flowDemo.demo-demo1.api.d.ts rename to cds-fontend-2025.V1/src/typings/api/flowdemo.demo-demo1.api.d.ts diff --git a/cds-fontend-2025.V1/src/views/flowDemo/demo-demo1/demo-demo1-flow.vue.flow.bak b/cds-fontend-2025.V1/src/views/flowDemo/demo-demo1/demo-demo1-flow.vue.flow.bak index f23c64e..e31b70e 100644 --- a/cds-fontend-2025.V1/src/views/flowDemo/demo-demo1/demo-demo1-flow.vue.flow.bak +++ b/cds-fontend-2025.V1/src/views/flowDemo/demo-demo1/demo-demo1-flow.vue.flow.bak @@ -3,7 +3,7 @@ import { computed, reactive, ref, watch } from 'vue'; import dayjs from 'dayjs'; import { useBoolean, useLoading } from '@sa/hooks'; import { fetchStartWorkflow } from '@/service/api/workflow'; -import { fetchCreateDemoDemo1, fetchGetDemoDemo1Detail, fetchUpdateDemoDemo1 } from '@/service/api/flowDemo/demo-demo1'; +import { fetchCreateDemoDemo1, fetchGetDemoDemo1Detail, fetchUpdateDemoDemo1 } from '@/service/api/flowdemo/demo-demo1'; import { useFormRules, useNaiveForm } from '@/hooks/common/form'; import { useDict } from '@/hooks/business/dict'; import { $t } from '@/locales'; @@ -22,7 +22,7 @@ interface Props { businessId?: CommonType.IdType; taskId?: CommonType.IdType; /** the edit row data */ - rowData?: Api.FlowDemo.DemoDemo1 | null; + rowData?: Api.Flowdemo.DemoDemo1 | null; } const props = withDefaults(defineProps(), { @@ -62,10 +62,10 @@ const readonly = computed(() => { const taskId = ref(props.taskId!); -const respDemoDemo1 = ref(); +const respDemoDemo1 = ref(); const startWorkflowResult = ref(); -type Model = Api.FlowDemo.DemoDemo1OperateParams & { +type Model = Api.Flowdemo.DemoDemo1OperateParams & { flowCode: Api.Workflow.FlowCodeType; }; @@ -73,15 +73,27 @@ const model: Model = reactive(createDefaultModel()); function createDefaultModel(): Model { return { + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', applyCode: '', + flowCode: 'DemoDemo1', name: '', + flowCode: 'DemoDemo1', age: undefined, + flowCode: 'DemoDemo1', remark: '', + flowCode: 'DemoDemo1', status: '', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', + flowCode: 'DemoDemo1', }; } -type ModelDetail = Api.FlowDemo.DemoDemo1OperateParams & { +type ModelDetail = Api.Flowdemo.DemoDemo1OperateParams & { flowCode: Api.Workflow.FlowCodeType; }; @@ -89,6 +101,7 @@ const modelDetail: ModelDetail = reactive(createDefaultModelDetail()); function createDefaultModelDetail(): ModelDetail { return { + flowCode: 'DemoDemo1', applyCode: '', name: '', age: undefined, diff --git a/cds-fontend-2025.V1/src/views/flowDemo/demo-demo1/index.vue.vue.flow.bak b/cds-fontend-2025.V1/src/views/flowDemo/demo-demo1/index.vue.vue.flow.bak index 9aaea2d..ed5d499 100644 --- a/cds-fontend-2025.V1/src/views/flowDemo/demo-demo1/index.vue.vue.flow.bak +++ b/cds-fontend-2025.V1/src/views/flowDemo/demo-demo1/index.vue.vue.flow.bak @@ -2,7 +2,7 @@ import { ref } from 'vue'; import { NDivider, NTag } from 'naive-ui'; import { jsonClone } from '@sa/utils'; -import { fetchBatchDeleteDemoDemo1, fetchGetDemoDemo1List } from '@/service/api/flowDemo/demo-demo1'; +import { fetchBatchDeleteDemoDemo1, fetchGetDemoDemo1List } from '@/service/api/flowdemo/demo-demo1'; import { useAppStore } from '@/store/modules/app'; import { useAuth } from '@/hooks/business/auth'; import { useDownload } from '@/hooks/business/download'; @@ -120,20 +120,20 @@ const { const buttons = []; const showEdit = - hasAuth('flowDemo:demoDemo1:edit') && + hasAuth('flowdemo:demoDemo1:edit') && (row.status === 'draft' || row.status === 'cancel' || row.status === 'back'); const showDelete = - hasAuth('flowDemo:demoDemo1:remove') && + hasAuth('flowdemo:demoDemo1:remove') && (row.status === 'draft' || row.status === 'cancel' || row.status === 'back'); const showCancel = row.status === 'waiting'; - if (hasAuth('flowDemo:demoDemo1:query')) { + if (hasAuth('flowdemo:demoDemo1:query')) { buttons.push( view(row.id!)} /> @@ -244,8 +244,8 @@ function handleExport() { v-model:columns="columnChecks" :disabled-delete="checkedRowKeys.length === 0" :loading="loading" - :show-add="hasAuth('flowDemo:demoDemo1:add')" - :show-delete="hasAuth('flowDemo:demoDemo1:remove')" + :show-add="hasAuth('flowdemo:demoDemo1:add')" + :show-delete="hasAuth('flowdemo:demoDemo1:remove')" :show-export=false @add="handleAdd" @delete="handleBatchDelete" diff --git a/cds-platform-2025.V1/cds-modules/cds-generator/src/main/resources/vm/soy/api/api.ts.vm b/cds-platform-2025.V1/cds-modules/cds-generator/src/main/resources/vm/soy/api/api.ts.vm index c19559e..c350b88 100644 --- a/cds-platform-2025.V1/cds-modules/cds-generator/src/main/resources/vm/soy/api/api.ts.vm +++ b/cds-platform-2025.V1/cds-modules/cds-generator/src/main/resources/vm/soy/api/api.ts.vm @@ -9,6 +9,14 @@ export function fetchGet${BusinessName}List (params?: Api.${ModuleName}.${Busine }); } +/** 获取${functionName}详情 */ +export function fetchGet${BusinessName}Detail(id: CommonType.IdType) { + return request({ + url: `/${moduleName}/${businessName}/${id}`, + method: 'get' + }); +} + /** 新增${functionName} */ export function fetchCreate${BusinessName} (data: Api.${ModuleName}.${BusinessName}OperateParams) { return request({ diff --git a/cds-platform-2025.V1/cds-modules/cds-generator/src/main/resources/vm/soy/flow.vue.flow.bak.vm b/cds-platform-2025.V1/cds-modules/cds-generator/src/main/resources/vm/soy/flow.vue.flow.bak.vm index 35f287f..e3ac4a1 100644 --- a/cds-platform-2025.V1/cds-modules/cds-generator/src/main/resources/vm/soy/flow.vue.flow.bak.vm +++ b/cds-platform-2025.V1/cds-modules/cds-generator/src/main/resources/vm/soy/flow.vue.flow.bak.vm @@ -3,7 +3,7 @@ import { computed, reactive, ref, watch } from 'vue'; import dayjs from 'dayjs'; import { useBoolean, useLoading } from '@sa/hooks'; import { fetchStartWorkflow } from '@/service/api/workflow'; -import { fetchCreate${BusinessName}, fetchGet${BusinessName}List, fetchUpdate${BusinessName} } from '@/service/api/${moduleName}/${business__name}'; +import { fetchCreate${BusinessName}, fetchGet${BusinessName}Detail, fetchUpdate${BusinessName} } from '@/service/api/${moduleName}/${business__name}'; import { useFormRules, useNaiveForm } from '@/hooks/common/form'; import { useDict } from '@/hooks/business/dict'; import { $t } from '@/locales'; @@ -15,6 +15,8 @@ defineOptions({ name: '${BusinessName}Flow' }); +useDict('wf_task_status'); + #if($dictList && $dictList.size() > 0) #foreach($dict in $dictList) const { options: ${dict.name}Options } = useDict('${dict.type}'#if($dict.immediate), false#end); @@ -143,7 +145,7 @@ async function handleUpdateModelWhenEdit() { Object.assign(model, props.rowData); Object.assign(modelDetail, props.rowData); } else { - const { error, data } = await fetchGet${BusinessName}List(props.businessId!); + const { error, data } = await fetchGet${BusinessName}Detail(props.businessId!); if (error) { window.$message?.error(error.message); return;