ludc
2023-05-14 b46cf401da847d7cca6269c6b2ffb04f6f72691a
新增应用码段下的参照配置界面,以及代码整合
已修改74个文件
已删除7个文件
已重命名9个文件
已复制4个文件
已添加33个文件
12591 ■■■■ 文件已修改
Source/UBCS-WEB/.settings/src/main.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/.settings/src/views/code/addbasiccode.vue 508 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/.settings/src/views/code/clonecode.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/.settings/src/views/code/code.vue 3655 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/.settings/src/views/modeling/original.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/.settings/src/views/omd/dict.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/UBCS-WEB - 快捷方式.lnk 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/package-lock.json 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/public/index.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/public/src/mock/menu.js 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/public/src/views/wel/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/code/codebutton.js 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/dict.js 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/enum.js 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue 618 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/codeSynonym.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/codebasic.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/codebutton.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/mdmrule.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/selectattroption.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/omd/enum.js 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/main.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/mock/menu.js 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/login/userlogin.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/authority/apiscope.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/authority/datascope.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/authority/role.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/codebutton.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/flow/follow.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/flow/manager.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/flow/model.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Business.vue 622 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/original.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/omd/enum.vue 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/report/reportlist.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/client.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/dept.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/menu.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/post.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/tenant.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/topmenu.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/user.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/wel/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/work/claim.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/work/done.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/work/send.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/work/start.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/work/todo.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateAttrDTO.java 797 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateButtonDTO.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyValueDTO.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCodeAllCodeDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTemplatePhaseDTO.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstemplateVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java 414 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java 867 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeTemplatePhaseVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/EnumCache.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Enum.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/EnumItem.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/EnumEnum.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeClient.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeFallback.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumClient.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumFallback.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumItemClient.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumItemFallback.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/EnumItemVO.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/EnumVO.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPLLambdaUtil.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/PatternUtil.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/node/ForestNodeManagerOid.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/node/ForestNodeMergerOid.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/node/INodeOid.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/Md5.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseAttrController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseAttrMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstempattrService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseAttrService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseAttrServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseAttrWrapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseAttrMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseattrMapper.xml 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictController.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumController.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumItemController.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmAttributeClient.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/EnumClient.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/EnumItemClient.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/EnumItemMapper.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/EnumMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumItemService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumItemServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumServiceImpl.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/EnumWrapper.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/EnumitemWrapper.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/EnumItemMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/EnumMapper.xml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/.settings/src/main.js
@@ -25,7 +25,18 @@
import crudCommon from '@/mixins/crud';
// ä¸šåŠ¡ç»„ä»¶
import tenantPackage from './views/system/tenantpackage';
import enupackage from "@/views/modeling/enupackage";
import Versionpackage from "@/views/modeling/Versionpackage";
import Businpackage from "@/views/modeling/Businpackage";
import Relationpackage from "@/views/modeling/Relationpackage"
import Torelationpackage from "@/views/modeling/Torelationpackage"
import originalRange from "@/views/modeling/originalRange"
import originalLink from "@/views/modeling/originalLink"
import classifyTrees from "@/components/Tree/classifyTrees"
import classifyTreeform from "@/components/Tree/classifyTreeform"
import TemplatePro from "@/components/Tree/TemplatePro"
import formulaEditor from "@/components/code-dialog-page/formulaEditor"
import businessAdd from "@/views/modeling/BusinessAdd"
// æ³¨å†Œå…¨å±€crud驱动
window.$crudCommon = crudCommon;
// åŠ è½½Vue拓展
@@ -47,6 +58,18 @@
Vue.component('avueUeditor', avueUeditor);
Vue.component('flowDesign', flowDesign);
Vue.component('tenantPackage', tenantPackage);
Vue.component('enupackage',enupackage)
Vue.component('Versionpackage',Versionpackage)
Vue.component('Businpackage',Businpackage)
Vue.component('Relationpackage',Relationpackage)
Vue.component('Torelationpackage',Torelationpackage)
Vue.component('originalRange',originalRange)
Vue.component('originalLink',originalLink)
Vue.component('classifyTrees',classifyTrees)
Vue.component('classifyTreeform',classifyTreeform)
Vue.component('TemplatePro',TemplatePro)
Vue.component('formulaEditor',formulaEditor)
Vue.component('businessAdd',businessAdd)
// åŠ è½½ç›¸å…³url地址
Object.keys(urls).forEach(key => {
  Vue.prototype[key] = urls[key];
Source/UBCS-WEB/.settings/src/views/code/addbasiccode.vue
ÎļþÒÑɾ³ý
Source/UBCS-WEB/.settings/src/views/code/clonecode.vue
ÎļþÒÑɾ³ý
Source/UBCS-WEB/.settings/src/views/code/code.vue
@@ -2,55 +2,56 @@
  <basic-container style="height: 350px;">
    <!-- ç¼–码规则信息展示区域 -->
    <basic-container>
      <p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">编码规则</p>
      <avue-crud :option="optionRule"
                :table-loading="loading"
                :data="data"
                :page.sync="page"
                :permission="permissionList"
                v-model="form"
                ref="crud"
                :before-open="beforeOpen"
                @cell-click="loadBasic"
                @row-update="rowUpdate"
                @row-save="rowSave"
                @search-change="searchChange"
                @search-reset="searchReset"
                @selection-change="selectionChange"
                @current-change="currentChange"
                @size-change="sizeChange"
                @refresh-change="refreshChange"
                @on-load="onLoad">
    <basic-container class="code-rule-container">
      <p style="margin-top: -5px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">编码规则</p>
      <avue-crud class="code-rule-crud"
        :option="optionRule"
        :table-loading="loading"
        :data="data"
        :page.sync="page"
        :permission="permissionList"
        v-model="ruleForm"
        ref="crud"
        :before-open="beforeOpen"
        @row-click="codeRuleRowClick"
        @row-update="rowUpdate"
        @row-save="rowSave"
        @search-change="searchChange"
        @search-reset="searchReset"
        @selection-change="selectionChange"
        @current-change="currentChange"
        @size-change="sizeChange"
        @refresh-change="refreshChange"
        @on-load="onLoad">
        <!-- è¡¨æ ¼å†…操作按钮 -->
        <template slot="menu" slot-scope="scope">
          <el-button type="text"
                    size="small"
                    icon="el-icon-edit"
                    v-show="scope.row.lcStatus=='Editing' ? true:false"
                    plain
                    @click="openEdit(scope.row)">编 è¾‘
              size="small"
              icon="el-icon-edit"
              v-show="scope.row.lcStatus=='Editing' ? true:false"
              plain
              @click="openEdit(scope.row)">编 è¾‘
          </el-button>
          <el-button type="text"
                    size="small"
                    icon="el-icon-position"
                    v-show="scope.row.lcStatus=='Editing' ? true:false"
                    plain
                    @click="enableOrDeactivatse(scope.row.oid,'release')">发 å¸ƒ
            size="small"
            icon="el-icon-position"
            v-show="scope.row.lcStatus=='Editing' ? true:false"
            plain
            @click="enableOrDeactivatse(scope.row.oid,'release')">发 å¸ƒ
          </el-button>
          <el-button type="text"
                    size="small"
                    v-show="scope.row.lcStatus=='Released' ? true:false"
                    icon="el-icon-video-pause"
                    plain
                    @click="enableOrDeactivatse(scope.row.oid,'disable')">停 ç”¨
            size="small"
            v-show="scope.row.lcStatus=='Released' ? true:false"
            icon="el-icon-video-pause"
            plain
            @click="enableOrDeactivatse(scope.row.oid,'disable')">停 ç”¨
          </el-button>
          <el-button type="text"
                    size="small"
                    v-show="scope.row.lcStatus=='Disabled' ? true:false"
                    icon="el-icon-video-play"
                    plain
                    @click="enableOrDeactivatse(scope.row.oid,'enable')">启 ç”¨
            size="small"
            v-show="scope.row.lcStatus=='Disabled' ? true:false"
            icon="el-icon-video-play"
            plain
            @click="enableOrDeactivatse(scope.row.oid,'enable')">启 ç”¨
          </el-button>
        </template>
        <!-- è¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
@@ -64,13 +65,13 @@
          <el-button size="small"
                    icon="icon-kelong"
                    plain
                    @click="cloneCodeSetting">克 éš†
                    @click="openCodeRuleDialog">克 éš†
          </el-button>
          <el-button size="small"
                    icon="icon-lianjiekelong"
                    style="font-size: 12px;"
                    plain
                    @click="handleDelete">从其他规则中克隆码段
                    @click="openOtherCodeRuleDialog">从其他规则中克隆码段
          </el-button>
          <el-button size="small"
                    icon="el-icon-s-help"
@@ -80,17 +81,18 @@
          <el-button size="small"
                    icon="icon-qingkong"
                    plain
                    @click="handleDelete">清空码值
                    @click="clearAllCodeSec">清空码值
          </el-button>
        </template>
      </avue-crud>
    </basic-container>
    <!-- å¯¹è¯æ¡† -->
    <!-- ç¼–码规则相关对话框 -->
    <el-dialog title="编码规则使用范围"
        append-to-body
        :visible.sync="codeRangeSettingBox"
        width="800px">
      append-to-body
      :visible.sync="codeRangeSettingBox"
      width="800px"
        style="height: 116vh; margin-top: -10vh;">
      <avue-crud
        :option="dialogeOption" 
        :table-loading="dialogLoading"
@@ -98,1213 +100,2432 @@
        @refresh-change="refreshUseRangeChange">
      </avue-crud>
    </el-dialog>
    <!-- å…‹éš†å¯¹è¯æ¡† -->
    <!-- ç¼–码规则,克隆对话框 -->
    <el-dialog title="克隆编码规则"
        append-to-body
        :visible.sync="cloneSettingBox"
        width="800px">
      <clone-code></clone-code>
      append-to-body
      :visible.sync="cloneSettingBox"
      width="800px"
      style="height: 120vh; margin-top: -14vh; overflow: hidden;">
      <div style="overflow-y: auto; height: 78vh">
        <el-row>
          <el-form ref="form" :model="form" label-width="80px" :inline="true">
            <el-form-item label="编号" required>
              <el-input v-model="cloneCodeRuleForm.id"></el-input>
            </el-form-item>
            <el-form-item label="名称" required>
              <el-input v-model="cloneCodeRuleForm.name"></el-input>
            </el-form-item>
            <el-form-item  label="描述" class="clone-input-textarea">
              <el-input :autosize="{ minRows: 3, maxRows: 5}" type="textarea" v-model="cloneCodeRuleForm.description"></el-input>
            </el-form-item>
          </el-form>
        </el-row>
        <el-row>
          <p style="margin: -3vh 0px 16px 50%; font-weight: 500; font-size: 16px; color: #000;">码段管理</p>
          <avue-crud
            class="clone-avue-crud"
            :option="cloneOption"
            :table-loading="cloneTableLoading"
            :data="cloneData"
            @on-load="cloneDataOnLoad">
            <template slot="menu" slot-scope="scope">
              <el-button
                type="text"
                size="small"
                icon="el-icon-arrow-up"
                v-show="scope.row.orderNum > 1"
                plain
                @click="upOrderNum(scope.row)">上移
              </el-button>
              <el-button
                type="text"
                size="small"
                icon="el-icon-arrow-down"
                plain
                @click="downOrderNum(scope.row)">下移
              </el-button>
            </template>
          </avue-crud>
        </el-row>
      </div>
      <div slot="footer" class="dialog-footer" style="height: 50px; margin-top: -4vh;">
        <el-button @click="cloneSettingBox = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="saveCloneCodeRule">保 å­˜</el-button>
      </div>
    </el-dialog>
    <!-- ç¼–码规则,从其他规则克隆对话框 -->
    <el-dialog title="克隆编码规则的基础信息"
      append-to-body
      :visible.sync="cloneOtherCodeRuleSettingBox"
      width="800px"
      style="height: 150vh; margin-top: -14vh;"
      destroy-on-close>
      <div>
        <el-row>
          <p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">编码规则</p>
          <avue-crud
            class="other-clone-coderule-crud"
            :option="cloneCodeRuleOption"
            @row-click="codeOtherCloneRuleRowClick"
            :table-loading="loading"
            :data="data"
            :page.sync="page"
            ref="crudCloneCodeRuleOther"
            @size-change="sizeChange"
            @selection-change="selectionOtherCloneCodeRuleChange"
            @on-load="onLoad">
          </avue-crud>
        </el-row>
        <el-row>
          <p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">码段信息</p>
          <avue-crud
            class="other-clone-codebasic-crud"
            :option="cloneBasicOption"
            ref="crudCloneCodeBasicOther"
            :table-loading="loadingBasic"
            :data="basicData"
            @selection-change="selectionOtherCloneCodeBasicChange">
          </avue-crud>
        </el-row>
      </div>
      <div slot="footer" class="dialog-footer" style="height: 50px; margin-top: -4vh;">
        <el-button @click="cloneOtherCodeRuleSettingBox = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="saveOtherCodeBasic">保 å­˜</el-button>
      </div>
    </el-dialog>
    <!-- åŸºç¡€ç æ®µå±•示区域 -->
    <basic-container>
        <p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">码段管理</p>
        <avue-crud :option="optionBasic"
    <basic-container class="code-basicsec-container">
      <p style="margin-top: -5px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">码段管理</p>
      <avue-crud  class="code-basic-crud"
        :option="optionBasic"
        ref="crudBasic"
        :table-loading="loadingBasic"
        :data="basicData"
        :permission="permissionList"
        @selection-change="selectionBasicChange"
        @refresh-change="refreshChangeBasicSec">
        <!-- åŸºç¡€ç æ®µè¡¨æ ¼å†…操作按钮 -->
        <template slot="menu" slot-scope="scope">
      <!-- åŸºç¡€ç æ®µè¡¨æ ¼å†…操作按钮 -->
      <template slot="menu" slot-scope="scope">
        <el-button
          type="text"
          size="small"
          icon="el-icon-view"
          v-show="currentRuleLcStatus != 'Editing'"
          plain
          @click="openBasicDialog('view',scope.row)">查看
        </el-button>
        <el-button
          type="text"
          size="small"
          icon="el-icon-edit"
          v-show="currentRuleLcStatus === 'Editing'"
          plain
          @click="openBasicDialog('edit',scope.row)">编辑
        </el-button>
        <el-button
          type="text"
          size="small"
          icon="el-icon-setting"
          v-show="scope.row.secType === 'codeclassifysec' || scope.row.secType == 'codefixedsec'"
          plain
          @click="openBasicSecCodeValueMgr(scope.row)">码值管理
        </el-button>
        <el-button
          type="text"
          size="small"
          icon="el-icon-arrow-up"
          v-show="scope.row.orderNum > 1"
          plain
          @click="upOrderNum(scope.row)">上移
        </el-button>
        <el-button
          type="text"
          size="small"
          icon="el-icon-arrow-down"
          plain
          @click="downOrderNum(scope.row)">下移
        </el-button>
      </template>
          <el-button type="text"
                    size="small"
                    icon="icon-shangyi"
                    v-show="scope.row.lcStatus != 'Editing' ? true:false"
                    plain
                    @click="openEdit(scope.row)">查 çœ‹
          </el-button>
      <!-- åŸºç¡€ç æ®µè¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
      <template slot="menuLeft" slot-scope="scope">
        <el-button type="primary"
                  size="small"
                  icon="el-icon-plus"
                  @click="addBasicCodeSec">新 å¢ž
        </el-button>
        <el-button type="danger"
                  size="small"
                  icon="el-icon-delete"
                  plain
                  @click="deleteBasicCode(scope.row)">删 é™¤
        </el-button>
      </template>
          <el-button type="text"
                    size="small"
                    icon="icon-shangyi"
                    v-show="scope.row.lcStatus == 'Editing' ? true:false"
                    plain
                    @click="openEdit(scope.row)">编 è¾‘
          </el-button>
          <el-button type="text"
                    size="small"
                    icon="icon-shangyi"
                    v-show="scope.row.secType == 'codeclassifysec' || scope.row.secType == 'codefixedsec' ? true:false"
                    plain
                    @click="openEdit(scope.row)">码值管理
          </el-button>
          <el-button type="text"
                    size="small"
                    icon="icon-shangyi"
                    v-show="scope.row.orderNum > 1 ? true:false"
                    plain
                    @click="upOrderNum(scope.row)">上 ç§»
          </el-button>
          <el-button type="text"
                    size="small"
                    icon="icon-xiayi"
                    plain
                    @click="downOrderNum(scope.row)">下 ç§»
          </el-button>
        </template>
        <!-- åŸºç¡€ç æ®µè¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
        <template slot="menuLeft" slot-scope="scope">
          <el-button type="primary"
                    size="small"
                    icon="el-icon-plus"
                    @click="addBasicCodeSec">新 å¢ž
          </el-button>
          <el-button type="danger"
                    size="small"
                    icon="el-icon-delete"
                    plain
                    @click="deleteBasicCode(scope.row)">删 é™¤
          </el-button>
        </template>
    </avue-crud>
      </avue-crud>
    </basic-container>
     <!-- åŸºç¡€ç¼–码规则对话框 -->
     <el-dialog title="添加码段信息"
        :visible.sync="addBasicCodeSettingBox"
        width="780px"
        append-to-body
        style="margin-top: -8vh;"
        destroy-on-close>
        <!-- å±žæ€§ç æ®µï¼Œå±žæ€§é€‰æ‹©å¼¹çª— -->
        <el-dialog title="为[属性]选取值"
          append-to-body
          :visible.sync="isShowSelectAttrOption"
          width="78%"
          style="height: 100%; margin-top: -8vh; overflow: hidden">
          <div style="overflow-y: auto; height: 60vh">
            <el-row>
              <!-- å·¦ä¾§ä¸»é¢˜åº“分类树 -->
              <el-col :span="5">
                <div class="box">
                  <el-scrollbar style="height: auto; border-bottom-right-radius:8px ">
                    <basic-container>
                      <div class="abox">
                        <avue-tree :data="attrClassifyTreeData" :option="treeOption" @node-click="nodeClick"/>
                      </div>
                    </basic-container>
                  </el-scrollbar>
                </div>
              </el-col>
              <!-- å³ä¾§è¡¨æ ¼æ˜¾ç¤ºåŒºåŸŸ -->
              <el-col span="19">
    <!-- ç æ®µç å€¼ç®¡ç†å¯¹è¯æ¡† -->
    <el-dialog title="码段码值管理"
      :visible.sync="isShowBasicSecCodeValueMgr"
      :width="isShowFixedForm ? '68vw':'50vw'"
      append-to-body
      style="height: 116vh; margin-top: -10vh;"
      @close="clearFixedOrClassifyForm('close')"
      destroy-on-close>
      <!-- åˆ†ç±»ç æ®µç å€¼ç®¡ç† -->
      <el-row v-show="!isShowFixedForm">
        <el-col :span="11">
          <basic-container>
            <div class="box classify_value_box" style="height:65vh; margin-bottom:-40px">
              <el-scrollbar style="border-bottom-right-radius:8px ">
                <basic-container>
                  <div class="bbox">
                  <avue-crud ref="crud"
                      v-model="form"
                      :data="selectattrData"
                      :option="attrOption"
                      :permission="permissionList"
                      :table-loading="selectAttrOptionLoading"
                      @search-change="selectAttrOptionSearchChange"
                      @search-reset="searchAttrReset"
                      @selection-change="selectionChangeAttr">
                  </avue-crud>
                  <div class="abox" style="height:54vh">
                    <avue-tree
                      :data="classifyValueTreeData"
                      :option="classisyValueTreeOption"
                      @node-click="classisyValueTreeOnodeClick"
                      style="overflow-y: auto; height: 54vh"/>
                  </div>
                </basic-container>
              </el-col>
              </el-scrollbar>
            </div>
            <div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
              <el-button size="mini" type="primary" icon="el-icon-arrow-up" class="button" @click="codeClassifyValueOpetion('up')">上移</el-button>
              <el-button size="mini" type="primary" icon="el-icon-arrow-down" class="button" @click="codeClassifyValueOpetion('down')">下移</el-button>
            </div>
          </basic-container>
        </el-col>
        <el-col :span="13">
          <basic-container>
            <div class="box" style="height:65vh; margin-bottom:-40px">
              <el-form>
                <el-form-item label="码值:" :label-width="50" required>
                  <el-input style="width: 18vw" v-model="codeClassifyForm.id"></el-input>
                </el-form-item >
                <el-form-item label="名称:" :label-width="50" required>
                  <el-input style="width: 18vw" v-model="codeClassifyForm.name"></el-input>
                </el-form-item>
              </el-form>
            </div>
            <div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
              <el-button size="mini" type="primary" icon="el-icon-circle-plus" class="button" @click="addCodeSecValue('codeclassifyvaluesec')">添加</el-button>
              <el-button :disabled="selectedFixedOrCodeclassifyValue==''"  size="mini" type="success" plain icon="el-icon-edit-outline" class="button"  @click="editCodeSecValue('codeclassifyvaluesec')">修改</el-button>
              <el-button :disabled="selectedFixedOrCodeclassifyValue==''"  size="mini" type="danger" icon="el-icon-close" class="button" @click="delCodeSecValue('codeclassifyvaluesec')">删除</el-button>
              <el-button size="mini" type="warning" plain icon="el-icon-close" class="button" @click = "clearFixedOrClassifyForm('codeclassifyvaluesec')">取消</el-button>
            </div>
          </basic-container>
        </el-col>
      </el-row>
      <!-- å›ºå®šç æ®µç å€¼ç®¡ç† -->
      <el-row v-show="isShowFixedForm">
        <el-col :span="15">
          <basic-container>
            <div class="box fixedbox" style="height:65vh; margin-bottom:-40px">
              <avue-crud
                class="fixed-avue-crud"
                ref="crudFixedValue"
                :data="fixedValueData"
                :option="fixedValueOption"
                :table-loading="fixedValueOptionLoading"
                @row-click="selectedCodeValueRow">
                <!-- è¡¨æ ¼å†…按钮配置 -->
                <template slot="menu" slot-scope="scope">
                  <el-button size="mini" type="text" icon="el-icon-arrow-up" @click="codeFixedValueOpetion('up',scope.row)">上移</el-button>
                  <el-button size="mini" type="text" icon="el-icon-arrow-down" @click="codeFixedValueOpetion('down',scope.row)">下移</el-button>
                  <el-button size="mini" type="text" icon="el-icon-minus" @click="codeFixedValueOpetion('remove',scope.row)">移除</el-button>
                </template>
              </avue-crud>
            </div>
            <div style="margin-top:20px;">
              <el-button size="mini" type="primary" icon="el-icon-success" class="button" @click="saveCodeFixedOrClassifyValueOption('fixedValue')">保存</el-button>
            </div>
          </basic-container>
        </el-col>
        <el-col :span="9">
          <basic-container>
            <div class="box" style="height: 65vh; margin-bottom:-40px; overflow:hidden;" >
              <div style="overflow-y:auto;height: 60vh;">
                <el-form>
                  <el-form-item label="码值:" label-width="54px" required>
                    <el-input style="width: 19.5vw" v-model="codeFixdForm.id"></el-input>
                  </el-form-item >
                  <el-form-item label="描述:">
                    <el-input type="textarea" style="width: 20vw;" v-model="codeFixdForm.description"></el-input>
                  </el-form-item>
                </el-form>
              </div>
            </div>
            <div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
              <el-button :disabled="selectedFixedOrCodeclassifyValue!=''" size="mini" type="primary" icon="el-icon-circle-plus" class="button" @click="addCodeSecValue('codefixedsec')">添加</el-button>
              <el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="success" plain plain icon="el-icon-edit-outline" class="button" @click="editCodeSecValue('codefixedsec')">修改</el-button>
              <el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="danger" icon="el-icon-close" class="button" @click="delCodeSecValue('codefixedsec')">删除</el-button>
              <el-button size="mini" type="warning" plain icon="el-icon-close" class="button" @click = "clearFixedOrClassifyForm('codefixedsec')">取消</el-button>
            </div>
          </basic-container>
        </el-col>
      </el-row>
    </el-dialog>
            </el-row>
          </div>
    <!-- åŸºç¡€ç æ®µæ–°å¢žç›¸å…³å¯¹è¯æ¡† -->
    <el-dialog :title="basicSecDialogTitle"
      :visible.sync="addBasicCodeSettingBox"
      width="60vw"
      append-to-body
      style="height: 115vh; margin-top: -13vh; overflow: hidden"
      destroy-on-close
      @close="clearBasicAddForm">
          <div slot="footer" class="dialog-footer">
            <el-button @click="isShowSelectAttrOption = false">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="savelistClassifyLinkAttr">ç¡® å®š</el-button>
          </div>
        </el-dialog>
      <!--  ç¬¬ä¸€å±‚对话框,添加码段信息对话框中的内容 -->
      <div class="total" style="overflow-y: auto; height: 70vh">
        <el-form :model="form">
          <span class="left">
            <el-form-item label="码段编号:" :label-width="leftFormLabelWidth" required>
              <el-input v-model="form.id" :readonly="basicSecOnlyRead" ref="id"></el-input>
            </el-form-item>
         <!-- å±žæ€§ç æ®µï¼Œå…¬å¼ç¼–辑框弹窗 -->
        <el-dialog title="公式编辑框"
          append-to-body
          :visible.sync="isShowformulaEdit"
          @close="closeFormulaEdit"
          width="78%"
          style="height: 150vh; margin-top: -13vh; overflow: hidden">
            <el-form-item label="码段名称:" :label-width="leftFormLabelWidth" required>
              <el-input ref="name"  v-model="form.name" :readonly="basicSecOnlyRead"></el-input>
            </el-form-item>
            <el-form-item label="码段类型" :label-width="leftFormLabelWidth" required>
              <el-select v-model="form.secType" placeholder="请选择" @change="changeSectypeFormItems(null)" :disabled="basicSecOnlyRead">
                <el-option
                  v-for="item in sectypeList"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
                </el-option>
              </el-select>
            </el-form-item>
          <div style="overflow-y: auto; height: 80vh">
            <el-row>
              <!-- å·¦ä¾§å…¬å¼å†…容 -->
              <el-col :span="14" style="overflow: hidden">
                <el-card class="box-card" style="height: 33vh; overflow-y: auto; overflow-x: auto;">
                    <div slot="header" class="clearfix">
                      <span style="font-size: medium;">公式内容</span>
                      <el-button type="primary" size="mini" style="float: right;" @click="saveFormulaContent">确定</el-button>
                      <el-button type="warning" size="mini" style="margin-right: 10px; float: right;" @click="resetformulaContent">清空内容</el-button>
            <el-form-item label="描述:" :label-width="leftFormLabelWidth">
              <el-input type="textarea" v-model="form.description" :readonly="basicSecOnlyRead"></el-input>
            </el-form-item>
            <el-form-item label="是否流水依赖:" :label-width="leftFormLabelWidth">
              <el-switch v-model="form.serialDependFlag" :disabled="basicSecOnlyRead"></el-switch>
              <el-input-number v-show="form.serialDependFlag" v-model="form.serialDependOrder" controls-position="right" :readonly="basicSecOnlyRead"></el-input-number>
            </el-form-item>
            <el-form-item label="是否为空:" :label-width="leftFormLabelWidth">
              <el-switch v-model="form.nullableFlag"  :disabled="basicSecOnlyRead"></el-switch>
            </el-form-item>
          </span>
          <el-divider direction="vertical"></el-divider>
          <span class="right">
            <!-- å›ºå®šç æ®µ -->
            <div v-show="form.secType==='codefixedsec' ? true:false">
              <el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth" required>
                <el-select v-model="form.codeSecLengthType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                  v-for="item in codeSecLengthType"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
                </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required>
                <el-input v-model.number="form.codeSecLength" ref="codeSecLength" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
            </div>
            <!-- å±žæ€§ç æ®µ -->
            <div v-show="form.secType==='codeattrsec' ? true:false">
              <el-form-item label="属性:" :label-width="rightFormLabelWidth" required>
                <el-input
                  placeholder="请选择"
                  prefix-icon="el-icon-search"
                  readonly="true"
                  ref="referAttributeId"
                  v-model="form.referAttributeName"
                  @focus="openAttrSelectOrGetValue('attr')"
                  :disabled="basicSecOnlyRead">
                  <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('attr')" style="cursor: pointer;"></i>
                </el-input>
              </el-form-item>
              <el-form-item label="属性所在分类:" :label-width="rightFormLabelWidth">
                <el-input
                  v-model="form.referCodeClassifyOidName"
                  disabled>
              </el-input>
              </el-form-item>
              <el-form-item label="取值规则:" :label-width="rightFormLabelWidth">
                <el-input
                  placeholder="请选择"
                  prefix-icon="el-icon-search"
                  readonly="true"
                  v-model="form.getValueClass"
                  :disabled="basicSecOnlyRead"
                  @focus="openAttrSelectOrGetValue('value')">
                  <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('value')" style="margin-right: 5px;cursor: pointer;"></i>
                </el-input>
              </el-form-item>
            </div>
            <!-- æµæ°´ç æ®µ -->
            <div v-show="form.secType==='codeserialsec' ? true:false">
              <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required>
                <el-input v-model.number="form.codeSecLength" ref="seriaCodeSecLength" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="流水号的起始值:" :label-width="rightFormLabelWidth">
                <el-input v-model.number="form.serialStart" ref="serialStart"  :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="流水的步长:" :label-width="rightFormLabelWidth">
                <el-input v-model.number="form.serialStep" ref="serialStep"  :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth" required>
                <el-select v-model="form.codeFillType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option label="左补位" value="codeattrsec"
                    v-for="item in codeFillType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth">
                <el-select v-model="form.codeFillSeparatorSelect" @blur="inputSelectBlur" filterable placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeFillSeparator"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="填充长度:" :label-width="rightFormLabelWidth" required>
                <el-input v-model.number="form.codeFillLength"  ref="codeFillLength" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="流水上限:" :label-width="rightFormLabelWidth" required>
                <el-input v-model.number="form.codeFillLimit" ref="codeFillLimit" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="流水是否补码:" :label-width="rightFormLabelWidth" required>
                <el-switch v-model="form.codeFillFlag" :disabled="basicSecOnlyRead"></el-switch>
              </el-form-item>
              <el-form-item label="自定义的流水算法:" :label-width="rightFormLabelWidth">
                <el-input v-model="form.customCodeSerialClass" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
            </div>
            <!-- å±‚级码段 -->
            <div v-show="form.secType==='codelevelsec' ? true:false">
              <el-form-item label="层级类型:" :label-width="rightFormLabelWidth" required>
                <el-select v-model="form.codeLevelType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeLevelType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="层级的值:" :label-width="rightFormLabelWidth">
                <el-input v-model.number="form.codeLevelValue" ref="codeLevelValue"  :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="字符截取类型:" :label-width="rightFormLabelWidth" required>
                <el-select v-model="form.valueCutType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeCutType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="取值类型:" :label-width="rightFormLabelWidth">
                <el-select v-model="form.codeGetValueType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeGetValueType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
            </div>
            <!-- å¼•用码段 -->
            <div v-show="form.secType==='coderefersec' ? true:false">
              <el-form-item label="参照引用的业务类型:" label-width="152px" required>
                <el-input
                  ref="referBtmId"
                  placeholder="请选择"
                  prefix-icon="el-icon-search"
                  readonly="true"
                  v-model="form.referBtmId"
                  @focus="openAttrSelectOrGetValue('referBtmId')"
                  :disabled="basicSecOnlyRead">
                  <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referBtmId')" style="margin-right: 5px;cursor: pointer;"></i>
                </el-input>
              </el-form-item>
              <el-form-item label="参照配置:" label-width="152px" required>
                <el-input
                  ref="referConfig"
                  placeholder="请选择"
                  prefix-icon="el-icon-search"
                  readonly="true"
                  v-model="form.referConfig"
                  @focus="openAttrSelectOrGetValue('referConfig')"
                  :disabled="basicSecOnlyRead">
                  <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referConfig')" style="margin-right: 5px;cursor: pointer;"></i>
                </el-input>
              </el-form-item>
            </div>
            <!-- æ—¥æœŸç æ®µ -->
            <div v-show="form.secType==='codedatesec' ? true:false">
              <el-form-item label="日期格式:" :label-width="rightFormLabelWidth" required>
                <el-input ref="codeDateFormatStr" v-model="form.codeDateFormatStr" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
            </div>
            <!-- åˆ†ç±»ç æ®µ -->
            <div v-show="form.secType==='codeclassifysec' ? true:false">
              <el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth" required>
                <el-select v-model="form.codeSecLengthType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeSecLengthType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required>
                <el-input v-model.number="form.codeSecLength" ref="classCodeSecLength" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="是否自动分配分类值:" :label-width="rightFormLabelWidth">
                <el-switch v-model="form.matchClassifyValueFlag" :disabled="basicSecOnlyRead"></el-switch>
              </el-form-item>
              <el-form-item label="父分类码段:" :label-width="rightFormLabelWidth">
                <el-input
                  placeholder="请选择"
                  prefix-icon="el-icon-search"
                  readonly="true"
                  v-model="form.parentClassifySecOid"
                  @focus="openAttrSelectOrGetValue('parentClassifySecOid')"
                  :disabled="basicSecOnlyRead">
                  <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('parentClassifySecOid')" style="margin-right: 5px;cursor: pointer;"></i>
                </el-input>
              </el-form-item>
            </div>
            <!-- å¯å˜ç æ®µ -->
            <div v-show="form.secType==='codevariablesec' ? true:false">
              <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required>
                <el-input v-model.number="form.codeSecLength" ref="varCodeSecLength" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth" required>
                <el-select v-model="form.codeFillType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                      v-for="item in codeFillType"
                      :key="item.dictValue"
                      :label="item.dictValue"
                      :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth">
                <el-select v-model="form.codeFillSeparatorSelect" filterable @blur="inputSelectBlur" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeFillSeparator"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
            </div>
          </span>
        </el-form>
      </div>
      <!-- ç¬¬ä¸€å±‚对话框的按钮和,线条 -->
      <el-divider direction="horizontal"></el-divider>
      <div slot="footer" class="dialog-footer">
        <el-button @click="addBasicCodeSettingBox = false" v-show="showbtn">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="saveOrEditBasicCode" v-show="showbtn">保 å­˜</el-button>
      </div>
      <!--  ç¬¬äºŒå±‚对话框,属性码段,属性选择弹窗 -->
      <el-dialog title="为【属性】选取值"
        append-to-body
        :visible.sync="isShowSelectAttrOption"
        width="78%"
        style="height: 100%; margin-top: -8vh; overflow: hidden">
        <div style="overflow-y: auto; height: 60vh">
          <el-row>
            <!-- å·¦ä¾§ä¸»é¢˜åº“分类树 -->
            <el-col :span="5">
              <div class="box">
                <el-scrollbar style="height: auto; border-bottom-right-radius:8px ">
                  <basic-container>
                    <div class="abox">
                      <avue-tree :data="attrClassifyTreeData" :option="treeOption" @node-click="nodeClick"/>
                    </div>
                    <div class="text item">
                      <el-input type="textarea" :rows="5" style="width: 560px;" v-model="formulaContent"></el-input>
                    </div>
                  </basic-container>
                </el-scrollbar>
              </div>
            </el-col>
                </el-card>
              </el-col>
            <!-- å³ä¾§è¡¨æ ¼æ˜¾ç¤ºåŒºåŸŸ -->
            <el-col span="19">
              <basic-container>
                <div class="bbox">
                <avue-crud
                  :data="selectattrData"
                  :option="attrOption"
                  :table-loading="selectAttrOptionLoading"
                  @search-change="selectAttrOptionSearchChange"
                  @search-reset="searchAttrReset"
                  @selection-change="selectionChangeAttr">
                </avue-crud>
                </div>
              </basic-container>
            </el-col>
              <!-- å³ä¾§è¿ç®—符 -->
              <el-col :span="10">
                <el-card class="box-card" style="height: 33vh;">
                  <div slot="header" class="clearfix">
                    <span style="font-size: medium;">运算符</span>
                  </div>
                  <div class="text item">
                    <div class="formula-editor">
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'7'})">7</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'8'})">8</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'9'})">9</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'/'})">/</button><br/>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'4'})">4</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'5'})">5</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'6'})">6</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'*'})">*</button><br/>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'1'})">1</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'2'})">2</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'3'})">3</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>'})">-</button><br/>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'0'})">0</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'00'})">00</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'.'})">.</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'+'})">+</button><br/>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'->'})">-></button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'=='})">==</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'('})">(</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':')'})">)</button><br/>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'<'})">&lt;</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>'})">&gt;</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'<='})">&lt;=</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>='})">&gt;=</button>
                    </div>
                  </div>
                </el-card>
              </el-col>
            </el-row>
            <el-row>
              <!-- å·¦ä¾§å…¬å¼é€‰æ‹©åŒºåŸŸ -->
              <el-col :span="14" style="overflow: hidden">
                <el-card class="box-card" style="height: 40vh; overflow-y: auto; overflow-x: auto;">
                  <div slot="header" class="clearfix">
                    <span style="font-size: medium;">公式选择</span>
                  </div>
                  <div class="text item">
                    <el-tabs v-model="activeName">
                      <el-tab-pane label="常用" name="first">
                        <el-table
                          :data="commonFormulaTableData"
                          :show-header="false"
                          @row-dblclick="dbClickAddContent"
                          style="width: 100%">
                          <el-table-column
                            prop="formula"
                            width="300">
                          </el-table-column>
                          <el-table-column
                            prop="desc"
                            width="300">
                          </el-table-column>
                        </el-table>
                      </el-tab-pane>
                      <el-tab-pane label="财务" name="second">
                        <el-table
                          :data="financialFormulaTableData"
                          @row-dblclick="dbClickAddContent"
                          :show-header="false"
                          style="width: 100%">
                          <el-table-column
                            prop="formula"
                            width="300">
                          </el-table-column>
                          <el-table-column
                            prop="desc"
                            width="300">
                          </el-table-column>
                        </el-table>
                      </el-tab-pane>
                      <el-tab-pane label="日期" name="third">
                        <el-table
                          :data="dateFormulaTableData"
                          :show-header="false"
                          @row-dblclick="dbClickAddContent"
                          style="width: 100%">
                          <el-table-column
                            prop="formula"
                            width="300">
                          </el-table-column>
                          <el-table-column
                            prop="desc"
                            width="300">
                          </el-table-column>
                        </el-table>
                      </el-tab-pane>
                      <el-tab-pane label="数学" name="fourth">
                        <el-table
                          :data="mathFormulaTableData"
                          :show-header="false"
                          @row-dblclick="dbClickAddContent"
                          style="width: 100%">
                          <el-table-column
                            prop="formula"
                            width="300">
                          </el-table-column>
                          <el-table-column
                            prop="desc"
                            width="300">
                          </el-table-column>
                        </el-table>
                      </el-tab-pane>
                      <el-tab-pane label="其他" name="five">
                        <el-table
                          :data="otherFormulaTableData"
                          @row-dblclick="dbClickAddContent"
                          :show-header="false"
                          style="width: 100%">
                          <el-table-column
                            prop="formula"
                            width="300">
                          </el-table-column>
                          <el-table-column
                            prop="desc"
                            width="300">
                          </el-table-column>
                        </el-table>
                      </el-tab-pane>
                    </el-tabs>
                  </div>
                </el-card>
              </el-col>
              <!-- å³ä¾§å˜é‡é€‰æ‹©åŒºåŸŸ -->
              <el-col :span="10" style="overflow: hidden">
                <el-card class="box-card" style="height: 40vh; overflow-y: auto; overflow-x: auto;">
                  <div slot="header" class="clearfix">
                    <span style="font-size: medium;">变量</span>
                  </div>
                  <div class="text item">
                    <el-tabs v-model="activeNameAttr">
                      <el-tab-pane label="本场景变量" name="first">
                        <el-table
                          :data="thisSceneTableData"
                          @row-dblclick="dbClickAddContent"
                          :show-header="false"
                          style="width: 100%">
                          <el-table-column
                            prop="formula"
                            width="40">
                          </el-table-column>
                          <el-table-column
                            prop="desc"
                            width="100">
                          </el-table-column>
                        </el-table>
                      </el-tab-pane>
                      <el-tab-pane label="系统变量" name="second">
                        <el-table
                          :data="systemVariableTableData"
                          @row-dblclick="dbClickAddContent"
                          :show-header="false"
                          style="width: 100%">
                          <el-table-column
                            prop="formula"
                            width="150">
                          </el-table-column>
                          <el-table-column
                            prop="desc"
                            width="150">
                          </el-table-column>
                        </el-table>
                      </el-tab-pane>
                    </el-tabs>
                  </div>
                </el-card>
              </el-col>
            </el-row>
          </div>
        </el-dialog>
        <!-- æ·»åŠ ç æ®µä¿¡æ¯çš„è‡ªå®šä¹‰ç»„ä»¶ -->
        <add-basic-code ref='addBasicChild' @openAttrSelectOrGetValue="openAttrSelectOrGetValue" @openformulaEdit="openformulaEdit"></add-basic-code>
        <!-- ç¬¬ä¸€å±‚对话框的按钮和,线条 -->
        <el-divider direction="horizontal"></el-divider>
        <div slot="footer" class="dialog-footer">
          <el-button @click="addBasicCodeSettingBox = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="saveBasicCode">保 å­˜</el-button>
          </el-row>
        </div>
        <div slot="footer" class="dialog-footer">
          <el-button @click="isShowSelectAttrOption = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="selectedListClassifyLinkAttr">ç¡® å®š</el-button>
        </div>
      </el-dialog>
      <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框弹窗组件 -->
      <formula-editor ref="formulaEditor"
        @updateFormulaContent="updateFormulaContent"
        :thisSceneTableData="thisSceneTableData"
        :systemVariableTableData="systemVariableTableData">
      </formula-editor>
      <!-- ç¬¬äºŒå±‚对话框,为【父分类码段】选取值弹窗 -->
      <el-dialog title="为【父分类码段】选取值"
        append-to-body
        :visible.sync="isShowParentClassifyOption"
        width="65%"
        style="height: 150vh; margin-top: -13vh;"
        destroy-on-close>
        <avue-crud
          :page.sync="parentClassifyDataPage"
          ref="crudParentClassify"
          :option="parentClassifyParentOption"
          :table-loading="classifyDialogLoading"
          :data="parentClassifyData"
          @refresh-change="refreshParentClassifyDataChange"
          @search-change="parentClassifySearchChange"
          @search-reset="parentClassifySearchReset"
          @selection-change="parentClassifySelectionChange"
          @current-change="parentClassifyCurrentChange"
          @size-change="parentClassifySizeChange"
          @on-load="parentClassifyOnLoad">
        </avue-crud>
        <div slot="footer" class="dialog-footer">
          <el-button @click="isShowParentClassifyOption = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="saveSelectedParentClassify">保 å­˜</el-button>
        </div>
      </el-dialog>
      <!-- ç¬¬äºŒå±‚对话框,为【参照引用的业务类型】选取值弹窗 -->
      <el-dialog title="为【参照引用的业务类型】选取值"
        append-to-body
        :visible.sync="isShowSelectReferBtmOption"
        width="65%"
        style="height: 150vh; margin-top: -13vh;"
        destroy-on-close>
        <avue-crud
          :page.sync="referBtmDataPage"
          ref="crudReferBtm"
          :option="referBtmOption"
          :table-loading="referBtmDialogLoading"
          :data="referBtmData"
          @refresh-change="referBtmDataChange"
          @search-change="referBtmSearchChange"
          @search-reset="referBtmSearchReset"
          @selection-change="referBtmSelectionChange"
          @current-change="referBtmCurrentChange"
          @size-change="referBtmSizeChange"
          @on-load="referBtmOnLoad">
        </avue-crud>
        <div slot="footer" class="dialog-footer">
          <el-button @click="isShowSelectReferBtmOption = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="saveSelectedreferBtm">保 å­˜</el-button>
        </div>
      </el-dialog>
    </el-dialog>
  </basic-container>
 
</template>
<script>
  import { gridCodeRule, getDetail, add, update, remove, listUseRange, updateStatus } from "@/api/code/mdmrule";
  import { gridCodeBasicSec, downOrderNum, upOrderNum, deleteData, editSave, getObjectByOid, listDataByOids, refDataGrid} from "@/api/code/codebasic";
  import { gridCodeRule, getDetail, add, update, remove, listUseRange, updateStatus,clone,clearAllCode } from "@/api/code/mdmrule";
  import {
    gridCodeBasicSec,
    downOrderNum,
    upOrderNum,
    deleteData,
    editSave,
    cloneCodeBasic,
    addSave,
    refDataGridClassifySec,
  } from "@/api/code/codebasic";
  import { treeTopCodeClassify, listClassifyLinkAttr } from "@/api/code/codeclassify";
  import { gridCodeFixedValue,addSaveCodeFixedValue,deleteCodeFixedValue,editCodeFixedValue,saveOrder } from "@/api/code/codeFixedValue";
  import { treeCodeClassifyValue,addSaveCodeClassifyValue,editCodeClassifyValue,deleteCodeClassifyValue,saveCodeClassifyValueOrder } from "@/api/code/codeClassifyValue";
  import { getDictionary } from "@/api/omd/enum";
  import optionBasic from "@/const/code/codebasic";
  import cloneOption from "@/const/code/cloneOption";
  import cloneBasicOption from "@/const/code/cloneBasicDialogOption";
  import cloneCodeRuleOption from "@/const/code/cloneCodeRuleDialogOption.js";
  import optionRule from "@/const/code/mdmrule";
  import attrOption from "@/const/code/selectattroption";
  import treeOption from "@/const/code/classifytreeoption";
  import attrOption from "@/const/code/selectAttrOptionDialog";
  import treeOption from "@/const/code/classifyTreeOptionDialog";
  import classisyValueTreeOption from "@/const/code/classisyValueTreeDialog";
  import parentClassifyParentOption from "@/const/code/parentClassifyParentOptionDialog";
  import referBtmOption from "@/const/code/referBtmDialog";
  import fixedValueOption from "@/const/code/fixedValueMgrDialog";
  import {mapGetters} from "vuex";
export default {
    data() {
      return {
        form: {},
        query: {},
        loading: true,
        currentCodeRuleOid: '',
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        },
        selectionList: [],
        /*编码规则表格配置*/
        optionRule: optionRule,
        data: [],
        /*克隆按钮对话框控制*/
        cloneSettingBox: false,
        optionBasic: optionBasic,
        /*基础码段相关数据*/
        basicData:[],
        loadingBasic: true,
        selectionBasicList: [],
        addBasicCodeSettingBox: false,
        /* ä¸ºå±žæ€§é€‰å–值窗口显示打开控制变量 */
        isShowSelectAttrOption: false,
        /* ä¸ºå±žæ€§é€‰å€¼å·¦ä¾§æ ‘数据 */
        attrClassifyTreeData: [],
        treeOption: treeOption,
        currentSelectTreeData: '', //当前选中的树节点
        /* ä¸ºå±žæ€§é€‰å€¼å³ä¾§è¡¨æ ¼ç›¸å…³æ•°æ® */
        attrOption: attrOption,
        selectattrData: [],
        selectAttrOptionLoading: false,
        selectionChangeAttrList: [],
        /*公式编辑框对话框*/
        isShowformulaEdit: false, //公式编辑框对话框显示控制
        formulaContent: '', //公式编辑框内容
        activeName: 'first', //当前活动的tab
        activeNameAttr: 'first', //变量中的当前活动tab
        //常用公式
        commonFormulaTableData: [{
          "formula": 'if(compare,trueResult,falseResult)',
          "desc": '如果compare的表达式为true,则执行trueResult的表达式,否则执行flaseResult.例如if(3>2,2*(3+2),3/(2-4)),值等于10',
        },
        {
          "formula": 'sum(douber1,douber2)',
          "desc": '两个格式为douber的参数求和',
        },
        {
          "formula": 'sub(douber1,douber2)',
          "desc": '格式为douber的参数douber1减去格式为douber的参数douber2',
        },
        {
          "formula": 'mul(douber1,douber2)',
          "desc": '两个格式为douber的参数相乘',
        },
        {
          "formula": 'div(douber1,douber2)',
          "desc": '格式为douber的参数douber1除以格式为douber的参数douber2.当douber2等于0的时候,返回0;如果除不尽的时候保留10位小数',
        },
        {
          "formula": 'mod(int,int)',
          "desc": '求余数',
        },
        {
          "formula": 'toInt(string)',
          "desc": '转换为int格式',
        },
        {
          "formula": 'doubleRound(string,count)',
          "desc": '处理douber的小数位数,count表示小数位数',
        },
        {
          "formula": 'zeroIfNull(value)',
          "desc": '如果参数的值为null或者"",将返回0',
        },
        {
          "formula": 'endsWith(string,str1)',
          "desc": '字符串string是不是以str1结尾',
        },
        {
          "formula": 'startsWith(string,str1)',
          "desc": '字符串string是否以str1开头',
        },
        {
          "formula": 'charAt(string,index)',
          "desc": '获取字符串string中第index位置的字符,如果长度小于index,则返回',
        },
        {
          "formula": 'equalsIgnoreCase(str1,str2)',
          "desc": '字符串str1和字符串str2是否相等',
        },
        {
          "formula": 'indexOf(str1,str2)',
          "desc": '字符串str2在字符串str1中首次出现的位置',
        },
        {
          "formula": 'isEmpty(str1)',
          "desc": '参数str1是否为空,其中null这个字符串也表示为空',
        },
        {
          "formula": 'lastIndexOf(str1,str2)',
          "desc": '字符串str2在字符串str1中最后出现的位置',
        },
        {
          "formula": 'leftStr(str1,index)',
          "desc": '获取index位置左侧的所有字符',
        },
        {
          "formula": 'rightStr(str1,str2)',
          "desc": '获取index位置右侧的所有字符',
        },
        {
          "formula": 'length(str1)',
          "desc": '参数str1的长度',
        },
        {
          "formula": 'mid(str1,start,end)',
          "desc": '获取str1的从start到end直接的字符串,出现异常时返回',
        },
        {
          "formula": 'tolowercase(str1)',
          "desc": '将字符串str1转为小写',
        },
        {
          "formula": 'touppercase(str1)',
          "desc": '将字符串str1转为大写',
        },
        {
          "formula": 'trimzero(str1)',
          "desc": '去除字符串str1中的0',
        },
        {
          "formula": 'MD5(str1)',
          "desc": '将字符串进行MD5加密',
        },
       ],
       //财务公式
        financialFormulaTableData: [{
            "formula": 'toChinese(value)',
            "desc": '将阿拉伯数字转为为汉字大写方式'
          },
          {
            "formula": 'getChineseCurrency(value)',
            "desc": '将阿拉伯数字转为为汉字金额大写方式,与tochiness的区别是这个会显示元、角、分'
          },
          {
            "formula": 'setThmark(value)',
            "desc": '为参数value设置千分位'
          }
        ],
        //日期公式
        dateFormulaTableData: [{
            "formula": 'compareDate(d1,d2)',
            "desc": '对比参数d1,d2的大小。d1,d2为yyyy-MM-dd格式的日期字符串'
          },
          {
            "formula": 'nowDate()',
            "desc": '获取当前日期'
          },
          {
            "formula": 'chinaDate(d1)',
            "desc": '将时间转换为农历,d1是yyyy-MM-dd格式的日期字符串'
          },
          {
            "formula": 'dateAdd(d1,count)',
            "desc": '在d1的基础上添加count天,d1为yyyy-MM-dd HH:mm:ss格式的时间字符串'
          },
          {
            "formula": 'dateBalanceYear(sourceDate,targetDate,false)',
            "desc": '计算相差的年份,比如计算年龄,targetDate为""表示当前时间,第三个参数为true表示有多余的月份或者天数时,就加1;'
          },
          {
            "formula": 'dateBalanceDay(sourceDate,targetDate)',
            "desc": '计算相差的天数,targetDate为""表示当前时间'
          },
          {
            "formula": 'dateformat(d1,format)<',
            "desc": '将当前的日期(时间)字符串转为指定的字符串,如果format的内容有空格,请使用&代替'
          },
          {
            "formula": 'nowDatetime()',
            "desc": '获取当前日期和时间。格式为yyyy-MM-dd HH:mm:ss'
          },
          {
            "formula": 'dayOf(d1)',
            "desc": '获取格式为yyyy-MM-dd的日期的天数'
          },
          {
            "formula": 'nowMon()',
            "desc": '获取当前的月份,格式为MM'
          },
          {
            "formula": 'monOf(d1)',
            "desc": '获取日期d1的月份数'
          },
          {
            "formula": 'nowTime()',
            "desc": '获取当前时间,格式为HH:mm:ss'
          },
          {
            "formula": 'nowYear()',
            "desc": '获取年份,格式为yyyy'
          },
          {
            "formula": 'yearOf()',
            "desc": '获取时间d1的年份'
          }
        ],
        //数学公式
        mathFormulaTableData: [{
            "formula": 'abs(value)',
            "desc": '求参数value的绝对值,value必须为数字格式'
          },
          {
            "formula": 'acos(value)',
            "desc": '求参数value的反余弦,value必须为数字格式'
          },
          {
            "formula": 'asin(value)',
            "desc": '求参数value的反正弦,value必须为数字格式'
          },
          {
            "formula": 'atan(value)',
            "desc": '求参数value的反正切,value必须为数字格式'
          },
          {
            "formula": 'cbrt(value)',
            "desc": '求参数value的立方根,value必须为数字格式'
          },
          {
            "formula": 'ceil(value)',
            "desc": '返回不大于参数value的最小整数,例如ceil(1.7)就等于2,value必须为数字格式'
          },
          {
            "formula": 'cos(value)',
            "desc": '求参数value的余弦值,value必须为数字格式'
          },
          {
            "formula": 'cosh(value)',
            "desc": '求参数value的双曲余弦值,value必须为数字格式'
          },
          {
            "formula": 'exp(n)',
            "desc": '欧拉数 e çš„n次幂,n必须为数字格式'
          },
          {
            "formula": 'floor(n)',
            "desc": '欧拉数 e çš„n次幂减1,n必须为数字格式'
          },
          {
            "formula": 'log(value)',
            "desc": '返回不小于参数value的最大整数,例如floor(1.7)等于1,n必须为数字格式'
          },
          {
            "formula": 'log10(value)',
            "desc": '自然对数,value必须为数字格式'
          },
          {
            "formula": 'log1p(value)',
            "desc": '计算底数为 10 çš„对数,value必须为数字格式'
          },
          {
            "formula": 'random()',
            "desc": '返回参数与 1 ä¹‹å’Œçš„自然对数,value必须为数字格式'
          },
          {
            "formula": 'rint(value)',
            "desc": '返回一个伪随机数,该值大于等于 0.0 ä¸”小于 1.0'
          },
          {
            "formula": 'round(value)',
            "desc": '返回其值最接近参数并且是整数的 double å€¼ã€‚如果两个整数的 double å€¼éƒ½åŒæ ·æŽ¥è¿‘,那么结果取偶数。特殊情况是:如果参数值是整数,那么结果就是该参数。如果参数是 NaN æˆ–无穷大或正零或负零,那么结果与参数相同'
          },
          {
            "formula": 'signum(value)',
            "desc": '符号函数;如果参数为 0,则返回 0;如果参数大于 0, åˆ™è¿”回 1.0;如果参数小于 0,则返回 -1.0'
          },
          {
            "formula": 'sin(value)',
            "desc": '求参数value的正弦值,value必须为数字格式'
          },
          {
            "formula": 'sinh(value)',
            "desc": '求参数value的双曲正弦值,value必须为数字格式'
          },
          {
            "formula": 'tan(value)',
            "desc": '求参数value的正切值,value必须为数字格式'
          },
          {
            "formula": 'tanh(value)',
            "desc": '求参数value的双曲正切值,value必须为数字格式'
          },
          {
            "formula": 'max(v1,v2)',
            "desc": '求两个数中的较大的值,v1,v2都必须为数字格式,例如max(3.2,3)就等于3.2'
          },
          {
            "formula": 'min(v1,v2)',
            "desc": '求两个数中的较小的值,v1,v2都必须为数字格式,例如max(3.2,3)就等于3'
          },
          {
            "formula": 'sqrt(value)',
            "desc": '求平方根'
          },
        ],
        //其他公式
        otherFormulaTableData: [{
            "formula": 'getcolvalue(servername,tablename,fieldname,pkField,pkValue)',
            "desc": '查询servername中tablename数据库表中fieldname字段的值,pkfield表示主键的字段名称,pkValue表示主键的值,serverName现在默认为localServer'
          },
        ],
        //本场景变量
        thisSceneTableData: [{
            "formula": '${}',
            "desc": ' '
          },
        ],
        //系统变量
        systemVariableTableData: [{
            "formula": '#CURRENTUSER.OID#',
            "desc": '当前用户的主键'
          },
          {
            "formula": '#CURRENTUSER.ID#',
            "desc": '当前用户的账户'
          },
          {
            "formula": '#CURRENTTIME#',
            "desc": '当前时间'
          },
          {
            "formula": '#CURRENTDATE#',
            "desc": '当前日期'
          },
          {
            "formula": '#CURRENTDATETIME#',
            "desc": '当前日期时间'
          },
          {
            "formula": '#CURRENTUSER_NAME#',
            "desc": '当前用户的姓名'
          },
          {
            "formula": '#CURRENTUSER.SECRETGRADE#',
            "desc": '当前用户密级'
          },
          {
            "formula": '#CURRENTUSER.IPSECRET#',
            "desc": '当前用户的IP密级'
          },
          {
            "formula": '#CURRENTUSER.BUSINESSUNIT#',
            "desc": '当前用户所属业务单元'
          },
          {
            "formula": '#CURRENTUSER.BUSINESSUNITNAME#',
            "desc": '当前用户所属业务单元名称'
          },
          {
            "formula": '#CURRENTUSER.GROUPOID#',
            "desc": '当前用户的部门主键'
          },
          {
            "formula": '#CURRENTUSER.GROUPNAME#',
            "desc": '当前用户所属部门名称'
          },
          {
            "formula": '#CURRENTUSER.EMAIL#',
            "desc": '当前用户邮件地址'
          },
          {
            "formula": '#CURRENTUSER.ROLENAME#',
            "desc": '当前用户所属角色名称'
          }
        ],
        /*使用范围对话框显示控制*/
        codeRangeSettingBox: false,
        useRangeData: [],
        dialogLoading: true,
        /*使用范围对话框配置*/
        dialogeOption: {
        height: 'auto',
        calcHeight: 30,
        tip: false,
        searchShow: false,
        searchMenuSpan: 6,
        border: true,
        index: true,
        disablePage:false,
        viewBtn: false,
        addBtn: false,
        menu: false,
        selection: false,
        dialogClickModal: false,
        align: 'center',
        dialogWidth: 400,
        column: [
          {
            label: "分类编号",
            prop: "id",
            span: 24
          },
          {
            label: "分类名称",
            prop: "name",
            span: 24,
          }
        ]
      },
      };
    },
    computed: {
      ...mapGetters(["permission"]),
      permissionList() {
  export default {
      data() {
        return {
          addBtn: this.vaildData(this.permission.codeRule_add, true),
          viewBtn: this.vaildData(this.permission.codeRule_view, false),
          delBtn: this.vaildData(this.permission.plCodeRule_delete, false),
          editBtn: this.vaildData(this.permission.codeRule_edit, true)
          ruleForm: {},
          query: {},
          loading: true,
          currentCodeRuleOid: '',
          page: {
            pageSize: 10,
            currentPage: 1,
            total: 0
          },
          selectionList: [],
          /*编码规则表格配置*/
          optionRule: optionRule,
          data: [],
          currentRuleLcStatus: '',
          /*克隆对话框控制变量*/
          cloneSettingBox: false,
          cloneTableLoading: false,
          cloneOption: cloneOption,
          cloneData: [],
          cloneCodeRuleForm: {
            id: '',
            name: '',
            description: '',
          },
          /*从其他规则克隆码段*/
          cloneOtherCodeRuleSettingBox: false,
          cloneBasicOption: cloneBasicOption,
          cloneCodeRuleOption: cloneCodeRuleOption,
          selectionOtherCloneCodeBasicList: [], // å½“前选中的基础码段
          /*使用范围对话框显示控制*/
          codeRangeSettingBox: false,
          useRangeData: [],
          dialogLoading: true,
          /*使用范围对话框配置*/
          dialogeOption: {
            height: 'auto',
            calcHeight: 30,
            tip: false,
            searchShow: false,
            searchMenuSpan: 6,
            border: true,
            index: true,
            disablePage:false,
            viewBtn: false,
            addBtn: false,
            menu: false,
            selection: false,
            dialogClickModal: false,
            align: 'center',
            dialogWidth: 400,
            column: [
              {
                label: "分类编号",
                prop: "id",
                span: 24
              },
              {
                label: "分类名称",
                prop: "name",
                span: 24,
              }
            ]
          },
          /*基础码段相关数据*/
          optionBasic: optionBasic,
          basicData:[],
          loadingBasic: true,
          selectionBasicList: [],
          addBasicCodeSettingBox: false,
          showbtn: false, //基础码段新增是否显示基础码段
          basicSecDialogTitle: '', //基础码段第一层对话框标题
          basicSecOnlyRead: false, //新增基础码段表单是否只读
          /** ç å€¼ç®¡ç†ç›¸å…³æ•°æ® */
          isShowBasicSecCodeValueMgr: false, //码段码值管理对话框
          codefixedsecOrCodeclassifysecOid: '', //存放基础码段点击码值管理时的当前行id,用于保存码值时使用
          selectedFixedOrCodeclassifyValue: '', //当前选中的码值数据
          //固定码段码值表单
          codeFixdForm: {
            codeFixedSecOid: "",
            description: "",
            id: "",
          },
          isShowFixedForm: true, //true显示固定码段码值管理界面,false显示分类码段码值管理界面
          fixedValueData: [], //固定码段码值表格数据
          fixedValueOption: fixedValueOption, //表格配置
          fixedValueOptionLoading: false,  //加载表格的动态效果
          fixedValueSelectList: [],  //固定码段码值当前选中的行
          //分类码段码值表单
          codeClassifyForm: {
            codeClassifySecOid: "",
            id: "",
            name: "",
            oid: "",
          },
          classisyValueTreeOption: classisyValueTreeOption, //分类码段树相关配置项
          classifyValueTreeData: [],
          currentSelectTreeData: '', //当前选中的分类码值树节点
          /* ä¸ºå±žæ€§é€‰å–值窗口显示打开控制变量 */
          isShowSelectAttrOption: false,
          /* ä¸ºå±žæ€§é€‰å€¼å·¦ä¾§æ ‘数据 */
          attrClassifyTreeData: [],
          treeOption: treeOption,
          currentSelectTreeData: '', //当前选中的树节点
          /* ä¸ºå±žæ€§é€‰å€¼å³ä¾§è¡¨æ ¼ç›¸å…³æ•°æ® */
          attrOption: attrOption,
          selectattrData: [],
          selectAttrOptionLoading: false,
          selectionChangeAttrList: [],
          // å±žæ€§ç æ®µï¼Œå…¬å¼ç¼–辑框组件的本场景显示变量、与系统变量
          thisSceneTableData: [
            {
                formula: "${}",
                desc: "",
            }
          ],
          systemVariableTableData: [
            {
                formula: "#CURRENTUSER.OID#",
                desc: "当前用户的主键",
            },
            {
                formula: "#CURRENTUSER.ID#",
                desc: "当前用户的账户",
            },
            {
                formula: "#CURRENTTIME#",
                desc: "当前时间",
            },
            {
                formula: "#CURRENTDATE#",
                desc: "当前日期",
            },
            {
                formula: "#CURRENTDATETIME#",
                desc: "当前日期时间",
            },
            {
                formula: "#CURRENTUSER_NAME#",
                desc: "当前用户的姓名",
            },
            {
                formula: "#CURRENTUSER.SECRETGRADE#",
                desc: "当前用户密级",
            },
            {
                formula: "#CURRENTUSER.IPSECRET#",
                desc: "当前用户的IP密级",
            },
            {
                formula: "#CURRENTUSER.BUSINESSUNIT#",
                desc: "当前用户所属业务单元",
            },
            {
                formula: "#CURRENTUSER.BUSINESSUNITNAME#",
                desc: "当前用户所属业务单元名称",
            },
            {
                formula: "#CURRENTUSER.GROUPOID#",
                desc: "当前用户的部门主键",
            },
            {
                formula: "#CURRENTUSER.GROUPNAME#",
                desc: "当前用户所属部门名称",
            },
            {
                formula: "#CURRENTUSER.EMAIL#",
                desc: "当前用户邮件地址",
            },
            {
                formula: "#CURRENTUSER.ROLENAME#",
                desc: "当前用户所属角色名称",
            },
          ],
          /* çˆ¶åˆ†ç±»ç æ®µå¯¹è¯æ¡† */
          isShowParentClassifyOption: false, //父分类码段对话框显示控制
          classifyDialogLoading: true, //表格数据加载提示
          parentClassifyParentOption: parentClassifyParentOption,  //表格配置
          parentClassifyData: [], //表格数据
          //分页参数配置
          parentClassifyDataPage: {
            pageSize: 10,
            currentPage: 1,
            total: 0
          },
          parentClassifyQuery: {}, //查询条件
          parentClassifySelectionList: [], //当前选中行
          /** å‚照引用的业务类型对话框相关数据 */
          isShowSelectReferBtmOption: false,   //对话框显示控制
          referBtmDialogLoading: true,   //表格数据加载提示
          referBtmDataPage: {
            pageSize: 10,
            currentPage: 1,
            total: 0
          },
          referBtmOption: referBtmOption, //表格配置
          referBtmData: [], //表格数据
          referBtmQuery: {}, //查询条件
          referBtmSelectionList: [], //当前选中行
          /** åŸºç¡€ç æ®µæ–°å¢žè¡¨å• */
          form: {
            id: '', //编号
            name: '', //名称
            secType: 'codefixedsec', //码段类型
            description: '', //描述
            serialDependFlag: false, //是否流水依赖
            serialDependOrder: '', //流水依赖顺序
            nullableFlag: false, //是否为空
            displayFlag: false, //
            componentCodeFlag: false, //是否参与编码
            pkCodeRule: '', //所属编码规则
          },
          // formRules: {
          //   id: [
          //     { required: true, message: '请输入码段编号', trigger: 'blur' },
          //   ],
          //   name: [
          //     { required: true, message: '请输入码段名称', trigger: 'blur' },
          //   ],
          //   secType: [
          //     { required: true, message: '请选中码段类型', trigger: 'change' },
          //   ],
          //   codeSecLengthType: [
          //     { required: true, message: '请选择码段长度类型', trigger: 'change' },
          //   ],
          //   codeSecLength: [
          //     { required: true, message: '请输入码段的长度', trigger: ['blur', 'change']},
          //     { type: 'number', message: '码段的长度必须为数字值',trigger: ['blur', 'change']}
          //   ],
          //   referAttributeName: [
          //     { required: true, message: '请选择属性', trigger: 'change' },
          //   ],
          //   serialStart: [
          //     { type: 'number', message: '流水号的起始值必须为数字值',trigger: ['blur', 'change']}
          //   ],
          //   serialStep: [
          //     { type: 'number', message: '流水的步长必须为数字值',trigger: ['blur', 'change']}
          //   ],
          //   codeFillType: [
          //     { required: true, message: '请选择编码补位方式', trigger: ['blur', 'change']},
          //   ],
          //   // è®¾ç½®è¡¥ä½æ—¶çš„字符,需要自定义来做判断
          //   codeFillSeparatorSelect: [
          //     { validator: validateCodeFill, trigger: ['blur', 'change'] },
          //   ],
          //   codeFillLength: [
          //     { required: true, message: '请输入填充长度', trigger: ['blur', 'change'] },
          //     { type: 'number', message: '填充长度必须为数字值',trigger: ['blur', 'change']}
          //   ],
          //   codeFillLimit: [
          //     { required: true, message: '请输入流水上限', trigger: ['blur', 'change'] },
          //     { type: 'number', message: '流水上限必须为数字值',trigger: ['blur', 'change']}
          //   ],
          //   codeLevelType: [
          //     { required: true, message: '请选择层级类型', trigger: 'change' },
          //   ],
          //   codeLevelValue: [
          //     { required: false, type: 'number', message: '层级的值必须为数字值', trigger: 'change'}
          //   ],
          //   valueCutType: [
          //     { required: true, message: '请选择字符截取类型', trigger: 'change' },
          //   ],
          //   referBtmId: [
          //     { required: true, message: '请选择参照应用的业务类型', trigger: 'change' },
          //   ],
          //   referConfig: [
          //     { required: true, message: '请选择参照配置', trigger: 'change' },
          //   ],
          //   codeDateFormatStr: [
          //     { required: true, message: '请输入日期格式', trigger: ['blur', 'change'] },
          //   ],
          // },
          //枚举和可输可选查询
          sectypeList:[],    //码段类型
          codeSecLengthType:[],  //码段长度类型
          codeFillType:[],   //编码补位方式
          codeFillSeparator:[], //补位时的字符,可输可选内容
          codeLevelType:[],     //层级类型
          codeCutType:[],       //字符截取类型
          codeGetValueType:[],  //取值类型
          //表单元素标签宽度
          leftFormLabelWidth: '110px',
          rightFormLabelWidth: '150px',
        };
      },
    },
    methods: {
      // æ‰“开公式编辑框,第二层嵌套对话框
      openformulaEdit(){
        this.isShowformulaEdit = true;
      computed: {
        ...mapGetters(["permission"]),
        permissionList() {
          return {
            addBtn: this.vaildData(this.permission.codeRule_add, true),
            viewBtn: this.vaildData(this.permission.codeRule_view, false),
            delBtn: this.vaildData(this.permission.plCodeRule_delete, false),
            editBtn: this.vaildData(this.permission.codeRule_edit, true)
          };
        },
      },
      methods: {
      //双击添加公式内容
      dbClickAddContent(row){
        //console.log(row.formula);
        this.formulaContent = this.formulaContent + row.formula;
      },
      //清空公式内容
      resetformulaContent(){
        this.formulaContent = '';
      },
      //关闭时清空上次公式内容
      closeFormulaEdit(){
        this.resetformulaContent();
      },
      //编辑完成公式内容回调到子组件进行回显
      saveFormulaContent(){
        console.log(this.formulaContent);
        if(this.formulaContent.trim == null){
          this.$message.warning("公式内容不能为空!");
          return;
        }
        this.$refs.addBasicChild.saveFormulaContent(this.formulaContent);
        this.isShowformulaEdit = false;
      },
      // æ‰“开属性选取值,第二层嵌套对话框
      openAttrSelectOrGetValue(){
        //console.log(111);
        this.isShowSelectAttrOption = true;
      },
      // èŽ·å–å½“å‰è¢«é€‰ä¸­æ ‘èŠ‚ç‚¹çš„oid
      nodeClick(data) {
        this.currentSelectTreeData = data;
        this.loadlistClassifyLinkAttr()
      },
      // åŠ è½½åˆ†ç±»è¿žæŽ¥å±žæ€§è¡¨æ ¼æ•°æ®
      loadlistClassifyLinkAttr(){
        this.selectAttrOptionLoading = true;
        listClassifyLinkAttr({"page": 1,"limit": -1,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid}).then(res=>{
         //console.log(res.data.data);
         //造假数据
         let dataInfo =[
          {"id":"address","name":"会议室地址","oid":"058D840D-1010-A7DE-7C52-B39C03CE89C1","attrLength":"150","description":"","attributeDataTypeText":"字符串"},
          {"id":"businesslicensetype","name":"营业执照类型","oid":"BDAC6D3E-1827-35A0-F3CA-0E58A43F6A07","attrLength":"255","description":"营业执照类型","attributeDataTypeText":"字符串"},
          {"id":"certificatenumber","name":"保密证编号","oid":"E2BC8332-A721-3713-26C3-C9F6340C2C1D","attrLength":"255","description":"保密证编号","attributeDataTypeText":"字符串"},
        ]
        this.selectattrData = dataInfo;
        this.selectAttrOptionLoading = false;
        })
      },
      // ç‚¹å‡»æœç´¢åŽè§¦å‘该事件
      selectAttrOptionSearchChange(params, done) {
        this.query = params;
        console.log(params);  //这儿需要改
        this.loadlistClassifyLinkAttr({"page":1,"limit":-1 ,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid});
        done();
      },
      // å±žæ€§å–值当前选中行发生变化时触发
      selectionChangeAttr(list){
        this.selectionChangeAttrList = list;
      },
      //重置位属性选取值表格的搜索框之后的回调
      searchAttrReset() {
        this.loadlistClassifyLinkAttr()
      },
      // å±žæ€§å–值选取成功保存之后触发
      savelistClassifyLinkAttr(){
        if(this.selectionChangeAttrList.length != 1){
          this.$message.warning("只能选择一条数据!");
          return false;
        }
        let data = {
          "referAttributeId":this.selectionChangeAttrList[0].id,
          "referAttributeName":this.selectionChangeAttrList[0].name,
          "referCodeClassifyOid": this.currentSelectTreeData.key,
          "referCodeClassifyOidName": this.currentSelectTreeData.title,
        }
        //console.log(data);
        //调用子组件并传递当前选中的参数值,实现回显
        this.$refs.addBasicChild.selectedListClassifyLinkAttr(data);
        this.isShowSelectAttrOption = false;
      },
      // ç¼–码规则当前选中行变化的时候触发
      selectionChange(list) {
        this.selectionList = list;
        if(this.selectionList.length > 0){
          this.currentCodeRuleOid = this.selectionList [list.length-1];
          this.loadBasic(this.selectionList[list.length-1]);
        }
      },
      // æ‰“开新增窗口
      addBasicCodeSec(){
        if(!this.tipsMessage(this.selectionList)){
          return;
        }
        if(this.selectionList[0].lcStatus != 'Editing'){
          this.$message.warning('编码规则状态不是"编辑中",不允许编辑码段!');
          return;
        }
        this.addBasicCodeSettingBox = true;
        this.$nextTick(() => {
          this.$refs.addBasicChild.loadCodeSecType();
        })
      },
      // æ–°å¢žåŸºç¡€ç æ®µ
      saveBasicCode(){
        if(this.selectionList[0].oid == null){
          this.$message.warning('缺失必要参数,请重新选择编码规则后重试!');
          return;
        }
        this.$refs.addBasicChild.addSave(this.selectionList[0].oid);
        // å…³é—­çª—口
        this.addBasicCodeSettingBox = false
        // ç‚¹å‡»æ–°å¢žåŸºç¡€ç æ®µä¹‹åŽå…³é—­çª—口之后触发重新加载
        this.loadBasic(this.selectionList[0]);
      },
      // åˆ¤æ–­æ•°æ®æ˜¯å¦é€‰æ‹©ä»¥åŠåªèƒ½é€‰æ‹©å•条数据
      tipsMessage(list){
        if(list.length != 1){
          this.$message.warning("请选择一条编码规则数据!");
          return false;
        }
        return true;
      },
      // åŸºç¡€ç æ®µåˆ é™¤
      deleteBasicCode(){
        if(!this.tipsMessage(this.selectionBasicList)){
          return;
        }
        let oid = this.selectionBasicList[0].oid;
        this.$confirm("是否删除这条数据?如果被引用将不能被删除!", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        })
        .then(() => {
          let ts = this.selectionBasicList[0].ts;
          return deleteData({"oid": oid,"ts": ts});
        })
        .then(() => {
          this.loadBasic({"oid":this.currentCodeRuleOid == null ? this.selectionList[0].oid:this.currentCodeRuleOid});
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          //this.$refs.crud.toggleSelection();
        });
      },
      // ç‚¹å‡»è§¦å‘加载基础码段信息
      loadBasic(row){
        this.loadingBasic = true;
        //console.log(row.oid);
        this.currentCodeRuleOid = row.oid;
        gridCodeBasicSec(1, -1, {"pkCodeRule":row.oid}).then(res => {
          const data = res.data.data;
          this.basicData = data.records;
          //console.log(this.basicData);
          this.loadingBasic = false;
        });
      },
      // åŸºç¡€ç æ®µé€‰ä¸­æ—¶è§¦å‘
      selectionBasicChange(list) {
        this.selectionBasicList = list;
        //console.log(this.selectionBasicList);
      },
      // ä¸Šç§»ä¸‹ç§»åŸºç¡€ç æ®µ
      upOrderNum(row){
        //console.log(row.oid);
        if(!this.tipsMessage(this.selectionList)){
          return;
        }
        let codeRuleOid = this.selectionList[0].oid;
        if (this.selectionList[0].lcStatus != 'Editing') {
          this.$message.warning("只有编码规则的状态是 [编辑中] çš„æ—¶å€™ï¼Œæ‰èƒ½è°ƒæ•´ç æ®µé¡ºåº!");
          return;
        }
        if(row.oid==null || row.oid==''){
          this.$message.warning("未获取到必填参数!");
          return;
        }
        upOrderNum(row.oid).then(() => {
          this.loadBasic({"oid":codeRuleOid});
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        })
      },
      downOrderNum(row){
        //console.log(row.oid);
        if(!this.tipsMessage(this.selectionList)){
          return;
        }
        let codeRuleOid = this.selectionList[0].oid;
        //console.log(this.selectionList);
        if (this.selectionList[0].lcStatus != 'Editing') {
          this.$message.warning("只有编码规则的状态是 [编辑中] çš„æ—¶å€™ï¼Œæ‰èƒ½è°ƒæ•´ç æ®µé¡ºåº!");
          return;
        }
        if(row.oid==null || row.oid==''){
          this.$message.warning("未获取到必填参数!");
          return;
        }
        downOrderNum(row.oid).then(() => {
          this.loadBasic({"oid":codeRuleOid});
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        })
      },
      //基础码段查询
      refreshChangeBasicSec(){
        this.loadBasic({"oid":this.currentCodeRuleOid == null ? this.selectionList[0].oid:this.currentCodeRuleOid});
      },
      // æŸ¥è¯¢ä½¿ç”¨èŒƒå›´
      handleRange(){
        if(!this.tipsMessage(this.selectionList)){
          return;
        }
        this.codeRangeSettingBox = true;
        this.getRangeCodeList()
      },
      getRangeCodeList(){
        this.dialogLoading = true;
        if(this.selectionList[0].oid==null){
          this.$message.error("未获取到参数!");
        }
        listUseRange(this.selectionList[0].oid).then(res => {
          this.useRangeData = res.data.data;
          //console.log(this.useRangeData);
          this.dialogLoading = false;
        });
      },
      refreshUseRangeChange(){
        this.getRangeCodeList();
      },
      // å¯ç”¨ä¸Žåœç”¨
      enableOrDeactivatse(oId,update){
        updateStatus({"oid":oId,"ts":new Date().getTime,"update":update}).then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        }, error => {
          window.console.log(error);
        });
      },
      // å…‹éš†
      cloneCodeSetting() {
        if (this.selectionList.length === 0) {
          this.$message.warning("请选择至少一条数据!");
          return;
        }
        if (this.selectionList.length > 1) {
          this.$message.warning("每次只能选择一条数据!");
          return;
        }
        localStorage.setItem("cloneOid",this.selectionList[0].oid)
        this.cloneSettingBox = true;
      },
      // æ·»åŠ 
      rowSave(row, done, loading) {
        add(row).then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        /* å…¬å¼ç¼–辑框内容改变,子组件编辑完公式之后内容回显时调用 */
        updateFormulaContent(content){
          this.form.getValueClass = content;
        },
        /** é€‰ä¸­å‚照引用的业务类型,第二层嵌套对话框,及其相关方法  */
        saveSelectedreferBtm(){
          if(this.referBtmSelectionList.length != 1){
            this.$message.warning("只能选择一条数据!");
            return false;
          }
          //调用子组件并传递当前选中的参数值,实现回显
          this.form.referBtmId = this.referBtmSelectionList[0].id;
          this.form.referBtmName = this.referBtmSelectionList[0].name;
          //清空当前选中的行
          this.referBtmSelectionClear();
          this.isShowSelectReferBtmOption = false;
        },
        referBtmSearchReset() {
          this.referBtmQuery = {};
          this.referBtmOnLoad(this.referBtmDataPage);
        },
        referBtmSearchChange(params, done) {
          this.referBtmQuery = params;
          this.referBtmDataPage.currentPage = 1;
          this.referBtmOnLoad(this.page, params);
          done();
        }, error => {
          loading();
          window.console.log(error);
        });
      },
      openEdit(row){
        this.$refs.crud.rowEdit(row,row.$index);
      },
      // ä¿®æ”¹
      rowUpdate(row, index, done, loading) {
        row.ts = new Date().getTime;
        update(row).then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
        },
        referBtmSelectionChange(list) {
          //console.log(list);
          this.referBtmSelectionList = list;
        },
        referBtmSelectionClear() {
          this.referBtmSelectionList = [];
          this.$refs.crudReferBtm.toggleSelection();
        },
        referBtmCurrentChange(currentPage){
          this.referBtmDataPage.currentPage = currentPage;
        },
        referBtmSizeChange(pageSize){
          this.referBtmDataPage.pageSize = pageSize;
        },
        refreshReferBtmDataChange() {
          this.referBtmOnLoad(this.referBtmDataPage, this.referBtmQuery);
        },
        //加载中参照引用的业务类型的数据
        referBtmOnLoad(page, params = {}) {
          this.referBtmDialogLoading = true;
          let oid = this.selectionList.length==0 ?  this.form.pkCodeRule:this.selectionList[0].oid;
          Object.assign(params,{pkCodeRule:oid})
          //接口还未提供,待更改
          refDataGridClassifySec(page.currentPage, page.pageSize, Object.assign(params, this.parentClassifyQuery)).then(res => {
            //console.log(res.data);
            const data = res.data.data;
            this.referBtmDataPage.total = data.total;
            this.referBtmData = data.records;
            this.referBtmDialogLoading = false;
            this.referBtmSelectionClear();
          });
        },
        /** çˆ¶åˆ†ç±»é€‰æ‹©å¯¹è¯æ¡†ï¼Œç¬¬äºŒå±‚嵌套对话框,及其相关方法 */
        // ä¿å­˜å½“前父分类码段的选中行,并进行回显
        saveSelectedParentClassify(){
          //console.log(this.parentClassifySelectionList.length);
          if(this.parentClassifySelectionList.length != 1){
            this.$message.warning("只能选择一条数据!");
            return false;
          }
          //调用子组件并传递当前选中的参数值,实现回显
          this.form.parentClassifySecOid = this.parentClassifySelectionList[0].oid;
          this.form.parentClassifySecText = this.parentClassifySelectionList[0].name;
          //清空当前选中的行
          this.parentClassifySelectionClear();
          this.isShowParentClassifyOption = false;
        },
        parentClassifySearchReset() {
          this.parentClassifyQuery = {};
          this.parentClassifyOnLoad(this.parentClassifyDataPage);
        },
        parentClassifySearchChange(params, done) {
          this.parentClassifyQuery = params;
          this.parentClassifyDataPage.currentPage = 1;
          this.parentClassifyOnLoad(this.page, params);
          done();
        }, error => {
          loading();
          console.log(error);
        });
      },
      // åˆ é™¤
      handleDelete() {
        if(!this.tipsMessage(this.selectionList)){
          return;
        }
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        })
          .then(() => {
            // åªæ”¯æŒæ¯æ¬¡å•条记录删除
            let oid = this.selectionList[0].oid;
            let ts = this.selectionList[0].ts;
            return remove({oid: oid,ts: ts});
        },
        parentClassifySelectionChange(list) {
          //console.log(this.parentClassifyCurrentChange);
          this.parentClassifySelectionList = list;
        },
        parentClassifySelectionClear() {
          this.parentClassifySelectionList = [];
          this.$refs.crudParentClassify.toggleSelection();
        },
        parentClassifyCurrentChange(currentPage){
          this.parentClassifyDataPage.currentPage = currentPage;
        },
        parentClassifySizeChange(pageSize){
          this.parentClassifyDataPage.pageSize = pageSize;
        },
        refreshParentClassifyDataChange() {
          this.parentClassifyOnLoad(this.parentClassifyDataPage, this.parentClassifyQuery);
        },
        parentClassifyOnLoad(page, params = {}) {
          this.classifyDialogLoading = true;
          let oid = this.selectionList.length==0 ? this.form.pkCodeRule:this.selectionList[0].oid;
          Object.assign(params,{pkCodeRule:oid})
          refDataGridClassifySec(page.currentPage, page.pageSize, Object.assign(params, this.parentClassifyQuery)).then(res => {
            //console.log(res.data);
            const data = res.data.data;
            this.parentClassifyDataPage.total = data.total;
            this.parentClassifyData = data.records;
            this.classifyDialogLoading = false;
            this.parentClassifySelectionClear();
          });
        },
        /** æ‰“开属性选取值,第二层嵌套对话框,及其相关方法 */
        // èŽ·å–å½“å‰è¢«é€‰ä¸­æ ‘èŠ‚ç‚¹çš„oid
        nodeClick(data) {
          this.currentSelectTreeData = data;
          this.loadlistClassifyLinkAttr()
        },
        // åŠ è½½åˆ†ç±»è¿žæŽ¥å±žæ€§è¡¨æ ¼æ•°æ®
        loadlistClassifyLinkAttr(){
          this.selectAttrOptionLoading = true;
          listClassifyLinkAttr({"page": 1,"limit": -1,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid}).then(res=>{
          //console.log(res.data.data);
          //造假数据
          let dataInfo =[
            {"id":"address","name":"会议室地址","oid":"058D840D-1010-A7DE-7C52-B39C03CE89C1","attrLength":"150","description":"","attributeDataTypeText":"字符串"},
            {"id":"businesslicensetype","name":"营业执照类型","oid":"BDAC6D3E-1827-35A0-F3CA-0E58A43F6A07","attrLength":"255","description":"营业执照类型","attributeDataTypeText":"字符串"},
            {"id":"certificatenumber","name":"保密证编号","oid":"E2BC8332-A721-3713-26C3-C9F6340C2C1D","attrLength":"255","description":"保密证编号","attributeDataTypeText":"字符串"},
          ]
          this.selectattrData = dataInfo;
          this.selectAttrOptionLoading = false;
          })
        },
        // ç‚¹å‡»æœç´¢åŽè§¦å‘该事件
        selectAttrOptionSearchChange(params, done) {
          this.query = params;
          console.log(params);  //这儿需要改
          this.loadlistClassifyLinkAttr({"page":1,"limit":-1 ,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid});
          done();
        },
        // å±žæ€§å–值当前选中行发生变化时触发
        selectionChangeAttr(list){
          this.selectionChangeAttrList = list;
        },
        // é‡ç½®ä½å±žæ€§é€‰å–值表格的搜索框之后的回调
        searchAttrReset() {
          this.loadlistClassifyLinkAttr()
        },
        // ä¸ºå±žæ€§é€‰å–值之后的回显
        selectedListClassifyLinkAttr(){
          if(this.selectionChangeAttrList.length != 1){
            this.$message.warning("只能选择一条数据!");
            return false;
          }
          //调用子组件并传递当前选中的参数值,实现回显
          this.form = Object.assign({}, this.form, {
            referAttributeId:this.selectionChangeAttrList[0].id,
            referAttributeName:this.selectionChangeAttrList[0].name,
            referCodeClassifyOid: this.currentSelectTreeData.key,
            referCodeClassifyOidName: this.currentSelectTreeData.title,
          })
          this.isShowSelectAttrOption = false;
        },
        /** åŸºç¡€ç æ®µè¡¨ä¸­çš„码值管理的相关方法 */
        // ç å€¼ç®¡ç†å¼¹çª—控制
        openBasicSecCodeValueMgr(row){
          //当前为固定码段码值管理码值管理
          if(row.secType === "codefixedsec"){
            this.isShowFixedForm = true;
            this.loadFixedValueTableData(row);
          }else{
            //分类码段
            this.isShowFixedForm = false;
            this.loadClassifyValueData(row);
          }
          this.codefixedsecOrCodeclassifysecOid = row.oid;
          this.isShowBasicSecCodeValueMgr = true;
        },
        //加载固定码段码值表数据
        loadFixedValueTableData(row){
          this.fixedValueOptionLoading = true;
          gridCodeFixedValue(1, -1, {"codeFixedSecOid":row.oid}).then(res=>{
            this.fixedValueData = res.data.data.records;
            //console.log(this.fixedValueData);
            this.fixedValueOptionLoading = false;
          })
        },
        //单击固定码段的码值表中行时触发的事件
        selectedCodeValueRow(row){
          //console.log(row);
          this.selectedFixedOrCodeclassifyValue = row;
          this.codeFixdForm.id = row.id;
          this.codeFixdForm.description = row.description;
          this.codeFixdForm.codeFixedSecOid = row.codefixedsecoid;
        },
        //新增码值
        addCodeSecValue(condition){
          if(condition === "codefixedsec"){
            if(this.codeFixdForm.id.trim() == ''){
              this.$message.warning("码值不能为空!");
              return;
            }
            if(this.codeFixdForm.id.trim().length >= 12 ){
              this.$message.warning("码值长度不能大于12!");
              return;
            }
            this.codeFixdForm.codeFixedSecOid = this.codefixedsecOrCodeclassifysecOid;
            addSaveCodeFixedValue(this.codeFixdForm).then(() => {
              this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid});
              this.clearFixedOrClassifyForm('codefixedsec');
              this.$message({
                type: "success",
                message: "操作成功!"
              });
            }, error => {
              window.console.log(error);
            });
          }else {
            this.codeClassifyForm.codeClassifySecOid = this.codefixedsecOrCodeclassifysecOid;
            console.log(this.codeClassifyForm);
            addSaveCodeClassifyValue(this.codeClassifyForm).then(() => {
              this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysecOid});
              this.clearFixedOrClassifyForm('codeclassifyvaluesec');
              this.$message({
                type: "success",
                message: "操作成功!"
              });
            }, error => {
              this.$confirm(error, {
                confirmButtonText: "确定",
                type: "error",
              })
            });
          }
        },
        //清空码值表单
        clearFixedOrClassifyForm(condition){
          //点击取消时清空表单与当前选中的码值,并禁用按钮
          this.selectedFixedOrCodeclassifyValue = '';
          //console.log(condition);
          if(condition === "close"){
            this.codeFixdForm = this.$options.data().codeFixdForm;
            this.codeClassifyForm = this.$options.data().codeClassifyForm;
          }
          if(condition === "codefixedsec"){
            this.codeFixdForm.description = '';
            this.codeFixdForm.codeFixedSecOid = '';
          }else {
            this.codeClassifyForm = this.$options.data().codeClassifyForm;
          }
        },
        //修改码值
        editCodeSecValue(condition){
          if(condition=='codefixedsec'){
            //以前是直接把当前选中行的所有数据都进行提交,但其实只需要传输一些比要参数即可,这儿做了修改,需要穿其他参数的请自行添加
            let editData = {
            "oid": this.selectedFixedOrCodeclassifyValue.oid,
            "ts": new Date().getTime(),
            "description": this.codeFixdForm.description,
            "id": this.codeFixdForm.id,
            "codeFixedSecOid":  this.selectedFixedOrCodeclassifyValue.codefixedsecoid
            }
            editCodeFixedValue(editData).then(() => {
                this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid})
                this.$message({
                  type: "success",
                  message: "操作成功!"
                });
              }, error => {
                window.console.log(error);
            });
          }else {
            this.codeClassifyForm.oid = this.selectedFixedOrCodeclassifyValue.attributes.oid;
            editCodeClassifyValue(this.codeClassifyForm).then(() => {
                this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysecOid})
                this.$message({
                  type: "success",
                  message: "操作成功!"
                });
              }, error => {
                window.console.log(error);
            });
          }
        },
        //删除码值
        delCodeSecValue(condition){
          //固定码段码值删除
          if(condition == 'codefixedsec'){
            //console.log(this.selectedFixedOrCodeclassifyValue.oid);
            this.$confirm("是否删除这条数据?如果被引用将不能被删除!", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
            })
            .then(() => {
              let ts = new Date(this.selectedFixedOrCodeclassifyValue.ts).getTime();
              return deleteCodeFixedValue({"oid": this.selectedFixedOrCodeclassifyValue.oid,"ts": ts});
            })
            .then(() => {
              this.selectedFixedOrCodeclassifyValue = '';
              this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid})
              this.clearFixedOrClassifyForm('codefixedsec');
              this.$message({
                type: "success",
                message: "操作成功!"
              });
            });
          }else{
            //分类码段码值删除
            this.$confirm("是否删除这条数据?如果被引用将不能被删除!", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            })
            .then(() => {
              let ts = new Date(this.selectedFixedOrCodeclassifyValue.ts).getTime();
              return deleteCodeClassifyValue({"oid": this.selectedFixedOrCodeclassifyValue.oid,"ts": ts});
            })
            .then(() => {
              this.selectedFixedOrCodeclassifyValue = '';
              this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysecOid})
              this.clearFixedOrClassifyForm('codeclassifyvalue');
              this.$message({
                type: "success",
                message: "操作成功!"
              });
            });
          }
        },
        //对固定码值表进行:上移、下移、移除操作
        codeFixedValueOpetion(condition,row){
          //console.log(this.fixedValueData[row.$index].orderNum);
          const index = row.$index;
          if(condition == 'up'){
            //对ordeNum排序字段进行调整
            this.fixedValueData[index].orderNum = this.fixedValueData[index].orderNum-1
            this.fixedValueData[index-1].orderNum = this.fixedValueData[index].orderNum+1
            //当下标减去1小于0或者orderNum字段减去1小于0的时候不执行上移操作
            if(index-1<0 || this.fixedValueData[row.$index].orderNum-1<0){
              return;
            }
            //调整数组值顺序
            let tempOption = this.fixedValueData[index-1];
            this.$set(this.fixedValueData, index - 1, this.fixedValueData[index])
            this.$set(this.fixedValueData, index , tempOption)
            //console.log(this.fixedValueData);
          }else if(condition == 'down'){
            //对ordeNum排序字段进行调整
            this.fixedValueData[index].orderNum = this.fixedValueData[index].orderNum+1
            this.fixedValueData[index+1].orderNum = this.fixedValueData[index].orderNum-1
            //调整数组值顺序
            let tempOption = this.fixedValueData[index+1];
            this.$set(this.fixedValueData, index + 1, this.fixedValueData[index]);
            this.$set(this.fixedValueData, index, tempOption)
          }else {
            for(let i=index+1; i<this.fixedValueData.length-1; i++){
              //console.log(this.fixedValueData[i].orderNum);
              this.fixedValueData[i].orderNum = this.fixedValueData[i].orderNum-1;
              //console.log(this.fixedValueData[i].orderNum);
            }
            this.$delete(this.fixedValueData, index);
          }
          //console.log(this.fixedValueData);
        },
        //对分类码值表进行:上移、下移、移除操作
        codeClassifyValueOpetion(condition){
          //此处涉及到深浅拷贝问题,但是执行上下移保存操作之后会重新加载treedata,所以影响不大
          let currentTreeList = this.getCodeClassifyValueTreeData();
          let saveData = [];
          console.log(currentTreeList.treeList);
          if(condition == 'up'){
            if(currentTreeList.index-1>=0){
              // è°ƒæ•´é¡ºåº
              saveData[0] = currentTreeList.treeList[currentTreeList.index].attributes;
              saveData[1] = currentTreeList.treeList[currentTreeList.index-1].attributes;
              saveData[0].orderNum = parseInt(saveData[0].orderNum)-1;
              saveData[1].orderNum = parseInt(saveData[1].orderNum)+1;
              this.saveCodeFixedOrClassifyValueOption('classifyValue',saveData);
            }
          }else{
            if(currentTreeList.index+1<currentTreeList.treeList.length){
              // è°ƒæ•´é¡ºåº
              saveData[0] = currentTreeList.treeList[currentTreeList.index].attributes;
              saveData[1] = currentTreeList.treeList[currentTreeList.index+1].attributes;
              saveData[0].orderNum = parseInt(saveData[0].orderNum)+1;
              saveData[1].orderNum = parseInt(saveData[1].orderNum)-1;
              this.saveCodeFixedOrClassifyValueOption('classifyValue',saveData);
            }
          }
          console.log(saveData);
          console.log(this.classifyValueTreeData);
        },
        //选中被调整顺序的两个树的节点
        getCodeClassifyValueTreeData(){
          const currentNodeTreeData = this.selectedFixedOrCodeclassifyValue;
          /**考虑几种情况,第一种当前上移|下移操作已经是边界,
            ä¸éœ€è¦è¦åšå¤„理,第二种当前为树根节点,第三种当前为叶子节点
          */
          //说明是根节点,直接找再判断是否是边界值
          if(currentNodeTreeData.parentId.trim() == ''){
            return this.findTreeIndex(this.classifyValueTreeData,currentNodeTreeData.oid,true);
          }else{
            //说明不是根节点,先找到父节点再找到子节点,判断是否是边界值
            return this.findTreeIndex(this.classifyValueTreeData,currentNodeTreeData.parentId,false);
          }
        },
        /**
         * æ‰¾å‰ä¸€ä¸ªå’ŒåŽä¸€ä¸ªå…ƒç´ 
         * @treeList æŸ¥æ‰¾çš„æ•°ç»„
         * @conditionOid ç”¨æ¥æŸ¥æ‰¾åˆ¤æ–­çš„æ¡ä»¶
         * @isTreeRoot æ˜¯å¦çˆ¶èŠ‚ç‚¹
         * @rreturn è¿”回相邻的节点
         */
        findTreeIndex(treeList,conditionOid,isTreeRoot){
          for(let index=0;index<treeList.length;index++){
            if(treeList[index].oid==conditionOid){
              if(isTreeRoot){
                let resData = {
                  "index":index,
                  "treeList":treeList,
                }
                return resData;
              }else{
                return this.findTreeIndex(this.classifyValueTreeData[index].children,this.selectedFixedOrCodeclassifyValue.oid,true);
              }
            }
          }
        },
        //上移下移等操作的保存
        saveCodeFixedOrClassifyValueOption(condition,editOrderNumdata){
          //保存对固定码段码值的上移下移移出等操作
          if(condition == "fixedValue"){
            let data = {
            "codeFixedSecOid": this.codefixedsecOrCodeclassifysecOid,
            "dtoList": JSON.stringify(this.fixedValueData),
            }
            saveOrder(data).then(() => {
              //执行完保存之后将当前选中的对象清空
              this.selectedFixedOrCodeclassifyValue = '';
              this.$message({
                type: "success",
                message: "保存成功!"
              });
              }, error => {
                window.console.log(error);
            });
          }else {
            //保存对分类码值码段码值的上移下移移出等操作
            saveCodeClassifyValueOrder({
              "codeClassifySecOid": this.codefixedsecOrCodeclassifysecOid,
              "dtoList": JSON.stringify(editOrderNumdata),
            }).then(() => {
              this.$message({
                type: "success",
                message: "保存成功!"
              });
              }, error => {
                window.console.log(error);
            });
            this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysecOid});
          }
        },
        //分类码值树data加载
        loadClassifyValueData(row){
          //console.log(row);
          let condtionData = {
            "queryAllLevel": true,
            "loadType": "all",
            "multipleSelect": false,
            "isMuti": false,
            "isQueryAllColumn": true,
            'conditionMap[codeclassifysecoid]':row.oid,
          };
          treeCodeClassifyValue(condtionData).then( res=> {
            this.classifyValueTreeData = res.data;
            //console.log(res.data);
          });
        },
        //分类码值树单击时触发的事件
        classisyValueTreeOnodeClick(node){
          //console.log(node);
          this.selectedFixedOrCodeclassifyValue = node;
          this.codeClassifyForm.codeClassifySecOid = node.attributes.codeClassifySecOid;
          this.codeClassifyForm.id = node.attributes.id;
          this.codeClassifyForm.name = node.attributes.name;
          this.codeClassifyForm.parentClassifyValueOid = node.attributes.oid;
          //console.log(this.codeClassifyForm);
        },
        /** åŸºç¡€ç æ®µç›¸å…³æ–¹æ³• */
        //防止打开过编辑窗口之后表单中存在值,所以需要清空,并初始化form表单属性
        clearBasicAddForm(){
          this.form = this.$options.data().form;;
          // this.changeSectypeFormItems(null);
        },
        // æ‰“开新增窗口
        addBasicCodeSec(){
          if(!this.tipsMessage(this.selectionList)){
            return;
          }
          if(this.selectionList[0].lcStatus != 'Editing'){
            this.$message.warning('编码规则状态不是"编辑中",不允许编辑码段!');
            return;
          }
          this.openBasicDialog('add',null);
          this.loadCodeSecType();
        },
        //打开新增或编辑基础码段对话框
        openBasicDialog(condition,row){
          //console.log(row);
          if(condition == 'add') {
            this.basicSecDialogTitle = '添加码段信息';
            this.showbtn = true;
            this.basicSecOnlyRead = false;
          }else if(condition == 'edit'){
            if(this.selectionList.length!=1){
              this.$message.warning('请选择一条编码规则数据!');
              return;
            }
            this.basicSecDialogTitle = '修改码段信息';
            this.showbtn = true;
            this.basicSecOnlyRead = false;
            //为form绑定值
          }else{
            this.basicSecDialogTitle = '查看码段信息';
            this.showbtn = false;
            this.basicSecOnlyRead = true;
          }
          //console.log(this.form);
          this.changeSectypeFormItems(condition == 'add' ? null:row);
          this.addBasicCodeSettingBox = true;
        },
        // æ–°å¢žåŸºç¡€ç æ®µ
        saveOrEditBasicCode(){
          if(this.selectionList[0].oid == null ||  this.selectionList[0].oid == ''){
            this.$message.warning('缺失必要参数,请重新选择编码规则后再试!');
            return;
          }
          this.form.pkCodeRule = this.selectionList[0].oid;
          if(this.form.oid == '' || this.form.oid == null){
            if(this.checkForm()){
              addSave(this.form).then(() => {
              this.$message({
                type: "success",
                message: "操作成功!"
              });
              }, error => {
                window.console.log(error);
              });
              // å…³é—­å¯¹è¯æ¡†
              this.addBasicCodeSettingBox = false
            }
          }else{
            editSave(this.form).then(() => {
               // å…³é—­å¯¹è¯æ¡†
              this.addBasicCodeSettingBox = false
              this.$message({
                type: "success",
                message: "操作成功!"
              });
              }, error => {
                window.console.log(error);
            });
          }
          // ç‚¹å‡»æ–°å¢žåŸºç¡€ç æ®µ,关闭窗口之后触发重新加载
          this.loadBasic(this.selectionList[0]);
        },
        // å› ä¸ºelementui的表单校验设置不上所以采用判断的方式来做表单检验方式
        checkForm(){
          let form = this.form;
          //console.log(form);
          const regNumber = /^[0-9]+\.{0,1}[0-9]*$/; //数字或小数正则校验
          const tipsMsg = "必填项不能为空";
          if(form.id == ''){
            this.$message.warning("(码段编号)"+tipsMsg);
            this.$refs.id.$el.querySelector('input').focus();
            return false;
          }
          if(form.name == ''){
            this.$message.warning("(码段名称)"+tipsMsg);
            this.$refs.name.$el.querySelector('input').focus();
            return false;
          }
          if(form.secType == ''){
            this.$message.warning("(码段类型)"+tipsMsg);
            this.$refs.secType.$el.querySelector('select').focus();
            return false;
          }
          if(form.secType==='codefixedsec'){
            //固定码段
            if(form.codeSecLengthType == ''){
              this.$message.warning("(码段长度类型)"+tipsMsg);
              this.$refs.codeSecLengthType.$el.querySelector('select').focus();
              return false;
            }
            if(form.codeSecLength == ''){
              this.$message.warning("(码段长度)"+tipsMsg);
              this.$refs.codeSecLength.$el.querySelector('input').focus();
              return false;
            }
            if(!regNumber.test(form.codeSecLength)){
              this.$message.warning("码段的长度必须为数字值");
              this.$refs.codeSecLength.$el.querySelector('input').focus();
              return false;
            }
          }else if(this.form.secType==='codeattrsec'){
            //属性码段
            if(form.referAttributeId == ''){
              this.$message.warning('(属性)'+tipsMsg);
              this.$refs.referAttributeId.$el.querySelector('input').focus();
              return false;
            }
          }else if(this.form.secType==='codeserialsec'){
            console.log(form.codeFillType);
            //流水码段
            if(form.codeSecLength == ''){
              this.$message.warning('(码段的长度)'+tipsMsg);
              this.$refs.seriaCodeSecLength.$el.querySelector('input').focus();
              return false;
            }
            if(!regNumber.test(form.codeSecLength)){
              this.$message.warning('码段的长度必须为数字值');
              this.$refs.seriaCodeSecLength.$el.querySelector('input').focus();
              return false;
            }
            if(!regNumber.test(form.serialStart)){
              this.$message.warning('流水号的起始值必须为数字值');
              this.$refs.serialStart.$el.querySelector('input').focus();
              return false;
            }
            if(!regNumber.test(form.serialStep)){
              this.$message.warning('流水的步长必须为数字值');
              this.$refs.serialStep.$el.querySelector('input').focus();
              return false;
            }
            if(form.codeFillType == ''){
              this.$message.warning('(编码补位方式)'+tipsMsg);
              return false;
            }
            if(form.codeFillType != '不补位' && form.codeFillSeparatorSelect == ''){
              this.$message.warning('当补位方式为左补位或者右补位的时候,补位字符不能为空');
              return false;
            }
            if(form.codeFillLength == ''){
              this.$message.warning('填充长度不能为空');
              this.$refs.codeFillLength.$el.querySelector('input').focus();
              return false;
            }
            if(!regNumber.test(form.codeFillLength)){
              this.$message.warning('填充长度必须为数字值');
              this.$refs.codeFillLength.$el.querySelector('input').focus();
              return false;
            }
            if(form.codeFillLimit == ''){
              this.$message.warning('(流水上限)'+tipsMsg);
              this.$refs.codeFillLimit.$el.querySelector('input').focus();
              return false;
            }
            if(!regNumber.test(form.codeFillLimit)){
              this.$message.warning('流水上限必须为数字值');
              this.$refs.codeFillLimit.$el.querySelector('input').focus();
              return false;
            }
            if(form.codeFillFlag == ''){
              this.$message.warning('(流水是否补码)'+tipsMsg);
              this.$refs.switch.$el.querySelector('input').focus();
              return false;
            }
          }else if(this.form.secType==='codelevelsec'){
            //层级码段
            if(form.codeLevelType == ''){
              this.$message.warning('(层级类型)'+tipsMsg);
              return false;
            }
            if(!regNumber.test(form.codeLevelValue)){
              this.$message.warning('层级的值)只能填写数字');
              this.$refs.codeLevelValue.$el.querySelector('input').focus();
              return false;
            }
            if(form.valueCutType == ''){
              this.$message.warning('(字符截取类型)'+tipsMsg);
              this.$refs.valueCutType.$el.querySelector('select').focus();
              return false;
            }
          }else if(this.form.secType==='coderefersec'){
            //引用码段
            if(form.referBtmId == ''){
              this.$message.warning('(参照引用的业务类型)'+tipsMsg);
              this.$refs.referBtmId.$el.querySelector('input').focus();
              return false;
            }
            if(form.referConfig == ''){
              this.$message.warning('(参照配置)'+tipsMsg);
              this.$refs.referConfig.$el.querySelector('input').focus();
              return false;
            }
          }else if(this.form.secType==='codedatesec'){
            //日期码段
            if(form.codeDateFormatStr == ''){
              this.$message.warning('(日期格式)'+tipsMsg);
              this.$refs.codeDateFormatStr.$el.querySelector('input').focus();
              return false;
            }
          }else if(this.form.secType==='codeclassifysec'){
            //分类码段
            if(form.codeSecLengthType == ''){
              this.$message.warning('(码段长度类型)'+tipsMsg);
              return false;
            }
            if(form.codeSecLength == ''){
              this.$message.warning('(码段长度)'+tipsMsg);
              this.$refs.classCodeSecLength.$el.querySelector('input').focus();
              return false;
            }
            if(!regNumber.test(form.codeSecLength)){
              this.$message.warning('码段的长度必须为数字值');
              this.$refs.classCodeSecLength.$el.querySelector('input').focus();
              return false;
            }
          }else if(this.form.secType==='codevariablesec'){
            //可变码段
            if(form.codeSecLength == ''){
              this.$message.warning('(码段长度)'+tipsMsg);
              this.$refs.varCodeSecLength.$el.querySelector('input').focus();
              return false;
            }
            if(!regNumber.test(form.codeSecLength)){
              this.$message.warning('码段的长度必须为数字值');
              this.$refs.classCodeSecLength.$el.querySelector('input').focus();
              return false;
            }
            if(form.codeFillType == ''){
              this.$message.warning('(编码补位方式)'+tipsMsg);
              return false;
            }
            if(form.codeFillType != '不补位' && form.codeFillSeparatorSelect == ''){
              this.$message.warning('当补位方式为左补位或者右补位的时候,补位字符不能为空');
              return false;
            }
          }
          return true;
        },
        // åˆ¤æ–­æ•°æ®æ˜¯å¦é€‰æ‹©ä»¥åŠåªèƒ½é€‰æ‹©å•条数据
        tipsMessage(list){
          if(list.length != 1){
            this.$message.warning("请选择一条编码规则数据!");
            return false;
          }
          return true;
        },
        // åŸºç¡€ç æ®µåˆ é™¤
        deleteBasicCode(){
          if(!this.tipsMessage(this.selectionBasicList)){
            return;
          }
          let oid = this.selectionBasicList[0].oid;
          this.$confirm("是否删除这条数据?如果被引用将不能被删除!", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            let ts = new Date(this.selectionBasicList[0].ts).getTime();
            return deleteData({"oid": oid,"ts": ts});
          })
          .then(() => {
            this.loadBasic({"oid":this.currentCodeRuleOid == null || this.currentCodeRuleOid == '' ? this.selectionList[0].oid:this.currentCodeRuleOid});
            this.$message({
              type: "success",
              message: "操作成功!"
            });
            this.$refs.crudBasic.toggleSelection();
          });
        },
        // ç‚¹å‡»è§¦å‘加载基础码段信息
        loadBasic(row){
          if(this.cloneSettingBox){
            this.cloneTableLoading = true;
          }else{
            this.loadingBasic = true;
          }
          // console.log(row.oid);
          //存储当前关联的编码规则相关信息
          this.currentCodeRuleOid = row.oid;
          this.currentRuleLcStatus = row.lcStatus;
          gridCodeBasicSec(1, -1, {"pkCodeRule":row.oid}).then(res => {
            const data = res.data.data;
            // console.log(data);
            if(this.cloneSettingBox){
              this.cloneData = data.records;
              // console.log(tihs.cloneData);
              this.cloneTableLoading = false;
            }else {
              this.basicData = data.records;
              // console.log(this.basicData);
              this.loadingBasic = false;
            }
          });
        },
        // åŸºç¡€ç æ®µé€‰ä¸­æ—¶è§¦å‘
        selectionBasicChange(list) {
          this.selectionBasicList = list;
          //console.log(this.selectionBasicList);
        },
        // ä¸Šç§»ä¸‹ç§»åŸºç¡€ç æ®µ
        upOrderNum(row){
          //console.log(row.oid);
          if(!this.tipsMessage(this.selectionList)){
            return;
          }
          let codeRuleOid = this.selectionList[0].oid;
          if (this.selectionList[0].lcStatus != 'Editing') {
            this.$message.warning("只有编码规则的状态是 [编辑中] çš„æ—¶å€™ï¼Œæ‰èƒ½è°ƒæ•´ç æ®µé¡ºåº!");
            return;
          }
          if(row.oid==null || row.oid==''){
            this.$message.warning("未获取到必填参数!");
            return;
          }
          upOrderNum(row.oid).then(() => {
            this.loadBasic({"oid":codeRuleOid});
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          })
        },
        downOrderNum(row){
          //console.log(row.oid);
          if(!this.tipsMessage(this.selectionList)){
            return;
          }
          let codeRuleOid = this.selectionList[0].oid;
          //console.log(this.selectionList);
          if (this.selectionList[0].lcStatus != 'Editing') {
            this.$message.warning("只有编码规则的状态是 [编辑中] çš„æ—¶å€™ï¼Œæ‰èƒ½è°ƒæ•´ç æ®µé¡ºåº!");
            return;
          }
          if(row.oid==null || row.oid==''){
            this.$message.warning("未获取到必填参数!");
            return;
          }
          downOrderNum(row.oid).then(() => {
            this.loadBasic({"oid":codeRuleOid});
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          })
        },
        //基础码段查询
        refreshChangeBasicSec(){
          this.loadBasic({"oid":this.currentCodeRuleOid == null || this.currentCodeRuleOid == '' ? this.selectionList[0].oid:this.currentCodeRuleOid});
        },
        /** ç¼–码规则相关方法 */
        // æŸ¥è¯¢ä½¿ç”¨èŒƒå›´
        handleRange(){
          if(!this.tipsMessage(this.selectionList)){
            return;
          }
          this.codeRangeSettingBox = true;
          this.getRangeCodeList()
        },
        //加载使用范围列表
        getRangeCodeList(){
          this.dialogLoading = true;
          if(this.selectionList[0].oid==null){
            this.$message.error("未获取到参数!");
          }
          listUseRange(this.selectionList[0].oid).then(res => {
            this.useRangeData = res.data.data;
            //console.log(this.useRangeData);
            this.dialogLoading = false;
          });
        },
        //刷新使用范围列表
        refreshUseRangeChange(){
          this.getRangeCodeList();
        },
        //单击编码规则实现行选择
        codeRuleRowClick (row) {
          this.$refs.crud.toggleSelection();
          this.selectionList = row;
          this.$refs.crud.setCurrentRow(row);
          this.$refs.crud.toggleRowSelection(row); //选中当前行
          this.loadBasic(row);
        },
        // å¯ç”¨ä¸Žåœç”¨
        enableOrDeactivatse(oId,update){
          updateStatus({"oid":oId,"ts":new Date().getTime,"update":update}).then(() => {
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            });
            this.$refs.crud.toggleSelection();
          }, error => {
            window.console.log(error);
          });
      },
      // æ‰“开修改
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetail(this.form.oid).then(res => {
            this.form = res.data.data;
        },
        // æ‰“开编码规则克隆对话框
        openCodeRuleDialog() {
          if (!this.tipsMessage(this.selectionList)) {
            return;
          }
          this.cloneSettingBox = true;
          this.cloneCodeRuleForm.id = this.selectionList[0].id;
          this.cloneCodeRuleForm.name = this.selectionList[0].name;
          this.cloneCodeRuleForm.description = this.selectionList[0].description;
          this.loadBasic({"oid": this.selectionList[0].oid});
        },
        // å…‹éš†ç¼–码规则保存功能
        saveCloneCodeRule(){
          let form = this.cloneCodeRuleForm;
          if(form.id.trim()==''){
            this.$message.warning("编号不能为空!");
            return;
          }
          if(form.name.trim()==''){
            this.$message.warning("码值不能为空!");
            return;
          }
          this.selectionList[0].oid = '';
          this.selectionList[0].id = form.id;
          this.selectionList[0].name = form.name;
          this.selectionList[0].description = form.description;
          this.selectionList[0].createTime = new Date().getTime();
          this.selectionList[0].ts = new Date(this.selectionList[0].ts).getTime();
          this.selectionList[0].lcStatus = 'Editing';
          let data = Object.assign({}, this.selectionList[0],{elements:this.cloneData});
          clone(data).then(() => {
            this.cloneSettingBox = false;
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          }, error => {
            window.console.log(error);
          });
        }
        done();
      },
      searchReset() {
        this.query = {};
        this.onLoad(this.page);
      },
      searchChange(params, done) {
        this.query = params;
        this.page.currentPage = 1;
        this.onLoad(this.page, params);
        done();
      },
      selectionChange(list) {
        this.selectionList = list;
        if(this.selectionList.length > 0){
          this.currentCodeRuleOid = this.selectionList [list.length-1];
          this.loadBasic(this.selectionList[list.length-1]);
        }
      },
      selectionClear() {
        this.selectionList = [];
        this.$refs.crud.toggleSelection();
      },
      currentChange(currentPage){
        this.page.currentPage = currentPage;
      },
      sizeChange(pageSize){
        this.page.pageSize = pageSize;
      },
      refreshChange() {
        this.onLoad(this.page, this.query);
      },
      onLoad(page, params = {}) {
        this.loading = true;
        gridCodeRule(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
          //console.log(data);
        },
        // æ‰“开从其他编码规则中克隆码段对话框
        openOtherCodeRuleDialog(){
          if (!this.tipsMessage(this.selectionList)) {
            return;
          }
          if(this.selectionList[0].lcStatus != 'Editing'){
            this.$message.warning("编码规则已被引用,不允许编辑或删除!");
            return;
          }
          this.cloneOtherCodeRuleSettingBox = true;
        },
        //单击编码规则实现行选择
        codeOtherCloneRuleRowClick (row) {
          this.loadBasic(row);
        },
        // ç¼–码规则当前选中行变化的时候触发
        selectionOtherCloneCodeRuleChange(list) {
          //console.log(list);
          this.selectionOtherCloneCodeRuleList = list;
          if(this.selectionOtherCloneCodeRuleList.length > 0){
            this.loadBasic(this.selectionOtherCloneCodeRuleList[list.length-1]);
          }
        },
        selectionOtherCloneCodeBasicChange(list){
          this.selectionOtherCloneCodeBasicList = list;
        },
         // ä»Žå…¶ä»–编码规则中克隆码段信息
        saveOtherCodeBasic(){
          let oid = this.selectionList[0].oid;
          let fromDialogPkCodebasic = this.selectionOtherCloneCodeBasicList;
          if(fromDialogPkCodebasic.length < 0){
            this.$message.warning("请选择码段数据!");
            return;
          }
          let res = fromDialogPkCodebasic.filter((item) => {
            return item.pkCodeRule == oid;
          });
          if(res != ''){
            this.$message.warning("需要克隆的编码规则与被克隆的编码规则相同!");
            return;
          }
          //console.log(res);
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.loadBasic(data.records[0])
          this.selectionClear();
        });
          let oidArr = '';
          fromDialogPkCodebasic.forEach((item) =>{
            oidArr = oidArr+","+item.oid;
          })
          let data = {
            "pkCodeRule": oid,
            "oidArr": oidArr,
          }
          //console.log(data);
          cloneCodeBasic(data).then(() => {
            this.cloneOtherCodeRuleSettingBox = false;
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          }, error => {
            window.console.log(error);
          });
        },
        // æ¸…空码值
        clearAllCodeSec(){
          if(this.selectionList.length == 0){
            this.$message.warning("没有选择数据!");
            return;
          }
          if(this.selectionList.length != 1){
            this.$message.warning("每次只能选择一条数据!");
            return;
          }
          let currentData = this.selectionList[0];
          this.$confirm("确定要清空码值?如果清空将不能被恢复,请谨慎!", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
            })
            .then(() => {
              let ts = new Date(currentData.ts).getTime();
              return clearAllCode({"oid": currentData.oid,"ts": ts});
            })
            .then(() => {
              this. this.onLoad(this.page);
              this.$message({
                type: "success",
                message: "操作成功!"
              });
            });
        },
        // æ·»åŠ 
        rowSave(row, done, loading) {
          add(row).then(() => {
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            });
            done();
          }, error => {
            loading();
            window.console.log(error);
          });
        },
        openEdit(row){
          this.$refs.crud.rowEdit(row,row.$index);
        },
        // ä¿®æ”¹
        rowUpdate(row, index, done, loading) {
          row.ts = new Date().getTime;
          update(row).then(() => {
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            });
            done();
          }, error => {
            loading();
            console.log(error);
          });
        },
        // åˆ é™¤
        handleDelete() {
          if(!this.tipsMessage(this.selectionList)){
            return;
          }
          this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
            .then(() => {
              // åªæ”¯æŒæ¯æ¬¡å•条记录删除
              let oid = this.selectionList[0].oid;
              let ts = new Date(this.selectionList[0].ts).getTime();
              return remove({oid: oid,ts: ts});
            })
            .then(() => {
              this.onLoad(this.page);
              this.$message({
                type: "success",
                message: "操作成功!"
              });
              this.$refs.crud.toggleSelection();
            });
        },
        // æ‰“开修改
        beforeOpen(done, type) {
          if (["edit", "view"].includes(type)) {
            getDetail(this.ruleForm.oid).then(res => {
              this.ruleForm = res.data.data;
            });
          }
          done();
        },
        searchReset() {
          this.query = {};
          this.onLoad(this.page);
        },
        searchChange(params, done) {
          this.query = params;
          this.page.currentPage = 1;
          this.onLoad(this.page, params);
          done();
        },
        // ç¼–码规则当前选中行变化的时候触发
        selectionChange(list) {
          this.selectionList = list;
          //console.log("selectionChange====="+list);
          this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
          if(this.selectionList.length > 0){
            this.currentCodeRuleOid = this.selectionList[list.length-1].oid;
            this.currentRuleLcStatus = this.selectionList[list.length-1].lcStatus;
            //console.log(this.currentRuleLcStatus);
            this.loadBasic(this.selectionList[list.length-1]);
          }
        },
        selectionClear() {
          this.selectionList = [];
          this.$refs.crud.toggleSelection();
        },
        currentChange(currentPage){
          this.page.currentPage = currentPage;
        },
        sizeChange(pageSize){
          this.page.pageSize = pageSize;
        },
        refreshChange() {
          this.onLoad(this.page, this.query);
        },
        onLoad(page, params = {}) {
          this.loading = true;
          gridCodeRule(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
            //console.log(res.data);
            const data = res.data.data;
            this.page.total = data.total;
            this.data = data.records;
            this.loading = false;
            this.loadBasic(this.data[0])
            this.$nextTick(() => {
              //this.$refs.crud.toggleRowSelection(this.data[0]);
              this.$refs.crud.setCurrentRow(this.data[0]);
            })
            this.selectionList = data.records[0];
            //this.selectionClear();
          });
        },
        /** ç¬¬ä¸€å±‚对话框相关方法 */
        // æ‰“开二层弹窗方法
        openAttrSelectOrGetValue(condition){
          if(condition === 'attr'){
            this.isShowSelectAttrOption = true;
          }else if(condition === 'value'){
            //打开公式编辑框,第二层嵌套对话框
            this.$refs.formulaEditor.isShowformulaEdit = true;
          }else if(condition === 'parentClassifySecOid'){
            this.isShowParentClassifyOption = true;
          }else if(condition === 'referBtmId'){
            this.isShowSelectReferBtmOption = true;
          }else if(condition === 'referConfig'){
            //this.$emit('openSelectreferConfig')
          }
        },
        // ç‚¹å‡»è¾“入框的×号,清空输入框中的内容
        clearAttrDataByIcon(condition){
          if(condition === 'attr'){
            this.form.referAttributeName = '';
            this.form.referAttributeId = '';
            this.form.referCodeClassifyOid = '';
            this.form.referCodeClassifyOidName = '';
          }else if(condition === 'value'){
            this.form.getValueClass = '';
          }else if(condition === 'parentClassifySecOid'){
            this.form.parentClassifySecOid = '';
          }else if(condition === 'referBtmId'){
            this.form.referBtmId = '';
          }else if(condition === 'referConfig'){
            this.form.referBtmId = '';
          }
        },
        // è¡¥ä½æ—¶çš„字符,实现可输可选
        inputSelectBlur(e){
          if (e.target.value) {
            this.form.codeFillSeparatorSelect = e.target.value;
          }
        },
        // ç æ®µç±»åž‹æ”¹å˜æ—¶ï¼Œå¢žåŠ å¯¹åº”çš„form表单中的属性
        changeSectypeFormItems(row){
          //console.log(row);
          if(this.sectypeList.length==0){
            this.loadCodeSecType();
          }
          if(row != null){
            this.form = {
              oid: row.oid,
              id: row.id, //编号,
              name: row.name,//名称
              secType: row.secType,//码段类型
              description: row.description,//描述
              serialDependFlag: row.serialDependFlag=='true' ?  true:false,//是否流水依赖
              serialDependOrder: row.serialDependOrder,//流水依赖顺序
              nullableFlag: row.nullableFlag=='true' ?  true:false,//是否为空
              displayFlag: row.displayFlag=='true' ?  true:false,
              componentCodeFlag: row.componentCodeFlag=='true' ?  true:false,//是否参与编码
              pkCodeRule: row.pkCodeRule, //所属编码规则
            }
          }else {
            this.form = {
              id: this.form.id, //编号
              name: this.form.name, //名称
              secType: this.form.secType, //码段类型
              description: this.form.description, //描述
              serialDependFlag:  this.form.serialDependFlag, //是否流水依赖
              serialDependOrder: this.form.serialDependOrder, //流水依赖顺序
              nullableFlag:  this.form.nullableFlag, //是否为空
              displayFlag:  this.form.displayFlag, //
              componentCodeFlag:  this.form.componentCodeFlag, //是否参与编码
              pkCodeRule: this.form.pkCodeRule, //所属编码规则
            };
            //console.log(this.form);
          }
          if(this.form.secType==='codefixedsec'){
            //固定码段
            this.form = Object.assign({}, this.form,{
              codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'',
              codeSecLengthType: row!=null&&row.codeSecLengthType != '' ? row.codeSecLengthType:'code_sec_length_variable'
            });
            this.loadCodeSecLength();
          }else if(this.form.secType==='codeattrsec'){
            //属性码段
            this.form = Object.assign({}, this.form, {
              referCodeClassifyOid: row!=null&&row.referCodeClassifyOid != '' ? row.referCodeClassifyOid:'',     //属性id
              referCodeClassifyOidName: row!=null&&row.referCodeClassifyOidName != '' ? row.referCodeClassifyOidName:'', //属性所在分类
              referAttributeId: row!=null&&row.referAttributeId != '' ? row.referAttributeId:'',    //属性编号
              referAttributeName: row!=null&&row.referAttributeName != '' ? row.referAttributeName:'',   //属性
              getValueClass: row!=null&&row.getValueClass != '' ? row.getValueClass:''         //取值规则
            });
          }else if(this.form.secType==='codeserialsec'){
            //流水码段
            this.form = Object.assign({}, this.form,{
              codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'', //码段的长度
              serialStart: row!=null&&row.serialStart != '' ? row.serialStart:1,  //流水号起始值
              serialStep: row!=null&&row.serialStep != '' ? row.serialStep:1,   //流水的步长
              codeFillType: row!=null&&row.codeFillType != '' ? row.codeFillType:'code_fill_right', //编码补位方式
              codeFillSeparatorSelect: row!=null&&row.codeFillSeparatorSelect != '' ? row.codeFillSeparatorSelect:0,    //补位时的字符,选中的下拉框的下标
              codeFillSeparator: row!=null&&row.codeFillSeparator != '' ? row.codeFillSeparator:0,          //补位时的字符
              codeFillLength: row!=null&&row.codeFillLength != '' ? row.codeFillLength:'',              //填充长度
              codeFillLimit: row!=null&&row.codeFillLimit != '' ? row.codeFillLimit:'',               //流水上限
              codeFillFlag: row!=null&&row.codeFillFlag != '' ? row.codeFillFlag=='true' ?  true:false :false,      //流水是否补码
              customCodeSerialClass: row!=null&&row.customCodeSerialClass != '' ? row.customCodeSerialClass:'',     //自定义流水算法
            });
            this.loadCodeFillType();
            this.loadCodeFillSeparator();
          }else if(this.form.secType==='codelevelsec'){
            //层级码段
            this.form = Object.assign({}, this.form,{
              codeLevelType: row!=null&&row.codeLevelType != '' ? row.codeLevelType:'code_level_min',     //层级类型  æžšä¸¾æŸ¥è¯¢
              codeLevelValue: row!=null&&row.codeLevelValue != '' ? row.codeLevelValue:'',    //层级的值
              valueCutType: row!=null&&row.valueCutType != '' ? row.valueCutType:'code_cut_none',      //字符截取类型 æžšä¸¾æŸ¥è¯¢
              valueCutLength: row!=null&&row.valueCutLength != '' ? row.valueCutLength:'',    //
              codeGetValueType: row!=null&&row.codeGetValueType != '' ? row.codeGetValueType:'code_get_value_all_up',  //取值类型 æžšä¸¾æŸ¥è¯¢
            });
            this.loadCodeLevelType();
            this.loadCodeCutType();
            this.loadCodeGetValueType();
          }else if(this.form.secType==='coderefersec'){
            //引用码段
            this.form = Object.assign({}, this.form,{
              referBtmId: row!=null&&row.referBtmId != '' ? row.referBtmId:'',   //参照引用的业务类型,的id
              referBtmName: row!=null&&row.referBtmName != '' ? row.referBtmName:'', //参照引用的业务类型
              referConfig: row!=null&&row.referConfig != '' ? row.referConfig:'',  //参照配置
            });
          }else if(this.form.secType==='codedatesec'){
            //日期码段
            this.form = Object.assign({}, this.form,{
              codeDateFormatStr:  row!=null&&row.codeDateFormatStr != '' ? row.codeDateFormatStr:'',   //日期格式
            });
          }else if(this.form.secType==='codeclassifysec'){
            //console.log(this.form);
            //分类码段
            this.form = Object.assign({}, this.form,{
              codeSecLengthType: row!=null&&row.codeSecLengthType != '' ? row.codeSecLengthType:'code_sec_length_variable',    //码段长度类型
              codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'',  //码段的长度
              matchClassifyValueFlag: row!=null&&row.matchClassifyValueFlag != '' ? row.matchClassifyValueFlag=='true' ?  true:false :false,  //是否自动匹配值
              parentClassifySecOid: row!=null&&row.parentClassifySecOid != '' ? row.parentClassifySecOid:'',    //父分类码段选中的id
              parentClassifySecText: row!=null&&row.parentClassifySecText != '' ? row.parentClassifySecText:'',  //父分类码段
            });
            this.loadCodeSecLength();
          }else if(this.form.secType==='codevariablesec'){
            //可变码段
            this.form = Object.assign({}, this.form,{
              codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'',             //码段的长度
              codeFillType: row!=null&&row.codeFillType != '' ? row.codeFillType:'code_fill_right', //编码部位方式,枚举查询
              codeFillSeparatorSelect: row!=null&&row.codeFillSeparatorSelect != '' ? row.codeFillSeparatorSelect:0,  //选中的补位时的字符的下标
              codeFillSeparator: row!=null&&row.codeFillSeparator != '' ? row.codeFillSeparator:'', //补位时的字符,可输可选查询
            });
            this.loadCodeFillType();
            this.loadCodeFillSeparator();
          }
          // console.log(this.form);
        },
        //枚举和可输可选内容查询
        loadCodeSecType(){
          getDictionary({code: "codeBasicSecType"}).then(res=>{
            this.sectypeList = res.data.data;
          })
          this.loadCodeSecLength();
          //console.log(this.sectypeList);
        },
        loadCodeSecLength(){
          getDictionary({code: "codeSecLength"}).then(res=>{
            this.codeSecLengthType = res.data.data;
          })
        },
        loadCodeFillType(){
          getDictionary({code: "codeFillType"}).then(res=>{
            this.codeFillType = res.data.data;
          })
        },
        loadCodeFillSeparator(){
          getDictionary({code: "codeFillSeparator"}).then(res=>{
            this.codeFillSeparator = res.data.data;
          })
        },
        loadCodeLevelType(){
          getDictionary({code: "codeLevelType"}).then(res=>{
            this.codeLevelType = res.data.data;
          })
        },
        loadCodeCutType(){
          getDictionary({code: "codeCutType"}).then(res=>{
            this.codeCutType = res.data.data;
          })
        },
        loadCodeGetValueType(){
          getDictionary({code: "codeGetValueType"}).then(res=>{
            this.codeGetValueType = res.data.data;
            //console.log(this.codeGetValueType);
          })
        },
      }
    }
};
  };
</script>
<style>
<style scope>
  .code-rule-crud > .avue-crud__search ,.code-basic-crud > .avue-crud__search {
    margin-bottom: -15px;
  }
  .code-rule-crud > .avue-crud__pagination {
    padding: 14px 0 2px 20px;
  }
  .clone-input-textarea > .el-form-item__content {
    width: 495px;
  }
  .clone-avue-crud > .el-card > .el-card__body > .avue-crud__menu {
    display: none!important;
  }
  .fixed-avue-crud > .el-card> .el-card__body > .avue-crud__menu {
    display: none!important;
  }
  .other-clone-codebasic-crud > .el-card> .el-card__body > .avue-crud__menu {
    display: none!important;
  }
  .other-clone-coderule-crud > .el-card> .el-card__body > .avue-crud__menu {
    display: none!important;
  }
  .el-table--small .el-table__cell {
    padding: 3px 0;
  }
  .classify_value_box > .el-scrollbar {
    height: 95%;
  }
  .basic-container > .el-card  > .el-card__body {
    margin: -10px 0;
  }
  .code-basicsec-container{
    padding: 1px 6px;
  }
  .el-divider--horizontal {
      margin-top: 19px !important;
      margin-bottom: -20px !important;
      height: 2px;
      margin: 0;
    margin-top: 19px !important;
    margin-bottom: -20px !important;
    height: 2px;
    margin: 0;
    position: fixed;
    width: 57.5vw;
  }
  .el-card__body > .abox {
@@ -1319,8 +2540,48 @@
    width:60px;
  }
  .formula-editor{
  .el-input-number {
    width: 120px;
  }
  .el-input-number >.el-input > .el-input__inner {
    width:120px;
  }
  .el-col>.el-card > .el-card__header {
    background: rgb(213 231 239);
    border-radius: inherit;
  }
  /** æ–°å¢žç æ®µ */
  .total{
    height: 500px;
    width: 100%;
  }
  .total .el-input__inner,.total .el-textarea__inner {
    width: 220px;
  }
  .el-divider--vertical {
    width: 2px;
    height: 72vh;
    margin: 0 5px;
    position: fixed;
  }
 .left {
    float: left;
    width: 49%;
 }
 .right {
    float: right;
    margin-right: 2.5vw;
    /* width: 40%; */
 }
 .right > .el-form > .el-form-item{
    margin-bottom: 8px;
 }
</style>
Source/UBCS-WEB/.settings/src/views/modeling/original.vue
@@ -94,7 +94,7 @@
  update, getPage
} from "@/api/omd/OmdAttribute";
import { getDictionary } from "@/api/omd/dict";
import { getDictionary } from "@/api/omd/enum";
export default {
  name: "original",
Source/UBCS-WEB/.settings/src/views/omd/dict.vue
@@ -111,7 +111,7 @@
    add,
    getDict,
    getDictTree
  } from "@/api/omd/dict";
  } from "@/api/omd/enum";
  import {optionParent, optionChild} from "@/const/omd/dict";
  import {mapGetters} from "vuex";
Source/UBCS-WEB/UBCS-WEB - ¿ì½Ý·½Ê½.lnk
Binary files differ
Source/UBCS-WEB/package-lock.json
@@ -2475,6 +2475,16 @@
      "dev": true,
      "optional": true
    },
    "bindings": {
      "version": "1.5.0",
      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
      "dev": true,
      "optional": true,
      "requires": {
        "file-uri-to-path": "1.0.0"
      }
    },
    "bluebird": {
      "version": "3.7.2",
      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@@ -5563,6 +5573,13 @@
          }
        }
      }
    },
    "file-uri-to-path": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
      "dev": true,
      "optional": true
    },
    "filesize": {
      "version": "3.6.1",
@@ -13338,6 +13355,7 @@
          "dev": true,
          "optional": true,
          "requires": {
            "bindings": "^1.5.0",
            "nan": "^2.12.1"
          }
        },
@@ -13659,6 +13677,7 @@
          "dev": true,
          "optional": true,
          "requires": {
            "bindings": "^1.5.0",
            "nan": "^2.12.1"
          }
        },
Source/UBCS-WEB/public/index.html
@@ -96,10 +96,10 @@
        åˆæ¬¡åŠ è½½èµ„æºå¯èƒ½éœ€è¦è¾ƒå¤šæ—¶é—´ è¯·è€å¿ƒç­‰å¾…
      </div>
    </div>
    <div class="avue-home__footer">
    <!-- <div class="avue-home__footer">
      <a href="https://bladex.vip" target="_blank">
        https://bladex.vip </a>
    </div>
    </div> -->
  </div>
</div>
<!-- built files will be auto injected -->
Source/UBCS-WEB/public/src/mock/menu.js
@@ -9,24 +9,24 @@
  },
  parentId: 0
},
  {
    label: "bladex官网",
    icon: 'el-icon-document',
    meta: {
      i18n: 'website',
    },
    path: "https://bladex.vip/#/",
    parentId: 1
  },
  {
    label: "avuex官网",
    icon: 'el-icon-document',
    meta: {
      i18n: 'avuexwebsite',
    },
    path: "https://avuex.avue.top",
    parentId: 2
  },
  // {
  //   label: "bladex官网",
  //   icon: 'el-icon-document',
  //   meta: {
  //     i18n: 'website',
  //   },
  //   path: "https://bladex.vip/#/",
  //   parentId: 1
  // },
  // {
  //   label: "avuex官网",
  //   icon: 'el-icon-document',
  //   meta: {
  //     i18n: 'avuexwebsite',
  //   },
  //   path: "https://avuex.avue.top",
  //   parentId: 2
  // },
  {
    label: "测试",
    icon: 'el-icon-document',
Source/UBCS-WEB/public/src/views/wel/index.vue
@@ -13,12 +13,12 @@
            <img src="https://img.shields.io/badge/JDK-1.8+-green.svg" alt="Build Status"/>
            <img src="https://img.shields.io/badge/Spring%20Cloud-2021-blue.svg" alt="Coverage Status"/>
            <img src="https://img.shields.io/badge/Spring%20Boot-2.7-blue.svg" alt="Downloads"/>
            <a target="_blank" href="https://bladex.vip">
            <!-- <a target="_blank" href="https://bladex.vip">
              <img src="https://img.shields.io/badge/Saber%20Author-Small%20Chill-ff69b4.svg" alt="Downloads"/>
            </a>
            <a target="_blank" href="https://bladex.vip">
              <img src="https://img.shields.io/badge/Copyright%20-@BladeX-%23ff3f59.svg" alt="Downloads"/>
            </a>
            </a> -->
          </p>
        </basic-container>
      </el-col>
Source/UBCS-WEB/src/api/code/codebutton.js
@@ -2,7 +2,7 @@
export const getList = (current, size, params) => {
  return request({
    url: '/api/ubcs-code/codebutton/list',
    url: '/api/ubcs-code/codeButtonController/list',
    method: 'get',
    params: {
      ...params,
@@ -14,7 +14,7 @@
export const getDetail = (id) => {
  return request({
    url: '/api/ubcs-code/codebutton/detail',
    url: '/api/ubcs-code/codeButtonController/detail',
    method: 'get',
    params: {
      id
@@ -24,7 +24,7 @@
export const remove = (ids) => {
  return request({
    url: '/api/ubcs-code/codebutton/remove',
    url: '/api/ubcs-code/codeButtonController/remove',
    method: 'post',
    params: {
      ids,
@@ -34,7 +34,7 @@
export const add = (row) => {
  return request({
    url: '/api/ubcs-code/codebutton/submit',
    url: '/api/ubcs-code/codeButtonController/submit',
    method: 'post',
    data: row
  })
@@ -42,7 +42,7 @@
export const update = (row) => {
  return request({
    url: '/api/ubcs-code/codebutton/submit',
    url: '/api/ubcs-code/codeButtonController/submit',
    method: 'post',
    data: row
  })
@@ -52,7 +52,7 @@
  debugger;
  if(flag){
    return request({
      url: '/api/ubcs-code/codebutton/enableData',
      url: '/api/ubcs-code/codeButtonController/enableData',
      method: 'post',
      params: {
        "oid":ids
@@ -60,7 +60,7 @@
    })
  }
  return request({
    url: '/api/ubcs-code/codebutton/disableData',
    url: '/api/ubcs-code/codeButtonController/disableData',
    method: 'post',
    params: {
      "oid":ids
Source/UBCS-WEB/src/api/omd/dict.js
ÎļþÒÑɾ³ý
Source/UBCS-WEB/src/api/omd/enum.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
import request from '@/router/axios';
export const getList = (current, size, params) => {
  return request({
    url: '/api/ubcs-omd/enum/list',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const getParentList = (current, size, params) => {
  return request({
    url: '/api/ubcs-omd/enum/parent-list',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const getChildList = (current, size, parentoid, params) => {
  debugger;
  return request({
    url: '/api/ubcs-omd/enumItem/listAll',
    method: 'get',
    params: {
      ...params,
      current,
      size,
      parentoid: parentoid,
    }
  })
}
export const remove = (ids) => {
  return request({
    url: '/api/ubcs-omd/enum/remove',
    method: 'post',
    params: {
      ids,
    }
  })
}
export const removeChild = (ids) => {
  return request({
    url: '/api/ubcs-omd/enumItem/remove',
    method: 'post',
    params: {
      ids,
    }
  })
}
export const add = (row) => {
  return request({
    url: '/api/ubcs-omd/enum/submit',
    method: 'post',
    data: row
  })
}
export const addChild = (row) => {
  return request({
    url: '/api/ubcs-omd/enumItem/submit',
    method: 'post',
    data: row
  })
}
export const update = (row) => {
  debugger;
  return request({
    url: '/api/ubcs-omd/enum/submit',
    method: 'post',
    data: row
  })
}
export const updateChild = (row) => {
  return request({
    url: '/api/ubcs-omd/enumItem/submit',
    method: 'post',
    data: row
  })
}
export const getDict = (oid) => {
  return request({
    url: '/api/ubcs-omd/enum/detail',
    method: 'get',
    params: {
      oid,
    }
  })
}
export const getDictChild = (oid) => {
  return request({
    url: '/api/ubcs-omd/enumItem/detail',
    method: 'get',
    params: {
      oid,
    }
  })
}
export const getDictTree  = (current, size, params) => {
  return request({
    url: '/api/ubcs-omd/enum/tree',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const getDictionary = (params) => {
  return request({
    url: '/api/ubcs-omd/enum/dictionary',
    method: 'get',
    params,
  })
}
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue
@@ -45,168 +45,168 @@
        <!-- å³ä¾§è¿ç®—符 -->
        <el-col :span="10">
          <el-card
            class="box-card"
            style="height: 33vh;">
            class="box-card formula-box-card"
            style="height: 35vh;">
            <div slot="header" class="clearfix">
              <span style="font-size: medium">运算符</span>
            </div>
            <div class="text item">
            <div class="formula-editor-total">
              <div class="formula-editor">
                <div class="one">
                  <button
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '7' })"
                  >
                    7
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '8' })"
                  >
                    8
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '9' })"
                  >
                    9
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '/' })"
                  >
                    /</button
                  ><br />
                    /</el-button>
                  <br />
                </div>
                <div class="one">
                  <button
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '4' })"
                  >
                    4
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '5' })"
                  >
                    5
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '6' })"
                  >
                    6
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '*' })"
                  >
                    *</button
                  ><br />
                    *</el-button>
                  <br />
                </div>
                <div class="one">
                  <button
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '1' })"
                  >
                    1
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '2' })"
                  >
                    2
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '3' })"
                  >
                    3
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '>' })"
                  >
                    -</button
                  ><br />
                    -</el-button>
                  <br />
                </div>
                <div class="one">
                  <button
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '0' })"
                  >
                    0
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '00' })"
                  >
                    00
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '.' })"
                  >
                    .
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '+' })"
                  >
                    +</button
                  ><br />
                    +</el-button>
                  <br/>
                </div>
                <div class="one">
                  <button
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '->' })"
                  >
                    ->
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '==' })"
                  >
                    ==
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '(' })"
                  >
                    (
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: ')' })"
                  >
                    )</button
                  ><br />
                    )</el-button>
                  <br />
                </div>
                <div class="one">
                  <button
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '<' })"
                  >
                    &lt;
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '>' })"
                  >
                    &gt;
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '<=' })"
                  >
                    &lt;=
                  </button>
                  <button
                  </el-button>
                  <el-button type="primary"
                    class="formula-editor-btn-sm"
                    @click="dbClickAddContent({ formula: '>=' })"
                  >
                    &gt;=
                  </button>
                  </el-button>
                </div>
              </div>
            </div>
@@ -669,16 +669,27 @@
};
</script>
  
<style scoped>
<style>
  .formula-box-card > .el-card__body {
    padding: 0px;
    height: 85%;
    width: 100%;
  }
  .formula-editor-total {
    /* margin-top: 3px; */
    height: 100%;
    width: 100%;
  }
  .formula-editor{
    margin-top: -15px;
    margin-left: 4vw;
    /*设置弹性盒子*/
    display: flex;
    /*子元素以竖列排列,一共有6列*/
    flex-direction:column;
    width: 310px;
    height: 185px;
    width: 100%;
    height: 100%;
    /*左右均匀排列*/
    justify-content: space-around;
    /*上下均匀排列*/
@@ -689,17 +700,22 @@
    display: flex;
    /*以行排列*/
    flex-direction: row;
    width: 223px;
    height: 80px;
    width: auto;
    height: auto;
    justify-content: space-between;
    align-items: center;
    }    
  .formula-editor-btn-sm {
    width: 55px;
    height: 29px;
    background: rgb(153, 214, 240);
    border-radius: 10%;
    width: 4.5vw;
    height: 4vh;
    margin-left: 10px;
    text-align: center;
    line-height: 0;
    /* background: rgb(153, 214, 240); */
    background: #87c2fc;
    /* border-radius: 10%; */
  }
</style>
  
Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,618 @@
<template>
    <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框弹窗 -->
    <el-dialog
      title="参照配置"
      append-to-body
      :visible.sync="isShowReferConfig"
      width="90%"
      @close="recoveryDataAndForm('initData')"
      style="height: 110vh; margin-top: -13vh; overflow-y: hidden">
        <div style="width: 100%; overflow-y: auto; height: 70vh">
            <el-row>
                <avue-form :option="formOption" v-model="form"></avue-form>
            </el-row>
            <el-row v-show="form.referWindowType==0 || form.referWindowType==3">
                <avue-crud
                    ref="crudAttr"
                    :option="attrOption"
                    :data="attrData">
                    <!-- è¡¨æ ¼å†…操作按钮 -->
                    <template slot="menu" slot-scope="scope">
                        <el-button type="text"
                            size="small"
                            icon="el-icon-search"
                            plain
                            @click="scope.row.isquery=!scope.row.isquery">
                            {{scope.row.isquery ? "快速查询":"取消快速查询"}}
                        </el-button>
                        <el-button type="text"
                            size="small"
                            icon="el-icon-minus"
                            plain
                            @click="removeCurrentRow(scope.row,'removeAttr')">移除
                        </el-button>
                    </template>
                    <!-- è¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
                    <template slot="menuLeft" slot-scope="scope">
                        <el-button type="primary"
                            size="small"
                            icon="el-icon-plus"
                            @click="openAddSearchOrAttrDialog('selectAttr')">选择属性
                        </el-button>
                    </template>
                </avue-crud>
            </el-row>
            <el-row>
                <avue-crud
                    ref="crudAddCondition"
                    :option="addSearchCondtionOption"
                    :data="addSearchCondtionData">
                    <!-- è¡¨æ ¼å†…操作按钮 -->
                    <template slot="menu" slot-scope="scope">
                        <el-button type="text"
                            size="small"
                            icon="el-icon-minus"
                            plain
                            @click="removeCurrentRow(scope.row,'removeaddSearchCondtion')">移除
                        </el-button>
                    </template>
                    <!-- è¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
                    <template slot="menuLeft" slot-scope="scope">
                        <el-button type="primary"
                            size="small"
                            icon="el-icon-plus"
                            @click="openAddSearchOrAttrDialog('addSearchCondition')">
                            æ·»åŠ æŸ¥è¯¢æ¡ä»¶
                        </el-button>
                    </template>
                </avue-crud>
            </el-row>
        </div>
        <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="selectedListReferConfig">ç¡® å®š</el-button>
            <el-button @click="recoveryDataAndForm('initForm')">清空内容</el-button>
            <el-button @click="isShowReferConfig = false">取 æ¶ˆ</el-button>
        </div>
    </el-dialog>
</template>
<script>
    export default {
        name: "referConfigDialog",
        props: {
            //本场景变量
            thisSceneTableData: {
            type: Array,
            },
        },
        data() {
            return {
                labelWidth: '150',   // æ ‡é¢˜å®½åº¦
                isShowReferConfig: false,  // å¯¹è¯æ¡†æ˜¾ç¤ºéšè—æŽ§åˆ¶
                // è¡¨å•对象
                form: {
                    text: '',
                    text1: '',
                    text2: '',
                    referWindowType: 0, //参照窗口类型
                },
                attrData: [
                    {
                        field: 'id',
                        title: '编号',
                        fieldType: 'text',
                        fieldTypeText: '文本框',
                        sort: "true",
                        sortField: 'id',
                        width: '150',
                        isquery: true,
                    },{
                        field: 'name',
                        title: '名称',
                        fieldType: 'text',
                        fieldTypeText: '文本框',
                        sort: "true",
                        sortField: 'name',
                        width: '180',
                        isquery: true,
                    }
                ],
                attrOption: {
                    height:'150',
                    tip: false,
                    addBtn: false,
                    editBtn: false,
                    searchShow: false,
                    searchMenuSpan: 6,
                    border: false,
                    index: true,
                    viewBtn: false,
                    delBtn: false,
                    selection: false,
                    disablePage: false,
                    refreshBtn: false,
                    columnBtn: false,
                    dialogClickModal: false,
                    highlightCurrentRow: true,
                    column: [
                        {
                            label: "列字段(*)",
                            prop: "field",
                        },{
                            label: "列名(*)",
                            prop: "title",
                        },{
                            label: "字段类型(*)",
                            prop: "fieldTypeText",
                        },{
                            label: "列表可排序",
                            prop: "sort",
                        },{
                            label: "排序字段",
                            prop: "sortField",
                        },{
                            label: "字段宽度",
                            prop: "width",
                        },{
                            label: "列固定位置",
                            prop: "fixedText",
                        },{
                            label: "js显示代码",
                            prop: "templet",
                        },
                    ]
                },
                addSearchCondtionData: [
                        {
                            id: 'test',
                            cate: 'test',
                            value: 1
                        },{
                            id: 'test1',
                            cate: 'test1',
                            value: 2
                        },{
                            id: 'test2',
                            cate: 'test2',
                            value: 3
                        },{
                            id: 'test4',
                            cate: 'test4',
                            value: 4
                        }
                ],
                addSearchCondtionOption: {
                    height:'150',
                    tip: false,
                    addBtn: false,
                    editBtn: false,
                    searchShow: false,
                    searchMenuSpan: 6,
                    border: false,
                    index: true,
                    viewBtn: false,
                    delBtn: false,
                    selection: false,
                    disablePage: false,
                    refreshBtn: false,
                    columnBtn: false,
                    dialogClickModal: false,
                    highlightCurrentRow: true,
                    column: [
                        {
                            label: "筛选字段",
                            prop: "id",
                        },{
                            label: "筛选类型",
                            prop: "cate",
                        },{
                            label: "筛选值",
                            prop: "value",
                        }
                    ]
                }
            };
        },
        // è¡¨å•界面显示内容配置
        computed: {
            formOption() {
                return {
                    submitBtn: false,
                    emptyBtn: false,
                    labelWidth: '145', //默认标签宽度
                    // åŸºç¡€è¡¨å•信息展示区域
                    column: [
                        {
                            label: '参照的业务类型',
                            prop: 'text1',
                            span: 7,
                            type: 'table',
                            children: {
                                border: true,
                                column: [{
                                    label: '业务类型编号',
                                    width: 120,
                                    search: true,
                                    searchSpan: 8,
                                    searchLabelWidth: 100,
                                    prop: 'id'
                                },{
                                    label: '业务类型名称',
                                    search: true,
                                    searchSpan: 8,
                                    searchLabelWidth: 100,
                                    prop: 'name'
                                },{
                                    label: '描述',
                                    search: false,
                                    prop: 'description'
                                }],
                            },
                            rules: [{
                                required: true,
                                message: "(参照的业务类型)必填项不能为空",
                                trigger: "blur",
                            }],
                        },{
                            label: '显示的属性',
                            prop: 'text2',
                            tip: '选择数据后,显示到字段上的信息所属的属性,一般都是name,如果是多个属性使用逗号分割,如id,name',
                            tipPlacement: 'right',
                            span: 7,
                            rules: [{
                                required: true,
                                message: "(显示的属性)必填项不能为空",
                                trigger: "blur",
                            }],
                        },{
                            label: '存储值的属性',
                            prop: 'text2',
                            tip: '选择数据后,保存到数据库里的属性,一般都是oid或者id,如果是多个属性使用逗号分割,如oid ,id',
                            tipPlacement: 'right',
                            span: 7,
                            rules: [{
                                required: true,
                                message: "(存储值的属性)必填项不能为空",
                                trigger: "blur",
                            }],
                        },{
                            label: '参照窗口类型',
                            prop: 'referWindowType',
                            //tip: '我是一个左边提示语',
                            //tipPlacement: 'left',
                            span: 7,
                            type: 'select',
                            dicData: [{
                                label: '默认样式',
                                value: 0
                            }, {
                                label: '平台配置',
                                value: 1
                            }, {
                                label: '树形',
                                value: 2
                            }, {
                                label: '列表',
                                value: 3
                            }, {
                                label: '部门树',
                                value: 4
                            }, {
                                label: '部门列表',
                                value: 5
                            }, {
                                label: '用户',
                                value: 6
                            }, {
                                label: '用户列表',
                                value: 7
                            }, {
                                label: '角色列表',
                                value: 8
                            }, {
                                label: '职务',
                                value: 9
                            }, {
                                label: '工种',
                                value: 10
                            }, {
                                label: '流程模板',
                                value: 11
                            }],
                            rules: [{
                                required: true,
                                message: "(参照窗口类型)必填项不能为空",
                                trigger: "blur",
                            }],
                        },{
                            label: '自定义的后台路径',
                            prop: 'text2',
                            tip: '通常为空;如果是列表,后台必须返回DataGrid,如果是树,后台必须返回List',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '服务的地址',
                            prop: 'text2',
                            tip: '通常为空,在支持微服务或者分布式部署的时候才配置',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '请求后台的协议方式',
                            prop: 'text2',
                            //tip: '',
                            //tipPlacement: 'right',
                            span: 7,
                            type: 'select',
                        },{
                            label: '窗口显示的高度',
                            prop: 'text2',
                            tip: '默认空着,设置后表示强制显示这样的高度',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '过滤(级联)属性',
                            prop: 'text2',
                            tip: '获取表单上的其他属性的属性的值来过滤,或者使用某个属性来级联选择',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '过滤属性请求参数',
                            prop: 'text2',
                            tip: '使用过滤属性时,发送给后台的请求参数',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '是否多选',
                            type: 'switch',
                            prop: 'text2',
                            //tip: '',
                            //tipPlacement: 'right',
                            span: 7,
                            row: true,
                        },{
                            label: '映射其他属性',
                            prop: 'text2',
                            tip: '选择数据后,将选择的数据拷贝到表单里的其他属性,书写格式为{当前表单上的属性:选择数据里的属性,XXXXx:yyyy}',
                            tipPlacement: 'right',
                            span: 18,
                        }
                    ],
                    // å˜åŠ¨çš„è¡¨å•åŒºåŸŸ
                    group: [
                        {
                            display: this.form.referWindowType==0||this.form.referWindowType==3,
                            icon: 'el-icon-info',
                            label: this.form.referWindowType==0 ? '默认参照的配置(下方列表)':'列表参照的配置(下方列表)',
                            collapse: true,
                            prop: 'group1',
                            column: [
                                {
                                    label: '每页显示条数',
                                    prop: 'text1',
                                    span: 7,
                                    tip: '分页时每页显示的数量,不分页填-1',
                                    tipPlacement: 'right',
                                },{
                                    label: '排序字段',
                                    prop: 'text1',
                                    span: 7,
                                    type: 'table',
                                    children: {
                                        border: true,
                                        column: [{
                                            label: '属性英文编号',
                                            width: 120,
                                            search: true,
                                            searchSpan: 8,
                                            searchLabelWidth: 100,
                                            prop: 'id'
                                        },{
                                            label: '属性中文名称',
                                            search: true,
                                            searchSpan: 8,
                                            searchLabelWidth: 100,
                                            prop: 'name'
                                        },{
                                            label: '属性长度',
                                            search: false,
                                            prop: 'attrLength'
                                        },{
                                            label: '属性类型',
                                            search: false,
                                            prop: 'attrType'
                                        }],
                                    },
                                },{
                                    label: '排序类型',
                                    prop: 'text1',
                                    span: 7,
                                    type: 'select',
                                    tip: '查询数据时的排序类型',
                                    tipPlacement: 'right',
                                }
                            ]
                        },
                        {
                            display: this.form.referWindowType==1,
                            icon: 'el-icon-info',
                            label: 'stand(平台配置)参照',
                            collapse: true,
                            prop: 'group2',
                            column: [
                                {
                                    label: '参考的UI上下文',
                                    prop: 'text1',
                                    span: 7,
                                    tip: '只有参照窗口类型是stand时才必须设置,且在stand类型下才能生效',
                                    tipPlacement: 'right',
                                },
                                {
                                    label: '平台的表格编号',
                                    prop: 'text1',
                                    span: 7,
                                    tip: '与参照的UI上下文互斥,只有参照窗口类型是stand时才必须设置,且在stand类型下才能生效',
                                    tipPlacement: 'right',
                                    type: 'table',
                                    children: {
                                        border: true,
                                        column: [{
                                            label: '属性英文编号',
                                            width: 120,
                                            search: true,
                                            searchSpan: 8,
                                            searchLabelWidth: 100,
                                            prop: 'id'
                                        },{
                                            label: '属性中文名称',
                                            search: true,
                                            searchSpan: 8,
                                            searchLabelWidth: 100,
                                            prop: 'name'
                                        },{
                                            label: '属性长度',
                                            search: false,
                                            prop: 'attrLength'
                                        },{
                                            label: '属性类型',
                                            search: false,
                                            prop: 'attrType'
                                        }],
                                    },
                                },
                            ]
                        },
                        {
                            display: this.form.referWindowType==2,
                            icon: 'el-icon-info',
                            label: '树形参照信息',
                            collapse: true,
                            prop: 'group3',
                            labelWidth: '158',
                            column: [
                                {
                                    label: '树形的上级树形',
                                    prop: 'text1',
                                    span: 7,
                                    tip: '树形展示的时候,上下级关系查找的属性。',
                                    tipPlacement: 'right',
                                },{
                                    label: '上级属性值对应属性',
                                    prop: 'text1',
                                    span: 7,
                                    tip: '上级属性存储的值,是上级数据的什么属性。一般都是oid。',
                                    tipPlacement: 'right',
                                },{
                                    label: '根节点的值',
                                    prop: 'text1',
                                    span: 7,
                                    tip: '树形展示的时候,上级的值。',
                                    tipPlacement: 'right',
                                },{
                                    label: '树加载方式',
                                    prop: 'text1',
                                    span: 7,
                                    type: 'select',
                                },{
                                    label: '是否只能选择叶子节点',
                                    prop: 'text1',
                                    span: 7,
                                    type: 'switch',
                                },{
                                    label: '排序字段',
                                    prop: 'text1',
                                    span: 7,
                                    type: 'table',
                                    children: {
                                        border: true,
                                        column: [{
                                            label: '属性英文编号',
                                            width: 120,
                                            search: true,
                                            searchSpan: 8,
                                            searchLabelWidth: 100,
                                            prop: 'id'
                                        },{
                                            label: '属性中文名称',
                                            search: true,
                                            searchSpan: 8,
                                            searchLabelWidth: 100,
                                            prop: 'name'
                                        },{
                                            label: '属性长度',
                                            search: false,
                                            prop: 'attrLength'
                                        },{
                                            label: '属性类型',
                                            search: false,
                                            prop: 'attrType'
                                        }],
                                    },
                                },{
                                    label: '排序类型',
                                    prop: 'text1',
                                    span: 7,
                                    type: 'select',
                                },
                            ]
                        },
                    ]
                }
            },
        },
        methods: {
            // é€‰æ‹©å®Œå‚照配置之后点击保存按钮触发
            selectedListReferConfig(){
                console.log(this.option);
                console.log(this.form.referWindowType);
            },
            /** å…¶å®žé€‰å–属性表格的默认数据不需要加载,
             ä½†æ˜¯å¼¹çª—打开会有表格错行问题所以需要在这调用doLayout方法*/
            onloadAttrData(){
                this.$nextTick(() => {
                    this.$refs.crudAttr.doLayout()
                })
            },
            // å±žæ€§é€‰æ‹©è¡¨æ ¼ä¸­çš„移除按钮功能
            removeCurrentRow(row,condition){
                if(condition=='removeAttr'){
                    this.$delete(this.attrData, row.$index);
                    return;
                }
                this.$delete(this.addSearchCondtionData, row.$index);
            },
            // è¯¥ç•Œé¢çš„æ•°æ®è¿›è¡Œåˆå§‹åŒ–复原
            recoveryDataAndForm(condition){
                if(condition=='initForm'){
                    this.form = this.$options.data().form;
                    return;
                }
                Object.assign(this.$data,this.$options.data());
            },
            // æ‰“开添加查询条件对话框
            openAddSearchOrAttrDialog(condition){
                if(condition=='addSearchCondition'){
                    console.log('this is open addSearchCondition');
                }else {
                    console.log('this is open selectAttr');
                }
            }
        }
    };
</script>
<style>
    /* æç¤ºæ–‡æœ¬å‡ºçŽ°çš„é€Ÿåº¦ */
    .el-tooltip__popper{
        width: 200px !important;
        transition-duration: 0.2s !important;
        transition-delay: 0.1s !important;
    }
    /* æç¤ºæ–‡æœ¬æ¶ˆå¤±æ—¶çš„速度 */
    .fel-fade-in-linear-leave-active,.el-fade-in-linear-leave-to{
        -webkit-transition:opacity .0s !important;
        transition:opacity .0s !important;
    }
</style>
Source/UBCS-WEB/src/const/code/codeSynonym.js
@@ -10,6 +10,7 @@
  viewBtn: true,
  selection: true,
  dialogClickModal: false,
  highlightCurrentRow: true, //行选中时高亮
  column: [
    {
      label: "",
Source/UBCS-WEB/src/const/code/codebasic.js
@@ -13,6 +13,9 @@
    selection: true,
    menuWidth:260,
    dialogClickModal: false,
    refreshBtn: true,
    columnBtn: true,
    searchShowBtn: false,
    highlightCurrentRow: true, //行选中时高亮
    column: [
      {
@@ -20,14 +23,14 @@
        prop: "id",
        search: true,
        searchLabelWidth: 80,
        searchSpan: 5,
        searchSpan: 6,
      },
      {
        label: "码段名称",
        prop: "name",
        search: true,
        searchLabelWidth: 80,
        searchSpan: 5,
        searchSpan: 6,
      },
      {
        label: "码段描述",
Source/UBCS-WEB/src/const/code/codebutton.js
@@ -11,6 +11,7 @@
  viewBtn: true,
  selection: true,
  dialogClickModal: false,
  highlightCurrentRow: true, //行选中时高亮
  column: [
    {
      label: "",
Source/UBCS-WEB/src/const/code/mdmrule.js
@@ -57,6 +57,13 @@
      search: true,
      searchLabelWidth: 45,
      searchSpan: 5,
      type: 'select',
      //由于这个接口还在调试所以要等调好了才能调用
      dicUrl: "/api/ubcs-omd/enum/dictionary?code=codeSearchLCStatus",
      props: {
        label: "itemName",
        value: "itemValue"
      },
      display: false,
    },
  ]
Source/UBCS-WEB/src/const/code/selectattroption.js
@@ -13,7 +13,7 @@
    selection: true,
    menu: false,
    dialogClickModal: false,
    highlightCurrentRow: true, //行选中时高亮
    column: [
      {
        label: "属性英文名称",
Source/UBCS-WEB/src/const/omd/enum.js
ÎļþÃû´Ó Source/UBCS-WEB/src/const/omd/dict.js ÐÞ¸Ä
@@ -14,7 +14,7 @@
  column: [
    {
      label: "代号",
      prop: "code",
      prop: "name",
      search: true,
      slot: true,
      span: 24,
@@ -28,7 +28,7 @@
    },
    {
      label: "名称",
      prop: "dictValue",
      prop: "label",
      search: true,
      align: "center",
      rules: [
@@ -39,21 +39,21 @@
        }
      ]
    },
    {
      label: "枚举排序",
      prop: "sort",
      type: "number",
      align: "right",
      width: 100,
      hide: true,
      rules: [
        {
          required: true,
          message: "请输入枚举排序",
          trigger: "blur"
        }
      ]
    },
    // {
    //   label: "枚举排序",
    //   prop: "sort",
    //   type: "number",
    //   align: "right",
    //   width: 100,
    //   hide: true,
    //   rules: [
    //     {
    //       required: true,
    //       message: "请输入枚举排序",
    //       trigger: "blur"
    //     }
    //   ]
    // },
    // {
    //   label: "封存",
    //   prop: "isSealed",
@@ -105,25 +105,25 @@
  dialogWidth: 880,
  dialogClickModal: false,
  column: [
    {
      label: "代号",
      prop: "code",
      addDisabled: true,
      editDisabled: true,
      search: true,
      span: 24,
      hide: true,
      rules: [
        {
          required: true,
          message: "请输入代号",
          trigger: "blur"
        }
      ]
    },
    // {
    //   label: "代号",
    //   prop: "value",
    //   addDisabled: true,
    //   editDisabled: true,
    //   search: true,
    //   span: 24,
    //   hide: true,
    //   rules: [
    //     {
    //       required: true,
    //       message: "请输入代号",
    //       trigger: "blur"
    //     }
    //   ]
    // },
    {
      label: "名称",
      prop: "dictValue",
      prop: "name",
      search: true,
      align: "center",
      rules: [
@@ -134,29 +134,30 @@
        }
      ]
    },
    {
      label: "上级",
      prop: "parentId",
      type: "tree",
      dicData: [],
      hide: true,
      props: {
        label: "title"
      },
      addDisabled: true,
      editDisabled: true,
      rules: [
        {
          required: false,
          message: "请选择上级",
          trigger: "click"
        }
      ]
    },
    // {
    //   label: "上级",
    //   prop: "parentoid",
    //   type: "tree",
    //   dicData: [],
    //   hide: true,
    //   props: {
    //     label: "title"
    //   },
    //   addDisabled: true,
    //   editDisabled: true,
    //   rules: [
    //     {
    //       required: false,
    //       message: "请选择上级",
    //       trigger: "click"
    //     }
    //   ]
    // },
    {
      label: "值",
      prop: "dictKey",
      prop: "value",
      width: 80,
      search: true,
      rules: [
        {
          required: true,
@@ -164,6 +165,10 @@
          trigger: "blur"
        }
      ]
    },{
      label: "描述",
      prop: "description",
      // hide: true
    },
    {
      label: "枚举排序",
@@ -205,10 +210,6 @@
    //     }
    //   ]
    // },
    {
      label: "描述",
      prop: "remark",
      // hide: true
    }
  ]
};
Source/UBCS-WEB/src/main.js
@@ -36,6 +36,8 @@
import classifyTreeform from "@/components/Tree/classifyTreeform"
import TemplatePro from "@/components/Tree/TemplatePro"
import formulaEditor from "@/components/code-dialog-page/formulaEditor"
import referConfigDialog from "@/components/code-dialog-page/referConfigDialog"
import businessAdd from "@/views/modeling/BusinessAdd"
// æ³¨å†Œå…¨å±€crud驱动
window.$crudCommon = crudCommon;
@@ -69,6 +71,8 @@
Vue.component('classifyTreeform',classifyTreeform)
Vue.component('TemplatePro',TemplatePro)
Vue.component('formulaEditor',formulaEditor)
Vue.component('referConfigDialog',referConfigDialog)
Vue.component('businessAdd',businessAdd)
// åŠ è½½ç›¸å…³url地址
Object.keys(urls).forEach(key => {
Source/UBCS-WEB/src/mock/menu.js
@@ -9,24 +9,24 @@
  },
  parentId: 0
},
  {
    label: "bladex官网",
    icon: 'el-icon-document',
    meta: {
      i18n: 'website',
    },
    path: "https://bladex.vip/#/",
    parentId: 1
  },
  {
    label: "avuex官网",
    icon: 'el-icon-document',
    meta: {
      i18n: 'avuexwebsite',
    },
    path: "https://avuex.avue.top",
    parentId: 2
  },
  // {
  //   label: "bladex官网",
  //   icon: 'el-icon-document',
  //   meta: {
  //     i18n: 'website',
  //   },
  //   path: "https://bladex.vip/#/",
  //   parentId: 1
  // },
  // {
  //   label: "avuex官网",
  //   icon: 'el-icon-document',
  //   meta: {
  //     i18n: 'avuexwebsite',
  //   },
  //   path: "https://avuex.avue.top",
  //   parentId: 2
  // },
  {
    label: "测试",
    icon: 'el-icon-document',
Source/UBCS-WEB/src/page/login/userlogin.vue
@@ -229,7 +229,7 @@
    },
    handleLogin: function () {
      this.userInfo = this.$store.state.upadatastatus
      console.log(this.userInfo)
      //console.log(this.userInfo)
      this.$refs.loginForm.validate(valid => {
        if (valid) {
          const loading = this.$loading({
Source/UBCS-WEB/src/views/authority/apiscope.vue
@@ -12,6 +12,7 @@
               @row-save="rowSave"
               @search-change="searchChange"
               @search-reset="searchReset"
               @row-click="clickRowChange"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
@@ -50,6 +51,7 @@
                   :before-open="beforeOpenScope"
                   @search-change="searchChangeScope"
                   @search-reset="searchResetScope"
                   @row-click="clickRowChangeResetScope"
                   @selection-change="selectionChangeScope"
                   @current-change="currentChangeScope"
                   @size-change="sizeChangeScope"
@@ -457,8 +459,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
@@ -615,8 +624,15 @@
        this.onLoadScope(this.pageScope, params);
        done();
      },
      clickRowChangeResetScope(row){
        this.$refs.crudScope.toggleSelection();
        this.selectionList = row;
        this.$refs.crudScope.setCurrentRow(row);
        this.$refs.crudScope.toggleRowSelection(row); //选中当前行
      },
      selectionChangeScope(list) {
        this.selectionListScope = list;
        this.$refs.crudScope.setCurrentRow(this.selectionList[list.length-1]);
      },
      currentChangeScope(currentPage) {
        this.pageScope.currentPage = currentPage;
Source/UBCS-WEB/src/views/authority/datascope.vue
@@ -13,6 +13,7 @@
               @row-save="rowSave"
               @search-change="searchChange"
               @search-reset="searchReset"
               @row-click="clickRowChange"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
@@ -51,6 +52,7 @@
                   :before-open="beforeOpenScope"
                   @search-change="searchChangeScope"
                   @search-reset="searchResetScope"
                   @row-click="clickRowChangeScope"
                   @selection-change="selectionChangeScope"
                   @current-change="currentChangeScope"
                   @size-change="sizeChangeScope"
@@ -130,6 +132,7 @@
          delBtn: false,
          menuWidth: 150,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "菜单名称",
@@ -317,6 +320,7 @@
          menuWidth: 200,
          dialogWidth: 900,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "权限名称",
@@ -535,8 +539,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
@@ -703,8 +714,15 @@
        this.onLoadScope(this.pageScope, params);
        done();
      },
      clickRowChangeScope(row){
        this.$refs.crudScope.toggleSelection();
        this.selectionList = row;
        this.$refs.crudScope.setCurrentRow(row);
        this.$refs.crudScope.toggleRowSelection(row); //选中当前行
      },
      selectionChangeScope(list) {
        this.selectionListScope = list;
        this.$refs.crudScope.setCurrentRow(this.selectionList[list.length-1]);
      },
      currentChangeScope(currentPage) {
        this.pageScope.currentPage = currentPage;
Source/UBCS-WEB/src/views/authority/role.vue
@@ -12,6 +12,7 @@
               @row-save="rowSave"
               @search-change="searchChange"
               @search-reset="searchReset"
               @row-click="clickRowChange"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
@@ -107,6 +108,7 @@
          total: 0
        },
        option: {
          height: "auto",
          tip: false,
          simplePage: true,
          searchShow: true,
@@ -118,6 +120,7 @@
          viewBtn: true,
          dialogWidth: 900,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "角色名称",
Source/UBCS-WEB/src/views/code/code.vue
@@ -184,6 +184,7 @@
            ref="crudCloneCodeBasicOther"
            :table-loading="loadingBasic"
            :data="basicData"
            @row-click="codeOtherCloneBasicRowClick"
            @selection-change="selectionOtherCloneCodeBasicChange">
          </avue-crud>
        </el-row>
@@ -202,6 +203,9 @@
        ref="crudBasic"
        :table-loading="loadingBasic"
        :data="basicData"
        @row-click="codeBasicSecRowClick"
        @search-change="basicSearchChange"
        @search-reset="basicSearchReset"
        :permission="permissionList"
        @selection-change="selectionBasicChange"
        @refresh-change="refreshChangeBasicSec">
@@ -252,15 +256,19 @@
      <!-- åŸºç¡€ç æ®µè¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
      <template slot="menuLeft" slot-scope="scope">
        <el-button type="primary"
                  size="small"
                  icon="el-icon-plus"
                  @click="addBasicCodeSec">新 å¢ž
            size="small"
            icon="el-icon-plus"
            :disabled="selectionList.length <= 0"
            @click="addBasicCodeSec">
            æ–° å¢ž
        </el-button>
        <el-button type="danger"
                  size="small"
                  icon="el-icon-delete"
                  plain
                  @click="deleteBasicCode(scope.row)">删 é™¤
            size="small"
            icon="el-icon-delete"
            :disabled="selectionList.length <= 0"
            plain
            @click="deleteBasicCode(scope.row)">
            åˆ  é™¤
        </el-button>
      </template>
@@ -360,7 +368,7 @@
            </div>
            <div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
              <el-button :disabled="selectedFixedOrCodeclassifyValue!=''" size="mini" type="primary" icon="el-icon-circle-plus" class="button" @click="addCodeSecValue('codefixedsec')">添加</el-button>
              <el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="success" plain plain icon="el-icon-edit-outline" class="button" @click="editCodeSecValue('codefixedsec')">修改</el-button>
              <el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="success" plain icon="el-icon-edit-outline" class="button" @click="editCodeSecValue('codefixedsec')">修改</el-button>
              <el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="danger" icon="el-icon-close" class="button" @click="delCodeSecValue('codefixedsec')">删除</el-button>
              <el-button size="mini" type="warning" plain icon="el-icon-close" class="button" @click = "clearFixedOrClassifyForm('codefixedsec')">取消</el-button>
            </div>
@@ -379,8 +387,8 @@
      @close="clearBasicAddForm">
      <!--  ç¬¬ä¸€å±‚对话框,添加码段信息对话框中的内容 -->
      <div class="total" style="overflow-y: auto; height: 70vh">
        <el-form :model="form">
      <div class="add-basicsec-total" style="overflow-y: auto; height: 70vh">
        <el-form :model="form" class="add-basicsec-form">
          <span class="left">
            <el-form-item label="码段编号:" :label-width="leftFormLabelWidth" required>
              <el-input v-model="form.id" :readonly="basicSecOnlyRead" ref="id"></el-input>
@@ -394,9 +402,9 @@
              <el-select v-model="form.secType" placeholder="请选择" @change="changeSectypeFormItems(null)" :disabled="basicSecOnlyRead">
                <el-option
                  v-for="item in sectypeList"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
                  :key="item.itemValue"
                  :label="item.itemName"
                  :value="item.itemValue">
                </el-option>
              </el-select>
            </el-form-item>
@@ -422,9 +430,9 @@
                <el-select v-model="form.codeSecLengthType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                  v-for="item in codeSecLengthType"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
                  :key="item.itemValue"
                  :label="item.itemName"
                  :value="item.itemValue">
                </el-option>
                </el-select>
              </el-form-item>
@@ -479,9 +487,9 @@
                <el-select v-model="form.codeFillType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option label="左补位" value="codeattrsec"
                    v-for="item in codeFillType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                    :key="item.itemValue"
                    :label="item.itemName"
                    :value="item.itemValue">
                  </el-option>
                </el-select>
              </el-form-item>
@@ -489,9 +497,9 @@
                <el-select v-model="form.codeFillSeparatorSelect" @blur="inputSelectBlur" filterable placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeFillSeparator"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                    :key="item.itemValue"
                    :label="item.itemName"
                    :value="item.itemValue">
                  </el-option>
                </el-select>
              </el-form-item>
@@ -514,9 +522,9 @@
                <el-select v-model="form.codeLevelType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeLevelType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                    :key="item.itemValue"
                    :label="item.itemName"
                    :value="item.itemValue">
                  </el-option>
                </el-select>
              </el-form-item>
@@ -527,9 +535,9 @@
                <el-select v-model="form.valueCutType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeCutType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                    :key="item.itemValue"
                    :label="item.itemName"
                    :value="item.itemValue">
                  </el-option>
                </el-select>
              </el-form-item>
@@ -537,9 +545,9 @@
                <el-select v-model="form.codeGetValueType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeGetValueType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                    :key="item.itemValue"
                    :label="item.itemName"
                    :value="item.itemValue">
                  </el-option>
                </el-select>
              </el-form-item>
@@ -583,9 +591,9 @@
                <el-select v-model="form.codeSecLengthType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeSecLengthType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                    :key="item.itemValue"
                    :label="item.itemName"
                    :value="item.itemValue">
                  </el-option>
                </el-select>
              </el-form-item>
@@ -600,7 +608,7 @@
                  placeholder="请选择"
                  prefix-icon="el-icon-search"
                  readonly="true"
                  v-model="form.parentClassifySecOid"
                  v-model="form.parentClassifySecText"
                  @focus="openAttrSelectOrGetValue('parentClassifySecOid')"
                  :disabled="basicSecOnlyRead">
                  <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('parentClassifySecOid')" style="margin-right: 5px;cursor: pointer;"></i>
@@ -616,9 +624,9 @@
                <el-select v-model="form.codeFillType" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                      v-for="item in codeFillType"
                      :key="item.dictValue"
                      :label="item.dictValue"
                      :value="item.dictKey">
                      :key="item.itemValue"
                      :label="item.itemName"
                      :value="item.itemValue">
                  </el-option>
                </el-select>
              </el-form-item>
@@ -626,9 +634,9 @@
                <el-select v-model="form.codeFillSeparatorSelect" filterable @blur="inputSelectBlur" placeholder="请选择" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in codeFillSeparator"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                    :key="item.itemValue"
                    :label="item.itemName"
                    :value="item.itemValue">
                  </el-option>
                </el-select>
              </el-form-item>
@@ -643,7 +651,7 @@
        <el-button type="primary" @click="saveOrEditBasicCode" v-show="showbtn">保 å­˜</el-button>
      </div>
      <!--  ç¬¬äºŒå±‚对话框,属性码段,属性选择弹窗 -->
      <!--  ç¬¬äºŒå±‚对话框,属性码段,属性选择对话框 -->
      <el-dialog title="为【属性】选取值"
        append-to-body
        :visible.sync="isShowSelectAttrOption"
@@ -663,7 +671,6 @@
                </el-scrollbar>
              </div>
            </el-col>
            <!-- å³ä¾§è¡¨æ ¼æ˜¾ç¤ºåŒºåŸŸ -->
            <el-col span="19">
              <basic-container>
@@ -672,17 +679,17 @@
                  :data="selectattrData"
                  :option="attrOption"
                  :table-loading="selectAttrOptionLoading"
                  ref="selectionAttrCrud"
                  @search-change="selectAttrOptionSearchChange"
                  @search-reset="searchAttrReset"
                  @row-click="selectionAttrRowClick"
                  @selection-change="selectionChangeAttr">
                </avue-crud>
                </div>
              </basic-container>
            </el-col>
          </el-row>
        </div>
        <div slot="footer" class="dialog-footer">
          <el-button @click="isShowSelectAttrOption = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="selectedListClassifyLinkAttr">ç¡® å®š</el-button>
@@ -690,21 +697,20 @@
        
      </el-dialog>
      <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框弹窗组件 -->
      <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框对话框组件 -->
      <formula-editor ref="formulaEditor" 
        @updateFormulaContent="updateFormulaContent" 
        :thisSceneTableData="thisSceneTableData"
        :systemVariableTableData="systemVariableTableData">
      </formula-editor>
      <!-- ç¬¬äºŒå±‚对话框,为【父分类码段】选取值弹窗 -->
      <!-- ç¬¬äºŒå±‚对话框,为【父分类码段】选取值对话框 -->
      <el-dialog title="为【父分类码段】选取值"
        append-to-body
        :visible.sync="isShowParentClassifyOption"
        width="65%"
        style="height: 150vh; margin-top: -13vh;"
        destroy-on-close>
        <avue-crud
          :page.sync="parentClassifyDataPage"
          ref="crudParentClassify"
@@ -714,26 +720,24 @@
          @refresh-change="refreshParentClassifyDataChange"
          @search-change="parentClassifySearchChange"
          @search-reset="parentClassifySearchReset"
          @row-click="parentClassifyRowClick"
          @selection-change="parentClassifySelectionChange"
          @current-change="parentClassifyCurrentChange"
          @size-change="parentClassifySizeChange"
          @on-load="parentClassifyOnLoad">
        </avue-crud>
        <div slot="footer" class="dialog-footer">
          <el-button @click="isShowParentClassifyOption = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="saveSelectedParentClassify">保 å­˜</el-button>
        </div>
      </el-dialog>
      <!-- ç¬¬äºŒå±‚对话框,为【参照引用的业务类型】选取值弹窗 -->
      <!-- ç¬¬äºŒå±‚对话框,为【参照引用的业务类型】选取值弹对话框 -->
      <el-dialog title="为【参照引用的业务类型】选取值"
        append-to-body
        :visible.sync="isShowSelectReferBtmOption"
        width="65%"
        style="height: 150vh; margin-top: -13vh;"
        destroy-on-close>
        style="height: 150vh; margin-top: -13vh;">
        <avue-crud
          :page.sync="referBtmDataPage"
          ref="crudReferBtm"
@@ -746,19 +750,23 @@
          @selection-change="referBtmSelectionChange"
          @current-change="referBtmCurrentChange"
          @size-change="referBtmSizeChange"
          @on-load="referBtmOnLoad">
          @row-click="referBtmRowClick">
        </avue-crud>
        <div slot="footer" class="dialog-footer">
          <el-button @click="isShowSelectReferBtmOption = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="saveSelectedreferBtm">保 å­˜</el-button>
        </div>
      </el-dialog>
      <!-- ç¬¬äºŒå±‚对话框,参照配置组件 -->
      <refer-config-dialog
        ref="referConfigDialog"
        @echoReferConfig="echoReferConfig" >
      </refer-config-dialog>
    </el-dialog>
  </basic-container>
</template>
<script>
@@ -776,7 +784,7 @@
  import { treeTopCodeClassify, listClassifyLinkAttr } from "@/api/code/codeclassify";
  import { gridCodeFixedValue,addSaveCodeFixedValue,deleteCodeFixedValue,editCodeFixedValue,saveOrder } from "@/api/code/codeFixedValue";
  import { treeCodeClassifyValue,addSaveCodeClassifyValue,editCodeClassifyValue,deleteCodeClassifyValue,saveCodeClassifyValueOrder } from "@/api/code/codeClassifyValue";
  import { getDictionary } from "@/api/omd/dict";
  import { getDictionary } from "@/api/omd/enum";
  import optionBasic from "@/const/code/codebasic";
  import cloneOption from "@/const/code/cloneOption";
  import cloneBasicOption from "@/const/code/cloneBasicDialogOption";
@@ -894,7 +902,7 @@
          },
          classisyValueTreeOption: classisyValueTreeOption, //分类码段树相关配置项
          classifyValueTreeData: [],
          currentSelectTreeData: '', //当前选中的分类码值树节点
          //currentSelectClsValueTreeData: '', //当前选中的分类码值树节点
          /* ä¸ºå±žæ€§é€‰å–值窗口显示打开控制变量 */
          isShowSelectAttrOption: false,
@@ -1107,8 +1115,17 @@
        updateFormulaContent(content){
          this.form.getValueClass = content;
        },
        /* å‚照配置,子组件填完参照配置之后内容回显时调用 */
        echoReferConfig(content){
          this.form.referConfig = content;
        },
        
        /** é€‰ä¸­å‚照引用的业务类型,第二层嵌套对话框,及其相关方法  */
        /** ä¸ºå‚照引用的业务类型选取值,第二层嵌套对话框,及其相关方法  */
        // è¡¨æ ¼æ•°æ®åˆ·æ–°æŒ‰é’®
        referBtmDataChange(){
          this.referBtmOnLoad(this.referBtmDataPage, this.referBtmQuery);
        },
        saveSelectedreferBtm(){
          if(this.referBtmSelectionList.length != 1){
            this.$message.warning("只能选择一条数据!");
@@ -1131,9 +1148,16 @@
          this.referBtmOnLoad(this.page, params);
          done();
        },
         // å•击选中表格行时触发
        referBtmRowClick(row){
          this.$refs.crudReferBtm.toggleSelection();
          this.referBtmSelectionList = row;
          this.$refs.crudReferBtm.setCurrentRow(row);
          this.$refs.crudReferBtm.toggleRowSelection(row); //选中当前行
        },
        referBtmSelectionChange(list) {
          //console.log(list);
          this.referBtmSelectionList = list;
          this.$refs.crudReferBtm.setCurrentRow(this.referBtmSelectionList[list.length-1]);
        },
        referBtmSelectionClear() {
          this.referBtmSelectionList = [];
@@ -1150,6 +1174,10 @@
        },
        //加载中参照引用的业务类型的数据
        referBtmOnLoad(page, params = {}) {
          //表格行错位问题
          this.$nextTick(() => {
            this.$refs.crudReferBtm.doLayout();
          })
          this.referBtmDialogLoading = true;
          let oid = this.selectionList.length==0 ?  this.form.pkCodeRule:this.selectionList[0].oid;
          Object.assign(params,{pkCodeRule:oid})
@@ -1170,10 +1198,10 @@
        saveSelectedParentClassify(){
          //console.log(this.parentClassifySelectionList.length);
          if(this.parentClassifySelectionList.length != 1){
            this.$message.warning("只能选择一条数据!");
            this.$message.warning("请选择一条数据!");
            return false;
          }
          //调用子组件并传递当前选中的参数值,实现回显
          //参数值,实现回显
          this.form.parentClassifySecOid = this.parentClassifySelectionList[0].oid;
          this.form.parentClassifySecText = this.parentClassifySelectionList[0].name;
          //清空当前选中的行
@@ -1190,9 +1218,15 @@
          this.parentClassifyOnLoad(this.page, params);
          done();
        },
        parentClassifyRowClick(row){
          this.$refs.crudParentClassify.toggleSelection();
          this.parentClassifySelectionList = row;
          this.$refs.crudParentClassify.setCurrentRow(row);
          this.$refs.crudParentClassify.toggleRowSelection(row); //选中当前行
        },
        parentClassifySelectionChange(list) {
          //console.log(this.parentClassifyCurrentChange);
          this.parentClassifySelectionList = list;
          this.$refs.crudParentClassify.setCurrentRow(this.parentClassifySelectionList[list.length-1]);
        },
        parentClassifySelectionClear() {
          this.parentClassifySelectionList = [];
@@ -1229,7 +1263,8 @@
          this.loadlistClassifyLinkAttr()
        },
        // åŠ è½½åˆ†ç±»è¿žæŽ¥å±žæ€§è¡¨æ ¼æ•°æ®
        loadlistClassifyLinkAttr(){
        loadlistClassifyLinkAttr(condition) {
          //这儿还需要完善
          this.selectAttrOptionLoading = true;
          listClassifyLinkAttr({"page": 1,"limit": -1,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid}).then(res=>{
          //console.log(res.data.data);
@@ -1246,13 +1281,21 @@
        // ç‚¹å‡»æœç´¢åŽè§¦å‘该事件
        selectAttrOptionSearchChange(params, done) {
          this.query = params;
          console.log(params);  //这儿需要改
          this.loadlistClassifyLinkAttr({"page":1,"limit":-1 ,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid});
          //console.log(params);  //这儿需要改
          this.loadlistClassifyLinkAttr(Object.assign(params,{'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid}));
          done();
        },
        // ä¸ºå±žæ€§é€‰å€¼ç•Œé¢ï¼Œå•击表格行时触发该事件
        selectionAttrRowClick(row){
          this.$refs.selectionAttrCrud.toggleSelection();
          this.selectionChangeAttrList = row;
          this.$refs.selectionAttrCrud.setCurrentRow(row);
          this.$refs.selectionAttrCrud.toggleRowSelection(row); //选中当前行
        },
        // å±žæ€§å–值当前选中行发生变化时触发
        selectionChangeAttr(list){
          this.selectionChangeAttrList = list;
          this.$refs.selectionAttrCrud.setCurrentRow(this.selectionChangeAttrList[list.length-1]);
        },
        // é‡ç½®ä½å±žæ€§é€‰å–值表格的搜索框之后的回调
        searchAttrReset() {
@@ -1261,7 +1304,7 @@
        // ä¸ºå±žæ€§é€‰å–值之后的回显
        selectedListClassifyLinkAttr(){
          if(this.selectionChangeAttrList.length != 1){
            this.$message.warning("只能选择一条数据!");
            this.$message.warning("请选择一条数据!");
            return false;
          }
          //调用子组件并传递当前选中的参数值,实现回显
@@ -1609,7 +1652,7 @@
        /** åŸºç¡€ç æ®µç›¸å…³æ–¹æ³• */
        //防止打开过编辑窗口之后表单中存在值,所以需要清空,并初始化form表单属性
        clearBasicAddForm(){
          this.form = this.$options.data().form;;
          this.form = this.$options.data().form;
          // this.changeSectypeFormItems(null);
        },
        // æ‰“开新增窗口
@@ -1624,7 +1667,7 @@
          this.openBasicDialog('add',null);
          this.loadCodeSecType();
        },
        //打开新增或编辑基础码段对话框
        // æ‰“开新增或编辑基础码段对话框
        openBasicDialog(condition,row){
          //console.log(row);
          if(condition == 'add') {
@@ -1903,9 +1946,16 @@
          //存储当前关联的编码规则相关信息
          this.currentCodeRuleOid = row.oid;
          this.currentRuleLcStatus = row.lcStatus;
          gridCodeBasicSec(1, -1, {"pkCodeRule":row.oid}).then(res => {
          this.sendGridCodeBasicSec({"pkCodeRule":row.oid});
        },
        // å‘送加载基础码段的请求
        sendGridCodeBasicSec(condition){
          // å¦‚果当前基础码段表中的搜索按钮被隐藏,就需要在此开启
          if(this.selectionList.length>=0 && !this.$refs.crudBasic.option.column[0].search){
            this.hideBasicTable(true);
          }
          gridCodeBasicSec(1, -1, condition).then(res => {
            const data = res.data.data;
            // console.log(data);
            if(this.cloneSettingBox){
              this.cloneData = data.records;
              // console.log(tihs.cloneData);
@@ -1920,7 +1970,23 @@
        // åŸºç¡€ç æ®µé€‰ä¸­æ—¶è§¦å‘
        selectionBasicChange(list) {
          this.selectionBasicList = list;
          this.$refs.crudBasic.setCurrentRow(this.selectionBasicList[list.length-1]);
          //console.log(this.selectionBasicList);
        },
        // åŸºç¡€ç æ®µè¢«å•击表格行时触发
        codeBasicSecRowClick(row){
          this.$refs.crudBasic.toggleSelection();
          this.selectionBasicList = row;
          this.$refs.crudBasic.setCurrentRow(row);
          this.$refs.crudBasic.toggleRowSelection(row); //选中当前行
        },
        basicSearchChange(params, done){
          //console.log(this.$refs.crudBasic);
          this.sendGridCodeBasicSec(Object.assign(params,{"pkCodeRule":this.selectionList[this.selectionList.length-1].oid}));
          done();
        },
        basicSearchReset(){
          this.sendGridCodeBasicSec({"pkCodeRule":this.selectionList[this.selectionList.length-1].oid});
        },
        // ä¸Šç§»ä¸‹ç§»åŸºç¡€ç æ®µ
        upOrderNum(row){
@@ -1968,12 +2034,19 @@
            });
          })
        },
        //基础码段查询
        // åŸºç¡€ç æ®µåˆ·æ–°æ—¶æŸ¥è¯¢
        refreshChangeBasicSec(){
          this.loadBasic({"oid":this.currentCodeRuleOid == null || this.currentCodeRuleOid == '' ? this.selectionList[0].oid:this.currentCodeRuleOid});
        },
        // æ“ä½œåŸºç¡€ç æ®µä¸­æœç´¢æ¸…空等按钮的显示/隐藏
        hideBasicTable(hideBoolean){
          this.$refs.crudBasic.option.refreshBtn = hideBoolean;
          this.$refs.crudBasic.option.columnBtn = hideBoolean;
          this.$refs.crudBasic.option.column[0].search = hideBoolean;
          this.$refs.crudBasic.option.column[1].search = hideBoolean;
        },
        /** ç¼–码规则相关方法 */
        // æŸ¥è¯¢ä½¿ç”¨èŒƒå›´
        handleRange(){
@@ -1983,7 +2056,7 @@
          this.codeRangeSettingBox = true;
          this.getRangeCodeList()
        },
        //加载使用范围列表
        // åŠ è½½ä½¿ç”¨èŒƒå›´åˆ—è¡¨
        getRangeCodeList(){        
          this.dialogLoading = true;
          if(this.selectionList[0].oid==null){
@@ -1996,17 +2069,19 @@
            this.dialogLoading = false;
          });
        },
        //刷新使用范围列表
        // åˆ·æ–°ä½¿ç”¨èŒƒå›´åˆ—表
        refreshUseRangeChange(){
          this.getRangeCodeList();
        },
        //单击编码规则实现行选择
        // å•击编码规则实现行选择
        codeRuleRowClick (row) {
          this.$refs.crud.toggleSelection();
          this.selectionList = row;
          this.$refs.crud.toggleSelection();
          this.$refs.crud.setCurrentRow(row);
          this.$refs.crud.toggleRowSelection(row); //选中当前行
          this.loadBasic(row);
          if(row!=''){
            this.loadBasic(row);
          }
        },
        // å¯ç”¨ä¸Žåœç”¨
        enableOrDeactivatse(oId,update){
@@ -2073,26 +2148,42 @@
          }
          this.cloneOtherCodeRuleSettingBox = true;
        },
        //单击编码规则实现行选择
        codeOtherCloneRuleRowClick (row) {
        // ä»Žå…¶ä»–编码规则中克隆码段对话框-单击编码规则实现行选择
        codeOtherCloneRuleRowClick(row) {
          this.$refs.crudCloneCodeRuleOther.toggleSelection();
          this.selectionOtherCloneCodeRuleList = row;
          this.$refs.crudCloneCodeRuleOther.setCurrentRow(row);
          this.$refs.crudCloneCodeRuleOther.toggleRowSelection(row); //选中当前行
          this.loadBasic(row);
        },
        // ç¼–码规则当前选中行变化的时候触发
        // ä»Žå…¶ä»–编码规则中克隆码段对话框-单击基础码段实现行选择
        codeOtherCloneBasicRowClick(row){
          this.$refs.crudCloneCodeBasicOther.toggleSelection();
          this.selectionOtherCloneCodeBasicList = row;
          this.$refs.crudCloneCodeBasicOther.setCurrentRow(row);
          this.$refs.crudCloneCodeBasicOther.toggleRowSelection(row); //选中当前行
        },
        // ä»Žå…¶ä»–规则克隆码段界面中编码规则当前选中行变化的时候触发
        selectionOtherCloneCodeRuleChange(list) {
          //console.log(list);
          this.selectionOtherCloneCodeRuleList = list;
          this.$refs.crudBasic.setCurrentRow(this.selectionBasicList[list.length-1]);
          if(list == ''){
            this.basicData = [];
          }
          if(this.selectionOtherCloneCodeRuleList.length > 0){
            this.loadBasic(this.selectionOtherCloneCodeRuleList[list.length-1]);
          }
        },
        selectionOtherCloneCodeBasicChange(list){
          this.selectionOtherCloneCodeBasicList = list;
          this.selectionOtherCloneCodeBasicList = list;
          this.$refs.crudCloneCodeBasicOther.setCurrentRow(this.selectionOtherCloneCodeBasicList[list.length-1]);
        },
         // ä»Žå…¶ä»–编码规则中克隆码段信息
        saveOtherCodeBasic(){
          let oid = this.selectionList[0].oid;
          let fromDialogPkCodebasic = this.selectionOtherCloneCodeBasicList;
          if(fromDialogPkCodebasic.length < 0){
          if(fromDialogPkCodebasic.length <= 0){
            this.$message.warning("请选择码段数据!");
            return;
          }
@@ -2104,13 +2195,13 @@
            return;
          }
          //console.log(res);
          let oidArr = '';
          fromDialogPkCodebasic.forEach((item) =>{
            oidArr = oidArr+","+item.oid;
          })
          let oidArr = [];
          fromDialogPkCodebasic.forEach(ele => {
            oidArr.push(ele.id);
          });
          let data = {
            "pkCodeRule": oid,
            "oidArr": oidArr,
            "oidArr": oidArr.join(","),
          }
          //console.log(data);
          cloneCodeBasic(data).then(() => {
@@ -2136,9 +2227,9 @@
          }
          let currentData = this.selectionList[0];
          this.$confirm("确定要清空码值?如果清空将不能被恢复,请谨慎!", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            })
            .then(() => {
              let ts = new Date(currentData.ts).getTime();
@@ -2152,7 +2243,6 @@
              });
            });
        },
        // æ·»åŠ 
        rowSave(row, done, loading) {
          add(row).then(() => {
@@ -2232,12 +2322,15 @@
        // ç¼–码规则当前选中行变化的时候触发
        selectionChange(list) {
          this.selectionList = list;
          //console.log("selectionChange====="+list);
          this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
          //当前选中行为空的时候就将码段管理表格数据置空
          if(list == ''){
            this.basicData = [];
            this.hideBasicTable(false);
          }
          if(this.selectionList.length > 0){
            this.currentCodeRuleOid = this.selectionList[list.length-1].oid;
            this.currentRuleLcStatus = this.selectionList[list.length-1].lcStatus;
            //console.log(this.currentRuleLcStatus);
            this.loadBasic(this.selectionList[list.length-1]);
          }
        },
@@ -2264,7 +2357,7 @@
            this.loading = false;
            this.loadBasic(this.data[0])
            this.$nextTick(() => {
              //this.$refs.crud.toggleRowSelection(this.data[0]);
              this.$refs.crud.toggleRowSelection(this.data[0]);
              this.$refs.crud.setCurrentRow(this.data[0]);
            })
            this.selectionList = data.records[0];
@@ -2274,7 +2367,7 @@
        /** ç¬¬ä¸€å±‚对话框相关方法 */
        // æ‰“开二层弹窗方法
        // æ‰“开二层对话框方法
        openAttrSelectOrGetValue(condition){
          if(condition === 'attr'){
            this.isShowSelectAttrOption = true;
@@ -2285,11 +2378,13 @@
            this.isShowParentClassifyOption = true;
          }else if(condition === 'referBtmId'){
            this.isShowSelectReferBtmOption = true;
            this.refreshReferBtmDataChange();
          }else if(condition === 'referConfig'){
            //this.$emit('openSelectreferConfig')
            this.$refs.referConfigDialog.isShowReferConfig = true;
            //表格错行的问题所
            this.$refs.referConfigDialog.onloadAttrData();
          }
        },
        // ç‚¹å‡»è¾“入框的×号,清空输入框中的内容
        clearAttrDataByIcon(condition){
          if(condition === 'attr'){
@@ -2434,7 +2529,6 @@
            this.sectypeList = res.data.data;
          })
          this.loadCodeSecLength();
          //console.log(this.sectypeList);
        },
        loadCodeSecLength(){
          getDictionary({code: "codeSecLength"}).then(res=>{
@@ -2464,7 +2558,6 @@
        loadCodeGetValueType(){
          getDictionary({code: "codeGetValueType"}).then(res=>{
            this.codeGetValueType = res.data.data;
            //console.log(this.codeGetValueType);
          })
        },
        
@@ -2483,7 +2576,6 @@
    padding: 14px 0 2px 20px;
  }
  
  .clone-input-textarea > .el-form-item__content {
    width: 495px;
  }
@@ -2515,17 +2607,16 @@
  .basic-container > .el-card  > .el-card__body {
    margin: -10px 0;
  }
  .code-basicsec-container{
    padding: 1px 6px;
  }
  .el-divider--horizontal {
    margin-top: 19px !important;
    /* margin-top: 19px !important; */
    margin-bottom: -20px !important;
    width: 100%;
    height: 2px;
    margin: 0;
    position: fixed;
    width: 57.5vw;
  }
  .el-card__body > .abox {
@@ -2554,34 +2645,51 @@
  }
  /** æ–°å¢žç æ®µ */
  .total{
    height: 500px;
  .add-basicsec-total {
    width: 100%;
  }
  .total .el-input__inner,.total .el-textarea__inner {
  .add-basicsec-total .el-input__inner,.add-basicsec-total .el-textarea__inner {
    width: 220px;
  }
  .add-basicsec-total > .add-basicsec-form {
    display: flex;
    flex-direction: row;
    width: 100%;
    height: 100%;
    align-items: center;
    justify-content: space-around;
  }
  .el-divider--vertical {
    width: 2px;
    height: 72vh;
    margin: 0 5px;
    height: 72%;
    margin: 0 auto;
    position: fixed;
  }
 .left {
    float: left;
    /* float: left; */
    width: 49%;
    height: 100%;
 }
 .right {
    float: right;
    margin-right: 2.5vw;
    /* width: 40%; */
    /* float: right; */
    margin-right: 2vw;
    height: 100%;
    width: auto;
 }
 .right > .el-form > .el-form-item{
    margin-bottom: 8px;
 }
 /* å¯¹è¯æ¡†åº•部按钮边框样式 */
 .el-dialog__footer{
    /* width: 100%; */
    border-top: 1px solid #E9E7E7;
    padding: 5px 10px 10px;
  }
</style>
Source/UBCS-WEB/src/views/code/codebutton.vue
@@ -68,10 +68,10 @@
      ...mapGetters(["permission"]),
      permissionList() {
        return {
          addBtn: this.vaildData(this.permission.codebutton_add, false),
          viewBtn: this.vaildData(this.permission.codebutton_view, false),
          delBtn: this.vaildData(this.permission.codebutton_delete, false),
          editBtn: this.vaildData(this.permission.codebutton_edit, false)
          // addBtn: this.vaildData(this.permission.codebutton_add, false),
          // viewBtn: this.vaildData(this.permission.codebutton_view, false),
          // delBtn: this.vaildData(this.permission.codebutton_delete, false),
          // editBtn: this.vaildData(this.permission.codebutton_edit, false)
        };
      },
      ids() {
Source/UBCS-WEB/src/views/flow/follow.vue
@@ -1,42 +1,43 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
               v-model="form"
               :page.sync="page"
               :permission="permissionList"
               @row-del="rowDel"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      :table-loading="loading"
      :data="data"
      ref="crud"
      v-model="form"
      :page.sync="page"
      :permission="permissionList"
      @row-del="rowDel"
      @search-change="searchChange"
      @search-reset="searchReset"
      @row-click="clickRowChange"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad">
      <template slot-scope="{row}"
                slot="suspensionState">
        slot="suspensionState">
        <el-tag>{{row.suspensionState===1?'激活':'挂起'}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程删除"
               append-to-body
               :visible.sync="followBox"
               width="20%">
      append-to-body
      :visible.sync="followBox"
      width="20%">
      <el-form :model="form"
               ref="form"
               label-width="80px">
        ref="form"
        label-width="80px">
        <el-form-item label="删除理由">
          <el-input v-model="deleteReason"
                    placeholder="请输入删除理由" />
            placeholder="请输入删除理由" />
        </el-form-item>
      </el-form>
      <span slot="footer"
            class="dialog-footer">
        class="dialog-footer">
        <el-button @click="followBox = false">关 é—­</el-button>
        <el-button type="primary"
                   @click="handleDelete">ç¡® å®š</el-button>
          @click="handleDelete">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </basic-container>
@@ -77,6 +78,7 @@
          dialogWidth: 900,
          menuWidth: 100,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "执行id",
@@ -167,6 +169,13 @@
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/flow/manager.vue
@@ -13,6 +13,7 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @row-click="clickRowChange"
               @on-load="onLoad">
      <template slot="menuLeft">
        <el-radio-group v-model="mode" size="small">
@@ -132,6 +133,7 @@
          dialogWidth: 900,
          menuWidth: 250,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: '租户编号',
@@ -229,8 +231,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/flow/model.vue
@@ -1,18 +1,19 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
               v-model="form"
               :page.sync="page"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      :table-loading="loading"
      :data="data"
      ref="crud"
      v-model="form"
      :page.sync="page"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @row-click="clickRowChange"
      @on-load="onLoad">
      <template slot="menuLeft">
        <el-button type="primary"
                   size="mini"
@@ -215,6 +216,7 @@
        dialogWidth: 900,
        menuWidth: 200,
        dialogClickModal: false,
        highlightCurrentRow: true, //行选中时高亮
        size: 'mini',
        searchSize: 'mini',
        column: [
@@ -381,6 +383,13 @@
    },
    selectionChange(list) {
      this.selectionList = list;
      this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
    },
    clickRowChange(row){
      this.$refs.crud.toggleSelection();
      this.selectionList = row;
      this.$refs.crud.setCurrentRow(row);
      this.$refs.crud.toggleRowSelection(row); //选中当前行
    },
    selectionClear() {
      this.selectionList = [];
Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -1,74 +1,141 @@
<template>
  <el-container>
    <el-aside width="240px">
      <basic-container>
        <avue-tree id="basic" :data="treeData" :option="treeOption" @node-click="nodeClick">
        </avue-tree>
      </basic-container>
    </el-aside>
    <el-main>
      <!--        åŸºæœ¬ä¿¡æ¯-->
      <basic-container>
        <p style="margin-top: 10px;font-weight: 570;font-size: 19px">基本信息</p>
        <avue-crud
          v-model="objs"
          :data="basicData"
          :option="basicOption"
          @row-save="basicSave"
        >
          <!--           ç‰ˆæœ¬è§„则-->
          <template slot="rulesForm" slot-scope="{disabled,size}">
            <div>
              <el-input v-if="rulesFalg==false" v-model="objs.tex" :size="size" placeholder="请输入版本号规则"
                        style="width: 290px"></el-input>
              <el-select v-if="rulesFalg" v-model="objs.select" placeholder="请选择版本号规则" style="max-width: 300px">
                <el-option label="测试1" value="1"></el-option>
                <el-option label="测试2" value="2"></el-option>
                <el-option label="测试3" value="3"></el-option>
              </el-select>
              <el-button style="margin-bottom: 5px;margin-left: 10px" type="primary" @click="handelRules">
                {{ rulesFalg == false ? "选择版本号规则" : "手动输入" }}
              </el-button>
            </div>
          </template>
          <!--            ç”Ÿå‘½å‘¨æœŸ-->
          <template slot="lifeCycleForm">
            <el-select v-model="objs.select" placeholder="请选择生命周期" style="max-width: 300px">
              <el-option label="测试1" value="1"></el-option>
              <el-option label="测试2" value="2"></el-option>
              <el-option label="测试3" value="3"></el-option>
            </el-select>
            <el-button style="margin-bottom: 5px;display: inline-block;margin-left: 10px" type="primary"
                       @click="handelLife">生命周期列表
            </el-button>
          </template>
        </avue-crud>
        <el-dialog :visible.sync="packageLifeBox"
                   append-to-body
                   title="查看使用范围"
                   width="1000px">
          <Businpackage></Businpackage>
    <el-header>
      <el-button type="primary" @click="businessAdd">新增</el-button>
      <el-button type="primary" @click="businessEdit">修改</el-button>
      <el-button type="primary" @click="selectFromTable">从已有中获取</el-button>
    </el-header>
    <el-container>
      <el-aside width="240px">
        <basic-container>
          <avue-tree id="basic" :data="treeData" :option="treeOption" @node-click="nodeClick">
            <span class="el-tree-node__label" slot-scope="{ node, data }">
              <span>
                <i class="el-icon-star-on"></i>
                {{ (node || {}).label }}
              </span>
            </span>
          </avue-tree>
        </basic-container>
      </el-aside>
      <el-container>
        <el-main>
          <!--基本信息-->
          <basic-container>
            <p style="margin-top: 10px;font-weight: 570;font-size: 19px">基本信息</p>
            <el-descriptions class="margin-top" :column="3" :size="size" border>
              <el-descriptions-item>
                <template slot="label">
                  <i class="el-icon-finished"></i>
                  è‹±æ–‡åç§°
                </template>
                {{ obj.id }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i class="el-icon-info"></i>
                  ä¸­æ–‡åç§°
                </template>
                {{ obj.name }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i class="el-icon-date"></i>
                  æ•°æ®åº“表名
                </template>
                {{ obj.tableName }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i class="el-icon-folder-opened"></i>
                  æ‰€å±žé¢†åŸŸ
                </template>
                {{ obj.domain }}
              </el-descriptions-item>
              <!-- <el-descriptions-item>
            <template slot="label">
              <i class="el-icon-s-ticket"></i>
              æ ‡ç­¾
            </template>
            {{obj.hashtag}}
          </el-descriptions-item> -->
              <!-- <el-descriptions-item>
            <template slot="label">
              <i class="el-icon-arrow-up"></i>
              ç»§æ‰¿è‡ª
            </template>
            {{ obj.sss }}
          </el-descriptions-item> -->
              <el-descriptions-item>
                <template slot="label">
                  <i class="el-icon-s-check"></i>
                  ç‰ˆæœ¬è§„则
                </template>
                {{ obj.versionRule }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i class="el-icon-refresh-right"></i>
                  ç”Ÿå‘½å‘¨æœŸ
                </template>
                {{ obj.lifeCycleId }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  <i class="el-icon-view"></i>
                  è§†å›¾
                </template>
                {{ obj.viewFlag }}
              </el-descriptions-item>
              <!-- <el-descriptions-item>
            <template slot="label">
              <i class="el-icon-arrow-down"></i>
              å®žçŽ°ç±»
            </template>
            {{ obj.implClass }}
          </el-descriptions-item> -->
              <el-descriptions-item>
                <template slot="label">
                  <i class="el-icon-chat-line-square"></i>
                  æè¿°
                </template>
                {{ obj.description }}
              </el-descriptions-item>
            </el-descriptions>
          </basic-container>
          <!-- å±žæ€§åˆ—表-->
          <basic-container>
            <p style="margin-top: 10px;font-weight: 570;font-size: 19px">属性列表</p>
            <avue-crud v-model="obj" :data="obj.attributes" :option="loadOption" @row-save="loadSave"></avue-crud>
          </basic-container>
        </el-main>
        <el-dialog :visible="ref.visible" title="从数据库中添加" width="700px" append-to-body @close="dialoghandelfalse">
          é€‰æ‹©é¢†åŸŸï¼š
          <el-select v-model="domain" placeholder="请选择" @change="refOnLoad">
            <el-option v-for="item in domainOptions" :key="item" :label="item" :value="item">
            </el-option>
          </el-select>
          <avue-crud class="businessCrud" v-model="ref.form" :option="ref.option" :data="ref.data" @selection-change="selectionChange">
          </avue-crud>
          <span slot="footer" class="dialog-footer">
            <el-button @click="dialoghandelfalse">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="dialoghandeltrue">ç¡® å®š</el-button>
  </span>
          </span>
        </el-dialog>
      </basic-container>
      <!--        å±žæ€§åˆ—表-->
      <basic-container>
        <p style="margin-top: 10px;font-weight: 570;font-size: 19px">属性列表</p>
        <avue-crud
          v-model="obj"
          :data="loadData"
          :option="loadOption"
          @row-save="loadSave"
        ></avue-crud>
      </basic-container>
    </el-main>
      </el-container>
    </el-container>
    <business-add ref="btmAdd" :btmType="addOption.btmType" :domainOption="domainOptions">
  </business-add>
  </el-container>
</template>
<script>
import {
  initTree,
  refOnLoad,
  getDomain,
  saveFromTable,
  getDetail
} from "@/api/omd/btmType"
export default {
  name: "Business",
  data() {
@@ -78,282 +145,99 @@
      //版本规则状态
      rulesFalg: false,
      obj: {},
      treeData: [{
        value: 0,
        label: '业务类型树',
        children: [
          {
            value: 1,
            label: 'A',
          },
          {
            value: 2,
            label: 'B',
          },
          {
            value: 3,
            label: 'C',
          },
          {
            value: 4,
            label: 'D',
          },
          {
            value: 5,
            label: 'E',
          }
        ]
      }],
      selectionList: [],
      treeData: [],
      treeOption: {
        defaultExpandAll: true,
        title: '业务类型树',
        props: {
          labelText: '',
          label: 'name',
          value: 'oid',
          children: 'childList',
        }
      },
      loadData: [],
      loadData1: [
        {
          name: '张三',
          business: '测试',
          attrType: "测试",
          default: "测试",
          explain: "测试说明"
        },
        {
          name: '李四',
          business: '测试',
          attrType: "测试",
          default: "测试",
          explain: "测试说明"
        }
      ],
      loadData2: [
        {
          name: '王五',
          business: '测试',
          attrType: "测试",
          default: "测试",
          explain: "测试说明"
        },
        {
          name: '宋六',
          business: '测试',
          attrType: "测试",
          default: "测试",
          explain: "测试说明"
        }
      ],
      addOption:{
        btmType:{},
      },
      loadOption: {
        border: true,
        height: 422,
        height: 466,
        editBtn: false,
        addBtn: false,
        menu: false,
        highlightCurrentRow: true,
        refreshBtn:false,
        columnBtn:false,
        column: [
          {
            label: '属性名',
            prop: 'name'
          },
          {
            label: '业务类型',
            prop: 'business'
            label: '属性英文名称',
            prop: 'id',
            align: 'center'
          }, {
            label: '属性中文名称',
            prop: 'name',
            align: 'center'
          },
          {
            label: "属性类型",
            prop: "attrType"
            prop: "attrDataType",
            align: 'center'
          },
          {
            label: "默认值",
            prop: "default",
            prop: "defaultValue",
            align: 'center'
          },
          {
            label: "说明",
            prop: "explain"
            prop: "description",
            align: 'center'
          }
        ]
      },
      //基本信息
      objs: {
        tex: "",
        select: "",
        lifeTex: ""
      },
      basicData: [],
      basicData1: [
        {
          typeName: "测试1",
          tag: "客户",
          inherit: "测试",
          implement: "测试",
          lifeCycle: "周期",
          desc: "这是一个描述"
        }
      ],
      basicData2: [
        {
          typeName: "测试2",
          tag: "客户",
          inherit: "测试",
          implement: "测试",
          lifeCycle: "周期",
          desc: "这是一个描述"
        }
      ],
      basicOption: {
        border: true,
        height: 88,
        tabs: true,
        column: [
          {
            label: "类型名称",
            prop: "typeName",
            display: false
          },
          {
            label: "标签",
            prop: "tag",
            display: false
          },
          {
            label: "继承自",
            prop: "inherit",
            display: false
          },
          {
            label: "实现类",
            prop: "implement",
            display: false
          },
          {
            label: "描述",
            prop: "desc",
            display: false
          }
        ],
        group: [
          {
            label: "基本信息",
            column: [
              {
                label: "类型名称",
                prop: "typeName"
              },
              {
                label: "标签",
                prop: "tag"
              },
              {
                label: "继承自",
                prop: "inherit"
              },
              {
                label: "是否实例化",
                prop: "case",
                type: "switch",
                align: "center",
                hide: true,
                labelWidth: 90,
                dicData: [
                  {
                    label: "否",
                    value: 0
                  },
                  {
                    label: "是",
                    value: 1
                  }
                ],
              },
              {
                label: "描述",
                prop: "desc",
                type: "textarea"
              },
              {
                label: "实现类",
                prop: "implement"
              },
            ]
          },
          {
            label: "版本规则",
            column: [
              {
                label: '版本规则',
                prop: 'radio',
                type: 'radio',
                button: true,
                change: this.radioChange,
                value: 0,
                dicData: [{
                  label: '不可修订',
                  value: 0
                }, {
                  label: '采用一级版本管理',
                  value: 1
                }, {
                  label: '采用二级版本管理',
                  value: 2
                }]
              },
              {
                label: "版本号规则",
                prop: "rules",
                display: true,
                formslot: true,
              },
              {
                label: "分隔符",
                prop: "interval",
                type: "select",
                display: true,
                dicData: [
                  {
                    label: ".",
                    value: 0
                  },
                  {
                    label: "-",
                    value: 1
                  },
                  {
                    label: " ",
                    value: 2
                  }
                ]
              },
              {
                label: '版次号规则',
                prop: 'radioRules',
                type: 'radio',
                display: true,
                dicData: [{
                  label: '1.2.3...',
                  value: 0
                }, {
                  label: 'a.b.c...',
                  value: 1
                }, {
                  label: '0.1.2...',
                  value: 2
                }]
              },
            ]
          },
          {
            label: "生命周期",
            column: [
              {
                label: "生命周期",
                prop: "lifeCycle"
              }
            ]
          }
        ]
      },
      domain: null,
      domainOptions: [],
      ref: {
        // ä»Žè¡¨ä¸­é€‰æ‹©dialog状态
        visible: false,
        form: {},
        option: {
          height: "550px",
          selection: true,
          headerAlign: 'center',
          border: true,
          index: true,
          rowKey: 'id',
          tabs: true,
          addBtn: false,
          menu: false,
          highlightCurrentRow: true,
          column: [
            {
              label: '表名',
              prop: 'tableName',
              align: 'center',
              display: false
            },
            {
              label: '描述',
              prop: 'description',
              align: 'center',
              display: false
            }
          ]
        },
        data: [{
          tableName: '1',
          description: '2'
        }]
      }
    }
  },
  created() {
    this.loadData = this.loadData1;
    this.basicData = this.basicData1
    this.initTreeOnLoad();
    this.initDomainOption();
  },
  methods: {
    //生命周期对话框取消点击事件
@@ -389,40 +273,80 @@
      }
    },
    nodeClick(data) {
      if (data.value == 1) {
        this.loadData = this.loadData1;
        this.basicData = this.basicData1
      } else if (data.value == 2) {
        this.loadData = this.loadData2;
        this.basicData = this.basicData2
      }
      this.$message.success(JSON.stringify(data))
      getDetail(data.oid).then(res => {
        this.obj = res.data.data;
      })
    },
    //  åŸºæœ¬ä¿¡æ¯æ·»åŠ 
    basicSave(row, done, loading) {
      add(Object.assign({
        createUser: this.userInfo.name
      }, row)).then(() => {
        this.$message.success('新增成功')
        done();
        this.getList();
      }).catch(() => {
        loading()
      })
    },
    //属性添加
    loadSave(row, done, loading) {
      add(Object.assign({
        createUser: this.userInfo.name
      }, row)).then(() => {
        this.$message.success('新增成功')
        done();
        this.getList();
      }).catch(() => {
        loading()
      })
    },
    selectFromTable() {
      console.log('获取');
      this.ref.visible = true;
    },
    refOnLoad(domain) {
      refOnLoad(domain).then(res => {
        this.ref.data = res.data.data;
      })
    },
    initTreeOnLoad() {
      initTree().then(res => {
        console.log('123');
        this.treeData = res.data.data;
      });
    },
    initDomainOption() {
      getDomain().then(res => {
        this.domainOptions = res.data.data;
      })
    },
    selectionChange(list) {
      this.selectionList = list;
      console.log(this.selectionList);
    },
    dialoghandelfalse() {
      this.ref.visible = false;
      this.selectionList = [];
      this.domain = null;
    },
    dialoghandeltrue() {
      saveFromTable(this.selectionList, this.domain).then(res => {
        this.$message.success('保存成功');
        this.dialoghandelfalse();
        this.initTreeOnLoad();
      })
    },
    businessAdd(){
      this.$refs.btmAdd.showSubmitDialog = true;
      console.log('添加');
    },
    businessEdit(){
      this.addOption.btmType = this.obj;
      this.$refs.addOption.showSubmitDialog = true;
      console.log('编辑');
    }
  },
//  åŸºæœ¬ä¿¡æ¯æ·»åŠ 
  basicSave(row, done, loading) {
    add(Object.assign({
      createUser: this.userInfo.name
    }, row)).then(() => {
      this.$message.success('新增成功')
      done();
      this.getList();
    }).catch(() => {
      loading()
    })
  },
  //属性添加
  loadSave(row, done, loading) {
    add(Object.assign({
      createUser: this.userInfo.name
    }, row)).then(() => {
      this.$message.success('新增成功')
      done();
      this.getList();
    }).catch(() => {
      loading()
    })
  }
}
</script>
@@ -432,4 +356,8 @@
  border-radius: 10px;
}
.businessCrud > .el-card > .el-card__body > .avue-crud_menu{
  display: none!important;
}
</style>
Source/UBCS-WEB/src/views/modeling/original.vue
@@ -94,7 +94,7 @@
  update, getPage
} from "@/api/omd/OmdAttribute";
import { getDictionary } from "@/api/omd/dict";
import { getDictionary } from "@/api/omd/enum";
export default {
  name: "original",
Source/UBCS-WEB/src/views/omd/enum.vue
ÎļþÃû´Ó Source/UBCS-WEB/src/views/omd/dict.vue ÐÞ¸Ä
@@ -49,7 +49,7 @@
        <el-tag>{{ row.isSealed === 0 ? '否' : '是' }}</el-tag>
      </template>
    </avue-crud>
    <el-dialog :title="`[${dictValue}]枚举项配置`"
    <el-dialog :title="`[${name}]枚举项配置`"
               append-to-body
               :visible.sync="box"
               width="1000px">
@@ -80,7 +80,7 @@
            icon="el-icon-delete"
            v-if="permission.dict_delete"
            plain
            @click="handleDelete"
            @click="handleDeleteChild"
          >删 é™¤
          </el-button>
        </template>
@@ -103,23 +103,23 @@
</template>
<script>
  import {
    getParentList,
    getChildList,
    remove,
    update,
    add,
    getDict,
    getDictTree
  } from "@/api/omd/dict";
  import {optionParent, optionChild} from "@/const/omd/dict";
import {
  getParentList,
  getChildList,
  remove,
  update,
  add,
  getDict,
  getDictTree, addChild, updateChild, getDictChild, removeChild
} from "@/api/omd/enum";
  import {optionParent, optionChild} from "@/const/omd/enum";
  import {mapGetters} from "vuex";
  export default {
    data() {
      return {
        dictValue: '暂无',
        parentId: -1,
        parentoid: -1,
        formParent: {},
        formChild: {},
        selectionList: [],
@@ -158,7 +158,7 @@
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
          ids.push(ele.id);
          ids.push(ele.oid);
        });
        return ids.join(",");
      }
@@ -168,18 +168,20 @@
    },
    methods: {
      initData() {
        getDictTree().then(res => {
          const column = this.findObject(this.optionChild.column, "parentId");
        getDictTree(this.pageParent.currentPage,
                    this.pageParent.pageSize,
                    this.query).then(res => {
          const column = this.findObject(this.optionChild.column, "parentoid");
          column.dicData = res.data.data;
        });
      },
      handleAdd(row) {
        this.formChild.dictValue = "";
        this.formChild.dictKey = "";
        this.formChild.value = "";
        this.formChild.name = "";
        this.formChild.sort = 0;
        this.formChild.isSealed = 0;
        this.formChild.remark = "";
        this.formChild.parentId = row.id;
        this.formChild.parentoid = row.oid;
        this.$refs.crudChild.rowAdd();
      },
      rowSave(row, done, loading) {
@@ -220,7 +222,7 @@
          type: "warning"
        })
          .then(() => {
            return remove(row.id);
            return remove(row.oid);
          })
          .then(() => {
            this.onLoadParent(this.pageParent);
@@ -232,13 +234,13 @@
      },
      handleRowClick(row) {
        this.query = {};
        this.parentId = row.id;
        this.dictValue = row.dictValue;
        this.parentId = row.oid;
        this.name = row.name;
        const code = this.findObject(this.optionChild.column, "code");
        const code = this.findObject(this.optionChild.column, "value");
        code.value = row.code;
        const parentId = this.findObject(this.optionChild.column, "parentId");
        parentId.value = row.id;
        // const parentoid = this.findObject(this.optionChild.column, "parentoid");
        this.parentoid = row.oid;
        this.box = true;
        this.onLoadChild(this.pageChild);
@@ -284,7 +286,7 @@
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDict(this.formParent.id).then(res => {
          getDict(this.formParent.oid).then(res => {
            this.formParent = res.data.data;
          });
        }
@@ -300,7 +302,8 @@
        this.onLoadParent(this.pageParent, this.query);
      },
      rowSaveChild(row, done, loading) {
        add(row).then(() => {
        row.parentoid = this.parentoid;
        addChild(row).then(() => {
          this.onLoadChild(this.pageChild);
          this.$message({
            type: "success",
@@ -313,7 +316,7 @@
        });
      },
      rowUpdateChild(row, index, done, loading) {
        update(row).then(() => {
        updateChild(row).then(() => {
          this.onLoadChild(this.pageChild);
          this.$message({
            type: "success",
@@ -332,7 +335,7 @@
          type: "warning"
        })
          .then(() => {
            return remove(row.id);
            return removeChild(row.oid);
          })
          .then(() => {
            this.onLoadChild(this.pageChild);
@@ -370,7 +373,7 @@
          type: "warning"
        })
          .then(() => {
            return remove(this.ids);
            return removeChild(this.ids);
          })
          .then(() => {
            this.onLoadChild(this.pageChild);
@@ -386,7 +389,7 @@
          this.initData();
        }
        if (["edit", "view"].includes(type)) {
          getDict(this.formChild.id).then(res => {
          getDictChild(this.formChild.oid).then(res => {
            this.formChild = res.data.data;
          });
        }
@@ -429,7 +432,7 @@
        getChildList(
          page.currentPage,
          page.pageSize,
          this.parentId,
          this.parentoid,
          Object.assign(params, this.query)
        ).then(res => {
          this.dataChild = res.data.data;
Source/UBCS-WEB/src/views/report/reportlist.vue
@@ -1,20 +1,21 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
               v-model="form"
               :page.sync="page"
               :permission="permissionList"
               @row-del="rowDel"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      :table-loading="loading"
      :data="data"
      ref="crud"
      v-model="form"
      :page.sync="page"
      :permission="permissionList"
      @row-del="rowDel"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @row-click="clickRowChange"
      @on-load="onLoad">
      <template slot="menuLeft">
        <el-button type="danger"
                   size="small"
@@ -75,6 +76,7 @@
        selection: true,
        viewBtn: true,
        dialogClickModal: false,
        highlightCurrentRow: true, //行选中时高亮
        column: [
          {
            label: "文件名",
@@ -147,8 +149,15 @@
      this.onLoad(this.page, params);
      done();
    },
    clickRowChange(row){
      this.$refs.crud.toggleSelection();
      this.selectionList = row;
      this.$refs.crud.setCurrentRow(row);
      this.$refs.crud.toggleRowSelection(row); //选中当前行
    },
    selectionChange(list) {
      this.selectionList = list;
      this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
    },
    selectionClear() {
      this.selectionList = [];
Source/UBCS-WEB/src/views/system/client.vue
@@ -13,6 +13,7 @@
               :before-open="beforeOpen"
               @search-change="searchChange"
               @search-reset="searchReset"
               @row-click="clickRowChange"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
@@ -58,6 +59,7 @@
          viewBtn: true,
          selection: true,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "应用id",
@@ -275,8 +277,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/system/dept.vue
@@ -1,24 +1,25 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
               v-model="form"
               :permission="permissionList"
               :before-open="beforeOpen"
               :before-close="beforeClose"
               @row-del="rowDel"
               @row-update="rowUpdate"
               @row-save="rowSave"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad"
               @tree-load="treeLoad">
      :table-loading="loading"
      :data="data"
      ref="crud"
      v-model="form"
      :permission="permissionList"
      :before-open="beforeOpen"
      :before-close="beforeClose"
      @row-del="rowDel"
      @row-update="rowUpdate"
      @row-save="rowSave"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @row-click="clickRowChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad"
      @tree-load="treeLoad">
      <template slot="menuLeft">
        <el-button type="danger"
                   size="small"
@@ -84,6 +85,7 @@
          viewBtn: true,
          menuWidth: 300,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "机构名称",
@@ -307,8 +309,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/system/menu.vue
@@ -14,6 +14,7 @@
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @row-click="clickRowChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
@@ -69,6 +70,7 @@
          total: 0,
        },
        option: {
          height: "auto",
          lazy: true,
          tip: false,
          simplePage: true,
@@ -82,6 +84,7 @@
          viewBtn: true,
          menuWidth: 300,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "菜单名称",
@@ -366,8 +369,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/system/post.vue
@@ -14,6 +14,7 @@
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @row-click="clickRowChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
@@ -63,6 +64,7 @@
          viewBtn: true,
          selection: true,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "所属租户",
@@ -247,8 +249,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/system/tenant.vue
@@ -13,6 +13,7 @@
               @row-save="rowSave"
               @search-change="searchChange"
               @search-reset="searchReset"
               @row-click="clickRowChange"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
@@ -135,6 +136,7 @@
        viewBtn: true,
        dialogWidth: 900,
        dialogClickModal: false,
        highlightCurrentRow: true, //行选中时高亮
        column: [
          {
            label: "租户ID",
@@ -420,8 +422,15 @@
      this.onLoad(this.page, params);
      done();
    },
    clickRowChange(row){
      this.$refs.crud.toggleSelection();
      this.selectionList = row;
      this.$refs.crud.setCurrentRow(row);
      this.$refs.crud.toggleRowSelection(row); //选中当前行
    },
    selectionChange(list) {
      this.selectionList = list;
      this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
    },
    selectionClear() {
      this.selectionList = [];
Source/UBCS-WEB/src/views/system/topmenu.vue
@@ -17,6 +17,7 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @row-click="clickRowChange"
               @on-load="onLoad">
      <template slot="menuLeft">
        <el-button type="danger"
@@ -101,6 +102,7 @@
          selection: true,
          dialogWidth: 900,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          column: [
            {
              label: "菜单名",
@@ -294,8 +296,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/system/user.vue
@@ -15,24 +15,25 @@
      <basic-container>
        <div class="bbox">
        <avue-crud ref="crud"
                   v-model="form"
                   :before-open="beforeOpen"
                   :data="data"
                   :option="option"
                   :page.sync="page"
                   :permission="permissionList"
                   :search.sync="search"
                   :table-loading="loading"
                   @row-del="rowDel"
                   @row-update="rowUpdate"
                   @row-save="rowSave"
                   @search-change="searchChange"
                   @search-reset="searchReset"
                   @selection-change="selectionChange"
                   @current-change="currentChange"
                   @size-change="sizeChange"
                   @refresh-change="refreshChange"
                   @on-load="onLoad">
          v-model="form"
          :before-open="beforeOpen"
          :data="data"
          :option="option"
          :page.sync="page"
          :permission="permissionList"
          :search.sync="search"
          :table-loading="loading"
          @row-del="rowDel"
          @row-update="rowUpdate"
          @row-save="rowSave"
          @search-change="searchChange"
          @search-reset="searchReset"
          @row-click="clickRowChange"
          @selection-change="selectionChange"
          @current-change="currentChange"
          @size-change="sizeChange"
          @refresh-change="refreshChange"
          @on-load="onLoad">
          <template slot="menuLeft">
            <el-button v-if="permission.user_delete"
                       icon="el-icon-delete"
@@ -285,6 +286,7 @@
        viewBtn: true,
        dialogType: 'drawer',
        dialogClickModal: false,
        highlightCurrentRow: true, //行选中时高亮
        column: [
          {
            label: "登录账号",
@@ -766,8 +768,8 @@
      }else {
        this.passVisible=true;
      }
      console.log("selectionList",this.selectionList)
      console.log(this.UserPwdstrategyVO)
      //console.log("selectionList",this.selectionList)
      //console.log(this.UserPwdstrategyVO)
    },
    // è®¾ç½®å¯†ç ç­–略,传递下拉框的id和多选框的id
    passhandle(){
@@ -902,8 +904,15 @@
      this.onLoad(this.page, params);
      done();
    },
    clickRowChange(row){
      this.$refs.crud.toggleSelection();
      this.selectionList = row;
      this.$refs.crud.setCurrentRow(row);
      this.$refs.crud.toggleRowSelection(row); //选中当前行
    },
    selectionChange(list) {
      this.selectionList = list;
      this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
    },
    selectionClear() {
      this.selectionList = [];
Source/UBCS-WEB/src/views/wel/index.vue
@@ -13,12 +13,12 @@
            <img src="https://img.shields.io/badge/JDK-1.8+-green.svg" alt="Build Status"/>
            <img src="https://img.shields.io/badge/Spring%20Cloud-2021-blue.svg" alt="Coverage Status"/>
            <img src="https://img.shields.io/badge/Spring%20Boot-2.7-blue.svg" alt="Downloads"/>
            <a target="_blank" href="https://bladex.vip">
            <!-- <a target="_blank" href="https://bladex.vip">
              <img src="https://img.shields.io/badge/Saber%20Author-Small%20Chill-ff69b4.svg" alt="Downloads"/>
            </a>
            <a target="_blank" href="https://bladex.vip">
              <img src="https://img.shields.io/badge/Copyright%20-@BladeX-%23ff3f59.svg" alt="Downloads"/>
            </a>
            </a> -->
          </p>
        </basic-container>
      </el-col>
Source/UBCS-WEB/src/views/work/claim.vue
@@ -1,17 +1,18 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
               v-model="form"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      :table-loading="loading"
      :data="data"
      ref="crud"
      v-model="form"
      @search-change="searchChange"
      @search-reset="searchReset"
      @row-click="clickRowChange"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad">
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
                   size="small"
@@ -144,6 +145,13 @@
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/work/done.vue
@@ -12,6 +12,7 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @row-click="clickRowChange"
               @on-load="onLoad">
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
@@ -136,8 +137,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/work/send.vue
@@ -9,6 +9,7 @@
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @row-click="clickRowChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
@@ -146,8 +147,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/work/start.vue
@@ -1,18 +1,19 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
               v-model="form"
               ref="crud"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      :table-loading="loading"
      :data="data"
      :page.sync="page"
      v-model="form"
      ref="crud"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @row-click="clickRowChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad">
      <template slot="menuLeft">
        <el-radio-group v-model="mode" size="small">
          <el-radio-button label="1">通用流程</el-radio-button>
@@ -171,8 +172,15 @@
        this.onLoad(this.page, params);
        done();
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/src/views/work/todo.vue
@@ -1,17 +1,18 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
               v-model="form"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      :table-loading="loading"
      :data="data"
      ref="crud"
      v-model="form"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @row-click="clickRowChange"
      @on-load="onLoad">
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
                   size="small"
@@ -144,6 +145,13 @@
      },
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
      },
      clickRowChange(row){
        this.$refs.crud.toggleSelection();
        this.selectionList = row;
        this.$refs.crud.setCurrentRow(row);
        this.$refs.crud.toggleRowSelection(row); //选中当前行
      },
      selectionClear() {
        this.selectionList = [];
Source/UBCS-WEB/vue.config.js
@@ -26,7 +26,8 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        target: 'http://localhost:37000',
        //target: 'http://localhost:37000',
        target: 'http://192.168.3.7:37000',
        //target: 'http://dev.vci-tech.com:37000',
        //远程演示服务地址,可用于直接启动项目
        //target: 'https://saber.bladex.vip/api',
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -41,7 +41,7 @@
     * nacos dev åœ°å€
     */
    //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
    String NACOS_DEV_ADDR = "192.168.93.149:38848";
    String NACOS_DEV_ADDR = "192.168.93.196:38848";
    /**
     * nacos prod åœ°å€
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateAttrDTO.java
@@ -1,19 +1,38 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * ä¸»é¢˜åº“分类的模板属性数据传输对象
 * ç¼–码库定义-模板属性 æ•°æ®ä¼ è¾“对象实体类
 *
 * @author weidy
 * @date 2022-01-24
 * @author ludc
 * @since 2023-05-8
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodeClassifyTemplateAttrDTO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707118652601470L;
    /**
@@ -261,787 +280,31 @@
    /**
     * è¯´æ˜Ž
     */
    //@Column(columnDefinition = "说明")
    private String explain;
    /**
     * é€‰æ‹©åº“标识
     */
    //@Column(columnDefinition = "选择库标识")
    private String libraryIdentification;
    /**
     * çº§è”属性编号
     */
    //@Column(columnDefinition = "级联属性编号")
    private String parentCode;
    /**
     * çº§è”属性名称
     */
    //@Column(columnDefinition = "级联属性名称")
    private String parentName;
    /**
     * çº§è”查询属性
     */
    //@Column(columnDefinition = "级联查询属性")
    private String parentQueryAttr;
    public String getExplain() {
        return explain;
    }
    public void setExplain(String explain) {
        this.explain = explain;
    }
    public String getLibraryIdentification() {
        return libraryIdentification;
    }
    public void setLibraryIdentification(String libraryIdentification) {
        this.libraryIdentification = libraryIdentification;
    }
    public String getParentCode() {
        return parentCode;
    }
    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }
    public String getParentName() {
        return parentName;
    }
    public void setParentName(String parentName) {
        this.parentName = parentName;
    }
    public String getParentQueryAttr() {
        return parentQueryAttr;
    }
    public void setParentQueryAttr(String parentQueryAttr) {
        this.parentQueryAttr = parentQueryAttr;
    }
    public String getEnumString() {
        return enumString;
    }
    public void setEnumString(String enumString) {
        this.enumString = enumString;
    }
    /**
     * èŽ·å– æ‰€å±žæ¨¡æ¿
     */
    public String getClassifytemplateoid (){
        return classifytemplateoid;
    }
    /**
     * è®¾ç½® æ‰€å±žæ¨¡æ¿
     */
    public void setClassifytemplateoid (String classifytemplateoid){
        this.classifytemplateoid = classifytemplateoid;
    }
    /**
     * èŽ·å–æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getClassifytemplateoidName (){
        return classifytemplateoidName;
    }
    /**
     * è®¾ç½®æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setClassifytemplateoidName (String classifytemplateoidName){
        this.classifytemplateoidName = classifytemplateoidName;
    }
    /**
     * èŽ·å– æ‰€å±žåˆ†ç±»ä¸­çš„属性主键
     */
    public String getClassifyattributeoid (){
        return classifyattributeoid;
    }
    /**
     * è®¾ç½® æ‰€å±žåˆ†ç±»ä¸­çš„属性主键
     */
    public void setClassifyattributeoid (String classifyattributeoid){
        this.classifyattributeoid = classifyattributeoid;
    }
    /**
     * èŽ·å–æ‰€å±žåˆ†ç±»ä¸­çš„å±žæ€§ä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getClassifyattributeoidName (){
        return classifyattributeoidName;
    }
    /**
     * è®¾ç½®æ‰€å±žåˆ†ç±»ä¸­çš„属性主键显示文本
     */
    public void setClassifyattributeoidName (String classifyattributeoidName){
        this.classifyattributeoidName = classifyattributeoidName;
    }
    /**
     * èŽ·å– å±žæ€§çš„类型
     */
    public String getAttributedatatype (){
        return attributedatatype;
    }
    /**
     * è®¾ç½® å±žæ€§çš„类型
     */
    public void setAttributedatatype (String attributedatatype){
        this.attributedatatype = attributedatatype;
    }
    /**
     * èŽ·å– æ˜¯å¦å…³é”®å±žæ€§
     */
    public String getKeyattrflag (){
        return keyattrflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦å…³é”®å±žæ€§
     */
    public void setKeyattrflag (String keyattrflag){
        this.keyattrflag = keyattrflag;
    }
    /**
     * èŽ·å– æ˜¯å¦å¿«é€ŸæŸ¥è¯¢å±žæ€§
     */
    public String getQueryattrflag (){
        return queryattrflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦å¿«é€ŸæŸ¥è¯¢å±žæ€§
     */
    public void setQueryattrflag (String queryattrflag){
        this.queryattrflag = queryattrflag;
    }
    /**
     * èŽ·å– æ˜¯å¦é«˜çº§æŸ¥è¯¢å±žæ€§
     */
    public String getSeniorqueryattrflag (){
        return seniorqueryattrflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦é«˜çº§æŸ¥è¯¢å±žæ€§
     */
    public void setSeniorqueryattrflag (String seniorqueryattrflag){
        this.seniorqueryattrflag = seniorqueryattrflag;
    }
    /**
     * èŽ·å– ç›¸ä¼¼æŸ¥é‡å±žæ€§
     */
    public String getSamerepeatattrflag (){
        return samerepeatattrflag;
    }
    /**
     * è®¾ç½® ç›¸ä¼¼æŸ¥é‡å±žæ€§
     */
    public void setSamerepeatattrflag (String samerepeatattrflag){
        this.samerepeatattrflag = samerepeatattrflag;
    }
    /**
     * èŽ·å– æ˜¯å¦æŽ’序
     */
    public String getSortattrflag (){
        return sortattrflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦æŽ’序
     */
    public void setSortattrflag (String sortattrflag){
        this.sortattrflag = sortattrflag;
    }
    /**
     * èŽ·å– æ˜¯å¦ç”ŸæˆäºŒç»´ç 
     */
    public String getQrcodeflag (){
        return qrcodeflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦ç”ŸæˆäºŒç»´ç 
     */
    public void setQrcodeflag (String qrcodeflag){
        this.qrcodeflag = qrcodeflag;
    }
    /**
     * èŽ·å– æ˜¯å¦ç”Ÿæˆä¸€ç»´ç 
     */
    public String getBarcodeflag (){
        return barcodeflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦ç”Ÿæˆä¸€ç»´ç 
     */
    public void setBarcodeflag (String barcodeflag){
        this.barcodeflag = barcodeflag;
    }
    /**
     * èŽ·å– ç»„合规则
     */
    public String getComponentrule (){
        return componentrule;
    }
    /**
     * è®¾ç½® ç»„合规则
     */
    public void setComponentrule (String componentrule){
        this.componentrule = componentrule;
    }
    /**
     * èŽ·å– éªŒè¯è§„则
     */
    public String getVerifyrule (){
        return verifyrule;
    }
    /**
     * è®¾ç½® éªŒè¯è§„则
     */
    public void setVerifyrule (String verifyrule){
        this.verifyrule = verifyrule;
    }
    /**
     * èŽ·å– åˆ†ç±»æ³¨å…¥å±‚级
     */
    public String getClassifyinvokelevel (){
        return classifyinvokelevel;
    }
    /**
     * è®¾ç½® åˆ†ç±»æ³¨å…¥å±‚级
     */
    public void setClassifyinvokelevel (String classifyinvokelevel){
        this.classifyinvokelevel = classifyinvokelevel;
    }
    /**
     * èŽ·å– åˆ†ç±»æ³¨å…¥çš„属性英文名称
     */
    public String getClassifyinvokeattr (){
        return classifyinvokeattr;
    }
    /**
     * è®¾ç½® åˆ†ç±»æ³¨å…¥çš„属性英文名称
     */
    public void setClassifyinvokeattr (String classifyinvokeattr){
        this.classifyinvokeattr = classifyinvokeattr;
    }
    /**
     * èŽ·å– åˆ†ç±»æ³¨å…¥çš„属性中文名称
     */
    public String getClassifyinvokeattrname (){
        return classifyinvokeattrname;
    }
    /**
     * è®¾ç½® åˆ†ç±»æ³¨å…¥çš„属性中文名称
     */
    public void setClassifyinvokeattrname (String classifyinvokeattrname){
        this.classifyinvokeattrname = classifyinvokeattrname;
    }
    /**
     * èŽ·å– åˆ†ç±»æ³¨å…¥æ˜¯å¦å¯ä»¥ç¼–辑
     */
    public String getClassifyinvokeeditflag (){
        return classifyinvokeeditflag;
    }
    /**
     * è®¾ç½® åˆ†ç±»æ³¨å…¥æ˜¯å¦å¯ä»¥ç¼–辑
     */
    public void setClassifyinvokeeditflag (String classifyinvokeeditflag){
        this.classifyinvokeeditflag = classifyinvokeeditflag;
    }
    /**
     * èŽ·å– ç å€¼åºå·
     */
    public Integer getOrdernum (){
        return ordernum;
    }
    /**
     * è®¾ç½® ç å€¼åºå·
     */
    public void setOrdernum (Integer ordernum){
        this.ordernum = ordernum;
    }
    /**
     * èŽ·å– è¡¨å•里是否显示
     */
    public String getFormdisplayflag (){
        return formdisplayflag;
    }
    /**
     * è®¾ç½® è¡¨å•里是否显示
     */
    public void setFormdisplayflag (String formdisplayflag){
        this.formdisplayflag = formdisplayflag;
    }
    /**
     * èŽ·å– åˆ—表里是否显示
     */
    public String getTabledisplayflag (){
        return tabledisplayflag;
    }
    /**
     * è®¾ç½® åˆ—表里是否显示
     */
    public void setTabledisplayflag (String tabledisplayflag){
        this.tabledisplayflag = tabledisplayflag;
    }
    /**
     * èŽ·å– æ‰€å±žå±žæ€§åˆ†ç»„
     */
    public String getAttributegroup (){
        return attributegroup;
    }
    /**
     * è®¾ç½® æ‰€å±žå±žæ€§åˆ†ç»„
     */
    public void setAttributegroup (String attributegroup){
        this.attributegroup = attributegroup;
    }
    /**
     * èŽ·å– ä½¿ç”¨æžšä¸¾è‹±æ–‡ç¼–号
     */
    public String getEnumid (){
        return enumid;
    }
    /**
     * è®¾ç½® ä½¿ç”¨æžšä¸¾è‹±æ–‡ç¼–号
     */
    public void setEnumid (String enumid){
        this.enumid = enumid;
    }
    /**
     * èŽ·å– ä½¿ç”¨æžšä¸¾ä¸­æ–‡åç§°
     */
    public String getEnumname (){
        return enumname;
    }
    /**
     * è®¾ç½® ä½¿ç”¨æžšä¸¾ä¸­æ–‡åç§°
     */
    public void setEnumname (String enumname){
        this.enumname = enumname;
    }
    /**
     * èŽ·å– æžšä¸¾æ˜¯å¦å¯ä»¥ç¼–辑
     */
    public String getEnumeditflag (){
        return enumeditflag;
    }
    /**
     * è®¾ç½® æžšä¸¾æ˜¯å¦å¯ä»¥ç¼–辑
     */
    public void setEnumeditflag (String enumeditflag){
        this.enumeditflag = enumeditflag;
    }
    /**
     * èŽ·å– å‚照的业务类型英文名称
     */
    public String getReferbtmid (){
        return referbtmid;
    }
    /**
     * è®¾ç½® å‚照的业务类型英文名称
     */
    public void setReferbtmid (String referbtmid){
        this.referbtmid = referbtmid;
    }
    /**
     * èŽ·å– å‚照的业务类型中文名称
     */
    public String getReferbtmname (){
        return referbtmname;
    }
    /**
     * è®¾ç½® å‚照的业务类型中文名称
     */
    public void setReferbtmname (String referbtmname){
        this.referbtmname = referbtmname;
    }
    /**
     * èŽ·å– æ˜¯å¦å¿…输
     */
    public String getRequireflag (){
        return requireflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦å¿…输
     */
    public void setRequireflag (String requireflag){
        this.requireflag = requireflag;
    }
    /**
     * èŽ·å– æ˜¯å¦åªè¯»
     */
    public String getReadonlyflag (){
        return readonlyflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦åªè¯»
     */
    public void setReadonlyflag (String readonlyflag){
        this.readonlyflag = readonlyflag;
    }
    /**
     * èŽ·å– å±žæ€§æŽ§åˆ¶è¾“入的长度
     */
    public Integer getControllength (){
        return controllength;
    }
    /**
     * è®¾ç½® å±žæ€§æŽ§åˆ¶è¾“入的长度
     */
    public void setControllength (Integer controllength){
        this.controllength = controllength;
    }
    /**
     * èŽ·å– è¡¨å•里显示的样式
     */
    public String getFormdisplaystyle (){
        return formdisplaystyle;
    }
    /**
     * è®¾ç½® è¡¨å•里显示的样式
     */
    public void setFormdisplaystyle (String formdisplaystyle){
        this.formdisplaystyle = formdisplaystyle;
    }
    /**
     * èŽ·å– è¡¨æ ¼é‡Œæ˜¾ç¤ºçš„æ ·å¼
     */
    public String getTabledisplaystyle (){
        return tabledisplaystyle;
    }
    /**
     * è®¾ç½® è¡¨æ ¼é‡Œæ˜¾ç¤ºçš„æ ·å¼
     */
    public void setTabledisplaystyle (String tabledisplaystyle){
        this.tabledisplaystyle = tabledisplaystyle;
    }
    /**
     * èŽ·å– è¡¨å•中超链接内容
     */
    public String getFormhref (){
        return formhref;
    }
    /**
     * è®¾ç½® è¡¨å•中超链接内容
     */
    public void setFormhref (String formhref){
        this.formhref = formhref;
    }
    /**
     * èŽ·å– è¡¨æ ¼ä¸­è¶…链接内容
     */
    public String getTablehref (){
        return tablehref;
    }
    /**
     * è®¾ç½® è¡¨æ ¼ä¸­è¶…链接内容
     */
    public void setTablehref (String tablehref){
        this.tablehref = tablehref;
    }
    /**
     * èŽ·å– å°æ•°ç²¾åº¦
     */
    public Integer getPrecisionlength (){
        return precisionlength;
    }
    /**
     * è®¾ç½® å°æ•°ç²¾åº¦
     */
    public void setPrecisionlength (Integer precisionlength){
        this.precisionlength = precisionlength;
    }
    /**
     * èŽ·å– å°æ•°åˆ»åº¦
     */
    public Integer getScalelength (){
        return scalelength;
    }
    /**
     * è®¾ç½® å°æ•°åˆ»åº¦
     */
    public void setScalelength (Integer scalelength){
        this.scalelength = scalelength;
    }
    /**
     * èŽ·å– å–值范围
     */
    public String getValuearea (){
        return valuearea;
    }
    /**
     * è®¾ç½® å–值范围
     */
    public void setValuearea (String valuearea){
        this.valuearea = valuearea;
    }
    /**
     * èŽ·å– æ—¶é—´æ ¼å¼
     */
    public String getCodedateformat (){
        return codedateformat;
    }
    /**
     * è®¾ç½® æ—¶é—´æ ¼å¼
     */
    public void setCodedateformat (String codedateformat){
        this.codedateformat = codedateformat;
    }
    /**
     * èŽ·å– è¡¨æ ¼é‡Œæ˜¾ç¤ºè°ƒç”¨çš„js
     */
    public String getTabledisplayjs (){
        return tabledisplayjs;
    }
    /**
     * è®¾ç½® è¡¨æ ¼é‡Œæ˜¾ç¤ºè°ƒç”¨çš„js
     */
    public void setTabledisplayjs (String tabledisplayjs){
        this.tabledisplayjs = tabledisplayjs;
    }
    /**
     * èŽ·å– æ˜¯å¦æ˜¾ç¤ºå¤šè¡Œæ–‡æœ¬
     */
    public String getTextareaflag (){
        return textareaflag;
    }
    /**
     * è®¾ç½® æ˜¯å¦æ˜¾ç¤ºå¤šè¡Œæ–‡æœ¬
     */
    public void setTextareaflag (String textareaflag){
        this.textareaflag = textareaflag;
    }
    /**
     * èŽ·å– é¢„览图
     */
    public String getImageflag (){
        return imageflag;
    }
    /**
     * è®¾ç½® é¢„览图
     */
    public void setImageflag (String imageflag){
        this.imageflag = imageflag;
    }
    /**
     * èŽ·å– é»˜è®¤å€¼
     */
    public String getDefaultvalue (){
        return defaultvalue;
    }
    /**
     * è®¾ç½® é»˜è®¤å€¼
     */
    public void setDefaultvalue (String defaultvalue){
        this.defaultvalue = defaultvalue;
    }
    /**
     * èŽ·å– å‰ç¼€
     */
    public String getPrefixvalue (){
        return prefixvalue;
    }
    /**
     * è®¾ç½® å‰ç¼€
     */
    public void setPrefixvalue (String prefixvalue){
        this.prefixvalue = prefixvalue;
    }
    /**
     * èŽ·å– åŽç¼€
     */
    public String getSuffixvalue (){
        return suffixvalue;
    }
    /**
     * è®¾ç½® åŽç¼€
     */
    public void setSuffixvalue (String suffixvalue){
        this.suffixvalue = suffixvalue;
    }
    /**
     * èŽ·å– é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性
     */
    public String getFiltersourceattr (){
        return filtersourceattr;
    }
    /**
     * è®¾ç½® é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性
     */
    public void setFiltersourceattr (String filtersourceattr){
        this.filtersourceattr = filtersourceattr;
    }
    /**
     * èŽ·å– é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性名称
     */
    public String getFiltersourceattrname (){
        return filtersourceattrname;
    }
    /**
     * è®¾ç½® é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性名称
     */
    public void setFiltersourceattrname (String filtersourceattrname){
        this.filtersourceattrname = filtersourceattrname;
    }
    public Integer getAttrTableWidth() {
        return attrTableWidth;
    }
    public void setAttrTableWidth(Integer attrTableWidth) {
        this.attrTableWidth = attrTableWidth;
    }
    public String getReferConfig() {
        return referConfig;
    }
    public void setReferConfig(String referConfig) {
        this.referConfig = referConfig;
    }
    @Override
    public String toString() {
        return "CodeClassifyTemplateAttrDTO{" +
                "classifytemplateoid='" + classifytemplateoid + '\'' +
                ", classifytemplateoidName='" + classifytemplateoidName + '\'' +
                ", classifyattributeoid='" + classifyattributeoid + '\'' +
                ", classifyattributeoidName='" + classifyattributeoidName + '\'' +
                ", attributedatatype='" + attributedatatype + '\'' +
                ", keyattrflag='" + keyattrflag + '\'' +
                ", queryattrflag='" + queryattrflag + '\'' +
                ", seniorqueryattrflag='" + seniorqueryattrflag + '\'' +
                ", samerepeatattrflag='" + samerepeatattrflag + '\'' +
                ", sortattrflag='" + sortattrflag + '\'' +
                ", qrcodeflag='" + qrcodeflag + '\'' +
                ", barcodeflag='" + barcodeflag + '\'' +
                ", componentrule='" + componentrule + '\'' +
                ", verifyrule='" + verifyrule + '\'' +
                ", classifyinvokelevel='" + classifyinvokelevel + '\'' +
                ", classifyinvokeattr='" + classifyinvokeattr + '\'' +
                ", classifyinvokeattrname='" + classifyinvokeattrname + '\'' +
                ", classifyinvokeeditflag='" + classifyinvokeeditflag + '\'' +
                ", ordernum=" + ordernum +
                ", formdisplayflag='" + formdisplayflag + '\'' +
                ", tabledisplayflag='" + tabledisplayflag + '\'' +
                ", attributegroup='" + attributegroup + '\'' +
                ", enumString='" + enumString + '\'' +
                ", enumid='" + enumid + '\'' +
                ", enumname='" + enumname + '\'' +
                ", enumeditflag='" + enumeditflag + '\'' +
                ", referbtmid='" + referbtmid + '\'' +
                ", referbtmname='" + referbtmname + '\'' +
                ", referConfig='" + referConfig + '\'' +
                ", requireflag='" + requireflag + '\'' +
                ", readonlyflag='" + readonlyflag + '\'' +
                ", controllength=" + controllength +
                ", formdisplaystyle='" + formdisplaystyle + '\'' +
                ", tabledisplaystyle='" + tabledisplaystyle + '\'' +
                ", formhref='" + formhref + '\'' +
                ", tablehref='" + tablehref + '\'' +
                ", precisionlength=" + precisionlength +
                ", scalelength=" + scalelength +
                ", valuearea='" + valuearea + '\'' +
                ", codedateformat='" + codedateformat + '\'' +
                ", tabledisplayjs='" + tabledisplayjs + '\'' +
                ", textareaflag='" + textareaflag + '\'' +
                ", imageflag='" + imageflag + '\'' +
                ", defaultvalue='" + defaultvalue + '\'' +
                ", prefixvalue='" + prefixvalue + '\'' +
                ", suffixvalue='" + suffixvalue + '\'' +
                ", filtersourceattr='" + filtersourceattr + '\'' +
                ", filtersourceattrname='" + filtersourceattrname + '\'' +
                ", attrTableWidth=" + attrTableWidth +
                "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateButtonDTO.java
@@ -2,6 +2,7 @@
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import lombok.Data;
/**
 * ä¸»é¢˜åº“里模板包含的按钮数据传输对象
@@ -9,6 +10,7 @@
 * @author weidy
 * @date 2022-01-24
 */
@Data
public class CodeClassifyTemplateButtonDTO extends BaseModelVO {
    /**
@@ -19,25 +21,25 @@
    /**
     * æ‰€å±žæ¨¡æ¿
     */
    private String classifytemplateoid;
    private String classifyTemplateOid;
    /**
     * æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
     */
    private String classifytemplateoidName;
    private String classifyTemplateOidName;
    /**
     * æŒ‰é’®çš„主键
     */
    private String classifybuttonoid;
    private String classifyButtonOid;
    /**
     * æŒ‰é’®çš„主键显示文本
     */
    private String classifybuttonoidName;
    private String classifyButtonOidName;
    /**
     * æŒ‰é’®ç”¨é€”
     */
    private String buttonuse;
    private String buttonUse;
    /**
     * æŒ‰é’®ç”¨é€”显示对象
@@ -47,109 +49,6 @@
    /**
     * ç å€¼åºå·
     */
    private Integer ordernum;
    private Integer orderNum;
    /**
     * èŽ·å– æ‰€å±žæ¨¡æ¿
     */
    public String getClassifytemplateoid (){
        return classifytemplateoid;
    }
    /**
     * è®¾ç½® æ‰€å±žæ¨¡æ¿
     */
    public void setClassifytemplateoid (String classifytemplateoid){
        this.classifytemplateoid = classifytemplateoid;
    }
    /**
     * èŽ·å–æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getClassifytemplateoidName (){
        return classifytemplateoidName;
    }
    /**
     * è®¾ç½®æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setClassifytemplateoidName (String classifytemplateoidName){
        this.classifytemplateoidName = classifytemplateoidName;
    }
    /**
     * èŽ·å– æŒ‰é’®çš„主键
     */
    public String getClassifybuttonoid (){
        return classifybuttonoid;
    }
    /**
     * è®¾ç½® æŒ‰é’®çš„主键
     */
    public void setClassifybuttonoid (String classifybuttonoid){
        this.classifybuttonoid = classifybuttonoid;
    }
    /**
     * èŽ·å–æŒ‰é’®çš„ä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getClassifybuttonoidName (){
        return classifybuttonoidName;
    }
    /**
     * è®¾ç½®æŒ‰é’®çš„主键显示文本
     */
    public void setClassifybuttonoidName (String classifybuttonoidName){
        this.classifybuttonoidName = classifybuttonoidName;
    }
    /**
     * èŽ·å– æŒ‰é’®ç”¨é€”
     */
    public String getButtonuse (){
        return buttonuse;
    }
    /**
     * è®¾ç½® æŒ‰é’®ç”¨é€”
     */
    public void setButtonuse (String buttonuse){
        this.buttonuse = buttonuse;
    }
    /**
     * èŽ·å– ç å€¼åºå·
     */
    public Integer getOrdernum (){
        return ordernum;
    }
    /**
     * è®¾ç½® ç å€¼åºå·
     */
    public void setOrdernum (Integer ordernum){
        this.ordernum = ordernum;
    }
    public String getButtonUseText() {
        return buttonUseText;
    }
    public void setButtonUseText(String buttonUseText) {
        this.buttonUseText = buttonUseText;
    }
    @Override
    public String toString() {
        return "CodeClassifyTemplateButtonDTO{" +
                "classifytemplateoid='" + classifytemplateoid + '\'' +
                ", classifytemplateoidName='" + classifytemplateoidName + '\'' +
                ", classifybuttonoid='" + classifybuttonoid + '\'' +
                ", classifybuttonoidName='" + classifybuttonoidName + '\'' +
                ", buttonuse='" + buttonuse + '\'' +
                ", buttonUseText='" + buttonUseText + '\'' +
                ", ordernum=" + ordernum +
                "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyValueDTO.java
@@ -2,24 +2,26 @@
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import lombok.Data;
/**
 * åˆ†ç±»ç æ®µçš„码值数据传输对象
 *
 * @author weidy
 * @date 2022-01-24
 * @author ludc
 * @date 2022-04-24
 */
@Data
public class CodeClassifyValueDTO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707117098778726L;
    /**
     * åˆ†ç±»ç æ®µä¸»é”®
     */
    private String codeclassifysecoid;
    private String codeClassifySecOid;
    /**
     * åˆ†ç±»ç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
@@ -28,77 +30,11 @@
    /**
     * ç å€¼åºå·
     */
    private Integer ordernum;
    private Integer orderNum;
    /**
     * ä¸Šçº§åˆ†ç±»ç å€¼ä¸»é”®
     */
    private String parentclassifyvalueoid;
    private String parentClassifyValueOid;
    /**
     * èŽ·å– åˆ†ç±»ç æ®µä¸»é”®
     */
    public String getCodeclassifysecoid (){
        return codeclassifysecoid;
    }
    /**
     * è®¾ç½® åˆ†ç±»ç æ®µä¸»é”®
     */
    public void setCodeclassifysecoid (String codeclassifysecoid){
        this.codeclassifysecoid = codeclassifysecoid;
    }
    /**
     * èŽ·å–åˆ†ç±»ç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getCodeclassifysecoidName (){
        return codeclassifysecoidName;
    }
    /**
     * è®¾ç½®åˆ†ç±»ç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setCodeclassifysecoidName (String codeclassifysecoidName){
        this.codeclassifysecoidName = codeclassifysecoidName;
    }
    /**
     * èŽ·å– ç å€¼åºå·
     */
    public Integer getOrdernum (){
        return ordernum;
    }
    /**
     * è®¾ç½® ç å€¼åºå·
     */
    public void setOrdernum (Integer ordernum){
        this.ordernum = ordernum;
    }
    /**
     * èŽ·å– ä¸Šçº§åˆ†ç±»ç å€¼ä¸»é”®
     */
    public String getParentclassifyvalueoid (){
        return parentclassifyvalueoid;
    }
    /**
     * è®¾ç½® ä¸Šçº§åˆ†ç±»ç å€¼ä¸»é”®
     */
    public void setParentclassifyvalueoid (String parentclassifyvalueoid){
        this.parentclassifyvalueoid = parentclassifyvalueoid;
    }
    @Override
    public String toString() {
        return "CodeClassifyValueDTO{" +
        "codeclassifysecoid='" + codeclassifysecoid +"',"+
        "codeclassifysecoidName='" + codeclassifysecoidName +"'," +
        "ordernum='" + ordernum +"',"+
        "parentclassifyvalueoid='" + parentclassifyvalueoid +"',"+
        "}" + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCodeAllCodeDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCodeAllcodeDTO.java ÐÞ¸Ä
@@ -28,7 +28,7 @@
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodeCodeAllcodeDTO extends CodeAllCode {
public class CodeCodeAllCodeDTO extends CodeAllCode {
    private static final long serialVersionUID = 1L;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTemplatePhaseDTO.java
@@ -2,15 +2,17 @@
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import lombok.Data;
import java.util.List;
/**
 * æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象
 *
 * @author weidy
 * @author ludc
 * @date 2022-01-24
 */
@Data
public class CodeTemplatePhaseDTO extends BaseModelVO {
    /**
@@ -21,60 +23,16 @@
    /**
     * æ‰€å±žç¼–码规则
     */
    private String codeclassifytemplateoid;
    private String codeClassifyTemplateOid;
    /**
     * æ‰€å±žç¼–码规则显示文本
     */
    private String codeclassifytemplateoidName;
    private String codeClassifyTemplateOidName;
    /**
     * åŒ…含的属性
     */
    private List<CodePhaseAttrDTO> attributes;
    /**
     * èŽ·å– æ‰€å±žç¼–码规则
     */
    public String getCodeclassifytemplateoid (){
        return codeclassifytemplateoid;
    }
    /**
     * è®¾ç½® æ‰€å±žç¼–码规则
     */
    public void setCodeclassifytemplateoid (String codeclassifytemplateoid){
        this.codeclassifytemplateoid = codeclassifytemplateoid;
    }
    /**
     * èŽ·å–æ‰€å±žç¼–ç è§„åˆ™æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getCodeclassifytemplateoidName (){
        return codeclassifytemplateoidName;
    }
    /**
     * è®¾ç½®æ‰€å±žç¼–码规则显示文本
     */
    public void setCodeclassifytemplateoidName (String codeclassifytemplateoidName){
        this.codeclassifytemplateoidName = codeclassifytemplateoidName;
    }
    public List<CodePhaseAttrDTO> getAttributes() {
        return attributes;
    }
    public void setAttributes(List<CodePhaseAttrDTO> attributes) {
        this.attributes = attributes;
    }
    @Override
    public String toString() {
        return "CodeTemplatePhaseDTO{" +
                "codeclassifytemplateoid='" + codeclassifytemplateoid + '\'' +
                ", codeclassifytemplateoidName='" + codeclassifytemplateoidName + '\'' +
                ", attributes=" + attributes +
                "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstemplateVO.java
@@ -1,41 +1,31 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.vo;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
 * ç¼–码库定义-模板管理 è§†å›¾å®žä½“ç±»
 * åˆ†ç±»æ¨¡æ¿å¯¹è±¡æ˜¾ç¤ºå¯¹è±¡
 *
 * @author yuxc
 * @since 2023-04-10
 * @date 2022-01-24
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodeClstemplateVO extends CodeClstemplateEntity {
    private static final long serialVersionUID = 1L;
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707118684061936L;
    /**
     * åŒ…含的属性内容
     */
    private List<CodeClstempattrVO> attributes;
    private List<CodeClassifyTemplateAttrVO> attributes;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java
@@ -1,15 +1,17 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import lombok.Data;
import java.util.List;
/**
 * ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡
 *
 * @author weidy
 * @date 2022-01-24
 * @author ludc
 * @date 2023-04-24
 */
@Data
public class CodeBasicSecVO extends BaseModelVO {
    /**
@@ -21,7 +23,6 @@
    * ç æ®µç±»åž‹
    */
    private String secType;
    /**
    * ç æ®µç±»åž‹æ˜¾ç¤ºæ–‡æœ¬
@@ -241,411 +242,4 @@
     */
    private List<CodeFixedValueVO> fixedValueVOList;
    public String getReferCodeClassifyOidName() {
        return referCodeClassifyOidName;
    }
    public void setReferCodeClassifyOidName(String referCodeClassifyOidName) {
        this.referCodeClassifyOidName = referCodeClassifyOidName;
    }
    public String getReferAttributeId() {
        return referAttributeId;
    }
    public void setReferAttributeId(String referAttributeId) {
        this.referAttributeId = referAttributeId;
    }
    //分类的内容不能直接放,因为可能很多
    public String getPkCodeRule() {
        return pkCodeRule;
    }
    public void setPkCodeRule(String pkCodeRule) {
        this.pkCodeRule = pkCodeRule;
    }
    public Integer getOrderNum() {
        return orderNum;
    }
    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }
    public String getCodeSecLengthTypeText() {
        return codeSecLengthTypeText;
    }
    public void setCodeSecLengthTypeText(String codeSecLengthTypeText) {
        this.codeSecLengthTypeText = codeSecLengthTypeText;
    }
    public String getMatchClassifyValueFlag() {
        return matchClassifyValueFlag;
    }
    public void setMatchClassifyValueFlag(String matchClassifyValueFlag) {
        this.matchClassifyValueFlag = matchClassifyValueFlag;
    }
    public String getParentClassifySecOid() {
        return parentClassifySecOid;
    }
    public void setParentClassifySecOid(String parentClassifySecOid) {
        this.parentClassifySecOid = parentClassifySecOid;
    }
    public String getParentClassifySecText() {
        return parentClassifySecText;
    }
    public void setParentClassifySecText(String parentClassifySecText) {
        this.parentClassifySecText = parentClassifySecText;
    }
    public String getNullableFlag() {
        return nullableFlag;
    }
    public void setNullableFlag(String nullableFlag) {
        this.nullableFlag = nullableFlag;
    }
    public String getComponentCodeFlag() {
        return componentCodeFlag;
    }
    public void setComponentCodeFlag(String componentCodeFlag) {
        this.componentCodeFlag = componentCodeFlag;
    }
    public String getSerialDependFlag() {
        return serialDependFlag;
    }
    public void setSerialDependFlag(String serialDependFlag) {
        this.serialDependFlag = serialDependFlag;
    }
    public String getDisplayFlag() {
        return displayFlag;
    }
    public void setDisplayFlag(String displayFlag) {
        this.displayFlag = displayFlag;
    }
    public Integer getSerialDependOrder() {
        return serialDependOrder;
    }
    public void setSerialDependOrder(Integer serialDependOrder) {
        this.serialDependOrder = serialDependOrder;
    }
    /**
    * è®¾ç½® ç æ®µç±»åž‹
    */
    public void setSecType (String secType){
        this.secType = secType;
    }
    public String getSecTypeText() {
        return secTypeText;
    }
    public void setSecTypeText(String secTypeText) {
        this.secTypeText = secTypeText;
    }
    public String getSecType() {
        return secType;
    }
    public String getCodeSecLengthType() {
        return codeSecLengthType;
    }
    public void setCodeSecLengthType(String codeSecLengthType) {
        this.codeSecLengthType = codeSecLengthType;
    }
    public String getCodeSecLength() {
        return codeSecLength;
    }
    public void setCodeSecLength(String codeSecLength) {
        this.codeSecLength = codeSecLength;
    }
    public String getGetValueClass() {
        return getValueClass;
    }
    public void setGetValueClass(String getValueClass) {
        this.getValueClass = getValueClass;
    }
    public String getCodeDateFormatStr() {
        return codeDateFormatStr;
    }
    public void setCodeDateFormatStr(String codeDateFormatStr) {
        this.codeDateFormatStr = codeDateFormatStr;
    }
    public String getCodeLevelType() {
        return codeLevelType;
    }
    public void setCodeLevelType(String codeLevelType) {
        this.codeLevelType = codeLevelType;
    }
    public String getCodeLevelTypeText() {
        return codeLevelTypeText;
    }
    public void setCodeLevelTypeText(String codeLevelTypeText) {
        this.codeLevelTypeText = codeLevelTypeText;
    }
    public Integer getCodeLevelValue() {
        return codeLevelValue;
    }
    public void setCodeLevelValue(Integer codeLevelValue) {
        this.codeLevelValue = codeLevelValue;
    }
    public Integer getValueCutLength() {
        return valueCutLength;
    }
    public void setValueCutLength(Integer valueCutLength) {
        this.valueCutLength = valueCutLength;
    }
    public String getValueCutType() {
        return valueCutType;
    }
    public void setValueCutType(String valueCutType) {
        this.valueCutType = valueCutType;
    }
    public String getValueCutTypeText() {
        return valueCutTypeText;
    }
    public void setValueCutTypeText(String valueCutTypeText) {
        this.valueCutTypeText = valueCutTypeText;
    }
    public String getCodeGetValueType() {
        return codeGetValueType;
    }
    public void setCodeGetValueType(String codeGetValueType) {
        this.codeGetValueType = codeGetValueType;
    }
    public String getCodeGetValueTypeText() {
        return codeGetValueTypeText;
    }
    public void setCodeGetValueTypeText(String codeGetValueTypeText) {
        this.codeGetValueTypeText = codeGetValueTypeText;
    }
    public String getReferCodeClassifyOid() {
        return referCodeClassifyOid;
    }
    public void setReferCodeClassifyOid(String referCodeClassifyOid) {
        this.referCodeClassifyOid = referCodeClassifyOid;
    }
    public String getReferConfig() {
        return referConfig;
    }
    public void setReferConfig(String referConfig) {
        this.referConfig = referConfig;
    }
    public String getReferValueInfo() {
        return referValueInfo;
    }
    public void setReferValueInfo(String referValueInfo) {
        this.referValueInfo = referValueInfo;
    }
    public String getFilterSql() {
        return filterSql;
    }
    public void setFilterSql(String filterSql) {
        this.filterSql = filterSql;
    }
    public String getSerialStart() {
        return serialStart;
    }
    public void setSerialStart(String serialStart) {
        this.serialStart = serialStart;
    }
    public Integer getSerialStep() {
        return serialStep;
    }
    public void setSerialStep(Integer serialStep) {
        this.serialStep = serialStep;
    }
    public String getCodeFillType() {
        return codeFillType;
    }
    public void setCodeFillType(String codeFillType) {
        this.codeFillType = codeFillType;
    }
    public String getCodeFillTypeText() {
        return codeFillTypeText;
    }
    public void setCodeFillTypeText(String codeFillTypeText) {
        this.codeFillTypeText = codeFillTypeText;
    }
    public String getCodeFillSeparator() {
        return codeFillSeparator;
    }
    public void setCodeFillSeparator(String codeFillSeparator) {
        this.codeFillSeparator = codeFillSeparator;
    }
    public String getCodeFillLength() {
        return codeFillLength;
    }
    public void setCodeFillLength(String codeFillLength) {
        this.codeFillLength = codeFillLength;
    }
    public Integer getCodeFillLimit() {
        return codeFillLimit;
    }
    public void setCodeFillLimit(Integer codeFillLimit) {
        this.codeFillLimit = codeFillLimit;
    }
    public String getCodeFillFlag() {
        return codeFillFlag;
    }
    public void setCodeFillFlag(String codeFillFlag) {
        this.codeFillFlag = codeFillFlag;
    }
    public String getCustomCodeSerialClass() {
        return customCodeSerialClass;
    }
    public void setCustomCodeSerialClass(String customCodeSerialClass) {
        this.customCodeSerialClass = customCodeSerialClass;
    }
    public List<CodeFixedValueVO> getFixedValueVOList() {
        return fixedValueVOList;
    }
    public void setFixedValueVOList(List<CodeFixedValueVO> fixedValueVOList) {
        this.fixedValueVOList = fixedValueVOList;
    }
    public String getReferAttributeName() {
        return referAttributeName;
    }
    public void setReferAttributeName(String referAttributeName) {
        this.referAttributeName = referAttributeName;
    }
    public String getReferBtmId() {
        return referBtmId;
    }
    public void setReferBtmId(String referBtmId) {
        this.referBtmId = referBtmId;
    }
    public String getReferBtmName() {
        return referBtmName;
    }
    public void setReferBtmName(String referBtmName) {
        this.referBtmName = referBtmName;
    }
    @Override
    public String toString() {
        return "CodeBasicSecVO{" +
                "secType='" + secType + '\'' +
                ", secTypeText='" + secTypeText + '\'' +
                ", pkCodeRule='" + pkCodeRule + '\'' +
                ", orderNum=" + orderNum +
                ", codeSecLengthType='" + codeSecLengthType + '\'' +
                ", codeSecLengthTypeText='" + codeSecLengthTypeText + '\'' +
                ", codeSecLength='" + codeSecLength + '\'' +
                ", referAttributeName='" + referAttributeName + '\'' +
                ", referAttributeId='" + referAttributeId + '\'' +
                ", getValueClass='" + getValueClass + '\'' +
                ", codeDateFormatStr='" + codeDateFormatStr + '\'' +
                ", codeLevelType='" + codeLevelType + '\'' +
                ", codeLevelTypeText='" + codeLevelTypeText + '\'' +
                ", codeLevelValue=" + codeLevelValue +
                ", valueCutLength=" + valueCutLength +
                ", valueCutType='" + valueCutType + '\'' +
                ", valueCutTypeText='" + valueCutTypeText + '\'' +
                ", codeGetValueType='" + codeGetValueType + '\'' +
                ", codeGetValueTypeText='" + codeGetValueTypeText + '\'' +
                ", referCodeClassifyOid='" + referCodeClassifyOid + '\'' +
                ", referCodeClassifyOidName='" + referCodeClassifyOidName + '\'' +
                ", referBtmId='" + referBtmId + '\'' +
                ", referBtmName='" + referBtmName + '\'' +
                ", referConfig='" + referConfig + '\'' +
                ", referValueInfo='" + referValueInfo + '\'' +
                ", filterSql='" + filterSql + '\'' +
                ", serialStart='" + serialStart + '\'' +
                ", serialStep=" + serialStep +
                ", codeFillType='" + codeFillType + '\'' +
                ", codeFillTypeText='" + codeFillTypeText + '\'' +
                ", codeFillSeparator='" + codeFillSeparator + '\'' +
                ", codeFillLength='" + codeFillLength + '\'' +
                ", codeFillLimit=" + codeFillLimit +
                ", codeFillFlag='" + codeFillFlag + '\'' +
                ", customCodeSerialClass='" + customCodeSerialClass + '\'' +
                ", matchClassifyValueFlag='" + matchClassifyValueFlag + '\'' +
                ", parentClassifySecOid='" + parentClassifySecOid + '\'' +
                ", parentClassifySecText='" + parentClassifySecText + '\'' +
                ", nullableFlag='" + nullableFlag + '\'' +
                ", componentCodeFlag='" + componentCodeFlag + '\'' +
                ", serialDependFlag='" + serialDependFlag + '\'' +
                ", displayFlag='" + displayFlag + '\'' +
                ", serialDependOrder=" + serialDependOrder +
                ", fixedValueVOList=" + fixedValueVOList +
                "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
@@ -1,11 +1,14 @@
package com.vci.ubcs.code.vo.pagemodel;
import lombok.Data;
/**
 * ä¸»é¢˜åº“分类的模板属性显示对象
 *
 * @author weidy
 * @date 2022-01-24
 */
@Data
public class CodeClassifyTemplateAttrVO extends BaseModelVO {
    /**
@@ -16,284 +19,242 @@
    /**
    * æ‰€å±žæ¨¡æ¿
    */
    private String classifytemplateoid;
    private String classifyTemplateOid;
    /**
    * æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
    */
    private String classifytemplateoidName;
    private String classifyTemplateOidName;
    /**
    * æ‰€å±žåˆ†ç±»ä¸­çš„属性主键
    */
    private String classifyattributeoid;
    private String classifyAttributeOid;
    /**
    * æ‰€å±žåˆ†ç±»ä¸­çš„属性主键显示文本
    */
    private String classifyattributeoidName;
    private String classifyAttributeOidName;
    /**
    * å±žæ€§çš„类型
    */
    private String attributedatatype;
    private String attributeDataType;
    /**
     * å±žæ€§ç±»åž‹æ˜¾ç¤º
     */
    private String attributeDataTypeText;
    /**
    * æ˜¯å¦å…³é”®å±žæ€§
    */
    private String keyattrflag;
    private String keyAttrFlag;
    /**
    * æ˜¯å¦å¿«é€ŸæŸ¥è¯¢å±žæ€§
    */
    private String queryattrflag;
    private String queryAttrFlag;
    /**
    * æ˜¯å¦é«˜çº§æŸ¥è¯¢å±žæ€§
    */
    private String seniorqueryattrflag;
    private String seniorQueryAttrFlag;
    /**
    * ç›¸ä¼¼æŸ¥é‡å±žæ€§
    */
    private String samerepeatattrflag;
    private String sameRepeatAttrFlag;
    /**
    * æ˜¯å¦æŽ’序
    */
    private String sortattrflag;
    private String sortAttrFlag;
    /**
    * æ˜¯å¦ç”ŸæˆäºŒç»´ç 
    */
    private String qrcodeflag;
    private String qrcodeFlag;
    /**
    * æ˜¯å¦ç”Ÿæˆä¸€ç»´ç 
    */
    private String barcodeflag;
    private String barcodeFlag;
    /**
    * ç»„合规则
    */
    private String componentrule;
    private String componentRule;
    /**
    * éªŒè¯è§„则
    */
    private String verifyrule;
    private String verifyRule;
    /**
    * åˆ†ç±»æ³¨å…¥å±‚级
    */
    private String classifyinvokelevel;
    private String classifyInvokeLevel;
    /**
    * åˆ†ç±»æ³¨å…¥çš„属性英文名称
    */
    private String classifyinvokeattr;
    private String classifyInvokeAttr;
    /**
    * åˆ†ç±»æ³¨å…¥çš„属性中文名称
    */
    private String classifyinvokeattrname;
    private String classifyInvokeAttrName;
    /**
    * åˆ†ç±»æ³¨å…¥æ˜¯å¦å¯ä»¥ç¼–辑
    */
    private String classifyinvokeeditflag;
    private String classifyInvokeEditFlag;
    /**
    * ç å€¼åºå·
    */
    private Integer ordernum;
    private Integer orderNum;
    /**
    * è¡¨å•里是否显示
    */
    private String formdisplayflag;
    private String formDisplayFlag;
    /**
    * åˆ—表里是否显示
    */
    private String tabledisplayflag;
    private String tableDisplayFlag;
    /**
    * æ‰€å±žå±žæ€§åˆ†ç»„
    */
    private String attributegroup;
    private String attributeGroup;
    /**
    * ä½¿ç”¨æžšä¸¾è‹±æ–‡ç¼–号
    */
    private String enumid;
    private String enumId;
    /**
    * ä½¿ç”¨æžšä¸¾ä¸­æ–‡åç§°
    */
    private String enumname;
    private String enumName;
    /**
    * æžšä¸¾æ˜¯å¦å¯ä»¥ç¼–辑
    */
    private String enumeditflag;
    private String enumEditFlag;
    /**
    * å‚照的业务类型英文名称
    */
    private String referbtmid;
    private String referBtmId;
    /**
    * å‚照的业务类型中文名称
    */
    private String referbtmname;
    private String referBtmName;
    /**
    * å‚照窗口配置
    */
    private String referConfig;
    /**
    * æ˜¯å¦å¿…输
    */
    private String requireflag;
    private String requireFlag;
    /**
    * æ˜¯å¦åªè¯»
    */
    private String readonlyflag;
    private String readOnlyFlag;
    /**
    * å±žæ€§æŽ§åˆ¶è¾“入的长度
    */
    private Integer controllength;
    private Integer controlLength;
    /**
    * è¡¨å•里显示的样式
    */
    private String formdisplaystyle;
    private String formDisplayStyle;
    /**
    * è¡¨æ ¼é‡Œæ˜¾ç¤ºçš„æ ·å¼
    */
    private String tabledisplaystyle;
    private String tableDisplayStyle;
    /**
    * è¡¨å•中超链接内容
    */
    private String formhref;
    private String formHref;
    /**
    * è¡¨æ ¼ä¸­è¶…链接内容
    */
    private String tablehref;
    private String tableHref;
    /**
    * å°æ•°ç²¾åº¦
    */
    private Integer precisionlength;
    private Integer precisionLength;
    /**
    * å°æ•°åˆ»åº¦
    */
    private Integer scalelength;
    private Integer scaleLength;
    /**
    * å–值范围
    */
    private String valuearea;
    private String valueArea;
    /**
    * æ—¶é—´æ ¼å¼
    */
    private String codedateformat;
    private String codeDateFormat;
    /**
    * è¡¨æ ¼é‡Œæ˜¾ç¤ºè°ƒç”¨çš„js
    */
    private String tabledisplayjs;
    private String tableDisplayJs;
    /**
    * æ˜¯å¦æ˜¾ç¤ºå¤šè¡Œæ–‡æœ¬
    */
    private String textareaflag;
    private String textAreaFlag;
    /**
    * é¢„览图
    */
    private String imageflag;
    private String imageFlag;
    /**
    * é»˜è®¤å€¼
    */
    private String defaultvalue;
    private String defaultValue;
    /**
    * å‰ç¼€
    */
    private String prefixvalue;
    private String prefixValue;
    /**
    * åŽç¼€
    */
    private String suffixvalue;
    private String suffixValue;
    /**
    * é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性
    */
    private String filtersourceattr;
    private String filterSourceAttr;
    /**
    * é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性名称
    */
    private String filtersourceattrname;
    private String filterSourceAttrName;
    /**
     * ä½¿ç”¨æžšä¸¾æ³¨å…¥çš„字符串格式
@@ -330,734 +291,4 @@
     */
    private String parentQueryAttr;
    public String getExplain() {
        return explain;
    }
    public void setExplain(String explain) {
        this.explain = explain;
    }
    public String getLibraryIdentification() {
        return libraryIdentification;
    }
    public void setLibraryIdentification(String libraryIdentification) {
        this.libraryIdentification = libraryIdentification;
    }
    public String getParentCode() {
        return parentCode;
    }
    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }
    public String getParentName() {
        return parentName;
    }
    public void setParentName(String parentName) {
        this.parentName = parentName;
    }
    public String getParentQueryAttr() {
        return parentQueryAttr;
    }
    public void setParentQueryAttr(String parentQueryAttr) {
        this.parentQueryAttr = parentQueryAttr;
    }
    /**
     * èŽ·å– æ‰€å±žæ¨¡æ¿
     */
    public String getClassifytemplateoid (){
        return classifytemplateoid;
    }
    /**
    * è®¾ç½® æ‰€å±žæ¨¡æ¿
    */
    public void setClassifytemplateoid (String classifytemplateoid){
        this.classifytemplateoid = classifytemplateoid;
    }
    /**
     * èŽ·å–æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getClassifytemplateoidName (){
        return classifytemplateoidName;
    }
    /**
    * è®¾ç½®æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
    */
    public void setClassifytemplateoidName (String classifytemplateoidName){
        this.classifytemplateoidName = classifytemplateoidName;
    }
    /**
     * èŽ·å– æ‰€å±žåˆ†ç±»ä¸­çš„属性主键
     */
    public String getClassifyattributeoid (){
        return classifyattributeoid;
    }
    /**
    * è®¾ç½® æ‰€å±žåˆ†ç±»ä¸­çš„属性主键
    */
    public void setClassifyattributeoid (String classifyattributeoid){
        this.classifyattributeoid = classifyattributeoid;
    }
    /**
     * èŽ·å–æ‰€å±žåˆ†ç±»ä¸­çš„å±žæ€§ä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getClassifyattributeoidName (){
        return classifyattributeoidName;
    }
    /**
    * è®¾ç½®æ‰€å±žåˆ†ç±»ä¸­çš„属性主键显示文本
    */
    public void setClassifyattributeoidName (String classifyattributeoidName){
        this.classifyattributeoidName = classifyattributeoidName;
    }
    /**
     * èŽ·å– å±žæ€§çš„类型
     */
    public String getAttributedatatype (){
        return attributedatatype;
    }
    /**
    * è®¾ç½® å±žæ€§çš„类型
    */
    public void setAttributedatatype (String attributedatatype){
        this.attributedatatype = attributedatatype;
    }
    /**
     * èŽ·å– æ˜¯å¦å…³é”®å±žæ€§
     */
    public String getKeyattrflag (){
        return keyattrflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦å…³é”®å±žæ€§
    */
    public void setKeyattrflag (String keyattrflag){
        this.keyattrflag = keyattrflag;
    }
    /**
     * èŽ·å– æ˜¯å¦å¿«é€ŸæŸ¥è¯¢å±žæ€§
     */
    public String getQueryattrflag (){
        return queryattrflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦å¿«é€ŸæŸ¥è¯¢å±žæ€§
    */
    public void setQueryattrflag (String queryattrflag){
        this.queryattrflag = queryattrflag;
    }
    /**
     * èŽ·å– æ˜¯å¦é«˜çº§æŸ¥è¯¢å±žæ€§
     */
    public String getSeniorqueryattrflag (){
        return seniorqueryattrflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦é«˜çº§æŸ¥è¯¢å±žæ€§
    */
    public void setSeniorqueryattrflag (String seniorqueryattrflag){
        this.seniorqueryattrflag = seniorqueryattrflag;
    }
    /**
     * èŽ·å– ç›¸ä¼¼æŸ¥é‡å±žæ€§
     */
    public String getSamerepeatattrflag (){
        return samerepeatattrflag;
    }
    /**
    * è®¾ç½® ç›¸ä¼¼æŸ¥é‡å±žæ€§
    */
    public void setSamerepeatattrflag (String samerepeatattrflag){
        this.samerepeatattrflag = samerepeatattrflag;
    }
    /**
     * èŽ·å– æ˜¯å¦æŽ’序
     */
    public String getSortattrflag (){
        return sortattrflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦æŽ’序
    */
    public void setSortattrflag (String sortattrflag){
        this.sortattrflag = sortattrflag;
    }
    /**
     * èŽ·å– æ˜¯å¦ç”ŸæˆäºŒç»´ç 
     */
    public String getQrcodeflag (){
        return qrcodeflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦ç”ŸæˆäºŒç»´ç 
    */
    public void setQrcodeflag (String qrcodeflag){
        this.qrcodeflag = qrcodeflag;
    }
    /**
     * èŽ·å– æ˜¯å¦ç”Ÿæˆä¸€ç»´ç 
     */
    public String getBarcodeflag (){
        return barcodeflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦ç”Ÿæˆä¸€ç»´ç 
    */
    public void setBarcodeflag (String barcodeflag){
        this.barcodeflag = barcodeflag;
    }
    /**
     * èŽ·å– ç»„合规则
     */
    public String getComponentrule (){
        return componentrule;
    }
    /**
    * è®¾ç½® ç»„合规则
    */
    public void setComponentrule (String componentrule){
        this.componentrule = componentrule;
    }
    /**
     * èŽ·å– éªŒè¯è§„则
     */
    public String getVerifyrule (){
        return verifyrule;
    }
    /**
    * è®¾ç½® éªŒè¯è§„则
    */
    public void setVerifyrule (String verifyrule){
        this.verifyrule = verifyrule;
    }
    /**
     * èŽ·å– åˆ†ç±»æ³¨å…¥å±‚级
     */
    public String getClassifyinvokelevel (){
        return classifyinvokelevel;
    }
    /**
    * è®¾ç½® åˆ†ç±»æ³¨å…¥å±‚级
    */
    public void setClassifyinvokelevel (String classifyinvokelevel){
        this.classifyinvokelevel = classifyinvokelevel;
    }
    /**
     * èŽ·å– åˆ†ç±»æ³¨å…¥çš„属性英文名称
     */
    public String getClassifyinvokeattr (){
        return classifyinvokeattr;
    }
    /**
    * è®¾ç½® åˆ†ç±»æ³¨å…¥çš„属性英文名称
    */
    public void setClassifyinvokeattr (String classifyinvokeattr){
        this.classifyinvokeattr = classifyinvokeattr;
    }
    /**
     * èŽ·å– åˆ†ç±»æ³¨å…¥çš„属性中文名称
     */
    public String getClassifyinvokeattrname (){
        return classifyinvokeattrname;
    }
    /**
    * è®¾ç½® åˆ†ç±»æ³¨å…¥çš„属性中文名称
    */
    public void setClassifyinvokeattrname (String classifyinvokeattrname){
        this.classifyinvokeattrname = classifyinvokeattrname;
    }
    /**
     * èŽ·å– åˆ†ç±»æ³¨å…¥æ˜¯å¦å¯ä»¥ç¼–辑
     */
    public String getClassifyinvokeeditflag (){
        return classifyinvokeeditflag;
    }
    /**
    * è®¾ç½® åˆ†ç±»æ³¨å…¥æ˜¯å¦å¯ä»¥ç¼–辑
    */
    public void setClassifyinvokeeditflag (String classifyinvokeeditflag){
        this.classifyinvokeeditflag = classifyinvokeeditflag;
    }
    /**
     * èŽ·å– ç å€¼åºå·
     */
    public Integer getOrdernum (){
        return ordernum;
    }
    /**
    * è®¾ç½® ç å€¼åºå·
    */
    public void setOrdernum (Integer ordernum){
        this.ordernum = ordernum;
    }
    /**
     * èŽ·å– è¡¨å•里是否显示
     */
    public String getFormdisplayflag (){
        return formdisplayflag;
    }
    /**
    * è®¾ç½® è¡¨å•里是否显示
    */
    public void setFormdisplayflag (String formdisplayflag){
        this.formdisplayflag = formdisplayflag;
    }
    /**
     * èŽ·å– åˆ—表里是否显示
     */
    public String getTabledisplayflag (){
        return tabledisplayflag;
    }
    /**
    * è®¾ç½® åˆ—表里是否显示
    */
    public void setTabledisplayflag (String tabledisplayflag){
        this.tabledisplayflag = tabledisplayflag;
    }
    /**
     * èŽ·å– æ‰€å±žå±žæ€§åˆ†ç»„
     */
    public String getAttributegroup (){
        return attributegroup;
    }
    /**
    * è®¾ç½® æ‰€å±žå±žæ€§åˆ†ç»„
    */
    public void setAttributegroup (String attributegroup){
        this.attributegroup = attributegroup;
    }
    /**
     * èŽ·å– ä½¿ç”¨æžšä¸¾è‹±æ–‡ç¼–号
     */
    public String getEnumid (){
        return enumid;
    }
    /**
    * è®¾ç½® ä½¿ç”¨æžšä¸¾è‹±æ–‡ç¼–号
    */
    public void setEnumid (String enumid){
        this.enumid = enumid;
    }
    /**
     * èŽ·å– ä½¿ç”¨æžšä¸¾ä¸­æ–‡åç§°
     */
    public String getEnumname (){
        return enumname;
    }
    /**
    * è®¾ç½® ä½¿ç”¨æžšä¸¾ä¸­æ–‡åç§°
    */
    public void setEnumname (String enumname){
        this.enumname = enumname;
    }
    /**
     * èŽ·å– æžšä¸¾æ˜¯å¦å¯ä»¥ç¼–辑
     */
    public String getEnumeditflag (){
        return enumeditflag;
    }
    /**
    * è®¾ç½® æžšä¸¾æ˜¯å¦å¯ä»¥ç¼–辑
    */
    public void setEnumeditflag (String enumeditflag){
        this.enumeditflag = enumeditflag;
    }
    /**
     * èŽ·å– å‚照的业务类型英文名称
     */
    public String getReferbtmid (){
        return referbtmid;
    }
    /**
    * è®¾ç½® å‚照的业务类型英文名称
    */
    public void setReferbtmid (String referbtmid){
        this.referbtmid = referbtmid;
    }
    /**
     * èŽ·å– å‚照的业务类型中文名称
     */
    public String getReferbtmname (){
        return referbtmname;
    }
    /**
    * è®¾ç½® å‚照的业务类型中文名称
    */
    public void setReferbtmname (String referbtmname){
        this.referbtmname = referbtmname;
    }
    public String getReferConfig() {
        return referConfig;
    }
    public void setReferConfig(String referConfig) {
        this.referConfig = referConfig;
    }
    /**
    /**
     * èŽ·å– æ˜¯å¦å¿…输
     */
    public String getRequireflag (){
        return requireflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦å¿…输
    */
    public void setRequireflag (String requireflag){
        this.requireflag = requireflag;
    }
    /**
     * èŽ·å– æ˜¯å¦åªè¯»
     */
    public String getReadonlyflag (){
        return readonlyflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦åªè¯»
    */
    public void setReadonlyflag (String readonlyflag){
        this.readonlyflag = readonlyflag;
    }
    /**
     * èŽ·å– å±žæ€§æŽ§åˆ¶è¾“入的长度
     */
    public Integer getControllength (){
        return controllength;
    }
    /**
    * è®¾ç½® å±žæ€§æŽ§åˆ¶è¾“入的长度
    */
    public void setControllength (Integer controllength){
        this.controllength = controllength;
    }
    /**
     * èŽ·å– è¡¨å•里显示的样式
     */
    public String getFormdisplaystyle (){
        return formdisplaystyle;
    }
    /**
    * è®¾ç½® è¡¨å•里显示的样式
    */
    public void setFormdisplaystyle (String formdisplaystyle){
        this.formdisplaystyle = formdisplaystyle;
    }
    /**
     * èŽ·å– è¡¨æ ¼é‡Œæ˜¾ç¤ºçš„æ ·å¼
     */
    public String getTabledisplaystyle (){
        return tabledisplaystyle;
    }
    /**
    * è®¾ç½® è¡¨æ ¼é‡Œæ˜¾ç¤ºçš„æ ·å¼
    */
    public void setTabledisplaystyle (String tabledisplaystyle){
        this.tabledisplaystyle = tabledisplaystyle;
    }
    /**
     * èŽ·å– è¡¨å•中超链接内容
     */
    public String getFormhref (){
        return formhref;
    }
    /**
    * è®¾ç½® è¡¨å•中超链接内容
    */
    public void setFormhref (String formhref){
        this.formhref = formhref;
    }
    /**
     * èŽ·å– è¡¨æ ¼ä¸­è¶…链接内容
     */
    public String getTablehref (){
        return tablehref;
    }
    /**
    * è®¾ç½® è¡¨æ ¼ä¸­è¶…链接内容
    */
    public void setTablehref (String tablehref){
        this.tablehref = tablehref;
    }
    /**
     * èŽ·å– å°æ•°ç²¾åº¦
     */
    public Integer getPrecisionlength (){
        return precisionlength;
    }
    /**
    * è®¾ç½® å°æ•°ç²¾åº¦
    */
    public void setPrecisionlength (Integer precisionlength){
        this.precisionlength = precisionlength;
    }
    /**
     * èŽ·å– å°æ•°åˆ»åº¦
     */
    public Integer getScalelength (){
        return scalelength;
    }
    /**
    * è®¾ç½® å°æ•°åˆ»åº¦
    */
    public void setScalelength (Integer scalelength){
        this.scalelength = scalelength;
    }
    /**
     * èŽ·å– å–值范围
     */
    public String getValuearea (){
        return valuearea;
    }
    /**
    * è®¾ç½® å–值范围
    */
    public void setValuearea (String valuearea){
        this.valuearea = valuearea;
    }
    /**
     * èŽ·å– æ—¶é—´æ ¼å¼
     */
    public String getCodedateformat (){
        return codedateformat;
    }
    /**
    * è®¾ç½® æ—¶é—´æ ¼å¼
    */
    public void setCodedateformat (String codedateformat){
        this.codedateformat = codedateformat;
    }
    /**
     * èŽ·å– è¡¨æ ¼é‡Œæ˜¾ç¤ºè°ƒç”¨çš„js
     */
    public String getTabledisplayjs (){
        return tabledisplayjs;
    }
    /**
    * è®¾ç½® è¡¨æ ¼é‡Œæ˜¾ç¤ºè°ƒç”¨çš„js
    */
    public void setTabledisplayjs (String tabledisplayjs){
        this.tabledisplayjs = tabledisplayjs;
    }
    /**
     * èŽ·å– æ˜¯å¦æ˜¾ç¤ºå¤šè¡Œæ–‡æœ¬
     */
    public String getTextareaflag (){
        return textareaflag;
    }
    /**
    * è®¾ç½® æ˜¯å¦æ˜¾ç¤ºå¤šè¡Œæ–‡æœ¬
    */
    public void setTextareaflag (String textareaflag){
        this.textareaflag = textareaflag;
    }
    /**
     * èŽ·å– é¢„览图
     */
    public String getImageflag (){
        return imageflag;
    }
    /**
    * è®¾ç½® é¢„览图
    */
    public void setImageflag (String imageflag){
        this.imageflag = imageflag;
    }
    /**
     * èŽ·å– é»˜è®¤å€¼
     */
    public String getDefaultvalue (){
        return defaultvalue;
    }
    /**
    * è®¾ç½® é»˜è®¤å€¼
    */
    public void setDefaultvalue (String defaultvalue){
        this.defaultvalue = defaultvalue;
    }
    /**
     * èŽ·å– å‰ç¼€
     */
    public String getPrefixvalue (){
        return prefixvalue;
    }
    /**
    * è®¾ç½® å‰ç¼€
    */
    public void setPrefixvalue (String prefixvalue){
        this.prefixvalue = prefixvalue;
    }
    /**
     * èŽ·å– åŽç¼€
     */
    public String getSuffixvalue (){
        return suffixvalue;
    }
    /**
    * è®¾ç½® åŽç¼€
    */
    public void setSuffixvalue (String suffixvalue){
        this.suffixvalue = suffixvalue;
    }
    /**
     * èŽ·å– é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性
     */
    public String getFiltersourceattr (){
        return filtersourceattr;
    }
    public String getAttributeDataTypeText() {
        return attributeDataTypeText;
    }
    public void setAttributeDataTypeText(String attributeDataTypeText) {
        this.attributeDataTypeText = attributeDataTypeText;
    }
    /**
    * è®¾ç½® é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性
    */
    public void setFiltersourceattr (String filtersourceattr){
        this.filtersourceattr = filtersourceattr;
    }
    /**
     * èŽ·å– é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性名称
     */
    public String getFiltersourceattrname (){
        return filtersourceattrname;
    }
    /**
    * è®¾ç½® é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性名称
    */
    public void setFiltersourceattrname (String filtersourceattrname){
        this.filtersourceattrname = filtersourceattrname;
    }
    public String getEnumString() {
        return enumString;
    }
    public void setEnumString(String enumString) {
        this.enumString = enumString;
    }
    public Integer getAttrTableWidth() {
        return attrTableWidth;
    }
    public void setAttrTableWidth(Integer attrTableWidth) {
        this.attrTableWidth = attrTableWidth;
    }
    @Override
    public String toString() {
        return "CodeClassifyTemplateAttrVO{" +
                "classifytemplateoid='" + classifytemplateoid + '\'' +
                ", classifytemplateoidName='" + classifytemplateoidName + '\'' +
                ", classifyattributeoid='" + classifyattributeoid + '\'' +
                ", classifyattributeoidName='" + classifyattributeoidName + '\'' +
                ", attributedatatype='" + attributedatatype + '\'' +
                ", attributeDataTypeText='" + attributeDataTypeText + '\'' +
                ", keyattrflag='" + keyattrflag + '\'' +
                ", queryattrflag='" + queryattrflag + '\'' +
                ", seniorqueryattrflag='" + seniorqueryattrflag + '\'' +
                ", samerepeatattrflag='" + samerepeatattrflag + '\'' +
                ", sortattrflag='" + sortattrflag + '\'' +
                ", qrcodeflag='" + qrcodeflag + '\'' +
                ", barcodeflag='" + barcodeflag + '\'' +
                ", componentrule='" + componentrule + '\'' +
                ", verifyrule='" + verifyrule + '\'' +
                ", classifyinvokelevel='" + classifyinvokelevel + '\'' +
                ", classifyinvokeattr='" + classifyinvokeattr + '\'' +
                ", classifyinvokeattrname='" + classifyinvokeattrname + '\'' +
                ", classifyinvokeeditflag='" + classifyinvokeeditflag + '\'' +
                ", ordernum=" + ordernum +
                ", formdisplayflag='" + formdisplayflag + '\'' +
                ", tabledisplayflag='" + tabledisplayflag + '\'' +
                ", attributegroup='" + attributegroup + '\'' +
                ", enumid='" + enumid + '\'' +
                ", enumname='" + enumname + '\'' +
                ", enumeditflag='" + enumeditflag + '\'' +
                ", referbtmid='" + referbtmid + '\'' +
                ", referbtmname='" + referbtmname + '\'' +
                ", referConfig='" + referConfig + '\'' +
                ", requireflag='" + requireflag + '\'' +
                ", readonlyflag='" + readonlyflag + '\'' +
                ", controllength=" + controllength +
                ", formdisplaystyle='" + formdisplaystyle + '\'' +
                ", tabledisplaystyle='" + tabledisplaystyle + '\'' +
                ", formhref='" + formhref + '\'' +
                ", tablehref='" + tablehref + '\'' +
                ", precisionlength=" + precisionlength +
                ", scalelength=" + scalelength +
                ", valuearea='" + valuearea + '\'' +
                ", codedateformat='" + codedateformat + '\'' +
                ", tabledisplayjs='" + tabledisplayjs + '\'' +
                ", textareaflag='" + textareaflag + '\'' +
                ", imageflag='" + imageflag + '\'' +
                ", defaultvalue='" + defaultvalue + '\'' +
                ", prefixvalue='" + prefixvalue + '\'' +
                ", suffixvalue='" + suffixvalue + '\'' +
                ", filtersourceattr='" + filtersourceattr + '\'' +
                ", filtersourceattrname='" + filtersourceattrname + '\'' +
                ", enumString='" + enumString + '\'' +
                ", attrTableWidth=" + attrTableWidth +
                "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java
@@ -1,13 +1,17 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * ä¸»é¢˜åº“里模板包含的按钮显示对象
 *
 * @author weidy
 * @date 2022-01-24
 * @author ludc
 * @date 2023-05-9
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodeClassifyTemplateButtonVO extends CodeClassifyTemplateButton {
    /**
@@ -16,161 +20,28 @@
    private static final long serialVersionUID = 4615707118535405378L;
    /**
    * æ‰€å±žæ¨¡æ¿
    */
    private String classifytemplateoid;
    /**
    * æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
    */
    private String classifytemplateoidName;
    /**
    * æŒ‰é’®çš„主键
    */
    private String classifybuttonoid;
    private String classifyTemplateOidName;
    /**
    * æŒ‰é’®çš„主键显示文本
    */
    private String classifybuttonoidName;
    /**
    * æŒ‰é’®ç”¨é€”
    */
    private String buttonuse;
    private String classifyButtonOidName;
    /**
     * æŒ‰é’®ç”¨é€”显示对象
     */
    private String buttonUseText;
    /**
    * ç å€¼åºå·
    */
    private Integer ordernum;
    private Integer orderNum;
    /**
     * æŒ‰é’®çš„相关内容
     */
    private CodeButtonVO buttonVO;
    /**
     * èŽ·å– æ‰€å±žæ¨¡æ¿
     */
    @Override
    public String getClassifytemplateoid (){
        return classifytemplateoid;
    }
    /**
    * è®¾ç½® æ‰€å±žæ¨¡æ¿
    */
    @Override
    public void setClassifytemplateoid (String classifytemplateoid){
        this.classifytemplateoid = classifytemplateoid;
    }
    /**
     * èŽ·å–æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getClassifytemplateoidName (){
        return classifytemplateoidName;
    }
    /**
    * è®¾ç½®æ‰€å±žæ¨¡æ¿æ˜¾ç¤ºæ–‡æœ¬
    */
    public void setClassifytemplateoidName (String classifytemplateoidName){
        this.classifytemplateoidName = classifytemplateoidName;
    }
    /**
     * èŽ·å– æŒ‰é’®çš„主键
     */
    @Override
    public String getClassifybuttonoid (){
        return classifybuttonoid;
    }
    /**
    * è®¾ç½® æŒ‰é’®çš„主键
    */
    @Override
    public void setClassifybuttonoid (String classifybuttonoid){
        this.classifybuttonoid = classifybuttonoid;
    }
    /**
     * èŽ·å–æŒ‰é’®çš„ä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getClassifybuttonoidName (){
        return classifybuttonoidName;
    }
    /**
    * è®¾ç½®æŒ‰é’®çš„主键显示文本
    */
    public void setClassifybuttonoidName (String classifybuttonoidName){
        this.classifybuttonoidName = classifybuttonoidName;
    }
    /**
     * èŽ·å– æŒ‰é’®ç”¨é€”
     */
    @Override
    public String getButtonuse (){
        return buttonuse;
    }
    /**
    * è®¾ç½® æŒ‰é’®ç”¨é€”
    */
    @Override
    public void setButtonuse (String buttonuse){
        this.buttonuse = buttonuse;
    }
    /**
     * èŽ·å– ç å€¼åºå·
     */
    public Integer getOrdernum (){
        return ordernum;
    }
    /**
    * è®¾ç½® ç å€¼åºå·
    */
    public void setOrdernum (Integer ordernum){
        this.ordernum = ordernum;
    }
    public String getButtonUseText() {
        return buttonUseText;
    }
    public void setButtonUseText(String buttonUseText) {
        this.buttonUseText = buttonUseText;
    }
    public CodeButtonVO getButtonVO() {
        return buttonVO;
    }
    public void setButtonVO(CodeButtonVO buttonVO) {
        this.buttonVO = buttonVO;
    }
    @Override
    public String toString() {
        return "CodeClassifyTemplateButtonVO{" +
                "classifytemplateoid='" + classifytemplateoid + '\'' +
                ", classifytemplateoidName='" + classifytemplateoidName + '\'' +
                ", classifybuttonoid='" + classifybuttonoid + '\'' +
                ", classifybuttonoidName='" + classifybuttonoidName + '\'' +
                ", buttonuse='" + buttonuse + '\'' +
                ", buttonUseText='" + buttonUseText + '\'' +
                ", ordernum=" + ordernum +
                ", buttonVO=" + buttonVO +
                "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java
@@ -1,42 +1,15 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import java.util.ArrayList;
import java.util.List;
public class CodeImportTemplateVO {
    private List<ColumnVO> cloNamesList=new ArrayList<>();
    private CodeClassifyTemplateVO codeClassifyTemplateVO;
    private CodeClstemplateVO codeClstemplateVO;
    private CodeClassifyVO codeClassifyVO;
    public List<ColumnVO> getCloNamesList() {
        return cloNamesList;
    }
    public void setCloNamesList(List<ColumnVO> cloNamesList) {
        this.cloNamesList = cloNamesList;
    }
    public CodeClassifyTemplateVO getCodeClassifyTemplateVO() {
        return codeClassifyTemplateVO;
    }
    public void setCodeClassifyTemplateVO(CodeClassifyTemplateVO codeClassifyTemplateVO) {
        this.codeClassifyTemplateVO = codeClassifyTemplateVO;
    }
    public CodeClassifyVO getCodeClassifyVO() {
        return codeClassifyVO;
    }
    public void setCodeClassifyVO(CodeClassifyVO codeClassifyVO) {
        this.codeClassifyVO = codeClassifyVO;
    }
    @Override
    public String toString() {
        return "CodeImportTemplateVO{" +
                "cloNamesList=" + cloNamesList +
                ", codeClassifyTemplateVO=" + codeClassifyTemplateVO +
                ", codeClassifyVO=" + codeClassifyVO +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java
@@ -1,5 +1,8 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@@ -46,15 +49,15 @@
     * æ•°æ®
     */
    private List<Map<String,String>> datas = new ArrayList<>();
    private CodeClassifyTemplateVO codeClassifyTemplateVO;
    private CodeClstemplateVO codeClstemplateVO;
    private CodeClassifyVO codeClassifyVO;
    public CodeClassifyTemplateVO getCodeClassifyTemplateVO() {
        return codeClassifyTemplateVO;
    public CodeClstemplateVO getCodeClassifyTemplateVO() {
        return codeClstemplateVO;
    }
    public void setCodeClassifyTemplateVO(CodeClassifyTemplateVO codeClassifyTemplateVO) {
        this.codeClassifyTemplateVO = codeClassifyTemplateVO;
    public void setCodeClassifyTemplateVO(CodeClstemplateVO codeClstemplateVO) {
        this.codeClstemplateVO = codeClstemplateVO;
    }
    public CodeClassifyVO getCodeClassifyVO() {
@@ -125,7 +128,7 @@
                ", fields=" + fields +
                ", colNames=" + colNames +
                ", datas=" + datas +
                ", codeClassifyTemplateVO=" + codeClassifyTemplateVO +
                ", codeClstemplateVO=" + codeClstemplateVO +
                ", codeClassifyVO=" + codeClassifyVO +
                '}';
    }
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeTemplatePhaseVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import lombok.Data;
/**
 * æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡
 *
 * @author ludc
 * @date 2022-01-24
 */
@Data
public class CodeTemplatePhaseVO extends CodeTemplatePhase {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707117825912259L;
    /**
    * æ‰€å±žç¼–码规则显示文本
    */
    private String codeclassifytemplateoidName;
    /**
    * ç å€¼åºå·
    */
    private Integer orderNum;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml
@@ -14,4 +14,12 @@
    <version>${bladex.project.version}</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-util-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
    </dependencies>
</project>
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/EnumCache.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.cache;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.enums.EnumEnum;
import com.vci.ubcs.omd.feign.IEnumClient;
import com.vci.ubcs.omd.vo.EnumVO;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.core.tool.utils.StringPool;
import java.util.List;
/**
 * ä¸šåŠ¡å­—å…¸ç¼“å­˜å·¥å…·ç±»
 *
 * @author Chill
 */
public class EnumCache {
    private static final String ENUM_ID = "enum:id";
    private static final String ENUM_VALUE = "enum:value";
    private static final String ENUM_LIST = "enum:list";
    private static final String ENUM_CACHE = "blade:enum";
    private static IEnumClient iEnumClient;
    private static IEnumClient getIOmdEnumClient() {
        if (iEnumClient == null) {
            iEnumClient = SpringUtil.getBean(IEnumClient.class);
        }
        return iEnumClient;
    }
    /**
     * èŽ·å–å­—å…¸å®žä½“
     *
     * @param oid ä¸»é”®
     * @return Enum
     */
    public static Enum getById(String oid) {
        String keyPrefix = ENUM_ID.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
        return CacheUtil.get(ENUM_CACHE, keyPrefix, oid, () -> {
            R<Enum> result = getIOmdEnumClient().getById(oid);
            return result.getData();
        });
    }
    /**
     * èŽ·å–å­—å…¸å€¼
     *
     * @param name    å­—典编号枚举
     * @param nameChild Integer型字典键
     * @return String
     */
    public static String getValue(EnumEnum name, Integer nameChild) {
        return getValue(name.getName(), nameChild);
    }
    /**
     * èŽ·å–å­—å…¸å€¼
     *
     * @param name    çˆ¶å­—典编号
     * @param nameChild å­å­—典编号
     * @return String
     */
    public static String getValue(String name, Integer nameChild) {
        String keyPrefix = ENUM_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
        return CacheUtil.get(ENUM_CACHE, keyPrefix + name + StringPool.COLON, String.valueOf(nameChild), () -> {
            R<String> result = getIOmdEnumClient().getValue(name, String.valueOf(nameChild));
            return result.getData();
        });
    }
    /**
     * èŽ·å–å­—å…¸å€¼
     *
     * @param name    å­—典编号枚举
     * @param nameChild String型字典键
     * @return String
     */
    public static String getValue(EnumEnum name, String nameChild) {
        return getValue(name.getName(), nameChild);
    }
    /**
     * èŽ·å–å­—å…¸å€¼
     *
     * @param code    å­—典编号
     * @param dictKey String型字典键
     * @return String
     */
    public static String getValue(String code, String dictKey) {
        String keyPrefix = ENUM_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
        return CacheUtil.get(ENUM_CACHE, keyPrefix + code + StringPool.COLON, dictKey, () -> {
            R<String> result = getIOmdEnumClient().getValue(code, dictKey);
            return result.getData();
        });
    }
    /**
     * èŽ·å–å­—å…¸é›†åˆ
     *
     * @param name å­—典编号
     * @return List<EnumVO>
     */
    public static List<EnumVO> getList(String name) {
        String keyPrefix = ENUM_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
        return CacheUtil.get(ENUM_CACHE, keyPrefix, name, () -> {
            R<List<EnumVO>> result = getIOmdEnumClient().getList(name);
            return result.getData();
        });
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Enum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
/**
 * æžšä¸¾å®šä¹‰ å®žä½“ç±»
 *
 * @author yuxc
 * @since 2023-05-08
 */
@Data
@TableName("PL_OMD_ENUM")
@ApiModel(value = "OmdEnum对象", description = "枚举定义")
//@EqualsAndHashCode(callSuper = true)
public class Enum implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @TableId(value = "oid", type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "")
    private String oid;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String name;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String label;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private Date ts;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String creator;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private Date createtime;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String modifier;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private Date modifytime;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String remark;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/EnumItem.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
/**
 * æžšä¸¾å®šä¹‰å­è¡¨ å®žä½“ç±»
 *
 * @author yuxc
 * @since 2023-05-08
 */
@Data
@TableName("PL_OMD_ENUMITEM")
@ApiModel(value = "OmdEnumitem对象", description = "枚举定义子表")
//@EqualsAndHashCode(callSuper = true)
public class EnumItem implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ApiModelProperty(value = "")
    @TableId(value = "oid", type = IdType.ASSIGN_ID)
    private String oid;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String name;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String value;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String description;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private Date ts;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String creator;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private Date createtime;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String modifier;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private Date modifytime;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String parentoid;
    /**
     *
     */
    @ApiModelProperty(value = "")
    private Integer sort;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/EnumEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * ç³»ç»Ÿå­—典枚举类
 *
 * @author Chill
 */
@Getter
@AllArgsConstructor
public enum EnumEnum {
    /**
     * æ€§åˆ«
     */
    SEX("sex"),
    /**
     * é€šçŸ¥ç±»åž‹
     */
    NOTICE("notice"),
    /**
     * èœå•类型
     */
    MENU_CATEGORY("menu_category"),
    /**
     * æŒ‰é’®åŠŸèƒ½
     */
    BUTTON_FUNC("button_func"),
    /**
     * æ˜¯å¦
     */
    YES_NO("yes_no"),
    /**
     * æµç¨‹ç±»åž‹
     */
    FLOW("flow"),
    /**
     * æœºæž„类型
     */
    ORG_CATEGORY("org_category"),
    /**
     * æ•°æ®æƒé™
     */
    DATA_SCOPE_TYPE("data_scope_type"),
    /**
     * æŽ¥å£æƒé™
     */
    API_SCOPE_TYPE("api_scope_type"),
    /**
     * æƒé™ç±»åž‹
     */
    SCOPE_CATEGORY("scope_category"),
    /**
     * å¯¹è±¡å­˜å‚¨ç±»åž‹
     */
    OSS("oss"),
    /**
     * çŸ­ä¿¡æœåŠ¡ç±»åž‹
     */
    SMS("sms"),
    /**
     * å²—位类型
     */
    POST_CATEGORY("post_category"),
    /**
     * è¡Œæ”¿åŒºåˆ’
     */
    REGION("region"),
    /**
     * ç”¨æˆ·å¹³å°
     */
    USER_TYPE("user_type"),
    ;
    final String name;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
 * Description:业务类型关联属性 Feign接口类
 *
 * @author LiHang
 * @date 2023/5/10
 */
@FeignClient(
    value = AppConstant.APPLICATION_NAME_OMD,
    fallback = IBtmAttributeFallback.class
)
public interface IBtmAttributeClient {
    String API_PREFIX = "/client";
    String LIST_BY_BTM_OID = API_PREFIX + "/btm-attribute/list-by-btm-oid";
    @GetMapping(LIST_BY_BTM_OID)
    R<List<BtmTypeAttributeVO>> listByBtmOid(@RequestParam("oid") String oid);
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * Description:业务类型关联属性Feign失败
 *
 * @author LiHang
 * @date 2023/5/10
 */
@Component
public class IBtmAttributeFallback implements IBtmAttributeClient{
    @Override
    public R<List<BtmTypeAttributeVO>> listByBtmOid(String oid) {
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.vo.EnumVO;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
 * æžšä¸¾å®šä¹‰ Feign接口类
 *
 * @author yuxc
 * @since 2023-05-08
 */
@FeignClient(
    value = AppConstant.APPLICATION_NAME_OMD,
    fallback = IEnumFallback.class
)
public interface IEnumClient {
    String API_PREFIX = "/client";
    String TOP = API_PREFIX + "/enum/top";
    String GET_BY_ID = API_PREFIX + "/enum/get-by-oid";
    String GET_BYCHILD_ID = API_PREFIX + "/enum/get-byChild-oid";
    String GET_VALUE = API_PREFIX + "/enum/get-value";
    String GET_LIST = API_PREFIX + "/enum/get-list";
    /**
     * èŽ·å–æžšä¸¾å®šä¹‰åˆ—è¡¨
     *
     * @param current   é¡µå·
     * @param size      é¡µæ•°
     * @return BladePage
     */
    @GetMapping(TOP)
    BladePage<Enum> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
    /**
     * èŽ·å–æžšä¸¾å®šä¹‰åˆ—è¡¨
     *
     * @param name   çˆ¶èŠ‚ç‚¹name
     * @param nameChild      å­èŠ‚ç‚¹name
     * @return BladePage
     */
    @GetMapping(GET_VALUE)
    R<String> getValue(@RequestParam("name") String name,@RequestParam("nameChild") String nameChild);
    /**
     * èŽ·å–å­—å…¸å®žä½“
     *
     * @param oid ä¸»é”®
     * @return
     */
    @GetMapping(GET_BY_ID)
    R<Enum> getById(@RequestParam("oid") String oid);
    /**
     * èŽ·å–å­—å…¸å®žä½“
     *
     * @param oid ä¸»é”®
     * @return
     */
    @GetMapping(GET_BYCHILD_ID)
    R<EnumItem> getByChildId(@RequestParam("oid") String oid);
    /**
     * èŽ·å–å­—å…¸è¡¨
     *
     * @param name æžšä¸¾ç¼–号
     * @return
     */
    @GetMapping(GET_LIST)
    R<List<EnumVO>> getList(@RequestParam("name") String name);
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.vo.EnumVO;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * Feign失败配置
 *
 * @author Chill
 */
@Component
public class IEnumFallback implements IEnumClient {
    @Override
    public BladePage<Enum> top(Integer current, Integer size) {
        return null;
    }
    @Override
    public R<String> getValue(String name, String nameChild) {
        return R.fail("获取数据失败");
    }
    @Override
    public R<Enum> getById(String oid) {
        return R.fail("获取数据失败");
    }
    @Override
    public R<EnumItem> getByChildId(String oid) {
        return R.fail("获取数据失败");
    }
    @Override
    public R<List<EnumVO>> getList(String name) {
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumItemClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.entity.EnumItem;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.mp.support.BladePage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * æžšä¸¾å®šä¹‰å­è¡¨ Feign接口类
 *
 * @author yuxc
 * @since 2023-05-08
 */
@FeignClient(
    value = AppConstant.APPLICATION_NAME_OMD,
    fallback = IEnumItemFallback.class
)
public interface IEnumItemClient {
    String API_PREFIX = "/clientEnumItem";
    String TOP = API_PREFIX + "/top";
    /**
     * èŽ·å–æžšä¸¾å®šä¹‰å­è¡¨åˆ—è¡¨
     *
     * @param current   é¡µå·
     * @param size      é¡µæ•°
     * @return BladePage
     */
    @GetMapping(TOP)
    BladePage<EnumItem> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumItemFallback.java
copy from Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java copy to Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IEnumItemFallback.java
Îļþ´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java ¸´ÖÆ
@@ -14,21 +14,27 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.vo;
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.vo.EnumVO;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * ç¼–码库定义-模板阶段-属性 è§†å›¾å®žä½“ç±»
 * Feign失败配置
 *
 * @author yuxc
 * @since 2023-04-20
 * @author Chill
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodePhaseattrVO extends CodePhaseattrEntity {
    private static final long serialVersionUID = 1L;
@Component
public class IEnumItemFallback implements IEnumItemClient {
    @Override
    public BladePage<EnumItem> top(Integer current, Integer size) {
        return null;
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/EnumItemVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java ÐÞ¸Ä
@@ -14,21 +14,22 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.vo;
package com.vci.ubcs.omd.vo;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.omd.entity.EnumItem;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * ç¼–码库定义-模板阶段-属性 è§†å›¾å®žä½“ç±»
 * æžšä¸¾å®šä¹‰å­è¡¨ è§†å›¾å®žä½“ç±»
 *
 * @author yuxc
 * @since 2023-04-20
 * @since 2023-05-08
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodePhaseattrVO extends CodePhaseattrEntity {
public class EnumItemVO extends EnumItem {
    private static final long serialVersionUID = 1L;
    String parentName;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/EnumVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.starter.util.node.INodeOid;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
/**
 * æžšä¸¾å®šä¹‰ è§†å›¾å®žä½“ç±»
 *
 * @author yuxc
 * @since 2023-05-08
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class EnumVO extends Enum implements INodeOid<EnumItem> {
    private static final long serialVersionUID = 1L;
    /**
     * å­å­™èŠ‚ç‚¹
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<EnumItem> children = new ArrayList<>();
    /**
     * æ˜¯å¦æœ‰å­å­™èŠ‚ç‚¹
     */
    private Boolean hasChildren = false;
    /**
     * å­èŠ‚ç‚¹OID
     */
    private String itemOid;
    /**
     * å­èŠ‚ç‚¹æžšä¸¾ç¼–ç 
     */
    private String itemName;
    /**
     * å­èŠ‚ç‚¹æžšä¸¾å€¼
     */
    private String itemValue;
    /**
     * å­èŠ‚ç‚¹æžšæè¿°
     */
    private String itemDescription;
    @Override
    public String getParentOid() {
        return null;
    }
    @Override
    public List<EnumItem> getChildren() {
        return this.children;
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/pom.xml
@@ -40,5 +40,10 @@
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.yulichang</groupId>
            <artifactId>mybatis-plus-join-boot-starter</artifactId>
            <version>${mybatisplus.join.version}</version>
        </dependency>
    </dependencies>
</project>
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.starter.util;
import com.alibaba.druid.util.StringUtils;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -9,6 +10,7 @@
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Locale;
/**
 * æ–°å¢žæ—¶é»˜è®¤å€¼å±žæ€§èµ‹å€¼
@@ -29,11 +31,12 @@
    public static <T extends BaseModel> T addDefaultAttrAssimt(T object,String btmName) throws VciBaseException {
        BaseModel baseModel = object;
        try {
            baseModel.setOid(VciBaseUtil.getPk());
            baseModel.setOid(VciBaseUtil.getPk().toUpperCase());
            baseModel.setCreateTime(new Date());
            baseModel.setNameOid(VciBaseUtil.getPk());
            baseModel.setLastModifyTime(new Date());
            baseModel.setTs(new Date());
            baseModel.setRevisionOid(VciBaseUtil.getPk());
            //用户id
            String userId = AuthUtil.getUserId().toString();
            baseModel.setBtmname(btmName);
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.vci.ubcs.starter.util;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import java.util.Map;
public class MPJLambdaWrapperSqlKeyword {
    private static final String SQL_REGEX = "'|%|--|insert|delete|select|count|group|union|drop|truncate|alter|grant|execute|exec|xp_cmdshell|call|declare|sql";
    private static final String EQUAL = "_equal";
    private static final String NOT_EQUAL = "_notequal";
    private static final String LIKE = "_like";
    private static final String LIKE_LEFT = "_likeleft";
    private static final String LIKE_RIGHT = "_likeright";
    private static final String NOT_LIKE = "_notlike";
    private static final String GE = "_ge";
    private static final String LE = "_le";
    private static final String GT = "_gt";
    private static final String LT = "_lt";
    private static final String DATE_GE = "_datege";
    private static final String DATE_GT = "_dategt";
    private static final String DATE_EQUAL = "_dateequal";
    private static final String DATE_LT = "_datelt";
    private static final String DATE_LE = "_datele";
    private static final String IS_NULL = "_null";
    private static final String NOT_NULL = "_notnull";
    private static final String IGNORE = "_ignore";
    public MPJLambdaWrapperSqlKeyword() {
    }
    public static void buildCondition(Map<String, Object> query, MPJLambdaWrapper<?> qw) {
        if (!Func.isEmpty(query)) {
            query.forEach((k, v) -> {
                if (!Func.hasEmpty(new Object[]{k, v}) && !k.endsWith("_ignore")) {
                    if (k.endsWith("_equal")) {
                        qw.eq(getColumn(k, "_equal"), v);
                    } else if (k.endsWith("_notequal")) {
                        qw.ne(getColumn(k, "_notequal"), v);
                    } else if (k.endsWith("_likeleft")) {
                        qw.likeLeft(getColumn(k, "_likeleft"), v);
                    } else if (k.endsWith("_likeright")) {
                        qw.likeRight(getColumn(k, "_likeright"), v);
                    } else if (k.endsWith("_notlike")) {
                        qw.notLike(getColumn(k, "_notlike"), v);
                    } else if (k.endsWith("_ge")) {
                        qw.ge(getColumn(k, "_ge"), v);
                    } else if (k.endsWith("_le")) {
                        qw.le(getColumn(k, "_le"), v);
                    } else if (k.endsWith("_gt")) {
                        qw.gt(getColumn(k, "_gt"), v);
                    } else if (k.endsWith("_lt")) {
                        qw.lt(getColumn(k, "_lt"), v);
                    } else if (k.endsWith("_datege")) {
                        qw.ge(getColumn(k, "_datege"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_dategt")) {
                        qw.gt(getColumn(k, "_dategt"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_dateequal")) {
                        qw.eq(getColumn(k, "_dateequal"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_datele")) {
                        qw.le(getColumn(k, "_datele"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_datelt")) {
                        qw.lt(getColumn(k, "_datelt"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
                    } else if (k.endsWith("_null")) {
                        qw.isNull(getColumn(k, "_null"));
                    } else if (k.endsWith("_notnull")) {
                        qw.isNotNull(getColumn(k, "_notnull"));
                    } else {
                        qw.like(getColumn(k, "_like"), v);
                    }
                }
            });
        }
    }
    private static String getColumn(String column, String keyword) {
        return StringUtil.humpToUnderline(StringUtil.removeSuffix(column, keyword));
    }
    public static String filter(String param) {
        return param == null ? null : param.replaceAll("(?i)'|%|--|insert|delete|select|count|group|union|drop|truncate|alter|grant|execute|exec|xp_cmdshell|call|declare|sql", "");
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPLLambdaUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.vci.ubcs.starter.util;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springblade.core.mp.support.Query;
import org.springblade.core.mp.support.SqlKeyword;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import java.util.Map;
public class Map2MPLLambdaUtil {
    public Map2MPLLambdaUtil() {
    }
    public static <T> IPage<T> getPage(Query query) {
        Page<T> page = new Page((long) Func.toInt(query.getCurrent(), 1), (long)Func.toInt(query.getSize(), 10));
        String[] ascArr = Func.toStrArray(query.getAscs());
        String[] descArr = ascArr;
        int var4 = ascArr.length;
        int var5;
        for(var5 = 0; var5 < var4; ++var5) {
            String asc = descArr[var5];
            page.addOrder(new OrderItem[]{OrderItem.asc(StringUtil.cleanIdentifier(asc))});
        }
        descArr = Func.toStrArray(query.getDescs());
        String[] var8 = descArr;
        var5 = descArr.length;
        for(int var9 = 0; var9 < var5; ++var9) {
            String desc = var8[var9];
            page.addOrder(new OrderItem[]{OrderItem.desc(StringUtil.cleanIdentifier(desc))});
        }
        return page;
    }
    public static <T> MPJLambdaWrapper<T> getMPJLambdaWrapper(T entity) {
        return new MPJLambdaWrapper(entity);
    }
    public static <T> MPJLambdaWrapper<T> getMPJLambdaWrapper(Map<String, Object> query, Class<T> clazz) {
        Kv exclude = Kv.create().set("Blade-Auth", "Blade-Auth").set("current", "current").set("size", "size").set("ascs", "ascs").set("descs", "descs");
        return getMPJLambdaWrapper(query, exclude, clazz);
    }
    /**
     * map转换为MPJLambdaWrapper
     * @param query
     * @param exclude
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> MPJLambdaWrapper<T> getMPJLambdaWrapper(Map<String, Object> query, Map<String, Object> exclude, Class<T> clazz) {
        exclude.forEach((k, v) -> {
            query.remove(k);
        });
        MPJLambdaWrapper<T> qw = new MPJLambdaWrapper();
        qw.setEntity(BeanUtil.newInstance(clazz));
        MPJLambdaWrapperSqlKeyword.buildCondition(query, qw);
        return qw;
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java
@@ -1,12 +1,17 @@
package com.vci.ubcs.starter.util;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.mp.support.SqlKeyword;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * in å‚数截取,返回wrapper
@@ -16,6 +21,44 @@
 */
public class MybatisParameterUtil {
    /**
     * in作为查询条件时,防止大于1000出现报错,对条件进行截取,连表查询的wrapper
     * @param wrapper MPJLambdaWrapper,不进行连表查询时使用
     * @param column ä½œä¸ºin的条件列
     * @param coll æŸ¥è¯¢å‚æ•°
     * @param <T> LambdaQueryWrapper的泛型
     * @param <F> æŸ¥è¯¢å‚数类型
     * @return
     * @throws VciBaseException
     */
    public static <T, F> MPJLambdaWrapper<T> cutInParameter(MPJLambdaWrapper<T> wrapper, SFunction<T, ?> column, List<F> coll) throws VciBaseException {
        List<List<F>> newList = splitList(coll, 900);
        if (ObjectUtils.isEmpty(newList)) {
            throw new VciBaseException("参数错误");
        } else if (newList.size() == 1) {
            wrapper.in(column, newList.get(0));
            return wrapper;
        }
        wrapper.and(i -> {
            i.in(column, newList.get(0));
            newList.remove(0);
            for (List<F> objects : newList) {
                i.or().in(column, objects);
            }
        });
        return wrapper;
    }
    /**
     * in作为查询条件时,防止大于1000出现报错,对条件进行截取,不具备连表查询的wrapper
     * @param wrapper LambdaQueryWrapper,不进行连表查询时使用
     * @param column ä½œä¸ºin的条件列
     * @param coll æŸ¥è¯¢å‚æ•°
     * @param <T> LambdaQueryWrapper的泛型
     * @param <F> æŸ¥è¯¢å‚数类型
     * @return
     * @throws VciBaseException
     */
    public static <T, F> LambdaQueryWrapper<T> cutInParameter(LambdaQueryWrapper<T> wrapper, SFunction<T, ?> column, List<F> coll) throws VciBaseException {
        List<List<F>> newList = splitList(coll, 900);
        if (ObjectUtils.isEmpty(newList)) {
@@ -34,6 +77,44 @@
        return wrapper;
    }
    /**
     * notin作为查询条件时,防止大于1000出现报错,对条件进行截取,连表查询的wrapper
     * @param wrapper MPJLambdaWrapper,不进行连表查询时使用
     * @param column ä½œä¸ºin的条件列
     * @param coll æŸ¥è¯¢å‚æ•°
     * @param <T> LambdaQueryWrapper的泛型
     * @param <F> æŸ¥è¯¢å‚数类型
     * @return
     * @throws VciBaseException
     */
    public static <T, F> MPJLambdaWrapper<T> cutNotInParameter(MPJLambdaWrapper<T> wrapper, SFunction<T, ?> column, List<F> coll) throws VciBaseException {
        List<List<F>> newList = splitList(coll, 900);
        if (ObjectUtils.isEmpty(newList)) {
            throw new VciBaseException("参数错误");
        } else if (newList.size() == 1) {
            wrapper.notIn(column, newList.get(0));
            return wrapper;
        }
        wrapper.and(i -> {
            i.in(column, newList.get(0));
            newList.remove(0);
            for (List<F> objects : newList) {
                i.or().notIn(column, objects);
            }
        });
        return wrapper;
    }
    /**
     * notin作为查询条件时,防止大于1000出现报错,对条件进行截取,不具备连表查询的wrapper
     * @param wrapper LambdaQueryWrapper,不进行连表查询时使用
     * @param column ä½œä¸ºin的条件列
     * @param coll æŸ¥è¯¢å‚æ•°
     * @param <T> LambdaQueryWrapper的泛型
     * @param <F> æŸ¥è¯¢å‚数类型
     * @return
     * @throws VciBaseException
     */
    public static <T, F> LambdaQueryWrapper<T> cutNotInParameter(LambdaQueryWrapper<T> wrapper, SFunction<T, ?> column, List<F> coll) throws VciBaseException {
        List<List<F>> newList = splitList(coll, 900);
        if (ObjectUtils.isEmpty(newList)) {
@@ -67,4 +148,5 @@
        return newList;
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/PatternUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.vci.ubcs.starter.util;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternUtil {
    //*${xxx}*
    public static Pattern dynamic = Pattern.compile(".*\\$\\{([a-z]+)\\}.*");
    public static Pattern dynamicLimitCount = Pattern.compile("\\$\\{([a-z]+)\\}");
    /**
     * åˆ¤æ–­å†…容中是否包含动态参数(${key}形式的)
     *
     * @param content è¦åˆ¤æ–­çš„内容
     * @return
     */
    public static boolean isContainsDynamicParameter(String content) {
        if(StringUtils.isBlank(content)){
            return false;
        }
        return dynamic.matcher(content).matches();
    }
    /**
     * æŒ‰ç…§åŠ¨æ€å†…å®¹çš„å‚æ•°å‡ºçŽ°é¡ºåº,将参数放到List中
     *
     * @param content
     * @return
     */
    public static List<String> getKeyListByContent(String content) {
        if(StringUtils.isBlank(content)){
            return new ArrayList<>();
        }
        Set<String> paramSet = new LinkedHashSet<>();
        Matcher m = dynamicLimitCount.matcher(content);
        while (m.find()) {
            paramSet.add(m.group(1));
        }
        return new ArrayList<>(paramSet);
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/node/ForestNodeManagerOid.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.vci.ubcs.starter.util.node;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ForestNodeManagerOid<T extends INodeOid<T>> {
    private final ImmutableMap<String, T> nodeMap;
    private final Map<String, Object> parentIdMap = Maps.newHashMap();
    public ForestNodeManagerOid(List<T> nodes) {
        this.nodeMap = Maps.uniqueIndex(nodes, INodeOid::getOid);
    }
    public INodeOid<T> getTreeNodeAt(String id) {
        return this.nodeMap.containsKey(id) ? (INodeOid)this.nodeMap.get(id) : null;
    }
    public void addParentId(String parentId) {
        this.parentIdMap.put(parentId, "");
    }
    public List<T> getRoot() {
        List<T> roots = new ArrayList();
        this.nodeMap.forEach((key, node) -> {
            if (node.getParentOid() == null || this.parentIdMap.containsKey(node.getOid())) {
                roots.add(node);
            }
        });
        return roots;
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/node/ForestNodeMergerOid.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.vci.ubcs.starter.util.node;
import java.util.List;
public class ForestNodeMergerOid {
    public ForestNodeMergerOid() {
    }
    public static <T extends INodeOid<T>> List<T> merge(List<T> items) {
        ForestNodeManagerOid forestNodeManager = new ForestNodeManagerOid(items);
        items.forEach((forestNode) -> {
            if (forestNode.getParentOid() != null) {
                INodeOid<T> node = forestNodeManager.getTreeNodeAt(forestNode.getParentOid());
                if (node != null) {
                    node.getChildren().add(forestNode);
                } else {
                    forestNodeManager.addParentId(forestNode.getOid());
                }
            }
        });
        return forestNodeManager.getRoot();
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/node/INodeOid.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.vci.ubcs.starter.util.node;
import java.io.Serializable;
import java.util.List;
public interface INodeOid<T> extends Serializable {
    String getOid();
    String getParentOid();
    List<T> getChildren();
    default Boolean getHasChildren() {
        return false;
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.vci.ubcs.starter.web.constant;
import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
import java.util.*;
import java.util.stream.Collectors;
public class VciSystemVarConstants {
    public static final String CURRENTUSER_OID = "#CURRENTUSER.OID#";
    public static final String CURRENTUSER_ID = "#CURRENTUSER.ID#";
    public static final String CURRENTTIME = "#CURRENTTIME#";
    public static final String CURRENTDATE = "#CURRENTDATE#";
    public static final String CURRENTDATETIME = "#CURRENTDATETIME#";
    public static final String CURRENTUSER_NAME = "#CURRENTUSER_NAME#";
    public static final String CURRENTUSER_SECRETGRADE = "#CURRENTUSER.SECRETGRADE#";
    public static final String CURRENTUSER_IP_SECRET = "#CURRENTUSER.IPSECRET#";
    public static final String CURRENTUSER_BUSINESS_UNIT = "#CURRENTUSER.BUSINESSUNIT#";
    public static final String CURRENTUSER_BUSINESS_UNIT_NAME = "#CURRENTUSER.BUSINESSUNITNAME#";
    public static final String CURRENTUSER_GROUPOID = "#CURRENTUSER.GROUPOID#";
    public static final String CURRENTUSER_GROUPNAME = "#CURRENTUSER.GROUPNAME#";
    public static final String CURRENTUSER_EMAIL = "#CURRENTUSER.EMAIL#";
    public static final String CURRENTUSER_ROLENAME = "#CURRENTUSER.ROLENAME#";
    public static final String[] SYSTEM_VAR_KEYS = new String[]{"#CURRENTUSER.OID#", "#CURRENTUSER.ID#", "#CURRENTDATE#", "#CURRENTTIME#", "#CURRENTDATETIME#", "#CURRENTUSER.GROUPOID#", "#CURRENTUSER_NAME#", "#CURRENTUSER.SECRETGRADE#", "#CURRENTUSER.GROUPNAME#", "#CURRENTUSER.EMAIL#", "#CURRENTUSER.ROLENAME#", "#CURRENTUSER.IPSECRET#", "#CURRENTUSER.BUSINESSUNIT#", "#CURRENTUSER.BUSINESSUNITNAME#"};
    public static final Map<String, String> SYSTEM_VAR_KEYNAMEMAP = new HashMap();
    public VciSystemVarConstants() {
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTTIME#", "当前时间");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTDATE#", "当前日期");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTDATETIME#", "当前日期时间");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.OID#", "当前用户主键");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.ID#", "当前用户账户");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER_NAME#", "当前用户姓名");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.SECRETGRADE#", "当前用户密级");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.IPSECRET#", "当前用户的机器密级");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.GROUPOID#", "当前用户的部门的主键");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.GROUPNAME#", "当前用户所属部门名称");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.EMAIL#", "当前用户邮件地址");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.ROLENAME#", "当前用户所属角色名称");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.BUSINESSUNIT#", "当前用户所属业务单元主键");
        SYSTEM_VAR_KEYNAMEMAP.put("#CURRENTUSER.BUSINESSUNITNAME#", "当前用户所属业务单元");
    }
    public static Map<String, String> getSystemVarValueMap() {
        Map<String, String> systemVarMap = new HashMap();
        SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
        if (sessionInfo != null) {
            systemVarMap.put("#CURRENTUSER.OID#", sessionInfo.getUserOid());
            systemVarMap.put("#CURRENTUSER.ID#", sessionInfo.getUserId());
            systemVarMap.put("#CURRENTUSER_NAME#", sessionInfo.getUserName());
            systemVarMap.put("#CURRENTDATETIME#", VciDateUtil.getNowString());
            systemVarMap.put("#CURRENTDATE#", VciDateUtil.getNowString("yyyy-MM-dd"));
            systemVarMap.put("#CURRENTTIME#", VciDateUtil.getNowString("HH:mm:ss"));
            systemVarMap.put("#CURRENTUSER.SECRETGRADE#", sessionInfo.getUserSecret());
            systemVarMap.put("#CURRENTUSER.GROUPNAME#", sessionInfo.getDeptName());
            systemVarMap.put("#CURRENTUSER.GROUPOID#", sessionInfo.getDeptOid());
            systemVarMap.put("#CURRENTUSER.EMAIL#", sessionInfo.getEmail());
            systemVarMap.put("#CURRENTUSER.ROLENAME#", (String) ((Collection) Optional.ofNullable(sessionInfo.getRolesName().values()).orElseGet(() -> {
                return new ArrayList();
            })).stream().collect(Collectors.joining(",")));
            systemVarMap.put("#CURRENTUSER.IPSECRET#", sessionInfo.getIpSecret());
            systemVarMap.put("#CURRENTUSER.BUSINESSUNIT#", sessionInfo.getOrgsOid());
            systemVarMap.put("#CURRENTUSER.BUSINESSUNITNAME#", sessionInfo.getOrgsName());
        }
        return systemVarMap;
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/Md5.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package com.vci.ubcs.starter.web.util;
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
import java.security.MessageDigest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Md5 {
    private static Logger logger = LoggerFactory.getLogger(Md5.class);
    public Md5() {
    }
    public static String md5(String v) {
        if (v == null) {
            return null;
        } else {
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                return toHex(md.digest(v.getBytes()));
            } catch (Exception var2) {
                return null;
            }
        }
    }
    public static String twoTimesMd5(String sourceString) throws Exception {
        return sourceString == null ? null : md5(md5(sourceString));
    }
    public static boolean equalMd5(String md5String, String sourceString) {
        if (md5String != null && sourceString != null) {
            try {
                return md5String.equals(twoTimesMd5(sourceString));
            } catch (Exception var3) {
                var3.printStackTrace();
                return false;
            }
        } else {
            return false;
        }
    }
    public static boolean equalOneMd5(String md5String, String sourceString) {
        if (md5String != null && sourceString != null) {
            try {
                String ms = md5(sourceString);
                return md5String.equals(ms);
            } catch (Exception var3) {
                if (logger.isErrorEnabled()) {
                    logger.error("对比md5的时候出现了错误", var3);
                }
                return false;
            }
        } else {
            return false;
        }
    }
    private static String toHex(byte[] buffer) {
        StringBuffer sb = new StringBuffer(32);
        String s = null;
        for(int i = 0; i < buffer.length; ++i) {
            s = Integer.toHexString(buffer[i] & 255);
            if (s.length() < 2) {
                sb.append('0');
            }
            sb.append(s);
        }
        return sb.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
@@ -79,7 +79,14 @@
            return 0;
        }
    }
    public static SessionInfo getCurrentUserSessionInfo() throws VciBaseException {
        SessionInfo si = getCurrentUserSessionInfoNotException();
        if (si == null) {
            throw new VciBaseException("noLogin", new String[]{"没有当前用户信息"});
        } else {
            return si;
        }
    }
    public static long getLong(String s) {
        long l = 0L;
        if (s == null) {
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseAttrController.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseattrController.java ÐÞ¸Ä
@@ -20,10 +20,10 @@
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
import com.vci.ubcs.code.service.ICodePhaseattrService;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import com.vci.ubcs.code.wrapper.CodePhaseattrWrapper;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import com.vci.ubcs.code.service.ICodePhaseAttrService;
import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
import com.vci.ubcs.code.wrapper.CodePhaseAttrWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -47,11 +47,11 @@
@AllArgsConstructor
@RequestMapping("/CodePhaseattr")
@Api(value = "编码库定义-模板阶段-属性", tags = "编码库定义-模板阶段-属性接口")
public class CodePhaseattrController extends BladeController {
public class CodePhaseAttrController extends BladeController {
    private final ICodePhaseattrService CodePhaseattrService;
    private final ICodePhaseAttrService CodePhaseattrService;
    private CodePhaseattrMapper codePhaseAttrMapper;
    private CodePhaseAttrMapper codePhaseAttrMapper;
    /**
     * ç¼–码库定义-模板阶段-属性 è¯¦æƒ…
@@ -59,9 +59,9 @@
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入CodePhaseattr")
    public R<CodePhaseattrVO> detail(CodePhaseAttr codePhaseattr) {
    public R<CodePhaseAttrVO> detail(CodePhaseAttr codePhaseattr) {
        CodePhaseAttr detail = CodePhaseattrService.getOne(Condition.getQueryWrapper(codePhaseattr));
        return R.data(CodePhaseattrWrapper.build().entityVO(detail));
        return R.data(CodePhaseAttrWrapper.build().entityVO(detail));
    }
    /**
     * ç¼–码库定义-模板阶段-属性 åˆ†é¡µ
@@ -69,9 +69,9 @@
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入CodePhaseattr")
    public R<IPage<CodePhaseattrVO>> list(CodePhaseAttr codePhaseattr, Query query) {
    public R<IPage<CodePhaseAttrVO>> list(CodePhaseAttr codePhaseattr, Query query) {
        IPage<CodePhaseAttr> pages = CodePhaseattrService.page(Condition.getPage(query), Condition.getQueryWrapper(codePhaseattr));
        return R.data(CodePhaseattrWrapper.build().pageVO(pages));
        return R.data(CodePhaseAttrWrapper.build().pageVO(pages));
    }
    /**
@@ -80,8 +80,8 @@
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入CodePhaseattr")
    public R<IPage<CodePhaseattrVO>> page(CodePhaseattrVO CodePhaseattr, Query query) {
        IPage<CodePhaseattrVO> pages = CodePhaseattrService.selectCodePhaseattrPage(Condition.getPage(query), CodePhaseattr);
    public R<IPage<CodePhaseAttrVO>> page(CodePhaseAttrVO CodePhaseattr, Query query) {
        IPage<CodePhaseAttrVO> pages = CodePhaseattrService.selectCodePhaseattrPage(Condition.getPage(query), CodePhaseattr);
        return R.data(pages);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.java
@@ -19,7 +19,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
@@ -39,7 +40,7 @@
@AllArgsConstructor
public class CodePhaseattrClient implements ICodePhaseattrClient {
    private final CodePhaseattrMapper codePhaseAttrMapper;
    private final CodePhaseAttrMapper codePhaseAttrMapper;
    @Override
    @GetMapping(TOP)
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseAttrMapper.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseattrMapper.java ÐÞ¸Ä
@@ -17,9 +17,10 @@
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
import java.util.List;
/**
@@ -28,7 +29,7 @@
 * @author yuxc
 * @since 2023-04-20
 */
public interface CodePhaseattrMapper extends BaseMapper<CodePhaseAttr> {
public interface CodePhaseAttrMapper extends BaseMapper<CodePhaseAttr> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
@@ -37,7 +38,7 @@
     * @param CodePhaseattr
     * @return
     */
    List<CodePhaseattrVO> selectCodePhaseattrPage(IPage page, CodePhaseattrVO CodePhaseattr);
    List<CodePhaseAttrVO> selectCodePhaseattrPage(IPage page, CodePhaseAttrVO CodePhaseattr);
    List<CodePhaseAttr> selectByPhasea(String oid);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java
@@ -5,20 +5,16 @@
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * åˆ†ç±»ç æ®µçš„码值服务接口
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstempattrService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java
@@ -17,7 +17,7 @@
 * å›ºå®šç æ®µçš„码值服务接口
 *
 * @author ludc
 * @date 2022-01-24
 * @date 2023-04-24
 */
public interface ICodeFixedValueService extends IService<CodeFixedValue> {
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseAttrService.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java ÐÞ¸Ä
@@ -19,7 +19,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
/**
 * ç¼–码库定义-模板阶段-属性 æœåŠ¡ç±»
@@ -27,7 +27,7 @@
 * @author yuxc
 * @since 2023-04-20
 */
public interface ICodePhaseattrService extends IService<CodePhaseAttr> {
public interface ICodePhaseAttrService extends IService<CodePhaseAttr> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
@@ -36,7 +36,7 @@
     * @param CodePhaseattr
     * @return
     */
    IPage<CodePhaseattrVO> selectCodePhaseattrPage(IPage<CodePhaseattrVO> page, CodePhaseattrVO CodePhaseattr);
    IPage<CodePhaseAttrVO> selectCodePhaseattrPage(IPage<CodePhaseAttrVO> page, CodePhaseAttrVO CodePhaseattr);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -26,6 +26,7 @@
import com.vci.ubcs.code.wrapper.CodeBasicSecWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum;
import com.vci.ubcs.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.starter.web.pagemodel.UIFormReferVO;
@@ -210,7 +211,6 @@
        if (! "success".equals(attrKv.getKey())){
            throw new VciBaseException(attrKv.getValue() + "不能为空");
        }
        //将DTO转换为DO
        CodeBasicSec codeBasicSecDO = new CodeBasicSec();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDTO, codeBasicSecDO);
@@ -221,15 +221,7 @@
        codeBasicSecDO.setValueCutTypeText(CodeCutTypeEnum.getValueByText(codeBasicSecDTO.getValueCutType()));
        codeBasicSecDO.setCodeGetValueTypeText(CodeGetValueTypeEnum.getValueByText(codeBasicSecDTO.getCodeGetValueType()));
        //填充一些默认值
        codeBasicSecDO.setOid(VciBaseUtil.getPk());
        codeBasicSecDO.setRevisionOid(VciBaseUtil.getPk());
        codeBasicSecDO.setNameOid(VciBaseUtil.getPk());
        codeBasicSecDO.setBtmname(MdmBtmTypeConstant.CODE_BASIC_SEC);
        codeBasicSecDO.setTs(new Date());
        codeBasicSecDO.setCreateTime(new Date());
        codeBasicSecDO.setCreator(AuthUtil.getUserId().toString());
        codeBasicSecDO.setLastModifier(AuthUtil.getUserId().toString());
        codeBasicSecDO.setLastModifyTime(new Date());
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeBasicSecDO,MdmBtmTypeConstant.CODE_BASIC_SEC);
        //排序号,默认等于当前已有的数量加1
        Long total = codeBasicSecMapper.selectCount(Wrappers.<CodeBasicSec>query()
            .lambda()
@@ -287,6 +279,7 @@
        }
        //将DTO转换为DO
        CodeBasicSec codeBasicSecDO = selectByOid(codeBasicSecDTO.getOid());
        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeBasicSecDO);
        boolean status = codeRuleService.checkEditDelStatus(codeRuleService.getObjectByOid(codeBasicSecDO.getPkCodeRule()).getLcStatus());
        boolean resBoolean;
        if (!status){
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java
@@ -83,12 +83,10 @@
        BeanMap beanMap = BeanMap.create(codeClassifyProcessTemp);
        beanMap.putAll(conditionMap);
        IPage<CodeClassifyProcessTemp> doList = codeClassifyProcessTempMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeClassifyProcessTemp));
        IPage<CodeClassifyProcessTempVO> voList = new Page<CodeClassifyProcessTempVO>();
        IPage<CodeClassifyProcessTempVO> voList = new Page<>();
        //DataGrid<CodeClassifyProcessTempVO> dataGrid=new DataGrid<>();
        if (!CollectionUtils.isEmpty(doList.getRecords())) {
            voList.setRecords(CodeClassifyProcessTempWrapper.build().listVO(doList.getRecords()));
            //分页参数转到pageVO对象
            voList = PageDO2PageVO.pageDO2PageVO(doList,voList);
            voList = CodeClassifyProcessTempWrapper.build().pageVO(doList);
        }
        return voList;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -65,13 +65,12 @@
            query.setSize(pageHelper.getLimit());
        }
        //pageHelper.addDefaultAsc("ordernum");
        query.setAscs("ordernum");
        query.setAscs("ORDERNUM");
        //这儿是个连表查询
        IPage<CodeClassifyTemplateAttr> doList = codeClassifyTemplateAttrMapper.selectPage(Condition.getPage(query), mpjLambdaWrapper);
        IPage<CodeClassifyTemplateAttrVO> voList = new Page<>();
        if (!CollectionUtils.isEmpty(doList.getRecords())) {
            voList.setRecords(CodeClstempattrWrapper.build().listVO(doList.getRecords()));
            PageDO2PageVO.pageDO2PageVO(doList,voList);
            voList = CodeClstempattrWrapper.build().pageVO(doList);
        }
        return voList;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
@@ -4,9 +4,11 @@
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.mapper.CodeClassifyValueMapper;
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.service.ICodeClassifyValueService;
@@ -16,9 +18,11 @@
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -30,7 +34,8 @@
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.LC_STATUS;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_CASCADE_LINKED_NOT_DELETE;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@Service
public class CodeClassifyValueServiceImpl  extends ServiceImpl<CodeClassifyValueMapper, CodeClassifyValue> implements ICodeClassifyValueService {
@@ -48,7 +53,7 @@
    /**
     * ä¸Šçº§èŠ‚ç‚¹çš„å±žæ€§åç§°
     */
    private static  final String PARENT_FIELD_NAME = "parentClassifyValueOid";
    private static final String PARENT_FIELD_NAME = "parentClassifyValueOid";
    /**
     * æŸ¥è¯¢åˆ†ç±»ç æ®µçš„码值 æ ‘
@@ -59,7 +64,7 @@
    @Override
    public List<Tree> treeCodeClassifyValue(TreeQueryObject treeQueryObject) throws VciBaseException {
        // List<CodeClassifyValueDO> doList =selectCodeClassifyValueDOByTree(treeQueryObject);
        List<CodeClassifyValue> doList =selectCodeClassifyValueDO4Tree(treeQueryObject);
        List<CodeClassifyValue> doList = selectCodeClassifyValueDO4Tree(treeQueryObject);
        List<CodeClassifyValueVO> voList = CodeClassifyValueWrapper.build().listVO(doList);
        TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
        treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
@@ -77,12 +82,13 @@
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean addSave(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyValueDTO,"需要添加的数据对象");
        //添加对码值子父级的判断
        if(StringUtils.isNotBlank(codeClassifyValueDTO.getParentclassifyvalueoid())){
            String parentclassifyvalueoid = codeClassifyValueDTO.getParentclassifyvalueoid();
            String codeclassifysecoid = codeClassifyValueDTO.getCodeclassifysecoid();
        if(StringUtils.isNotBlank(codeClassifyValueDTO.getParentClassifyValueOid())){
            String parentclassifyvalueoid = codeClassifyValueDTO.getParentClassifyValueOid();
            String codeclassifysecoid = codeClassifyValueDTO.getCodeClassifySecOid();
            CodeClassifyValue parentDO = codeClassifyValueMapper.selectById(parentclassifyvalueoid);
            if (parentDO.getCodeClassifySecOid().equalsIgnoreCase(codeclassifysecoid)){
                throw new VciBaseException("不允许在父码值中直接添加子码值");
@@ -91,6 +97,8 @@
        //将DTO转换为DO
        CodeClassifyValue codeClassifyValueDO = new CodeClassifyValue();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyValueDTO,codeClassifyValueDO);
        //填充一些默认值
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeClassifyValueDO,MdmBtmTypeConstant.CODE_CLASSIFY_VALUE);
        //查询
        List<CodeClassifyValue> existList = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query()
            .lambda().eq(CodeClassifyValue::getCodeClassifySecOid, codeClassifyValueDO.getCodeClassifySecOid())
@@ -108,11 +116,14 @@
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean editSave(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyValueDTO,"数据对象",codeClassifyValueDTO.getOid(),"分类码段的码值主键");
        //将DTO转换为DO
        CodeClassifyValue codeClassifyValueDO = selectByOid(codeClassifyValueDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(codeClassifyValueDTO,codeClassifyValueDO);
        //填充一些默认值
        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeClassifyValueDO);
        boolean resBoolean = codeClassifyValueMapper.updateById(codeClassifyValueDO) > 0;
        return resBoolean;
    }
@@ -137,9 +148,7 @@
     * @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
     */
    private R checkIsCanDeleteForDO(CodeClassifyValueDTO codeClassifyValueDTO, CodeClassifyValue codeClassifyValueDO) {
        if (!checkTs(codeClassifyValueDTO,codeClassifyValueDO)) {
            return R.fail(TS_NOT_PROCESS);
        }
        //boService.checkTs(codeClassifyValueDTO);
        //校验下级是否有引用
        if(checkChildIsLinked(codeClassifyValueDO.getOid())){
            return R.fail(DATA_CASCADE_LINKED_NOT_DELETE);
@@ -204,7 +213,7 @@
        VciBaseUtil.alertNotNull(codeClassifyValueDTO,"分类码段的码值数据对象",codeClassifyValueDTO.getOid(),"分类码段的码值的主键");
        CodeClassifyValue codeClassifyValueDO = selectByOid(codeClassifyValueDTO.getOid());
        R baseResult = checkIsCanDeleteForDO(codeClassifyValueDTO,codeClassifyValueDO);
        if(baseResult.isSuccess()) {
        if(!baseResult.isSuccess()) {
            //找下级的,这个是可以删除的时候R
            List<String> childrenOids = codeClassifyValueMapper.selectAllLevelChildOid(codeClassifyValueDO.getOid().trim());
            if (!CollectionUtils.isEmpty(childrenOids)) {
@@ -281,12 +290,12 @@
        List<CodeClassifyValue> updateList = new ArrayList<>();
        dtoList.forEach(dto -> {
            if( StringUtils.isNotBlank( dto.getOid() )){
            if(StringUtils.isNotBlank(dto.getOid())){
                List<CodeClassifyValue> collect = valueDOList.stream().filter(value -> {
                    return dto.getOid().equals(value.getOid());
                }).collect(Collectors.toList());
                collect.forEach(ccv -> {
                    ccv.setOrderNum(dto.getOrdernum());
                    ccv.setOrderNum(dto.getOrderNum());
                    ccv.setId(dto.getId());
                    ccv.setName(dto.getName());
                    updateList.add(ccv);
@@ -336,22 +345,8 @@
        List<String> oids = codeBasicSecService.getOidByCodeclassifysecOid(conditionMap.get("codeclassifysecoid"));
        LambdaQueryWrapper<CodeClassifyValue> wrapper = Wrappers.<CodeClassifyValue>query()
            .lambda().in(CodeClassifyValue::getCodeClassifySecOid,oids)
            .orderByDesc(CodeClassifyValue::getOrderNum);
            .orderByAsc(CodeClassifyValue::getOrderNum);
        return codeClassifyValueMapper.selectList(wrapper);
    }
    /**
     * æ£€æŸ¥ts
     * @param tempDO
     * @return
     */
    private boolean checkTs(CodeClassifyValueDTO tempDO,CodeClassifyValue codeClassifyValueDO){
        Date dbTs = codeClassifyValueDO.getTs();
        Date currentTs = tempDO.getTs();
        if(currentTs == null ?  dbTs == null:currentTs.compareTo(dbTs)==0){
            return true;
        }
        return false;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -94,7 +94,7 @@
    @Autowired(required = false)
    private CodeClassifyTemplateButtonMapper codeTempbuttonMapper;
    @Autowired(required = false)
    private CodePhaseattrMapper codePhaseattrMapper;
    private CodePhaseAttrMapper codePhaseattrMapper;
    @Autowired(required = false)
    private CodeClassifyMapper codeClassifyMapper;
    @Autowired(required = false)
@@ -102,7 +102,7 @@
    @Autowired(required = false)
    private CodeClstemplateMapper codeClstemplateMapper;
    @Autowired(required = false)
    private CodePhaseattrServiceImpl codePhaseattrServiceImpl;
    private CodePhaseAttrServiceImpl codePhaseattrServiceImpl;
    @Override
    public IPage<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage<CodeClstemplateVO> page, CodeClstemplateVO plCodeClstemplate) {
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java
@@ -1,13 +1,11 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeFixedValueDTO;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.mapper.CodeFixedValueMapper;
import com.vci.ubcs.code.service.ICodeFixedValueService;
@@ -15,6 +13,7 @@
import com.vci.ubcs.code.wrapper.CodeFixedValueWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.slf4j.Logger;
@@ -33,7 +32,8 @@
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_LINKED_NOT_DELETE;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
/**
 * å›ºå®šç æ®µçš„码值服务
@@ -85,15 +85,7 @@
        CodeFixedValue codeFixedValueDO = new CodeFixedValue();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeFixedValueDTO,codeFixedValueDO);
        //填充一些默认值
        codeFixedValueDO.setOid(VciBaseUtil.getPk());
        codeFixedValueDO.setRevisionOid(VciBaseUtil.getPk());
        codeFixedValueDO.setNameOid(VciBaseUtil.getPk());
        codeFixedValueDO.setBtmname(MdmBtmTypeConstant.CODE_FIXED_VALUE);
        codeFixedValueDO.setCreateTime(new Date());
        codeFixedValueDO.setCreator(AuthUtil.getUserId().toString());
        codeFixedValueDO.setLastModifier(AuthUtil.getUserId().toString());
        codeFixedValueDO.setLastModifyTime(new Date());
        codeFixedValueDO.setTs(new Date());
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeFixedValueDO,MdmBtmTypeConstant.CODE_FIXED_VALUE);
        Long count = this.codeFixedValueMapper.selectCount(Wrappers.<CodeFixedValue>query()
            .lambda().eq(CodeFixedValue::getCodeFixedSecOid, codeFixedValueDO.getCodeFixedSecOid())
        )+1L;
@@ -116,9 +108,7 @@
        CodeFixedValue codeFixedValueDO = selectByOid(codeFixedValueDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(codeFixedValueDTO,codeFixedValueDO);
        //填充一些默认值
        codeFixedValueDO.setLastModifier(AuthUtil.getUserId().toString());
        codeFixedValueDO.setLastModifyTime(new Date());
        codeFixedValueDO.setTs(new Date());
        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeFixedValueDO);
        boolean resBoolean = codeFixedValueMapper.updateById(codeFixedValueDO) > 0;
        return resBoolean;
    }
@@ -130,28 +120,12 @@
     * @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
     */
    private R checkIsCanDeleteForDO(CodeFixedValueDTO codeFixedValueDTO, CodeFixedValue codeFixedValueDO) {
        if(!checkTs(codeFixedValueDTO,codeFixedValueDO)) {
            return R.fail(TS_NOT_PROCESS);
        }
        //boService.checkTs(codeFixedValueDTO);
        if(!checkIsLinked(codeFixedValueDO.getOid())) {
            return R.status(true);
        }else{
            return R.fail(DATA_LINKED_NOT_DELETE);
        }
    }
    /**
     * æ£€æŸ¥ts
     * @param tempDO
     * @return
     */
    private boolean checkTs(CodeFixedValueDTO tempDO,CodeFixedValue codeFixedValueDO){
        Date dbTs = codeFixedValueDO.getTs();
        Date currentTs = tempDO.getTs();
        if(currentTs == null ?  dbTs == null:currentTs.compareTo(dbTs)==0){
            return true;
        }
        return false;
    }
    /**
@@ -340,6 +314,5 @@
        boolean resBoolean = codeFixedValueMapper.deleteBatchIds(doList.stream().map(CodeFixedValue::getOid).collect(Collectors.toList())) > 0;
        return resBoolean;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseAttrServiceImpl.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseattrServiceImpl.java ÐÞ¸Ä
@@ -19,9 +19,9 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
import com.vci.ubcs.code.service.ICodePhaseattrService;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import com.vci.ubcs.code.service.ICodePhaseAttrService;
import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
import org.springframework.stereotype.Service;
/**
@@ -31,11 +31,11 @@
 * @since 2023-04-20
 */
@Service
public class CodePhaseattrServiceImpl extends ServiceImpl<CodePhaseattrMapper, CodePhaseAttr> implements ICodePhaseattrService {
public class CodePhaseAttrServiceImpl extends ServiceImpl<CodePhaseAttrMapper, CodePhaseAttr> implements ICodePhaseAttrService {
    @Override
    public IPage<CodePhaseattrVO> selectCodePhaseattrPage(IPage<CodePhaseattrVO> page, CodePhaseattrVO CodePhaseattr) {
        return page.setRecords(baseMapper.selectCodePhaseattrPage(page, CodePhaseattr));
    public IPage<CodePhaseAttrVO> selectCodePhaseattrPage(IPage<CodePhaseAttrVO> page, CodePhaseAttrVO codePhaseAttr) {
        return page.setRecords(baseMapper.selectCodePhaseattrPage(page, codePhaseAttr));
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -21,6 +21,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.dto.CodeRuleDTO;
import com.vci.ubcs.code.entity.*;
@@ -38,6 +39,7 @@
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -118,26 +120,9 @@
        //将DTO转换为DO
        CodeRule codeRule = Objects.requireNonNull(BeanUtil.copy(codeRuleDTO, CodeRule.class));
        String userId = AuthUtil.getUserId().toString();
        codeRule.setOid(VciBaseUtil.getPk());
        codeRule.setRevisionOid(VciBaseUtil.getPk());
        codeRule.setNameOid(VciBaseUtil.getPk());
        codeRule.setBtmname("coderule");
        codeRule.setLastR("1");
        codeRule.setLastV("1");
        codeRule.setFirstR("1");
        codeRule.setFirstV("1");
        codeRule.setCreator(userId);
        codeRule.setCreateTime(new Date());
        codeRule.setLastModifier("1");
        codeRule.setLastModifyTime(new Date());
        codeRule.setVersionRule("0");
        codeRule.setVersionSeq(1);
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeRule, MdmBtmTypeConstant.CODE_RULE);
        codeRule.setLctid(CODE_RULE_LC);
        codeRule.setLcStatus(FRAMEWORK_RELEASE_EDITING);
        codeRule.setOwner("1");
        codeRule.setCreator(userId);
        codeRule.setLastModifier(userId);
        return codeRuleMapper.insert(codeRule)>0;
    }
@@ -171,6 +156,7 @@
        //将DTO转换为DO
        CodeRule codeRule = selectByOid(codeRuleDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(codeRuleDTO, codeRule);
        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeRule);
        return codeRuleMapper.updateById(codeRule)>0;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
@@ -114,8 +114,7 @@
        IPage<CodeClassifyTemplateButton> doList = codeClassifyTemplateButtonMapper.selectPage(Condition.getPage(query),getMPJLambdaWrapper(conditionMap));
        IPage<CodeClassifyTemplateButtonVO> voList = new Page<>();
        if (!CollectionUtils.isEmpty(doList.getRecords())) {
            voList.setRecords(codeClassifyTemplateButtonDO2VOs(doList.getRecords()));
            voList = PageDO2PageVO.pageDO2PageVO(doList,voList);
            voList = CodeTempbuttonWrapper.build().pageVO(doList);
        }
        return voList;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java
@@ -17,11 +17,8 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -30,11 +27,11 @@
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeTemplatePhaseDTO;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import com.vci.ubcs.code.mapper.CodeTemplatePhaseMapper;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
import com.vci.ubcs.code.service.ICodePhaseattrService;
import com.vci.ubcs.code.service.ICodePhaseAttrService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
import com.vci.ubcs.code.wrapper.CodeTemplatePhaseWapper;
@@ -43,8 +40,6 @@
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MybatisParameterUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
@@ -73,7 +68,7 @@
public class CodeTempphaseServiceImpl extends ServiceImpl<CodeTemplatePhaseMapper, CodeTemplatePhase> implements ICodeTempphaseService {
    @Autowired(required = false)
    private CodePhaseattrMapper codePhaseAttrMapper;
    private CodePhaseAttrMapper codePhaseAttrMapper;
    @Autowired(required = false)
    private CodeTemplatePhaseMapper codeTemplatePhaseMapper;
@@ -82,7 +77,7 @@
    private CommonsMapper commonsMapper;
    @Autowired(required = false)
    private ICodePhaseattrService codePhaseattrService;
    private ICodePhaseAttrService codePhaseattrService;
    /**
     * å¯¹è±¡çš„æ“ä½œ
@@ -112,16 +107,14 @@
            query.setSize(pageHelper.getLimit());
            query.setCurrent(pageHelper.getPage());
        }
        query.setDescs("createTime");
        query.setDescs("CREATETIME");
        CodeTemplatePhase codeTemplatePhase = new CodeTemplatePhase();
        BeanMap beanMap = BeanMap.create(codeTemplatePhase);
        beanMap.putAll(conditionMap);
        IPage<CodeTemplatePhase> doList = codeTemplatePhaseMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeTemplatePhase));
        IPage<CodeTemplatePhaseVO> voList = new Page<>();
        if (!CollectionUtils.isEmpty(doList.getRecords())) {
            voList.setRecords(CodeTemplatePhaseWapper.build().listVO(doList.getRecords()));
            //分页参数转到pageVO对象
            voList = PageDO2PageVO.pageDO2PageVO(doList,voList);
            CodeTemplatePhaseWapper.build().pageVO(doList);
        }
        return voList;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseAttrWrapper.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseattrWrapper.java ÐÞ¸Ä
@@ -17,9 +17,9 @@
package com.vci.ubcs.code.wrapper;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import java.util.Objects;
/**
@@ -28,15 +28,15 @@
 * @author yuxc
 * @since 2023-04-20
 */
public class CodePhaseattrWrapper extends BaseEntityWrapper<CodePhaseAttr, CodePhaseattrVO>  {
public class CodePhaseAttrWrapper extends BaseEntityWrapper<CodePhaseAttr, CodePhaseAttrVO>  {
    public static CodePhaseattrWrapper build() {
        return new CodePhaseattrWrapper();
    public static CodePhaseAttrWrapper build() {
        return new CodePhaseAttrWrapper();
     }
    @Override
    public CodePhaseattrVO entityVO(CodePhaseAttr codePhaseattr) {
        CodePhaseattrVO CodePhaseattrVO = Objects.requireNonNull(BeanUtil.copy(codePhaseattr, CodePhaseattrVO.class));
    public CodePhaseAttrVO entityVO(CodePhaseAttr codePhaseattr) {
        CodePhaseAttrVO CodePhaseattrVO = Objects.requireNonNull(BeanUtil.copy(codePhaseattr, CodePhaseAttrVO.class));
        //User createUser = UserCache.getUser(CodePhaseattr.getCreateUser());
        //User updateUser = UserCache.getUser(CodePhaseattr.getUpdateUser());
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
@@ -148,7 +148,6 @@
                and PL_CODE_BASICSEC.TS = #{codeBasicSec.ts}
            </if>
            <if test="codeBasicSec.id != null and codeBasicSec.id != ''">
                and PL_CODE_BASICSEC.ID like CONCAT(CONCAT('%', #{codeBasicSec.id}), '%')
            </if>
            <if test="codeBasicSec.name != null and codeBasicSec.name != ''">
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseAttrMapper.xml
@@ -31,7 +31,7 @@
        <result column="OWNER" property="owner"/>
        <result column="COPYFROMVERSION" property="copyFromVersion"/>
        <result column="CODEPHASEOID" property="codePhaseOid"/>
        <result column="ATTRIBUTEGROUP" property="attributegroup"/>
        <result column="ATTRIBUTEGROUP" property="attributeGroup"/>
    </resultMap>
    <select id="selectCodePhaseattrPage" resultMap="CodePhaseattrResultMap">
@@ -45,36 +45,32 @@
               description,
               oid,
               versionseq,
               checkinby,
               revisionrule,
               lctid,
               id,
               owner,
               checkoutby,
               creator,
               createtime,
               isfirstv,
               firstv,
               attributegroup,
               revisionoid,
               btmname,
               checkouttime,
               revisionvalue,
               versionrule,
               name,
               islastr,
               lastr,
               lastmodifytime,
               copyfromversion,
               nameoid,
               lcstatus,
               islastv,
               checkintime,
               lastv,
               codephaseoid,
               isfirstr
               firstr
        from PL_CODE_PHASEATTR
        where codephaseoid in
              (select oid
               from PL_CODE_TEMPPHASE
               where codeClassifyTemplateOid = #{oid})
          (select oid
           from PL_CODE_TEMPPHASE
           where codeClassifyTemplateOid = #{oid})
    </select>
    <select id="selectByPhaseaIds" resultMap="CodePhaseattrResultMap">
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseattrMapper.xml
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictController.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,163 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.controller;
import com.vci.ubcs.omd.wrapper.EnumWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.vo.EnumVO;
import com.vci.ubcs.omd.service.IEnumService;
import org.springblade.core.boot.ctrl.BladeController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import java.util.Map;
/**
 * æžšä¸¾å®šä¹‰ æŽ§åˆ¶å™¨
 *
 * @author yuxc
 * @since 2023-05-08
 */
@RestController
@AllArgsConstructor
@RequestMapping("/enum")
@Api(value = "枚举定义", tags = "枚举定义接口")
public class EnumController extends BladeController {
    private final IEnumService omdEnumService;
    /**
     * æžšä¸¾å®šä¹‰ è¯¦æƒ…
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入omdEnum")
    public R<EnumVO> detail(Enum omdEnum) {
        Enum detail = omdEnumService.getOne(Condition.getQueryWrapper(omdEnum));
        return R.data(EnumWrapper.build().entityVO(detail));
    }
    /**
     * æžšä¸¾å®šä¹‰ åˆ†é¡µ
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入omdEnum")
    public R<IPage<EnumVO>> list(Enum omdEnum, Query query) {
        IPage<Enum> pages = omdEnumService.page(Condition.getPage(query), Condition.getQueryWrapper(omdEnum));
        return R.data(EnumWrapper.build().pageVO(pages));
    }
    /**
     * æžšä¸¾å®šä¹‰ è‡ªå®šä¹‰åˆ†é¡µ
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入omdEnum")
    public R<IPage<EnumVO>> page(EnumVO omdEnum, Query query) {
        IPage<EnumVO> pages = omdEnumService.selectOmdEnumPage(Condition.getPage(query), omdEnum);
        return R.data(pages);
    }
    /**
     * æžšä¸¾å®šä¹‰ æ–°å¢ž
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入omdEnum")
    public R save(@Valid @RequestBody Enum omdEnum) {
        return R.status(omdEnumService.save(omdEnum));
    }
    /**
     * æžšä¸¾å®šä¹‰ ä¿®æ”¹
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入omdEnum")
    public R update(@Valid @RequestBody Enum omdEnum) {
        return R.status(omdEnumService.updateById(omdEnum));
    }
    /**
     * æžšä¸¾å®šä¹‰ æ–°å¢žæˆ–修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入omdEnum")
    public R submit(@Valid @RequestBody Enum omdEnum) {
        return R.status(omdEnumService.saveOrUpdate(omdEnum));
    }
    /**
     * æžšä¸¾å®šä¹‰ åˆ é™¤
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(omdEnumService.deleteLogic(Func.toStrList(ids)));
    }
    /**
     * æžšä¸¾å®šä¹‰ åˆ†é¡µ
     */
    @GetMapping("/parent-list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入omdEnum")
    public R<IPage<EnumVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict , Query query) {
        return R.data(omdEnumService.parentList(dict, query));
    }
    /**
     * èŽ·å–å­—å…¸æ ‘å½¢ç»“æž„
     */
    @GetMapping("/tree")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "树形结构", notes = "树形结构")
    public R<List<EnumVO>> tree(@ApiIgnore @RequestParam Map<String, Object> dict , Query query) {
        List<EnumVO> tree = omdEnumService.tree(dict, query);
        return R.data(tree);
    }
    /**
     * èŽ·å–æžšä¸¾
     */
    @GetMapping("/dictionary")
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "获取枚举", notes = "获取枚举")
    public R<List<EnumVO>> dictionary(String code) {
        List<EnumVO> tree = omdEnumService.getList(code);
        return R.data(tree);
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumItemController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,149 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.controller;
import com.vci.ubcs.omd.wrapper.EnumitemWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.vo.EnumItemVO;
import com.vci.ubcs.omd.service.IEnumItemService;
import org.springblade.core.boot.ctrl.BladeController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * æžšä¸¾å®šä¹‰å­è¡¨ æŽ§åˆ¶å™¨
 *
 * @author yuxc
 * @since 2023-05-08
 */
@RestController
@AllArgsConstructor
@RequestMapping("/enumItem")
@Api(value = "枚举定义子表", tags = "枚举定义子表接口")
public class EnumItemController extends BladeController {
    private final IEnumItemService omdEnumitemService;
    /**
     * æžšä¸¾å®šä¹‰å­è¡¨ è¯¦æƒ…
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入omdEnumitem")
    public R<EnumItemVO> detail(EnumItem enumitem) {
        EnumItem detail = omdEnumitemService.getOne(Condition.getQueryWrapper(enumitem));
        return R.data(EnumitemWrapper.build().entityVO(detail));
    }
    /**
     * æžšä¸¾å®šä¹‰å­è¡¨ åˆ†é¡µ
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入omdEnumitem")
    public R<IPage<EnumItemVO>> list(EnumItem enumitem, Query query) {
        IPage<EnumItem> pages = omdEnumitemService.page(Condition.getPage(query), Condition.getQueryWrapper(enumitem).orderByAsc("sort"));
        return R.data(EnumitemWrapper.build().pageVO(pages));
    }
    /**
     * æžšä¸¾å®šä¹‰å­è¡¨ åˆ†é¡µ
     */
    @GetMapping("/listAll")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入omdEnumitem")
    public R<List<EnumItemVO>> listAll(@ApiIgnore @RequestParam Map<String, Object> omdEnumitem, Query query) {
        return R.data(omdEnumitemService.childList(Condition.getQueryWrapper(omdEnumitem, EnumItem.class).orderByAsc("sort")));
    }
    /**
     * æžšä¸¾å®šä¹‰å­è¡¨ è‡ªå®šä¹‰åˆ†é¡µ
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入omdEnumitem")
    public R<IPage<EnumItemVO>> page(EnumItemVO omdEnumitem, Query query) {
        IPage<EnumItemVO> pages = omdEnumitemService.selectOmdEnumitemPage(Condition.getPage(query), omdEnumitem);
        return R.data(pages);
    }
    /**
     * æžšä¸¾å®šä¹‰å­è¡¨ æ–°å¢ž
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入omdEnumitem")
    public R save(@Valid @RequestBody EnumItem enumitem) {
        return R.status(omdEnumitemService.save(enumitem));
    }
    /**
     * æžšä¸¾å®šä¹‰å­è¡¨ ä¿®æ”¹
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入omdEnumitem")
    public R update(@Valid @RequestBody EnumItem enumitem) {
        return R.status(omdEnumitemService.updateById(enumitem));
    }
    /**
     * æžšä¸¾å®šä¹‰å­è¡¨ æ–°å¢žæˆ–修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入omdEnumitem")
    public R submit(@Valid @RequestBody EnumItem enumitem) {
        if(enumitem.getOid() == null){
            enumitem.setCreatetime(new Date());
            enumitem.setCreator(AuthUtil.getUser().getUserName());
        }
        enumitem.setModifier(AuthUtil.getUser().getUserName());
        enumitem.setModifytime(new Date());
        enumitem.setTs(new Date());
        return R.status(omdEnumitemService.saveOrUpdate(enumitem));
    }
    /**
     * æžšä¸¾å®šä¹‰å­è¡¨ åˆ é™¤
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(omdEnumitemService.deleteLogic(Func.toStrList(ids)));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmAttributeClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.service.IBtmTypeAttributeService;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.wrapper.BtmTypeAttributeWrapper;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
/**
 * Description: ä¸šåŠ¡ç±»åž‹å…³è”å±žæ€§æœåŠ¡Feign实现类
 *
 * @author LiHang
 * @date 2023/5/10
 */
@NonDS
@ApiIgnore
@RestController
@AllArgsConstructor
public class BtmAttributeClient implements IBtmAttributeClient{
    private final IBtmTypeAttributeService btmTypeAttributeService;
    @GetMapping(LIST_BY_BTM_OID)
    @Override
    public R<List<BtmTypeAttributeVO>> listByBtmOid(String oid) {
        return R.data(BtmTypeAttributeWrapper.build().listEntityVO(
        btmTypeAttributeService.list(Wrappers.<BtmTypeAttribute>query().lambda().eq(BtmTypeAttribute::getPkBtmType,oid))
        ));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/EnumClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.mapper.EnumMapper;
import com.vci.ubcs.omd.service.IEnumItemService;
import com.vci.ubcs.omd.service.IEnumService;
import com.vci.ubcs.omd.vo.EnumVO;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
/**
 * æžšä¸¾å®šä¹‰ Feign实现类
 *
 * @author yuxc
 * @since 2023-05-08
 */
@ApiIgnore()
@RestController
@AllArgsConstructor
public class EnumClient implements IEnumClient {
    private final EnumMapper enumMapper;
    private IEnumService iEnumService;
    private IEnumItemService iEnumItemService;
    @Override
    @GetMapping(TOP)
    public BladePage<Enum> top(Integer current, Integer size) {
        Query query = new Query();
        query.setCurrent(current);
        query.setSize(size);
        IPage<Enum> page = enumMapper.selectPage(Condition.getPage(query),
            Wrappers.emptyWrapper());
//            service.page(Condition.getPage(query));
        return BladePage.of(page);
    }
    /**
     * èŽ·å–æžšä¸¾å®šä¹‰åˆ—è¡¨
     *
     * @param name   çˆ¶èŠ‚ç‚¹name
     * @param nameChild      å­èŠ‚ç‚¹name
     * @return BladePage
     */
    @Override
    public R<String> getValue(String name,String nameChild) {
        return R.data(iEnumService.getValue(name, nameChild));
    }
    @Override
    public R<Enum> getById(String oid) {
        return R.data(iEnumService.getById(oid));
    }
    @Override
    public R<EnumItem> getByChildId(String oid) {
        return R.data(iEnumItemService.getById(oid));
    }
    @Override
    public R<List<EnumVO>> getList(String name) {
        return R.data(iEnumService.getList(name));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/EnumItemClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.mapper.EnumItemMapper;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
/**
 * æžšä¸¾å®šä¹‰å­è¡¨ Feign实现类
 *
 * @author yuxc
 * @since 2023-05-08
 */
@ApiIgnore()
@RestController
@AllArgsConstructor
public class EnumItemClient implements IEnumItemClient {
    private final EnumItemMapper enumItemMapper;
    @Override
    @GetMapping(TOP)
    public BladePage<EnumItem> top(Integer current, Integer size) {
        Query query = new Query();
        query.setCurrent(current);
        query.setSize(size);
        IPage<EnumItem> page = enumItemMapper.selectPage(Condition.getPage(query),
            Wrappers.emptyWrapper());
//        service.page(Condition.getPage(query));
        return BladePage.of(page);
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/EnumItemMapper.java
copy from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java copy to Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/EnumItemMapper.java
Îļþ´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java ¸´ÖÆ
@@ -14,29 +14,29 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.service;
package com.vci.ubcs.omd.mapper;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.vo.EnumItemVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import java.util.List;
/**
 * ç¼–码库定义-模板阶段-属性 æœåŠ¡ç±»
 * æžšä¸¾å®šä¹‰å­è¡¨ Mapper æŽ¥å£
 *
 * @author yuxc
 * @since 2023-04-20
 * @since 2023-05-08
 */
public interface ICodePhaseattrService extends IService<CodePhaseAttr> {
public interface EnumItemMapper extends BaseMapper<EnumItem> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
     *
     * @param page
     * @param CodePhaseattr
     * @param omdEnumitem
     * @return
     */
    IPage<CodePhaseattrVO> selectCodePhaseattrPage(IPage<CodePhaseattrVO> page, CodePhaseattrVO CodePhaseattr);
    List<EnumItemVO> selectOmdEnumitemPage(IPage page, EnumItemVO omdEnumitem);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/EnumMapper.java
copy from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java copy to Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/EnumMapper.java
Îļþ´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java ¸´ÖÆ
@@ -14,29 +14,33 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.service;
package com.vci.ubcs.omd.mapper;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.vo.EnumVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import java.util.List;
/**
 * ç¼–码库定义-模板阶段-属性 æœåŠ¡ç±»
 * æžšä¸¾å®šä¹‰ Mapper æŽ¥å£
 *
 * @author yuxc
 * @since 2023-04-20
 * @since 2023-05-08
 */
public interface ICodePhaseattrService extends IService<CodePhaseAttr> {
public interface EnumMapper extends BaseMapper<Enum> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
     *
     * @param page
     * @param CodePhaseattr
     * @param omdEnum
     * @return
     */
    IPage<CodePhaseattrVO> selectCodePhaseattrPage(IPage<CodePhaseattrVO> page, CodePhaseattrVO CodePhaseattr);
    List<EnumVO> selectOmdEnumPage(IPage page, EnumVO omdEnum);
    String getValue(String name, String nameChild);
    List<EnumVO> getList(String name);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumItemService.java
copy from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java copy to Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumItemService.java
Îļþ´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java ¸´ÖÆ
@@ -14,29 +14,37 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.service;
package com.vci.ubcs.omd.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.vo.EnumItemVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
 * ç¼–码库定义-模板阶段-属性 æœåŠ¡ç±»
 * æžšä¸¾å®šä¹‰å­è¡¨ æœåŠ¡ç±»
 *
 * @author yuxc
 * @since 2023-04-20
 * @since 2023-05-08
 */
public interface ICodePhaseattrService extends IService<CodePhaseAttr> {
public interface IEnumItemService extends IService<EnumItem> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
     *
     * @param page
     * @param CodePhaseattr
     * @param omdEnumitem
     * @return
     */
    IPage<CodePhaseattrVO> selectCodePhaseattrPage(IPage<CodePhaseattrVO> page, CodePhaseattrVO CodePhaseattr);
    IPage<EnumItemVO> selectOmdEnumitemPage(IPage<EnumItemVO> page, EnumItemVO omdEnumitem);
    boolean deleteLogic(List<String> toStringList);
    List<EnumItemVO> childList(QueryWrapper<EnumItem> queryWrapper);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.vo.EnumVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.support.Query;
import java.util.List;
import java.util.Map;
/**
 * æžšä¸¾å®šä¹‰ æœåŠ¡ç±»
 *
 * @author yuxc
 * @since 2023-05-08
 */
public interface IEnumService extends IService<Enum> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
     *
     * @param page
     * @param omdEnum
     * @return
     */
    IPage<EnumVO> selectOmdEnumPage(IPage<EnumVO> page, EnumVO omdEnum);
    boolean deleteLogic(List<String> toStringList);
    IPage<EnumVO> parentList(Map<String, Object> dict, Query query);
    /**
     * æ ‘形结构
     *
     * @return
     */
    List<EnumVO> tree(Map<String, Object> dict , Query query);
    /**
     * èŽ·å–æžšä¸¾å®šä¹‰åˆ—è¡¨
     *
     * @param name   çˆ¶èŠ‚ç‚¹name
     * @param nameChild      å­èŠ‚ç‚¹name
     * @return BladePage
     */
    String getValue(String name, String nameChild);
    List<EnumVO> getList(String name);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -649,7 +649,6 @@
            domainMap.forEach((k,v)-> {
                if (domain.contains(k)){
                    BtmTypeTreeVO parent = new BtmTypeTreeVO();
                    parent.setOid(k);
                    parent.setName(k);
                    parent.setChildList(v.stream().map(s -> {
                        BtmTypeTreeVO child = new BtmTypeTreeVO();
@@ -749,6 +748,7 @@
                attribute.setReferToName(attr.getReferBtmTypeName());
                attribute.setTs(now);
                attribute.setCreateTime(now);
                attribute.setIsDeleted(0);
                attribute.setCreateUser(AuthUtil.getUserId());
                idAttrMap.put(attribute.getKey(),attribute);
                // åœ¨è¿™é‡Œç»™ä¸šåŠ¡ç±»åž‹è®¾ç½®ç‰ˆæœ¬æŽ§åˆ¶ã€ç”Ÿå‘½å‘¨æœŸæŽ§åˆ¶ã€å¯†çº§æŽ§åˆ¶ç›¸å…³çš„ä¿¡æ¯
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumItemServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.vo.EnumItemVO;
import com.vci.ubcs.omd.mapper.EnumItemMapper;
import com.vci.ubcs.omd.service.IEnumItemService;
import com.vci.ubcs.omd.wrapper.EnumitemWrapper;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
 * æžšä¸¾å®šä¹‰å­è¡¨ æœåŠ¡å®žçŽ°ç±»
 *
 * @author yuxc
 * @since 2023-05-08
 */
@Service
public class EnumItemServiceImpl extends ServiceImpl<EnumItemMapper, EnumItem> implements IEnumItemService {
    @Override
    public IPage<EnumItemVO> selectOmdEnumitemPage(IPage<EnumItemVO> page, EnumItemVO omdEnumitem) {
        return page.setRecords(baseMapper.selectOmdEnumitemPage(page, omdEnumitem));
    }
    @Override
    public boolean deleteLogic(List<String> toStringList) {
        return SqlHelper.retBool(baseMapper.deleteBatchIds(toStringList));
    }
    @Override
    public List<EnumItemVO> childList(QueryWrapper<EnumItem> queryWrapper) {
        return EnumitemWrapper.build().listVO(baseMapper.selectList(queryWrapper));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.mapper.EnumItemMapper;
import com.vci.ubcs.omd.vo.EnumVO;
import com.vci.ubcs.omd.mapper.EnumMapper;
import com.vci.ubcs.omd.service.IEnumService;
import com.vci.ubcs.omd.wrapper.EnumWrapper;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import javax.annotation.Resource;
import java.util.*;
/**
 * æžšä¸¾å®šä¹‰ æœåŠ¡å®žçŽ°ç±»
 *
 * @author yuxc
 * @since 2023-05-08
 */
@Service
public class EnumServiceImpl extends ServiceImpl<EnumMapper, Enum> implements IEnumService {
    @Resource
    EnumItemMapper enumItemMapper;
    @Override
    public IPage<EnumVO> selectOmdEnumPage(IPage<EnumVO> page, EnumVO omdEnum) {
        return page.setRecords(baseMapper.selectOmdEnumPage(page, omdEnum));
    }
    @Override
    public boolean deleteLogic(List<String> toStringList) {
        return SqlHelper.retBool(baseMapper.deleteBatchIds(toStringList));
    }
    @Override
    public IPage<EnumVO> parentList(Map<String, Object> dict, Query query) {
        IPage<Enum> page = this.page(Condition.getPage(query),
            Condition.getQueryWrapper(dict, Enum.class).lambda()
                .orderByDesc(Enum::getCreatetime));
        return EnumWrapper.build().pageVO(page);
    }
    @Override
    public List<EnumVO> tree(Map<String, Object> dict, Query query) {
        List<Enum> pages = this.page(Condition.getPage(query),Condition.getQueryWrapper(dict, Enum.class).lambda()
                .orderByDesc(Enum::getCreatetime)).getRecords();
        List<EnumVO> listVo = new ArrayList<>();
        pages.stream().forEach(page->{
            EnumVO enumVO = new EnumVO();
            QueryWrapper<EnumItem> wrapper = new QueryWrapper<>();
            wrapper.eq("parentOid",page.getOid());
            List<EnumItem> enumItems = enumItemMapper.selectList(wrapper);
            BeanUtils.copyProperties(page, enumVO);
            if(enumItems.size()>0){
                enumVO.setChildren(enumItems);
                enumVO.setHasChildren(true);
            }
            listVo.add(enumVO);
        });
        return listVo;
    }
    @Override
    public String getValue(String name, String nameChild) {
        return Func.toStr(baseMapper.getValue(name, nameChild), StringPool.EMPTY);
    }
    @Override
    public List<EnumVO> getList(String name) {
        return baseMapper.getList(name);
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/EnumWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.vo.EnumVO;
import java.util.Objects;
/**
 * æžšä¸¾å®šä¹‰ åŒ…装类,返回视图层所需的字段
 *
 * @author yuxc
 * @since 2023-05-08
 */
public class EnumWrapper extends BaseEntityWrapper<Enum, EnumVO>  {
    public static EnumWrapper build() {
        return new EnumWrapper();
     }
    @Override
    public EnumVO entityVO(Enum omdEnum) {
        EnumVO enumVO = Objects.requireNonNull(BeanUtil.copy(omdEnum, EnumVO.class));
        //User createUser = UserCache.getUser(omdEnum.getCreateUser());
        //User updateUser = UserCache.getUser(omdEnum.getUpdateUser());
        //omdEnumVO.setCreateUserName(createUser.getName());
        //omdEnumVO.setUpdateUserName(updateUser.getName());
        return enumVO;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/EnumitemWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.wrapper;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.entity.Enum;
import com.vci.ubcs.omd.vo.EnumVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.utils.BeanUtil;
import com.vci.ubcs.omd.entity.EnumItem;
import com.vci.ubcs.omd.vo.EnumItemVO;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * æžšä¸¾å®šä¹‰å­è¡¨ åŒ…装类,返回视图层所需的字段
 *
 * @author yuxc
 * @since 2023-05-08
 */
public class EnumitemWrapper extends BaseEntityWrapper<EnumItem, EnumItemVO>  {
    public static EnumitemWrapper build() {
        return new EnumitemWrapper();
     }
    @Override
    public EnumItemVO entityVO(EnumItem enumitem) {
        EnumItemVO enumItemVO = Objects.requireNonNull(BeanUtil.copy(enumitem, EnumItemVO.class));
        if (enumitem.getParentoid() == null ) {
            enumItemVO.setParentName(BladeConstant.TOP_PARENT_NAME);
        } else {
            Enum parent = EnumCache.getById(enumitem.getParentoid());
            enumItemVO.setParentName(parent.getLabel());
        }
        return enumItemVO;
    }
    public List<EnumVO> listNodeVO(List<EnumItem> list) {
        List<EnumItem> collect = list.stream().map(omdEnumItem -> BeanUtil.copy(omdEnumItem, EnumItem.class)).collect(Collectors.toList());
        return ForestNodeMerger.merge((List)collect);
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/EnumItemMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.omd.mapper.EnumItemMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="enumitemResultMap" type="com.vci.ubcs.omd.entity.EnumItem">
        <result column="OID" property="oid"/>
        <result column="NAME" property="name"/>
        <result column="VALUE" property="value"/>
        <result column="DESCRIPTION" property="description"/>
        <result column="TS" property="ts"/>
        <result column="CREATOR" property="creator"/>
        <result column="CREATETIME" property="createtime"/>
        <result column="MODIFIER" property="modifier"/>
        <result column="MODIFYTIME" property="modifytime"/>
        <result column="PARENTOID" property="parentoid"/>
        <result column="SORT" property="sort"/>
    </resultMap>
    <select id="selectOmdEnumitemPage" resultMap="enumitemResultMap">
        select * from PL_OMD_ENUMITEM where 1 = 1
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/EnumMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.omd.mapper.EnumMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="enumResultMap" type="com.vci.ubcs.omd.entity.Enum">
        <result column="OID" property="oid"/>
        <result column="NAME" property="name"/>
        <result column="LABEL" property="label"/>
        <result column="TS" property="ts"/>
        <result column="CREATOR" property="creator"/>
        <result column="CREATETIME" property="createtime"/>
        <result column="MODIFIER" property="modifier"/>
        <result column="MODIFYTIME" property="modifytime"/>
        <result column="REMARK" property="remark"/>
    </resultMap>
    <select id="selectOmdEnumPage" resultMap="enumResultMap">
        select * from PL_OMD_ENUM where 1 = 0
    </select>
    <select id="getValue" resultType="java.lang.String">
        select POE.NAME
        from PL_OMD_ENUM PO, PL_OMD_ENUMITEM POE
        WHERE PO.OID = POE.PARENTOID
          AND PO.NAME = #{param1}
          AND POE.VALUE = #{param2}
    </select>
    <select id="getList" resultType="com.vci.ubcs.omd.vo.EnumVO">
        select PO.OID,
               PO.NAME,
               PO.LABEL,
               PO.TS,
               PO.CREATOR,
               PO.CREATOR,
               PO.CREATETIME,
               PO.MODIFIER,
               PO.MODIFYTIME,
               PO.REMARK,
               POE.OID ITEM_OID,
               POE.NAME ITEM_NAME,
               POE.VALUE ITEM_VALUE,
               POE.DESCRIPTION ITEM_DESCRIPTION
        from PL_OMD_ENUM PO, PL_OMD_ENUMITEM POE
        WHERE PO.OID = POE.PARENTOID
          AND PO.NAME = #{param1}
    </select>
</mapper>