Commit 4ce201c540f4ac54c3f01608b71b81e2e6db7379
1 parent
3c88d4d4
feat:【infra】移动端 admin uniapp 的代码生成的优化(增加时间范围的条件生成)
Showing
2 changed files
with
139 additions
and
11 deletions
yudao-module-infra/src/main/resources/codegen/vue3_admin_uniapp/components/search-form.vue.vm
| 1 | +<!-- TODO @AI:参考 /Users/yunai/Java/yudao-ui-admin-uniapp-next-v4/src/pages/message/components/search-form.vue 和 /Users/yunai/Java/yudao-ui-admin-uniapp-next-v4/src/pages/message/index.vue,实现对 time + 范围的处理; --> | ||
| 1 | <template> | 2 | <template> |
| 2 | <!-- 搜索框入口 --> | 3 | <!-- 搜索框入口 --> |
| 3 | <wd-search | 4 | <wd-search |
| @@ -30,6 +31,7 @@ | @@ -30,6 +31,7 @@ | ||
| 30 | #set ($dictType = $column.dictType) | 31 | #set ($dictType = $column.dictType) |
| 31 | #set ($javaField = $column.javaField) | 32 | #set ($javaField = $column.javaField) |
| 32 | #set ($javaType = $column.javaType) | 33 | #set ($javaType = $column.javaType) |
| 34 | + #set ($listOperationCondition = $column.listOperationCondition) | ||
| 33 | #set ($comment = $column.columnComment) | 35 | #set ($comment = $column.columnComment) |
| 34 | #set ($dictMethod = "getDictOptions") | 36 | #set ($dictMethod = "getDictOptions") |
| 35 | #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") | 37 | #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") |
| @@ -50,6 +52,58 @@ | @@ -50,6 +52,58 @@ | ||
| 50 | clearable | 52 | clearable |
| 51 | /> | 53 | /> |
| 52 | </view> | 54 | </view> |
| 55 | + #elseif ($column.htmlType == "datetime" && $listOperationCondition == "BETWEEN") | ||
| 56 | + #set ($AttrName = $javaField.substring(0,1).toUpperCase() + ${javaField.substring(1)}) | ||
| 57 | + <view class="mb-32rpx"> | ||
| 58 | + <view class="mb-12rpx text-28rpx text-[#666]"> | ||
| 59 | + ${comment} | ||
| 60 | + </view> | ||
| 61 | + <view class="flex items-center gap-16rpx"> | ||
| 62 | + <view class="flex-1" @click="visible${AttrName}[0] = true"> | ||
| 63 | + <view | ||
| 64 | + class="h-72rpx flex items-center justify-center rounded-8rpx bg-[#f5f5f5] px-24rpx text-28rpx" | ||
| 65 | + > | ||
| 66 | + {{ formatDate(formData.${javaField}?.[0]) || '开始日期' }} | ||
| 67 | + </view> | ||
| 68 | + </view> | ||
| 69 | + <text class="text-28rpx text-[#999]">至</text> | ||
| 70 | + <view class="flex-1" @click="visible${AttrName}[1] = true"> | ||
| 71 | + <view | ||
| 72 | + class="h-72rpx flex items-center justify-center rounded-8rpx bg-[#f5f5f5] px-24rpx text-28rpx" | ||
| 73 | + > | ||
| 74 | + {{ formatDate(formData.${javaField}?.[1]) || '结束日期' }} | ||
| 75 | + </view> | ||
| 76 | + </view> | ||
| 77 | + </view> | ||
| 78 | + <wd-datetime-picker-view | ||
| 79 | + v-if="visible${AttrName}[0]" | ||
| 80 | + v-model="temp${AttrName}[0]" | ||
| 81 | + type="date" | ||
| 82 | + :columns-height="200" | ||
| 83 | + /> | ||
| 84 | + <view v-if="visible${AttrName}[0]" class="mt-16rpx flex justify-end gap-16rpx"> | ||
| 85 | + <wd-button size="small" plain @click="handle${AttrName}0Cancel"> | ||
| 86 | + 取消 | ||
| 87 | + </wd-button> | ||
| 88 | + <wd-button size="small" type="primary" @click="handle${AttrName}0Confirm"> | ||
| 89 | + 确定 | ||
| 90 | + </wd-button> | ||
| 91 | + </view> | ||
| 92 | + <wd-datetime-picker-view | ||
| 93 | + v-if="visible${AttrName}[1]" | ||
| 94 | + v-model="temp${AttrName}[1]" | ||
| 95 | + type="date" | ||
| 96 | + :columns-height="200" | ||
| 97 | + /> | ||
| 98 | + <view v-if="visible${AttrName}[1]" class="mt-16rpx flex justify-end gap-16rpx"> | ||
| 99 | + <wd-button size="small" plain @click="handle${AttrName}1Cancel"> | ||
| 100 | + 取消 | ||
| 101 | + </wd-button> | ||
| 102 | + <wd-button size="small" type="primary" @click="handle${AttrName}1Confirm"> | ||
| 103 | + 确定 | ||
| 104 | + </wd-button> | ||
| 105 | + </view> | ||
| 106 | + </view> | ||
| 53 | #elseif (($column.htmlType == "select" || $column.htmlType == "radio") && $dictType && "" != $dictType) | 107 | #elseif (($column.htmlType == "select" || $column.htmlType == "radio") && $dictType && "" != $dictType) |
| 54 | <view class="mb-32rpx"> | 108 | <view class="mb-32rpx"> |
| 55 | <view class="mb-12rpx text-28rpx text-[#666]"> | 109 | <view class="mb-12rpx text-28rpx text-[#666]"> |
| @@ -100,6 +154,7 @@ | @@ -100,6 +154,7 @@ | ||
| 100 | #set ($hasGetIntDictOptions = 0) | 154 | #set ($hasGetIntDictOptions = 0) |
| 101 | #set ($hasGetStrDictOptions = 0) | 155 | #set ($hasGetStrDictOptions = 0) |
| 102 | #set ($hasGetBoolDictOptions = 0) | 156 | #set ($hasGetBoolDictOptions = 0) |
| 157 | +#set ($hasDateTimeBetween = 0) | ||
| 103 | #foreach($column in $columns) | 158 | #foreach($column in $columns) |
| 104 | #if ($column.listOperation && $column.dictType && "" != $column.dictType) | 159 | #if ($column.listOperation && $column.dictType && "" != $column.dictType) |
| 105 | #set ($hasDict = 1) | 160 | #set ($hasDict = 1) |
| @@ -115,8 +170,14 @@ | @@ -115,8 +170,14 @@ | ||
| 115 | #end | 170 | #end |
| 116 | #end | 171 | #end |
| 117 | #end | 172 | #end |
| 173 | + #if ($hasDateTimeBetween == 0 && $column.listOperation && $column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") | ||
| 174 | + #set ($hasDateTimeBetween = 1) | ||
| 175 | + #end | ||
| 118 | #end | 176 | #end |
| 119 | import { computed, reactive, ref, watch } from 'vue' | 177 | import { computed, reactive, ref, watch } from 'vue' |
| 178 | +#if ($hasDateTimeBetween == 1) | ||
| 179 | +import { formatDate } from '@/utils/date' | ||
| 180 | +#end | ||
| 120 | #if ($hasDict == 1) | 181 | #if ($hasDict == 1) |
| 121 | #set ($dictImportNames = "getDictLabel, ") | 182 | #set ($dictImportNames = "getDictLabel, ") |
| 122 | #if ($hasGetDictOptions == 1) | 183 | #if ($hasGetDictOptions == 1) |
| @@ -142,7 +203,9 @@ export interface SearchFormData { | @@ -142,7 +203,9 @@ export interface SearchFormData { | ||
| 142 | #foreach($column in $columns) | 203 | #foreach($column in $columns) |
| 143 | #if ($column.listOperation) | 204 | #if ($column.listOperation) |
| 144 | #set ($javaType = $column.javaType.toLowerCase()) | 205 | #set ($javaType = $column.javaType.toLowerCase()) |
| 145 | - #if ($column.dictType && "" != $column.dictType) | 206 | + #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") |
| 207 | + ${column.javaField}?: [number | undefined, number | undefined] | ||
| 208 | + #elseif ($column.dictType && "" != $column.dictType) | ||
| 146 | #if(${javaType} == "string") | 209 | #if(${javaType} == "string") |
| 147 | ${column.javaField}?: string | number | 210 | ${column.javaField}?: string | number |
| 148 | #elseif(${javaType} == "boolean") | 211 | #elseif(${javaType} == "boolean") |
| @@ -174,7 +237,9 @@ const visible = ref(false) | @@ -174,7 +237,9 @@ const visible = ref(false) | ||
| 174 | const formData = reactive<SearchFormData>({ | 237 | const formData = reactive<SearchFormData>({ |
| 175 | #foreach($column in $columns) | 238 | #foreach($column in $columns) |
| 176 | #if ($column.listOperation) | 239 | #if ($column.listOperation) |
| 177 | - #if ($column.dictType && "" != $column.dictType) | 240 | + #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") |
| 241 | + ${column.javaField}: [undefined, undefined] as [number | undefined, number | undefined], | ||
| 242 | + #elseif ($column.dictType && "" != $column.dictType) | ||
| 178 | #set ($javaType = $column.javaType.toLowerCase()) | 243 | #set ($javaType = $column.javaType.toLowerCase()) |
| 179 | #if(${javaType} == "string") | 244 | #if(${javaType} == "string") |
| 180 | ${column.javaField}: -1 as number | string, | 245 | ${column.javaField}: -1 as number | string, |
| @@ -199,7 +264,11 @@ const searchPlaceholder = computed(() => { | @@ -199,7 +264,11 @@ const searchPlaceholder = computed(() => { | ||
| 199 | #set ($javaField = $column.javaField) | 264 | #set ($javaField = $column.javaField) |
| 200 | #set ($javaType = $column.javaType.toLowerCase()) | 265 | #set ($javaType = $column.javaType.toLowerCase()) |
| 201 | #set ($comment = $column.columnComment) | 266 | #set ($comment = $column.columnComment) |
| 202 | - #if ($dictType && "" != $dictType) | 267 | + #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") |
| 268 | + if (props.searchParams?.${javaField}?.[0] && props.searchParams?.${javaField}?.[1]) { | ||
| 269 | + conditions.push(`${comment}:#[[${]]#formatDate(props.searchParams.${javaField}[0])#[[}]]#~#[[${]]#formatDate(props.searchParams.${javaField}[1])#[[}]]#`) | ||
| 270 | + } | ||
| 271 | + #elseif ($dictType && "" != $dictType) | ||
| 203 | if (props.searchParams?.${javaField} !== undefined && props.searchParams.${javaField} !== -1) { | 272 | if (props.searchParams?.${javaField} !== undefined && props.searchParams.${javaField} !== -1) { |
| 204 | conditions.push(`${comment}:#[[${]]#getDictLabel(DICT_TYPE.${dictType.toUpperCase()}, props.searchParams.${javaField})#[[}]]#`) | 273 | conditions.push(`${comment}:#[[${]]#getDictLabel(DICT_TYPE.${dictType.toUpperCase()}, props.searchParams.${javaField})#[[}]]#`) |
| 205 | } | 274 | } |
| @@ -224,7 +293,9 @@ watch(visible, (val) => { | @@ -224,7 +293,9 @@ watch(visible, (val) => { | ||
| 224 | if (val && props.searchParams) { | 293 | if (val && props.searchParams) { |
| 225 | #foreach($column in $columns) | 294 | #foreach($column in $columns) |
| 226 | #if ($column.listOperation) | 295 | #if ($column.listOperation) |
| 227 | - #if ($column.dictType && "" != $column.dictType) | 296 | + #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") |
| 297 | + formData.${column.javaField} = props.searchParams.${column.javaField} ?? [undefined, undefined] | ||
| 298 | + #elseif ($column.dictType && "" != $column.dictType) | ||
| 228 | formData.${column.javaField} = props.searchParams.${column.javaField} ?? -1 | 299 | formData.${column.javaField} = props.searchParams.${column.javaField} ?? -1 |
| 229 | #else | 300 | #else |
| 230 | formData.${column.javaField} = props.searchParams.${column.javaField} | 301 | formData.${column.javaField} = props.searchParams.${column.javaField} |
| @@ -234,6 +305,40 @@ watch(visible, (val) => { | @@ -234,6 +305,40 @@ watch(visible, (val) => { | ||
| 234 | } | 305 | } |
| 235 | }) | 306 | }) |
| 236 | 307 | ||
| 308 | +#if ($hasDateTimeBetween == 1) | ||
| 309 | +// 时间范围选择器状态 | ||
| 310 | +#foreach($column in $columns) | ||
| 311 | + #if ($column.listOperation && $column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") | ||
| 312 | + #set ($javaField = $column.javaField) | ||
| 313 | + #set ($AttrName = $javaField.substring(0,1).toUpperCase() + ${javaField.substring(1)}) | ||
| 314 | +const visible${AttrName} = ref<[boolean, boolean]>([false, false]) | ||
| 315 | +const temp${AttrName} = ref<[number, number]>([Date.now(), Date.now()]) | ||
| 316 | + | ||
| 317 | +/** ${column.columnComment}[0]确认 */ | ||
| 318 | +function handle${AttrName}0Confirm() { | ||
| 319 | + formData.${javaField} = [temp${AttrName}.value[0], formData.${javaField}?.[1]] | ||
| 320 | + visible${AttrName}.value[0] = false | ||
| 321 | +} | ||
| 322 | + | ||
| 323 | +/** ${column.columnComment}[0]取消 */ | ||
| 324 | +function handle${AttrName}0Cancel() { | ||
| 325 | + visible${AttrName}.value[0] = false | ||
| 326 | +} | ||
| 327 | + | ||
| 328 | +/** ${column.columnComment}[1]确认 */ | ||
| 329 | +function handle${AttrName}1Confirm() { | ||
| 330 | + formData.${javaField} = [formData.${javaField}?.[0], temp${AttrName}.value[1]] | ||
| 331 | + visible${AttrName}.value[1] = false | ||
| 332 | +} | ||
| 333 | + | ||
| 334 | +/** ${column.columnComment}[1]取消 */ | ||
| 335 | +function handle${AttrName}1Cancel() { | ||
| 336 | + visible${AttrName}.value[1] = false | ||
| 337 | +} | ||
| 338 | + #end | ||
| 339 | +#end | ||
| 340 | +#end | ||
| 341 | + | ||
| 237 | /** 搜索 */ | 342 | /** 搜索 */ |
| 238 | function handleSearch() { | 343 | function handleSearch() { |
| 239 | visible.value = false | 344 | visible.value = false |
| @@ -244,7 +349,9 @@ function handleSearch() { | @@ -244,7 +349,9 @@ function handleSearch() { | ||
| 244 | function handleReset() { | 349 | function handleReset() { |
| 245 | #foreach($column in $columns) | 350 | #foreach($column in $columns) |
| 246 | #if ($column.listOperation) | 351 | #if ($column.listOperation) |
| 247 | - #if ($column.dictType && "" != $column.dictType) | 352 | + #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") |
| 353 | + formData.${column.javaField} = [undefined, undefined] | ||
| 354 | + #elseif ($column.dictType && "" != $column.dictType) | ||
| 248 | formData.${column.javaField} = -1 | 355 | formData.${column.javaField} = -1 |
| 249 | #else | 356 | #else |
| 250 | formData.${column.javaField} = undefined | 357 | formData.${column.javaField} = undefined |
yudao-module-infra/src/main/resources/codegen/vue3_admin_uniapp/views/index.vue.vm
| @@ -111,6 +111,12 @@ | @@ -111,6 +111,12 @@ | ||
| 111 | #end | 111 | #end |
| 112 | #end | 112 | #end |
| 113 | #end | 113 | #end |
| 114 | +#set ($hasDateTimeBetween = 0) | ||
| 115 | +#foreach($column in $columns) | ||
| 116 | + #if ($hasDateTimeBetween == 0 && $column.listOperation && $column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") | ||
| 117 | + #set ($hasDateTimeBetween = 1) | ||
| 118 | + #end | ||
| 119 | +#end | ||
| 114 | import type { SearchFormData } from './components/search-form.vue' | 120 | import type { SearchFormData } from './components/search-form.vue' |
| 115 | import type { ${simpleClassName} } from '@/api/${table.moduleName}/${table.businessName}' | 121 | import type { ${simpleClassName} } from '@/api/${table.moduleName}/${table.businessName}' |
| 116 | import type { LoadMoreState } from '@/http/types' | 122 | import type { LoadMoreState } from '@/http/types' |
| @@ -125,6 +131,9 @@ import { DICT_TYPE } from '@/utils/constants' | @@ -125,6 +131,9 @@ import { DICT_TYPE } from '@/utils/constants' | ||
| 125 | #if ($hasDateTime == 1) | 131 | #if ($hasDateTime == 1) |
| 126 | import { formatDateTime } from '@/utils/date' | 132 | import { formatDateTime } from '@/utils/date' |
| 127 | #end | 133 | #end |
| 134 | +#if ($hasDateTimeBetween == 1) | ||
| 135 | +import { formatDateRange } from '@/utils/date' | ||
| 136 | +#end | ||
| 128 | import SearchForm from './components/search-form.vue' | 137 | import SearchForm from './components/search-form.vue' |
| 129 | 138 | ||
| 130 | definePage({ | 139 | definePage({ |
| @@ -144,7 +153,9 @@ const queryParams = reactive({ | @@ -144,7 +153,9 @@ const queryParams = reactive({ | ||
| 144 | #foreach($column in $columns) | 153 | #foreach($column in $columns) |
| 145 | #if ($column.listOperation) | 154 | #if ($column.listOperation) |
| 146 | #set ($javaType = $column.javaType.toLowerCase()) | 155 | #set ($javaType = $column.javaType.toLowerCase()) |
| 147 | - #if ($column.dictType && "" != $column.dictType) | 156 | + #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") |
| 157 | + ${column.javaField}: [undefined, undefined] as [number | undefined, number | undefined], | ||
| 158 | + #elseif ($column.dictType && "" != $column.dictType) | ||
| 148 | #if(${javaType} == "string") | 159 | #if(${javaType} == "string") |
| 149 | ${column.javaField}: -1 as number | string, // -1 表示全部 | 160 | ${column.javaField}: -1 as number | string, // -1 表示全部 |
| 150 | #elseif(${javaType} == "boolean") | 161 | #elseif(${javaType} == "boolean") |
| @@ -172,14 +183,18 @@ function handleBack() { | @@ -172,14 +183,18 @@ function handleBack() { | ||
| 172 | async function getList() { | 183 | async function getList() { |
| 173 | loadMoreState.value = 'loading' | 184 | loadMoreState.value = 'loading' |
| 174 | try { | 185 | try { |
| 175 | - const data = await get${simpleClassName}Page({ | ||
| 176 | - ...queryParams, | 186 | + const params: any = { ...queryParams } |
| 177 | #foreach($column in $columns) | 187 | #foreach($column in $columns) |
| 178 | #if ($column.listOperation && $column.dictType && "" != $column.dictType) | 188 | #if ($column.listOperation && $column.dictType && "" != $column.dictType) |
| 179 | - ${column.javaField}: queryParams.${column.javaField} === -1 ? undefined : queryParams.${column.javaField}, | 189 | + params.${column.javaField} = queryParams.${column.javaField} === -1 ? undefined : queryParams.${column.javaField} |
| 180 | #end | 190 | #end |
| 181 | #end | 191 | #end |
| 182 | - }) | 192 | +#foreach($column in $columns) |
| 193 | + #if ($column.listOperation && $column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") | ||
| 194 | + params.${column.javaField} = formatDateRange(queryParams.${column.javaField}) | ||
| 195 | + #end | ||
| 196 | +#end | ||
| 197 | + const data = await get${simpleClassName}Page(params) | ||
| 183 | list.value = [...list.value, ...data.list] | 198 | list.value = [...list.value, ...data.list] |
| 184 | total.value = data.total | 199 | total.value = data.total |
| 185 | loadMoreState.value = list.value.length >= total.value ? 'finished' : 'loading' | 200 | loadMoreState.value = list.value.length >= total.value ? 'finished' : 'loading' |
| @@ -193,7 +208,13 @@ async function getList() { | @@ -193,7 +208,13 @@ async function getList() { | ||
| 193 | function handleQuery(data?: SearchFormData) { | 208 | function handleQuery(data?: SearchFormData) { |
| 194 | #foreach($column in $columns) | 209 | #foreach($column in $columns) |
| 195 | #if ($column.listOperation) | 210 | #if ($column.listOperation) |
| 196 | - queryParams.${column.javaField} = data?.${column.javaField}#if ($column.dictType && "" != $column.dictType) ?? -1#end | 211 | + #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") |
| 212 | + queryParams.${column.javaField} = data?.${column.javaField} ?? [undefined, undefined] | ||
| 213 | + #elseif ($column.dictType && "" != $column.dictType) | ||
| 214 | + queryParams.${column.javaField} = data?.${column.javaField} ?? -1 | ||
| 215 | + #else | ||
| 216 | + queryParams.${column.javaField} = data?.${column.javaField} | ||
| 217 | + #end | ||
| 197 | #end | 218 | #end |
| 198 | #end | 219 | #end |
| 199 | queryParams.pageNo = 1 | 220 | queryParams.pageNo = 1 |