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