Commit 4ce201c540f4ac54c3f01608b71b81e2e6db7379

Authored by YunaiV
1 parent 3c88d4d4

feat:【infra】移动端 admin uniapp 的代码生成的优化(增加时间范围的条件生成)

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(() =&gt; { @@ -199,7 +264,11 @@ const searchPlaceholder = computed(() =&gt; {
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) =&gt; { @@ -224,7 +293,9 @@ watch(visible, (val) =&gt; {
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) =&gt; { @@ -234,6 +305,40 @@ watch(visible, (val) =&gt; {
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 &#39;@/utils/constants&#39; @@ -125,6 +131,9 @@ import { DICT_TYPE } from &#39;@/utils/constants&#39;
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