信息体组件增加配置项,当值为空时,初始值是否反向更新回去,默认为否,由后端赋值,否则会由于表单数据后加载和双向绑定导致重新赋值
样式调整,去掉列表行按钮间隔竖线 列表也拷贝数据发起流程或无流程数据发起流程的代码生成 增加从localstorage里加载数据发起流程的方法 流程配置中自动填充组件字段可配置必填和编辑
This commit is contained in:
@ -27,6 +27,11 @@ import {inject, ref, watchEffect} from 'vue';
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
//当值为空时,初始值是否反向更新回去,默认为否,由后端赋值,否则会由于表单数据后加载和双向绑定导致重新赋值
|
||||
updateValueWhileEmpty:{
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
userNameWithDepartment:{
|
||||
type: Boolean,
|
||||
default: true
|
||||
@ -86,21 +91,27 @@ import {inject, ref, watchEffect} from 'vue';
|
||||
const deptName=dept?.name||"";
|
||||
//判断传入的值 是不是当前登录人 就不需要发请求获取用户信息了
|
||||
name.value = userStore.getUserInfo.name+(props.userNameWithDepartment&&(deptName||userStore.getUserInfo.departmentName)?("/"+(deptName||userStore.getUserInfo.departmentName)):"");
|
||||
emit('update:value', userStore.getUserInfo.id);
|
||||
if(props.updateValueWhileEmpty){
|
||||
emit('update:value', userStore.getUserInfo.id);
|
||||
}
|
||||
}
|
||||
|
||||
//当前部门
|
||||
if (props.infoType === 1) {
|
||||
//判断传入的值 是不是当前登陆人的部门 就不需要发请求获取用户信息了
|
||||
name.value = userStore.getUserInfo.departmentName;
|
||||
emit('update:value', userStore.getUserInfo.departmentId);
|
||||
if(props.updateValueWhileEmpty) {
|
||||
emit('update:value', userStore.getUserInfo.departmentId);
|
||||
}
|
||||
}
|
||||
|
||||
//当前时间
|
||||
if (props.infoType === 2) {
|
||||
//如果是时间 默认显示参数时间
|
||||
name.value = dateUtil(new Date()).format('YYYY-MM-DD HH:mm:ss');
|
||||
emit('update:value', name.value);
|
||||
if(props.updateValueWhileEmpty) {
|
||||
emit('update:value', name.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -57,7 +57,7 @@
|
||||
type: Array as PropType<ActionItem[]>,
|
||||
default: null,
|
||||
},
|
||||
divider: propTypes.bool.def(true),
|
||||
divider: propTypes.bool.def(false),
|
||||
outside: propTypes.bool,
|
||||
stopButtonPropagation: propTypes.bool.def(false),
|
||||
},
|
||||
|
||||
@ -1008,10 +1008,10 @@ ${hasTemplatePrint ? ' reactive ' : ''}
|
||||
formName: formName
|
||||
}
|
||||
});
|
||||
} else if (record.workflowData?.schemaId && !record.workflowData.taskIds) {
|
||||
} else if (record.workflowData?.schemaId && !record.workflowData.taskIds && record.workflowData.processId) {
|
||||
const { processId, schemaId } = record.workflowData;
|
||||
router.push({
|
||||
path: '/flow/' + schemaId + '/' + (processId || '') + '/approveFlow',
|
||||
path: '/flow/' + schemaId + '/' + processId + '/approveFlow',
|
||||
query: {
|
||||
readonly: 1,
|
||||
taskId: '',
|
||||
@ -1085,7 +1085,8 @@ ${hasTemplatePrint ? ' reactive ' : ''}
|
||||
${
|
||||
hasCopyDataButton
|
||||
? `
|
||||
function handleCopyData(record: Recordable) {
|
||||
async function handleCopyData(record: Recordable) {
|
||||
/*//弹框添加数据
|
||||
${
|
||||
formType === 'modal'
|
||||
? `
|
||||
@ -1098,7 +1099,32 @@ ${hasTemplatePrint ? ' reactive ' : ''}
|
||||
id: record.${camelCaseString(mainTable.pkField)},
|
||||
isCopy: true,
|
||||
});`
|
||||
}
|
||||
}*/
|
||||
|
||||
const result = await get${pascalMainTableName}(record['${camelCaseString(mainTable.pkField)}']);
|
||||
const form={};
|
||||
const key="form_copy_"+record['${camelCaseString(mainTable.pkField)}'];
|
||||
form[key]=result;
|
||||
localStorage.setItem('formJsonStr', JSON.stringify(form));
|
||||
|
||||
const schemaId=record.workflowData?.schemaId||schemaIdComputedRef.value;
|
||||
if(schemaId){
|
||||
router.push({
|
||||
path: '/flow/' + schemaId + '/0/createFlow',
|
||||
query: {
|
||||
fromKey: key
|
||||
}
|
||||
});
|
||||
}else{
|
||||
router.push({
|
||||
path: '/form/${lowerClassName}/0/createForm',
|
||||
query: {
|
||||
formPath: '${model.outputConfig.outputValue}/${lowerClassName}',
|
||||
formName: formName,
|
||||
fromKey: key
|
||||
}
|
||||
});
|
||||
}
|
||||
}`
|
||||
: ''
|
||||
}
|
||||
@ -1481,14 +1507,14 @@ ${hasTemplatePrint ? ' reactive ' : ''}
|
||||
let editAndDelBtn: ActionItem[] = [];
|
||||
${hasFlowRecordButton ? `let hasFlowRecord = false;` : ''}
|
||||
actionButtonConfig.value?.map((button) => {
|
||||
if (button.code === 'view') {
|
||||
if (['view', 'copyData'].includes(button.code)) {
|
||||
actionsList.push({
|
||||
icon: button?.icon,
|
||||
tooltip: button?.name,
|
||||
onClick: handleView.bind(null, record),
|
||||
onClick: btnEvent[button.code].bind(null, record),
|
||||
});
|
||||
}
|
||||
if (['edit', 'copyData', 'delete'].includes(button.code)) {
|
||||
if (['edit', 'delete'].includes(button.code)) {
|
||||
editAndDelBtn.push({
|
||||
icon: button?.icon,
|
||||
tooltip: button?.name,
|
||||
@ -1594,28 +1620,31 @@ ${hasTemplatePrint ? ' reactive ' : ''}
|
||||
}
|
||||
|
||||
async function handleLaunchProcess(record: Recordable) {
|
||||
if (record.workflowData) {
|
||||
if (record.workflowData.draftId) {
|
||||
let res = await getDraftInfo(record.workflowData.draftId);
|
||||
let data = isValidJSON(res.formData);
|
||||
if (data) {
|
||||
for (let key in data) {
|
||||
if (key.includes(formIdComputedRef.value)) {
|
||||
formDataRef.value = data[key];
|
||||
}
|
||||
const schemaId=record.workflowData?.schemaId||schemaIdComputedRef.value;
|
||||
if(schemaId){
|
||||
if(record.workflowData?.draftId){
|
||||
let res = await getDraftInfo(record.workflowData.draftId);
|
||||
if (isValidJSON(res.formData)) {
|
||||
localStorage.setItem('draftsJsonStr', res.formData);
|
||||
router.push({
|
||||
path: '/flow/' + schemaId + '/'+record.workflowData.draftId+'/createFlow'
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
draftsId.value = record.workflowData.draftId;
|
||||
} else {
|
||||
const result = await get${pascalMainTableName}(record['${camelCaseString(
|
||||
mainTable.pkField,
|
||||
)}']);
|
||||
formDataRef.value = result;
|
||||
|
||||
const result = await get${pascalMainTableName}(record['${camelCaseString(mainTable.pkField)}']);
|
||||
const form={};
|
||||
const key="form_"+schemaId+"_"+record['${camelCaseString(mainTable.pkField)}'];
|
||||
form[key]=result;
|
||||
localStorage.setItem('formJsonStr', JSON.stringify(form));
|
||||
router.push({
|
||||
path: '/flow/' + schemaId + '/0/createFlow',
|
||||
query: {
|
||||
fromKey: key
|
||||
}
|
||||
});
|
||||
}
|
||||
rowKeyData.value = record['${camelCaseString(mainTable.pkField)}'];
|
||||
visibleLaunchProcessRef.value = true;
|
||||
schemaIdRef.value = record.workflowData.schemaId;
|
||||
}
|
||||
}
|
||||
function handleApproveProcess(record: Recordable) {
|
||||
const { processId, taskIds, schemaId } = record.workflowData;
|
||||
|
||||
@ -78,11 +78,13 @@
|
||||
const currentRoute = router.currentRoute.value;
|
||||
const rParams = currentRoute.params;
|
||||
const fullPath = currentRoute.fullPath;
|
||||
const rQuery = currentRoute.query;
|
||||
const rSchemaId = rParams.arg1;
|
||||
const rDraftsId = rParams.arg2;
|
||||
const taskId = ref();
|
||||
const loading = ref(false);
|
||||
const draftsJsonStr = localStorage.getItem('draftsJsonStr');
|
||||
const formJsonStr = localStorage.getItem('formJsonStr');
|
||||
let formInformation = ref();
|
||||
const opinionDlg = ref();
|
||||
let pageMode = 'new';
|
||||
@ -111,6 +113,9 @@
|
||||
localStorage.removeItem('draftsJsonStr');
|
||||
pageMode = 'draft';
|
||||
}
|
||||
if (formJsonStr) {
|
||||
localStorage.removeItem('formJsonStr');
|
||||
}
|
||||
|
||||
function closeFlowChart() {
|
||||
showFlowChart.value = false;
|
||||
@ -145,6 +150,7 @@
|
||||
// 这里的顺序不能变 表单不渲染的时候 设置表单初值没用
|
||||
await nextTick();
|
||||
await initDraftsFormData();
|
||||
await initFromFormData();
|
||||
});
|
||||
|
||||
async function initDraftsFormData() {
|
||||
@ -162,6 +168,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function initFromFormData() {
|
||||
if (formJsonStr) {
|
||||
let formDataJson = JSON.parse(formJsonStr);
|
||||
let formData = [];
|
||||
if(rQuery.fromKey&&formDataJson[rQuery.fromKey]){
|
||||
formData.push(formDataJson[rQuery.fromKey]);
|
||||
}
|
||||
await formInformation.value.setFormData(formData);
|
||||
}
|
||||
}
|
||||
|
||||
async function saveDraft() {
|
||||
try {
|
||||
disableSubmit.value = true;
|
||||
@ -323,8 +340,8 @@
|
||||
selectIds: []
|
||||
};
|
||||
});
|
||||
const strictDesign=false;
|
||||
if (strictDesign&&taskList.length > 0) {
|
||||
const strictDesign = false;
|
||||
if (strictDesign && taskList.length > 0) {
|
||||
notificationError('提交失败', '流程设计错误,开始后的第一个节点必须是审批人为发起人的起草节点。');
|
||||
data.submitLoading = false;
|
||||
loading.value = false;
|
||||
|
||||
@ -22,7 +22,7 @@ export const disableTypes = [
|
||||
titleType,
|
||||
dividerType,
|
||||
infoType,
|
||||
autoCodeType,
|
||||
//autoCodeType,
|
||||
'qrcode', //二维码组件
|
||||
]; //表单字段仅仅只有查看权限
|
||||
// 开关,滑块,颜色选择,评分,图片 组件权限中,必填权限为disable
|
||||
@ -31,7 +31,7 @@ export const requiredDisabled = [
|
||||
titleType,
|
||||
dividerType,
|
||||
infoType,
|
||||
autoCodeType,
|
||||
//autoCodeType,
|
||||
buttonType,
|
||||
'switch',
|
||||
'slider',
|
||||
|
||||
Reference in New Issue
Block a user