From d64e8b0adb07fb29055882c8c8c341fc65ee83b0 Mon Sep 17 00:00:00 2001
From: JEECG <445654970@qq.com>
Date: Tue, 1 Jul 2025 10:15:32 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8?=
=?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=B0=8F=E4=BC=98=E5=8C=96=EF=BC=9A=E7=94=9F?=
=?UTF-8?q?=E6=88=90=E7=9A=84=E5=88=97=E8=A1=A8=E9=BB=98=E8=AE=A4=E5=90=B8?=
=?UTF-8?q?=E5=BA=95=E3=80=81=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=B9=B4?=
=?UTF-8?q?=E3=80=81=E6=9C=88=E3=80=81=E6=97=A5=E5=AD=98=E5=82=A8=E6=A0=BC?=
=?UTF-8?q?=E5=BC=8F=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../vue3/${entityName}List.vuei | 18 ++++++-
.../vue3/components/${entityName}Modal.vuei | 27 +++++++++-
.../vue3Native/${entityName}List.vuei | 16 +++++-
.../components/${entityName}Form.vuei | 12 ++++-
.../vue3/${entityName}List.vuei | 20 +++++++-
.../vue3/components/${entityName}Modal.vuei | 28 ++++++++++-
.../vue3Native/${entityName}List.vuei | 15 +++++-
.../components/${entityName}Form.vuei | 12 ++++-
.../vue3/${entityName}List.vuei | 19 ++++++-
.../${entityPackage}/vue3/[1-n]List.vuei | 2 +-
.../vue3/components/${entityName}Modal.vuei | 27 +++++++++-
.../vue3/components/[1-n]Modal.vuei | 27 +++++++++-
.../vue3Native/${entityName}List.vuei | 17 ++++++-
.../vue3Native/[1-n]List.vuei | 2 +-
.../components/${entityName}Form.vuei | 12 ++++-
.../vue3Native/components/[1-n]Form.vuei | 12 ++++-
.../vue3/${entityName}List.vuei | 18 ++++++-
.../vue3/components/${entityName}Modal.vuei | 49 +++++++++++++++++++
.../vue3/subTables/[1-n]SubTable.vuei | 2 +-
.../vue3/${entityName}List.vuei | 18 ++++++-
.../vue3/components/${entityName}Modal.vuei | 49 +++++++++++++++++++
.../vue3Native/${entityName}List.vuei | 16 +++++-
.../components/${entityName}Form.vuei | 44 +++++++++++++++++
.../vue3/${entityName}List.vuei | 18 ++++++-
.../vue3/components/${entityName}Modal.vuei | 49 +++++++++++++++++++
.../vue3/${entityName}List.vuei | 2 +-
.../${entityPackage}/${entityName}List.vuei | 2 +-
.../vue3/${entityName}List.vuei | 2 +-
.../vue3/${entityName}List.vuei | 2 +-
.../${entityPackage}/vue3/[1-n]List.vuei | 2 +-
jeecgboot-vue3/src/utils/index.ts | 25 ++++++++++
31 files changed, 535 insertions(+), 29 deletions(-)
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
index 9f07be6df..b79102452 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
@@ -117,6 +117,15 @@
import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
#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>
import { startProcess } from '/@/api/common/api';
const [registerBpmModal, { openModal: bpmPicModal }] = useModal();
@@ -133,7 +142,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize:false,
+ canResize:true,
formConfig: {
//labelWidth: 120,
schemas: searchFormSchema,
@@ -171,6 +180,13 @@
fixed:'right'
},
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);
},
<#if list_has_popup_dict>
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
index 60c56a9a9..263176761 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
@@ -19,12 +19,13 @@
\ No newline at end of file
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/[1-n]List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/[1-n]List.vuei
index e34f17836..39ea595ca 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/[1-n]List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/[1-n]List.vuei
@@ -84,7 +84,7 @@
tableProps: {
api: ${sub.entityName?uncap_first}List,
columns: ${sub.entityName?uncap_first}Columns,
- canResize: false,
+ canResize: true,
useSearchForm: false,
actionColumn: {
width: 180,
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/${entityName}Form.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/${entityName}Form.vuei
index 1011c586f..765872811 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/${entityName}Form.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/${entityName}Form.vuei
@@ -61,7 +61,7 @@
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
<#include "/common/form/native/vue3NativeImport.ftl">
- import { getValueType } from '/@/utils';
+ import { getDateByPicker, getValueType } from '/@/utils';
import { saveOrUpdate } from '../${entityName}.api';
import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
@@ -89,6 +89,14 @@
<#include "/common/validatorRulesTemplate/native/vue3MainNative.ftl">
});
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 disabled = computed(()=>{
@@ -176,6 +184,8 @@
}
//循环数据
for (let data in model) {
+ // 更新个性化日期选择器的值
+ model[data] = getDateByPicker(model[data], fieldPickers[data]);
//如果该数据是数组并且是字符串类型
if (model[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/[1-n]Form.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/[1-n]Form.vuei
index 4f71b6f7a..34b657974 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/[1-n]Form.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/[1-n]Form.vuei
@@ -58,7 +58,7 @@
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
<#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 { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
@@ -88,6 +88,14 @@
#list>
};
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({
disabled: { type: Boolean, default: false },
});
@@ -147,6 +155,8 @@
//循环数据
for (let data in model) {
+ // 更新个性化日期选择器的值
+ model[data] = getDateByPicker(model[data], fieldPickers[data]);
//如果该数据是数组并且是字符串类型
if (model[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
index eed5b11ff..fc81d44f7 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
@@ -136,6 +136,15 @@
import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
#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';
const queryParam = reactive({});
// 展开key
@@ -150,7 +159,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize:false,
+ canResize:true,
formConfig: {
//labelWidth: 120,
schemas: searchFormSchema,
@@ -188,6 +197,13 @@
fixed:'right'
},
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);
},
<#if list_has_popup_dict>
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
index 3abeca6cd..c7e89a75b 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
@@ -62,6 +62,26 @@
import {saveOrUpdate<#list subTables as sub>,query${sub.entityName}#list>} from '../${entityName}.api';
import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils'
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();
// Emits声明
const emit = defineEmits(['register','success']);
@@ -191,6 +211,8 @@
//表单提交事件
async function requestAddOrEdit(values) {
try {
+ // 预处理日期数据
+ changeDateValue(values);
setModalProps({confirmLoading: true});
//提交表单
await saveOrUpdate(values, isUpdate.value);
@@ -202,6 +224,33 @@
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>
<#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'>
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/subTables/[1-n]SubTable.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/subTables/[1-n]SubTable.vuei
index 2ab5fb7e1..dc2ed4aea 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/subTables/[1-n]SubTable.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue3/subTables/[1-n]SubTable.vuei
@@ -21,7 +21,7 @@
#list>
<#-- 结束循环 -->
-
+
<#list sub.originalColumns as po>
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
index 750d3f81d..32feb1b01 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
@@ -115,6 +115,15 @@
import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
#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>
import { startProcess } from '/@/api/common/api';
@@ -132,7 +141,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize:false,
+ canResize:true,
formConfig: {
//labelWidth: 120,
schemas: searchFormSchema,
@@ -170,6 +179,13 @@
fixed:'right'
},
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);
},
<#if list_has_popup_dict>
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
index 6d595ca7f..60acb8269 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
@@ -61,6 +61,26 @@
import {saveOrUpdate<#list subTables as sub>,${sub.entityName?uncap_first}List#list>} from '../${entityName}.api';
import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils'
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();
// Emits声明
const emit = defineEmits(['register','success']);
@@ -190,6 +210,8 @@
//表单提交事件
async function requestAddOrEdit(values) {
try {
+ // 预处理日期数据
+ changeDateValue(values);
setModalProps({confirmLoading: true});
//提交表单
await saveOrUpdate(values, isUpdate.value);
@@ -201,6 +223,33 @@
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>
<#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'>
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/${entityName}List.vuei
index 49b2e369a..6199e829c 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/${entityName}List.vuei
@@ -204,7 +204,16 @@
import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
#if>
+ import { getDateByPicker } from '/@/utils';
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 queryParam = reactive({});
const checkedKeys = ref>([]);
@@ -218,7 +227,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize:false,
+ canResize:true,
useSearchForm: false,
actionColumn: {
width: 120,
@@ -229,6 +238,11 @@
let rangerQuery = await setRangeQuery();
return Object.assign(params, rangerQuery);
<#else>
+ for (let key in fieldPickers) {
+ if (queryParam[key] && fieldPickers[key]) {
+ queryParam[key] = getDateByPicker(queryParam[key], fieldPickers[key]);
+ }
+ }
return Object.assign(params, queryParam);
#if>
},
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/${entityName}Form.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/${entityName}Form.vuei
index 8069da34e..8e59e8bb1 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/${entityName}Form.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue3Native/components/${entityName}Form.vuei
@@ -116,6 +116,8 @@
#if>
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
import { Form } from 'ant-design-vue';
+ import { getDateByPicker } from '/@/utils';
+ import dayjs from 'dayjs';
const useForm = Form.useForm;
export default defineComponent({
@@ -174,6 +176,14 @@
#list>
});
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 formItemLayout = {
labelCol: {xs: {span: 24}, sm: {span: 5}},
@@ -296,6 +306,8 @@
async function submitForm() {
const mainData = await getFormData();
const subData = await getSubFormAndTableData();
+ // 预处理日期数据
+ changeDateValue(mainData, subData);
const values = Object.assign({}, dbData, mainData, subData);
console.log('表单提交数据', values)
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
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
index 1744bd3b6..8aa9bcc47 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
@@ -115,6 +115,15 @@
import {getPopDictByCode} from "@/utils/dict";
import {filterMultiDictText} from "@/utils/dict/JDictSelectUtil";
#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>
import { startProcess } from '/@/api/common/api';
@@ -132,7 +141,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize:false,
+ canResize:true,
formConfig: {
//labelWidth: 120,
schemas: searchFormSchema,
@@ -170,6 +179,13 @@
fixed:'right'
},
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);
},
<#if list_has_popup_dict>
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
index 42a28a997..937a5f4bf 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue3/components/${entityName}Modal.vuei
@@ -72,6 +72,26 @@
import {saveOrUpdate<#list subTables as sub>,${sub.entityName?uncap_first}List#list>} from '../${entityName}.api';
import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils'
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();
// Emits声明
const emit = defineEmits(['register','success']);
@@ -225,6 +245,8 @@
//表单提交事件
async function requestAddOrEdit(values) {
try {
+ // 预处理日期数据
+ changeDateValue(values);
setModalProps({confirmLoading: true});
//提交表单
await saveOrUpdate(values, isUpdate.value);
@@ -236,6 +258,33 @@
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>
<#list buttonList?sort_by('orderNum') as btn>
<#if btn.buttonStyle=='form'>
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
index 37e330e1d..68e72eeab 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
@@ -49,7 +49,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize:false,
+ canResize:true,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue3/${entityPackage}/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue3/${entityPackage}/${entityName}List.vuei
index 37e330e1d..68e72eeab 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue3/${entityPackage}/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue3/${entityPackage}/${entityName}List.vuei
@@ -49,7 +49,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize:false,
+ canResize:true,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
index 527387bc9..9459166d2 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
@@ -47,7 +47,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize:false,
+ canResize:true,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
index fe9677ba1..730def818 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue3/${entityName}List.vuei
@@ -60,7 +60,7 @@
title: '${tableVo.ftlDescription}',
api: list,
columns,
- canResize: false,
+ canResize: true,
rowSelection: {type: 'radio'},
formConfig: {
labelWidth: 120,
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue3/[1-n]List.vuei b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue3/[1-n]List.vuei
index 7fe44eb09..180d61986 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue3/[1-n]List.vuei
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue3/[1-n]List.vuei
@@ -56,7 +56,7 @@
tableProps: {
api: ${subTab.entityName?uncap_first}List,
columns: ${subTab.entityName?uncap_first}Columns,
- canResize: false,
+ canResize: true,
useSearchForm: false,
searchInfo,
actionColumn: {
diff --git a/jeecgboot-vue3/src/utils/index.ts b/jeecgboot-vue3/src/utils/index.ts
index f210d79df..1cf555094 100644
--- a/jeecgboot-vue3/src/utils/index.ts
+++ b/jeecgboot-vue3/src/utils/index.ts
@@ -5,6 +5,7 @@ import type { FormSchema } from "@/components/Form";
import { unref } from 'vue';
import { isObject, isFunction, isString } from '/@/utils/is';
import Big from 'big.js';
+import dayjs from "dayjs";
// update-begin--author:sunjianlei---date:20220408---for: 【VUEN-656】配置外部网址打不开,原因是带了#号,需要替换一下
export const URL_HASH_TAB = `__AGWE4H__HASH__TAG__PWHRG__`;
// update-end--author:sunjianlei---date:20220408---for: 【VUEN-656】配置外部网址打不开,原因是带了#号,需要替换一下
@@ -119,6 +120,30 @@ export function getValueTypeBySchema(schema: FormSchema) {
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 {
if (!route) return route;
const { matched, ...opt } = route;