diff --git a/docs/template/modules/operate-drawer.vue.vm b/docs/template/modules/operate-drawer.vue.vm index ca9c071b..b5478c01 100644 --- a/docs/template/modules/operate-drawer.vue.vm +++ b/docs/template/modules/operate-drawer.vue.vm @@ -52,7 +52,7 @@ function createDefaultModel(): Model { return { #foreach($column in $columns) #if($column.insert) - ${column.javaField}:#if($column.javaType == 'String') ''#else null#end#if($foreach.hasNext),#end + ${column.javaField}:#if($column.javaType == 'String' && $!column.dictType && $column.dictType == '') ''#else undefined#end#if($foreach.hasNext),#end #end #end }; @@ -91,16 +91,22 @@ function closeDrawer() { async function handleSubmit() { await validate(); + #set($operateColumns = []) + #foreach($column in $columns)#if($column.insert || $column.edit)#set($dummy = $operateColumns.add($column))#end#end + const { #foreach($column in $operateColumns)$column.javaField#if($foreach.hasNext), #end#end } = model; + // request if (props.operateType === 'add') { - const { #foreach($column in $columns)#if($column.insert)$column.javaField#if($foreach.hasNext), #end#end#end } = model; - const { error } = await fetchCreate${BusinessName}({ #foreach($column in $columns)#if($column.insert)$column.javaField#if($foreach.hasNext), #end#end#end }); + #set($addFields = []) + #foreach($column in $columns)#if($column.insert)#set($dummy = $addFields.add($column.javaField))#end#end + const { error } = await fetchCreate${BusinessName}({ #foreach($field in $addFields)$field#if($foreach.hasNext), #end#end }); if (error) return; } if (props.operateType === 'edit') { - const { #foreach($column in $columns)#if($column.edit)$column.javaField#if($foreach.hasNext), #end#end#end } = model; - const { error } = await fetchUpdate${BusinessName}({ #foreach($column in $columns)#if($column.edit)$column.javaField#if($foreach.hasNext), #end#end#end }); + #set($editFields = []) + #foreach($column in $columns)#if($column.edit)#set($dummy = $editFields.add($column.javaField))#end#end + const { error } = await fetchUpdate${BusinessName}({ #foreach($field in $editFields)$field#if($foreach.hasNext), #end#end }); if (error) return; } @@ -170,13 +176,36 @@ watch(visible, () => { - #elseif($column.htmlType == "datetime") + #elseif($column.htmlType == "checkbox" && "" != $dictType) + + + + + + #elseif($column.htmlType == "checkbox" && $dictType) + + + + + + #elseif($column.htmlType == 'datetime') + #elseif($column.htmlType == "imageUpload") + + #elseif($column.htmlType == "fileUpload") + + #elseif($column.htmlType == "editor") + #else #end diff --git a/docs/template/modules/search.vue.vm b/docs/template/modules/search.vue.vm index 9f347973..b6bfa5ce 100644 --- a/docs/template/modules/search.vue.vm +++ b/docs/template/modules/search.vue.vm @@ -50,7 +50,7 @@ async function search() { #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) if (dateRange${AttrName}.value?.length) { model.value.params!.begin${AttrName} = dateRange${AttrName}.value[0]; - model.value.params!.end${AttrName} = dateRange${AttrName}.value[0]; + model.value.params!.end${AttrName} = dateRange${AttrName}.value[1]; } #end #end @@ -75,35 +75,28 @@ async function search() { #set($comment=$column.columnComment) #end - #if(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) + #if(($tool.in($column.htmlType, "select", "radio", "checkbox")) && $dictType && "" != $dictType) - #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) + #elseif($tool.in($column.htmlType, "select", "radio", "checkbox")) - #elseif($column.htmlType.equals('select') || $column.htmlType.equals('radio')) - - #elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") + #elseif($column.htmlType == 'datetime' && $column.queryType != "BETWEEN") - #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") + #elseif($column.htmlType == 'datetime' && $column.queryType == "BETWEEN") diff --git a/src/components/custom/oss-upload.vue b/src/components/custom/oss-upload.vue index 953c7151..d4aa4f65 100644 --- a/src/components/custom/oss-upload.vue +++ b/src/components/custom/oss-upload.vue @@ -34,7 +34,7 @@ async function handleFetchOssList(ossIds: string[]) { watch( value, async val => { - const ossIds = val.split(',')?.filter(item => isNotNull(item)); + const ossIds = val?.split(',')?.filter(item => isNotNull(item)) || []; const fileIds = new Set(fileList.value.filter(item => item.status === 'finished').map(item => item.id)); if (ossIds.every(item => fileIds.has(item))) { return; diff --git a/src/components/custom/tinymce-editor.vue b/src/components/custom/tinymce-editor.vue new file mode 100644 index 00000000..d5bf7ca4 --- /dev/null +++ b/src/components/custom/tinymce-editor.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/src/constants/business.ts b/src/constants/business.ts index a9718f3a..c3cad440 100644 --- a/src/constants/business.ts +++ b/src/constants/business.ts @@ -76,7 +76,7 @@ export const genHtmlTypeRecord: Record = { select: '下拉框', radio: '单选框', checkbox: '复选框', - datetime: '日期控件', + datetime: '日期时间控件', imageUpload: '图片上传', fileUpload: '文件上传', editor: '富文本控件' diff --git a/src/store/modules/route/index.ts b/src/store/modules/route/index.ts index d45391bb..21aec092 100644 --- a/src/store/modules/route/index.ts +++ b/src/store/modules/route/index.ts @@ -42,16 +42,7 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { const authRouteMode = ref(import.meta.env.VITE_AUTH_ROUTE_MODE); /** Home route key */ - const routeHome = ref(import.meta.env.VITE_ROUTE_HOME); - - /** - * Set route home - * - * @param routeKey Route key - */ - function setRouteHome(routeKey: LastLevelRouteKey) { - routeHome.value = routeKey; - } + const routeHome = ref(import.meta.env.VITE_ROUTE_HOME || 'home'); /** constant routes */ const constantRoutes = shallowRef([]); @@ -303,9 +294,7 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { handleConstantAndAuthRoutes(); - setRouteHome('home'); - - handleUpdateRootRouteRedirect('home'); + handleUpdateRootRouteRedirect(routeHome.value); setIsInitAuthRoute(true); } else { diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts index ca897ade..8fa3e241 100644 --- a/src/typings/components.d.ts +++ b/src/typings/components.d.ts @@ -151,6 +151,7 @@ declare module 'vue' { TableSiderLayout: typeof import('./../components/advanced/table-sider-layout.vue')['default'] TenantSelect: typeof import('./../components/custom/tenant-select.vue')['default'] ThemeSchemaSwitch: typeof import('./../components/common/theme-schema-switch.vue')['default'] + TinymceEditor: typeof import('./../components/custom/tinymce-editor.vue')['default'] UserSelect: typeof import('./../components/custom/user-select.vue')['default'] WaveBg: typeof import('./../components/custom/wave-bg.vue')['default'] WorkflowCategorySelect: typeof import('./../components/custom/workflow-category-select.vue')['default'] diff --git a/src/views/_builtin/social-callback/index.vue b/src/views/_builtin/social-callback/index.vue index d71443df..6b16e248 100644 --- a/src/views/_builtin/social-callback/index.vue +++ b/src/views/_builtin/social-callback/index.vue @@ -31,7 +31,7 @@ const processResponse = async () => { msg.value = '登录成功,1s 后即将跳转至首页'; }, 1000); setTimeout(() => { - routerPushByKey('home'); + routerPushByKey(import.meta.env.VITE_ROUTE_HOME || 'home'); }, 1000); }; diff --git a/src/views/system/notice/modules/notice-operate-drawer.vue b/src/views/system/notice/modules/notice-operate-drawer.vue index cc05dff5..22e10ee8 100644 --- a/src/views/system/notice/modules/notice-operate-drawer.vue +++ b/src/views/system/notice/modules/notice-operate-drawer.vue @@ -1,12 +1,7 @@