<#----> <#-- 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> <#--下划线转驼峰--> <#function dashedToCamel(str)> <#assign text=""/> <#assign strlist = str?split("_")/> <#list strlist as v> <#assign text=text+v?cap_first/> <#return text?uncap_first> <#-- 驼峰转下划线 --> <#function camelToDashed(str, case='lower')> <#return camelToChar(str, "_", case)> <#----> <#-- 驼峰转横线 --> <#function camelToHorizontal(str, case='normal')> <#return camelToChar(str, "-", case)> <#----> <#-- 获取 v-model 属性 --> <#function getVModel po,suffix=""> <#return "v-model=\"queryParam.${po.fieldName}${suffix}\""> <#-- 获取 placeholder 属性 --> <#function getPlaceholder po,prefix,fillComment=true> <#if fillComment> <#return "placeholder=\"${prefix}${po.filedComment}\""> <#else> <#return "placeholder=\"${prefix}\""> <#-- ** 判断某字段是否配置了校验 * --> <#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> <#return false> <#-- ** 如果配置了校验就显示 validatorRules * --> <#function autoWriteRules po> <#if poHasCheck(po)> <#return ", validatorRules.${po.fieldName}"> <#else> <#return ""> <#-- ** 如果Blob就显示 String * --> <#function autoStringSuffix po> <#if po.fieldDbType=='Blob'> <#return "'${po.fieldName}String'"> <#else> <#return "'${po.fieldName}'"> <#-- ** 如果Blob就显示model方式 String * --> <#function autoStringSuffixForModel po> <#if po.fieldDbType=='Blob'> <#return "${po.fieldName}String"> <#else> <#return "${po.fieldName}"> <#-- ** 高级查询生成 * --> <#function superQueryFieldList po> <#assign superQuery_dictTable=""> <#assign superQuery_dictText=""> <#if po.dictTable?default("")?trim?length gt 1> <#assign superQuery_dictTable="${po.dictTable}"> <#if po.dictText?default("")?trim?length gt 1> <#assign superQuery_dictText="${po.dictText}"> <#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}'}"> <#-- 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',"> <#-- 特殊类型控件扩展字段 --> <#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> <#-- update-begin---author:chenrui ---date:20231228 for:fix 带条件字典存在单引号导致js编译错误---------- --> <#assign dictCode="dictTable: \"${po.dictTable}\", dictCode: '${po.dictField}', dictText: '${po.dictText}'"> <#-- update-begin---author:chenrui ---date:20231228 for:fix 带条件字典存在单引号导致js编译错误---------- --> <#elseif po.dictField?default("")?trim?length gt 1> <#assign dictCode="dictCode: '${po.dictField}'"> <#else> <#assign dictCode="dictCode: ''"> <#if po.classType=='list' || po.classType=='list_multi' || po.classType=='sel_search' || po.classType=='checkbox' || po.classType=='radio'> <#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]}'"> <#-- 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("")> <#assign extAttrs="code: '${po.dictTable?default('')}', orgFields: '${orgField}', destFields: '${po.fieldName}', popupMulti: false,"> <#return "${po.fieldName}: {title: '${po.filedComment}',order: ${order},${baseAttrs}${extAttrs}}" > <#-- 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> <#return modal_width> <#-- 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> <#return form_span> <#-- 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> <#return flag> <#-- vue3 native 获取范围字段 --> <#function getRangeField(columns) > <#assign rangeField = ""> <#list columns as po> <#if po.isQuery=='Y'> <#if po.queryMode=='group'> <#if po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal' || po.classType=='time' || po.classType=='date' || po.classType=='datetime'> <#assign rangeField = rangeField + "${po.fieldName},"> <#return rangeField>