feat:框架代码 关于流程信息变更的代码更新

This commit is contained in:
lvjunzhao
2025-04-16 15:22:44 +08:00
parent f55450cc99
commit f3a6f35e40
11 changed files with 102 additions and 67 deletions

View File

@ -22,12 +22,13 @@
</template>
<script setup lang="ts">
import { ref, onMounted, computed, defineAsyncComponent, reactive } from 'vue';
import { FromPageType } from '/@/enums/workflowEnum';
import { ref, onMounted, computed, defineAsyncComponent, reactive,inject } from 'vue';
import {ApproveCode, FromPageType} from '/@/enums/workflowEnum';
import SimpleForm from '/@/components/SimpleForm/src/SimpleForm.vue';
import { GeneratorConfig } from '/@/model/generator/generatorConfig';
import { createFormEvent, loadFormEvent } from '/@/hooks/web/useFormEvent';
import { changeFormJson } from '/@/hooks/web/useWorkFlowForm';
import {message} from "ant-design-vue";
const props = defineProps({
systemComponent: {
@ -63,6 +64,7 @@
default: false,
},
});
const approvalData = ref(null);
const SystemFormRef = ref();
const visible = ref(false);
const formProps = ref({});
@ -129,6 +131,7 @@
onMounted(() => {
visible.value = true;
approvalData.value = inject("approvalData");
});
//
@ -168,11 +171,30 @@
}
async function setFieldsValue(record) {
flowConfig.draftsFormData = record;
SystemFormRef.value?.setFieldsValue(record);
}
async function getFieldsValue(){
return SystemFormRef.value.getFieldsValue();
}
async function getValue(){
let values = null;
if(approvalData.value?.approvedResult === ApproveCode.FINISH){
//终止的单据不走校验逻辑直接更新
try{
//有些旧表单可能没有生成getFieldsValue
values = await SystemFormRef.value.getFieldsValue();
}catch (e){}
}
if(values === null){
values = await SystemFormRef.value.validate();
}
//添加一个flowAction标志用于合同单号回收
values.flowAction = approvalData.value?.approvedResult;
return values;
}
async function workflowSubmit(saveRowKey) {
let values = {};
try {
values = await SystemFormRef.value.validate();
let values = await getValue();
// 提交表单
if (visible.value) {
let id = await submit(saveRowKey);
@ -189,6 +211,7 @@
return values;
} catch (error) {}
}
async function submit(saveRowKey) {
let saveValId = '';
let values = await SystemFormRef.value.validate();
@ -215,6 +238,10 @@
return SystemFormRef.value.setDisabledForm(isDisabled);
}
async function resetFields(){
return SystemFormRef.value.resetFields();
}
async function handleDelete(id) {
let ret;
try {
@ -231,7 +258,9 @@
getRowKey,
validate,
getUploadComponentIds,
resetFields,
setFieldsValue,
getFieldsValue,
getIsOldSystem,
setDisabledForm,
handleDelete

View File

@ -467,16 +467,16 @@ function getTableItemConfig(tableName: string, element) {
}
// 辅助设置表单Disabled
export function changeSchemaDisabled(schemas) {
export function changeSchemaDisabled(schemas,isDisabled=true) {
const layoutComponents = ['tab', 'grid', 'card'];
schemas?.map((info) => {
if (layoutComponents.includes(info.type!)) {
info.children?.map((childInfo) => {
childInfo.list.map((com) => {
if (layoutComponents.includes(com.type)) {
changeSchemaDisabled(childInfo.list);
changeSchemaDisabled(childInfo.list,isDisabled);
} else {
com.dynamicDisabled = true;
com.dynamicDisabled = isDisabled;
}
});
});
@ -485,17 +485,24 @@ export function changeSchemaDisabled(schemas) {
childInfo.list.map((com) => {
com.children.map((el) => {
if (layoutComponents.includes(el.type) || el.type == 'table-layout') {
changeSchemaDisabled(com.children);
changeSchemaDisabled(com.children,isDisabled);
} else {
el.dynamicDisabled = true;
el.dynamicDisabled = isDisabled;
}
});
});
});
} else if (info.type == 'one-for-one') {
changeSchemaDisabled(info.componentProps.childSchemas);
changeSchemaDisabled(info.componentProps.childSchemas,isDisabled);
} else if (info.type == 'form') {
info.dynamicDisabled = isDisabled;
info.componentProps.disabled = isDisabled;
info.componentProps.columns?.forEach((column) => {
column.dynamicDisabled = isDisabled;
if(column?.componentProps) column.componentProps.disabled = isDisabled
})
} else {
info.dynamicDisabled = true;
info.dynamicDisabled = isDisabled;
}
});
return schemas;

View File

@ -1745,8 +1745,8 @@ export function buildSimpleFormCode(model: GeneratorConfig, _tableInfo: TableInf
await systemFormRef.value.resetFields();
}
// 设置表单数据全部为Disabled 【查看】
async function setDisabledForm() {
data.formDataProps.schemas = changeSchemaDisabled(cloneDeep(data.formDataProps.schemas));
async function setDisabledForm(isDisabled) {
data.formDataProps.schemas = changeSchemaDisabled(cloneDeep(data.formDataProps.schemas),isDisabled);
}
// 获取行键值
function getRowKey() {

View File

@ -3,7 +3,6 @@
<BasicTable @register="registerTable" ref="tableRef" @row-dbClick="dbClickRow">
<template #toolbar>
<template v-for="button in tableButtonConfig" :key="button.code">
<a-button v-if="button.isDefault" :type="button.type" @click="buttonClick(button.code)">

View File

@ -110,8 +110,8 @@
await systemFormRef.value.resetFields();
}
// 设置表单数据全部为Disabled 【查看】
async function setDisabledForm() {
data.formDataProps.schemas = changeSchemaDisabled(cloneDeep(data.formDataProps.schemas));
async function setDisabledForm(isDisabled) {
data.formDataProps.schemas = changeSchemaDisabled(cloneDeep(data.formDataProps.schemas), isDisabled);
}
// 获取行键值
function getRowKey() {

View File

@ -57,7 +57,11 @@
</BasicTable>
<!-- 查看 -->
<LookProcess ref="lookProcess" :taskId="taskId" :processId="processId" @close="reload"/>
<LookProcess ref="lookProcess"
:taskId="taskId"
:processId="processId"
:schemaId="schemaId"
@close="reload"/>
<!-- 指派审核人 -->
<ApproveProcessMonitorUser
v-if="data.approvedUserVisible"
@ -407,6 +411,7 @@
async function dbClickRow(record) {
processId.value = record.processId;
taskId.value = record.taskId;//改版 一个流程中可能有多个taskId 已不返回
schemaId.value = record.schemaId;
await nextTick()
await lookProcess.value.look();
}

View File

@ -13,6 +13,7 @@
:taskRecords="data.taskRecords"
:predecessorTasks="selectedPredecessorTasks"
:processId="props.processId"
:schemaId="props.schemaId"
position="top"
>
<FormInformation

View File

@ -8,7 +8,7 @@
<a-button type="primary" class="clean-icon" @click.stop="close">{{ t('关闭') }}</a-button>
</template>
<template #full>
<LookTask v-if="visible" :taskId="props.taskId" :processId="props.processId" />
<LookTask v-if="visible" :taskId="props.taskId" :processId="props.processId" :schemaId="props.schemaId"/>
</template>
</ProcessLayout>
</span>
@ -22,20 +22,20 @@
import { onActivated, onMounted, ref } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n();
const props = defineProps({
processId: {
type: String,
default: ''
const props = withDefaults(
defineProps<{
processId: string;
taskId: string;
schemaId: string;
visible?: boolean;
}>(),
{
processId: '',
taskId: '',
schemaId: '',
visible: false,
},
taskId: {
type: String,
default: ''
},
visible: {
type: Boolean,
default: false
},
})
);
let emits = defineEmits(['close']);
let visible = ref(false);
let showLoading = ref(false);

View File

@ -10,6 +10,7 @@
:taskRecords="data.taskRecords"
:predecessorTasks="selectedPredecessorTasks"
:processId="props.processId"
:schemaId="props.schemaId"
position="top"
>
<FormInformation

View File

@ -19,8 +19,9 @@
:class="activeIndex == index ? 'form-name actived' : 'form-name'"
>
<span :class="item.validate ? 'dot' : 'dot validate'"></span>
<div class="icon-box"> <IconFontSymbol icon="formItem" /> </div
><span @click="changeActiveIndex(index)" v-show="showPanel">{{ item.formName }}</span>
<div class="icon-box">
<IconFontSymbol icon="formItem" />
</div><span @click="changeActiveIndex(index)" v-show="showPanel">{{ item.formName }}</span>
</div>
</div>
</div>
@ -38,25 +39,11 @@
<div id="approveExtendButton"></div>
<div id="approveRightButton"></div>
</div>
<div class="top-toolbar">
<SystemForm
class="form-box"
v-if="item.formType == FormType.SYSTEM"
:systemComponent="item.systemComponent"
:isViewProcess="props.disabled"
:formModel="item.formModel"
:workflowConfig="item"
:ref="setItemRef"
/>
<SimpleForm
v-else-if="item.formType == FormType.CUSTOM"
class="form-box"
:ref="setItemRef"
:formProps="item.formProps"
:formModel="item.formModel"
:isWorkFlow="true"
/>
</div>
<SystemForm class="form-box" v-if="item.formType == FormType.SYSTEM"
:systemComponent="item.systemComponent" :isViewProcess="props.disabled" :formModel="item.formModel"
:workflowConfig="item" :ref="setItemRef" />
<SimpleForm v-else-if="item.formType == FormType.CUSTOM" class="form-box testClass" :ref="setItemRef"
:formProps="item.formProps" :formModel="item.formModel" :isWorkFlow="true" />
</div>
</div>
</div>

View File

@ -7,7 +7,12 @@
:predecessorTasks="[]"
:processId="props.processId"
position="top"
>
:currentTaskInfo="data.currentTaskInfo"
:currentTaskAssigneeNames="data.currentTaskAssigneeNames"
:currentTaskAssignees="data.currentTaskAssignees"
:schemaId="props.schemaId"
:formDataId="data.formInfos[0].formData.id"
:formInfos="data.formInfos">
<FormInformation
:opinionsComponents="data.opinionsComponents"
:opinions="data.opinions"
@ -24,7 +29,7 @@
import { getApprovalProcess } from '/@/api/workflow/task';
import { onMounted, ref } from 'vue';
import userTaskItem from './../../hooks/userTaskItem';
let props = defineProps(['position', 'processId', 'taskId']);
let props = defineProps(['position', 'processId', 'taskId', 'schemaId']);
let visible = ref(false);
const { data, initProcessData } = userTaskItem();
onMounted(async () => {
@ -32,6 +37,7 @@
let res = await getApprovalProcess(props.taskId, props.processId);
initProcessData(res);
visible.value = true;
console.error('555555', data)
} catch (error) {}
});
</script>