CET-cmd-2.0/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/common/utils.ftl

230 lines
9.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<#---->
<#-- freemarker 的一些工具方法 -->
<#---->
<#-- 驼峰转其他字符 -->
<#-- @param str 待转换的文本 -->
<#-- @param character 要转换成的字符 -->
<#-- @param case 转换大小写normal 不转换lower 小写upper 大写) -->
<#function camelToChar(str, character, case='normal')>
<#assign text=str?replace("([a-z])([A-Z]+)","$1${character}$2","r")/>
<#if case=="upper">
<#return text?upper_case>
<#elseif case=="lower">
<#return text?lower_case>
<#else>
<#return text>
</#if>
</#function>
<#--下划线转驼峰-->
<#function dashedToCamel(str)>
<#assign text=""/>
<#assign strlist = str?split("_")/>
<#list strlist as v>
<#assign text=text+v?cap_first/>
</#list>
<#return text?uncap_first>
</#function>
<#-- 驼峰转下划线 -->
<#function camelToDashed(str, case='lower')>
<#return camelToChar(str, "_", case)>
</#function>
<#---->
<#-- 驼峰转横线 -->
<#function camelToHorizontal(str, case='normal')>
<#return camelToChar(str, "-", case)>
</#function>
<#---->
<#-- 获取 v-model 属性 -->
<#function getVModel po,suffix="">
<#return "v-model=\"queryParam.${po.fieldName}${suffix}\"">
</#function>
<#-- 获取 placeholder 属性 -->
<#function getPlaceholder po,prefix,fillComment=true>
<#if fillComment>
<#return "placeholder=\"${prefix}${po.filedComment}\"">
<#else>
<#return "placeholder=\"${prefix}\"">
</#if>
</#function>
<#-- ** 判断某字段是否配置了校验 * -->
<#function poHasCheck po>
<#if (po.fieldValidType!'')?trim?length gt 0 || po.nullable == 'N'>
<#if po.fieldName != 'id'>
<#if po.nullable == 'N'
|| po.fieldValidType == '*'
|| po.fieldValidType == 'only'
|| po.fieldValidType == 'n6-16'
|| po.fieldValidType == '*6-16'
|| po.fieldValidType == 's6-18'
|| po.fieldValidType == 'url'
|| po.fieldValidType == 'e'
|| po.fieldValidType == 'm'
|| po.fieldValidType == 'p'
|| po.fieldValidType == 's'
|| po.fieldValidType == 'n'
|| po.fieldValidType == 'z'
|| po.fieldValidType == 'money'
|| po.fieldValidType != ''
>
<#return true>
</#if>
</#if>
</#if>
<#return false>
</#function>
<#-- ** 如果配置了校验就显示 validatorRules * -->
<#function autoWriteRules po>
<#if poHasCheck(po)>
<#return ", validatorRules.${po.fieldName}">
<#else>
<#return "">
</#if>
</#function>
<#-- ** 如果Blob就显示 String * -->
<#function autoStringSuffix po>
<#if po.fieldDbType=='Blob'>
<#return "'${po.fieldName}String'">
<#else>
<#return "'${po.fieldName}'">
</#if>
</#function>
<#-- ** 如果Blob就显示model方式 String * -->
<#function autoStringSuffixForModel po>
<#if po.fieldDbType=='Blob'>
<#return "${po.fieldName}String">
<#else>
<#return "${po.fieldName}">
</#if>
</#function>
<#-- ** 高级查询生成 * -->
<#function superQueryFieldList po>
<#assign superQuery_dictTable="">
<#assign superQuery_dictText="">
<#if po.dictTable?default("")?trim?length gt 1>
<#assign superQuery_dictTable="${po.dictTable}">
</#if>
<#if po.dictText?default("")?trim?length gt 1>
<#assign superQuery_dictText="${po.dictText}">
</#if>
<#if po.classType=="popup">
<#return "{type:'${po.classType}',value:'${po.fieldName}',text:'${po.filedComment}', popup:{code:'${po.dictTable}',field:'${po.dictField?split(',')[0]}',orgFields:'${po.dictField?split(',')[0]}',destFields:'${po.dictText?split(',')[0]}'}}">
<#elseif po.classType=="sel_user" || po.classType=="sel_depart" || po.classType=="datetime" || po.classType=="date" || po.classType=="pca" || po.classType=="switch">
<#return "{type:'${po.classType}',value:'${po.fieldName}',text:'${po.filedComment}'}">
<#else>
<#if po.classType=="sel_search" || po.classType=="list_multi">
<#return "{type:'${po.classType}',value:'${po.fieldName}',text:'${po.filedComment}',dictTable:\"${superQuery_dictTable}\", dictText:'${superQuery_dictText}', dictCode:'${po.dictField}'}">
<#elseif po.dictTable?? && po.dictTable!="" && po.classType!="sel_tree" && po.classType!="cat_tree" && po.classType!="link_down">
<#return "{type:'${po.fieldDbType}',value:'${po.fieldName}',text:'${po.filedComment}',dictCode:\"${po.dictTable},${po.dictText},${po.dictField}\"}">
<#elseif po.dictField?? && po.classType!="sel_tree" && po.classType!="cat_tree" && po.classType!="link_down">
<#return "{type:'${po.fieldDbType}',value:'${po.fieldName}',text:'${po.filedComment}',dictCode:'${po.dictField}'}">
<#elseif po.fieldDbType=="Text">
<#return "{type:'string',value:'${po.fieldName}',text:'${po.filedComment}'}">
<#elseif po.fieldDbType=="Blob">
<#return "{type:'byte',value:'${po.fieldName}',text:'${po.filedComment}'}">
<#elseif po.fieldDbType=="BigDecimal" || po.fieldDbType=="double">
<#return "{type:'number',value:'${po.fieldName}',text:'${po.filedComment}'}">
<#else>
<#return "{type:'${po.fieldDbType}',value:'${po.fieldName}',text:'${po.filedComment}'}">
</#if>
</#if>
</#function>
<#-- update-begin---author:chenrui ---date:20231228 for:[QQYUN-7527]vue3代码生成默认带上高级查询---------- -->
<#-- ** 高级查询生成(Vue3 * -->
<#function superQueryFieldListForVue3(po,order)>
<#-- 字段展示/DB类型 -->
<#assign baseAttrs="view: '${po.classType}', type: 'string',">
<#if po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal'>
<#assign baseAttrs="view: 'number', type: 'number',">
</#if>
<#-- 特殊类型控件扩展字段 -->
<#assign extAttrs="">
<#assign dictCode="">
<#if po.dictTable?default('')?trim?length gt 1 && po.dictText?default('')?trim?length gt 1 && po.dictField?default("")?trim?length gt 1>
<#assign dictCode="dictTable: '${po.dictTable}', dictCode: '${po.dictField}', dictText: '${po.dictText}'">
<#elseif po.dictField?default("")?trim?length gt 1>
<#assign dictCode="dictCode: '${po.dictField}'">
</#if>
<#if po.classType=='list' || po.classType=='list_multi' || po.classType=='sel_search' || po.classType=='checkbox'>
<#assign extAttrs="${dictCode},">
<#elseif po.classType=='cat_tree'>
<#-- 分类字典树 -->
<#-- update-begin---author:chenrui ---date:20240109 for[issue/5787]增加非空判断防止代码生成时空指针异常---------- -->
<#assign extAttrs="pcode: '${po.dictField?default('')}',">
<#-- update-end---author:chenrui ---date:20240109 for[issue/5787]增加非空判断防止代码生成时空指针异常---------- -->
<#elseif po.classType=='sel_tree'>
<#-- 自定义树 -->
<#if po.dictText??>
<#-- dictText示例:id,pid,name,has_child -->
<#if po.dictText?split(',')[2]?? && po.dictText?split(',')[0]??>
<#assign extAttrs="dict: '${po.dictTable},${po.dictText?split(',')[2]},${po.dictText?split(',')[0]}'">
<#elseif po.dictText?split(',')[1]??>
<#assign extAttrs="pidField: '${po.dictText?split(',')[1]}'">
<#elseif po.dictText?split(',')[3]??>
<#assign extAttrs="hasChildField: '${po.dictText?split(',')[3]}'">
</#if>
</#if>
<#-- update-begin---author:chenrui ---date:20240109 for[issue/5787]增加非空判断防止代码生成时空指针异常---------- -->
<#assign extAttrs="${extAttrs}, pidValue: '${po.dictField?default('')}',">
<#-- update-end---author:chenrui ---date:20240109 for[issue/5787]增加非空判断防止代码生成时空指针异常---------- -->
<#elseif po.classType=='popup'>
<#-- popup -->
<#-- update-begin---author:chenrui ---date:20240109 for[issue/5787]增加非空判断防止代码生成时空指针异常---------- -->
<#if po.dictText?default("")?trim?length gt 1 && po.dictText?index_of(',') gt 0 && po.dictField?default("")?trim?length gt 1>
<#-- update-begin---author:chenrui ---date:20240109 for[issue/5787]增加非空判断防止代码生成时空指针异常---------- -->
<#-- 如果有多个回填字段,找到popup字段对应的来源字段 -->
<#assign orgFieldIx=po.dictText?split(',')?seq_index_of(po.fieldDbName)>
<#assign orgField=po.dictField?split(',')[orgFieldIx]>
<#else>
<#assign orgField=po.dictField?default("")>
</#if>
<#assign extAttrs="code: '${po.dictTable?default('')}', orgFields: '${orgField}', destFields: '${po.fieldName}', popupMulti: false,">
</#if>
<#return "${po.fieldName}: {title: '${po.filedComment}',order: ${order},${baseAttrs}${extAttrs}}" >
</#function>
<#-- update-end---author:chenrui ---date:20231228 for:[QQYUN-7527]vue3代码生成默认带上高级查询---------- -->
<#-- vue3 获取表单modal的宽度-->
<#function getModalWidth fieldRowNum>
<#assign modal_width = 800>
<#if fieldRowNum==2>
<#assign modal_width = 896>
<#elseif fieldRowNum==3>
<#assign modal_width = 1024>
<#elseif fieldRowNum==4>
<#assign modal_width = 1280>
</#if>
<#return modal_width>
</#function>
<#-- vue3 获取表单 colspan -->
<#function getFormSpan fieldRowNum>
<#assign form_span = 24>
<#if fieldRowNum==2>
<#assign form_span = 12>
<#elseif fieldRowNum==3>
<#assign form_span = 8>
<#elseif fieldRowNum==4>
<#assign form_span = 6>
</#if>
<#return form_span>
</#function>
<#-- vue3 native 判断字段名不是 pidField -->
<#function isNotPidField(tableVo, fieldDbName) >
<#assign flag = true>
<#if tableVo??>
<#if tableVo.extendParams??>
<#if tableVo.extendParams.pidField?default("")?trim == fieldDbName>
<#assign flag = false>
</#if>
</#if>
</#if>
<#return flag>
</#function>