From dcc288acc4c0a815a4269714659bcf192ac62e75 Mon Sep 17 00:00:00 2001 From: Odboy Date: Fri, 26 Sep 2025 09:10:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BB=A3=E7=A0=81=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E3=80=81Bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 68 +- LICENSE | 380 ++-- README.MD | 192 +- commit.sh | 34 + cutejava-front/.editorconfig | 28 +- cutejava-front/.env.development | 16 +- cutejava-front/.env.production | 14 +- cutejava-front/.eslintignore | 8 +- cutejava-front/.eslintrc.js | 396 ++-- cutejava-front/.gitignore | 46 +- cutejava-front/.travis.yml | 10 +- cutejava-front/LICENSE | 382 ++-- cutejava-front/README.md | 102 +- cutejava-front/babel.config.js | 22 +- cutejava-front/jest.config.js | 48 +- cutejava-front/package.json | 3 +- cutejava-front/plopfile.js | 14 +- cutejava-front/postcss.config.js | 10 +- cutejava-front/public/index.html | 30 +- cutejava-front/public/robots.txt | 2 +- cutejava-front/src/App.vue | 22 +- cutejava-front/src/api/data.js | 66 +- cutejava-front/src/api/login.js | 70 +- .../src/api/pipeline/pipelineInstance.js | 53 - .../src/api/pipeline/pipelineTemplate.js | 9 - cutejava-front/src/api/system/code.js | 56 +- cutejava-front/src/api/system/dept.js | 90 +- cutejava-front/src/api/system/dict.js | 70 +- cutejava-front/src/api/system/dictDetail.js | 84 +- cutejava-front/src/api/system/email.js | 48 +- cutejava-front/src/api/system/job.js | 84 +- cutejava-front/src/api/system/localStorage.js | 54 +- cutejava-front/src/api/system/menu.js | 130 +- cutejava-front/src/api/system/online.js | 18 +- cutejava-front/src/api/system/ossStorage.js | 38 +- cutejava-front/src/api/system/quartzJob.js | 82 +- cutejava-front/src/api/system/role.js | 116 +- cutejava-front/src/api/system/user.js | 168 +- cutejava-front/src/assets/icons/index.js | 18 +- cutejava-front/src/assets/icons/svg/add.svg | 2 +- .../src/assets/icons/svg/orderinfo.svg | 2 +- .../src/assets/icons/svg/system.svg | 2 +- cutejava-front/src/assets/icons/svg/today.svg | 2 +- cutejava-front/src/assets/icons/svgo.yml | 44 +- .../src/assets/images/background.jpeg | Bin 241215 -> 0 bytes .../src/assets/images/background.png | Bin 0 -> 232851 bytes cutejava-front/src/assets/styles/btn.scss | 198 +- .../src/assets/styles/cutejava.scss | 234 +-- .../src/assets/styles/element-ui.scss | 158 +- .../src/assets/styles/element-variables.scss | 62 +- cutejava-front/src/assets/styles/index.scss | 364 ++-- cutejava-front/src/assets/styles/mixin.scss | 132 +- cutejava-front/src/assets/styles/sidebar.scss | 418 ++-- .../src/assets/styles/transition.scss | 96 +- .../src/assets/styles/variables.scss | 72 +- .../src/components/Breadcrumb/index.vue | 168 +- .../src/components/Crud/CRUD.operation.vue | 552 +++--- .../src/components/Crud/Pagination.vue | 38 +- .../src/components/Crud/RR.operation.vue | 68 +- .../src/components/Crud/UD.operation.vue | 201 +- cutejava-front/src/components/Crud/crud.js | 1746 ++++++++--------- .../src/components/DateRangePicker/index.vue | 90 +- cutejava-front/src/components/Dict/Dict.js | 58 +- cutejava-front/src/components/Dict/index.js | 58 +- .../src/components/Echarts/BarChart.vue | 214 +- .../src/components/Echarts/Category.vue | 876 ++++----- .../src/components/Echarts/Funnel.vue | 240 +-- .../src/components/Echarts/Gauge.vue | 148 +- .../src/components/Echarts/Graph.vue | 202 +- .../src/components/Echarts/HeatMap.vue | 210 +- .../src/components/Echarts/PieChart.vue | 170 +- .../src/components/Echarts/Point.vue | 298 +-- .../src/components/Echarts/RadarChart.vue | 242 +-- .../src/components/Echarts/Rich.vue | 298 +-- .../src/components/Echarts/Sankey.vue | 200 +- .../src/components/Echarts/Scatter.vue | 286 +-- .../src/components/Echarts/Sunburst.vue | 214 +- .../src/components/Echarts/ThemeRiver.vue | 296 +-- .../src/components/GithubCorner/index.vue | 120 +- .../src/components/Hamburger/index.vue | 92 +- .../src/components/HeaderSearch/index.vue | 380 ++-- .../src/components/IconSelect/index.vue | 156 +- .../src/components/IconSelect/requireIcons.js | 20 +- .../src/components/Iframe/index.vue | 60 +- .../src/components/Pagination/index.vue | 204 +- .../src/components/PanThumb/index.vue | 280 +-- .../src/components/ParentView/index.vue | 6 +- .../src/components/Permission/index.js | 26 +- .../src/components/Permission/permission.js | 42 +- .../src/components/RightPanel/index.vue | 300 +-- .../src/components/Screenfull/index.vue | 120 +- .../src/components/SizeSelect/index.vue | 126 +- .../src/components/SvgIcon/index.vue | 124 +- .../src/components/ThemePicker/index.vue | 332 ++-- .../src/layout/components/AppMain.vue | 126 +- .../src/layout/components/Navbar.vue | 388 ++-- .../src/layout/components/Settings/index.vue | 216 +- .../layout/components/Sidebar/FixiOSBug.js | 52 +- .../src/layout/components/Sidebar/Item.vue | 58 +- .../src/layout/components/Sidebar/Link.vue | 72 +- .../src/layout/components/Sidebar/Logo.vue | 168 +- .../layout/components/Sidebar/SidebarItem.vue | 190 +- .../src/layout/components/Sidebar/index.vue | 108 +- .../layout/components/TagsView/ScrollPane.vue | 170 +- .../src/layout/components/TagsView/index.vue | 572 +++--- cutejava-front/src/layout/components/index.js | 10 +- cutejava-front/src/layout/index.vue | 232 +-- .../src/layout/mixin/ResizeHandler.js | 90 +- cutejava-front/src/main.js | 205 +- cutejava-front/src/mixins/crud.js | 670 +++---- cutejava-front/src/plugins/CheckPermPlugin.js | 46 +- cutejava-front/src/plugins/ClipboardPlugin.js | 72 +- .../src/plugins/DateExtendPlugin.js | 432 ++-- .../src/plugins/PreventReClickDirective.js | 42 +- cutejava-front/src/router/index.js | 144 +- cutejava-front/src/router/routers.js | 136 +- cutejava-front/src/settings.js | 92 +- cutejava-front/src/store/getters.js | 58 +- cutejava-front/src/store/index.js | 50 +- cutejava-front/src/store/modules/api.js | 48 +- cutejava-front/src/store/modules/app.js | 112 +- .../src/store/modules/permission.js | 166 +- cutejava-front/src/store/modules/pipeline.js | 30 +- cutejava-front/src/store/modules/settings.js | 72 +- cutejava-front/src/store/modules/tagsView.js | 330 ++-- cutejava-front/src/store/modules/user.js | 188 +- cutejava-front/src/utils/CsRsaUtil.js | 28 +- cutejava-front/src/utils/CsUtil.js | 717 +++---- cutejava-front/src/utils/CsValidateUtil.js | 346 ++-- cutejava-front/src/utils/CsWsClient.js | 82 +- cutejava-front/src/utils/auth.js | 36 +- .../src/utils/elementui/CsLoading.js | 43 + cutejava-front/src/utils/request.js | 182 +- cutejava-front/src/utils/shortcuts.js | 152 +- cutejava-front/src/views/Demo.vue | 27 + .../src/views/components/base/CountToDemo.vue | 80 +- .../src/views/components/base/Echarts.vue | 222 +-- .../views/components/base/SplitPaneDemo.vue | 140 +- .../views/components/base/WebSocketDemo.vue | 156 +- .../components/business/CuteDeptTree.vue | 166 +- .../business/CuteFileDragUpload.vue | 154 +- .../components/business/CuteFileUpload.vue | 148 +- .../components/business/CuteOneUserSelect.vue | 155 +- .../business/CuteProductLineSelect.vue | 158 +- .../business/CuteProductLineSelectPro.vue | 159 +- .../components/business/CuteUserSelect.vue | 166 +- .../views/components/dev/CuteCodeEditor.vue | 245 +-- .../views/components/dev/CuteDragTable.vue | 325 +-- .../views/components/dev/CuteFormDialog.vue | 204 +- .../views/components/dev/CuteFormDrawer.vue | 201 +- .../dev/CuteHorizontalScrollBar.vue | 40 + .../views/components/dev/CuteJavaEditor.vue | 184 +- .../src/views/components/dev/CuteLink.vue | 34 + .../src/views/components/dev/CuteMarkdown.vue | 159 +- .../src/views/components/dev/CuteNoData.vue | 24 + .../views/components/dev/CuteOneKeyCopy.vue | 93 +- .../views/components/dev/CutePipelineNode.vue | 355 ---- .../components/dev/CutePreviewDrawer.vue | 142 +- .../components/dev/CuteRichTextEditor.vue | 600 +++--- .../views/components/dev/CuteScreenShot.vue | 59 + .../views/components/dev/CuteSearchForm.vue | 57 + .../views/components/dev/CuteSectionTitle.vue | 33 + .../views/components/dev/CuteSimpleTable.vue | 284 +-- .../components/dev/CuteVerticalScrollBar.vue | 47 + .../views/components/dev/CuteYamlEditor.vue | 186 +- .../views/components/icons/element-icons.js | 148 +- .../src/views/components/icons/index.vue | 202 +- .../src/views/components/icons/svg-icons.js | 20 +- .../views/componentsDemo/CuteBusinessDemo.vue | 223 +-- .../componentsDemo/CuteDragTableDemo.vue | 250 +-- .../componentsDemo/CuteFileDragUploadDemo.vue | 104 +- .../componentsDemo/CuteFileUploadDemo.vue | 104 +- .../componentsDemo/CuteJavaEditorDemo.vue | 94 +- .../views/componentsDemo/CuteMarkdownDemo.vue | 78 +- .../componentsDemo/CuteOneKeyCopyDemo.vue | 126 +- .../componentsDemo/CutePipelineNodeDemo.vue | 304 --- .../componentsDemo/CuteRichTextEditorDemo.vue | 62 +- .../componentsDemo/CuteSimpleTableDemo.vue | 398 ++-- .../componentsDemo/CuteYamlEditorDemo.vue | 512 ++--- .../src/views/dashboard/LineChart.vue | 272 +-- .../src/views/dashboard/PanelGroup.vue | 362 ++-- .../src/views/dashboard/mixins/resize.js | 110 +- cutejava-front/src/views/features/401.vue | 194 +- cutejava-front/src/views/features/404.vue | 478 ++--- .../src/views/features/redirect.vue | 24 +- cutejava-front/src/views/home.vue | 242 +-- cutejava-front/src/views/login.vue | 514 ++--- .../src/views/nested/menu1/menu1-1/index.vue | 66 +- .../src/views/nested/menu1/menu1-2/index.vue | 10 +- .../src/views/nested/menu2/index.vue | 10 +- .../src/views/system/dept/index.vue | 592 +++--- .../src/views/system/dict/dictDetail.vue | 300 +-- .../src/views/system/dict/index.vue | 330 ++-- .../src/views/system/druidSql/index.vue | 34 +- .../src/views/system/email/config.vue | 184 +- .../src/views/system/email/index.vue | 92 +- .../src/views/system/email/send.vue | 214 +- cutejava-front/src/views/system/job/index.vue | 232 +-- .../src/views/system/job/module/form.vue | 220 +-- .../src/views/system/job/module/header.vue | 98 +- .../src/views/system/menu/index.vue | 790 ++++---- .../src/views/system/online/index.vue | 286 +-- .../src/views/system/quartzJob/index.vue | 550 +++--- .../src/views/system/quartzJob/log.vue | 268 +-- .../src/views/system/role/index.vue | 808 ++++---- .../src/views/system/server/index.vue | 606 +++--- .../src/views/system/storage/index.vue | 74 +- .../src/views/system/storage/local/index.vue | 412 ++-- .../src/views/system/storage/oss/index.vue | 386 ++-- .../src/views/system/user/center.vue | 534 ++--- .../views/system/user/center/updateEmail.vue | 300 +-- .../views/system/user/center/updatePass.vue | 208 +- .../src/views/system/user/index.vue | 1041 +++++----- cutejava-front/vue.config.js | 296 +-- cutejava/.gitignore | 16 +- cutejava/LICENSE | 380 ++-- cutejava/cutejava-framework/pom.xml | 22 +- .../cn/odboy/annotation/AnonymousAccess.java | 58 +- .../annotation/AnonymousDeleteMapping.java | 150 +- .../odboy/annotation/AnonymousGetMapping.java | 150 +- .../annotation/AnonymousPatchMapping.java | 150 +- .../annotation/AnonymousPostMapping.java | 150 +- .../odboy/annotation/AnonymousPutMapping.java | 150 +- .../src/main/java/cn/odboy/base/CsArgs.java | 87 +- .../cn/odboy/base/CsBaseCreateTimeTb.java | 69 +- .../main/java/cn/odboy/base/CsBaseTimeTb.java | 77 +- .../cn/odboy/base/CsBaseUpdateTimeTb.java | 69 +- .../cn/odboy/base/CsBaseUserCreateTimeTb.java | 67 + .../cn/odboy/base/CsBaseUserTimeLogicTb.java | 113 +- .../java/cn/odboy/base/CsBaseUserTimeTb.java | 153 +- .../src/main/java/cn/odboy/base/CsObject.java | 57 +- .../main/java/cn/odboy/base/CsPageArgs.java | 93 +- .../main/java/cn/odboy/base/CsPageResult.java | 103 +- .../java/cn/odboy/base/CsSelectOptionVo.java | 75 +- .../cn/odboy/constant/CaptchaCodeEnum.java | 85 +- .../java/cn/odboy/constant/FileTypeEnum.java | 63 +- .../cn/odboy/constant/RequestMethodEnum.java | 137 +- .../java/cn/odboy/constant/SystemConst.java | 105 +- .../context/BeanLoadFinishListener.java | 71 +- .../framework/context/BootApplication.java | 100 +- .../framework/context/CsRequestHolder.java | 51 +- .../framework/context/CsScriptHelper.java | 161 +- .../framework/context/CsSpringBeanHolder.java | 341 ++-- .../cn/odboy/framework/doc/SwaggerConfig.java | 297 +-- .../exception/BadRequestException.java | 39 - .../framework/exception/handler/ApiError.java | 45 - .../thirdapi/ThirdApiExceptionCatch.java | 50 + .../thirdapi/ThirdExceptionCatchAspect.java | 148 ++ .../thirdapi/vo/KubernetesApiExceptionVo.java | 46 + .../exception/web/BadRequestException.java | 46 + .../exception/web/handler/ApiError.java | 46 + .../handler/GlobalExceptionHandler.java | 173 +- .../logging/ExecutionTimeStatisticsFace.java | 40 + .../ExecutionTimeStatisticsFaceAspect.java | 50 + .../controller/HealthCheckController.java | 119 +- .../service/CsHealthCheckPointService.java | 61 +- .../mybatisplus/config/CsMpQTypeEnum.java | 161 +- .../mybatisplus/config/CsMpQuery.java | 147 +- .../mybatisplus/config/DataTypeEnum.java | 310 +-- .../config/MpCustomP6SpyLogger.java | 130 +- .../config/MpInsertBatchSqlInjector.java | 87 +- .../mybatisplus/config/MybatisPlusConfig.java | 109 +- .../config/RemoveDruidAdConfig.java | 182 +- .../mybatisplus/core/CsMpAnyQUtil.java | 167 +- .../mybatisplus/core/CsMpCmdGenUtil.java | 426 ++-- .../framework/mybatisplus/core/CsMpQUtil.java | 452 ++--- .../core/interfaces/CsMpEasyService.java | 144 +- .../core/interfaces/CsMpMapper.java | 374 ++-- .../core/interfaces/CsMpServiceImpl.java | 514 ++--- .../framework/properties/AppProperties.java | 86 +- .../properties/model/CaptchaModel.java | 59 +- .../model/ContentRsaEncodeSettingModel.java | 59 +- .../properties/model/JwtAuthSettingModel.java | 95 +- .../properties/model/OSSConfigModel.java | 83 +- .../properties/model/StorageOSSModel.java | 59 +- .../model/SwaggerApiDocSettingModel.java | 61 +- .../model/ThreadPoolSettingModel.java | 95 +- .../model/UserLoginCaptchaSettingModel.java | 261 +-- .../model/UserLoginSettingModel.java | 71 +- .../framework/quartz/config/QuartzConfig.java | 125 +- .../framework/quartz/core/QuartzRunnable.java | 112 +- .../odboy/framework/redis/CsRedisHelper.java | 1651 ++++++++-------- .../framework/redis/RedisConfiguration.java | 394 ++-- .../redis/RedissonConfiguration.java | 164 +- .../server/config/AsyncTheadPoolConfig.java | 195 +- .../DateStringArraysToListDateConverter.java | 93 +- .../converters/DateStringToDateConverter.java | 83 +- .../server/core/ConfigurerAdapter.java | 243 +-- .../server/core/CsFileLocalUploadHelper.java | 105 +- .../framework/websocket/config/WsConfig.java | 59 +- .../framework/websocket/config/WsFactory.java | 83 +- .../websocket/context/CsWsClientManager.java | 134 +- .../websocket/context/CsWsMessage.java | 65 +- .../websocket/context/CsWsServer.java | 357 ++-- .../framework/websocket/model/WsSidVo.java | 57 +- .../websocket/util/WsMessageUtil.java | 85 +- .../java/cn/odboy/util/CsAnonTagUtil.java | 204 +- .../cn/odboy/util/CsBase64SecretUtil.java | 99 +- .../java/cn/odboy/util/CsBigDecimalUtil.java | 291 +-- .../java/cn/odboy/util/CsBrowserUtil.java | 147 +- .../main/java/cn/odboy/util/CsClassUtil.java | 61 +- .../main/java/cn/odboy/util/CsCloseUtil.java | 81 +- .../main/java/cn/odboy/util/CsCollUtil.java | 436 ++-- .../main/java/cn/odboy/util/CsDateUtil.java | 105 +- .../java/cn/odboy/util/CsDesEncryptUtil.java | 193 +- .../cn/odboy/util/CsDistributedIdUtil.java | 400 ++-- .../main/java/cn/odboy/util/CsFileUtil.java | 789 ++++---- .../src/main/java/cn/odboy/util/CsIPUtil.java | 177 +- .../main/java/cn/odboy/util/CsJsonUtil.java | 99 +- .../main/java/cn/odboy/util/CsListUtil.java | 141 +- .../main/java/cn/odboy/util/CsLogFmtUtil.java | 101 +- .../main/java/cn/odboy/util/CsPageUtil.java | 181 +- .../cn/odboy/util/CsResourceTemplateUtil.java | 81 +- .../odboy/util/CsReturnValueHandleUtil.java | 129 +- .../java/cn/odboy/util/CsRsaEncryptUtil.java | 428 ++-- .../main/java/cn/odboy/util/CsStringUtil.java | 239 +-- .../main/java/cn/odboy/util/CsSystemUtil.java | 35 + .../main/java/cn/odboy/util/CsValidUtil.java | 102 +- .../main/java/cn/odboy/util/LogFmtUtil.java | 48 + cutejava/cutejava-module-pipeline/pom.xml | 20 - .../DevopsPipelineInstanceController.java | 113 -- .../DevopsPipelineTemplateController.java | 47 - .../PipelineInstanceNodeDetailTb.java | 90 - .../dataobject/PipelineInstanceNodeTb.java | 103 - .../dal/dataobject/PipelineInstanceTb.java | 94 - .../dal/dataobject/PipelineTemplateTb.java | 97 - .../model/QueryLastPipelineDetailArgs.java | 29 - .../devops/dal/model/RestartPipelineArgs.java | 34 - .../dal/model/RestartPipelineNodeArgs.java | 37 - .../devops/dal/model/StartPipelineArgs.java | 42 - .../dal/model/StartPipelineResultVo.java | 36 - .../dal/mysql/PipelineInstanceMapper.java | 32 - .../dal/mysql/PipelineTemplateMapper.java | 33 - .../devops/dal/redis/PipelineInstanceDAO.java | 56 - .../mongoplus/MongoPlusMetaObjectHandler.java | 55 - .../AbstractPipelineNodeJobService.java | 42 - .../pipeline/constant/PipelineConst.java | 49 - .../pipeline/constant/PipelineStatusEnum.java | 41 - .../pipeline/constant/PipelineTypeEnum.java | 45 - .../pipeline/core/PipelineJobBean.java | 251 --- .../pipeline/core/PipelineJobManage.java | 121 -- .../pipeline/core/PipelineNodeJobBean.java | 68 - .../core/PipelineNodeJobExecutor.java | 29 - .../pipeline/core/PipelineNodeJobManage.java | 97 - .../pipeline/log/PipelineNodeStepLog.java | 33 - .../log/PipelineNodeStepLogAspect.java | 86 - .../model/PipelineInstanceNodeVo.java | 66 - .../pipeline/model/PipelineInstanceVo.java | 39 - .../model/PipelineNodeJobExecuteResult.java | 67 - .../model/PipelineNodeOperateButtonVo.java | 49 - .../model/PipelineNodeTemplateVo.java | 67 - .../PipelineInstanceNodeDetailService.java | 44 - .../core/PipelineInstanceNodeService.java | 44 - .../service/core/PipelineInstanceService.java | 43 - .../service/core/PipelineTemplateService.java | 44 - ...PipelineInstanceNodeDetailServiceImpl.java | 111 -- .../impl/PipelineInstanceNodeServiceImpl.java | 127 -- .../impl/PipelineInstanceServiceImpl.java | 188 -- .../PipelineNodeApkSignAndroidService.java | 59 - .../PipelineNodeApproveCPlusService.java | 59 - .../PipelineNodeApproveDeployService.java | 59 - ...PipelineNodeApproveTestAndroidService.java | 59 - .../PipelineNodeBuildAndroidService.java | 59 - .../PipelineNodeBuildCPlusService.java | 59 - .../pipeline/PipelineNodeBuildIOSService.java | 59 - .../PipelineNodeBuildJavaService.java | 61 - .../PipelineNodeBuildNodeService.java | 59 - .../pipeline/PipelineNodeBuildNpmService.java | 59 - .../PipelineNodeBuildPythonService.java | 59 - .../pipeline/PipelineNodeBuildService.java | 59 - ...ipelineNodeCheckFlutterVersionService.java | 59 - .../PipelineNodeDeployApiService.java | 62 - .../PipelineNodeDeployJavaService.java | 66 - .../PipelineNodeDeployNodeService.java | 59 - .../PipelineNodeDeployPythonService.java | 66 - .../PipelineNodeHttpGetPluginService.java | 59 - .../PipelineNodeHttpPostPluginService.java | 59 - .../PipelineNodeImageScanService.java | 59 - .../pipeline/PipelineNodeInitService.java | 63 - .../PipelineNodeMergeBranchService.java | 59 - .../PipelineNodeMergeConfirmService.java | 59 - .../PipelineNodeMergeMasterService.java | 59 - ...ipelineNodeReinforceAndroidApkService.java | 59 - .../PipelineNodeUploadAndroidApkService.java | 59 - .../node/PipelineNodeBuildJavaBiz.java | 55 - .../pipeline/node/PipelineNodeDemoBiz.java | 43 - .../node/PipelineNodeDeployJavaBiz.java | 49 - .../pipeline/node/PipelineNodeInitBiz.java | 54 - .../node/PipelineNodeMergeBranchBiz.java | 48 - cutejava/cutejava-module-system/pom.xml | 54 +- .../system/constant/SystemCaptchaBizEnum.java | 116 +- .../system/constant/SystemDataScopeEnum.java | 83 +- .../constant/TransferProtocolConst.java | 30 +- .../controller/SystemAuthController.java | 300 +-- .../controller/SystemCaptchaController.java | 100 +- .../controller/SystemComponentController.java | 84 +- .../controller/SystemDeptController.java | 220 ++- .../controller/SystemDictController.java | 180 +- .../SystemDictDetailController.java | 172 +- .../controller/SystemEmailController.java | 109 +- .../controller/SystemJobController.java | 172 +- .../SystemLocalStorageController.java | 180 +- .../controller/SystemMenuController.java | 294 +-- .../controller/SystemMonitorController.java | 74 +- .../controller/SystemOnlineController.java | 131 +- .../SystemOssStorageController.java | 470 ++--- .../controller/SystemQuartzJobController.java | 266 +-- .../controller/SystemRoleController.java | 279 +-- .../controller/SystemUserController.java | 461 ++--- .../system/dal/dataobject/SystemDeptTb.java | 186 +- .../dal/dataobject/SystemDictDetailTb.java | 94 +- .../system/dal/dataobject/SystemDictTb.java | 72 +- .../dal/dataobject/SystemEmailConfigTb.java | 100 +- .../system/dal/dataobject/SystemJobTb.java | 120 +- .../dal/dataobject/SystemLocalStorageTb.java | 106 +- .../system/dal/dataobject/SystemMenuTb.java | 230 ++- .../dal/dataobject/SystemOperationLogTb.java | 186 +- .../dal/dataobject/SystemOssStorageTb.java | 146 +- .../dal/dataobject/SystemQuartzJobTb.java | 142 +- .../dal/dataobject/SystemQuartzLogTb.java | 110 +- .../system/dal/dataobject/SystemRoleTb.java | 156 +- .../system/dal/dataobject/SystemUserTb.java | 214 +- .../model/SystemCheckEmailCaptchaArgs.java | 52 +- .../dal/model/SystemCreateDeptArgs.java | 58 +- .../dal/model/SystemCreateDictArgs.java | 46 +- .../dal/model/SystemCreateDictDetailArgs.java | 60 +- .../system/dal/model/SystemCreateJobArgs.java | 52 +- .../dal/model/SystemCreateRoleArgs.java | 70 +- .../system/dal/model/SystemMenuMetaVo.java | 60 +- .../odboy/system/dal/model/SystemMenuVo.java | 96 +- .../system/dal/model/SystemOssStorageVo.java | 38 +- .../dal/model/SystemProductLineTreeVo.java | 46 +- .../system/dal/model/SystemProductLineVo.java | 60 +- .../system/dal/model/SystemQueryDeptArgs.java | 74 +- .../system/dal/model/SystemQueryDictArgs.java | 50 +- .../dal/model/SystemQueryDictDetailArgs.java | 54 +- .../system/dal/model/SystemQueryJobArgs.java | 72 +- .../system/dal/model/SystemQueryMenuArgs.java | 62 +- .../dal/model/SystemQueryQuartzJobArgs.java | 68 +- .../system/dal/model/SystemQueryRoleArgs.java | 68 +- .../dal/model/SystemQueryStorageArgs.java | 62 +- .../system/dal/model/SystemQueryUserArgs.java | 102 +- .../system/dal/model/SystemRoleCodeVo.java | 54 +- .../system/dal/model/SystemSendEmailArgs.java | 78 +- .../system/dal/model/SystemSimpleUserVo.java | 98 +- .../dal/model/SystemUpdateQuartzJobArgs.java | 78 +- .../model/SystemUpdateUserPasswordArgs.java | 50 +- .../system/dal/model/SystemUserInfoVo.java | 58 +- .../system/dal/model/SystemUserJwtVo.java | 148 +- .../system/dal/model/SystemUserLoginArgs.java | 68 +- .../system/dal/model/SystemUserOnlineVo.java | 94 +- .../system/dal/mysql/SystemDeptMapper.java | 74 +- .../dal/mysql/SystemDictDetailMapper.java | 70 +- .../system/dal/mysql/SystemDictMapper.java | 62 +- .../dal/mysql/SystemEmailConfigMapper.java | 44 +- .../system/dal/mysql/SystemJobMapper.java | 58 +- .../dal/mysql/SystemLocalStorageMapper.java | 56 +- .../system/dal/mysql/SystemMenuMapper.java | 90 +- .../dal/mysql/SystemOperationLogMapper.java | 34 +- .../dal/mysql/SystemOssStorageMapper.java | 66 +- .../dal/mysql/SystemQuartzJobMapper.java | 64 +- .../dal/mysql/SystemQuartzLogMapper.java | 56 +- .../dal/mysql/SystemRoleDeptMapper.java | 54 +- .../system/dal/mysql/SystemRoleMapper.java | 84 +- .../dal/mysql/SystemRoleMenuMapper.java | 62 +- .../system/dal/mysql/SystemUserJobMapper.java | 54 +- .../system/dal/mysql/SystemUserMapper.java | 104 +- .../dal/mysql/SystemUserRoleMapper.java | 44 +- ...ystemRedisKey.java => SystemCacheKey.java} | 144 +- ...rInfoDAO.java => SystemUserInfoRedis.java} | 136 +- ...AO.java => SystemUserOnlineInfoRedis.java} | 327 +-- .../system/framework/bizlock/BizLock.java | 61 + .../framework/bizlock/BizLockAspect.java | 92 + .../mybatisplus/MpMetaObjectHandler.java | 102 +- .../framework/operalog/OperationLog.java | 33 + ...LogAspect.java => OperationLogAspect.java} | 245 +-- .../operalog/annotaions/OperationLog.java | 32 - .../permission/config/AuthorityConfig.java | 72 +- .../config/SpringSecurityConfig.java | 246 ++- .../permission/config/TokenConfigurer.java | 66 +- .../permission/core/CsSecurityHelper.java | 255 +-- .../core/handler/JwtAccessDeniedHandler.java | 72 +- .../handler/JwtAuthenticationEntryPoint.java | 76 +- .../permission/core/handler/TokenFilter.java | 159 +- .../core/handler/TokenProvider.java | 307 +-- .../core/handler/UserDetailsHandler.java | 121 +- ...tionRunner.java => ActiveJobRegister.java} | 80 +- .../framework/quartz/ExecutionJobBean.java | 250 +-- .../system/framework/quartz/QuartzManage.java | 334 ++-- .../storage/OssStorageConfiguration.java | 75 +- .../storage/local/MultipartConfig.java | 106 +- .../storage/minio/MinioRepository.java | 795 ++++---- .../java/cn/odboy/system/job/TestTask.java | 58 +- .../system/service/SystemDataService.java | 162 +- .../system/service/SystemDeptService.java | 918 ++++----- .../service/SystemDictDetailService.java | 180 +- .../system/service/SystemDictService.java | 282 +-- .../system/service/SystemEmailService.java | 311 +-- .../system/service/SystemJobService.java | 268 +-- .../service/SystemLocalStorageService.java | 310 +-- .../system/service/SystemMenuService.java | 782 ++++---- .../system/service/SystemMonitorService.java | 396 ++-- .../service/SystemOssStorageService.java | 86 +- .../service/SystemQuartzJobService.java | 542 ++--- .../system/service/SystemRoleService.java | 507 ++--- .../system/service/SystemUserService.java | 677 +++---- .../impl/SystemOssStorageServiceImpl.java | 298 +-- .../java/cn/odboy/system/util/SqlUtil.java | 358 ++-- .../resources/mapper/SystemDeptMapper.xml | 216 +- .../mapper/SystemDictDetailMapper.xml | 78 +- .../resources/mapper/SystemDictMapper.xml | 34 +- .../main/resources/mapper/SystemJobMapper.xml | 50 +- .../mapper/SystemLocalStorageMapper.xml | 46 +- .../resources/mapper/SystemMenuMapper.xml | 246 +-- .../mapper/SystemOssStorageMapper.xml | 46 +- .../mapper/SystemQuartzJobMapper.xml | 44 +- .../mapper/SystemQuartzLogMapper.xml | 40 +- .../resources/mapper/SystemRoleDeptMapper.xml | 36 +- .../resources/mapper/SystemRoleMapper.xml | 284 +-- .../resources/mapper/SystemRoleMenuMapper.xml | 54 +- .../resources/mapper/SystemUserJobMapper.xml | 34 +- .../resources/mapper/SystemUserMapper.xml | 434 ++-- .../resources/mapper/SystemUserRoleMapper.xml | 36 +- .../SystemEmailCaptchaTemplate.ftl | 100 +- .../SystemQuartzJobTaskAlarmTemplate.ftl | 142 +- cutejava/cutejava-starter/pom.xml | 6 +- .../src/main/java/cn/odboy/AppRun.java | 24 +- .../src/main/java/cn/odboy/GenCode.java | 92 +- .../java/cn/odboy/HealthCheckPointer.java | 62 +- .../src/main/resources/application-dev.yml | 57 +- .../src/main/resources/application-prod.yml | 43 +- .../src/main/resources/application-quartz.yml | 84 +- .../src/main/resources/application.yml | 10 +- .../src/main/resources/banner.txt | 14 +- .../src/main/resources/logback.xml | 58 +- .../src/main/resources/spy.properties | 38 +- .../java/cn/odboy/MyBatisMapperTests.java | 54 + .../java/cn/odboy/SystemApplicationTests.java | 86 +- .../java/cn/odboy/pipeline/PipelineTests.java | 247 --- .../cn/odboy/util/CsDesEncryptUtilTest.java | 96 +- .../java/cn/odboy/util/CsFileUtilTest.java | 88 +- .../java/cn/odboy/util/CsStringUtilTest.java | 106 +- .../java/cn/odboy/util/WorkTimeTests.java | 30 + .../codestyle/alibaba/eclipse-codestyle.xml | 4 +- .../docs/codestyle/project/P3C_CodeStyle.xml | 380 ---- .../dockerenv/minio/docker-compose-minio.yml | 2 +- cutejava/docs/dockerenv/minio/run.sh | 4 +- cutejava/docs/dockerenv/minio/stop.sh | 2 +- .../mongodb/docker-compose-mongodb.yml | 15 - cutejava/docs/dockerenv/mongodb/readme.md | 15 - cutejava/docs/dockerenv/mongodb/run.sh | 2 - cutejava/docs/dockerenv/mongodb/stop.sh | 2 - .../mysql8/docker-compose-mysql8.yml | 2 +- cutejava/docs/dockerenv/mysql8/run.sh | 4 +- cutejava/docs/dockerenv/mysql8/stop.sh | 2 +- .../dockerenv/redis7/redis/config/redis.conf | 2 +- cutejava/docs/dockerenv/redis7/run.sh | 4 +- cutejava/docs/dockerenv/redis7/stop.sh | 2 +- cutejava/docs/{ => help}/@Validated常用.txt | 66 +- .../docs/{ => help}/Controller命名规范.md | 14 +- cutejava/docs/{ => help}/IDEA换行调整.jpg | Bin .../docs/{ => help}/Service方法中使用this.txt | 262 +-- cutejava/docs/help/license.template | 13 + cutejava/docs/help/应用迭代定义.txt | 1 + cutejava/docs/{ => help}/注意事项.md | 4 +- cutejava/docs/help/缓存注解使用.txt | 27 + cutejava/docs/mysql/cleardb.sql | 53 + cutejava/docs/mysql/cutejava.sql | 1486 -------------- cutejava/docs/mysql/readme.md | 3 + .../docs/nginx/cutejava-api.odboy.cn.conf | 28 + cutejava/docs/nginx/cutejava.odboy.cn.conf | 31 + cutejava/pom.xml | 140 +- 572 files changed, 41415 insertions(+), 44746 deletions(-) create mode 100644 commit.sh delete mode 100644 cutejava-front/src/api/pipeline/pipelineInstance.js delete mode 100644 cutejava-front/src/api/pipeline/pipelineTemplate.js delete mode 100644 cutejava-front/src/assets/images/background.jpeg create mode 100644 cutejava-front/src/assets/images/background.png create mode 100644 cutejava-front/src/utils/elementui/CsLoading.js create mode 100644 cutejava-front/src/views/Demo.vue create mode 100644 cutejava-front/src/views/components/dev/CuteHorizontalScrollBar.vue create mode 100644 cutejava-front/src/views/components/dev/CuteLink.vue create mode 100644 cutejava-front/src/views/components/dev/CuteNoData.vue delete mode 100644 cutejava-front/src/views/components/dev/CutePipelineNode.vue create mode 100644 cutejava-front/src/views/components/dev/CuteScreenShot.vue create mode 100644 cutejava-front/src/views/components/dev/CuteSearchForm.vue create mode 100644 cutejava-front/src/views/components/dev/CuteSectionTitle.vue create mode 100644 cutejava-front/src/views/components/dev/CuteVerticalScrollBar.vue delete mode 100644 cutejava-front/src/views/componentsDemo/CutePipelineNodeDemo.vue create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/base/CsBaseUserCreateTimeTb.java delete mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/exception/BadRequestException.java delete mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/exception/handler/ApiError.java create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/exception/thirdapi/ThirdApiExceptionCatch.java create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/exception/thirdapi/ThirdExceptionCatchAspect.java create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/exception/thirdapi/vo/KubernetesApiExceptionVo.java create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/exception/web/BadRequestException.java create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/exception/web/handler/ApiError.java rename cutejava/cutejava-framework/src/main/java/cn/odboy/framework/exception/{ => web}/handler/GlobalExceptionHandler.java (74%) create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/logging/ExecutionTimeStatisticsFace.java create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/framework/logging/ExecutionTimeStatisticsFaceAspect.java create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/util/CsSystemUtil.java create mode 100644 cutejava/cutejava-framework/src/main/java/cn/odboy/util/LogFmtUtil.java delete mode 100644 cutejava/cutejava-module-pipeline/pom.xml delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/controller/DevopsPipelineInstanceController.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/controller/DevopsPipelineTemplateController.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/dataobject/PipelineInstanceNodeDetailTb.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/dataobject/PipelineInstanceNodeTb.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/dataobject/PipelineInstanceTb.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/dataobject/PipelineTemplateTb.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/model/QueryLastPipelineDetailArgs.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/model/RestartPipelineArgs.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/model/RestartPipelineNodeArgs.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/model/StartPipelineArgs.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/model/StartPipelineResultVo.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/mysql/PipelineInstanceMapper.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/mysql/PipelineTemplateMapper.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/dal/redis/PipelineInstanceDAO.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/mongoplus/MongoPlusMetaObjectHandler.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/AbstractPipelineNodeJobService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/constant/PipelineConst.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/constant/PipelineStatusEnum.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/constant/PipelineTypeEnum.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/core/PipelineJobBean.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/core/PipelineJobManage.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/core/PipelineNodeJobBean.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/core/PipelineNodeJobExecutor.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/core/PipelineNodeJobManage.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/log/PipelineNodeStepLog.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/log/PipelineNodeStepLogAspect.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/model/PipelineInstanceNodeVo.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/model/PipelineInstanceVo.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/model/PipelineNodeJobExecuteResult.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/model/PipelineNodeOperateButtonVo.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/framework/pipeline/model/PipelineNodeTemplateVo.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/core/PipelineInstanceNodeDetailService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/core/PipelineInstanceNodeService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/core/PipelineInstanceService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/core/PipelineTemplateService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/core/impl/PipelineInstanceNodeDetailServiceImpl.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/core/impl/PipelineInstanceNodeServiceImpl.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/core/impl/PipelineInstanceServiceImpl.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeApkSignAndroidService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeApproveCPlusService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeApproveDeployService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeApproveTestAndroidService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeBuildAndroidService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeBuildCPlusService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeBuildIOSService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeBuildJavaService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeBuildNodeService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeBuildNpmService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeBuildPythonService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeBuildService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeCheckFlutterVersionService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeDeployApiService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeDeployJavaService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeDeployNodeService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeDeployPythonService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeHttpGetPluginService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeHttpPostPluginService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeImageScanService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeInitService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeMergeBranchService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeMergeConfirmService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeMergeMasterService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeReinforceAndroidApkService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/PipelineNodeUploadAndroidApkService.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/node/PipelineNodeBuildJavaBiz.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/node/PipelineNodeDemoBiz.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/node/PipelineNodeDeployJavaBiz.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/node/PipelineNodeInitBiz.java delete mode 100644 cutejava/cutejava-module-pipeline/src/main/java/cn/odboy/devops/service/pipeline/node/PipelineNodeMergeBranchBiz.java rename cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/redis/{SystemRedisKey.java => SystemCacheKey.java} (57%) rename cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/redis/{SystemUserInfoDAO.java => SystemUserInfoRedis.java} (62%) rename cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/redis/{SystemUserOnlineInfoDAO.java => SystemUserOnlineInfoRedis.java} (81%) create mode 100644 cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/bizlock/BizLock.java create mode 100644 cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/bizlock/BizLockAspect.java create mode 100644 cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/operalog/OperationLog.java rename cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/operalog/{core/SystemOperationLogAspect.java => OperationLogAspect.java} (77%) delete mode 100644 cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/operalog/annotaions/OperationLog.java rename cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/quartz/{InitialActiveJobApplicationRunner.java => ActiveJobRegister.java} (57%) rename cutejava/cutejava-module-system/src/main/resources/template/{ => system}/SystemEmailCaptchaTemplate.ftl (97%) rename cutejava/cutejava-module-system/src/main/resources/template/{ => system}/SystemQuartzJobTaskAlarmTemplate.ftl (97%) create mode 100644 cutejava/cutejava-starter/src/test/java/cn/odboy/MyBatisMapperTests.java delete mode 100644 cutejava/cutejava-starter/src/test/java/cn/odboy/pipeline/PipelineTests.java create mode 100644 cutejava/cutejava-starter/src/test/java/cn/odboy/util/WorkTimeTests.java delete mode 100644 cutejava/docs/codestyle/project/P3C_CodeStyle.xml delete mode 100644 cutejava/docs/dockerenv/mongodb/docker-compose-mongodb.yml delete mode 100644 cutejava/docs/dockerenv/mongodb/readme.md delete mode 100644 cutejava/docs/dockerenv/mongodb/run.sh delete mode 100644 cutejava/docs/dockerenv/mongodb/stop.sh rename cutejava/docs/{ => help}/@Validated常用.txt (98%) rename cutejava/docs/{ => help}/Controller命名规范.md (99%) rename cutejava/docs/{ => help}/IDEA换行调整.jpg (100%) rename cutejava/docs/{ => help}/Service方法中使用this.txt (95%) create mode 100644 cutejava/docs/help/license.template create mode 100644 cutejava/docs/help/应用迭代定义.txt rename cutejava/docs/{ => help}/注意事项.md (98%) create mode 100644 cutejava/docs/help/缓存注解使用.txt create mode 100644 cutejava/docs/mysql/cleardb.sql delete mode 100644 cutejava/docs/mysql/cutejava.sql create mode 100644 cutejava/docs/mysql/readme.md create mode 100644 cutejava/docs/nginx/cutejava-api.odboy.cn.conf create mode 100644 cutejava/docs/nginx/cutejava.odboy.cn.conf diff --git a/.gitignore b/.gitignore index 574b56e5..29059ede 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,35 @@ -.DS_Store -node_modules/ -dist/ -demo/ -npm-debug.log* -yarn-debug.log* -yarn-error.log* -**/*.log - -tests/**/coverage/ -tests/e2e/reports -selenium-debug.log -cutejava-doc - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.local - -package-lock.json -yarn.lock - -### IDEA ### -.DS_Store -~/* -.idea/* -*.iml -*/target/* -*/*.iml -/.gradle/ +.DS_Store +node_modules/ +dist/ +demo/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +**/*.log + +tests/**/coverage/ +tests/e2e/reports +selenium-debug.log +cutejava-doc + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.local + +package-lock.json +yarn.lock + +### IDEA ### +.DS_Store +~/* +.idea/* +*.iml +*/target/* +*/*.iml +/.gradle/ /application.pid \ No newline at end of file diff --git a/LICENSE b/LICENSE index 485efc74..fe57103d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,191 +1,191 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable (except as stated in this section) patent license to make, have -made, use, offer to sell, sell, import, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "{}" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification within -third-party archives. - - Copyright 2022-2025 Odboy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "{}" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright 2022-2025 Odboy + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and limitations under the License. \ No newline at end of file diff --git a/README.MD b/README.MD index 5dcacd33..1257ae09 100644 --- a/README.MD +++ b/README.MD @@ -1,96 +1,96 @@ -

CuteJava 后台管理系统

- -#### 项目简介 - -一个基于 Spring Boot 2.7.18 、 Mybatis-Plus、 JWT、Spring Security、Redis、Vue2的前后端分离的后台管理系统 - -**账号密码:** `admin / 123456` - -#### 项目源码 - -https://github.com/odboy-tianjun/cutejava - -#### 编码规范 - -- 和数据库表一一对应的类, 以`Tb`结尾 -- API请求参数类名, 以`Args`结尾 -- API响应参数类名, 以`Vo`结尾 -- 事件驱动类名, 以`Event`结尾 -- 消息队列/Socket传输类名,以`Message`结尾 -- 常用的辅助类的类名, 以`Cs`开头 -- 查询分页、查询列表的方法,一律为同一个方法名 - - 查询分页:queryUser(args, page) - - 查询列表:queryUser(args) - - MapperXml:这样mapper.xml文件中的实现方法只需要写一个queryUser -- 枚举类名,以`Enum`结尾 -- 拒绝过度包装 - -#### 主要特性 - -- 使用最新技术栈,社区资源丰富。 -- 高效率开发,代码生成器可一键生成前后端代码 -- 支持数据字典,可方便地对一些状态进行管理 -- 支持接口限流,避免恶意请求导致服务层压力过大 -- 支持接口级别的功能权限与数据权限,可自定义操作 -- 自定义权限注解与匿名接口注解,可快速对接口拦截与放行 -- 对一些常用地前端组件封装:表格数据请求、数据字典等 -- 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断 -- 支持在线用户管理与服务器性能监控,支持限制单用户登录 -- 支持一键复制菜单项,避免菜单繁琐配置 - -#### 系统功能 - -- 用户管理:提供用户的相关配置,新增用户后,默认密码为123456 -- 角色管理:对权限与菜单进行分配,可根据部门设置角色的数据权限 -- 菜单管理:已实现菜单动态路由,后端可配置化,支持多级菜单 -- 部门管理:可配置系统组织架构,树形表格展示 -- 岗位管理:配置各个部门的职位 -- 字典管理:可维护常用一些固定的数据,如:状态,性别等 -- SQL监控:采用druid 监控数据库访问性能,默认用户名admin,密码123456 -- 定时任务:整合Quartz做定时任务,加入任务日志,任务运行情况一目了然 -- 邮件工具:配合富文本,发送html格式的邮件 -- 存储管理:本地存储、Minio存储 -- 服务监控:监控服务器的负载情况 - -#### 前端基础组件 - -> 组件所在路径:cutejava-front/src/views/components/dev - -- CuteSimpleTable 简单表格 -- CuteDragTable 支持拖拽的表格 -- CuteFormDialog 支持表单的对话框 -- CuteFormDrawer 支持表单的抽屉 -- CuteRichTextEditor 富文本编辑器 -- CuteOneKeyCopy 一键复制 -- CuteMarkdown Markdown编辑器 -- CuteJavaEditor Java编辑器(已弃用) -- CuteYamlEditor Yaml编辑器(已弃用) -- CuteCodeEditor 多语言编辑器(支持yaml、java、go、swift、dockerfile、groovy、lua、perl、python、ruby、sql、xml、vue) - -#### 前端业务组件 - -> 组件所在路径:cutejava-front/src/views/components/business - -- CuteDeptTree 部门树 -- CuteProductLineSelect 产品线选择框 -- CuteProductLineSelectPro 产品线级联选择框 -- CuteUserSelect 用户多选框 - ![CuteBusiness](./cutejava-front/docs/images/CuteBusiness.png) -- CuteFileUpload 上传文件到OSS, 必须结合Minio使用(上传完成后必须销毁组件) - ![CuteFileUpload](./cutejava-front/docs/images/CuteFileUpload.png) -- CuteFileDragUpload 支持拖拽上传文件到OSS, 必须结合Minio使用(上传完成后必须销毁组件) - ![CuteFileDragUpload](./cutejava-front/docs/images/CuteFileDragUpload.png) -- CutePipelineNode 流水线节点组件 - ![CutePipelineNode](./cutejava-front/docs/images/CutePipelineNode.png) - -#### 系统模块 - -- cutejava-framework:系统基础框架。提供核心功能,如:权限、数据权限、异常处理、缓存、工具类、接口限流、接口防重、接口幂等。 -- cutejava-system:系统功能模块。提供用户、角色、菜单、部门、岗位、字典、定时任务、邮件、Minio存储、服务监控等功能 -- cutejava-devops:devops模块,已实现流水线功能。参考阿里云云效,提供流水线功能,可配置流水线任务,并支持任务依赖、任务参数、任务参数校验、任务参数回填。 - -#### 特别鸣谢 - -- 感谢 [elunez](https://github.com/elunez/eladmin-mp) 大佬提供的基础框架 -- 感谢 [aizuda](https://mongoplus.com/) 大佬提供的Mongodb框架 - - 建表参考 'cutejava/doc/mongodb.md' +

CuteJava 后台管理系统

+ +#### 项目简介 + +一个基于 Spring Boot 2.7.18 、 Mybatis-Plus、 JWT、Spring Security、Redis、Vue2的前后端分离的后台管理系统 + +**账号密码:** `admin / 123456` + +#### 项目源码 + +https://github.com/odboy-tianjun/cutejava + +#### 编码规范 + +- 和数据库表一一对应的类, 以`Tb`结尾 +- API请求参数类名, 以`Args`结尾 +- API响应参数类名, 以`Vo`结尾 +- 事件驱动类名, 以`Event`结尾 +- 消息队列/Socket传输类名,以`Message`结尾 +- 常用的辅助类的类名, 以`Cs`开头 +- 查询分页、查询列表的方法,一律为同一个方法名 + - 查询分页:queryUser(args, page) + - 查询列表:queryUser(args) + - MapperXml:这样mapper.xml文件中的实现方法只需要写一个queryUser +- 枚举类名,以`Enum`结尾 +- 拒绝过度包装 + +#### 主要特性 + +- 使用最新技术栈,社区资源丰富。 +- 高效率开发,代码生成器可一键生成前后端代码 +- 支持数据字典,可方便地对一些状态进行管理 +- 支持接口限流,避免恶意请求导致服务层压力过大 +- 支持接口级别的功能权限与数据权限,可自定义操作 +- 自定义权限注解与匿名接口注解,可快速对接口拦截与放行 +- 对一些常用地前端组件封装:表格数据请求、数据字典等 +- 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断 +- 支持在线用户管理与服务器性能监控,支持限制单用户登录 +- 支持一键复制菜单项,避免菜单繁琐配置 + +#### 系统功能 + +- 用户管理:提供用户的相关配置,新增用户后,默认密码为123456 +- 角色管理:对权限与菜单进行分配,可根据部门设置角色的数据权限 +- 菜单管理:已实现菜单动态路由,后端可配置化,支持多级菜单 +- 部门管理:可配置系统组织架构,树形表格展示 +- 岗位管理:配置各个部门的职位 +- 字典管理:可维护常用一些固定的数据,如:状态,性别等 +- SQL监控:采用druid 监控数据库访问性能,默认用户名admin,密码123456 +- 定时任务:整合Quartz做定时任务,加入任务日志,任务运行情况一目了然 +- 邮件工具:配合富文本,发送html格式的邮件 +- 存储管理:本地存储、Minio存储 +- 服务监控:监控服务器的负载情况 + +#### 前端基础组件 + +> 组件所在路径:cutejava-front/src/views/components/dev + +- CuteSimpleTable 简单表格 +- CuteDragTable 支持拖拽的表格 +- CuteFormDialog 支持表单的对话框 +- CuteFormDrawer 支持表单的抽屉 +- CuteRichTextEditor 富文本编辑器 +- CuteOneKeyCopy 一键复制 +- CuteMarkdown Markdown编辑器 +- CuteJavaEditor Java编辑器(已弃用) +- CuteYamlEditor Yaml编辑器(已弃用) +- CuteCodeEditor 多语言编辑器(支持yaml、java、go、swift、dockerfile、groovy、lua、perl、python、ruby、sql、xml、vue) + +#### 前端业务组件 + +> 组件所在路径:cutejava-front/src/views/components/business + +- CuteDeptTree 部门树 +- CuteProductLineSelect 产品线选择框 +- CuteProductLineSelectPro 产品线级联选择框 +- CuteUserSelect 用户多选框 + ![CuteBusiness](./cutejava-front/docs/images/CuteBusiness.png) +- CuteFileUpload 上传文件到OSS, 必须结合Minio使用(上传完成后必须销毁组件) + ![CuteFileUpload](./cutejava-front/docs/images/CuteFileUpload.png) +- CuteFileDragUpload 支持拖拽上传文件到OSS, 必须结合Minio使用(上传完成后必须销毁组件) + ![CuteFileDragUpload](./cutejava-front/docs/images/CuteFileDragUpload.png) +- CutePipelineNode 流水线节点组件 + ![CutePipelineNode](./cutejava-front/docs/images/CutePipelineNode.png) + +#### 系统模块 + +- cutejava-framework:系统基础框架。提供核心功能,如:权限、数据权限、异常处理、缓存、工具类、接口限流、接口防重、接口幂等。 +- cutejava-system:系统功能模块。提供用户、角色、菜单、部门、岗位、字典、定时任务、邮件、Minio存储、服务监控等功能 +- cutejava-devops:devops模块,已实现流水线功能。参考阿里云云效,提供流水线功能,可配置流水线任务,并支持任务依赖、任务参数、任务参数校验、任务参数回填。 + +#### 特别鸣谢 + +- 感谢 [elunez](https://github.com/elunez/eladmin-mp) 大佬提供的基础框架 +- 感谢 [aizuda](https://mongoplus.com/) 大佬提供的Mongodb框架 + - 建表参考 'cutejava/doc/mongodb.md' diff --git a/commit.sh b/commit.sh new file mode 100644 index 00000000..ce2dfad4 --- /dev/null +++ b/commit.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +is_weekend() { + day=$(date +%u) + [ "$day" -eq 6 ] || [ "$day" -eq 7 ] +} + +if is_weekend; then + # 如果是周末,使用当前时间 + git add . + git commit -m "$1" + git push +else + # 如果不是周末,设置为最近的周末时间 + day=$(date +%u) + if [ "$day" -le 5 ]; then + # 周一到周五,设置为即将到来的周六 + days_until_saturday=$((6 - day)) + weekend_date=$(date -d "$days_until_saturday days" "+%Y-%m-%d 12:00:00") + else + # 周日,使用昨天(周六) + weekend_date=$(date -d "yesterday" "+%Y-%m-%d 12:00:00") + fi + + export GIT_AUTHOR_DATE="$weekend_date" + export GIT_COMMITTER_DATE="$weekend_date" + + git add . + git commit -m "$1" + git push + + unset GIT_AUTHOR_DATE + unset GIT_COMMITTER_DATE +fi diff --git a/cutejava-front/.editorconfig b/cutejava-front/.editorconfig index 3454886e..d6da2515 100644 --- a/cutejava-front/.editorconfig +++ b/cutejava-front/.editorconfig @@ -1,14 +1,14 @@ -# https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -insert_final_newline = false -trim_trailing_whitespace = false +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/cutejava-front/.env.development b/cutejava-front/.env.development index d9a21321..67008828 100644 --- a/cutejava-front/.env.development +++ b/cutejava-front/.env.development @@ -1,8 +1,8 @@ -ENV = 'development' - -# 接口地址 -VUE_APP_BASE_API = 'http://localhost:8000' -VUE_APP_WS_API = 'ws://localhost:8000' - -# 是否启用 babel-plugin-dynamic-import-node插件 -VUE_CLI_BABEL_TRANSPILE_MODULES = true +ENV = 'development' + +# 接口地址 +VUE_APP_BASE_API = 'http://localhost:8000' +VUE_APP_WS_API = 'ws://localhost:8000' + +# 是否启用 babel-plugin-dynamic-import-node插件 +VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/cutejava-front/.env.production b/cutejava-front/.env.production index d680afa7..6eb35d33 100644 --- a/cutejava-front/.env.production +++ b/cutejava-front/.env.production @@ -1,7 +1,7 @@ -ENV = 'production' - -# 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 -# 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http -VUE_APP_BASE_API = 'https://cutejava-api.odboy.cn' -# 如果接口是 http 形式, wss 需要改为 ws -VUE_APP_WS_API = 'wss://cutejava-api.odboy.cn' +ENV = 'production' + +# 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 +# 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http +VUE_APP_BASE_API = 'https://cutejava-api.odboy.cn' +# 如果接口是 http 形式, wss 需要改为 ws +VUE_APP_WS_API = 'wss://cutejava-api.odboy.cn' diff --git a/cutejava-front/.eslintignore b/cutejava-front/.eslintignore index e6529fc0..e3a871f3 100644 --- a/cutejava-front/.eslintignore +++ b/cutejava-front/.eslintignore @@ -1,4 +1,4 @@ -build/*.js -src/assets -public -dist +build/*.js +src/assets +public +dist diff --git a/cutejava-front/.eslintrc.js b/cutejava-front/.eslintrc.js index c9775054..2d44d7b5 100644 --- a/cutejava-front/.eslintrc.js +++ b/cutejava-front/.eslintrc.js @@ -1,198 +1,198 @@ -module.exports = { - root: true, - parserOptions: { - parser: 'babel-eslint', - sourceType: 'module' - }, - env: { - browser: true, - node: true, - es6: true, - }, - extends: ['plugin:vue/recommended', 'eslint:recommended'], - - // add your custom rules here - //it is base on https://github.com/vuejs/eslint-config-vue - rules: { - "vue/max-attributes-per-line": [2, { - "singleline": 10, - "multiline": { - "max": 1, - "allowFirstLine": false - } - }], - "vue/singleline-html-element-content-newline": "off", - "vue/multiline-html-element-content-newline":"off", - "vue/name-property-casing": ["error", "PascalCase"], - "vue/no-v-html": "off", - 'accessor-pairs': 2, - 'arrow-spacing': [2, { - 'before': true, - 'after': true - }], - 'block-spacing': [2, 'always'], - 'brace-style': [2, '1tbs', { - 'allowSingleLine': true - }], - 'camelcase': [0, { - 'properties': 'always' - }], - 'comma-dangle': [2, 'never'], - 'comma-spacing': [2, { - 'before': false, - 'after': true - }], - 'comma-style': [2, 'last'], - 'constructor-super': 2, - 'curly': [2, 'multi-line'], - 'dot-location': [2, 'property'], - 'eol-last': 2, - 'eqeqeq': ["error", "always", {"null": "ignore"}], - 'generator-star-spacing': [2, { - 'before': true, - 'after': true - }], - 'handle-callback-err': [2, '^(err|error)$'], - 'indent': [2, 2, { - 'SwitchCase': 1 - }], - 'jsx-quotes': [2, 'prefer-single'], - 'key-spacing': [2, { - 'beforeColon': false, - 'afterColon': true - }], - 'keyword-spacing': [2, { - 'before': true, - 'after': true - }], - 'new-cap': [2, { - 'newIsCap': true, - 'capIsNew': false - }], - 'new-parens': 2, - 'no-array-constructor': 2, - 'no-caller': 2, - 'no-console': 'off', - 'no-class-assign': 2, - 'no-cond-assign': 2, - 'no-const-assign': 2, - 'no-control-regex': 0, - 'no-delete-var': 2, - 'no-dupe-args': 2, - 'no-dupe-class-members': 2, - 'no-dupe-keys': 2, - 'no-duplicate-case': 2, - 'no-empty-character-class': 2, - 'no-empty-pattern': 2, - 'no-eval': 2, - 'no-ex-assign': 2, - 'no-extend-native': 2, - 'no-extra-bind': 2, - 'no-extra-boolean-cast': 2, - 'no-extra-parens': [2, 'functions'], - 'no-fallthrough': 2, - 'no-floating-decimal': 2, - 'no-func-assign': 2, - 'no-implied-eval': 2, - 'no-inner-declarations': [2, 'functions'], - 'no-invalid-regexp': 2, - 'no-irregular-whitespace': 2, - 'no-iterator': 2, - 'no-label-var': 2, - 'no-labels': [2, { - 'allowLoop': false, - 'allowSwitch': false - }], - 'no-lone-blocks': 2, - 'no-mixed-spaces-and-tabs': 2, - 'no-multi-spaces': 2, - 'no-multi-str': 2, - 'no-multiple-empty-lines': [2, { - 'max': 1 - }], - 'no-native-reassign': 2, - 'no-negated-in-lhs': 2, - 'no-new-object': 2, - 'no-new-require': 2, - 'no-new-symbol': 2, - 'no-new-wrappers': 2, - 'no-obj-calls': 2, - 'no-octal': 2, - 'no-octal-escape': 2, - 'no-path-concat': 2, - 'no-proto': 2, - 'no-redeclare': 2, - 'no-regex-spaces': 2, - 'no-return-assign': [2, 'except-parens'], - 'no-self-assign': 2, - 'no-self-compare': 2, - 'no-sequences': 2, - 'no-shadow-restricted-names': 2, - 'no-spaced-func': 2, - 'no-sparse-arrays': 2, - 'no-this-before-super': 2, - 'no-throw-literal': 2, - 'no-trailing-spaces': 2, - 'no-undef': 2, - 'no-undef-init': 2, - 'no-unexpected-multiline': 2, - 'no-unmodified-loop-condition': 2, - 'no-unneeded-ternary': [2, { - 'defaultAssignment': false - }], - 'no-unreachable': 2, - 'no-unsafe-finally': 2, - 'no-unused-vars': [2, { - 'vars': 'all', - 'args': 'none' - }], - 'no-useless-call': 2, - 'no-useless-computed-key': 2, - 'no-useless-constructor': 2, - 'no-useless-escape': 0, - 'no-whitespace-before-property': 2, - 'no-with': 2, - 'one-var': [2, { - 'initialized': 'never' - }], - 'operator-linebreak': [2, 'after', { - 'overrides': { - '?': 'before', - ':': 'before' - } - }], - 'padded-blocks': [2, 'never'], - 'quotes': [2, 'single', { - 'avoidEscape': true, - 'allowTemplateLiterals': true - }], - 'semi': [2, 'never'], - 'semi-spacing': [2, { - 'before': false, - 'after': true - }], - 'space-before-blocks': [2, 'always'], - 'space-before-function-paren': [2, 'never'], - 'space-in-parens': [2, 'never'], - 'space-infix-ops': 2, - 'space-unary-ops': [2, { - 'words': true, - 'nonwords': false - }], - 'spaced-comment': [2, 'always', { - 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] - }], - 'template-curly-spacing': [2, 'never'], - 'use-isnan': 2, - 'valid-typeof': 2, - 'wrap-iife': [2, 'any'], - 'yield-star-spacing': [2, 'both'], - 'yoda': [2, 'never'], - 'prefer-const': 2, - 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, - 'object-curly-spacing': [2, 'always', { - objectsInObjects: false - }], - 'array-bracket-spacing': [2, 'never'] - } -} +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module' + }, + env: { + browser: true, + node: true, + es6: true, + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + + // add your custom rules here + //it is base on https://github.com/vuejs/eslint-config-vue + rules: { + "vue/max-attributes-per-line": [2, { + "singleline": 10, + "multiline": { + "max": 1, + "allowFirstLine": false + } + }], + "vue/singleline-html-element-content-newline": "off", + "vue/multiline-html-element-content-newline":"off", + "vue/name-property-casing": ["error", "PascalCase"], + "vue/no-v-html": "off", + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': ["error", "always", {"null": "ignore"}], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'never'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +} diff --git a/cutejava-front/.gitignore b/cutejava-front/.gitignore index 78a752d8..2c9b3a73 100644 --- a/cutejava-front/.gitignore +++ b/cutejava-front/.gitignore @@ -1,23 +1,23 @@ -.DS_Store -node_modules/ -dist/ -npm-debug.log* -yarn-debug.log* -yarn-error.log* -**/*.log - -tests/**/coverage/ -tests/e2e/reports -selenium-debug.log - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.local - -package-lock.json -yarn.lock +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +**/*.log + +tests/**/coverage/ +tests/e2e/reports +selenium-debug.log + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.local + +package-lock.json +yarn.lock diff --git a/cutejava-front/.travis.yml b/cutejava-front/.travis.yml index f4be7a08..a95f7bb0 100644 --- a/cutejava-front/.travis.yml +++ b/cutejava-front/.travis.yml @@ -1,5 +1,5 @@ -language: node_js -node_js: 10 -script: npm run test -notifications: - email: false +language: node_js +node_js: 10 +script: npm run test +notifications: + email: false diff --git a/cutejava-front/LICENSE b/cutejava-front/LICENSE index aae98709..94343fa3 100644 --- a/cutejava-front/LICENSE +++ b/cutejava-front/LICENSE @@ -1,191 +1,191 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable (except as stated in this section) patent license to make, have -made, use, offer to sell, sell, import, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "{}" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification within -third-party archives. - - Copyright 2022 Odboy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "{}" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright 2022 Odboy + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/cutejava-front/README.md b/cutejava-front/README.md index 5141af4b..ceee37df 100644 --- a/cutejava-front/README.md +++ b/cutejava-front/README.md @@ -1,51 +1,51 @@ -# cutejava-ui - -#### 前端模板 - -初始模板基于: [https://github.com/PanJiaChen/vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) - -模板文档: [https://panjiachen.github.io/vue-element-admin-site/zh/guide/](https://panjiachen.github.io/vue-element-admin-site/zh/guide/) - -## 快速开始 - -### 环境要求 - -**推荐 node 版本:12-16 LTS** - -### 安装依赖 - -``` bash -# 安装依赖(依赖python) -npm install --registry https://registry.npmmirror.com -``` - -### 启动服务 - -```bash -# 启动服务 localhost:8013 -npm run dev - -# (或) 启动服务 localhost:8013 -IDEA -> Current File -> Edit Configurations... -> Add New Configuration -> npm -> Script选dev -> Apply -> Ok - -# 构建生产环境 -npm run build:prod -``` - -#### 常见问题 - -1、linux 系统在安装依赖的时候会出现 node-sass 无法安装的问题 - -解决方案: -``` -1. 单独安装:npm install --unsafe-perm node-sass -2. 直接使用:npm install --unsafe-perm -``` - -2、加速node-sass安装 - -https://www.ydyno.com/archives/1219.html - -#### 特别鸣谢 - -- 感谢 [elunez](https://github.com/elunez/eladmin-mp) 大佬提供的基础框架 +# cutejava-ui + +#### 前端模板 + +初始模板基于: [https://github.com/PanJiaChen/vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) + +模板文档: [https://panjiachen.github.io/vue-element-admin-site/zh/guide/](https://panjiachen.github.io/vue-element-admin-site/zh/guide/) + +## 快速开始 + +### 环境要求 + +**推荐 node 版本:12-16 LTS** + +### 安装依赖 + +``` bash +# 安装依赖(依赖python) +npm install --registry https://registry.npmmirror.com +``` + +### 启动服务 + +```bash +# 启动服务 localhost:8013 +npm run dev + +# (或) 启动服务 localhost:8013 +IDEA -> Current File -> Edit Configurations... -> Add New Configuration -> npm -> Script选dev -> Apply -> Ok + +# 构建生产环境 +npm run build:prod +``` + +#### 常见问题 + +1、linux 系统在安装依赖的时候会出现 node-sass 无法安装的问题 + +解决方案: +``` +1. 单独安装:npm install --unsafe-perm node-sass +2. 直接使用:npm install --unsafe-perm +``` + +2、加速node-sass安装 + +https://www.ydyno.com/archives/1219.html + +#### 特别鸣谢 + +- 感谢 [elunez](https://github.com/elunez/eladmin-mp) 大佬提供的基础框架 diff --git a/cutejava-front/babel.config.js b/cutejava-front/babel.config.js index 804632a0..682b736f 100644 --- a/cutejava-front/babel.config.js +++ b/cutejava-front/babel.config.js @@ -1,11 +1,11 @@ -const plugins = ['@vue/babel-plugin-transform-vue-jsx'] -// 生产环境移除console -if (process.env.NODE_ENV === 'production') { - plugins.push('transform-remove-console') -} -module.exports = { - plugins: plugins, - presets: [ - '@vue/app' - ] -} +const plugins = ['@vue/babel-plugin-transform-vue-jsx'] +// 生产环境移除console +if (process.env.NODE_ENV === 'production') { + plugins.push('transform-remove-console') +} +module.exports = { + plugins: plugins, + presets: [ + '@vue/app' + ] +} diff --git a/cutejava-front/jest.config.js b/cutejava-front/jest.config.js index 143cdc86..ca6c565a 100644 --- a/cutejava-front/jest.config.js +++ b/cutejava-front/jest.config.js @@ -1,24 +1,24 @@ -module.exports = { - moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], - transform: { - '^.+\\.vue$': 'vue-jest', - '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': - 'jest-transform-stub', - '^.+\\.jsx?$': 'babel-jest' - }, - moduleNameMapper: { - '^@/(.*)$': '/src/$1' - }, - snapshotSerializers: ['jest-serializer-vue'], - testMatch: [ - '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' - ], - collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], - coverageDirectory: '/tests/unit/coverage', - // 'collectCoverage': true, - 'coverageReporters': [ - 'lcov', - 'text-summary' - ], - testURL: 'http://localhost/' -} +module.exports = { + moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': + 'jest-transform-stub', + '^.+\\.jsx?$': 'babel-jest' + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + snapshotSerializers: ['jest-serializer-vue'], + testMatch: [ + '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' + ], + collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], + coverageDirectory: '/tests/unit/coverage', + // 'collectCoverage': true, + 'coverageReporters': [ + 'lcov', + 'text-summary' + ], + testURL: 'http://localhost/' +} diff --git a/cutejava-front/package.json b/cutejava-front/package.json index 0b91b187..d0c24bd8 100644 --- a/cutejava-front/package.json +++ b/cutejava-front/package.json @@ -1,6 +1,6 @@ { "name": "cutejava-front", - "version": "1.3.0", + "version": "1.4.0", "description": "CuteJava 前端源码", "author": "Odboy", "license": "Apache-2.0", @@ -48,6 +48,7 @@ "element-ui": "^2.15.14", "file-saver": "1.3.8", "fuse.js": "3.4.4", + "html2canvas": "^1.4.1", "js-beautify": "^1.10.2", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", diff --git a/cutejava-front/plopfile.js b/cutejava-front/plopfile.js index 9f3147e2..725c51b4 100644 --- a/cutejava-front/plopfile.js +++ b/cutejava-front/plopfile.js @@ -1,7 +1,7 @@ -const viewGenerator = require('./plop-templates/view/prompt') -const componentGenerator = require('./plop-templates/component/prompt') - -module.exports = function(plop) { - plop.setGenerator('view', viewGenerator) - plop.setGenerator('component', componentGenerator) -} +const viewGenerator = require('./plop-templates/view/prompt') +const componentGenerator = require('./plop-templates/component/prompt') + +module.exports = function(plop) { + plop.setGenerator('view', viewGenerator) + plop.setGenerator('component', componentGenerator) +} diff --git a/cutejava-front/postcss.config.js b/cutejava-front/postcss.config.js index 961986e2..2be0631d 100644 --- a/cutejava-front/postcss.config.js +++ b/cutejava-front/postcss.config.js @@ -1,5 +1,5 @@ -module.exports = { - plugins: { - autoprefixer: {} - } -} +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/cutejava-front/public/index.html b/cutejava-front/public/index.html index e9185009..f1df85d6 100644 --- a/cutejava-front/public/index.html +++ b/cutejava-front/public/index.html @@ -1,15 +1,15 @@ - - - - - - - - - <%= webpackConfig.name %> - - -
- - - + + + + + + + + + <%= webpackConfig.name %> + + +
+ + + diff --git a/cutejava-front/public/robots.txt b/cutejava-front/public/robots.txt index 77470cb3..c2aab7e0 100644 --- a/cutejava-front/public/robots.txt +++ b/cutejava-front/public/robots.txt @@ -1,2 +1,2 @@ -User-agent: * +User-agent: * Disallow: / \ No newline at end of file diff --git a/cutejava-front/src/App.vue b/cutejava-front/src/App.vue index ec9032c1..df5e0ca2 100644 --- a/cutejava-front/src/App.vue +++ b/cutejava-front/src/App.vue @@ -1,11 +1,11 @@ - - - + + + diff --git a/cutejava-front/src/api/data.js b/cutejava-front/src/api/data.js index 196bd37e..fac4acb0 100644 --- a/cutejava-front/src/api/data.js +++ b/cutejava-front/src/api/data.js @@ -1,33 +1,33 @@ -import request from '@/utils/request' -import qs from 'qs' - -// export function initData(url, params) { -// return request({ -// url: url + '?' + qs.stringify(params, { indices: false }), -// method: 'get' -// }) -// } - -export function initData(url, params) { - return request({ - url: url, - method: 'post', - data: params - }) -} - -export function initDataByPost(url, params) { - return request({ - url: url, - method: 'post', - data: params - }) -} - -export function download(url, params) { - return request({ - url: url + '?' + qs.stringify(params, { indices: false }), - method: 'get', - responseType: 'blob' - }) -} +import request from '@/utils/request' +import qs from 'qs' + +// export function initData(url, params) { +// return request({ +// url: url + '?' + qs.stringify(params, { indices: false }), +// method: 'get' +// }) +// } + +export function initData(url, params) { + return request({ + url: url, + method: 'post', + data: params + }) +} + +export function initDataByPost(url, params) { + return request({ + url: url, + method: 'post', + data: params + }) +} + +export function download(url, params) { + return request({ + url: url + '?' + qs.stringify(params, { indices: false }), + method: 'get', + responseType: 'blob' + }) +} diff --git a/cutejava-front/src/api/login.js b/cutejava-front/src/api/login.js index 1a0bbd6c..d8309e9e 100644 --- a/cutejava-front/src/api/login.js +++ b/cutejava-front/src/api/login.js @@ -1,35 +1,35 @@ -import request from '@/utils/request' - -export function login(username, password, code, uuid) { - return request({ - url: 'auth/login', - method: 'post', - data: { - username, - password, - code, - uuid - } - }) -} - -export function getInfo() { - return request({ - url: 'auth/info', - method: 'post' - }) -} - -export function getCodeImg() { - return request({ - url: 'auth/captcha/getImage', - method: 'post' - }) -} - -export function logout() { - return request({ - url: 'auth/logout', - method: 'post' - }) -} +import request from '@/utils/request' + +export function login(username, password, code, uuid) { + return request({ + url: 'auth/login', + method: 'post', + data: { + username, + password, + code, + uuid + } + }) +} + +export function getInfo() { + return request({ + url: 'auth/info', + method: 'post' + }) +} + +export function getCodeImg() { + return request({ + url: 'auth/captcha/getImage', + method: 'post' + }) +} + +export function logout() { + return request({ + url: 'auth/logout', + method: 'post' + }) +} diff --git a/cutejava-front/src/api/pipeline/pipelineInstance.js b/cutejava-front/src/api/pipeline/pipelineInstance.js deleted file mode 100644 index b9413045..00000000 --- a/cutejava-front/src/api/pipeline/pipelineInstance.js +++ /dev/null @@ -1,53 +0,0 @@ -import request from '@/utils/request' - -export function startPipeline(data) { - return request({ - url: 'api/devops/pipelineInstance/start', - method: 'post', - data - }) -} - -export function stopPipeline(data) { - return request({ - url: 'api/devops/pipelineInstance/stop', - method: 'post', - data - }) -} - -export function retryPipeline(data) { - return request({ - url: 'api/devops/pipelineInstance/retry', - method: 'post', - data - }) -} - -export function restartPipeline(data) { - return request({ - url: 'api/devops/pipelineInstance/restart', - method: 'post', - data - }) -} - -export function queryLastPipelineDetail(instanceId) { - return request({ - url: 'api/devops/pipelineInstance/last', - method: 'post', - data: { - instanceId - } - }) -} - -export function queryLastPipelineDetailWs(instanceId) { - return request({ - url: 'api/devops/pipelineInstance/lastWs', - method: 'post', - data: { - instanceId - } - }) -} diff --git a/cutejava-front/src/api/pipeline/pipelineTemplate.js b/cutejava-front/src/api/pipeline/pipelineTemplate.js deleted file mode 100644 index fd372901..00000000 --- a/cutejava-front/src/api/pipeline/pipelineTemplate.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from '@/utils/request' - -export function getPipelineTemplate(id) { - return request({ - url: 'api/devops/pipelineTemplate/getPipelineTemplate', - method: 'post', - data: { id } - }) -} diff --git a/cutejava-front/src/api/system/code.js b/cutejava-front/src/api/system/code.js index 8e0fd805..d122c406 100644 --- a/cutejava-front/src/api/system/code.js +++ b/cutejava-front/src/api/system/code.js @@ -1,28 +1,28 @@ -import request from '@/utils/request' - -export function sendResetEmailCaptcha(email) { - return request({ - url: 'api/captcha/sendResetEmailCaptcha?email=' + email, - method: 'post' - }) -} - -export function sendResetPasswordCaptcha(email) { - return request({ - url: 'api/captcha/sendResetPasswordCaptcha?email=' + email, - method: 'post' - }) -} - -export function checkEmailCaptcha(email, code, bizCode) { - const params = { - email: email, - code: code, - bizCode: bizCode - } - return request({ - url: 'api/captcha/checkEmailCaptcha', - method: 'post', - data: params - }) -} +import request from '@/utils/request' + +export function sendResetEmailCaptcha(email) { + return request({ + url: 'api/captcha/sendResetEmailCaptcha?email=' + email, + method: 'post' + }) +} + +export function sendResetPasswordCaptcha(email) { + return request({ + url: 'api/captcha/sendResetPasswordCaptcha?email=' + email, + method: 'post' + }) +} + +export function checkEmailCaptcha(email, code, bizCode) { + const params = { + email: email, + code: code, + bizCode: bizCode + } + return request({ + url: 'api/captcha/checkEmailCaptcha', + method: 'post', + data: params + }) +} diff --git a/cutejava-front/src/api/system/dept.js b/cutejava-front/src/api/system/dept.js index 089447b4..278ff12b 100644 --- a/cutejava-front/src/api/system/dept.js +++ b/cutejava-front/src/api/system/dept.js @@ -1,45 +1,45 @@ -import request from '@/utils/request' - -export function queryDeptList(params) { - return request({ - url: 'api/dept', - method: 'post', - data: params - }) -} - -export function queryDeptSuperiorTree(ids, exclude) { - exclude = exclude !== undefined ? exclude : false - const data = Array.isArray(ids) ? ids : [ids] - return request({ - url: 'api/dept/queryDeptSuperiorTree?exclude=' + exclude, - method: 'post', - data: data - }) -} - -export function add(data) { - return request({ - url: 'api/dept/saveDept', - method: 'post', - data: data - }) -} - -export function del(ids) { - return request({ - url: 'api/dept/removeDeptByIds', - method: 'post', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/dept/modifyDept', - method: 'post', - data: data - }) -} - -export default { add, edit, del, queryDeptList, queryDeptSuperiorTree } +import request from '@/utils/request' + +export function queryDeptList(params) { + return request({ + url: 'api/dept', + method: 'post', + data: params + }) +} + +export function queryDeptSuperiorTree(ids, exclude) { + exclude = exclude !== undefined ? exclude : false + const data = Array.isArray(ids) ? ids : [ids] + return request({ + url: 'api/dept/queryDeptSuperiorTree?exclude=' + exclude, + method: 'post', + data: data + }) +} + +export function add(data) { + return request({ + url: 'api/dept/saveDept', + method: 'post', + data: data + }) +} + +export function del(ids) { + return request({ + url: 'api/dept/removeDeptByIds', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/dept/modifyDept', + method: 'post', + data: data + }) +} + +export default { add, edit, del, queryDeptList, queryDeptSuperiorTree } diff --git a/cutejava-front/src/api/system/dict.js b/cutejava-front/src/api/system/dict.js index e0baf34e..5dc359b0 100644 --- a/cutejava-front/src/api/system/dict.js +++ b/cutejava-front/src/api/system/dict.js @@ -1,35 +1,35 @@ -import request from '@/utils/request' - -export function add(data) { - return request({ - url: 'api/dict/saveDict', - method: 'post', - data: data - }) -} - -export function del(ids) { - return request({ - url: 'api/dict/removeDictByIds', - method: 'post', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/dict/modifyDictById', - method: 'post', - data: data - }) -} - -export function queryPageDict(data) { - return request({ - url: 'api/dict', - method: 'post', - data: data - }) -} - -export default { add, edit, del, queryPageDict } +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/dict/saveDict', + method: 'post', + data: data + }) +} + +export function del(ids) { + return request({ + url: 'api/dict/removeDictByIds', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/dict/modifyDictById', + method: 'post', + data: data + }) +} + +export function queryPageDict(data) { + return request({ + url: 'api/dict', + method: 'post', + data: data + }) +} + +export default { add, edit, del, queryPageDict } diff --git a/cutejava-front/src/api/system/dictDetail.js b/cutejava-front/src/api/system/dictDetail.js index 9f83c667..6b77d5f7 100644 --- a/cutejava-front/src/api/system/dictDetail.js +++ b/cutejava-front/src/api/system/dictDetail.js @@ -1,42 +1,42 @@ -import request from '@/utils/request' - -export function get(dictName) { - const params = { - page: 1, - size: 9999999, - args: { - dictName: dictName - } - } - return request({ - url: 'api/dictDetail/queryDictDetailByArgs', - method: 'post', - data: params - }) -} - -export function add(data) { - return request({ - url: 'api/dictDetail/saveDictDetail', - method: 'post', - data: data - }) -} - -export function del(id) { - return request({ - url: 'api/dictDetail/removeDictDetailById', - method: 'post', - data: { id: id } - }) -} - -export function edit(data) { - return request({ - url: 'api/dictDetail/modifyDictDetailById', - method: 'post', - data: data - }) -} - -export default { add, edit, del } +import request from '@/utils/request' + +export function get(dictName) { + const params = { + page: 1, + size: 9999999, + args: { + dictName: dictName + } + } + return request({ + url: 'api/dictDetail/queryDictDetailByArgs', + method: 'post', + data: params + }) +} + +export function add(data) { + return request({ + url: 'api/dictDetail/saveDictDetail', + method: 'post', + data: data + }) +} + +export function del(id) { + return request({ + url: 'api/dictDetail/removeDictDetailById', + method: 'post', + data: { id: id } + }) +} + +export function edit(data) { + return request({ + url: 'api/dictDetail/modifyDictDetailById', + method: 'post', + data: data + }) +} + +export default { add, edit, del } diff --git a/cutejava-front/src/api/system/email.js b/cutejava-front/src/api/system/email.js index fa84a0f7..fb193340 100644 --- a/cutejava-front/src/api/system/email.js +++ b/cutejava-front/src/api/system/email.js @@ -1,24 +1,24 @@ -import request from '@/utils/request' - -export function getLastEmailConfig() { - return request({ - url: 'api/email/getLastEmailConfig', - method: 'post' - }) -} - -export function modifyEmailConfig(data) { - return request({ - url: 'api/email/modifyEmailConfig', - method: 'post', - data: data - }) -} - -export function sendEmail(data) { - return request({ - url: 'api/email/sendEmail', - method: 'post', - data: data - }) -} +import request from '@/utils/request' + +export function getLastEmailConfig() { + return request({ + url: 'api/email/getLastEmailConfig', + method: 'post' + }) +} + +export function modifyEmailConfig(data) { + return request({ + url: 'api/email/modifyEmailConfig', + method: 'post', + data: data + }) +} + +export function sendEmail(data) { + return request({ + url: 'api/email/sendEmail', + method: 'post', + data: data + }) +} diff --git a/cutejava-front/src/api/system/job.js b/cutejava-front/src/api/system/job.js index 8ed716d0..4fc34241 100644 --- a/cutejava-front/src/api/system/job.js +++ b/cutejava-front/src/api/system/job.js @@ -1,42 +1,42 @@ -import request from '@/utils/request' - -export function queryAllEnableJob() { - const params = { - page: 1, - size: 9999999, - args: { - enabled: true - } - } - return request({ - url: 'api/job/queryAllEnableJob', - method: 'post', - data: params - }) -} - -export function add(data) { - return request({ - url: 'api/job/saveJob', - method: 'post', - data: data - }) -} - -export function del(ids) { - return request({ - url: 'api/job/removeJobByIds', - method: 'post', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/job/modifyJobById', - method: 'post', - data: data - }) -} - -export default { add, edit, del } +import request from '@/utils/request' + +export function queryAllEnableJob() { + const params = { + page: 1, + size: 9999999, + args: { + enabled: true + } + } + return request({ + url: 'api/job/queryAllEnableJob', + method: 'post', + data: params + }) +} + +export function add(data) { + return request({ + url: 'api/job/saveJob', + method: 'post', + data: data + }) +} + +export function del(ids) { + return request({ + url: 'api/job/removeJobByIds', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/job/modifyJobById', + method: 'post', + data: data + }) +} + +export default { add, edit, del } diff --git a/cutejava-front/src/api/system/localStorage.js b/cutejava-front/src/api/system/localStorage.js index c8f04d2b..e64c9440 100644 --- a/cutejava-front/src/api/system/localStorage.js +++ b/cutejava-front/src/api/system/localStorage.js @@ -1,27 +1,27 @@ -import request from '@/utils/request' - -export function add(data) { - return request({ - url: 'api/localStorage/uploadFile', - method: 'post', - data: data - }) -} - -export function del(ids) { - return request({ - url: 'api/localStorage/removeFileByIds', - method: 'post', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/localStorage/modifyLocalStorageById', - method: 'post', - data: data - }) -} - -export default { add, edit, del } +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/localStorage/uploadFile', + method: 'post', + data: data + }) +} + +export function del(ids) { + return request({ + url: 'api/localStorage/removeFileByIds', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/localStorage/modifyLocalStorageById', + method: 'post', + data: data + }) +} + +export default { add, edit, del } diff --git a/cutejava-front/src/api/system/menu.js b/cutejava-front/src/api/system/menu.js index e4e20779..f7b5bdd3 100644 --- a/cutejava-front/src/api/system/menu.js +++ b/cutejava-front/src/api/system/menu.js @@ -1,65 +1,65 @@ -import request from '@/utils/request' - -export function queryMenuListByPid(pid) { - return request({ - url: 'api/menu/queryMenuListByPid?pid=' + pid, - method: 'post' - }) -} - -export function queryMenuByArgs(params) { - return request({ - url: 'api/menu/queryMenuByArgs', - method: 'post', - data: params - }) -} - -export function queryMenuSuperior(ids) { - const data = Array.isArray(ids) ? ids : [ids] - return request({ - url: 'api/menu/queryMenuSuperior', - method: 'post', - data: data - }) -} - -export function queryChildMenuSet(id) { - return request({ - url: 'api/menu/queryChildMenuSet?id=' + id, - method: 'post' - }) -} - -export function buildMenus() { - return request({ - url: 'api/menu/buildMenus', - method: 'post' - }) -} - -export function add(data) { - return request({ - url: 'api/menu/saveMenu', - method: 'post', - data: data - }) -} - -export function del(ids) { - return request({ - url: 'api/menu/removeMenuByIds', - method: 'post', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/menu/modifyMenuById', - method: 'post', - data: data - }) -} - -export default { add, edit, del, queryMenuListByPid, queryMenuSuperior, queryMenuByArgs, queryChildMenuSet } +import request from '@/utils/request' + +export function queryMenuListByPid(pid) { + return request({ + url: 'api/menu/queryMenuListByPid?pid=' + pid, + method: 'post' + }) +} + +export function queryMenuByArgs(params) { + return request({ + url: 'api/menu/queryMenuByArgs', + method: 'post', + data: params + }) +} + +export function queryMenuSuperior(ids) { + const data = Array.isArray(ids) ? ids : [ids] + return request({ + url: 'api/menu/queryMenuSuperior', + method: 'post', + data: data + }) +} + +export function queryChildMenuSet(id) { + return request({ + url: 'api/menu/queryChildMenuSet?id=' + id, + method: 'post' + }) +} + +export function buildMenus() { + return request({ + url: 'api/menu/buildMenus', + method: 'post' + }) +} + +export function add(data) { + return request({ + url: 'api/menu/saveMenu', + method: 'post', + data: data + }) +} + +export function del(ids) { + return request({ + url: 'api/menu/removeMenuByIds', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/menu/modifyMenuById', + method: 'post', + data: data + }) +} + +export default { add, edit, del, queryMenuListByPid, queryMenuSuperior, queryMenuByArgs, queryChildMenuSet } diff --git a/cutejava-front/src/api/system/online.js b/cutejava-front/src/api/system/online.js index d9f7fccd..312ec091 100644 --- a/cutejava-front/src/api/system/online.js +++ b/cutejava-front/src/api/system/online.js @@ -1,9 +1,9 @@ -import request from '@/utils/request' - -export function kickOutUser(keys) { - return request({ - url: 'api/user/online/kickOutUser', - method: 'post', - data: keys - }) -} +import request from '@/utils/request' + +export function kickOutUser(keys) { + return request({ + url: 'api/user/online/kickOutUser', + method: 'post', + data: keys + }) +} diff --git a/cutejava-front/src/api/system/ossStorage.js b/cutejava-front/src/api/system/ossStorage.js index 8d26bd29..9ebb1754 100644 --- a/cutejava-front/src/api/system/ossStorage.js +++ b/cutejava-front/src/api/system/ossStorage.js @@ -1,19 +1,19 @@ -import request from '@/utils/request' - -export function add(data) { - return request({ - url: 'api/ossStorage/uploadFile', - method: 'post', - data: data - }) -} - -export function del(ids) { - return request({ - url: 'api/ossStorage/removeFileByIds', - method: 'post', - data: ids - }) -} - -export default { add, del } +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/ossStorage/uploadFile', + method: 'post', + data: data + }) +} + +export function del(ids) { + return request({ + url: 'api/ossStorage/removeFileByIds', + method: 'post', + data: ids + }) +} + +export default { add, del } diff --git a/cutejava-front/src/api/system/quartzJob.js b/cutejava-front/src/api/system/quartzJob.js index 41722e39..073e62ef 100644 --- a/cutejava-front/src/api/system/quartzJob.js +++ b/cutejava-front/src/api/system/quartzJob.js @@ -1,41 +1,41 @@ -import request from '@/utils/request' - -export function add(data) { - return request({ - url: 'api/quartzJob/createQuartzJob', - method: 'post', - data: data - }) -} - -export function del(ids) { - return request({ - url: 'api/quartzJob/removeJobByIds', - method: 'post', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/quartzJob', - method: 'put', - data: data - }) -} - -export function switchQuartzJobStatus(id) { - return request({ - url: 'api/quartzJob/switchQuartzJobStatus/' + id, - method: 'post' - }) -} - -export function startQuartzJob(id) { - return request({ - url: 'api/quartzJob/startQuartzJob/' + id, - method: 'post' - }) -} - -export default { add, edit, del, switchQuartzJobStatus, startQuartzJob } +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/quartzJob/createQuartzJob', + method: 'post', + data: data + }) +} + +export function del(ids) { + return request({ + url: 'api/quartzJob/removeJobByIds', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/quartzJob', + method: 'put', + data: data + }) +} + +export function switchQuartzJobStatus(id) { + return request({ + url: 'api/quartzJob/switchQuartzJobStatus/' + id, + method: 'post' + }) +} + +export function startQuartzJob(id) { + return request({ + url: 'api/quartzJob/startQuartzJob/' + id, + method: 'post' + }) +} + +export default { add, edit, del, switchQuartzJobStatus, startQuartzJob } diff --git a/cutejava-front/src/api/system/role.js b/cutejava-front/src/api/system/role.js index c897d1e5..6320c14b 100644 --- a/cutejava-front/src/api/system/role.js +++ b/cutejava-front/src/api/system/role.js @@ -1,58 +1,58 @@ -import request from '@/utils/request' - -// 获取所有的Role -export function queryRoleList() { - return request({ - url: 'api/role/queryRoleList', - method: 'post' - }) -} - -export function add(data) { - return request({ - url: 'api/role/saveRole', - method: 'post', - data: data - }) -} - -export function get(id) { - return request({ - url: 'api/role/queryRoleById', - method: 'post', - data: { id: id } - }) -} - -export function getLevel() { - return request({ - url: 'api/role/queryRoleLevel', - method: 'post' - }) -} - -export function del(ids) { - return request({ - url: 'api/role/removeRoleByIds', - method: 'post', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/role/modifyRoleById', - method: 'post', - data: data - }) -} - -export function editMenu(data) { - return request({ - url: 'api/role/modifyBindMenuById', - method: 'post', - data - }) -} - -export default { add, edit, del, get, editMenu, getLevel } +import request from '@/utils/request' + +// 获取所有的Role +export function queryRoleList() { + return request({ + url: 'api/role/queryRoleList', + method: 'post' + }) +} + +export function add(data) { + return request({ + url: 'api/role/saveRole', + method: 'post', + data: data + }) +} + +export function get(id) { + return request({ + url: 'api/role/queryRoleById', + method: 'post', + data: { id: id } + }) +} + +export function getLevel() { + return request({ + url: 'api/role/queryRoleLevel', + method: 'post' + }) +} + +export function del(ids) { + return request({ + url: 'api/role/removeRoleByIds', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/role/modifyRoleById', + method: 'post', + data: data + }) +} + +export function editMenu(data) { + return request({ + url: 'api/role/modifyBindMenuById', + method: 'post', + data + }) +} + +export default { add, edit, del, get, editMenu, getLevel } diff --git a/cutejava-front/src/api/system/user.js b/cutejava-front/src/api/system/user.js index 71314aa6..3364d7df 100644 --- a/cutejava-front/src/api/system/user.js +++ b/cutejava-front/src/api/system/user.js @@ -1,84 +1,84 @@ -import request from '@/utils/request' -import { encrypt } from '@/utils/CsRsaUtil' - -export function add(data) { - return request({ - url: 'api/user/saveUser', - method: 'post', - data: data - }) -} - -export function del(ids) { - return request({ - url: 'api/user/removeUserByIds', - method: 'post', - data: ids - }) -} - -export function resetPwd(ids) { - return request({ - url: 'api/user/resetUserPasswordByIds', - method: 'post', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/user/modifyUserById', - method: 'post', - data: data - }) -} - -export function editUser(data) { - return request({ - url: 'api/user/modifyUserCenterInfoById', - method: 'post', - data: data - }) -} - -export function updatePass(user) { - const data = { - oldPass: encrypt(user.oldPass), - newPass: encrypt(user.newPass) - } - return request({ - url: 'api/user/modifyUserPasswordByUsername', - method: 'post', - data: data - }) -} - -export function updateEmail(form) { - const data = { - password: encrypt(form.pass), - email: form.email - } - return request({ - url: 'api/user/modifyUserEmailByUsername/' + form.code, - method: 'post', - data: data - }) -} - -export function queryUserMetaPage(query) { - const params = { - page: 1, - size: 50, - args: { - blurry: query - } - } - return request({ - url: 'api/user/queryUserMetadataOptions', - method: 'post', - data: params - }) -} - -export default { add, edit, del, resetPwd, queryUserMetaPage } - +import request from '@/utils/request' +import { encrypt } from '@/utils/CsRsaUtil' + +export function add(data) { + return request({ + url: 'api/user/saveUser', + method: 'post', + data: data + }) +} + +export function del(ids) { + return request({ + url: 'api/user/removeUserByIds', + method: 'post', + data: ids + }) +} + +export function resetPwd(ids) { + return request({ + url: 'api/user/resetUserPasswordByIds', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/user/modifyUserById', + method: 'post', + data: data + }) +} + +export function editUser(data) { + return request({ + url: 'api/user/modifyUserCenterInfoById', + method: 'post', + data: data + }) +} + +export function updatePass(user) { + const data = { + oldPass: encrypt(user.oldPass), + newPass: encrypt(user.newPass) + } + return request({ + url: 'api/user/modifyUserPasswordByUsername', + method: 'post', + data: data + }) +} + +export function updateEmail(form) { + const data = { + password: encrypt(form.pass), + email: form.email + } + return request({ + url: 'api/user/modifyUserEmailByUsername/' + form.code, + method: 'post', + data: data + }) +} + +export function queryUserMetaPage(query) { + const params = { + page: 1, + size: 50, + args: { + blurry: query + } + } + return request({ + url: 'api/user/queryUserMetadataOptions', + method: 'post', + data: params + }) +} + +export default { add, edit, del, resetPwd, queryUserMetaPage } + diff --git a/cutejava-front/src/assets/icons/index.js b/cutejava-front/src/assets/icons/index.js index 2c6b309c..d79e1646 100644 --- a/cutejava-front/src/assets/icons/index.js +++ b/cutejava-front/src/assets/icons/index.js @@ -1,9 +1,9 @@ -import Vue from 'vue' -import SvgIcon from '@/components/SvgIcon'// svg component - -// register globally -Vue.component('svg-icon', SvgIcon) - -const req = require.context('./svg', false, /\.svg$/) -const requireAll = requireContext => requireContext.keys().map(requireContext) -requireAll(req) +import Vue from 'vue' +import SvgIcon from '@/components/SvgIcon'// svg component + +// register globally +Vue.component('svg-icon', SvgIcon) + +const req = require.context('./svg', false, /\.svg$/) +const requireAll = requireContext => requireContext.keys().map(requireContext) +requireAll(req) diff --git a/cutejava-front/src/assets/icons/svg/add.svg b/cutejava-front/src/assets/icons/svg/add.svg index 2ddbd0bf..7c5829a6 100644 --- a/cutejava-front/src/assets/icons/svg/add.svg +++ b/cutejava-front/src/assets/icons/svg/add.svg @@ -1,2 +1,2 @@ -

-_~_o{ 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%0Dux7; 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 diff --git a/cutejava-front/src/assets/images/background.png b/cutejava-front/src/assets/images/background.png new file mode 100644 index 0000000000000000000000000000000000000000..50fd1680d9dcdd63d3b6eb5048b79a689a7386ea GIT binary patch literal 232851 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 z ztZMeWIF_E1_(-?-O>1j+tz+!DQv?nFibWTdhau+Q2admUzrg6_Oxx_6ET0YJE05}! z^PW_BcZR(q3fJby{s!9vAY!HgbW0a#qh?9QdRy(gj!7ptRr**{BaB+3Y^S$6eYY!|xtyU9UZwxjccMzL`?`+gZk8o`6>{ZvYe z?VX(AD&3VHW|3W|Zw=8lr5CUO@^U2O@dX*}a4?I1EO^;mG+i^ocu?H>{m!}Rg6cGJ zLICAS8oy7+BHPut=#8N%+WsyW1cM6jxXHHdrj3v5`aql|onSCjoeorqd6#qP7tFp%#=SgsYDo;~>MOHFitn_tDXiT(OvS2C=jtXHP?6UoLlJ zSN=kCY8xkKypaclpB}GIvy}}(9(WLf{5tGMtKh;zQ3dEnC)#8 z{hoW0Ouftba|J-99^*QPEx)Zy@`{+bf?Ka&sWM$T+W=t?m$DlB|DJGW0_8lLMMa7h zru=DDz!a~f;2EzzT2BqwrnT1iyi9&nokA8>83!!CcluV2@(nt!`iy*j5+2YR-HK#R zm@DTmI?Bd)7p`BR2Aj80msaz(ps~1_X1j?G&>&<#`*}=9wQTru_(E6kVf&jv?2`D+ zl}!R|cTqXBp2yW5c|dr{1%XUgGIdDOh+ zJkq&(=aE1i3*2%dwouA1PFp^I68nuVDiW)x6onwH4*U`kg2L`|SokYCDATy^wjvx( zcmp?Joxy2b3cWCn<&%@WW|K+cm3~r{OYauKIA)Uc1;3(=kVHyKLav}csc1ako=oA~ zJ?S3xSZ8g%S46kBV&)esNrr>;BzV<2L!YGW=AYXNE&qd73Ve7mr`1j_0SYQrQ$8hX z-J-c^db4Tr7Wge_E(luIgHK#BMn0iZ`(&1~*apamAO{B?;KjAkHc6FQG8<^Lm%12@ zz|^j}uU(P-To;Vzm}v3hVyjK1w0Le|0OF=6-l74Oo{Ue@Nkm8=(iPDu{nh`Ep<

IF-W-&ypd;lcYLkDOd!oCT3k#f;8pdTdi_ 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

7}d7DMvsL5{= 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�o|zBXn2&^yY{`T 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

~sjRe$N4m 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 literal 0 HcmV?d00001 diff --git a/cutejava-front/src/assets/styles/btn.scss b/cutejava-front/src/assets/styles/btn.scss index 8f47f2c0..f8103d09 100644 --- a/cutejava-front/src/assets/styles/btn.scss +++ b/cutejava-front/src/assets/styles/btn.scss @@ -1,99 +1,99 @@ -@import 'variables'; - -@mixin colorBtn($color) { - background: $color; - - &:hover { - color: $color; - - &:before, - &:after { - background: $color; - } - } -} - -.blue-btn { - @include colorBtn($blue) -} - -.light-blue-btn { - @include colorBtn($light-blue) -} - -.red-btn { - @include colorBtn($red) -} - -.pink-btn { - @include colorBtn($pink) -} - -.green-btn { - @include colorBtn($green) -} - -.tiffany-btn { - @include colorBtn($tiffany) -} - -.yellow-btn { - @include colorBtn($yellow) -} - -.pan-btn { - font-size: 14px; - color: #fff; - padding: 14px 36px; - border-radius: 8px; - border: none; - outline: none; - transition: 600ms ease all; - position: relative; - display: inline-block; - - &:hover { - background: #fff; - - &:before, - &:after { - width: 100%; - transition: 600ms ease all; - } - } - - &:before, - &:after { - content: ''; - position: absolute; - top: 0; - right: 0; - height: 2px; - width: 0; - transition: 400ms ease all; - } - - &::after { - right: inherit; - top: inherit; - left: 0; - bottom: 0; - } -} - -.custom-button { - display: inline-block; - line-height: 1; - white-space: nowrap; - cursor: pointer; - background: #fff; - color: #fff; - -webkit-appearance: none; - text-align: center; - box-sizing: border-box; - outline: 0; - margin: 0; - padding: 10px 15px; - font-size: 14px; - border-radius: 4px; -} +@import 'variables'; + +@mixin colorBtn($color) { + background: $color; + + &:hover { + color: $color; + + &:before, + &:after { + background: $color; + } + } +} + +.blue-btn { + @include colorBtn($blue) +} + +.light-blue-btn { + @include colorBtn($light-blue) +} + +.red-btn { + @include colorBtn($red) +} + +.pink-btn { + @include colorBtn($pink) +} + +.green-btn { + @include colorBtn($green) +} + +.tiffany-btn { + @include colorBtn($tiffany) +} + +.yellow-btn { + @include colorBtn($yellow) +} + +.pan-btn { + font-size: 14px; + color: #fff; + padding: 14px 36px; + border-radius: 8px; + border: none; + outline: none; + transition: 600ms ease all; + position: relative; + display: inline-block; + + &:hover { + background: #fff; + + &:before, + &:after { + width: 100%; + transition: 600ms ease all; + } + } + + &:before, + &:after { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 2px; + width: 0; + transition: 400ms ease all; + } + + &::after { + right: inherit; + top: inherit; + left: 0; + bottom: 0; + } +} + +.custom-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + color: #fff; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: 0; + margin: 0; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} diff --git a/cutejava-front/src/assets/styles/cutejava.scss b/cutejava-front/src/assets/styles/cutejava.scss index b9ae18da..4c73441d 100644 --- a/cutejava-front/src/assets/styles/cutejava.scss +++ b/cutejava-front/src/assets/styles/cutejava.scss @@ -1,117 +1,117 @@ -.head-container { - padding-bottom: 10px; - .filter-item { - display: inline-block; - vertical-align: middle; - margin: 0 3px 10px 0; - input { - height: 30.5px; - line-height: 30.5px; - } - } - .el-form-item-label { - margin: 0 3px 9px 0; - display: inline-block; - text-align: right; - vertical-align: middle; - font-size: 14px; - color: #606266; - line-height: 30.5px; - padding: 0 7px 0 7px; - } - .el-button+.el-button { - margin-left: 0 !important; - } - .el-select__caret.el-input__icon.el-icon-arrow-up{ - line-height: 30.5px; - } - .date-item { - display: inline-block; - vertical-align: middle; - margin-bottom: 10px; - height: 30.5px !important; - width: 230px !important; - } -} -.el-avatar { - display: inline-block; - text-align: center; - background: #ccc; - color: #fff; - white-space: nowrap; - position: relative; - overflow: hidden; - vertical-align: middle; - width: 32px; - height: 32px; - line-height: 32px; - border-radius: 16px; -} - -.logo-con{ - height: 60px; - padding: 13px 0 0; - img{ - height: 32px; - width: 135px; - display: block; - //margin: 0 auto; - } -} - -#el-login-footer { - height: 40px; - line-height: 40px; - position: fixed; - bottom: 0; - width: 100%; - text-align: center; - color: #fff; - font-family: Arial, serif; - font-size: 12px; - letter-spacing: 1px; -} - -#el-main-footer { - background: none repeat scroll 0 0 white; - border-top: 1px solid #e7eaec; - overflow: hidden; - padding: 10px 6px 0 6px; - height: 33px; - font-size: 0.7rem !important; - color: #7a8b9a; - letter-spacing: 0.8px; - font-family: Arial, sans-serif !important; - position: fixed; - bottom: 0; - z-index: 99; - width: 100%; -} -.my-upload { - border: 1px dashed #c0ccda; - border-radius: 5px; - height: 45px; - line-height: 45px; - width: 368px; -} -.my-blockquote{ - margin: 0 0 10px; - padding: 15px; - line-height: 22px; - border-left: 5px solid #00437B; - border-radius: 0 2px 2px 0; - background-color: #f2f2f2; -} -.my-code{ - position: relative; - padding: 15px; - line-height: 20px; - border-left: 5px solid #ddd; - color: #333; - font-family: Courier New, serif; - font-size: 12px -} - -.el-tabs{ - margin-bottom: 25px; -} +.head-container { + padding-bottom: 10px; + .filter-item { + display: inline-block; + vertical-align: middle; + margin: 0 3px 10px 0; + input { + height: 30.5px; + line-height: 30.5px; + } + } + .el-form-item-label { + margin: 0 3px 9px 0; + display: inline-block; + text-align: right; + vertical-align: middle; + font-size: 14px; + color: #606266; + line-height: 30.5px; + padding: 0 7px 0 7px; + } + .el-button+.el-button { + margin-left: 0 !important; + } + .el-select__caret.el-input__icon.el-icon-arrow-up{ + line-height: 30.5px; + } + .date-item { + display: inline-block; + vertical-align: middle; + margin-bottom: 10px; + height: 30.5px !important; + width: 230px !important; + } +} +.el-avatar { + display: inline-block; + text-align: center; + background: #ccc; + color: #fff; + white-space: nowrap; + position: relative; + overflow: hidden; + vertical-align: middle; + width: 32px; + height: 32px; + line-height: 32px; + border-radius: 16px; +} + +.logo-con{ + height: 60px; + padding: 13px 0 0; + img{ + height: 32px; + width: 135px; + display: block; + //margin: 0 auto; + } +} + +#el-login-footer { + height: 40px; + line-height: 40px; + position: fixed; + bottom: 0; + width: 100%; + text-align: center; + color: #fff; + font-family: Arial, serif; + font-size: 12px; + letter-spacing: 1px; +} + +#el-main-footer { + background: none repeat scroll 0 0 white; + border-top: 1px solid #e7eaec; + overflow: hidden; + padding: 10px 6px 0 6px; + height: 33px; + font-size: 0.7rem !important; + color: #7a8b9a; + letter-spacing: 0.8px; + font-family: Arial, sans-serif !important; + position: fixed; + bottom: 0; + z-index: 99; + width: 100%; +} +.my-upload { + border: 1px dashed #c0ccda; + border-radius: 5px; + height: 45px; + line-height: 45px; + width: 368px; +} +.my-blockquote{ + margin: 0 0 10px; + padding: 15px; + line-height: 22px; + border-left: 5px solid #00437B; + border-radius: 0 2px 2px 0; + background-color: #f2f2f2; +} +.my-code{ + position: relative; + padding: 15px; + line-height: 20px; + border-left: 5px solid #ddd; + color: #333; + font-family: Courier New, serif; + font-size: 12px +} + +.el-tabs{ + margin-bottom: 25px; +} diff --git a/cutejava-front/src/assets/styles/element-ui.scss b/cutejava-front/src/assets/styles/element-ui.scss index 8f7881c2..2f2653c4 100644 --- a/cutejava-front/src/assets/styles/element-ui.scss +++ b/cutejava-front/src/assets/styles/element-ui.scss @@ -1,79 +1,79 @@ -// cover some element-ui styles - -.el-breadcrumb__inner, -.el-breadcrumb__inner a { - font-weight: 400 !important; -} - -.el-upload { - input[type="file"] { - display: none !important; - } -} - -.el-upload__input { - display: none; -} - -.cell { - .el-tag { - margin-right: 0; - } -} - -.small-padding { - .cell { - padding-left: 5px; - padding-right: 5px; - } -} - -.fixed-width { - .el-button--mini { - padding: 7px 10px; - width: 60px; - } -} - -.status-col { - .cell { - padding: 0 10px; - text-align: center; - - .el-tag { - margin-right: 0; - } - } -} - -// to fixed https://github.com/ElemeFE/element/issues/2461 -.el-dialog { - transform: none; - left: 0; - position: relative; - margin: 0 auto; -} - -// refine element ui upload -.upload-container { - .el-upload { - width: 100%; - - .el-upload-dragger { - width: 100%; - height: 200px; - } - } -} - -// dropdown -.el-dropdown-menu { - a { - display: block - } -} - -// fix date-picker ui bug in filter-item -.el-range-editor.el-input__inner { - display: inline-flex !important; -} +// cover some element-ui styles + +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + font-weight: 400 !important; +} + +.el-upload { + input[type="file"] { + display: none !important; + } +} + +.el-upload__input { + display: none; +} + +.cell { + .el-tag { + margin-right: 0; + } +} + +.small-padding { + .cell { + padding-left: 5px; + padding-right: 5px; + } +} + +.fixed-width { + .el-button--mini { + padding: 7px 10px; + width: 60px; + } +} + +.status-col { + .cell { + padding: 0 10px; + text-align: center; + + .el-tag { + margin-right: 0; + } + } +} + +// to fixed https://github.com/ElemeFE/element/issues/2461 +.el-dialog { + transform: none; + left: 0; + position: relative; + margin: 0 auto; +} + +// refine element ui upload +.upload-container { + .el-upload { + width: 100%; + + .el-upload-dragger { + width: 100%; + height: 200px; + } + } +} + +// dropdown +.el-dropdown-menu { + a { + display: block + } +} + +// fix date-picker ui bug in filter-item +.el-range-editor.el-input__inner { + display: inline-flex !important; +} diff --git a/cutejava-front/src/assets/styles/element-variables.scss b/cutejava-front/src/assets/styles/element-variables.scss index a4f8c4af..9a646ff9 100644 --- a/cutejava-front/src/assets/styles/element-variables.scss +++ b/cutejava-front/src/assets/styles/element-variables.scss @@ -1,31 +1,31 @@ -/** -* I think element-ui's default theme color is too light for long-term use. -* So I modified the default color and you can modify it to your liking. -**/ - -/* theme color */ -$--color-primary: #1890ff; -$--color-success: #13ce66; -$--color-warning: #FFBA00; -$--color-danger: #ff4949; -// $--color-info: #1E1E1E; - -$--button-font-weight: 400; - -// $--color-text-regular: #1f2d3d; - -$--border-color-light: #dfe4ed; -$--border-color-lighter: #e6ebf5; - -$--table-border:1px solid#dfe6ec; - -/* icon font path, required */ -$--font-path: '~element-ui/lib/theme-chalk/fonts'; - -@import "../../../node_modules/element-ui/packages/theme-chalk/src/index"; - -// the :export directive is the magic sauce for webpack -// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass -:export { - theme: $--color-primary; -} +/** +* I think element-ui's default theme color is too light for long-term use. +* So I modified the default color and you can modify it to your liking. +**/ + +/* theme color */ +$--color-primary: #1890ff; +$--color-success: #13ce66; +$--color-warning: #FFBA00; +$--color-danger: #ff4949; +// $--color-info: #1E1E1E; + +$--button-font-weight: 400; + +// $--color-text-regular: #1f2d3d; + +$--border-color-light: #dfe4ed; +$--border-color-lighter: #e6ebf5; + +$--table-border:1px solid#dfe6ec; + +/* icon font path, required */ +$--font-path: '~element-ui/lib/theme-chalk/fonts'; + +@import "../../../node_modules/element-ui/packages/theme-chalk/src/index"; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + theme: $--color-primary; +} diff --git a/cutejava-front/src/assets/styles/index.scss b/cutejava-front/src/assets/styles/index.scss index 22cafa35..d19025a1 100644 --- a/cutejava-front/src/assets/styles/index.scss +++ b/cutejava-front/src/assets/styles/index.scss @@ -1,182 +1,182 @@ -@import 'variables'; -@import 'mixin'; -@import 'transition'; -@import 'element-ui'; -@import 'sidebar'; -@import 'btn'; -@import 'cutejava'; - -body { - height: 100%; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; - font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; -} - -label { - font-weight: 700; -} - -html { - height: 100%; - box-sizing: border-box; -} - -#app { - height: 100%; -} - -*, -*:before, -*:after { - box-sizing: inherit; -} - -.no-padding { - padding: 0 !important; -} - -.padding-content { - padding: 4px 0; -} - -a:focus, -a:active { - outline: none; -} - -a, -a:focus, -a:hover { - cursor: pointer; - color: inherit; - text-decoration: none; -} - -div:focus { - outline: none; -} - -.fr { - float: right; -} - -.fl { - float: left; -} - -.pr-5 { - padding-right: 5px; -} - -.pl-5 { - padding-left: 5px; -} - -.block { - display: block; -} - -.pointer { - cursor: pointer; -} - -.inlineBlock { - display: block; -} - -.clearfix { - &:after { - visibility: hidden; - display: block; - font-size: 0; - content: " "; - clear: both; - height: 0; - } -} - -aside { - background: #eef1f6; - padding: 8px 24px; - margin-bottom: 20px; - border-radius: 2px; - display: block; - line-height: 32px; - font-size: 16px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; - color: #2c3e50; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - a { - color: #337ab7; - cursor: pointer; - - &:hover { - color: rgb(32, 160, 255); - } - } -} - -//main-container全局样式 -.app-container { - padding: 20px 20px 45px 20px; -} - -.components-container { - margin: 30px 50px; - position: relative; -} - -.pagination-container { - margin-top: 30px; -} - -.text-center { - text-align: center -} - -.sub-navbar { - height: 50px; - line-height: 50px; - position: relative; - width: 100%; - text-align: right; - padding-right: 20px; - transition: 600ms ease position; - background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%); - - .subtitle { - font-size: 20px; - color: #fff; - } - - &.draft { - background: #d0d0d0; - } - - &.deleted { - background: #d0d0d0; - } -} - -.link-type, -.link-type:focus { - color: #337ab7; - cursor: pointer; - - &:hover { - color: rgb(32, 160, 255); - } -} - -//refine vue-multiselect plugin -.multiselect { - line-height: 16px; -} - -.multiselect--active { - z-index: 1000 !important; -} +@import 'variables'; +@import 'mixin'; +@import 'transition'; +@import 'element-ui'; +@import 'sidebar'; +@import 'btn'; +@import 'cutejava'; + +body { + height: 100%; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; +} + +label { + font-weight: 700; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + height: 100%; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +.no-padding { + padding: 0 !important; +} + +.padding-content { + padding: 4px 0; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.fr { + float: right; +} + +.fl { + float: left; +} + +.pr-5 { + padding-right: 5px; +} + +.pl-5 { + padding-left: 5px; +} + +.block { + display: block; +} + +.pointer { + cursor: pointer; +} + +.inlineBlock { + display: block; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} + +aside { + background: #eef1f6; + padding: 8px 24px; + margin-bottom: 20px; + border-radius: 2px; + display: block; + line-height: 32px; + font-size: 16px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + color: #2c3e50; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + a { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } + } +} + +//main-container全局样式 +.app-container { + padding: 20px 20px 45px 20px; +} + +.components-container { + margin: 30px 50px; + position: relative; +} + +.pagination-container { + margin-top: 30px; +} + +.text-center { + text-align: center +} + +.sub-navbar { + height: 50px; + line-height: 50px; + position: relative; + width: 100%; + text-align: right; + padding-right: 20px; + transition: 600ms ease position; + background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%); + + .subtitle { + font-size: 20px; + color: #fff; + } + + &.draft { + background: #d0d0d0; + } + + &.deleted { + background: #d0d0d0; + } +} + +.link-type, +.link-type:focus { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } +} + +//refine vue-multiselect plugin +.multiselect { + line-height: 16px; +} + +.multiselect--active { + z-index: 1000 !important; +} diff --git a/cutejava-front/src/assets/styles/mixin.scss b/cutejava-front/src/assets/styles/mixin.scss index 06fa0612..64d9cf6f 100644 --- a/cutejava-front/src/assets/styles/mixin.scss +++ b/cutejava-front/src/assets/styles/mixin.scss @@ -1,66 +1,66 @@ -@mixin clearfix { - &:after { - content: ""; - display: table; - clear: both; - } -} - -@mixin scrollBar { - &::-webkit-scrollbar-track-piece { - background: #d3dce6; - } - - &::-webkit-scrollbar { - width: 6px; - } - - &::-webkit-scrollbar-thumb { - background: #99a9bf; - border-radius: 20px; - } -} - -@mixin relative { - position: relative; - width: 100%; - height: 100%; -} - -@mixin pct($pct) { - width: #{$pct}; - position: relative; - margin: 0 auto; -} - -@mixin triangle($width, $height, $color, $direction) { - $width: $width/2; - $color-border-style: $height solid $color; - $transparent-border-style: $width solid transparent; - height: 0; - width: 0; - - @if $direction==up { - border-bottom: $color-border-style; - border-left: $transparent-border-style; - border-right: $transparent-border-style; - } - - @else if $direction==right { - border-left: $color-border-style; - border-top: $transparent-border-style; - border-bottom: $transparent-border-style; - } - - @else if $direction==down { - border-top: $color-border-style; - border-left: $transparent-border-style; - border-right: $transparent-border-style; - } - - @else if $direction==left { - border-right: $color-border-style; - border-top: $transparent-border-style; - border-bottom: $transparent-border-style; - } -} +@mixin clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} + +@mixin scrollBar { + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } +} + +@mixin relative { + position: relative; + width: 100%; + height: 100%; +} + +@mixin pct($pct) { + width: #{$pct}; + position: relative; + margin: 0 auto; +} + +@mixin triangle($width, $height, $color, $direction) { + $width: $width/2; + $color-border-style: $height solid $color; + $transparent-border-style: $width solid transparent; + height: 0; + width: 0; + + @if $direction==up { + border-bottom: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==right { + border-left: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } + + @else if $direction==down { + border-top: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==left { + border-right: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } +} diff --git a/cutejava-front/src/assets/styles/sidebar.scss b/cutejava-front/src/assets/styles/sidebar.scss index 17381fcf..7f62c5d9 100644 --- a/cutejava-front/src/assets/styles/sidebar.scss +++ b/cutejava-front/src/assets/styles/sidebar.scss @@ -1,209 +1,209 @@ -#app { - - .main-container { - min-height: 100%; - transition: margin-left .28s; - margin-left: $sideBarWidth; - position: relative; - } - - .sidebar-container { - transition: width 0.28s; - width: $sideBarWidth !important; - background-color: $menuBg; - height: 100%; - position: fixed; - font-size: 0; - top: 0; - bottom: 0; - left: 0; - z-index: 1001; - overflow: hidden; - - // reset element-ui css - .horizontal-collapse-transition { - transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; - } - - .scrollbar-wrapper { - overflow-x: hidden !important; - } - - .el-scrollbar__bar.is-vertical { - right: 0; - } - - .el-scrollbar { - height: 100%; - } - - &.has-logo { - .el-scrollbar { - height: calc(100% - 50px); - } - } - - .is-horizontal { - display: none; - } - - a { - display: inline-block; - width: 100%; - overflow: hidden; - } - - .svg-icon { - margin-right: 16px; - } - - .el-menu { - border: none; - height: 100%; - width: 100% !important; - } - - // menu hover - .submenu-title-noDropdown, - .el-submenu__title { - &:hover { - background-color: $menuHover !important; - } - } - - .is-active>.el-submenu__title { - color: $subMenuActiveText !important; - } - - & .nest-menu .el-submenu>.el-submenu__title, - & .el-submenu .el-menu-item { - min-width: $sideBarWidth !important; - background-color: $subMenuBg !important; - - &:hover { - background-color: $subMenuHover !important; - } - } - } - - .hideSidebar { - .sidebar-container { - width: 54px !important; - } - - .main-container { - margin-left: 54px; - } - - .submenu-title-noDropdown { - padding: 0 !important; - position: relative; - - .el-tooltip { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - } - } - - .el-submenu { - overflow: hidden; - - &>.el-submenu__title { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - - .el-submenu__icon-arrow { - display: none; - } - } - } - - .el-menu--collapse { - .el-submenu { - &>.el-submenu__title { - &>span { - height: 0; - width: 0; - overflow: hidden; - visibility: hidden; - display: inline-block; - } - } - } - } - } - - .el-menu--collapse .el-menu .el-submenu { - min-width: $sideBarWidth !important; - } - - // mobile responsive - .mobile { - .main-container { - margin-left: 0; - } - - .sidebar-container { - transition: transform .28s; - width: $sideBarWidth !important; - } - - &.hideSidebar { - .sidebar-container { - pointer-events: none; - transition-duration: 0.3s; - transform: translate3d(-$sideBarWidth, 0, 0); - } - } - } - - .withoutAnimation { - - .main-container, - .sidebar-container { - transition: none; - } - } -} - -// when menu collapsed -.el-menu--vertical { - &>.el-menu { - .svg-icon { - margin-right: 16px; - } - } - - .nest-menu .el-submenu>.el-submenu__title, - .el-menu-item { - &:hover { - // you can use $subMenuHover - background-color: $menuHover !important; - } - } - - // the scroll bar appears when the subMenu is too long - >.el-menu--popup { - max-height: 100vh; - overflow-y: auto; - - &::-webkit-scrollbar-track-piece { - background: #d3dce6; - } - - &::-webkit-scrollbar { - width: 6px; - } - - &::-webkit-scrollbar-thumb { - background: #99a9bf; - border-radius: 20px; - } - } -} +#app { + + .main-container { + min-height: 100%; + transition: margin-left .28s; + margin-left: $sideBarWidth; + position: relative; + } + + .sidebar-container { + transition: width 0.28s; + width: $sideBarWidth !important; + background-color: $menuBg; + height: 100%; + position: fixed; + font-size: 0; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; + overflow: hidden; + + // reset element-ui css + .horizontal-collapse-transition { + transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + a { + display: inline-block; + width: 100%; + overflow: hidden; + } + + .svg-icon { + margin-right: 16px; + } + + .el-menu { + border: none; + height: 100%; + width: 100% !important; + } + + // menu hover + .submenu-title-noDropdown, + .el-submenu__title { + &:hover { + background-color: $menuHover !important; + } + } + + .is-active>.el-submenu__title { + color: $subMenuActiveText !important; + } + + & .nest-menu .el-submenu>.el-submenu__title, + & .el-submenu .el-menu-item { + min-width: $sideBarWidth !important; + background-color: $subMenuBg !important; + + &:hover { + background-color: $subMenuHover !important; + } + } + } + + .hideSidebar { + .sidebar-container { + width: 54px !important; + } + + .main-container { + margin-left: 54px; + } + + .submenu-title-noDropdown { + padding: 0 !important; + position: relative; + + .el-tooltip { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + } + } + + .el-submenu { + overflow: hidden; + + &>.el-submenu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .el-submenu__icon-arrow { + display: none; + } + } + } + + .el-menu--collapse { + .el-submenu { + &>.el-submenu__title { + &>span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + } + } + } + } + + .el-menu--collapse .el-menu .el-submenu { + min-width: $sideBarWidth !important; + } + + // mobile responsive + .mobile { + .main-container { + margin-left: 0; + } + + .sidebar-container { + transition: transform .28s; + width: $sideBarWidth !important; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + transform: translate3d(-$sideBarWidth, 0, 0); + } + } + } + + .withoutAnimation { + + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// when menu collapsed +.el-menu--vertical { + &>.el-menu { + .svg-icon { + margin-right: 16px; + } + } + + .nest-menu .el-submenu>.el-submenu__title, + .el-menu-item { + &:hover { + // you can use $subMenuHover + background-color: $menuHover !important; + } + } + + // the scroll bar appears when the subMenu is too long + >.el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/cutejava-front/src/assets/styles/transition.scss b/cutejava-front/src/assets/styles/transition.scss index 4cb27cc8..25e7e181 100644 --- a/cutejava-front/src/assets/styles/transition.scss +++ b/cutejava-front/src/assets/styles/transition.scss @@ -1,48 +1,48 @@ -// global transition css - -/* fade */ -.fade-enter-active, -.fade-leave-active { - transition: opacity 0.28s; -} - -.fade-enter, -.fade-leave-active { - opacity: 0; -} - -/* fade-transform */ -.fade-transform-leave-active, -.fade-transform-enter-active { - transition: all .5s; -} - -.fade-transform-enter { - opacity: 0; - transform: translateX(-30px); -} - -.fade-transform-leave-to { - opacity: 0; - transform: translateX(30px); -} - -/* breadcrumb transition */ -.breadcrumb-enter-active, -.breadcrumb-leave-active { - transition: all .5s; -} - -.breadcrumb-enter, -.breadcrumb-leave-active { - opacity: 0; - transform: translateX(20px); -} - -.breadcrumb-move { - transition: all .5s; -} - -.breadcrumb-leave-active { - position: absolute; -} +// global transition css + +/* fade */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.28s; +} + +.fade-enter, +.fade-leave-active { + opacity: 0; +} + +/* fade-transform */ +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all .5s; +} + +.fade-transform-enter { + opacity: 0; + transform: translateX(-30px); +} + +.fade-transform-leave-to { + opacity: 0; + transform: translateX(30px); +} + +/* breadcrumb transition */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all .5s; +} + +.breadcrumb-enter, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} + +.breadcrumb-move { + transition: all .5s; +} + +.breadcrumb-leave-active { + position: absolute; +} diff --git a/cutejava-front/src/assets/styles/variables.scss b/cutejava-front/src/assets/styles/variables.scss index bbe7eeeb..4fdb9ee7 100644 --- a/cutejava-front/src/assets/styles/variables.scss +++ b/cutejava-front/src/assets/styles/variables.scss @@ -1,36 +1,36 @@ -// base color -$blue:#324157; -$light-blue:#3A71A8; -$red:#C03639; -$pink: #E65D6E; -$green: #30B08F; -$tiffany: #4AB7BD; -$yellow:#FEC171; -$panGreen: #30B08F; - -// sidebar -$menuText:#bfcbd9; -$menuActiveText:#409EFF; -$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951 - -$menuBg:#304156; -$menuHover:#263445; - -$subMenuBg:#1f2d3d; -$subMenuHover:#001528; - -// 左侧菜单栏宽度 -$sideBarWidth: 250px; - -// the :export directive is the magic sauce for webpack -// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass -:export { - menuText: $menuText; - menuActiveText: $menuActiveText; - subMenuActiveText: $subMenuActiveText; - menuBg: $menuBg; - menuHover: $menuHover; - subMenuBg: $subMenuBg; - subMenuHover: $subMenuHover; - sideBarWidth: $sideBarWidth; -} +// base color +$blue:#324157; +$light-blue:#3A71A8; +$red:#C03639; +$pink: #E65D6E; +$green: #30B08F; +$tiffany: #4AB7BD; +$yellow:#FEC171; +$panGreen: #30B08F; + +// sidebar +$menuText:#bfcbd9; +$menuActiveText:#409EFF; +$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951 + +$menuBg:#304156; +$menuHover:#263445; + +$subMenuBg:#1f2d3d; +$subMenuHover:#001528; + +// 左侧菜单栏宽度 +$sideBarWidth: 250px; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + menuText: $menuText; + menuActiveText: $menuActiveText; + subMenuActiveText: $subMenuActiveText; + menuBg: $menuBg; + menuHover: $menuHover; + subMenuBg: $subMenuBg; + subMenuHover: $subMenuHover; + sideBarWidth: $sideBarWidth; +} diff --git a/cutejava-front/src/components/Breadcrumb/index.vue b/cutejava-front/src/components/Breadcrumb/index.vue index 219f0942..0f47a93e 100644 --- a/cutejava-front/src/components/Breadcrumb/index.vue +++ b/cutejava-front/src/components/Breadcrumb/index.vue @@ -1,84 +1,84 @@ - - - - - + + + + + diff --git a/cutejava-front/src/components/Crud/CRUD.operation.vue b/cutejava-front/src/components/Crud/CRUD.operation.vue index 87c4ebec..c33346fc 100644 --- a/cutejava-front/src/components/Crud/CRUD.operation.vue +++ b/cutejava-front/src/components/Crud/CRUD.operation.vue @@ -1,276 +1,276 @@ - - - - + + + + diff --git a/cutejava-front/src/components/Crud/Pagination.vue b/cutejava-front/src/components/Crud/Pagination.vue index 0cf3873e..82638d3a 100644 --- a/cutejava-front/src/components/Crud/Pagination.vue +++ b/cutejava-front/src/components/Crud/Pagination.vue @@ -1,19 +1,19 @@ - - - + + + diff --git a/cutejava-front/src/components/Crud/RR.operation.vue b/cutejava-front/src/components/Crud/RR.operation.vue index 1b8107b3..d25070b5 100644 --- a/cutejava-front/src/components/Crud/RR.operation.vue +++ b/cutejava-front/src/components/Crud/RR.operation.vue @@ -1,34 +1,34 @@ - - - + + + diff --git a/cutejava-front/src/components/Crud/UD.operation.vue b/cutejava-front/src/components/Crud/UD.operation.vue index ee40ee70..b41baf95 100644 --- a/cutejava-front/src/components/Crud/UD.operation.vue +++ b/cutejava-front/src/components/Crud/UD.operation.vue @@ -1,100 +1,101 @@ - - + + diff --git a/cutejava-front/src/components/Crud/crud.js b/cutejava-front/src/components/Crud/crud.js index f0eed075..5350fd85 100644 --- a/cutejava-front/src/components/Crud/crud.js +++ b/cutejava-front/src/components/Crud/crud.js @@ -1,873 +1,873 @@ -import { download, initData } from '@/api/data' -import Vue from 'vue' -import { DownloadFile } from '@/utils/CsDomUtil' - -/** - * CRUD配置 - * @author moxun - * @param {*} options
- * @return crud instance. - * @example - * 要使用多crud时,请在关联crud的组件处使用crud-tag进行标记,如: - */ -function CRUD(options) { - const defaultOptions = { - tag: 'default', - // id字段名 - idField: 'id', - // 标题 - title: '', - // 请求数据的url - url: '', - // 表格数据 - data: [], - // 选择项 - selections: [], - // 待查询的对象 - query: {}, - // 查询数据的参数 - params: {}, - // Form 表单 - form: {}, - // 重置表单 - defaultForm: () => { - }, - // 等待时间 - time: 50, - // CRUD Method - crudMethod: { - add: (form) => { - }, - del: (id) => { - }, - edit: (form) => { - }, - get: (id) => { - } - }, - // 主页操作栏显示哪些按钮 - optShow: { - add: true, - edit: true, - del: true, - download: true, - reset: true - }, - // 自定义一些扩展属性 - props: {}, - // 在主页准备 - queryOnPresenterCreated: true, - // 调试开关 - debug: false - } - options = mergeOptions(defaultOptions, options) - const data = { - ...options, - // 记录数据状态 - dataStatus: {}, - status: { - add: CRUD.STATUS.NORMAL, - edit: CRUD.STATUS.NORMAL, - // 添加或编辑状态 - get cu() { - if (this.add === CRUD.STATUS.NORMAL && this.edit === CRUD.STATUS.NORMAL) { - return CRUD.STATUS.NORMAL - } else if (this.add === CRUD.STATUS.PREPARED || this.edit === CRUD.STATUS.PREPARED) { - return CRUD.STATUS.PREPARED - } else if (this.add === CRUD.STATUS.PROCESSING || this.edit === CRUD.STATUS.PROCESSING) { - return CRUD.STATUS.PROCESSING - } - throw new Error('wrong crud\'s cu status') - }, - // 标题 - get title() { - return this.add > CRUD.STATUS.NORMAL ? `新增${crud.title}` : this.edit > CRUD.STATUS.NORMAL ? `编辑${crud.title}` : crud.title - } - }, - msg: { - submit: '提交成功', - add: '新增成功', - edit: '编辑成功', - del: '删除成功' - }, - page: { - // 页码 - page: 1, - // 每页数据条数 - size: 10, - // 总数据条数 - total: 0 - }, - // 整体loading - loading: false, - // 导出的 Loading - downloadLoading: false, - // 删除的 Loading - delAllLoading: false - } - const methods = { - /** - * 通用的提示 - */ - submitSuccessNotify() { - crud.notify(crud.msg.submit, CRUD.NOTIFICATION_TYPE.SUCCESS) - }, - addSuccessNotify() { - crud.notify(crud.msg.add, CRUD.NOTIFICATION_TYPE.SUCCESS) - }, - editSuccessNotify() { - crud.notify(crud.msg.edit, CRUD.NOTIFICATION_TYPE.SUCCESS) - }, - delSuccessNotify() { - crud.notify(crud.msg.del, CRUD.NOTIFICATION_TYPE.SUCCESS) - }, - // 搜索 - toQuery() { - crud.page.page = 1 - crud.refresh() - }, - // 刷新 - refresh() { - if (!callVmHook(crud, CRUD.HOOK.beforeRefresh)) { - return - } - return new Promise((resolve, reject) => { - crud.loading = true - // 请求数据 - initData(crud.url, crud.getQueryParams()).then(data => { - const table = crud.getTable() - if (table && table.lazy) { // 懒加载子节点数据,清掉已加载的数据 - table.store.states.treeData = {} - table.store.states.lazyTreeNodeMap = {} - } - crud.page.total = data.totalElements - crud.data = data.content - crud.resetDataStatus() - // time 毫秒后显示表格 - setTimeout(() => { - crud.loading = false - callVmHook(crud, CRUD.HOOK.afterRefresh) - }, crud.time) - resolve(data) - }).catch(err => { - crud.loading = false - reject(err) - }) - }) - }, - /** - * 启动添加 - */ - toAdd() { - crud.resetForm() - if (!(callVmHook(crud, CRUD.HOOK.beforeToAdd, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) { - return - } - crud.status.add = CRUD.STATUS.PREPARED - callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form) - callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) - }, - /** - * 启动编辑 - * @param {*} data 数据项 - */ - toEdit(data) { - crud.resetForm(JSON.parse(JSON.stringify(data))) - if (!(callVmHook(crud, CRUD.HOOK.beforeToEdit, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) { - return - } - crud.status.edit = CRUD.STATUS.PREPARED - crud.getDataStatus(crud.getDataId(data)).edit = CRUD.STATUS.PREPARED - callVmHook(crud, CRUD.HOOK.afterToEdit, crud.form) - callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) - }, - /** - * 启动删除 - * @param {*} data 数据项 - */ - toDelete(data) { - crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.PREPARED - }, - /** - * 取消删除 - * @param {*} data 数据项 - */ - cancelDelete(data) { - if (!callVmHook(crud, CRUD.HOOK.beforeDeleteCancel, data)) { - return - } - crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.NORMAL - callVmHook(crud, CRUD.HOOK.afterDeleteCancel, data) - }, - /** - * 取消新增/编辑 - */ - cancelCU() { - const addStatus = crud.status.add - const editStatus = crud.status.edit - if (addStatus === CRUD.STATUS.PREPARED) { - if (!callVmHook(crud, CRUD.HOOK.beforeAddCancel, crud.form)) { - return - } - crud.status.add = CRUD.STATUS.NORMAL - } - if (editStatus === CRUD.STATUS.PREPARED) { - if (!callVmHook(crud, CRUD.HOOK.beforeEditCancel, crud.form)) { - return - } - crud.status.edit = CRUD.STATUS.NORMAL - crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL - } - crud.resetForm() - if (addStatus === CRUD.STATUS.PREPARED) { - callVmHook(crud, CRUD.HOOK.afterAddCancel, crud.form) - } - if (editStatus === CRUD.STATUS.PREPARED) { - callVmHook(crud, CRUD.HOOK.afterEditCancel, crud.form) - } - // 清除表单验证 - if (crud.findVM('form').$refs['form']) { - crud.findVM('form').$refs['form'].clearValidate() - } - }, - /** - * 提交新增/编辑 - */ - submitCU() { - if (!callVmHook(crud, CRUD.HOOK.beforeValidateCU)) { - return - } - crud.findVM('form').$refs['form'].validate(valid => { - if (!valid) { - return - } - if (!callVmHook(crud, CRUD.HOOK.afterValidateCU)) { - return - } - if (crud.status.add === CRUD.STATUS.PREPARED) { - crud.doAdd() - } else if (crud.status.edit === CRUD.STATUS.PREPARED) { - crud.doEdit() - } - }) - }, - /** - * 执行添加 - */ - doAdd() { - if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) { - return - } - crud.status.add = CRUD.STATUS.PROCESSING - crud.crudMethod.add(crud.form).then(() => { - crud.status.add = CRUD.STATUS.NORMAL - crud.resetForm() - crud.addSuccessNotify() - callVmHook(crud, CRUD.HOOK.afterSubmit) - crud.toQuery() - }).catch(() => { - crud.status.add = CRUD.STATUS.PREPARED - callVmHook(crud, CRUD.HOOK.afterAddError) - }) - }, - /** - * 执行编辑 - */ - doEdit() { - if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) { - return - } - crud.status.edit = CRUD.STATUS.PROCESSING - crud.crudMethod.edit(crud.form).then(() => { - crud.status.edit = CRUD.STATUS.NORMAL - crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL - crud.editSuccessNotify() - crud.resetForm() - callVmHook(crud, CRUD.HOOK.afterSubmit) - crud.refresh() - }).catch(() => { - crud.status.edit = CRUD.STATUS.PREPARED - callVmHook(crud, CRUD.HOOK.afterEditError) - }) - }, - /** - * 执行删除 - * @param {*} data 数据项 - */ - doDelete(data) { - let delAll = false - let dataStatus - const ids = [] - if (data instanceof Array) { - delAll = true - data.forEach(val => { - ids.push(this.getDataId(val)) - }) - } else { - ids.push(this.getDataId(data)) - dataStatus = crud.getDataStatus(this.getDataId(data)) - } - if (!callVmHook(crud, CRUD.HOOK.beforeDelete, data)) { - return - } - if (!delAll) { - dataStatus.delete = CRUD.STATUS.PROCESSING - } - return crud.crudMethod.del(ids).then(() => { - if (delAll) { - crud.delAllLoading = false - } else dataStatus.delete = CRUD.STATUS.PREPARED - crud.dleChangePage(1) - crud.delSuccessNotify() - callVmHook(crud, CRUD.HOOK.afterDelete, data) - crud.refresh() - }).catch(() => { - if (delAll) { - crud.delAllLoading = false - } else dataStatus.delete = CRUD.STATUS.PREPARED - }) - }, - /** - * 通用导出 - */ - doExport() { - crud.downloadLoading = true - download(crud.url + '/download', crud.getQueryParams()).then(result => { - DownloadFile(result, crud.title + '数据', 'xlsx') - crud.downloadLoading = false - }).catch(() => { - crud.downloadLoading = false - }) - }, - /** - * 获取查询参数 - */ - getQueryParams: function() { - // 清除参数无值的情况 - Object.keys(crud.query).length !== 0 && Object.keys(crud.query).forEach(item => { - if (crud.query[item] === null || crud.query[item] === '') crud.query[item] = undefined - }) - Object.keys(crud.params).length !== 0 && Object.keys(crud.params).forEach(item => { - if (crud.params[item] === null || crud.params[item] === '') crud.params[item] = undefined - }) - return { - page: crud.page.page, - size: crud.page.size, - args: { - ...crud.query, - ...crud.params - } - } - }, - // 当前页改变 - pageChangeHandler(e) { - crud.page.page = e - crud.refresh() - }, - // 每页条数改变 - sizeChangeHandler(e) { - crud.page.size = e - crud.page.page = 1 - crud.refresh() - }, - // 预防删除第二页最后一条数据时,或者多选删除第二页的数据时,页码错误导致请求无数据 - dleChangePage(size) { - if (crud.data.length === size && crud.page.page !== 1) { - crud.page.page -= 1 - } - }, - // 选择改变 - selectionChangeHandler(val) { - crud.selections = val - }, - /** - * 重置查询参数 - * @param {Boolean} toQuery 重置后进行查询操作 - */ - resetQuery(toQuery = true) { - const defaultQuery = JSON.parse(JSON.stringify(crud.defaultQuery)) - const query = crud.query - Object.keys(query).forEach(key => { - query[key] = defaultQuery[key] - }) - // 重置参数 - this.params = {} - if (toQuery) { - crud.toQuery() - } - }, - /** - * 重置表单 - * @param {Array} data 数据 - */ - resetForm(data) { - delete crud.form['createTime'] - delete crud.form['updateTime'] - delete crud.form['createBy'] - delete crud.form['updateBy'] - const form = data || (typeof crud.defaultForm === 'object' ? JSON.parse(JSON.stringify(crud.defaultForm)) : crud.defaultForm.apply(crud.findVM('form'))) - const crudFrom = crud.form - for (const key in form) { - if (crudFrom.hasOwnProperty(key)) { - crudFrom[key] = form[key] - } else { - Vue.set(crudFrom, key, form[key]) - } - } - // add by ghl 2020-10-04 页面重复添加信息时,下拉框的校验会存在,需要找工取消 - if (crud.findVM('form').$refs['form']) { - crud.findVM('form').$refs['form'].clearValidate() - } - }, - /** - * 重置数据状态 - */ - resetDataStatus() { - const dataStatus = {} - - function resetStatus(datas) { - datas.forEach(e => { - dataStatus[crud.getDataId(e)] = { - delete: 0, - edit: 0 - } - if (e.children) { - resetStatus(e.children) - } - }) - } - - resetStatus(crud.data) - crud.dataStatus = dataStatus - }, - /** - * 获取数据状态 - * @param {Number | String} id 数据项id - */ - getDataStatus(id) { - return crud.dataStatus[id] - }, - /** - * 用于树形表格多选, 选中所有 - * @param selection - */ - selectAllChange(selection) { - // 如果选中的数目与请求到的数目相同就选中子节点,否则就清空选中 - if (selection && selection.length === crud.data.length) { - selection.forEach(val => { - crud.selectChange(selection, val) - }) - } else { - crud.getTable().clearSelection() - } - }, - /** - * 用于树形表格多选,单选的封装 - * @param selection - * @param row - */ - selectChange(selection, row) { - // 如果selection中存在row代表是选中,否则是取消选中 - if (selection.find(val => { - return crud.getDataId(val) === crud.getDataId(row) - })) { - if (row.children) { - row.children.forEach(val => { - crud.getTable().toggleRowSelection(val, true) - selection.push(val) - if (val.children) { - crud.selectChange(selection, val) - } - }) - } - } else { - crud.toggleRowSelection(selection, row) - } - }, - /** - * 切换选中状态 - * @param selection - * @param data - */ - toggleRowSelection(selection, data) { - if (data.children) { - data.children.forEach(val => { - selection.splice(selection.findIndex(item => this.getDataId(item) === this.getDataId(val)), 1) - crud.getTable().toggleRowSelection(val, false) - if (val.children) { - crud.toggleRowSelection(selection, val) - } - }) - } - }, - findVM(type) { - return crud.vms.find(vm => vm && vm.type === type).vm - }, - notify(title, type = CRUD.NOTIFICATION_TYPE.INFO) { - crud.vms[0].vm.$notify({ - title, - type, - duration: 2500 - }) - }, - updateProp(name, value) { - Vue.set(crud.props, name, value) - }, - getDataId(data) { - return data[this.idField] - }, - getTable() { - return this.findVM('presenter').$refs.table - }, - attchTable() { - const table = this.getTable() - this.updateProp('table', table) - const that = this - table.$on('expand-change', (row, expanded) => { - if (!expanded) { - return - } - const lazyTreeNodeMap = table.store.states.lazyTreeNodeMap - row.children = lazyTreeNodeMap[crud.getDataId(row)] - if (row.children) { - row.children.forEach(ele => { - const id = crud.getDataId(ele) - if (that.dataStatus[id] === undefined) { - that.dataStatus[id] = { - delete: 0, - edit: 0 - } - } - }) - } - }) - } - } - const crud = Object.assign({}, data) - // 可观测化 - Vue.observable(crud) - // 附加方法 - Object.assign(crud, methods) - // 记录初始默认的查询参数,后续重置查询时使用 - Object.assign(crud, { - defaultQuery: JSON.parse(JSON.stringify(data.query)), - // 预留4位存储:组件 主页、头部、分页、表单,调试查看也方便找 - vms: Array(4), - /** - * 注册组件实例 - * @param {String} type 类型 - * @param {*} vm 组件实例 - * @param {Number} index 该参数内部使用 - */ - registerVM(type, vm, index = -1) { - const vmObj = { - type, - vm: vm - } - if (index < 0) { - this.vms.push(vmObj) - return - } - if (index < 4) { // 内置预留vm数 - this.vms[index] = vmObj - return - } - this.vms.length = Math.max(this.vms.length, index) - this.vms.splice(index, 1, vmObj) - }, - /** - * 取消注册组件实例 - * @param {*} vm 组件实例 - */ - unregisterVM(type, vm) { - for (let i = this.vms.length - 1; i >= 0; i--) { - if (this.vms[i] === undefined) { - continue - } - if (this.vms[i].type === type && this.vms[i].vm === vm) { - if (i < 4) { // 内置预留vm数 - this.vms[i] = undefined - } else { - this.vms.splice(i, 1) - } - break - } - } - } - }) - // 冻结处理,需要扩展数据的话,使用crud.updateProp(name, value),以crud.props.name形式访问,这个是响应式的,可以做数据绑定 - Object.freeze(crud) - return crud -} - -// hook VM -function callVmHook(crud, hook) { - if (crud.debug) { - console.log('callVmHook: ' + hook) - } - const tagHook = crud.tag ? hook + '$' + crud.tag : null - let ret = true - const nargs = [crud] - for (let i = 2; i < arguments.length; ++i) { - nargs.push(arguments[i]) - } - // 有些组件扮演了多个角色,调用钩子时,需要去重 - const vmSet = new Set() - crud.vms.forEach(vm => vm && vmSet.add(vm.vm)) - vmSet.forEach(vm => { - if (vm[hook]) { - ret = vm[hook].apply(vm, nargs) !== false && ret - } - if (tagHook && vm[tagHook]) { - ret = vm[tagHook].apply(vm, nargs) !== false && ret - } - }) - return ret -} - -function mergeOptions(src, opts) { - const optsRet = { - ...src - } - for (const key in src) { - if (opts.hasOwnProperty(key)) { - optsRet[key] = opts[key] - } - } - return optsRet -} - -/** - * 查找crud - * @param {*} vm - * @param {string} tag - */ -function lookupCrud(vm, tag) { - tag = tag || vm.$attrs['crud-tag'] || 'default' - // function lookupCrud(vm, tag) { - if (vm.$crud) { - const ret = vm.$crud[tag] - if (ret) { - return ret - } - } - return vm.$parent ? lookupCrud(vm.$parent, tag) : undefined -} - -/** - * crud主页 - */ -function presenter(crud) { - if (crud) { - console.warn('[CRUD warn]: ' + 'please use $options.cruds() { return CRUD(...) or [CRUD(...), ...] }') - } - return { - data() { - // 在data中返回crud,是为了将crud与当前实例关联,组件观测crud相关属性变化 - return { - crud: this.crud - } - }, - beforeCreate() { - this.$crud = this.$crud || {} - let cruds = this.$options.cruds instanceof Function ? this.$options.cruds() : crud - if (!(cruds instanceof Array)) { - cruds = [cruds] - } - cruds.forEach(ele => { - if (this.$crud[ele.tag]) { - console.error('[CRUD error]: ' + 'crud with tag [' + ele.tag + ' is already exist') - } - this.$crud[ele.tag] = ele - ele.registerVM('presenter', this, 0) - }) - this.crud = this.$crud['defalut'] || cruds[0] - }, - created() { - for (const k in this.$crud) { - if (this.$crud[k].queryOnPresenterCreated) { - this.$crud[k].toQuery() - } - } - }, - destroyed() { - for (const k in this.$crud) { - this.$crud[k].unregisterVM('presenter', this) - } - }, - mounted() { - // 如果table未实例化(例如使用了v-if),请稍后在适当时机crud.attchTable刷新table信息 - if (this.$refs.table !== undefined) { - this.crud.attchTable() - } - } - } -} - -/** - * 头部 - */ -function header() { - return { - data() { - return { - crud: this.crud, - query: this.crud.query - } - }, - beforeCreate() { - this.crud = lookupCrud(this) - this.crud.registerVM('header', this, 1) - }, - destroyed() { - this.crud.unregisterVM('header', this) - } - } -} - -/** - * 分页 - */ -function pagination() { - return { - data() { - return { - crud: this.crud, - page: this.crud.page - } - }, - beforeCreate() { - this.crud = lookupCrud(this) - this.crud.registerVM('pagination', this, 2) - }, - destroyed() { - this.crud.unregisterVM('pagination', this) - } - } -} - -/** - * 表单 - */ -function form(defaultForm) { - return { - data() { - return { - crud: this.crud, - form: this.crud.form - } - }, - beforeCreate() { - this.crud = lookupCrud(this) - this.crud.registerVM('form', this, 3) - }, - created() { - this.crud.defaultForm = defaultForm - this.crud.resetForm() - }, - destroyed() { - this.crud.unregisterVM('form', this) - } - } -} - -/** - * crud - */ -function crud(options = {}) { - const defaultOptions = { - type: undefined - } - options = mergeOptions(defaultOptions, options) - return { - data() { - return { - crud: this.crud - } - }, - beforeCreate() { - this.crud = lookupCrud(this) - this.crud.registerVM(options.type, this) - }, - destroyed() { - this.crud.unregisterVM(options.type, this) - } - } -} - -/** - * CRUD钩子 - */ -CRUD.HOOK = { - /** 刷新 - 之前 */ - beforeRefresh: 'beforeCrudRefresh', - /** 刷新 - 之后 */ - afterRefresh: 'afterCrudRefresh', - /** 删除 - 之前 */ - beforeDelete: 'beforeCrudDelete', - /** 删除 - 之后 */ - afterDelete: 'afterCrudDelete', - /** 删除取消 - 之前 */ - beforeDeleteCancel: 'beforeCrudDeleteCancel', - /** 删除取消 - 之后 */ - afterDeleteCancel: 'afterCrudDeleteCancel', - /** 新建 - 之前 */ - beforeToAdd: 'beforeCrudToAdd', - /** 新建 - 之后 */ - afterToAdd: 'afterCrudToAdd', - /** 编辑 - 之前 */ - beforeToEdit: 'beforeCrudToEdit', - /** 编辑 - 之后 */ - afterToEdit: 'afterCrudToEdit', - /** 开始 "新建/编辑" - 之前 */ - beforeToCU: 'beforeCrudToCU', - /** 开始 "新建/编辑" - 之后 */ - afterToCU: 'afterCrudToCU', - /** "新建/编辑" 验证 - 之前 */ - beforeValidateCU: 'beforeCrudValidateCU', - /** "新建/编辑" 验证 - 之后 */ - afterValidateCU: 'afterCrudValidateCU', - /** 添加取消 - 之前 */ - beforeAddCancel: 'beforeCrudAddCancel', - /** 添加取消 - 之后 */ - afterAddCancel: 'afterCrudAddCancel', - /** 编辑取消 - 之前 */ - beforeEditCancel: 'beforeCrudEditCancel', - /** 编辑取消 - 之后 */ - afterEditCancel: 'afterCrudEditCancel', - /** 提交 - 之前 */ - beforeSubmit: 'beforeCrudSubmitCU', - /** 提交 - 之后 */ - afterSubmit: 'afterCrudSubmitCU', - afterAddError: 'afterCrudAddError', - afterEditError: 'afterCrudEditError' -} - -/** - * CRUD状态 - */ -CRUD.STATUS = { - NORMAL: 0, - PREPARED: 1, - PROCESSING: 2 -} - -/** - * CRUD通知类型 - */ -CRUD.NOTIFICATION_TYPE = { - SUCCESS: 'success', - WARNING: 'warning', - INFO: 'info', - ERROR: 'error' -} - -export default CRUD - -export { - presenter, - header, - form, - pagination, - crud -} +import { download, initData } from '@/api/data' +import Vue from 'vue' +import { DownloadFile } from '@/utils/CsDomUtil' + +/** + * CRUD配置 + * @author moxun + * @param {*} options
+ * @return crud instance. + * @example + * 要使用多crud时,请在关联crud的组件处使用crud-tag进行标记,如: + */ +function CRUD(options) { + const defaultOptions = { + tag: 'default', + // id字段名 + idField: 'id', + // 标题 + title: '', + // 请求数据的url + url: '', + // 表格数据 + data: [], + // 选择项 + selections: [], + // 待查询的对象 + query: {}, + // 查询数据的参数 + params: {}, + // Form 表单 + form: {}, + // 重置表单 + defaultForm: () => { + }, + // 等待时间 + time: 50, + // CRUD Method + crudMethod: { + add: (form) => { + }, + del: (id) => { + }, + edit: (form) => { + }, + get: (id) => { + } + }, + // 主页操作栏显示哪些按钮 + optShow: { + add: true, + edit: true, + del: true, + download: true, + reset: true + }, + // 自定义一些扩展属性 + props: {}, + // 在主页准备 + queryOnPresenterCreated: true, + // 调试开关 + debug: false + } + options = mergeOptions(defaultOptions, options) + const data = { + ...options, + // 记录数据状态 + dataStatus: {}, + status: { + add: CRUD.STATUS.NORMAL, + edit: CRUD.STATUS.NORMAL, + // 添加或编辑状态 + get cu() { + if (this.add === CRUD.STATUS.NORMAL && this.edit === CRUD.STATUS.NORMAL) { + return CRUD.STATUS.NORMAL + } else if (this.add === CRUD.STATUS.PREPARED || this.edit === CRUD.STATUS.PREPARED) { + return CRUD.STATUS.PREPARED + } else if (this.add === CRUD.STATUS.PROCESSING || this.edit === CRUD.STATUS.PROCESSING) { + return CRUD.STATUS.PROCESSING + } + throw new Error('wrong crud\'s cu status') + }, + // 标题 + get title() { + return this.add > CRUD.STATUS.NORMAL ? `新增${crud.title}` : this.edit > CRUD.STATUS.NORMAL ? `编辑${crud.title}` : crud.title + } + }, + msg: { + submit: '提交成功', + add: '新增成功', + edit: '编辑成功', + del: '删除成功' + }, + page: { + // 页码 + page: 1, + // 每页数据条数 + size: 10, + // 总数据条数 + total: 0 + }, + // 整体loading + loading: false, + // 导出的 Loading + downloadLoading: false, + // 删除的 Loading + delAllLoading: false + } + const methods = { + /** + * 通用的提示 + */ + submitSuccessNotify() { + crud.notify(crud.msg.submit, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + addSuccessNotify() { + crud.notify(crud.msg.add, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + editSuccessNotify() { + crud.notify(crud.msg.edit, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + delSuccessNotify() { + crud.notify(crud.msg.del, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + // 搜索 + toQuery() { + crud.page.page = 1 + crud.refresh() + }, + // 刷新 + refresh() { + if (!callVmHook(crud, CRUD.HOOK.beforeRefresh)) { + return + } + return new Promise((resolve, reject) => { + crud.loading = true + // 请求数据 + initData(crud.url, crud.getQueryParams()).then(data => { + const table = crud.getTable() + if (table && table.lazy) { // 懒加载子节点数据,清掉已加载的数据 + table.store.states.treeData = {} + table.store.states.lazyTreeNodeMap = {} + } + crud.page.total = data.totalElements + crud.data = data.content + crud.resetDataStatus() + // time 毫秒后显示表格 + setTimeout(() => { + crud.loading = false + callVmHook(crud, CRUD.HOOK.afterRefresh) + }, crud.time) + resolve(data) + }).catch(err => { + crud.loading = false + reject(err) + }) + }) + }, + /** + * 启动添加 + */ + toAdd() { + crud.resetForm() + if (!(callVmHook(crud, CRUD.HOOK.beforeToAdd, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) { + return + } + crud.status.add = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form) + callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) + }, + /** + * 启动编辑 + * @param {*} data 数据项 + */ + toEdit(data) { + crud.resetForm(JSON.parse(JSON.stringify(data))) + if (!(callVmHook(crud, CRUD.HOOK.beforeToEdit, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) { + return + } + crud.status.edit = CRUD.STATUS.PREPARED + crud.getDataStatus(crud.getDataId(data)).edit = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterToEdit, crud.form) + callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) + }, + /** + * 启动删除 + * @param {*} data 数据项 + */ + toDelete(data) { + crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.PREPARED + }, + /** + * 取消删除 + * @param {*} data 数据项 + */ + cancelDelete(data) { + if (!callVmHook(crud, CRUD.HOOK.beforeDeleteCancel, data)) { + return + } + crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.NORMAL + callVmHook(crud, CRUD.HOOK.afterDeleteCancel, data) + }, + /** + * 取消新增/编辑 + */ + cancelCU() { + const addStatus = crud.status.add + const editStatus = crud.status.edit + if (addStatus === CRUD.STATUS.PREPARED) { + if (!callVmHook(crud, CRUD.HOOK.beforeAddCancel, crud.form)) { + return + } + crud.status.add = CRUD.STATUS.NORMAL + } + if (editStatus === CRUD.STATUS.PREPARED) { + if (!callVmHook(crud, CRUD.HOOK.beforeEditCancel, crud.form)) { + return + } + crud.status.edit = CRUD.STATUS.NORMAL + crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL + } + crud.resetForm() + if (addStatus === CRUD.STATUS.PREPARED) { + callVmHook(crud, CRUD.HOOK.afterAddCancel, crud.form) + } + if (editStatus === CRUD.STATUS.PREPARED) { + callVmHook(crud, CRUD.HOOK.afterEditCancel, crud.form) + } + // 清除表单验证 + if (crud.findVM('form').$refs['form']) { + crud.findVM('form').$refs['form'].clearValidate() + } + }, + /** + * 提交新增/编辑 + */ + submitCU() { + if (!callVmHook(crud, CRUD.HOOK.beforeValidateCU)) { + return + } + crud.findVM('form').$refs['form'].validate(valid => { + if (!valid) { + return + } + if (!callVmHook(crud, CRUD.HOOK.afterValidateCU)) { + return + } + if (crud.status.add === CRUD.STATUS.PREPARED) { + crud.doAdd() + } else if (crud.status.edit === CRUD.STATUS.PREPARED) { + crud.doEdit() + } + }) + }, + /** + * 执行添加 + */ + doAdd() { + if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) { + return + } + crud.status.add = CRUD.STATUS.PROCESSING + crud.crudMethod.add(crud.form).then(() => { + crud.status.add = CRUD.STATUS.NORMAL + crud.resetForm() + crud.addSuccessNotify() + callVmHook(crud, CRUD.HOOK.afterSubmit) + crud.toQuery() + }).catch(() => { + crud.status.add = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterAddError) + }) + }, + /** + * 执行编辑 + */ + doEdit() { + if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) { + return + } + crud.status.edit = CRUD.STATUS.PROCESSING + crud.crudMethod.edit(crud.form).then(() => { + crud.status.edit = CRUD.STATUS.NORMAL + crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL + crud.editSuccessNotify() + crud.resetForm() + callVmHook(crud, CRUD.HOOK.afterSubmit) + crud.refresh() + }).catch(() => { + crud.status.edit = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterEditError) + }) + }, + /** + * 执行删除 + * @param {*} data 数据项 + */ + doDelete(data) { + let delAll = false + let dataStatus + const ids = [] + if (data instanceof Array) { + delAll = true + data.forEach(val => { + ids.push(this.getDataId(val)) + }) + } else { + ids.push(this.getDataId(data)) + dataStatus = crud.getDataStatus(this.getDataId(data)) + } + if (!callVmHook(crud, CRUD.HOOK.beforeDelete, data)) { + return + } + if (!delAll) { + dataStatus.delete = CRUD.STATUS.PROCESSING + } + return crud.crudMethod.del(ids).then(() => { + if (delAll) { + crud.delAllLoading = false + } else dataStatus.delete = CRUD.STATUS.PREPARED + crud.dleChangePage(1) + crud.delSuccessNotify() + callVmHook(crud, CRUD.HOOK.afterDelete, data) + crud.refresh() + }).catch(() => { + if (delAll) { + crud.delAllLoading = false + } else dataStatus.delete = CRUD.STATUS.PREPARED + }) + }, + /** + * 通用导出 + */ + doExport() { + crud.downloadLoading = true + download(crud.url + '/download', crud.getQueryParams()).then(result => { + DownloadFile(result, crud.title + '数据', 'xlsx') + crud.downloadLoading = false + }).catch(() => { + crud.downloadLoading = false + }) + }, + /** + * 获取查询参数 + */ + getQueryParams: function() { + // 清除参数无值的情况 + Object.keys(crud.query).length !== 0 && Object.keys(crud.query).forEach(item => { + if (crud.query[item] === null || crud.query[item] === '') crud.query[item] = undefined + }) + Object.keys(crud.params).length !== 0 && Object.keys(crud.params).forEach(item => { + if (crud.params[item] === null || crud.params[item] === '') crud.params[item] = undefined + }) + return { + page: crud.page.page, + size: crud.page.size, + args: { + ...crud.query, + ...crud.params + } + } + }, + // 当前页改变 + pageChangeHandler(e) { + crud.page.page = e + crud.refresh() + }, + // 每页条数改变 + sizeChangeHandler(e) { + crud.page.size = e + crud.page.page = 1 + crud.refresh() + }, + // 预防删除第二页最后一条数据时,或者多选删除第二页的数据时,页码错误导致请求无数据 + dleChangePage(size) { + if (crud.data.length === size && crud.page.page !== 1) { + crud.page.page -= 1 + } + }, + // 选择改变 + selectionChangeHandler(val) { + crud.selections = val + }, + /** + * 重置查询参数 + * @param {Boolean} toQuery 重置后进行查询操作 + */ + resetQuery(toQuery = true) { + const defaultQuery = JSON.parse(JSON.stringify(crud.defaultQuery)) + const query = crud.query + Object.keys(query).forEach(key => { + query[key] = defaultQuery[key] + }) + // 重置参数 + this.params = {} + if (toQuery) { + crud.toQuery() + } + }, + /** + * 重置表单 + * @param {Array} data 数据 + */ + resetForm(data) { + delete crud.form['createTime'] + delete crud.form['updateTime'] + delete crud.form['createBy'] + delete crud.form['updateBy'] + const form = data || (typeof crud.defaultForm === 'object' ? JSON.parse(JSON.stringify(crud.defaultForm)) : crud.defaultForm.apply(crud.findVM('form'))) + const crudFrom = crud.form + for (const key in form) { + if (crudFrom.hasOwnProperty(key)) { + crudFrom[key] = form[key] + } else { + Vue.set(crudFrom, key, form[key]) + } + } + // add by ghl 2020-10-04 页面重复添加信息时,下拉框的校验会存在,需要找工取消 + if (crud.findVM('form').$refs['form']) { + crud.findVM('form').$refs['form'].clearValidate() + } + }, + /** + * 重置数据状态 + */ + resetDataStatus() { + const dataStatus = {} + + function resetStatus(datas) { + datas.forEach(e => { + dataStatus[crud.getDataId(e)] = { + delete: 0, + edit: 0 + } + if (e.children) { + resetStatus(e.children) + } + }) + } + + resetStatus(crud.data) + crud.dataStatus = dataStatus + }, + /** + * 获取数据状态 + * @param {Number | String} id 数据项id + */ + getDataStatus(id) { + return crud.dataStatus[id] + }, + /** + * 用于树形表格多选, 选中所有 + * @param selection + */ + selectAllChange(selection) { + // 如果选中的数目与请求到的数目相同就选中子节点,否则就清空选中 + if (selection && selection.length === crud.data.length) { + selection.forEach(val => { + crud.selectChange(selection, val) + }) + } else { + crud.getTable().clearSelection() + } + }, + /** + * 用于树形表格多选,单选的封装 + * @param selection + * @param row + */ + selectChange(selection, row) { + // 如果selection中存在row代表是选中,否则是取消选中 + if (selection.find(val => { + return crud.getDataId(val) === crud.getDataId(row) + })) { + if (row.children) { + row.children.forEach(val => { + crud.getTable().toggleRowSelection(val, true) + selection.push(val) + if (val.children) { + crud.selectChange(selection, val) + } + }) + } + } else { + crud.toggleRowSelection(selection, row) + } + }, + /** + * 切换选中状态 + * @param selection + * @param data + */ + toggleRowSelection(selection, data) { + if (data.children) { + data.children.forEach(val => { + selection.splice(selection.findIndex(item => this.getDataId(item) === this.getDataId(val)), 1) + crud.getTable().toggleRowSelection(val, false) + if (val.children) { + crud.toggleRowSelection(selection, val) + } + }) + } + }, + findVM(type) { + return crud.vms.find(vm => vm && vm.type === type).vm + }, + notify(title, type = CRUD.NOTIFICATION_TYPE.INFO) { + crud.vms[0].vm.$notify({ + title, + type, + duration: 2500 + }) + }, + updateProp(name, value) { + Vue.set(crud.props, name, value) + }, + getDataId(data) { + return data[this.idField] + }, + getTable() { + return this.findVM('presenter').$refs.table + }, + attchTable() { + const table = this.getTable() + this.updateProp('table', table) + const that = this + table.$on('expand-change', (row, expanded) => { + if (!expanded) { + return + } + const lazyTreeNodeMap = table.store.states.lazyTreeNodeMap + row.children = lazyTreeNodeMap[crud.getDataId(row)] + if (row.children) { + row.children.forEach(ele => { + const id = crud.getDataId(ele) + if (that.dataStatus[id] === undefined) { + that.dataStatus[id] = { + delete: 0, + edit: 0 + } + } + }) + } + }) + } + } + const crud = Object.assign({}, data) + // 可观测化 + Vue.observable(crud) + // 附加方法 + Object.assign(crud, methods) + // 记录初始默认的查询参数,后续重置查询时使用 + Object.assign(crud, { + defaultQuery: JSON.parse(JSON.stringify(data.query)), + // 预留4位存储:组件 主页、头部、分页、表单,调试查看也方便找 + vms: Array(4), + /** + * 注册组件实例 + * @param {String} type 类型 + * @param {*} vm 组件实例 + * @param {Number} index 该参数内部使用 + */ + registerVM(type, vm, index = -1) { + const vmObj = { + type, + vm: vm + } + if (index < 0) { + this.vms.push(vmObj) + return + } + if (index < 4) { // 内置预留vm数 + this.vms[index] = vmObj + return + } + this.vms.length = Math.max(this.vms.length, index) + this.vms.splice(index, 1, vmObj) + }, + /** + * 取消注册组件实例 + * @param {*} vm 组件实例 + */ + unregisterVM(type, vm) { + for (let i = this.vms.length - 1; i >= 0; i--) { + if (this.vms[i] === undefined) { + continue + } + if (this.vms[i].type === type && this.vms[i].vm === vm) { + if (i < 4) { // 内置预留vm数 + this.vms[i] = undefined + } else { + this.vms.splice(i, 1) + } + break + } + } + } + }) + // 冻结处理,需要扩展数据的话,使用crud.updateProp(name, value),以crud.props.name形式访问,这个是响应式的,可以做数据绑定 + Object.freeze(crud) + return crud +} + +// hook VM +function callVmHook(crud, hook) { + if (crud.debug) { + console.log('callVmHook: ' + hook) + } + const tagHook = crud.tag ? hook + '$' + crud.tag : null + let ret = true + const nargs = [crud] + for (let i = 2; i < arguments.length; ++i) { + nargs.push(arguments[i]) + } + // 有些组件扮演了多个角色,调用钩子时,需要去重 + const vmSet = new Set() + crud.vms.forEach(vm => vm && vmSet.add(vm.vm)) + vmSet.forEach(vm => { + if (vm[hook]) { + ret = vm[hook].apply(vm, nargs) !== false && ret + } + if (tagHook && vm[tagHook]) { + ret = vm[tagHook].apply(vm, nargs) !== false && ret + } + }) + return ret +} + +function mergeOptions(src, opts) { + const optsRet = { + ...src + } + for (const key in src) { + if (opts.hasOwnProperty(key)) { + optsRet[key] = opts[key] + } + } + return optsRet +} + +/** + * 查找crud + * @param {*} vm + * @param {string} tag + */ +function lookupCrud(vm, tag) { + tag = tag || vm.$attrs['crud-tag'] || 'default' + // function lookupCrud(vm, tag) { + if (vm.$crud) { + const ret = vm.$crud[tag] + if (ret) { + return ret + } + } + return vm.$parent ? lookupCrud(vm.$parent, tag) : undefined +} + +/** + * crud主页 + */ +function presenter(crud) { + if (crud) { + console.warn('[CRUD warn]: ' + 'please use $options.cruds() { return CRUD(...) or [CRUD(...), ...] }') + } + return { + data() { + // 在data中返回crud,是为了将crud与当前实例关联,组件观测crud相关属性变化 + return { + crud: this.crud + } + }, + beforeCreate() { + this.$crud = this.$crud || {} + let cruds = this.$options.cruds instanceof Function ? this.$options.cruds() : crud + if (!(cruds instanceof Array)) { + cruds = [cruds] + } + cruds.forEach(ele => { + if (this.$crud[ele.tag]) { + console.error('[CRUD error]: ' + 'crud with tag [' + ele.tag + ' is already exist') + } + this.$crud[ele.tag] = ele + ele.registerVM('presenter', this, 0) + }) + this.crud = this.$crud['defalut'] || cruds[0] + }, + created() { + for (const k in this.$crud) { + if (this.$crud[k].queryOnPresenterCreated) { + this.$crud[k].toQuery() + } + } + }, + destroyed() { + for (const k in this.$crud) { + this.$crud[k].unregisterVM('presenter', this) + } + }, + mounted() { + // 如果table未实例化(例如使用了v-if),请稍后在适当时机crud.attchTable刷新table信息 + if (this.$refs.table !== undefined) { + this.crud.attchTable() + } + } + } +} + +/** + * 头部 + */ +function header() { + return { + data() { + return { + crud: this.crud, + query: this.crud.query + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('header', this, 1) + }, + destroyed() { + this.crud.unregisterVM('header', this) + } + } +} + +/** + * 分页 + */ +function pagination() { + return { + data() { + return { + crud: this.crud, + page: this.crud.page + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('pagination', this, 2) + }, + destroyed() { + this.crud.unregisterVM('pagination', this) + } + } +} + +/** + * 表单 + */ +function form(defaultForm) { + return { + data() { + return { + crud: this.crud, + form: this.crud.form + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('form', this, 3) + }, + created() { + this.crud.defaultForm = defaultForm + this.crud.resetForm() + }, + destroyed() { + this.crud.unregisterVM('form', this) + } + } +} + +/** + * crud + */ +function crud(options = {}) { + const defaultOptions = { + type: undefined + } + options = mergeOptions(defaultOptions, options) + return { + data() { + return { + crud: this.crud + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM(options.type, this) + }, + destroyed() { + this.crud.unregisterVM(options.type, this) + } + } +} + +/** + * CRUD钩子 + */ +CRUD.HOOK = { + /** 刷新 - 之前 */ + beforeRefresh: 'beforeCrudRefresh', + /** 刷新 - 之后 */ + afterRefresh: 'afterCrudRefresh', + /** 删除 - 之前 */ + beforeDelete: 'beforeCrudDelete', + /** 删除 - 之后 */ + afterDelete: 'afterCrudDelete', + /** 删除取消 - 之前 */ + beforeDeleteCancel: 'beforeCrudDeleteCancel', + /** 删除取消 - 之后 */ + afterDeleteCancel: 'afterCrudDeleteCancel', + /** 新建 - 之前 */ + beforeToAdd: 'beforeCrudToAdd', + /** 新建 - 之后 */ + afterToAdd: 'afterCrudToAdd', + /** 编辑 - 之前 */ + beforeToEdit: 'beforeCrudToEdit', + /** 编辑 - 之后 */ + afterToEdit: 'afterCrudToEdit', + /** 开始 "新建/编辑" - 之前 */ + beforeToCU: 'beforeCrudToCU', + /** 开始 "新建/编辑" - 之后 */ + afterToCU: 'afterCrudToCU', + /** "新建/编辑" 验证 - 之前 */ + beforeValidateCU: 'beforeCrudValidateCU', + /** "新建/编辑" 验证 - 之后 */ + afterValidateCU: 'afterCrudValidateCU', + /** 添加取消 - 之前 */ + beforeAddCancel: 'beforeCrudAddCancel', + /** 添加取消 - 之后 */ + afterAddCancel: 'afterCrudAddCancel', + /** 编辑取消 - 之前 */ + beforeEditCancel: 'beforeCrudEditCancel', + /** 编辑取消 - 之后 */ + afterEditCancel: 'afterCrudEditCancel', + /** 提交 - 之前 */ + beforeSubmit: 'beforeCrudSubmitCU', + /** 提交 - 之后 */ + afterSubmit: 'afterCrudSubmitCU', + afterAddError: 'afterCrudAddError', + afterEditError: 'afterCrudEditError' +} + +/** + * CRUD状态 + */ +CRUD.STATUS = { + NORMAL: 0, + PREPARED: 1, + PROCESSING: 2 +} + +/** + * CRUD通知类型 + */ +CRUD.NOTIFICATION_TYPE = { + SUCCESS: 'success', + WARNING: 'warning', + INFO: 'info', + ERROR: 'error' +} + +export default CRUD + +export { + presenter, + header, + form, + pagination, + crud +} diff --git a/cutejava-front/src/components/DateRangePicker/index.vue b/cutejava-front/src/components/DateRangePicker/index.vue index 8feea56d..90da277f 100644 --- a/cutejava-front/src/components/DateRangePicker/index.vue +++ b/cutejava-front/src/components/DateRangePicker/index.vue @@ -1,45 +1,45 @@ - + diff --git a/cutejava-front/src/components/Dict/Dict.js b/cutejava-front/src/components/Dict/Dict.js index 48554de7..e0c21cb1 100644 --- a/cutejava-front/src/components/Dict/Dict.js +++ b/cutejava-front/src/components/Dict/Dict.js @@ -1,29 +1,29 @@ -import Vue from 'vue' -import { get as getDictDetail } from '@/api/system/dictDetail' - -export default class Dict { - constructor(dict) { - this.dict = dict - } - - async init(names, completeCallback) { - if (names === undefined || name === null) { - throw new Error('need Dict names') - } - const ps = [] - names.forEach(n => { - Vue.set(this.dict.dict, n, {}) - Vue.set(this.dict.label, n, {}) - Vue.set(this.dict, n, []) - ps.push(getDictDetail(n).then(data => { - this.dict[n].splice(0, 0, ...data.content) - data.content.forEach(d => { - Vue.set(this.dict.dict[n], d.value, d) - Vue.set(this.dict.label[n], d.value, d.label) - }) - })) - }) - await Promise.all(ps) - completeCallback() - } -} +import Vue from 'vue' +import { get as getDictDetail } from '@/api/system/dictDetail' + +export default class Dict { + constructor(dict) { + this.dict = dict + } + + async init(names, completeCallback) { + if (names === undefined || name === null) { + throw new Error('need Dict names') + } + const ps = [] + names.forEach(n => { + Vue.set(this.dict.dict, n, {}) + Vue.set(this.dict.label, n, {}) + Vue.set(this.dict, n, []) + ps.push(getDictDetail(n).then(data => { + this.dict[n].splice(0, 0, ...data.content) + data.content.forEach(d => { + Vue.set(this.dict.dict[n], d.value, d) + Vue.set(this.dict.label[n], d.value, d.label) + }) + })) + }) + await Promise.all(ps) + completeCallback() + } +} diff --git a/cutejava-front/src/components/Dict/index.js b/cutejava-front/src/components/Dict/index.js index 0952f439..7f6d94dd 100644 --- a/cutejava-front/src/components/Dict/index.js +++ b/cutejava-front/src/components/Dict/index.js @@ -1,29 +1,29 @@ -import Dict from './Dict' - -const install = function(Vue) { - Vue.mixin({ - data() { - if (this.$options.dicts instanceof Array) { - const dict = { - dict: {}, - label: {} - } - return { - dict - } - } - return {} - }, - created() { - if (this.$options.dicts instanceof Array) { - new Dict(this.dict).init(this.$options.dicts, () => { - this.$nextTick(() => { - this.$emit('dictReady') - }) - }) - } - } - }) -} - -export default { install } +import Dict from './Dict' + +const install = function(Vue) { + Vue.mixin({ + data() { + if (this.$options.dicts instanceof Array) { + const dict = { + dict: {}, + label: {} + } + return { + dict + } + } + return {} + }, + created() { + if (this.$options.dicts instanceof Array) { + new Dict(this.dict).init(this.$options.dicts, () => { + this.$nextTick(() => { + this.$emit('dictReady') + }) + }) + } + } + }) +} + +export default { install } diff --git a/cutejava-front/src/components/Echarts/BarChart.vue b/cutejava-front/src/components/Echarts/BarChart.vue index ff1b04f5..0b4fdac6 100644 --- a/cutejava-front/src/components/Echarts/BarChart.vue +++ b/cutejava-front/src/components/Echarts/BarChart.vue @@ -1,107 +1,107 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Category.vue b/cutejava-front/src/components/Echarts/Category.vue index 1ec8c048..172ecf6b 100644 --- a/cutejava-front/src/components/Echarts/Category.vue +++ b/cutejava-front/src/components/Echarts/Category.vue @@ -1,438 +1,438 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Funnel.vue b/cutejava-front/src/components/Echarts/Funnel.vue index 384875a3..8ca35bc0 100644 --- a/cutejava-front/src/components/Echarts/Funnel.vue +++ b/cutejava-front/src/components/Echarts/Funnel.vue @@ -1,120 +1,120 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Gauge.vue b/cutejava-front/src/components/Echarts/Gauge.vue index 500d1975..0f754dbe 100644 --- a/cutejava-front/src/components/Echarts/Gauge.vue +++ b/cutejava-front/src/components/Echarts/Gauge.vue @@ -1,74 +1,74 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Graph.vue b/cutejava-front/src/components/Echarts/Graph.vue index 3bd718c3..b7b8cb4e 100644 --- a/cutejava-front/src/components/Echarts/Graph.vue +++ b/cutejava-front/src/components/Echarts/Graph.vue @@ -1,101 +1,101 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/HeatMap.vue b/cutejava-front/src/components/Echarts/HeatMap.vue index 8cc19ecc..96055fb3 100644 --- a/cutejava-front/src/components/Echarts/HeatMap.vue +++ b/cutejava-front/src/components/Echarts/HeatMap.vue @@ -1,105 +1,105 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/PieChart.vue b/cutejava-front/src/components/Echarts/PieChart.vue index 648271e8..5e1cb7b0 100644 --- a/cutejava-front/src/components/Echarts/PieChart.vue +++ b/cutejava-front/src/components/Echarts/PieChart.vue @@ -1,85 +1,85 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Point.vue b/cutejava-front/src/components/Echarts/Point.vue index a44436c4..7d7236eb 100644 --- a/cutejava-front/src/components/Echarts/Point.vue +++ b/cutejava-front/src/components/Echarts/Point.vue @@ -1,149 +1,149 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/RadarChart.vue b/cutejava-front/src/components/Echarts/RadarChart.vue index a240d983..e287f018 100644 --- a/cutejava-front/src/components/Echarts/RadarChart.vue +++ b/cutejava-front/src/components/Echarts/RadarChart.vue @@ -1,121 +1,121 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Rich.vue b/cutejava-front/src/components/Echarts/Rich.vue index 3ed88030..aeab73f5 100644 --- a/cutejava-front/src/components/Echarts/Rich.vue +++ b/cutejava-front/src/components/Echarts/Rich.vue @@ -1,149 +1,149 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Sankey.vue b/cutejava-front/src/components/Echarts/Sankey.vue index 28fed816..75a6ed41 100644 --- a/cutejava-front/src/components/Echarts/Sankey.vue +++ b/cutejava-front/src/components/Echarts/Sankey.vue @@ -1,100 +1,100 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Scatter.vue b/cutejava-front/src/components/Echarts/Scatter.vue index bc213a04..834ddbdc 100644 --- a/cutejava-front/src/components/Echarts/Scatter.vue +++ b/cutejava-front/src/components/Echarts/Scatter.vue @@ -1,143 +1,143 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/Sunburst.vue b/cutejava-front/src/components/Echarts/Sunburst.vue index 275870eb..cdce6363 100644 --- a/cutejava-front/src/components/Echarts/Sunburst.vue +++ b/cutejava-front/src/components/Echarts/Sunburst.vue @@ -1,107 +1,107 @@ - - - + + + diff --git a/cutejava-front/src/components/Echarts/ThemeRiver.vue b/cutejava-front/src/components/Echarts/ThemeRiver.vue index e227ba30..1f9524df 100644 --- a/cutejava-front/src/components/Echarts/ThemeRiver.vue +++ b/cutejava-front/src/components/Echarts/ThemeRiver.vue @@ -1,148 +1,148 @@ - - - + + + diff --git a/cutejava-front/src/components/GithubCorner/index.vue b/cutejava-front/src/components/GithubCorner/index.vue index 31942a66..bf8bd3fd 100644 --- a/cutejava-front/src/components/GithubCorner/index.vue +++ b/cutejava-front/src/components/GithubCorner/index.vue @@ -1,60 +1,60 @@ - - - + + + diff --git a/cutejava-front/src/components/Hamburger/index.vue b/cutejava-front/src/components/Hamburger/index.vue index 27231c1f..8c772469 100644 --- a/cutejava-front/src/components/Hamburger/index.vue +++ b/cutejava-front/src/components/Hamburger/index.vue @@ -1,46 +1,46 @@ - - - - - + + + + + diff --git a/cutejava-front/src/components/HeaderSearch/index.vue b/cutejava-front/src/components/HeaderSearch/index.vue index 64d9c992..29ae9265 100644 --- a/cutejava-front/src/components/HeaderSearch/index.vue +++ b/cutejava-front/src/components/HeaderSearch/index.vue @@ -1,190 +1,190 @@ - - - - - + + + + + diff --git a/cutejava-front/src/components/IconSelect/index.vue b/cutejava-front/src/components/IconSelect/index.vue index ed2cfc4a..0080b720 100644 --- a/cutejava-front/src/components/IconSelect/index.vue +++ b/cutejava-front/src/components/IconSelect/index.vue @@ -1,78 +1,78 @@ - - - - - + + + + + diff --git a/cutejava-front/src/components/IconSelect/requireIcons.js b/cutejava-front/src/components/IconSelect/requireIcons.js index 877e5b73..12cca824 100644 --- a/cutejava-front/src/components/IconSelect/requireIcons.js +++ b/cutejava-front/src/components/IconSelect/requireIcons.js @@ -1,10 +1,10 @@ -const req = require.context('../../assets/icons/svg', false, /\.svg$/) -const requireAll = requireContext => requireContext.keys() - -const re = /\.\/(.*)\.svg/ - -const icons = requireAll(req).map(i => { - return i.match(re)[1] -}) - -export default icons +const req = require.context('../../assets/icons/svg', false, /\.svg$/) +const requireAll = requireContext => requireContext.keys() + +const re = /\.\/(.*)\.svg/ + +const icons = requireAll(req).map(i => { + return i.match(re)[1] +}) + +export default icons diff --git a/cutejava-front/src/components/Iframe/index.vue b/cutejava-front/src/components/Iframe/index.vue index cdd612b4..920284d7 100644 --- a/cutejava-front/src/components/Iframe/index.vue +++ b/cutejava-front/src/components/Iframe/index.vue @@ -1,30 +1,30 @@ -