解决无法查看工作流信息的bug

This commit is contained in:
xiaocp2009 2025-11-05 14:06:57 +08:00
parent 6d096e450a
commit 641c4b0c70
8 changed files with 66 additions and 21 deletions

View File

@ -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、使用附件需要有共享存储,后续优化

View File

@ -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 });

View File

@ -9,6 +9,14 @@ export function fetchGetDemoDemo1List (params?: Api.Flowdemo.DemoDemo1SearchPara
});
}
/** 获取业务审批demo1详情 */
export function fetchGetDemoDemo1Detail(id: CommonType.IdType) {
return request<Api.Flowdemo.DemoDemo1>({
url: `/flowdemo/demoDemo1/${id}`,
method: 'get'
});
}
/** 新增业务审批demo1 */
export function fetchCreateDemoDemo1 (data: Api.Flowdemo.DemoDemo1OperateParams) {
return request<boolean>({

View File

@ -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<Props>(), {
@ -62,10 +62,10 @@ const readonly = computed(() => {
const taskId = ref<CommonType.IdType>(props.taskId!);
const respDemoDemo1 = ref<Api.FlowDemo.DemoDemo1>();
const respDemoDemo1 = ref<Api.Flowdemo.DemoDemo1>();
const startWorkflowResult = ref<Api.Workflow.StartWorkflowResult>();
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,

View File

@ -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(
<ButtonIcon
text
type="info"
local-icon="round-refresh"
localIcon="visibility-outline"
tooltipContent="查看"
onClick={() => 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"

View File

@ -9,6 +9,14 @@ export function fetchGet${BusinessName}List (params?: Api.${ModuleName}.${Busine
});
}
/** 获取${functionName}详情 */
export function fetchGet${BusinessName}Detail(id: CommonType.IdType) {
return request<Api.${ModuleName}.${BusinessName}>({
url: `/${moduleName}/${businessName}/${id}`,
method: 'get'
});
}
/** 新增${functionName} */
export function fetchCreate${BusinessName} (data: Api.${ModuleName}.${BusinessName}OperateParams) {
return request<boolean>({

View File

@ -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;