代码生成器模板小优化:生成的列表默认吸底、代码生成年、月、日存储格式修改

This commit is contained in:
JEECG
2025-07-01 10:15:32 +08:00
parent 4108ba54c3
commit d64e8b0adb
31 changed files with 535 additions and 29 deletions

View File

@ -117,6 +117,15 @@
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
</#if> </#if>
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
const [registerBpmModal, { openModal: bpmPicModal }] = useModal(); const [registerBpmModal, { openModal: bpmPicModal }] = useModal();
@ -133,7 +142,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
formConfig: { formConfig: {
//labelWidth: 120, //labelWidth: 120,
schemas: searchFormSchema, schemas: searchFormSchema,
@ -171,6 +180,13 @@
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
if (params && fieldPickers) {
for (let key in fieldPickers) {
if (params[key]) {
params[key] = getDateByPicker(params[key], fieldPickers[key]);
}
}
}
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
}, },
<#if list_has_popup_dict> <#if list_has_popup_dict>

View File

@ -19,12 +19,13 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref} from 'vue'; import {ref, computed, unref, reactive} from 'vue';
import {BasicModal, useModalInner} from '/@/components/Modal'; import {BasicModal, useModalInner} from '/@/components/Modal';
import {BasicForm, useForm} from '/@/components/Form/index'; import {BasicForm, useForm} from '/@/components/Form/index';
import {formSchema} from '../${entityName}.data'; import {formSchema} from '../${entityName}.data';
import {saveOrUpdate} from '../${entityName}.api'; import {saveOrUpdate} from '../${entityName}.api';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { getDateByPicker } from '/@/utils';
const { createMessage } = useMessage(); const { createMessage } = useMessage();
// Emits声明 // Emits声明
const emit = defineEmits(['register','success']); const emit = defineEmits(['register','success']);
@ -55,12 +56,22 @@
// 隐藏底部时禁用整个表单 // 隐藏底部时禁用整个表单
setProps({ disabled: !data?.showFooter }) setProps({ disabled: !data?.showFooter })
}); });
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
//设置标题 //设置标题
const title = computed(() => (!unref(isUpdate) ? '新增' : !unref(isDetail) ? '详情' : '编辑')); const title = computed(() => (!unref(isUpdate) ? '新增' : !unref(isDetail) ? '详情' : '编辑'));
//表单提交事件 //表单提交事件
async function handleSubmit(v) { async function handleSubmit(v) {
try { try {
let values = await validate(); let values = await validate();
// 预处理日期数据
changeDateValue(values);
setModalProps({confirmLoading: true}); setModalProps({confirmLoading: true});
//提交表单 //提交表单
await saveOrUpdate(values, isUpdate.value); await saveOrUpdate(values, isUpdate.value);
@ -81,6 +92,20 @@
} }
} }
/**
* 处理日期值
* @param formData 表单数据
*/
const changeDateValue = (formData) => {
if (formData && fieldPickers) {
for (let key in fieldPickers) {
if (formData[key]) {
formData[key] = getDateByPicker(formData[key], fieldPickers[key]);
}
}
}
};
<#if buttonList?size gt 0> <#if buttonList?size gt 0>
<#list buttonList?sort_by('orderNum') as btn> <#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'> <#if btn.buttonStyle=='form'>

View File

@ -189,6 +189,7 @@
<#if need_pca> <#if need_pca>
import { getAreaTextByCode } from '/@/components/Form/src/utils/Area'; import { getAreaTextByCode } from '/@/components/Form/src/utils/Area';
</#if> </#if>
import { getDateByPicker } from '/@/utils';
<#if need_popup_dict> <#if need_popup_dict>
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
@ -201,6 +202,14 @@
import { cloneDeep } from "lodash-es"; import { cloneDeep } from "lodash-es";
</#if> </#if>
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const formRef = ref(); const formRef = ref();
const queryParam = reactive<any>({}); const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false); const toggleSearchStatus = ref<boolean>(false);
@ -213,7 +222,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
useSearchForm: false, useSearchForm: false,
actionColumn: { actionColumn: {
width: 120, width: 120,
@ -224,6 +233,11 @@
let rangerQuery = await setRangeQuery(); let rangerQuery = await setRangeQuery();
return Object.assign(params, rangerQuery); return Object.assign(params, rangerQuery);
<#else> <#else>
for (let key in fieldPickers) {
if (queryParam[key] && fieldPickers[key]) {
queryParam[key] = getDateByPicker(queryParam[key], fieldPickers[key]);
}
}
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
</#if> </#if>
}, },

View File

@ -61,7 +61,7 @@
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
<#include "/common/form/native/vue3NativeImport.ftl"> <#include "/common/form/native/vue3NativeImport.ftl">
import { getValueType } from '/@/utils'; import { getDateByPicker, getValueType } from '/@/utils';
import { saveOrUpdate } from '../${entityName}.api'; import { saveOrUpdate } from '../${entityName}.api';
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
@ -93,6 +93,14 @@
<#include "/common/validatorRulesTemplate/native/vue3MainNative.ftl"> <#include "/common/validatorRulesTemplate/native/vue3MainNative.ftl">
}); });
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false }); const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
// 表单禁用 // 表单禁用
const disabled = computed(()=>{ const disabled = computed(()=>{
@ -181,6 +189,8 @@
} }
//循环数据 //循环数据
for (let data in model) { for (let data in model) {
// 更新个性化日期选择器的值
model[data] = getDateByPicker(model[data], fieldPickers[data]);
//如果该数据是数组并且是字符串类型 //如果该数据是数组并且是字符串类型
if (model[data] instanceof Array) { if (model[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data); let valueType = getValueType(formRef.value.getProps, data);

View File

@ -116,6 +116,15 @@
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
</#if> </#if>
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
const [registerBpmModal, { openModal: bpmPicModal }] = useModal(); const [registerBpmModal, { openModal: bpmPicModal }] = useModal();
@ -131,7 +140,7 @@
api: list, api: list,
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
columns, columns,
canResize:false, canResize:true,
<#-- update-begin---author:chenrui ---date:20231228 for[issue/#5658] 树表复选框与展开按钮重叠问题---------- --> <#-- update-begin---author:chenrui ---date:20231228 for[issue/#5658] 树表复选框与展开按钮重叠问题---------- -->
isTreeTable: true, isTreeTable: true,
<#-- update-end---author:chenrui ---date:20231228 for[issue/#5658] 树表复选框与展开按钮重叠问题---------- --> <#-- update-end---author:chenrui ---date:20231228 for[issue/#5658] 树表复选框与展开按钮重叠问题---------- -->
@ -172,7 +181,14 @@
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
params.hasQuery = "true"; if (params && fieldPickers) {
for (let key in fieldPickers) {
if (params[key]) {
params[key] = getDateByPicker(params[key], fieldPickers[key]);
}
}
}
params.hasQuery = "true";
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
}, },
<#if list_has_popup_dict> <#if list_has_popup_dict>

View File

@ -28,12 +28,21 @@
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref} from 'vue'; import {ref, computed, unref, reactive} from 'vue';
import {BasicModal, useModalInner} from '/@/components/Modal'; import {BasicModal, useModalInner} from '/@/components/Modal';
import {BasicForm, useForm} from '/@/components/Form'; import {BasicForm, useForm} from '/@/components/Form';
import {formSchema} from '../${entityName}.data'; import {formSchema} from '../${entityName}.data';
import {loadTreeData, saveOrUpdateDict} from '../${entityName}.api'; import {loadTreeData, saveOrUpdateDict} from '../${entityName}.api';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const { createMessage } = useMessage(); const { createMessage } = useMessage();
// 获取emit // 获取emit
const emit = defineEmits(['register', 'success']); const emit = defineEmits(['register', 'success']);
@ -103,6 +112,8 @@
async function handleSubmit() { async function handleSubmit() {
try { try {
let values = await validate(); let values = await validate();
// 预处理日期数据
changeDateValue(values);
setModalProps({confirmLoading: true}); setModalProps({confirmLoading: true});
//提交表单 //提交表单
await saveOrUpdateDict(values, isUpdate.value); await saveOrUpdateDict(values, isUpdate.value);
@ -130,6 +141,21 @@
setModalProps({confirmLoading: false}); setModalProps({confirmLoading: false});
} }
} }
/**
* 处理日期值
* @param formData 表单数据
*/
const changeDateValue = (formData) => {
if (formData && fieldPickers) {
for (let key in fieldPickers) {
if (formData[key]) {
formData[key] = getDateByPicker(formData[key], fieldPickers[key]);
}
}
}
};
<#if buttonList?size gt 0> <#if buttonList?size gt 0>
<#list buttonList?sort_by('orderNum') as btn> <#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'> <#if btn.buttonStyle=='form'>

View File

@ -197,6 +197,7 @@
<#if need_pca> <#if need_pca>
import { getAreaTextByCode } from '/@/components/Form/src/utils/Area'; import { getAreaTextByCode } from '/@/components/Form/src/utils/Area';
</#if> </#if>
import { getDateByPicker } from '/@/utils';
<#if need_popup_dict> <#if need_popup_dict>
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
@ -208,6 +209,13 @@
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
const [registerBpmModal, { openModal: bpmPicModal }] = useModal(); const [registerBpmModal, { openModal: bpmPicModal }] = useModal();
</#if> </#if>
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const expandedRowKeys = ref([]); const expandedRowKeys = ref([]);
const queryParam = ref<any>({}); const queryParam = ref<any>({});
@ -219,7 +227,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
useSearchForm: false, useSearchForm: false,
isTreeTable: true, isTreeTable: true,
actionColumn: { actionColumn: {
@ -232,6 +240,11 @@
let rangerQuery = await setRangeQuery(); let rangerQuery = await setRangeQuery();
return Object.assign(params, rangerQuery); return Object.assign(params, rangerQuery);
<#else> <#else>
for (let key in fieldPickers) {
if (queryParam[key] && fieldPickers[key]) {
queryParam[key] = getDateByPicker(queryParam[key], fieldPickers[key]);
}
}
return Object.assign(params, queryParam.value); return Object.assign(params, queryParam.value);
</#if> </#if>
}, },

View File

@ -79,7 +79,7 @@
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
<#include "/common/form/native/vue3NativeImport.ftl"> <#include "/common/form/native/vue3NativeImport.ftl">
import { getValueType } from '/@/utils'; import { getDateByPicker, getValueType } from '/@/utils';
import {loadTreeData, saveOrUpdateDict} from '../${entityName}.api'; import {loadTreeData, saveOrUpdateDict} from '../${entityName}.api';
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
@ -111,6 +111,14 @@
<#include "/common/validatorRulesTemplate/native/vue3MainNative.ftl"> <#include "/common/validatorRulesTemplate/native/vue3MainNative.ftl">
}); });
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false }); const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const props = defineProps({ const props = defineProps({
formDisabled: { type: Boolean, default: false }, formDisabled: { type: Boolean, default: false },
formData: { type: Object, default: () => ({}) }, formData: { type: Object, default: () => ({}) },
@ -224,6 +232,8 @@
} }
//循环数据 //循环数据
for (let data in formData) { for (let data in formData) {
// 更新个性化日期选择器的值
model[data] = getDateByPicker(model[data], fieldPickers[data]);
//如果该数据是数组并且是字符串类型 //如果该数据是数组并且是字符串类型
if (formData[data] instanceof Array) { if (formData[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data); let valueType = getValueType(formRef.value.getProps, data);

View File

@ -130,6 +130,15 @@
import { getAuthCache, setAuthCache } from '/@/utils/auth'; import { getAuthCache, setAuthCache } from '/@/utils/auth';
import { DB_DICT_DATA_KEY } from '/@/enums/cacheEnum'; import { DB_DICT_DATA_KEY } from '/@/enums/cacheEnum';
</#if> </#if>
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
const [registerBpmModal, { openModal: bpmPicModal }] = useModal(); const [registerBpmModal, { openModal: bpmPicModal }] = useModal();
@ -144,7 +153,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize: false, canResize: true,
clickToRowSelect: true, clickToRowSelect: true,
rowSelection: {type: 'radio'}, rowSelection: {type: 'radio'},
formConfig: { formConfig: {
@ -181,6 +190,13 @@
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
if (params && fieldPickers) {
for (let key in fieldPickers) {
if (params[key]) {
params[key] = getDateByPicker(params[key], fieldPickers[key]);
}
}
}
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
}, },
<#if list_has_popup_dict> <#if list_has_popup_dict>
@ -448,7 +464,6 @@
height: 100%; height: 100%;
.content { .content {
background-color: #fff; background-color: #fff;
height: 100%;
} }
} }
} }

View File

@ -75,7 +75,7 @@
tableProps: { tableProps: {
api: ${sub.entityName?uncap_first}List, api: ${sub.entityName?uncap_first}List,
columns: ${sub.entityName?uncap_first}Columns, columns: ${sub.entityName?uncap_first}Columns,
canResize: false, canResize: true,
useSearchForm: false, useSearchForm: false,
actionColumn: { actionColumn: {
width: 180, width: 180,

View File

@ -19,12 +19,21 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref} from 'vue'; import {ref, computed, unref, reactive} from 'vue';
import {BasicModal, useModalInner} from '/@/components/Modal'; import {BasicModal, useModalInner} from '/@/components/Modal';
import {BasicForm, useForm} from '/@/components/Form/index'; import {BasicForm, useForm} from '/@/components/Form/index';
import {formSchema} from '../${entityName}.data'; import {formSchema} from '../${entityName}.data';
import {saveOrUpdate} from '../${entityName}.api'; import {saveOrUpdate} from '../${entityName}.api';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const { createMessage } = useMessage(); const { createMessage } = useMessage();
// Emits声明 // Emits声明
const emit = defineEmits(['register','success']); const emit = defineEmits(['register','success']);
@ -61,6 +70,8 @@
async function handleSubmit(v) { async function handleSubmit(v) {
try { try {
let values = await validate(); let values = await validate();
// 预处理日期数据
changeDateValue(values);
setModalProps({confirmLoading: true}); setModalProps({confirmLoading: true});
//提交表单 //提交表单
await saveOrUpdate(values, isUpdate.value); await saveOrUpdate(values, isUpdate.value);
@ -80,6 +91,20 @@
setModalProps({confirmLoading: false}); setModalProps({confirmLoading: false});
} }
} }
/**
* 处理日期值
* @param formData 表单数据
*/
const changeDateValue = (formData) => {
if (formData && fieldPickers) {
for (let key in fieldPickers) {
if (formData[key]) {
formData[key] = getDateByPicker(formData[key], fieldPickers[key]);
}
}
}
};
<#if buttonList?size gt 0> <#if buttonList?size gt 0>
<#list buttonList?sort_by('orderNum') as btn> <#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'> <#if btn.buttonStyle=='form'>

View File

@ -8,11 +8,20 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref,inject} from 'vue'; import {ref, computed, unref,inject, reactive} from 'vue';
import {BasicModal, useModalInner} from '/@/components/Modal'; import {BasicModal, useModalInner} from '/@/components/Modal';
import {BasicForm, useForm} from '/@/components/Form/index'; import {BasicForm, useForm} from '/@/components/Form/index';
import {${sub.entityName?uncap_first}FormSchema} from '../${entityName}.data'; import {${sub.entityName?uncap_first}FormSchema} from '../${entityName}.data';
import {${sub.entityName?uncap_first}SaveOrUpdate} from '../${entityName}.api'; import {${sub.entityName?uncap_first}SaveOrUpdate} from '../${entityName}.api';
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list sub.colums as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
//接收主表id //接收主表id
const mainId = inject('mainId'); const mainId = inject('mainId');
@ -51,6 +60,8 @@
async function handleSubmit(v) { async function handleSubmit(v) {
try { try {
let values = await validate(); let values = await validate();
// 预处理日期数据
changeDateValue(values);
setModalProps({confirmLoading: true}); setModalProps({confirmLoading: true});
if (unref(mainId)) { if (unref(mainId)) {
<#list sub.foreignKeys as key> <#list sub.foreignKeys as key>
@ -74,6 +85,20 @@
setModalProps({confirmLoading: false}); setModalProps({confirmLoading: false});
} }
} }
/**
* 处理日期值
* @param formData 表单数据
*/
const changeDateValue = (formData) => {
if (formData && fieldPickers) {
for (let key in fieldPickers) {
if (formData[key]) {
formData[key] = getDateByPicker(formData[key], fieldPickers[key]);
}
}
}
};
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
/** 时间和数字输入框样式 */ /** 时间和数字输入框样式 */

View File

@ -205,6 +205,7 @@
import { getAuthCache, setAuthCache } from '/@/utils/auth'; import { getAuthCache, setAuthCache } from '/@/utils/auth';
import { DB_DICT_DATA_KEY } from '/@/enums/cacheEnum'; import { DB_DICT_DATA_KEY } from '/@/enums/cacheEnum';
</#if> </#if>
import { getDateByPicker } from '/@/utils';
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
@ -221,6 +222,14 @@
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
</#if> </#if>
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const formRef = ref(); const formRef = ref();
const queryParam = reactive<any>({}); const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]); const checkedKeys = ref<Array<string | number>>([]);
@ -233,7 +242,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
useSearchForm: false, useSearchForm: false,
clickToRowSelect: true, clickToRowSelect: true,
rowSelection: {type: 'radio'}, rowSelection: {type: 'radio'},
@ -246,6 +255,11 @@
let rangerQuery = await setRangeQuery(); let rangerQuery = await setRangeQuery();
return Object.assign(params, rangerQuery); return Object.assign(params, rangerQuery);
<#else> <#else>
for (let key in fieldPickers) {
if (queryParam[key] && fieldPickers[key]) {
queryParam[key] = getDateByPicker(queryParam[key], fieldPickers[key]);
}
}
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
</#if> </#if>
}, },
@ -593,7 +607,6 @@
height: 100%; height: 100%;
.content { .content {
background-color: #fff; background-color: #fff;
height: 100%;
} }
} }
</style> </style>

View File

@ -84,7 +84,7 @@
tableProps: { tableProps: {
api: ${sub.entityName?uncap_first}List, api: ${sub.entityName?uncap_first}List,
columns: ${sub.entityName?uncap_first}Columns, columns: ${sub.entityName?uncap_first}Columns,
canResize: false, canResize: true,
useSearchForm: false, useSearchForm: false,
actionColumn: { actionColumn: {
width: 180, width: 180,

View File

@ -61,7 +61,7 @@
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
<#include "/common/form/native/vue3NativeImport.ftl"> <#include "/common/form/native/vue3NativeImport.ftl">
import { getValueType } from '/@/utils'; import { getDateByPicker, getValueType } from '/@/utils';
import { saveOrUpdate } from '../${entityName}.api'; import { saveOrUpdate } from '../${entityName}.api';
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
@ -89,6 +89,14 @@
<#include "/common/validatorRulesTemplate/native/vue3MainNative.ftl"> <#include "/common/validatorRulesTemplate/native/vue3MainNative.ftl">
}); });
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false }); const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const formRef = ref(); const formRef = ref();
// 表单禁用 // 表单禁用
const disabled = computed(()=>{ const disabled = computed(()=>{
@ -176,6 +184,8 @@
} }
//循环数据 //循环数据
for (let data in model) { for (let data in model) {
// 更新个性化日期选择器的值
model[data] = getDateByPicker(model[data], fieldPickers[data]);
//如果该数据是数组并且是字符串类型 //如果该数据是数组并且是字符串类型
if (model[data] instanceof Array) { if (model[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data); let valueType = getValueType(formRef.value.getProps, data);

View File

@ -58,7 +58,7 @@
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
<#include "/common/form/native/vue3NativeImport.ftl"> <#include "/common/form/native/vue3NativeImport.ftl">
import { getValueType } from '/@/utils'; import { getDateByPicker, getValueType } from '/@/utils';
import { ${sub.entityName?uncap_first}SaveOrUpdate } from '../${entityName}.api'; import { ${sub.entityName?uncap_first}SaveOrUpdate } from '../${entityName}.api';
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
@ -88,6 +88,14 @@
</#list> </#list>
}; };
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false }); const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
//日期个性化选择
const fieldPickers = reactive({
<#list sub.colums as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const props = defineProps({ const props = defineProps({
disabled: { type: Boolean, default: false }, disabled: { type: Boolean, default: false },
}); });
@ -147,6 +155,8 @@
//循环数据 //循环数据
for (let data in model) { for (let data in model) {
// 更新个性化日期选择器的值
model[data] = getDateByPicker(model[data], fieldPickers[data]);
//如果该数据是数组并且是字符串类型 //如果该数据是数组并且是字符串类型
if (model[data] instanceof Array) { if (model[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data); let valueType = getValueType(formRef.value.getProps, data);

View File

@ -136,6 +136,15 @@
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
</#if> </#if>
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
const queryParam = reactive<any>({}); const queryParam = reactive<any>({});
// 展开key // 展开key
@ -150,7 +159,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
formConfig: { formConfig: {
//labelWidth: 120, //labelWidth: 120,
schemas: searchFormSchema, schemas: searchFormSchema,
@ -188,6 +197,13 @@
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
if (params && fieldPickers) {
for (let key in fieldPickers) {
if (params[key]) {
params[key] = getDateByPicker(params[key], fieldPickers[key]);
}
}
}
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
}, },
<#if list_has_popup_dict> <#if list_has_popup_dict>

View File

@ -62,6 +62,26 @@
import {saveOrUpdate<#list subTables as sub>,query${sub.entityName}</#list>} from '../${entityName}.api'; import {saveOrUpdate<#list subTables as sub>,query${sub.entityName}</#list>} from '../${entityName}.api';
import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils' import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils'
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
<#list subTables as sub>
<#if sub.foreignRelationType =='0'>
const ${sub.entityName?uncap_first}FieldPickers = reactive({
<#list sub.colums as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
</#if>
</#list>
const { createMessage } = useMessage(); const { createMessage } = useMessage();
// Emits声明 // Emits声明
const emit = defineEmits(['register','success']); const emit = defineEmits(['register','success']);
@ -191,6 +211,8 @@
//表单提交事件 //表单提交事件
async function requestAddOrEdit(values) { async function requestAddOrEdit(values) {
try { try {
// 预处理日期数据
changeDateValue(values);
setModalProps({confirmLoading: true}); setModalProps({confirmLoading: true});
//提交表单 //提交表单
await saveOrUpdate(values, isUpdate.value); await saveOrUpdate(values, isUpdate.value);
@ -202,6 +224,33 @@
setModalProps({confirmLoading: false}); setModalProps({confirmLoading: false});
} }
} }
/**
* 处理日期值
* @param formData 表单数据
*/
const changeDateValue = (formData) => {
if (formData && fieldPickers) {
for (let key in fieldPickers) {
if (formData[key]) {
formData[key] = getDateByPicker(formData[key], fieldPickers[key]);
}
}
}
<#list subTables as sub>
<#if sub.foreignRelationType =='0'>
if(formData && formData.${sub.entityName?uncap_first}List && formData.${sub.entityName?uncap_first}List.length > 0){
formData.${sub.entityName?uncap_first}List.forEach(subFormData=>{
for (let key in ${sub.entityName?uncap_first}FieldPickers) {
if (subFormData[key]) {
subFormData[key] = getDateByPicker(subFormData[key], ${sub.entityName?uncap_first}FieldPickers[key]);
}
}
})
}
</#if>
</#list>
};
<#if buttonList?size gt 0> <#if buttonList?size gt 0>
<#list buttonList?sort_by('orderNum') as btn> <#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'> <#if btn.buttonStyle=='form'>

View File

@ -21,7 +21,7 @@
</#list> </#list>
<#-- 结束循环 --> <#-- 结束循环 -->
<!--引用表格--> <!--引用表格-->
<BasicTable bordered size="middle" :loading="loading" rowKey="id" :canResize="false" :columns="${sub.entityName?uncap_first}Columns" :dataSource="dataSource" :pagination="false"> <BasicTable bordered size="middle" :loading="loading" rowKey="id" :canResize="true" :columns="${sub.entityName?uncap_first}Columns" :dataSource="dataSource" :pagination="false">
<!--字段回显插槽--> <!--字段回显插槽-->
<template v-slot:bodyCell="{ column, record, index, text }"> <template v-slot:bodyCell="{ column, record, index, text }">
<#list sub.originalColumns as po> <#list sub.originalColumns as po>

View File

@ -115,6 +115,15 @@
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
</#if> </#if>
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
@ -132,7 +141,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
formConfig: { formConfig: {
//labelWidth: 120, //labelWidth: 120,
schemas: searchFormSchema, schemas: searchFormSchema,
@ -170,6 +179,13 @@
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
if (params && fieldPickers) {
for (let key in fieldPickers) {
if (params[key]) {
params[key] = getDateByPicker(params[key], fieldPickers[key]);
}
}
}
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
}, },
<#if list_has_popup_dict> <#if list_has_popup_dict>

View File

@ -61,6 +61,26 @@
import {saveOrUpdate<#list subTables as sub>,${sub.entityName?uncap_first}List</#list>} from '../${entityName}.api'; import {saveOrUpdate<#list subTables as sub>,${sub.entityName?uncap_first}List</#list>} from '../${entityName}.api';
import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils' import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils'
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
<#list subTables as sub>
<#if sub.foreignRelationType =='0'>
const ${sub.entityName?uncap_first}FieldPickers = reactive({
<#list sub.colums as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
</#if>
</#list>
const { createMessage } = useMessage(); const { createMessage } = useMessage();
// Emits声明 // Emits声明
const emit = defineEmits(['register','success']); const emit = defineEmits(['register','success']);
@ -190,6 +210,8 @@
//表单提交事件 //表单提交事件
async function requestAddOrEdit(values) { async function requestAddOrEdit(values) {
try { try {
// 预处理日期数据
changeDateValue(values);
setModalProps({confirmLoading: true}); setModalProps({confirmLoading: true});
//提交表单 //提交表单
await saveOrUpdate(values, isUpdate.value); await saveOrUpdate(values, isUpdate.value);
@ -201,6 +223,33 @@
setModalProps({confirmLoading: false}); setModalProps({confirmLoading: false});
} }
} }
/**
* 处理日期值
* @param formData 表单数据
*/
const changeDateValue = (formData) => {
if (formData && fieldPickers) {
for (let key in fieldPickers) {
if (formData[key]) {
formData[key] = getDateByPicker(formData[key], fieldPickers[key]);
}
}
}
<#list subTables as sub>
<#if sub.foreignRelationType =='0'>
if(formData && formData.${sub.entityName?uncap_first}List && formData.${sub.entityName?uncap_first}List.length > 0){
formData.${sub.entityName?uncap_first}List.forEach(subFormData=>{
for (let key in ${sub.entityName?uncap_first}FieldPickers) {
if (subFormData[key]) {
subFormData[key] = getDateByPicker(subFormData[key], ${sub.entityName?uncap_first}FieldPickers[key]);
}
}
})
}
</#if>
</#list>
};
<#if buttonList?size gt 0> <#if buttonList?size gt 0>
<#list buttonList?sort_by('orderNum') as btn> <#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'> <#if btn.buttonStyle=='form'>

View File

@ -204,7 +204,16 @@
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
</#if> </#if>
import { getDateByPicker } from '/@/utils';
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const formRef = ref(); const formRef = ref();
const queryParam = reactive<any>({}); const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]); const checkedKeys = ref<Array<string | number>>([]);
@ -218,7 +227,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
useSearchForm: false, useSearchForm: false,
actionColumn: { actionColumn: {
width: 120, width: 120,
@ -229,6 +238,11 @@
let rangerQuery = await setRangeQuery(); let rangerQuery = await setRangeQuery();
return Object.assign(params, rangerQuery); return Object.assign(params, rangerQuery);
<#else> <#else>
for (let key in fieldPickers) {
if (queryParam[key] && fieldPickers[key]) {
queryParam[key] = getDateByPicker(queryParam[key], fieldPickers[key]);
}
}
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
</#if> </#if>
}, },

View File

@ -116,6 +116,8 @@
</#if> </#if>
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import { getDateByPicker } from '/@/utils';
import dayjs from 'dayjs';
const useForm = Form.useForm; const useForm = Form.useForm;
export default defineComponent({ export default defineComponent({
@ -174,6 +176,14 @@
</#list> </#list>
}); });
const {resetFields, validate, validateInfos} = useForm(formData, validatorRules, {immediate: false}); const {resetFields, validate, validateInfos} = useForm(formData, validatorRules, {immediate: false});
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
const dbData = {}; const dbData = {};
const formItemLayout = { const formItemLayout = {
labelCol: {xs: {span: 24}, sm: {span: 5}}, labelCol: {xs: {span: 24}, sm: {span: 5}},
@ -296,6 +306,8 @@
async function submitForm() { async function submitForm() {
const mainData = await getFormData(); const mainData = await getFormData();
const subData = await getSubFormAndTableData(); const subData = await getSubFormAndTableData();
// 预处理日期数据
changeDateValue(mainData, subData);
const values = Object.assign({}, dbData, mainData, subData); const values = Object.assign({}, dbData, mainData, subData);
console.log('表单提交数据', values) console.log('表单提交数据', values)
const isUpdate = values.id ? true : false const isUpdate = values.id ? true : false
@ -312,6 +324,38 @@
} }
} }
/**
* 处理日期值
* @param formData 表单数据
*/
const changeDateValue = (mainData, subData) => {
for (let key in mainData) {
// 更新个性化日期选择器的值
mainData[key] = getDateByPicker(mainData[key], fieldPickers[key]);
}
<#list subTables as sub>
<#if sub.foreignRelationType =='0'>
if(subData.${sub.entityName?uncap_first}List && subData.${sub.entityName?uncap_first}List.length > 0){
${sub.entityName?uncap_first}Columns.forEach(subFormField => {
if(subFormField && subFormField.picker && subFormField.key){
let subPicker = subFormField.picker;
const subFieldName = subFormField.key
subData.${sub.entityName?uncap_first}List.forEach(subFormData=>{
if (subPicker === 'year') {
subFormData[subFieldName] = dayjs(subFormData[subFieldName]).set('month', 0).set('date', 1).format('YYYY-MM-DD');
} else if (subPicker === 'month') {
subFormData[subFieldName] = dayjs(subFormData[subFieldName]).set('date', 1).format('YYYY-MM-DD');
} else if (subPicker === 'week') {
subFormData[subFieldName] = dayjs(subFormData[subFieldName]).startOf('week').format('YYYY-MM-DD');
}
})
}
})
}
</#if>
</#list>
};
/** /**
* 值改变事件触发-树控件回调 * 值改变事件触发-树控件回调
* @param key * @param key

View File

@ -115,6 +115,15 @@
import {getPopDictByCode} from "@/utils/dict"; import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil"; import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
</#if> </#if>
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
@ -132,7 +141,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
formConfig: { formConfig: {
//labelWidth: 120, //labelWidth: 120,
schemas: searchFormSchema, schemas: searchFormSchema,
@ -170,6 +179,13 @@
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
if (params && fieldPickers) {
for (let key in fieldPickers) {
if (params[key]) {
params[key] = getDateByPicker(params[key], fieldPickers[key]);
}
}
}
return Object.assign(params, queryParam); return Object.assign(params, queryParam);
}, },
<#if list_has_popup_dict> <#if list_has_popup_dict>

View File

@ -72,6 +72,26 @@
import {saveOrUpdate<#list subTables as sub>,${sub.entityName?uncap_first}List</#list>} from '../${entityName}.api'; import {saveOrUpdate<#list subTables as sub>,${sub.entityName?uncap_first}List</#list>} from '../${entityName}.api';
import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils' import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils'
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { getDateByPicker } from '/@/utils';
//日期个性化选择
const fieldPickers = reactive({
<#list columns as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
<#list subTables as sub>
<#if sub.foreignRelationType =='0'>
const ${sub.entityName?uncap_first}FieldPickers = reactive({
<#list sub.colums as po>
<#if po.extendParams?exists && po.extendParams.picker?exists>
${po.fieldName}: '${po.extendParams.picker}',
</#if>
</#list>
});
</#if>
</#list>
const { createMessage } = useMessage(); const { createMessage } = useMessage();
// Emits声明 // Emits声明
const emit = defineEmits(['register','success']); const emit = defineEmits(['register','success']);
@ -225,6 +245,8 @@
//表单提交事件 //表单提交事件
async function requestAddOrEdit(values) { async function requestAddOrEdit(values) {
try { try {
// 预处理日期数据
changeDateValue(values);
setModalProps({confirmLoading: true}); setModalProps({confirmLoading: true});
//提交表单 //提交表单
await saveOrUpdate(values, isUpdate.value); await saveOrUpdate(values, isUpdate.value);
@ -236,6 +258,33 @@
setModalProps({confirmLoading: false}); setModalProps({confirmLoading: false});
} }
} }
/**
* 处理日期值
* @param formData 表单数据
*/
const changeDateValue = (formData) => {
if (formData && fieldPickers) {
for (let key in fieldPickers) {
if (formData[key]) {
formData[key] = getDateByPicker(formData[key], fieldPickers[key]);
}
}
}
<#list subTables as sub>
<#if sub.foreignRelationType =='0'>
if(formData && formData.${sub.entityName?uncap_first}List && formData.${sub.entityName?uncap_first}List.length > 0){
formData.${sub.entityName?uncap_first}List.forEach(subFormData=>{
for (let key in ${sub.entityName?uncap_first}FieldPickers) {
if (subFormData[key]) {
subFormData[key] = getDateByPicker(subFormData[key], ${sub.entityName?uncap_first}FieldPickers[key]);
}
}
})
}
</#if>
</#list>
};
<#if buttonList?size gt 0> <#if buttonList?size gt 0>
<#list buttonList?sort_by('orderNum') as btn> <#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'> <#if btn.buttonStyle=='form'>

View File

@ -49,7 +49,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
formConfig: { formConfig: {
labelWidth: 120, labelWidth: 120,
schemas: searchFormSchema, schemas: searchFormSchema,

View File

@ -49,7 +49,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
formConfig: { formConfig: {
labelWidth: 120, labelWidth: 120,
schemas: searchFormSchema, schemas: searchFormSchema,

View File

@ -47,7 +47,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize:false, canResize:true,
formConfig: { formConfig: {
labelWidth: 120, labelWidth: 120,
schemas: searchFormSchema, schemas: searchFormSchema,

View File

@ -60,7 +60,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
api: list, api: list,
columns, columns,
canResize: false, canResize: true,
rowSelection: {type: 'radio'}, rowSelection: {type: 'radio'},
formConfig: { formConfig: {
labelWidth: 120, labelWidth: 120,

View File

@ -56,7 +56,7 @@
tableProps: { tableProps: {
api: ${subTab.entityName?uncap_first}List, api: ${subTab.entityName?uncap_first}List,
columns: ${subTab.entityName?uncap_first}Columns, columns: ${subTab.entityName?uncap_first}Columns,
canResize: false, canResize: true,
useSearchForm: false, useSearchForm: false,
searchInfo, searchInfo,
actionColumn: { actionColumn: {

View File

@ -5,6 +5,7 @@ import type { FormSchema } from "@/components/Form";
import { unref } from 'vue'; import { unref } from 'vue';
import { isObject, isFunction, isString } from '/@/utils/is'; import { isObject, isFunction, isString } from '/@/utils/is';
import Big from 'big.js'; import Big from 'big.js';
import dayjs from "dayjs";
// update-begin--author:sunjianlei---date:20220408---for: 【VUEN-656】配置外部网址打不开原因是带了#号,需要替换一下 // update-begin--author:sunjianlei---date:20220408---for: 【VUEN-656】配置外部网址打不开原因是带了#号,需要替换一下
export const URL_HASH_TAB = `__AGWE4H__HASH__TAG__PWHRG__`; export const URL_HASH_TAB = `__AGWE4H__HASH__TAG__PWHRG__`;
// update-end--author:sunjianlei---date:20220408---for: 【VUEN-656】配置外部网址打不开原因是带了#号,需要替换一下 // update-end--author:sunjianlei---date:20220408---for: 【VUEN-656】配置外部网址打不开原因是带了#号,需要替换一下
@ -119,6 +120,30 @@ export function getValueTypeBySchema(schema: FormSchema) {
return valueType; return valueType;
} }
/**
* 通过picker属性获取日期数据
* @param data
* @param picker
*/
export function getDateByPicker(data, picker) {
if (!data || !picker) {
return data;
}
/**
* 需要把年、年月、设置成这段时间内的第一天([年季度]不需要处理antd回传的就是该季度的第一天[年周]也不处理)
* 例如日期格式是年传给数据库的时间必须是20240101
* 例如日期格式是年月选择了202502传给数据库的时间必须是20250201
*/
if (picker === 'year') {
return dayjs(data).set('month', 0).set('date', 1).format('YYYY-MM-DD');
} else if (picker === 'month') {
return dayjs(data).set('date', 1).format('YYYY-MM-DD');
} else if (picker === 'week') {
return dayjs(data).startOf('week').format('YYYY-MM-DD');
}
return data;
}
export function getRawRoute(route: RouteLocationNormalized): RouteLocationNormalized { export function getRawRoute(route: RouteLocationNormalized): RouteLocationNormalized {
if (!route) return route; if (!route) return route;
const { matched, ...opt } = route; const { matched, ...opt } = route;