From 374735657a2661ac69c3ffef32456533663e9a2d Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sat, 25 May 2019 12:13:38 +0800 Subject: [PATCH 01/31] Add comment api for sheet. --- .../content/api/SheetController.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/run/halo/app/controller/content/api/SheetController.java b/src/main/java/run/halo/app/controller/content/api/SheetController.java index bf657ec9a..46a129909 100644 --- a/src/main/java/run/halo/app/controller/content/api/SheetController.java +++ b/src/main/java/run/halo/app/controller/content/api/SheetController.java @@ -8,13 +8,18 @@ import org.springframework.data.web.SortDefault; import org.springframework.web.bind.annotation.*; import run.halo.app.cache.lock.CacheLock; import run.halo.app.model.dto.BaseCommentDTO; +import run.halo.app.model.entity.SheetComment; +import run.halo.app.model.enums.CommentStatus; import run.halo.app.model.params.SheetCommentParam; import run.halo.app.model.vo.BaseCommentVO; import run.halo.app.model.vo.BaseCommentWithParentVO; +import run.halo.app.model.vo.CommentWithHasChildrenVO; import run.halo.app.service.OptionService; import run.halo.app.service.SheetCommentService; import run.halo.app.service.SheetService; +import java.util.List; + import static org.springframework.data.domain.Sort.Direction.DESC; /** @@ -39,6 +44,23 @@ public class SheetController { this.optionService = optionService; } + @GetMapping("{sheetId:\\d+}/comments/top_view") + public Page listTopComments(@PathVariable("sheetId") Integer sheetId, + @RequestParam(name = "page", required = false, defaultValue = "0") int page, + @SortDefault(sort = "createTime", direction = DESC) Sort sort) { + return sheetCommentService.pageTopCommentsBy(sheetId, CommentStatus.PUBLISHED, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + } + + @GetMapping("{sheetId:\\d+}/comments/{commentParentId:\\d+}/children") + public List listChildrenBy(@PathVariable("sheetId") Integer sheetId, + @PathVariable("commentParentId") Long commentParentId, + @SortDefault(sort = "createTime", direction = DESC) Sort sort) { + // Find all children comments + List sheetComments = sheetCommentService.listChildrenBy(sheetId, commentParentId, CommentStatus.PUBLISHED, sort); + // Convert to base comment dto + return sheetCommentService.convertTo(sheetComments); + } + @GetMapping("{sheetId:\\d+}/comments/tree_view") @ApiOperation("Lists comments with tree view") From 0feb4444b8d43f2b92bdd998f7ba560949de4408 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sat, 25 May 2019 13:22:44 +0800 Subject: [PATCH 02/31] Remove CUSTOM_STYLE properties --- .../run/halo/app/model/properties/CommentProperties.java | 7 +++---- .../java/run/halo/app/service/impl/AdminServiceImpl.java | 9 +++++++-- .../run/halo/app/service/impl/AttachmentServiceImpl.java | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/run/halo/app/model/properties/CommentProperties.java b/src/main/java/run/halo/app/model/properties/CommentProperties.java index f124dead1..b75e38def 100644 --- a/src/main/java/run/halo/app/model/properties/CommentProperties.java +++ b/src/main/java/run/halo/app/model/properties/CommentProperties.java @@ -4,7 +4,8 @@ package run.halo.app.model.properties; * Comment properties. * * @author johnniang - * @date 4/1/19 + * @author ryanwang + * @date 2019-04-01 */ public enum CommentProperties implements PropertyEnum { @@ -22,9 +23,7 @@ public enum CommentProperties implements PropertyEnum { PAGE_SIZE("comment_page_size", Integer.class, "10"), - CONTENT_PLACEHOLDER("comment_content_placeholder", String.class, ""), - - CUSTOM_STYLE("comment_custom_style", String.class, ""); + CONTENT_PLACEHOLDER("comment_content_placeholder", String.class, ""); private final String value; diff --git a/src/main/java/run/halo/app/service/impl/AdminServiceImpl.java b/src/main/java/run/halo/app/service/impl/AdminServiceImpl.java index 6b8ffca48..9a6e2ca32 100644 --- a/src/main/java/run/halo/app/service/impl/AdminServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/AdminServiceImpl.java @@ -3,6 +3,7 @@ package run.halo.app.service.impl; import cn.hutool.core.lang.Validator; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.springframework.util.Assert; @@ -58,6 +59,8 @@ public class AdminServiceImpl implements AdminService { private final StringCacheStore cacheStore; + private final ApplicationEventPublisher eventPublisher; + private final String driverClassName; public AdminServiceImpl(PostService postService, @@ -70,6 +73,7 @@ public class AdminServiceImpl implements AdminService { UserService userService, LinkService linkService, StringCacheStore cacheStore, + ApplicationEventPublisher eventPublisher, @Value("${spring.datasource.driver-class-name}") String driverClassName) { this.postService = postService; this.sheetService = sheetService; @@ -81,6 +85,7 @@ public class AdminServiceImpl implements AdminService { this.userService = userService; this.linkService = linkService; this.cacheStore = cacheStore; + this.eventPublisher = eventPublisher; this.driverClassName = driverClassName; } @@ -112,7 +117,7 @@ public class AdminServiceImpl implements AdminService { if (SecurityContextHolder.getContext().isAuthenticated()) { // If the user has been logged in - throw new BadRequestException("You have been logged in, do not log in repeatedly please"); + throw new BadRequestException("您已登录,请不要重复登录"); } // Generate new token @@ -125,7 +130,7 @@ public class AdminServiceImpl implements AdminService { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication == null) { - throw new BadRequestException("You haven't logged in yet, so you can't log out"); + throw new BadRequestException("您尚未登录,因此无法注销"); } // Get current user diff --git a/src/main/java/run/halo/app/service/impl/AttachmentServiceImpl.java b/src/main/java/run/halo/app/service/impl/AttachmentServiceImpl.java index 9aeef3fa0..86715c4e2 100644 --- a/src/main/java/run/halo/app/service/impl/AttachmentServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/AttachmentServiceImpl.java @@ -188,7 +188,7 @@ public class AttachmentServiceImpl extends AbstractCrudService 0) { - throw new AlreadyExistsException("The attachment with path " + attachment.getPath() + " exists already"); + throw new AlreadyExistsException("附件路径为 " + attachment.getPath() + " 已经存在"); } } From b417043aef2459109402191bb630868cb9f437c9 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sat, 25 May 2019 13:35:42 +0800 Subject: [PATCH 03/31] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9ee30b425..033ebb7d5 100755 --- a/README.md +++ b/README.md @@ -35,9 +35,10 @@ ## 周边 -- 后台管理源码:<[https://github.com/halo-dev/halo-admin](https://github.com/halo-dev/halo-admin)> +- 后台管理(halo-admin):<[https://github.com/halo-dev/halo-admin](https://github.com/halo-dev/halo-admin)> +- 独立评论模块(halo-comment):<[https://github.com/halo-dev/halo-admin](https://github.com/halo-dev/halo-admin)> +- 管理 APP(halo-app):<[https://github.com/halo-dev/halo-app](https://github.com/halo-dev/halo-app)> - 主题仓库:<[https://halo.run/theme](https://halo.run/theme)> -- 管理 APP:<[https://github.com/halo-dev/halo-app](https://github.com/halo-dev/halo-app)> ## 许可证 From 069dd88363df547ef4e290d62bdfcf56d6ae23af Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sat, 25 May 2019 13:36:24 +0800 Subject: [PATCH 04/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 033ebb7d5..d5b716dac 100755 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ ## 周边 - 后台管理(halo-admin):<[https://github.com/halo-dev/halo-admin](https://github.com/halo-dev/halo-admin)> -- 独立评论模块(halo-comment):<[https://github.com/halo-dev/halo-admin](https://github.com/halo-dev/halo-admin)> +- 独立评论模块(halo-comment):<[https://github.com/halo-dev/halo-comment](https://github.com/halo-dev/halo-comment)> - 管理 APP(halo-app):<[https://github.com/halo-dev/halo-app](https://github.com/halo-dev/halo-app)> - 主题仓库:<[https://halo.run/theme](https://halo.run/theme)> From 8d89fc6c7d9af4f1a766cc6fa4c191e56a417d85 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sat, 25 May 2019 13:39:55 +0800 Subject: [PATCH 05/31] Complete: #169 --- .../content/api/JournalController.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/run/halo/app/controller/content/api/JournalController.java b/src/main/java/run/halo/app/controller/content/api/JournalController.java index 0316fe712..bb720e57f 100644 --- a/src/main/java/run/halo/app/controller/content/api/JournalController.java +++ b/src/main/java/run/halo/app/controller/content/api/JournalController.java @@ -8,13 +8,19 @@ import org.springframework.data.web.SortDefault; import org.springframework.web.bind.annotation.*; import run.halo.app.cache.lock.CacheLock; import run.halo.app.model.dto.BaseCommentDTO; +import run.halo.app.model.entity.JournalComment; +import run.halo.app.model.entity.PostComment; +import run.halo.app.model.enums.CommentStatus; import run.halo.app.model.params.JournalCommentParam; import run.halo.app.model.vo.BaseCommentVO; import run.halo.app.model.vo.BaseCommentWithParentVO; +import run.halo.app.model.vo.CommentWithHasChildrenVO; import run.halo.app.service.JournalCommentService; import run.halo.app.service.JournalService; import run.halo.app.service.OptionService; +import java.util.List; + import static org.springframework.data.domain.Sort.Direction.DESC; /** @@ -39,6 +45,23 @@ public class JournalController { this.optionService = optionService; } + @GetMapping("{journalId:\\d+}/comments/top_view") + public Page listTopComments(@PathVariable("journalId") Integer journalId, + @RequestParam(name = "page", required = false, defaultValue = "0") int page, + @SortDefault(sort = "createTime", direction = DESC) Sort sort) { + return journalCommentService.pageTopCommentsBy(journalId, CommentStatus.PUBLISHED, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + } + + @GetMapping("{journalId:\\d+}/comments/{commentParentId:\\d+}/children") + public List listChildrenBy(@PathVariable("journalId") Integer journalId, + @PathVariable("commentParentId") Long commentParentId, + @SortDefault(sort = "createTime", direction = DESC) Sort sort) { + // Find all children comments + List postComments = journalCommentService.listChildrenBy(journalId, commentParentId, CommentStatus.PUBLISHED, sort); + // Convert to base comment dto + return journalCommentService.convertTo(postComments); + } + @GetMapping("{journalId:\\d+}/comments/tree_view") @ApiOperation("Lists comments with tree view") public Page listCommentsTree(@PathVariable("journalId") Integer journalId, From 373c4ce2859d70bf519ce5886b631404f8b07b3f Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sat, 25 May 2019 13:40:22 +0800 Subject: [PATCH 06/31] Format Code. --- .../run/halo/app/controller/content/api/JournalController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/run/halo/app/controller/content/api/JournalController.java b/src/main/java/run/halo/app/controller/content/api/JournalController.java index bb720e57f..3605185bf 100644 --- a/src/main/java/run/halo/app/controller/content/api/JournalController.java +++ b/src/main/java/run/halo/app/controller/content/api/JournalController.java @@ -9,7 +9,6 @@ import org.springframework.web.bind.annotation.*; import run.halo.app.cache.lock.CacheLock; import run.halo.app.model.dto.BaseCommentDTO; import run.halo.app.model.entity.JournalComment; -import run.halo.app.model.entity.PostComment; import run.halo.app.model.enums.CommentStatus; import run.halo.app.model.params.JournalCommentParam; import run.halo.app.model.vo.BaseCommentVO; From 7c9f8b01f3fe1b4c9a69a28d82673099a251d49a Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sat, 25 May 2019 14:08:22 +0800 Subject: [PATCH 07/31] Support internal sheet list api. --- .../controller/admin/api/SheetController.java | 9 ++++ .../halo/app/model/dto/InternalSheetDTO.java | 21 +++++++++ .../run/halo/app/service/SheetService.java | 12 ++++++ .../app/service/impl/SheetServiceImpl.java | 43 ++++++++++++++++++- 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 src/main/java/run/halo/app/model/dto/InternalSheetDTO.java diff --git a/src/main/java/run/halo/app/controller/admin/api/SheetController.java b/src/main/java/run/halo/app/controller/admin/api/SheetController.java index 35ecf6834..36c2333f2 100644 --- a/src/main/java/run/halo/app/controller/admin/api/SheetController.java +++ b/src/main/java/run/halo/app/controller/admin/api/SheetController.java @@ -5,6 +5,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; import org.springframework.web.bind.annotation.*; +import run.halo.app.model.dto.InternalSheetDTO; import run.halo.app.model.dto.post.BasePostDetailDTO; import run.halo.app.model.entity.Sheet; import run.halo.app.model.enums.PostStatus; @@ -13,6 +14,7 @@ import run.halo.app.model.vo.SheetListVO; import run.halo.app.service.SheetService; import javax.validation.Valid; +import java.util.List; import static org.springframework.data.domain.Sort.Direction.DESC; @@ -20,6 +22,7 @@ import static org.springframework.data.domain.Sort.Direction.DESC; * Sheet controller. * * @author johnniang + * @author ryanwang * @date 19-4-24 */ @RestController @@ -46,6 +49,12 @@ public class SheetController { return sheetService.convertToListVo(sheetPage); } + @GetMapping("internal") + @ApiOperation("Lists internal sheets") + public List internalSheets() { + return sheetService.listInternal(); + } + @PostMapping @ApiOperation("Creates a sheet") public BasePostDetailDTO createBy(@RequestBody @Valid SheetParam sheetParam, diff --git a/src/main/java/run/halo/app/model/dto/InternalSheetDTO.java b/src/main/java/run/halo/app/model/dto/InternalSheetDTO.java new file mode 100644 index 000000000..377027e5d --- /dev/null +++ b/src/main/java/run/halo/app/model/dto/InternalSheetDTO.java @@ -0,0 +1,21 @@ +package run.halo.app.model.dto; + +import lombok.Data; + +/** + * Theme controller. + * + * @author ryanwang + * @date : 2019/5/4 + */ +@Data +public class InternalSheetDTO { + + private Integer id; + + private String title; + + private String url; + + private boolean status; +} diff --git a/src/main/java/run/halo/app/service/SheetService.java b/src/main/java/run/halo/app/service/SheetService.java index d5d8428a8..5e0b206d0 100644 --- a/src/main/java/run/halo/app/service/SheetService.java +++ b/src/main/java/run/halo/app/service/SheetService.java @@ -2,15 +2,19 @@ package run.halo.app.service; import org.springframework.data.domain.Page; import org.springframework.lang.NonNull; +import run.halo.app.model.dto.InternalSheetDTO; import run.halo.app.model.entity.Sheet; import run.halo.app.model.enums.PostStatus; import run.halo.app.model.vo.SheetListVO; import run.halo.app.service.base.BasePostService; +import java.util.List; + /** * Sheet service interface. * * @author johnniang + * @author ryanwang * @date 19-4-24 */ public interface SheetService extends BasePostService { @@ -72,6 +76,14 @@ public interface SheetService extends BasePostService { @NonNull String exportMarkdown(@NonNull Sheet sheet); + /** + * List internal sheets. + * + * @return list of internal sheets + */ + @NonNull + List listInternal(); + /** * Converts to list dto page. * diff --git a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java index ad4f5be66..15b11fc41 100644 --- a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import run.halo.app.event.logger.LogEvent; import run.halo.app.event.post.SheetVisitEvent; +import run.halo.app.model.dto.InternalSheetDTO; import run.halo.app.model.entity.Sheet; import run.halo.app.model.enums.LogType; import run.halo.app.model.enums.PostStatus; @@ -16,9 +17,11 @@ import run.halo.app.repository.SheetRepository; import run.halo.app.service.OptionService; import run.halo.app.service.SheetCommentService; import run.halo.app.service.SheetService; +import run.halo.app.service.ThemeService; import run.halo.app.utils.MarkdownUtils; import run.halo.app.utils.ServiceUtils; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; @@ -27,6 +30,7 @@ import java.util.Set; * Sheet service implementation. * * @author johnniang + * @author ryanwang * @date 19-4-24 */ @Service @@ -38,14 +42,18 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee private final SheetCommentService sheetCommentService; + private final ThemeService themeService; + public SheetServiceImpl(SheetRepository sheetRepository, ApplicationEventPublisher eventPublisher, SheetCommentService sheetCommentService, - OptionService optionService) { + OptionService optionService, + ThemeService themeService) { super(sheetRepository, optionService); this.sheetRepository = sheetRepository; this.eventPublisher = eventPublisher; this.sheetCommentService = sheetCommentService; + this.themeService = themeService; } @Override @@ -136,6 +144,39 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee return content.toString(); } + @Override + public List listInternal() { + + List internalSheetDTOS = new ArrayList<>(); + + // links sheet + InternalSheetDTO linkSheet = new InternalSheetDTO(); + linkSheet.setId(1); + linkSheet.setTitle("友情链接"); + linkSheet.setUrl("/links"); + linkSheet.setStatus(themeService.templateExists("links.ftl")); + + // photos sheet + InternalSheetDTO photoSheet = new InternalSheetDTO(); + photoSheet.setId(2); + photoSheet.setTitle("图库页面"); + photoSheet.setUrl("/photos"); + photoSheet.setStatus(themeService.templateExists("photos.ftl")); + + // journals sheet + InternalSheetDTO journalSheet = new InternalSheetDTO(); + journalSheet.setId(3); + journalSheet.setTitle("日志页面"); + journalSheet.setUrl("/journals"); + journalSheet.setStatus(themeService.templateExists("journals.ftl")); + + internalSheetDTOS.add(linkSheet); + internalSheetDTOS.add(photoSheet); + internalSheetDTOS.add(journalSheet); + + return internalSheetDTOS; + } + @Override public Sheet removeById(Integer id) { Sheet sheet = super.removeById(id); From ee299d684c7792651a1d6de386451aba9e72e099 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sun, 26 May 2019 16:47:25 +0800 Subject: [PATCH 08/31] Complete markdown import service. --- .../app/repository/CategoryRepository.java | 8 +++ .../halo/app/repository/TagRepository.java | 7 ++ .../run/halo/app/service/CategoryService.java | 8 +++ .../run/halo/app/service/PostService.java | 2 +- .../java/run/halo/app/service/TagService.java | 8 +++ .../app/service/impl/CategoryServiceImpl.java | 5 ++ .../app/service/impl/PostServiceImpl.java | 68 ++++++++++++++++++- .../halo/app/service/impl/TagServiceImpl.java | 6 ++ 8 files changed, 109 insertions(+), 3 deletions(-) diff --git a/src/main/java/run/halo/app/repository/CategoryRepository.java b/src/main/java/run/halo/app/repository/CategoryRepository.java index 42d08cde7..078e87a35 100644 --- a/src/main/java/run/halo/app/repository/CategoryRepository.java +++ b/src/main/java/run/halo/app/repository/CategoryRepository.java @@ -36,4 +36,12 @@ public interface CategoryRepository extends BaseRepository { * @return Optional of Category */ Optional getBySlugName(@NonNull String slugName); + + /** + * Get category by name. + * + * @param name name + * @return Optional of Category + */ + Optional getByName(@NonNull String name); } diff --git a/src/main/java/run/halo/app/repository/TagRepository.java b/src/main/java/run/halo/app/repository/TagRepository.java index 14b33c0bf..77ac094c3 100644 --- a/src/main/java/run/halo/app/repository/TagRepository.java +++ b/src/main/java/run/halo/app/repository/TagRepository.java @@ -29,4 +29,11 @@ public interface TagRepository extends BaseRepository { * @return Tag */ Optional getBySlugName(@NonNull String slugName); + + /** + * Get tag by name + * @param name name + * @return Tag + */ + Optional getByName(@NonNull String name); } diff --git a/src/main/java/run/halo/app/service/CategoryService.java b/src/main/java/run/halo/app/service/CategoryService.java index cd65120e3..e73e74d2e 100755 --- a/src/main/java/run/halo/app/service/CategoryService.java +++ b/src/main/java/run/halo/app/service/CategoryService.java @@ -36,6 +36,14 @@ public interface CategoryService extends CrudService { @NonNull Category getBySlugName(@NonNull String slugName); + /** + * Get Category by name. + * + * @param name name + * @return Category + */ + Category getByName(@NonNull String name); + /** * Removes category and post categories. * diff --git a/src/main/java/run/halo/app/service/PostService.java b/src/main/java/run/halo/app/service/PostService.java index c33d79562..953669a55 100755 --- a/src/main/java/run/halo/app/service/PostService.java +++ b/src/main/java/run/halo/app/service/PostService.java @@ -104,7 +104,7 @@ public interface PostService extends BasePostService { * @return imported post */ @NonNull - Post importMarkdown(@NonNull String markdown); + PostDetailVO importMarkdown(@NonNull String markdown); /** * Export post to markdown file by post id. diff --git a/src/main/java/run/halo/app/service/TagService.java b/src/main/java/run/halo/app/service/TagService.java index 5fa503d6e..1992eb2ce 100644 --- a/src/main/java/run/halo/app/service/TagService.java +++ b/src/main/java/run/halo/app/service/TagService.java @@ -25,6 +25,14 @@ public interface TagService extends CrudService { @NonNull Tag getBySlugNameOfNonNull(@NonNull String slugName); + /** + * Get tag by tag name. + * + * @param name name + * @return Tag + */ + Tag getByName(@NonNull String name); + /** * Converts to tag dto. * diff --git a/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java b/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java index 1f6114cd8..0d8b8509a 100644 --- a/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java @@ -154,6 +154,11 @@ public class CategoryServiceImpl extends AbstractCrudService return categoryRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("The Category does not exist").setErrorData(slugName)); } + @Override + public Category getByName(String name) { + return categoryRepository.getByName(name).orElse(null); + } + @Override public void removeCategoryAndPostCategoryBy(Integer categoryId) { // Remove category diff --git a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java index e3120dd1e..206287720 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -1,5 +1,6 @@ package run.halo.app.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.StrBuilder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -29,6 +30,7 @@ import run.halo.app.service.*; import run.halo.app.utils.DateUtils; import run.halo.app.utils.MarkdownUtils; import run.halo.app.utils.ServiceUtils; +import run.halo.app.utils.SlugUtils; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; @@ -275,7 +277,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe } @Override - public Post importMarkdown(String markdown) { + public PostDetailVO importMarkdown(String markdown) { Assert.notNull(markdown, "Markdown document must not be null"); // Render markdown to html document. @@ -284,7 +286,69 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe // Gets frontMatter Map> frontMatter = MarkdownUtils.getFrontMatter(markdown); - return null; + Post post = new Post(); + + List elementValue; + + Set tagIds = new HashSet<>(); + + Set categoryIds = new HashSet<>(); + if (frontMatter.size() > 0) { + for (String key : frontMatter.keySet()) { + elementValue = frontMatter.get(key); + for (String ele : elementValue) { + switch (key) { + case "title": + post.setTitle(ele); + break; + case "date": + post.setCreateTime(DateUtil.parse(ele)); + break; + case "updated": + post.setUpdateTime(DateUtil.parse(ele)); + break; + case "permalink": + post.setUrl(ele); + break; + case "thumbnail": + post.setThumbnail(ele); + break; + case "status": + post.setStatus(PostStatus.valueOf(ele)); + break; + case "comments": + post.setDisallowComment(Boolean.parseBoolean(ele)); + break; + case "tags": + Tag tag = tagService.getByName(ele); + if (null == tag) { + tag = new Tag(); + tag.setName(ele); + tag.setSlugName(SlugUtils.slugify(ele)); + tag = tagService.create(tag); + } + tagIds.add(tag.getId()); + case "categories": + Category category = categoryService.getByName(ele); + if (null == category) { + category = new Category(); + category.setName(ele); + category.setSlugName(SlugUtils.slugify(ele)); + category.setDescription(ele); + category = categoryService.create(category); + } + categoryIds.add(category.getId()); + default: + break; + } + } + } + } + + post.setOriginalContent(markdown); + post.setFormatContent(content); + + return createBy(post, tagIds, categoryIds, false); } @Override diff --git a/src/main/java/run/halo/app/service/impl/TagServiceImpl.java b/src/main/java/run/halo/app/service/impl/TagServiceImpl.java index 67896e3d4..9b3310830 100644 --- a/src/main/java/run/halo/app/service/impl/TagServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/TagServiceImpl.java @@ -60,6 +60,12 @@ public class TagServiceImpl extends AbstractCrudService implements return tagRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("The tag does not exist").setErrorData(slugName)); } + + @Override + public Tag getByName(String name) { + return tagRepository.getByName(name).orElse(null); + } + @Override public TagDTO convertTo(Tag tag) { Assert.notNull(tag, "Tag must not be null"); From 98caa57e4750ddef161753f1d489957e708ec807 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Mon, 27 May 2019 17:31:25 +0800 Subject: [PATCH 09/31] 1.0.0-beta.8 --- build.gradle | 2 +- src/main/resources/admin/css/app.803dd628.css | 1 + src/main/resources/admin/css/app.d74a405f.css | 1 - ...{chunk-5d83fd61.7cf84e9e.css => chunk-02f1697e.7cf84e9e.css} | 0 src/main/resources/admin/css/chunk-1ea08528.db89d50a.css | 1 + src/main/resources/admin/css/chunk-4d54295e.43661ea3.css | 1 - ...{chunk-4fb0639b.210847fe.css => chunk-4fb0639b.743bdcba.css} | 0 ...{chunk-92a6af22.ca1bfaac.css => chunk-edd856c6.ca1bfaac.css} | 0 ...{chunk-cc47e7d0.bb8e6a18.css => chunk-efde06fa.aaca0f75.css} | 2 +- .../{chunk-vendors.6b95225a.css => chunk-vendors.80056587.css} | 0 src/main/resources/admin/index.html | 2 +- src/main/resources/admin/js/app.25d2f925.js | 1 - src/main/resources/admin/js/app.63c77087.js | 1 + .../{chunk-5d83fd61.71621386.js => chunk-02f1697e.fbb91c62.js} | 2 +- src/main/resources/admin/js/chunk-142c8832.0d298dce.js | 1 + src/main/resources/admin/js/chunk-142c8832.ac1f84d9.js | 1 - src/main/resources/admin/js/chunk-1c8b985a.8f4810a0.js | 1 - src/main/resources/admin/js/chunk-1c8b985a.d1e58af8.js | 1 + src/main/resources/admin/js/chunk-1ea08528.6dd705ab.js | 1 + .../{chunk-2d0d65a2.f7c7af76.js => chunk-2d0d65a2.d68d48c2.js} | 2 +- .../{chunk-31829c73.36a05806.js => chunk-31829c73.620e8a22.js} | 0 src/main/resources/admin/js/chunk-407d6578.1ef8e454.js | 1 + src/main/resources/admin/js/chunk-407d6578.b0b0e2da.js | 1 - src/main/resources/admin/js/chunk-4d54295e.e29bba1d.js | 1 - .../{chunk-4fb0639b.1668db6b.js => chunk-4fb0639b.1be7f2f2.js} | 0 .../{chunk-75751d79.f0f603bc.js => chunk-75751d79.1b49b36e.js} | 0 src/main/resources/admin/js/chunk-b6cd2e50.cc4cab63.js | 1 + src/main/resources/admin/js/chunk-b6cd2e50.d2c0d717.js | 1 - src/main/resources/admin/js/chunk-cc47e7d0.30a4457f.js | 1 - .../{chunk-92a6af22.b84ae833.js => chunk-edd856c6.20633ba8.js} | 2 +- src/main/resources/admin/js/chunk-efde06fa.9e1e510c.js | 1 + 31 files changed, 15 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/admin/css/app.803dd628.css delete mode 100644 src/main/resources/admin/css/app.d74a405f.css rename src/main/resources/admin/css/{chunk-5d83fd61.7cf84e9e.css => chunk-02f1697e.7cf84e9e.css} (100%) create mode 100644 src/main/resources/admin/css/chunk-1ea08528.db89d50a.css delete mode 100644 src/main/resources/admin/css/chunk-4d54295e.43661ea3.css rename src/main/resources/admin/css/{chunk-4fb0639b.210847fe.css => chunk-4fb0639b.743bdcba.css} (100%) rename src/main/resources/admin/css/{chunk-92a6af22.ca1bfaac.css => chunk-edd856c6.ca1bfaac.css} (100%) rename src/main/resources/admin/css/{chunk-cc47e7d0.bb8e6a18.css => chunk-efde06fa.aaca0f75.css} (52%) rename src/main/resources/admin/css/{chunk-vendors.6b95225a.css => chunk-vendors.80056587.css} (100%) delete mode 100644 src/main/resources/admin/js/app.25d2f925.js create mode 100644 src/main/resources/admin/js/app.63c77087.js rename src/main/resources/admin/js/{chunk-5d83fd61.71621386.js => chunk-02f1697e.fbb91c62.js} (56%) create mode 100644 src/main/resources/admin/js/chunk-142c8832.0d298dce.js delete mode 100644 src/main/resources/admin/js/chunk-142c8832.ac1f84d9.js delete mode 100644 src/main/resources/admin/js/chunk-1c8b985a.8f4810a0.js create mode 100644 src/main/resources/admin/js/chunk-1c8b985a.d1e58af8.js create mode 100644 src/main/resources/admin/js/chunk-1ea08528.6dd705ab.js rename src/main/resources/admin/js/{chunk-2d0d65a2.f7c7af76.js => chunk-2d0d65a2.d68d48c2.js} (95%) rename src/main/resources/admin/js/{chunk-31829c73.36a05806.js => chunk-31829c73.620e8a22.js} (100%) create mode 100644 src/main/resources/admin/js/chunk-407d6578.1ef8e454.js delete mode 100644 src/main/resources/admin/js/chunk-407d6578.b0b0e2da.js delete mode 100644 src/main/resources/admin/js/chunk-4d54295e.e29bba1d.js rename src/main/resources/admin/js/{chunk-4fb0639b.1668db6b.js => chunk-4fb0639b.1be7f2f2.js} (100%) rename src/main/resources/admin/js/{chunk-75751d79.f0f603bc.js => chunk-75751d79.1b49b36e.js} (100%) create mode 100644 src/main/resources/admin/js/chunk-b6cd2e50.cc4cab63.js delete mode 100644 src/main/resources/admin/js/chunk-b6cd2e50.d2c0d717.js delete mode 100644 src/main/resources/admin/js/chunk-cc47e7d0.30a4457f.js rename src/main/resources/admin/js/{chunk-92a6af22.b84ae833.js => chunk-edd856c6.20633ba8.js} (99%) create mode 100644 src/main/resources/admin/js/chunk-efde06fa.9e1e510c.js diff --git a/build.gradle b/build.gradle index 98ef1b170..782e8cf2d 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ apply plugin: 'io.spring.dependency-management' group = 'run.halo.app' archivesBaseName = 'halo' -version = '1.0.0-beta.7' +version = '1.0.0-beta.8' sourceCompatibility = '1.8' description = 'Halo, personal blog system developed in Java.' diff --git a/src/main/resources/admin/css/app.803dd628.css b/src/main/resources/admin/css/app.803dd628.css new file mode 100644 index 000000000..ce1a0b0bf --- /dev/null +++ b/src/main/resources/admin/css/app.803dd628.css @@ -0,0 +1 @@ +#app{height:100%}.logo-sub-title{padding-left:10px}.header-comment[data-v-12990b48]{display:inline-block;-webkit-transition:all .3s;transition:all .3s}.header-comment span[data-v-12990b48]{vertical-align:initial}.setting-drawer-index-item[data-v-3cea9c3c]{margin-bottom:24px}.setting-drawer-index-item .setting-drawer-index-title[data-v-3cea9c3c]{font-size:14px;color:rgba(0,0,0,.85);line-height:22px;margin-bottom:12px}.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-1836b06b]{display:-webkit-box;display:-ms-flexbox;display:flex}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-1836b06b]{margin-right:16px;position:relative;border-radius:4px;cursor:pointer}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-1836b06b]{width:48px}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-1836b06b]{position:absolute;top:0;right:0;width:100%;padding-top:15px;padding-left:24px;height:100%;color:#1890ff;font-size:14px;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-1836b06b]{width:20px;height:20px;border-radius:2px;float:left;cursor:pointer;margin-right:8px;padding-left:0;padding-right:0;text-align:center;color:#fff;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-1836b06b]{font-size:14px}.setting-drawer-index-handle[data-v-1836b06b]{position:absolute;top:240px;background:#1890ff;width:48px;height:48px;right:300px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;pointer-events:auto;z-index:1001;text-align:center;font-size:16px;border-radius:4px 0 0 4px}.setting-drawer-index-handle i[data-v-1836b06b]{color:#fff;font-size:20px}.avatar[data-v-9b91c188]{margin-right:.3rem}.header-animat{position:relative;z-index:999}.showHeader-enter-active{-webkit-transition:all .25s ease;transition:all .25s ease}.showHeader-leave-active{-webkit-transition:all .5s ease;transition:all .5s ease}.showHeader-enter,.showHeader-leave-to{opacity:0}.footer[data-v-02e9579a]{padding:0 16px;margin:48px 0 0;text-align:center}.footer .copyright[data-v-02e9579a]{color:rgba(0,0,0,.45);font-size:14px}::-webkit-scrollbar{width:6px;height:6px;background-color:#eee}::-webkit-scrollbar-thumb{background-color:#1890ff;cursor:pointer}::-webkit-scrollbar-track{background-color:#eee;cursor:pointer}body{overflow-y:scroll;padding:0!important}.layout.ant-layout{height:auto;overflow-x:hidden}.layout.ant-layout.mobile .ant-layout-content .content,.layout.ant-layout.tablet .ant-layout-content .content{margin:24px 0 0}.layout.ant-layout.mobile .ant-table-wrapper .ant-table-content,.layout.ant-layout.tablet .ant-table-wrapper .ant-table-content{overflow-y:auto}.layout.ant-layout.mobile .ant-table-wrapper .ant-table-body,.layout.ant-layout.tablet .ant-table-wrapper .ant-table-body{min-width:800px}.layout.ant-layout.mobile .topmenu.content-width-Fluid .header-index-wide,.layout.ant-layout.tablet .topmenu.content-width-Fluid .header-index-wide{margin-left:0}.layout.ant-layout.mobile .sidemenu .ant-header-fixedHeader.ant-header-side-closed,.layout.ant-layout.mobile .sidemenu .ant-header-fixedHeader.ant-header-side-opened{width:100%}.layout.ant-layout.ant-layout-has-sider{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.layout.ant-layout .trigger{font-size:20px;line-height:64px;padding:0 24px;cursor:pointer;-webkit-transition:color .3s;transition:color .3s}.layout.ant-layout .trigger:hover{background:rgba(0,0,0,.025)}.layout.ant-layout .topmenu .ant-header-fixedHeader{position:fixed;top:0;right:0;z-index:9;width:100%;-webkit-transition:width .2s;transition:width .2s}.layout.ant-layout .topmenu .ant-header-fixedHeader.ant-header-side-closed,.layout.ant-layout .topmenu .ant-header-fixedHeader.ant-header-side-opened{width:100%}.layout.ant-layout .topmenu.content-width-Fluid .header-index-wide{max-width:unset;margin-left:24px}.layout.ant-layout .topmenu.content-width-Fluid .page-header-index-wide{max-width:unset}.layout.ant-layout .sidemenu .ant-header-fixedHeader{position:fixed;top:0;right:0;z-index:9;width:100%;-webkit-transition:width .2s;transition:width .2s}.layout.ant-layout .sidemenu .ant-header-fixedHeader.ant-header-side-opened{width:calc(100% - 256px)}.layout.ant-layout .sidemenu .ant-header-fixedHeader.ant-header-side-closed{width:calc(100% - 80px)}.layout.ant-layout .header{height:64px;padding:0 12px 0 0;background:#fff;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08);box-shadow:0 1px 4px rgba(0,21,41,.08);position:relative}.layout.ant-layout .header .user-wrapper,.layout.ant-layout .top-nav-header-index .user-wrapper{float:right;height:100%}.layout.ant-layout .header .user-wrapper .action,.layout.ant-layout .top-nav-header-index .user-wrapper .action{cursor:pointer;padding:0 12px;display:inline-block;-webkit-transition:all .3s;transition:all .3s;height:100%;color:rgba(0,0,0,.65)}.layout.ant-layout .header .user-wrapper .action:hover,.layout.ant-layout .top-nav-header-index .user-wrapper .action:hover{background:rgba(0,0,0,.025)}.layout.ant-layout .header .user-wrapper .action .avatar,.layout.ant-layout .top-nav-header-index .user-wrapper .action .avatar{margin:20px 0 20px 0;color:#1890ff;background:hsla(0,0%,100%,.85);vertical-align:middle}.layout.ant-layout .header .user-wrapper .action .icon,.layout.ant-layout .top-nav-header-index .user-wrapper .action .icon{font-size:16px;padding:4px}.layout.ant-layout .header.dark .user-wrapper .action,.layout.ant-layout .header.dark .user-wrapper .action a,.layout.ant-layout .top-nav-header-index.dark .user-wrapper .action,.layout.ant-layout .top-nav-header-index.dark .user-wrapper .action a{color:hsla(0,0%,100%,.85)}.layout.ant-layout .header.dark .user-wrapper .action:hover,.layout.ant-layout .top-nav-header-index.dark .user-wrapper .action:hover{background:hsla(0,0%,100%,.16)}.layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .trigger,.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .trigger{color:hsla(0,0%,100%,.85);padding:0 24px}.layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header,.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header{-webkit-box-flex:0;-ms-flex:0;flex:0;text-align:center;line-height:58px}.layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1,.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1{display:none}.layout.ant-layout.mobile .top-nav-header-index.light .header-index-wide .header-index-left .trigger,.layout.ant-layout.tablet .top-nav-header-index.light .header-index-wide .header-index-left .trigger{color:rgba(0,0,0,.65)}.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo>a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .ant-menu.ant-menu-horizontal{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;white-space:normal}.layout.ant-layout .top-nav-header-index{-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08);box-shadow:0 1px 4px rgba(0,21,41,.08);position:relative;-webkit-transition:background .3s,width .2s;transition:background .3s,width .2s}.layout.ant-layout .top-nav-header-index .header-index-wide{max-width:1200px;margin:auto;padding-left:0;display:-webkit-box;display:-ms-flexbox;display:flex;height:64px}.layout.ant-layout .top-nav-header-index .header-index-wide .ant-menu.ant-menu-horizontal{border:none;height:64px;line-height:64px}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:-webkit-box;display:-ms-flexbox;display:flex}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header{width:165px;height:64px;position:relative;line-height:64px;-webkit-transition:all .3s;transition:all .3s;overflow:hidden}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header img,.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header svg{display:inline-block;vertical-align:middle;height:32px;width:32px}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1{color:#fff;display:inline-block;vertical-align:top;font-size:16px;margin:0;font-weight:600}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-right{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:64px;overflow:hidden}.layout.ant-layout .top-nav-header-index.light{background-color:#fff}.layout.ant-layout .top-nav-header-index.light .header-index-wide .header-index-left .logo h1{color:#002140}.layout.ant-layout .layout-content{margin:24px 24px 0;height:100%;height:64px;padding:0 12px 0 0}.topmenu .page-header-index-wide{max-width:1200px;margin:0 auto}.ant-drawer.drawer-sider .sider{-webkit-box-shadow:none;box-shadow:none}.ant-drawer.drawer-sider.dark .ant-drawer-content{background-color:#001529}.ant-drawer.drawer-sider.light{-webkit-box-shadow:none;box-shadow:none}.ant-drawer.drawer-sider.light .ant-drawer-content{background-color:#fff}.ant-drawer.drawer-sider .ant-drawer-body{padding:0}.sider{-webkit-box-shadow:2px 0 6px rgba(0,21,41,.35);box-shadow:2px 0 6px rgba(0,21,41,.35);position:relative;z-index:10;height:auto}.sider .ant-layout-sider-children{padding-top:64px;overflow-y:hidden}.sider .ant-layout-sider-children:hover{overflow-y:auto}.sider.ant-fixed-sidemenu{position:fixed;height:100%}.sider .logo{position:absolute;text-align:center;top:0;left:0;width:100%;height:64px;line-height:64px;-webkit-transition:all .3s;transition:all .3s;background:#002140;overflow:hidden;z-index:9}.sider .logo h1,.sider .logo img,.sider .logo svg{display:inline-block;vertical-align:middle}.sider .logo img,.sider .logo svg{height:32px;width:32px}.sider .logo h1{color:#fff;font-size:20px;margin:0;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:600;vertical-align:middle}.sider.light{background-color:#fff;-webkit-box-shadow:2px 0 8px 0 rgba(29,35,41,.05);box-shadow:2px 0 8px 0 rgba(29,35,41,.05)}.sider.light .logo{background:#fff;-webkit-box-shadow:1px 1px 0 0 #e8e8e8;box-shadow:1px 1px 0 0 #e8e8e8}.sider.light .logo h1{color:unset}.sider.light .ant-menu-light{border-right-color:transparent}.user-dropdown-menu span{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.user-dropdown-menu-wrapper.ant-dropdown-menu{padding:4px 0}.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item{width:160px}.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item>.anticon:first-child,.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item>a>.anticon:first-child,.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-submenu-title>.anticon:first-child .ant-dropdown-menu-submenu-title>a>.anticon:first-child{min-width:12px;margin-right:8px}.table-alert{margin-bottom:16px}.table-page-search-wrapper .ant-form-inline .ant-form-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px;margin-right:0}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:inline-block;vertical-align:middle}.table-page-search-wrapper .ant-form-inline .ant-form-item>.ant-form-item-label{line-height:32px;padding-right:8px;width:auto}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control{height:32px;line-height:32px}.table-page-search-wrapper .table-page-search-submitButtons{display:block;margin-bottom:24px;white-space:nowrap}.content .table-operator{margin-bottom:18px}.content .table-operator button{margin-right:8px}.ant-card .ant-card-head{padding:0 16px!important}.ant-card .ant-card-head .ant-card-head-wrapper .ant-card-head-title{padding:12px 0!important}.ant-card-wider-padding .ant-card-body{padding:16px!important}.comment-tab-wrapper .ant-card-body{padding:0!important}.ant-form .ant-form-item{padding-bottom:0!important;margin-bottom:20px}.ant-list-item{word-break:break-all}.card-container{background:#f5f5f5}.card-container>.ant-tabs-card>.ant-tabs-content{margin-top:-16px}.card-container>.ant-tabs-card>.ant-tabs-content>.ant-tabs-tabpane{background:#fff;padding:16px}.card-container>.ant-tabs-card>.ant-tabs-bar{border-color:#fff}.card-container>.ant-tabs-card>.ant-tabs-bar .ant-tabs-tab{border:none!important;margin-right:0!important;background:transparent}.card-container>.ant-tabs-card>.ant-tabs-bar .ant-tabs-tab-active{border-color:#fff;background:#fff}.ant-comment .ant-comment-actions{margin-bottom:0!important;margin-top:0!important;padding-bottom:0!important}.ant-comment-inner{padding:0!important}.ant-comment-inner .ant-comment-content .ant-comment-content-detail p{margin-top:1rem;margin-bottom:0}.bottom-control{position:absolute;bottom:0;width:100%;border-top:1px solid #e8e8e8;padding:10px 16px;text-align:right;left:0;background:#fff;border-radius:0 0 4px 4px}.page-wrapper{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.page-wrapper .ant-pagination-options-size-changer.ant-select{margin:0}.page-wrapper .pagination{margin-top:1rem}.divider-transparent{background:transparent!important}.custom-tab-wrapper .ant-tabs-nav .ant-tabs-tab{margin:0 24px 0 0;padding:12px 0}.comment-content-wrapper{margin-bottom:0}.comment-content-wrapper h1{font-size:18px}.comment-content-wrapper h2{font-size:16px}.comment-content-wrapper h3{font-size:14px}.comment-content-wrapper h4{font-size:12px}.comment-content-wrapper h5{font-size:10px}.comment-content-wrapper h6{font-size:8px}.comment-content-wrapper img{width:100%}.comment-content-wrapper p{margin-bottom:0}.page-transition-enter,.page-transition-leave-active{opacity:0}.page-transition-enter .page-transition-container,.page-transition-leave-active .page-transition-container{-webkit-transform:scale(1.1);transform:scale(1.1)}.page-header[data-v-3f857d04]{background:#fff;padding:16px 32px 0;border-bottom:1px solid #e8e8e8}.page-header .breadcrumb[data-v-3f857d04]{margin-bottom:16px}.page-header .detail[data-v-3f857d04]{display:-webkit-box;display:-ms-flexbox;display:flex}.page-header .detail .avatar[data-v-3f857d04]{-webkit-box-flex:0;-ms-flex:0 1 72px;flex:0 1 72px;margin:0 24px 8px 0}.page-header .detail .avatar>span[data-v-3f857d04]{border-radius:72px;display:block;width:72px;height:72px}.page-header .detail .main[data-v-3f857d04]{width:100%;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.page-header .detail .main .row[data-v-3f857d04]{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.page-header .detail .main .row .avatar[data-v-3f857d04]{margin-bottom:16px}.page-header .detail .main .title[data-v-3f857d04]{font-size:20px;line-height:28px;font-weight:500;color:rgba(0,0,0,.85);margin-bottom:16px;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.page-header .detail .main .logo[data-v-3f857d04]{width:28px;height:28px;border-radius:4px;margin-right:16px}.page-header .detail .main .content[data-v-3f857d04],.page-header .detail .main .headerContent[data-v-3f857d04]{-webkit-box-flex:1;-ms-flex:auto;flex:auto;color:rgba(0,0,0,.45);line-height:22px}.page-header .detail .main .content .link[data-v-3f857d04],.page-header .detail .main .headerContent .link[data-v-3f857d04]{margin-top:16px;line-height:24px}.page-header .detail .main .content .link a[data-v-3f857d04],.page-header .detail .main .headerContent .link a[data-v-3f857d04]{font-size:14px;margin-right:32px}.page-header .detail .main .extra[data-v-3f857d04]{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:88px;min-width:242px;text-align:right}.page-header .detail .main .action[data-v-3f857d04]{margin-left:56px;min-width:266px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;text-align:right}.page-header .detail .main .action[data-v-3f857d04]:empty{display:none}.mobile .page-header .main .row[data-v-3f857d04]{-ms-flex-wrap:wrap;flex-wrap:wrap}.mobile .page-header .main .row .avatar[data-v-3f857d04]{-webkit-box-flex:0;-ms-flex:0 1 25%;flex:0 1 25%;margin:0 2% 8px 0}.mobile .page-header .main .row .content[data-v-3f857d04],.mobile .page-header .main .row .headerContent[data-v-3f857d04]{-webkit-box-flex:0;-ms-flex:0 1 70%;flex:0 1 70%}.mobile .page-header .main .row .content .link[data-v-3f857d04],.mobile .page-header .main .row .headerContent .link[data-v-3f857d04]{margin-top:16px;line-height:24px}.mobile .page-header .main .row .content .link a[data-v-3f857d04],.mobile .page-header .main .row .headerContent .link a[data-v-3f857d04]{font-size:14px;margin-right:10px}.mobile .page-header .main .row .extra[data-v-3f857d04]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin-left:0;min-width:0;text-align:right}.mobile .page-header .main .row .action[data-v-3f857d04]{margin-left:unset;min-width:266px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;text-align:left;margin-bottom:12px}.mobile .page-header .main .row .action[data-v-3f857d04]:empty{display:none}.content[data-v-9c624dc6]{margin:24px 24px 0}.content .link[data-v-9c624dc6]{margin-top:16px}.content .link[data-v-9c624dc6]:not(:empty){margin-bottom:16px}.content .link a[data-v-9c624dc6]{margin-right:32px;height:24px;line-height:24px;display:inline-block}.content .link a i[data-v-9c624dc6]{font-size:24px;margin-right:8px;vertical-align:middle}.content .link a span[data-v-9c624dc6]{height:24px;line-height:24px;display:inline-block;vertical-align:middle}@font-face{font-family:Chinese Quote;src:local("PingFang SC"),local("SimSun");unicode-range:U+2018,U+2019,U+201c,U+201d}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:14px;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65);background-color:#fff}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;background-color:transparent;text-decoration:none;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:focus{text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{outline:0;text-decoration:none}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5em;font-size:1.5em;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{background:#1890ff;color:#fff}::selection{background:#1890ff;color:#fff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.anticon{display:inline-block;font-style:normal;vertical-align:-.125em;text-align:center;text-transform:none;line-height:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@-webkit-keyframes antMoveRightIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes antMoveRightIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node],[ant-click-animating]{position:relative}.ant-click-animating-node,[ant-click-animating-without-extra-node]:after{content:"";position:absolute;top:-1px;left:-1px;bottom:-1px;right:-1px;border-radius:inherit;border:0 solid #1890ff;opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;display:block;pointer-events:none}@-webkit-keyframes waveEffect{to{top:-6px;left:-6px;bottom:-6px;right:-6px;border-width:6px}}@keyframes waveEffect{to{top:-6px;left:-6px;bottom:-6px;right:-6px;border-width:6px}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes antSlideUpIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes antSlideUpOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@keyframes antSlideUpOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@-webkit-keyframes antSlideDownIn{0%{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes antSlideDownIn{0%{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes antSlideDownOut{0%{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@keyframes antSlideDownOut{0%{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@-webkit-keyframes antSlideLeftIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes antSlideLeftIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes antSlideLeftOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@keyframes antSlideLeftOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@-webkit-keyframes antSlideRightIn{0%{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes antSlideRightIn{0%{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes antSlideRightOut{0%{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@keyframes antSlideRightOut{0%{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomIn{0%{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}}@-webkit-keyframes antZoomBigIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomBigIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomUpIn{0%{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomUpIn{0%{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomUpOut{0%{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomLeftIn{0%{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomLeftIn{0%{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomLeftOut{0%{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomRightIn{0%{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomRightIn{0%{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomRightOut{0%{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomDownIn{0%{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomDownIn{0%{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomDownOut{0%{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}}.ant-motion-collapse{overflow:hidden}.ant-motion-collapse-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}button,html [type=button]{-webkit-appearance:none}.ant-pro-footer-toolbar{position:fixed;width:100%;bottom:0;right:0;height:56px;line-height:56px;-webkit-box-shadow:0 -1px 2px rgba(0,0,0,.03);box-shadow:0 -1px 2px rgba(0,0,0,.03);background:#fff;border-top:1px solid #e8e8e8;padding:0 24px;z-index:1000}.ant-pro-footer-toolbar:after{content:"";display:block;clear:both} \ No newline at end of file diff --git a/src/main/resources/admin/css/app.d74a405f.css b/src/main/resources/admin/css/app.d74a405f.css deleted file mode 100644 index 49a8c12f2..000000000 --- a/src/main/resources/admin/css/app.d74a405f.css +++ /dev/null @@ -1 +0,0 @@ -#app{height:100%}.logo-sub-title{padding-left:10px}.header-comment[data-v-12990b48]{display:inline-block;-webkit-transition:all .3s;transition:all .3s}.header-comment span[data-v-12990b48]{vertical-align:initial}.setting-drawer-index-item[data-v-3cea9c3c]{margin-bottom:24px}.setting-drawer-index-item .setting-drawer-index-title[data-v-3cea9c3c]{font-size:14px;color:rgba(0,0,0,.85);line-height:22px;margin-bottom:12px}.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-1836b06b]{display:-webkit-box;display:-ms-flexbox;display:flex}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-1836b06b]{margin-right:16px;position:relative;border-radius:4px;cursor:pointer}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-1836b06b]{width:48px}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-1836b06b]{position:absolute;top:0;right:0;width:100%;padding-top:15px;padding-left:24px;height:100%;color:#1890ff;font-size:14px;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-1836b06b]{width:20px;height:20px;border-radius:2px;float:left;cursor:pointer;margin-right:8px;padding-left:0;padding-right:0;text-align:center;color:#fff;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-1836b06b]{font-size:14px}.setting-drawer-index-handle[data-v-1836b06b]{position:absolute;top:240px;background:#1890ff;width:48px;height:48px;right:300px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;pointer-events:auto;z-index:1001;text-align:center;font-size:16px;border-radius:4px 0 0 4px}.setting-drawer-index-handle i[data-v-1836b06b]{color:#fff;font-size:20px}.avatar[data-v-9b91c188]{margin-right:.3rem}.header-animat{position:relative;z-index:999}.showHeader-enter-active{-webkit-transition:all .25s ease;transition:all .25s ease}.showHeader-leave-active{-webkit-transition:all .5s ease;transition:all .5s ease}.showHeader-enter,.showHeader-leave-to{opacity:0}.footer[data-v-02e9579a]{padding:0 16px;margin:48px 0 0;text-align:center}.footer .copyright[data-v-02e9579a]{color:rgba(0,0,0,.45);font-size:14px}body{overflow-y:scroll;padding:0!important}.layout.ant-layout{height:auto;overflow-x:hidden}.layout.ant-layout.mobile .ant-layout-content .content,.layout.ant-layout.tablet .ant-layout-content .content{margin:24px 0 0}.layout.ant-layout.mobile .ant-table-wrapper .ant-table-content,.layout.ant-layout.tablet .ant-table-wrapper .ant-table-content{overflow-y:auto}.layout.ant-layout.mobile .ant-table-wrapper .ant-table-body,.layout.ant-layout.tablet .ant-table-wrapper .ant-table-body{min-width:800px}.layout.ant-layout.mobile .topmenu.content-width-Fluid .header-index-wide,.layout.ant-layout.tablet .topmenu.content-width-Fluid .header-index-wide{margin-left:0}.layout.ant-layout.mobile .sidemenu .ant-header-fixedHeader.ant-header-side-closed,.layout.ant-layout.mobile .sidemenu .ant-header-fixedHeader.ant-header-side-opened{width:100%}.layout.ant-layout.ant-layout-has-sider{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.layout.ant-layout .trigger{font-size:20px;line-height:64px;padding:0 24px;cursor:pointer;-webkit-transition:color .3s;transition:color .3s}.layout.ant-layout .trigger:hover{background:rgba(0,0,0,.025)}.layout.ant-layout .topmenu .ant-header-fixedHeader{position:fixed;top:0;right:0;z-index:9;width:100%;-webkit-transition:width .2s;transition:width .2s}.layout.ant-layout .topmenu .ant-header-fixedHeader.ant-header-side-closed,.layout.ant-layout .topmenu .ant-header-fixedHeader.ant-header-side-opened{width:100%}.layout.ant-layout .topmenu.content-width-Fluid .header-index-wide{max-width:unset;margin-left:24px}.layout.ant-layout .topmenu.content-width-Fluid .page-header-index-wide{max-width:unset}.layout.ant-layout .sidemenu .ant-header-fixedHeader{position:fixed;top:0;right:0;z-index:9;width:100%;-webkit-transition:width .2s;transition:width .2s}.layout.ant-layout .sidemenu .ant-header-fixedHeader.ant-header-side-opened{width:calc(100% - 256px)}.layout.ant-layout .sidemenu .ant-header-fixedHeader.ant-header-side-closed{width:calc(100% - 80px)}.layout.ant-layout .header{height:64px;padding:0 12px 0 0;background:#fff;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08);box-shadow:0 1px 4px rgba(0,21,41,.08);position:relative}.layout.ant-layout .header .user-wrapper,.layout.ant-layout .top-nav-header-index .user-wrapper{float:right;height:100%}.layout.ant-layout .header .user-wrapper .action,.layout.ant-layout .top-nav-header-index .user-wrapper .action{cursor:pointer;padding:0 12px;display:inline-block;-webkit-transition:all .3s;transition:all .3s;height:100%;color:rgba(0,0,0,.65)}.layout.ant-layout .header .user-wrapper .action:hover,.layout.ant-layout .top-nav-header-index .user-wrapper .action:hover{background:rgba(0,0,0,.025)}.layout.ant-layout .header .user-wrapper .action .avatar,.layout.ant-layout .top-nav-header-index .user-wrapper .action .avatar{margin:20px 0 20px 0;color:#1890ff;background:hsla(0,0%,100%,.85);vertical-align:middle}.layout.ant-layout .header .user-wrapper .action .icon,.layout.ant-layout .top-nav-header-index .user-wrapper .action .icon{font-size:16px;padding:4px}.layout.ant-layout .header.dark .user-wrapper .action,.layout.ant-layout .header.dark .user-wrapper .action a,.layout.ant-layout .top-nav-header-index.dark .user-wrapper .action,.layout.ant-layout .top-nav-header-index.dark .user-wrapper .action a{color:hsla(0,0%,100%,.85)}.layout.ant-layout .header.dark .user-wrapper .action:hover,.layout.ant-layout .top-nav-header-index.dark .user-wrapper .action:hover{background:hsla(0,0%,100%,.16)}.layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .trigger,.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .trigger{color:hsla(0,0%,100%,.85);padding:0 24px}.layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header,.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header{-webkit-box-flex:0;-ms-flex:0;flex:0;text-align:center;line-height:58px}.layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1,.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1{display:none}.layout.ant-layout.mobile .top-nav-header-index.light .header-index-wide .header-index-left .trigger,.layout.ant-layout.tablet .top-nav-header-index.light .header-index-wide .header-index-left .trigger{color:rgba(0,0,0,.65)}.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo>a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layout.ant-layout.tablet .top-nav-header-index .header-index-wide .ant-menu.ant-menu-horizontal{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;white-space:normal}.layout.ant-layout .top-nav-header-index{-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08);box-shadow:0 1px 4px rgba(0,21,41,.08);position:relative;-webkit-transition:background .3s,width .2s;transition:background .3s,width .2s}.layout.ant-layout .top-nav-header-index .header-index-wide{max-width:1200px;margin:auto;padding-left:0;display:-webkit-box;display:-ms-flexbox;display:flex;height:64px}.layout.ant-layout .top-nav-header-index .header-index-wide .ant-menu.ant-menu-horizontal{border:none;height:64px;line-height:64px}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:-webkit-box;display:-ms-flexbox;display:flex}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header{width:165px;height:64px;position:relative;line-height:64px;-webkit-transition:all .3s;transition:all .3s;overflow:hidden}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header img,.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header svg{display:inline-block;vertical-align:middle;height:32px;width:32px}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1{color:#fff;display:inline-block;vertical-align:top;font-size:16px;margin:0;font-weight:600}.layout.ant-layout .top-nav-header-index .header-index-wide .header-index-right{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:64px;overflow:hidden}.layout.ant-layout .top-nav-header-index.light{background-color:#fff}.layout.ant-layout .top-nav-header-index.light .header-index-wide .header-index-left .logo h1{color:#002140}.layout.ant-layout .layout-content{margin:24px 24px 0;height:100%;height:64px;padding:0 12px 0 0}.topmenu .page-header-index-wide{max-width:1200px;margin:0 auto}.ant-drawer.drawer-sider .sider{-webkit-box-shadow:none;box-shadow:none}.ant-drawer.drawer-sider.dark .ant-drawer-content{background-color:#001529}.ant-drawer.drawer-sider.light{-webkit-box-shadow:none;box-shadow:none}.ant-drawer.drawer-sider.light .ant-drawer-content{background-color:#fff}.ant-drawer.drawer-sider .ant-drawer-body{padding:0}.sider{-webkit-box-shadow:2px 0 6px rgba(0,21,41,.35);box-shadow:2px 0 6px rgba(0,21,41,.35);position:relative;z-index:10;height:auto}.sider .ant-layout-sider-children{padding-top:64px;overflow-y:hidden}.sider .ant-layout-sider-children:hover{overflow-y:auto}.sider.ant-fixed-sidemenu{position:fixed;height:100%}.sider .logo{position:absolute;text-align:center;top:0;left:0;width:100%;height:64px;line-height:64px;-webkit-transition:all .3s;transition:all .3s;background:#002140;overflow:hidden;z-index:9}.sider .logo h1,.sider .logo img,.sider .logo svg{display:inline-block;vertical-align:middle}.sider .logo img,.sider .logo svg{height:32px;width:32px}.sider .logo h1{color:#fff;font-size:20px;margin:0;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:600;vertical-align:middle}.sider.light{background-color:#fff;-webkit-box-shadow:2px 0 8px 0 rgba(29,35,41,.05);box-shadow:2px 0 8px 0 rgba(29,35,41,.05)}.sider.light .logo{background:#fff;-webkit-box-shadow:1px 1px 0 0 #e8e8e8;box-shadow:1px 1px 0 0 #e8e8e8}.sider.light .logo h1{color:unset}.sider.light .ant-menu-light{border-right-color:transparent}.user-dropdown-menu span{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.user-dropdown-menu-wrapper.ant-dropdown-menu{padding:4px 0}.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item{width:160px}.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item>.anticon:first-child,.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item>a>.anticon:first-child,.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-submenu-title>.anticon:first-child .ant-dropdown-menu-submenu-title>a>.anticon:first-child{min-width:12px;margin-right:8px}.table-alert{margin-bottom:16px}.table-page-search-wrapper .ant-form-inline .ant-form-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px;margin-right:0}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:inline-block;vertical-align:middle}.table-page-search-wrapper .ant-form-inline .ant-form-item>.ant-form-item-label{line-height:32px;padding-right:8px;width:auto}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control{height:32px;line-height:32px}.table-page-search-wrapper .table-page-search-submitButtons{display:block;margin-bottom:24px;white-space:nowrap}.content .table-operator{margin-bottom:18px}.content .table-operator button{margin-right:8px}.ant-card .ant-card-head{padding:0 16px!important}.ant-card .ant-card-head .ant-card-head-wrapper .ant-card-head-title{padding:12px 0!important}.ant-card-wider-padding .ant-card-body{padding:16px!important}.comment-tab-wrapper .ant-card-body{padding:0!important}.ant-form .ant-form-item{padding-bottom:0!important;margin-bottom:20px}.ant-list-item{word-break:break-all}.card-container{background:#f5f5f5}.card-container>.ant-tabs-card>.ant-tabs-content{margin-top:-16px}.card-container>.ant-tabs-card>.ant-tabs-content>.ant-tabs-tabpane{background:#fff;padding:16px}.card-container>.ant-tabs-card>.ant-tabs-bar{border-color:#fff}.card-container>.ant-tabs-card>.ant-tabs-bar .ant-tabs-tab{border:none!important;margin-right:0!important;background:transparent}.card-container>.ant-tabs-card>.ant-tabs-bar .ant-tabs-tab-active{border-color:#fff;background:#fff}.ant-comment .ant-comment-actions{margin-bottom:0!important;margin-top:0!important;padding-bottom:0!important}.ant-comment-inner{padding:0!important}.ant-comment-inner .ant-comment-content .ant-comment-content-detail p{margin-top:1rem;margin-bottom:0}.bottom-control{position:absolute;bottom:0;width:100%;border-top:1px solid #e8e8e8;padding:10px 16px;text-align:right;left:0;background:#fff;border-radius:0 0 4px 4px}.page-wrapper{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.page-wrapper .ant-pagination-options-size-changer.ant-select{margin:0}.page-wrapper .pagination{margin-top:1rem}.divider-transparent{background:transparent!important}.custom-tab-wrapper .ant-tabs-nav .ant-tabs-tab{margin:0 24px 0 0;padding:12px 0}.comment-content-wrapper h1{font-size:18px}.comment-content-wrapper h2{font-size:16px}.comment-content-wrapper h3{font-size:14px}.comment-content-wrapper h4{font-size:12px}.comment-content-wrapper h5{font-size:10px}.comment-content-wrapper h6{font-size:8px}.comment-content-wrapper img{width:100%}.page-transition-enter,.page-transition-leave-active{opacity:0}.page-transition-enter .page-transition-container,.page-transition-leave-active .page-transition-container{-webkit-transform:scale(1.1);transform:scale(1.1)}.page-header[data-v-3f857d04]{background:#fff;padding:16px 32px 0;border-bottom:1px solid #e8e8e8}.page-header .breadcrumb[data-v-3f857d04]{margin-bottom:16px}.page-header .detail[data-v-3f857d04]{display:-webkit-box;display:-ms-flexbox;display:flex}.page-header .detail .avatar[data-v-3f857d04]{-webkit-box-flex:0;-ms-flex:0 1 72px;flex:0 1 72px;margin:0 24px 8px 0}.page-header .detail .avatar>span[data-v-3f857d04]{border-radius:72px;display:block;width:72px;height:72px}.page-header .detail .main[data-v-3f857d04]{width:100%;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.page-header .detail .main .row[data-v-3f857d04]{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.page-header .detail .main .row .avatar[data-v-3f857d04]{margin-bottom:16px}.page-header .detail .main .title[data-v-3f857d04]{font-size:20px;line-height:28px;font-weight:500;color:rgba(0,0,0,.85);margin-bottom:16px;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.page-header .detail .main .logo[data-v-3f857d04]{width:28px;height:28px;border-radius:4px;margin-right:16px}.page-header .detail .main .content[data-v-3f857d04],.page-header .detail .main .headerContent[data-v-3f857d04]{-webkit-box-flex:1;-ms-flex:auto;flex:auto;color:rgba(0,0,0,.45);line-height:22px}.page-header .detail .main .content .link[data-v-3f857d04],.page-header .detail .main .headerContent .link[data-v-3f857d04]{margin-top:16px;line-height:24px}.page-header .detail .main .content .link a[data-v-3f857d04],.page-header .detail .main .headerContent .link a[data-v-3f857d04]{font-size:14px;margin-right:32px}.page-header .detail .main .extra[data-v-3f857d04]{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:88px;min-width:242px;text-align:right}.page-header .detail .main .action[data-v-3f857d04]{margin-left:56px;min-width:266px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;text-align:right}.page-header .detail .main .action[data-v-3f857d04]:empty{display:none}.mobile .page-header .main .row[data-v-3f857d04]{-ms-flex-wrap:wrap;flex-wrap:wrap}.mobile .page-header .main .row .avatar[data-v-3f857d04]{-webkit-box-flex:0;-ms-flex:0 1 25%;flex:0 1 25%;margin:0 2% 8px 0}.mobile .page-header .main .row .content[data-v-3f857d04],.mobile .page-header .main .row .headerContent[data-v-3f857d04]{-webkit-box-flex:0;-ms-flex:0 1 70%;flex:0 1 70%}.mobile .page-header .main .row .content .link[data-v-3f857d04],.mobile .page-header .main .row .headerContent .link[data-v-3f857d04]{margin-top:16px;line-height:24px}.mobile .page-header .main .row .content .link a[data-v-3f857d04],.mobile .page-header .main .row .headerContent .link a[data-v-3f857d04]{font-size:14px;margin-right:10px}.mobile .page-header .main .row .extra[data-v-3f857d04]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin-left:0;min-width:0;text-align:right}.mobile .page-header .main .row .action[data-v-3f857d04]{margin-left:unset;min-width:266px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;text-align:left;margin-bottom:12px}.mobile .page-header .main .row .action[data-v-3f857d04]:empty{display:none}.content[data-v-9c624dc6]{margin:24px 24px 0}.content .link[data-v-9c624dc6]{margin-top:16px}.content .link[data-v-9c624dc6]:not(:empty){margin-bottom:16px}.content .link a[data-v-9c624dc6]{margin-right:32px;height:24px;line-height:24px;display:inline-block}.content .link a i[data-v-9c624dc6]{font-size:24px;margin-right:8px;vertical-align:middle}.content .link a span[data-v-9c624dc6]{height:24px;line-height:24px;display:inline-block;vertical-align:middle}@font-face{font-family:Chinese Quote;src:local("PingFang SC"),local("SimSun");unicode-range:U+2018,U+2019,U+201c,U+201d}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:14px;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65);background-color:#fff}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;background-color:transparent;text-decoration:none;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:focus{text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{outline:0;text-decoration:none}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5em;font-size:1.5em;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{background:#1890ff;color:#fff}::selection{background:#1890ff;color:#fff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.anticon{display:inline-block;font-style:normal;vertical-align:-.125em;text-align:center;text-transform:none;line-height:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@-webkit-keyframes antMoveRightIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes antMoveRightIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node],[ant-click-animating]{position:relative}.ant-click-animating-node,[ant-click-animating-without-extra-node]:after{content:"";position:absolute;top:-1px;left:-1px;bottom:-1px;right:-1px;border-radius:inherit;border:0 solid #1890ff;opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;display:block;pointer-events:none}@-webkit-keyframes waveEffect{to{top:-6px;left:-6px;bottom:-6px;right:-6px;border-width:6px}}@keyframes waveEffect{to{top:-6px;left:-6px;bottom:-6px;right:-6px;border-width:6px}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes antSlideUpIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes antSlideUpOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@keyframes antSlideUpOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@-webkit-keyframes antSlideDownIn{0%{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes antSlideDownIn{0%{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes antSlideDownOut{0%{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@keyframes antSlideDownOut{0%{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@-webkit-keyframes antSlideLeftIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes antSlideLeftIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes antSlideLeftOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@keyframes antSlideLeftOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@-webkit-keyframes antSlideRightIn{0%{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes antSlideRightIn{0%{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes antSlideRightOut{0%{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@keyframes antSlideRightOut{0%{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomIn{0%{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}}@-webkit-keyframes antZoomBigIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomBigIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomUpIn{0%{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomUpIn{0%{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomUpOut{0%{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomLeftIn{0%{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomLeftIn{0%{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomLeftOut{0%{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomRightIn{0%{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomRightIn{0%{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomRightOut{0%{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomDownIn{0%{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomDownIn{0%{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomDownOut{0%{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}}.ant-motion-collapse{overflow:hidden}.ant-motion-collapse-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}button,html [type=button]{-webkit-appearance:none}.ant-pro-footer-toolbar{position:fixed;width:100%;bottom:0;right:0;height:56px;line-height:56px;-webkit-box-shadow:0 -1px 2px rgba(0,0,0,.03);box-shadow:0 -1px 2px rgba(0,0,0,.03);background:#fff;border-top:1px solid #e8e8e8;padding:0 24px;z-index:1000}.ant-pro-footer-toolbar:after{content:"";display:block;clear:both} \ No newline at end of file diff --git a/src/main/resources/admin/css/chunk-5d83fd61.7cf84e9e.css b/src/main/resources/admin/css/chunk-02f1697e.7cf84e9e.css similarity index 100% rename from src/main/resources/admin/css/chunk-5d83fd61.7cf84e9e.css rename to src/main/resources/admin/css/chunk-02f1697e.7cf84e9e.css diff --git a/src/main/resources/admin/css/chunk-1ea08528.db89d50a.css b/src/main/resources/admin/css/chunk-1ea08528.db89d50a.css new file mode 100644 index 000000000..700e0528f --- /dev/null +++ b/src/main/resources/admin/css/chunk-1ea08528.db89d50a.css @@ -0,0 +1 @@ +.category-tree[data-v-3d736771]{margin-top:1rem} \ No newline at end of file diff --git a/src/main/resources/admin/css/chunk-4d54295e.43661ea3.css b/src/main/resources/admin/css/chunk-4d54295e.43661ea3.css deleted file mode 100644 index 90771e071..000000000 --- a/src/main/resources/admin/css/chunk-4d54295e.43661ea3.css +++ /dev/null @@ -1 +0,0 @@ -.category-tree[data-v-42549218]{margin-top:1rem} \ No newline at end of file diff --git a/src/main/resources/admin/css/chunk-4fb0639b.210847fe.css b/src/main/resources/admin/css/chunk-4fb0639b.743bdcba.css similarity index 100% rename from src/main/resources/admin/css/chunk-4fb0639b.210847fe.css rename to src/main/resources/admin/css/chunk-4fb0639b.743bdcba.css diff --git a/src/main/resources/admin/css/chunk-92a6af22.ca1bfaac.css b/src/main/resources/admin/css/chunk-edd856c6.ca1bfaac.css similarity index 100% rename from src/main/resources/admin/css/chunk-92a6af22.ca1bfaac.css rename to src/main/resources/admin/css/chunk-edd856c6.ca1bfaac.css diff --git a/src/main/resources/admin/css/chunk-cc47e7d0.bb8e6a18.css b/src/main/resources/admin/css/chunk-efde06fa.aaca0f75.css similarity index 52% rename from src/main/resources/admin/css/chunk-cc47e7d0.bb8e6a18.css rename to src/main/resources/admin/css/chunk-efde06fa.aaca0f75.css index e5958645c..8a59cc2bc 100644 --- a/src/main/resources/admin/css/chunk-cc47e7d0.bb8e6a18.css +++ b/src/main/resources/admin/css/chunk-efde06fa.aaca0f75.css @@ -1 +1 @@ -.attach-detail-img img{width:100%}.attach-item{width:50%;margin:0 auto;position:relative;padding-bottom:28%;overflow:hidden;float:left;cursor:pointer}.attach-item img{width:100%;height:100%;position:absolute;top:0;left:0}.upload-button[data-v-6d086f28]{position:fixed;bottom:30px;right:30px}.theme-thumb[data-v-6d086f28]{width:100%;margin:0 auto;position:relative;padding-bottom:56%;overflow:hidden}.theme-thumb img[data-v-6d086f28]{width:100%;height:100%;position:absolute;top:0;left:0} \ No newline at end of file +.attach-detail-img img{width:100%}.attach-item{width:50%;margin:0 auto;position:relative;padding-bottom:28%;overflow:hidden;float:left;cursor:pointer}.attach-item img{width:100%;height:100%;position:absolute;top:0;left:0}.upload-button[data-v-76b16ba4]{position:fixed;bottom:30px;right:30px}.theme-thumb[data-v-76b16ba4]{width:100%;margin:0 auto;position:relative;padding-bottom:56%;overflow:hidden}.theme-thumb img[data-v-76b16ba4]{width:100%;height:100%;position:absolute;top:0;left:0} \ No newline at end of file diff --git a/src/main/resources/admin/css/chunk-vendors.6b95225a.css b/src/main/resources/admin/css/chunk-vendors.80056587.css similarity index 100% rename from src/main/resources/admin/css/chunk-vendors.6b95225a.css rename to src/main/resources/admin/css/chunk-vendors.80056587.css diff --git a/src/main/resources/admin/index.html b/src/main/resources/admin/index.html index 8072615ca..e7c3b24e4 100644 --- a/src/main/resources/admin/index.html +++ b/src/main/resources/admin/index.html @@ -1 +1 @@ -Halo Dashboard
\ No newline at end of file +Halo Dashboard
\ No newline at end of file diff --git a/src/main/resources/admin/js/app.25d2f925.js b/src/main/resources/admin/js/app.25d2f925.js deleted file mode 100644 index 3131d3b6a..000000000 --- a/src/main/resources/admin/js/app.25d2f925.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){function t(t){for(var a,o,s=t[0],c=t[1],u=t[2],l=0,d=[];l1&&void 0!==arguments[1]?arguments[1]:"YYYY-MM-DD HH:mm";return we()(e).format(t)}),a["a"].filter("moment",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"YYYY-MM-DD HH:mm";return we()(e).format(t)}),a["a"].filter("timeAgo",Le["a"]),a["a"].filter("fileSizeFormat",function(e){if(!e)return"0 Bytes";var t=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],n=0,a=parseFloat(e);n=Math.floor(Math.log(a)/Math.log(1024));var o=a/Math.pow(1024,n);return o=o.toFixed(2),o+" "+t[n]});var He,De,je=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.split("").reduce(function(e,t){var n=t.charCodeAt(0);return n>=0&&n<=128?e+1:e+2},0)},Me=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=0;return e.split("").reduce(function(e,a){var o=a.charCodeAt(0);return n+=o>=0&&o<=128?1:2,n<=t?e+a:e},"")},$e={name:"Ellipsis",components:{Tooltip:ce["a"]},props:{prefixCls:{type:String,default:"ant-pro-ellipsis"},tooltip:{type:Boolean},length:{type:Number,required:!0},lines:{type:Number,default:1},fullWidthRecognition:{type:Boolean,default:!1}},methods:{getStrDom:function(e,t){var n=this.$createElement;return n("span",[Me(e,this.length)+(t>this.length?"...":"")])},getTooltip:function(e,t){var n=this.$createElement;return n(ce["a"],[n("template",{slot:"title"},[e]),this.getStrDom(e,t)])}},render:function(){var e=this.$props,t=e.tooltip,n=e.length,a=this.$slots.default.map(function(e){return e.text}).join(""),o=je(a),r=t&&o>n?this.getTooltip(a,o):this.getStrDom(a,o);return r}},Ae=$e,Ie=Object(d["a"])(Ae,He,De,!1,null,null,null),Ge=Ie.exports,Re=Ge,Pe=n("5a70"),Fe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[e.draggable?n("a-upload-dragger",{attrs:{name:e.name,multiple:e.multiple,accept:e.accept,customRequest:e.handleUpload,remove:e.handleRemove},on:{change:e.handleChange}},[e._t("default",null,{role:"button"})],2):n("a-upload",{attrs:{name:e.name,multiple:e.multiple,accept:e.accept,customRequest:e.handleUpload,remove:e.handleRemove},on:{change:e.handleChange}},[e._t("default")],2)],1)},Be=[],Ne=n("7f43"),Ue=n.n(Ne),Ke={name:"Upload",props:{name:{type:String,required:!1,default:"file"},multiple:{type:Boolean,required:!1,default:!1},draggable:{type:Boolean,required:!1,default:!0},accept:{type:String,required:!1,default:""},uploadHandler:{type:Function,required:!0}},methods:{handleChange:function(e){this.$emit("change",e)},handleRemove:function(e){this.$log.debug("Removed file",e),this.$emit("remove",e)},handleUpload:function(e){var t=this;this.$log.debug("Uploading option",e);var n=Ue.a.CancelToken,a=n.source(),o=new FormData;return o.append(this.name,e.file),this.uploadHandler(o,function(n){n.total>0&&(n.percent=n.loaded/n.total*100),t.$log.debug("Uploading percent: ",n.percent),e.onProgress(n)},a.token,e.file).then(function(n){t.$log.debug("Uploaded successfully",n),e.onSuccess(n,e.file),t.$emit("success",n,e.file)}).catch(function(n){t.$log.debug("Failed to upload file",n),e.onError(n,n.response),t.$emit("failure",n,e.file)}),{abort:function(){t.$log.debug("Upload operation aborted by the user"),a.cancel("Upload operation canceled by the user.")}}}}},qe=Ke,Ye=Object(d["a"])(qe,Fe,Be,!1,null,null,null),ze=Ye.exports,We={Ellipsis:Re,FooterToolbar:Pe["a"],Upload:ze},Xe={};Object.keys(We).forEach(function(e){Xe[e]=a["a"].component(e,We[e])});var Ve=n("ac2a"),Je=n.n(Ve);a["a"].config.productionTip=!1,a["a"].use(m["a"]),a["a"].use(Je.a),new a["a"]({router:m["a"],store:p["a"],render:function(e){return e(h)}}).$mount("#app")},"56dc":function(e,t,n){"use strict";var a=n("1fdd"),o=n.n(a);o.a},"5a70":function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:e.prefixCls},[n("div",{staticStyle:{float:"left"}},[e._t("extra",[e._v(e._s(e.extra))])],2),n("div",{staticStyle:{float:"right"}},[e._t("default")],2)])},o=[],r={name:"FooterToolBar",props:{prefixCls:{type:String,default:"ant-pro-footer-toolbar"},extra:{type:[String,Object],default:""}}},i=r,s=n("17cc"),c=Object(s["a"])(i,a,o,!1,null,"097458dd",null),u=c.exports;n("2432"),t["a"]=u},"5eac":function(e,t,n){"use strict";var a=n("97fe"),o=n.n(a);o.a},6692:function(e,t,n){"use strict";var a=n("1636"),o=n.n(a);o.a},"680a":function(e,t,n){"use strict";var a,o,r,i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("router-view")],1)},s=[],c={name:"BlankLayout"},u=c,l=n("17cc"),d=Object(l["a"])(u,i,s,!1,null,"2dbba1c3",null),f=d.exports,h=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-layout",{class:["layout",e.device]},[e.isMobile()?n("a-drawer",{attrs:{placement:"left",wrapClassName:"drawer-sider "+e.navTheme,closable:!1,visible:e.collapsed},on:{close:e.drawerClose}},[n("side-menu",{attrs:{mode:"inline",menus:e.menus,theme:e.navTheme,collapsed:!1,collapsible:!0},on:{menuSelect:e.menuSelect}})],1):e.isSideMenu()?n("side-menu",{attrs:{mode:"inline",menus:e.menus,theme:e.navTheme,collapsed:e.collapsed,collapsible:!0}}):e._e(),n("a-layout",{class:[e.layoutMode,"content-width-"+e.contentWidth],style:{paddingLeft:e.contentPaddingLeft,minHeight:"100vh"}},[n("global-header",{attrs:{mode:e.layoutMode,menus:e.menus,theme:e.navTheme,collapsed:e.collapsed,device:e.device},on:{toggle:e.toggle}}),n("a-layout-content",{style:{height:"100%",margin:"24px 24px 0",paddingTop:e.fixedHeader?"64px":"0"}},[n("transition",{attrs:{name:"page-transition"}},[n("route-view")],1)],1),n("a-layout-footer",[n("global-footer")],1)],1)],1)},m=[],p=(n("7415"),n("3556")),b=n("ca00"),g=n("591a"),v=n("ac0d"),y=n("e819"),E=n("d73b"),k={name:"RouteView",props:{keepAlive:{type:Boolean,default:!0}},data:function(){return{}},render:function(){var e=arguments[0],t=this.$route.meta,n=e("keep-alive",[e("router-view")]),a=e("router-view");return!1===t.keepAlive?a:this.keepAlive||t.keepAlive?n:a}},_=k,C=Object(l["a"])(_,a,o,!1,null,null,null),T=C.exports,O=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-layout-sider",{class:["sider",e.isDesktop()?null:"shadow",e.theme,e.fixSiderbar?"ant-fixed-sidemenu":null],attrs:{width:"256px",collapsible:e.collapsible,trigger:null},model:{value:e.collapsed,callback:function(t){e.collapsed=t},expression:"collapsed"}},[n("logo"),n("s-menu",{staticStyle:{padding:"16px 0px"},attrs:{collapsed:e.collapsed,menu:e.menus,theme:e.theme,mode:e.mode},on:{select:e.onSelect}})],1)},S=[],x=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"logo"},[n("router-link",{attrs:{to:{name:"Dashboard"}}},[n("h1",{staticClass:"logo-title"},[e._v("Halo")]),n("h1",{staticClass:"logo-sub-title"},[e._v("Dashboard")])])],1)},w=[],L={name:"Logo"},H=L,D=(n("1953"),Object(l["a"])(H,x,w,!1,null,null,null)),j=D.exports,M=n("34c6"),$=n("23c4"),A=n.n($),I=(n("3a23"),n("e0c1"),n("93fe"),n("612f"),n("5358")),G=n("bc5d"),R=I["a"].Item,P=I["a"].SubMenu,F={name:"SMenu",props:{menu:{type:Array,required:!0},theme:{type:String,required:!1,default:"dark"},mode:{type:String,required:!1,default:"inline"},collapsed:{type:Boolean,required:!1,default:!1}},data:function(){return{openKeys:[],selectedKeys:[],cachedOpenKeys:[]}},computed:{rootSubmenuKeys:function(e){var t=[];return e.menu.forEach(function(e){return t.push(e.path)}),t}},created:function(){this.updateMenu()},watch:{collapsed:function(e){e?(this.cachedOpenKeys=this.openKeys.concat(),this.openKeys=[]):this.openKeys=this.cachedOpenKeys},$route:function(){this.updateMenu()}},methods:{onOpenChange:function(e){var t=this;if("horizontal"!==this.mode){var n=e.find(function(e){return!t.openKeys.includes(e)});this.rootSubmenuKeys.includes(n)?this.openKeys=n?[n]:[]:this.openKeys=e}else this.openKeys=e},updateMenu:function(){var e=this.$route.matched.concat();e.length>=4&&this.$route.meta.hidden?(e.pop(),this.selectedKeys=[e[2].path]):this.selectedKeys=[e.pop().path];var t=[];"inline"===this.mode&&e.forEach(function(e){t.push(e.path)}),this.collapsed?this.cachedOpenKeys=t:this.openKeys=t},renderItem:function(e){return e.hidden?null:e.children&&!e.hideChildrenInMenu?this.renderSubMenu(e):this.renderMenuItem(e)},renderMenuItem:function(e){var t=this.$createElement,n=e.meta.target||null,a=n?"a":"router-link",o={to:{name:e.name}},r={href:e.path,target:e.meta.target};return t(R,A()([{},{key:e.path}]),[t(a,{props:Object(p["a"])({},o),attrs:Object(p["a"])({},r)},[this.renderIcon(e.meta.icon),t("span",[e.meta.title])])])},renderSubMenu:function(e){var t=this,n=this.$createElement,a=[];return e.hideChildrenInMenu||e.children.forEach(function(e){return a.push(t.renderItem(e))}),n(P,A()([{},{key:e.path}]),[n("span",{slot:"title"},[this.renderIcon(e.meta.icon),n("span",[e.meta.title])]),a])},renderIcon:function(e){var t=this.$createElement;if("none"===e||void 0===e)return null;var n={};return"object"===Object(M["a"])(e)?n.component=e:n.type=e,t(G["a"],{props:Object(p["a"])({},n)})}},render:function(){var e=this,t=arguments[0],n=this.mode,a=this.theme,o=this.menu,r={mode:n,theme:a,openKeys:this.openKeys},i={select:function(t){e.selectedKeys=t.selectedKeys,e.$emit("select",t)},openChange:this.onOpenChange},s=o.map(function(t){return t.hidden?null:e.renderItem(t)});return t(I["a"],{props:Object(p["a"])({},r),on:Object(p["a"])({},i),model:{value:e.selectedKeys,callback:function(t){e.selectedKeys=t}}},[s])}},B=F,N={name:"SideMenu",components:{Logo:j,SMenu:B},mixins:[v["a"],v["b"]],props:{mode:{type:String,required:!1,default:"inline"},theme:{type:String,required:!1,default:"dark"},collapsible:{type:Boolean,required:!1,default:!1},collapsed:{type:Boolean,required:!1,default:!1},menus:{type:Array,required:!0}},methods:{onSelect:function(e){this.$emit("menuSelect",e)}}},U=N,K=Object(l["a"])(U,O,S,!1,null,null,null),q=K.exports,Y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"showHeader"}},[e.visible?n("div",{staticClass:"header-animat"},[e.visible?n("a-layout-header",{class:[e.fixedHeader&&"ant-header-fixedHeader",e.sidebarOpened?"ant-header-side-opened":"ant-header-side-closed"],style:{padding:"0"}},["sidemenu"===e.mode?n("div",{staticClass:"header"},["mobile"===e.device?n("a-icon",{staticClass:"trigger",attrs:{type:e.collapsed?"menu-fold":"menu-unfold"},on:{click:e.toggle}}):n("a-icon",{staticClass:"trigger",attrs:{type:e.collapsed?"menu-unfold":"menu-fold"},on:{click:e.toggle}}),n("user-menu")],1):n("div",{class:["top-nav-header-index",e.theme]},[n("div",{staticClass:"header-index-wide"},[n("div",{staticClass:"header-index-left"},["mobile"!==e.device?n("logo",{staticClass:"top-nav-header"}):e._e(),"mobile"!==e.device?n("s-menu",{attrs:{mode:"horizontal",menu:e.menus,theme:e.theme}}):n("a-icon",{staticClass:"trigger",attrs:{type:e.collapsed?"menu-fold":"menu-unfold"},on:{click:e.toggle}})],1),n("user-menu",{staticClass:"header-index-right"})],1)])]):e._e()],1):e._e()])},z=[],W=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"user-wrapper"},[n("a",{attrs:{href:e.options.blog_url,target:"_blank"}},[n("span",{staticClass:"action"},[n("a-icon",{attrs:{type:"link"}})],1)]),n("a",{attrs:{href:"javascript:void(0)"},on:{click:e.showOptionModal}},[n("span",{staticClass:"action"},[n("a-icon",{attrs:{type:"setting"}})],1)]),n("header-comment",{staticClass:"action"}),n("a-dropdown",[e.user?n("span",{staticClass:"action ant-dropdown-link user-dropdown-menu"},[n("a-avatar",{staticClass:"avatar",attrs:{size:"small",src:e.user.avatar||"https://gravatar.loli.net/avatar/?s=256&d=mm"}})],1):e._e(),n("a-menu",{staticClass:"user-dropdown-menu-wrapper",attrs:{slot:"overlay"},slot:"overlay"},[n("a-menu-item",{key:"0"},[n("router-link",{attrs:{to:{name:"Profile"}}},[n("a-icon",{attrs:{type:"user"}}),n("span",[e._v("个人资料")])],1)],1),n("a-menu-divider"),n("a-menu-item",{key:"1"},[n("a",{attrs:{href:"javascript:;"},on:{click:e.handleLogout}},[n("a-icon",{attrs:{type:"logout"}}),n("span",[e._v("退出登录")])],1)])],1)],1),n("setting-drawer",{ref:"drawer"})],1)},X=[],V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-popover",{attrs:{trigger:"click",placement:"bottomRight",autoAdjustOverflow:!0,arrowPointAtCenter:!0,overlayStyle:{width:"300px",top:"50px"},title:"待审核评论"},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},[n("template",{slot:"content"},[n("a-spin",{attrs:{spinning:e.loadding}},[n("div",{staticClass:"custom-tab-wrapper"},[n("a-tabs",[n("a-tab-pane",{key:"1",attrs:{tab:"文章"}},[n("a-list",{attrs:{dataSource:e.converttedPostComments},scopedSlots:e._u([{key:"renderItem",fn:function(t){return n("a-list-item",{},[n("a-list-item-meta",[n("a-avatar",{staticStyle:{"background-color":"white"},attrs:{slot:"avatar",src:"https://gravatar.loli.net/avatar/"+t.gavatarMd5+"&d=mm",size:"large"},slot:"avatar"}),n("template",{slot:"title"},[n("a",{attrs:{href:t.authorUrl,target:"_blank"}},[e._v(e._s(t.author))]),e._v(":"),n("span",{domProps:{innerHTML:e._s(t.content)}})]),n("template",{slot:"description"},[e._v("\n "+e._s(e._f("timeAgo")(t.createTime))+"\n ")])],2)],1)}}])})],1),n("a-tab-pane",{key:"2",attrs:{tab:"页面"}},[n("a-list",{attrs:{dataSource:e.converttedSheetComments},scopedSlots:e._u([{key:"renderItem",fn:function(t){return n("a-list-item",{},[n("a-list-item-meta",[n("a-avatar",{staticStyle:{"background-color":"white"},attrs:{slot:"avatar",src:"https://gravatar.loli.net/avatar/"+t.gavatarMd5+"&d=mm",size:"large"},slot:"avatar"}),n("template",{slot:"title"},[n("a",{attrs:{href:t.authorUrl,target:"_blank"}},[e._v(e._s(t.author))]),e._v(":"),n("span",{domProps:{innerHTML:e._s(t.content)}})]),n("template",{slot:"description"},[e._v("\n "+e._s(e._f("timeAgo")(t.createTime))+"\n ")])],2)],1)}}])})],1)],1)],1)])],1),n("span",{staticClass:"header-comment",on:{click:e.fetchComment}},[e.postComments.length>0||e.sheetComments.length>0?n("a-badge",{attrs:{dot:""}},[n("a-icon",{attrs:{type:"bell"}})],1):n("a-badge",[n("a-icon",{attrs:{type:"bell"}})],1)],1)],2)},J=[],Z=n("063c"),Q=n("ae4d"),ee=n.n(Q),te={name:"HeaderComment",data:function(){return{loadding:!1,visible:!1,postComments:[],sheetComments:[]}},created:function(){this.getComment()},computed:{converttedPostComments:function(){return this.postComments.map(function(e){return e.content=ee()(e.content,{sanitize:!0}),e})},converttedSheetComments:function(){return this.sheetComments.map(function(e){return e.content=ee()(e.content,{sanitize:!0}),e})}},methods:{fetchComment:function(){this.visible?this.loadding=!1:(this.loadding=!0,this.getComment()),this.visible=!this.visible},getComment:function(){var e=this;Z["a"].latestComment("posts",5,"AUDITING").then(function(t){e.postComments=t.data.data,e.loadding=!1}),Z["a"].latestComment("sheets",5,"AUDITING").then(function(t){e.sheetComments=t.data.data,e.loadding=!1})}}},ne=te,ae=(n("8e39"),Object(l["a"])(ne,V,J,!1,null,"12990b48",null)),oe=ae.exports,re=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{ref:"settingDrawer",staticClass:"setting-drawer"},[n("a-drawer",{attrs:{width:"300",closable:"",visible:e.visible,zIndex:9999},on:{close:e.onClose}},[n("div",{staticClass:"setting-drawer-index-content"},[n("div",{style:{marginBottom:"24px"}},[n("h3",{staticClass:"setting-drawer-index-title"},[e._v("整体风格设置")]),n("div",{staticClass:"setting-drawer-index-blockChecbox"},[n("a-tooltip",[n("template",{slot:"title"},[e._v("暗色菜单风格")]),n("div",{staticClass:"setting-drawer-index-item",on:{click:function(t){return e.handleMenuTheme("dark")}}},[n("img",{attrs:{src:"https://gw.alipayobjects.com/zos/rmsportal/LCkqqYNmvBEbokSDscrm.svg",alt:"dark"}}),"dark"===e.navTheme?n("div",{staticClass:"setting-drawer-index-selectIcon"},[n("a-icon",{attrs:{type:"check"}})],1):e._e()])],2),n("a-tooltip",[n("template",{slot:"title"},[e._v("亮色菜单风格")]),n("div",{staticClass:"setting-drawer-index-item",on:{click:function(t){return e.handleMenuTheme("light")}}},[n("img",{attrs:{src:"https://gw.alipayobjects.com/zos/rmsportal/jpRkZQMyYRryryPNtyIC.svg",alt:"light"}}),"dark"!==e.navTheme?n("div",{staticClass:"setting-drawer-index-selectIcon"},[n("a-icon",{attrs:{type:"check"}})],1):e._e()])],2)],1)]),n("a-divider"),n("div",{style:{marginBottom:"24px"}},[n("h3",{staticClass:"setting-drawer-index-title"},[e._v("主题色")]),n("div",{staticStyle:{height:"20px"}},e._l(e.colorList,function(t,a){return n("a-tooltip",{key:a,staticClass:"setting-drawer-theme-color-colorBlock"},[n("template",{slot:"title"},[e._v(e._s(t.key))]),n("a-tag",{attrs:{color:t.color},on:{click:function(n){return e.changeColor(t.color)}}},[t.color===e.primaryColor?n("a-icon",{attrs:{type:"check"}}):e._e()],1)],2)}),1)]),n("a-divider"),n("div",{style:{marginBottom:"24px"}},[n("h3",{staticClass:"setting-drawer-index-title"},[e._v("导航模式")]),n("div",{staticClass:"setting-drawer-index-blockChecbox"},[n("div",{staticClass:"setting-drawer-index-item",on:{click:function(t){return e.handleLayout("sidemenu")}}},[n("img",{attrs:{src:"https://gw.alipayobjects.com/zos/rmsportal/JopDzEhOqwOjeNTXkoje.svg",alt:"sidemenu"}}),"sidemenu"===e.layoutMode?n("div",{staticClass:"setting-drawer-index-selectIcon"},[n("a-icon",{attrs:{type:"check"}})],1):e._e()]),n("div",{staticClass:"setting-drawer-index-item",on:{click:function(t){return e.handleLayout("topmenu")}}},[n("img",{attrs:{src:"https://gw.alipayobjects.com/zos/rmsportal/KDNDBbriJhLwuqMoxcAr.svg",alt:"topmenu"}}),"sidemenu"!==e.layoutMode?n("div",{staticClass:"setting-drawer-index-selectIcon"},[n("a-icon",{attrs:{type:"check"}})],1):e._e()])])]),n("a-divider")],1)])],1)},ie=[],se=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"setting-drawer-index-item"},[n("h3",{staticClass:"setting-drawer-index-title"},[e._v(e._s(e.title))]),e._t("default"),e.divider?n("a-divider"):e._e()],2)},ce=[],ue={name:"SettingItem",props:{title:{type:String,default:""},divider:{type:Boolean,default:!1}}},le=ue,de=(n("f4eb"),Object(l["a"])(le,se,ce,!1,null,"3cea9c3c",null)),fe=de.exports,he=n("843a"),me=[{key:"红色",color:"#F5222D"},{key:"浅红色",color:"#FA541C"},{key:"日暮",color:"#FAAD14"},{key:"青色",color:"#13C2C2"},{key:"绿色",color:"#52C41A"},{key:"默认",color:"#1890FF"},{key:"蓝色",color:"#2F54EB"},{key:"紫色",color:"#722ED1"}],pe=function(e){if(e){var t=he["a"].loading("正在编译主题!",0);if(r)i();else{var n=document.createElement("link"),a=document.createElement("script"),o=document.createElement("script");n.setAttribute("rel","stylesheet/less"),n.setAttribute("href","/color.less"),a.innerHTML="\n window.less = {\n async: true,\n env: 'production',\n javascriptEnabled: true\n };\n ",o.src="https://cdnjs.loli.net/ajax/libs/less.js/3.8.1/less.min.js",o.async=!0,o.onload=function(){i(),o.onload=null},document.body.appendChild(n),document.body.appendChild(a),document.body.appendChild(o),r=!0}}function i(){window.less&&setTimeout(function(){window.less.modifyVars({"@primary-color":e}).then(function(){t()}).catch(function(){he["a"].error("Failed to update theme"),t()})},200)}},be={components:{SettingItem:fe},mixins:[v["a"],v["b"]],data:function(){return{visible:!1,colorList:me,baseConfig:Object.assign({},y["a"])}},watch:{},mounted:function(){this.primaryColor!==y["a"].primaryColor&&pe(this.primaryColor)},methods:{showDrawer:function(){this.visible=!0},onClose:function(){this.visible=!1},toggle:function(){this.visible=!this.visible},handleMenuTheme:function(e){this.baseConfig.navTheme=e,this.$store.dispatch("ToggleTheme",e)},handleLayout:function(e){this.baseConfig.layout=e,this.$store.dispatch("ToggleLayoutMode",e),this.handleFixSiderbar(!1)},handleContentWidthChange:function(e){this.baseConfig.contentWidth=e,this.$store.dispatch("ToggleContentWidth",e)},changeColor:function(e){this.baseConfig.primaryColor=e,this.primaryColor!==e&&(this.$store.dispatch("ToggleColor",e),pe(e))},handleFixedHeader:function(e){this.baseConfig.fixedHeader=e,this.$store.dispatch("ToggleFixedHeader",e)},handleFixedHeaderHidden:function(e){this.baseConfig.autoHideHeader=e,this.$store.dispatch("ToggleFixedHeaderHidden",e)},handleFixSiderbar:function(e){if("topmenu"===this.layoutMode)return this.baseConfig.fixSiderbar=!1,void this.$store.dispatch("ToggleFixSiderbar",!1);this.baseConfig.fixSiderbar=e,this.$store.dispatch("ToggleFixSiderbar",e)}}},ge=be,ve=(n("091d"),Object(l["a"])(ge,re,ie,!1,null,"1836b06b",null)),ye=ve.exports,Ee=n("482b"),ke={name:"UserMenu",components:{HeaderComment:oe,SettingDrawer:ye},data:function(){return{optionVisible:!0,options:[],keys:["blog_url"]}},mounted:function(){this.optionVisible=this.$refs.drawer.visible},created:function(){this.loadOptions()},computed:Object(p["a"])({},Object(g["c"])(["user"])),methods:Object(p["a"])({},Object(g["b"])(["logout"]),{handleLogout:function(){var e=this;this.$confirm({title:"提示",content:"确定要注销登录吗 ?",onOk:function(){return e.logout({}).then(function(){window.location.reload()}).catch(function(t){e.$message.error({title:"错误",description:t.message})})},onCancel:function(){}})},showOptionModal:function(){this.optionVisible=this.$refs.drawer.visible,this.$refs.drawer.toggle()},loadOptions:function(){var e=this;Ee["a"].listAll(this.keys).then(function(t){e.options=t.data.data})}})},_e=ke,Ce=(n("56dc"),Object(l["a"])(_e,W,X,!1,null,"9b91c188",null)),Te=Ce.exports,Oe={name:"GlobalHeader",components:{UserMenu:Te,SMenu:B,Logo:j},mixins:[v["a"]],props:{mode:{type:String,default:"sidemenu"},menus:{type:Array,required:!0},theme:{type:String,required:!1,default:"dark"},collapsed:{type:Boolean,required:!1,default:!1},device:{type:String,required:!1,default:"desktop"}},data:function(){return{visible:!0,oldScrollTop:0}},mounted:function(){document.body.addEventListener("scroll",this.handleScroll,{passive:!0})},methods:{handleScroll:function(){var e=this;if(this.autoHideHeader){var t=document.body.scrollTop+document.documentElement.scrollTop;this.ticking||(this.ticking=!0,requestAnimationFrame(function(){e.oldScrollTop>t?e.visible=!0:t>300&&e.visible?e.visible=!1:t<300&&!e.visible&&(e.visible=!0),e.oldScrollTop=t,e.ticking=!1}))}},toggle:function(){this.$emit("toggle")}},beforeDestroy:function(){document.body.removeEventListener("scroll",this.handleScroll,!0)}},Se=Oe,xe=(n("05fe"),Object(l["a"])(Se,Y,z,!1,null,null,null)),we=xe.exports,Le=we,He=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"footer"},[n("div",{staticClass:"copyright"},[e._v("\n Proudly power by\n "),n("router-link",{attrs:{to:{name:"About"}}},[n("a",{attrs:{href:"javascript:void(0);"}},[e._v("Halo")])])],1)])},De=[],je={name:"GlobalFooter",data:function(){return{}}},Me=je,$e=(n("d487"),Object(l["a"])(Me,He,De,!1,null,"02e9579a",null)),Ae=$e.exports,Ie=Ae,Ge={name:"BasicLayout",mixins:[v["a"],v["b"]],components:{RouteView:T,SideMenu:q,GlobalHeader:Le,GlobalFooter:Ie},data:function(){return{production:y["a"].production,collapsed:!1,menus:[]}},computed:Object(p["a"])({},Object(g["e"])({mainMenu:function(e){return e.permission.addRouters}}),{contentPaddingLeft:function(){return!this.fixSidebar||this.isMobile()?"0":this.sidebarOpened?"256px":"80px"}}),watch:{sidebarOpened:function(e){this.collapsed=!e}},created:function(){this.menus=E["a"].find(function(e){return"/"===e.path}).children,this.collapsed=!this.sidebarOpened},mounted:function(){var e=this,t=navigator.userAgent;t.indexOf("Edge")>-1&&this.$nextTick(function(){e.collapsed=!e.collapsed,setTimeout(function(){e.collapsed=!e.collapsed},16)})},methods:Object(p["a"])({},Object(g["b"])(["setSidebar"]),{toggle:function(){this.collapsed=!this.collapsed,this.setSidebar(!this.collapsed),Object(b["b"])()},paddingCalc:function(){var e="";return e=this.sidebarOpened?this.isDesktop()?"256px":"80px":(this.isMobile()?"0":this.fixSidebar&&"80px")||"0",e},menuSelect:function(){this.isDesktop()||(this.collapsed=!1)},drawerClose:function(){this.collapsed=!1}})},Re=Ge,Pe=(n("6692"),Object(l["a"])(Re,h,m,!1,null,null,null)),Fe=Pe.exports,Be=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:e.$route.meta.hiddenHeaderContent?null:"margin: -24px -24px 0px;"},[e.$route.meta.hiddenHeaderContent?e._e():n("page-header",{attrs:{title:e.pageTitle,logo:e.logo,avatar:e.avatar}},[e._t("action",null,{slot:"action"}),e._t("headerContent",null,{slot:"content"}),!this.$slots.headerContent&&e.description?n("div",{attrs:{slot:"content"},slot:"content"},[n("p",{staticStyle:{"font-size":"14px",color:"rgba(0,0,0,.65)"}},[e._v(e._s(e.description))]),n("div",{staticClass:"link"},[e._l(e.linkList,function(t,a){return[n("a",{key:a,attrs:{href:t.href}},[n("a-icon",{attrs:{type:t.icon}}),n("span",[e._v(e._s(t.title))])],1)]})],2)]):e._e()],2),n("div",{staticClass:"content"},[n("div",{staticClass:"page-header-index-wide"},[e._t("default",[n("router-view",{ref:"content"})])],2)])],1)},Ne=[],Ue=(n("aaa4"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"page-header"},[n("div",{staticClass:"page-header-index-wide"},[n("s-breadcrumb"),n("div",{staticClass:"detail"},[e.$route.meta.hiddenHeaderContent?e._e():n("div",{staticClass:"main"},[n("div",{staticClass:"row"},[e.logo?n("img",{staticClass:"logo",attrs:{src:e.logo}}):e._e(),n("div",{staticClass:"action"},[e._t("action")],2)]),n("div",{staticClass:"row"},[e.avatar?n("div",{staticClass:"avatar"},[n("a-avatar",{attrs:{src:e.avatar}})],1):e._e(),this.$slots.content?n("div",{staticClass:"headerContent"},[e._t("content")],2):e._e(),this.$slots.extra?n("div",{staticClass:"extra"},[e._t("extra")],2):e._e()]),n("div",[e._t("pageMenu")],2)])])],1)])}),Ke=[],qe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-breadcrumb",{staticClass:"breadcrumb"},e._l(e.breadList,function(t,a){return n("a-breadcrumb-item",{key:t.name},[t.name!=e.name&&1!=a?n("router-link",{attrs:{to:{path:""===t.path?"/":t.path}}},[e._v(e._s(t.meta.title))]):n("span",[e._v(e._s(t.meta.title))])],1)}),1)},Ye=[],ze={data:function(){return{name:"",breadList:[]}},created:function(){this.getBreadcrumb()},methods:{getBreadcrumb:function(){var e=this;this.breadList=[],this.name=this.$route.name,this.$route.matched.forEach(function(t){e.breadList.push(t)})}},watch:{$route:function(){this.getBreadcrumb()}}},We=ze,Xe=Object(l["a"])(We,qe,Ye,!1,null,"666624e8",null),Ve=Xe.exports,Je={name:"PageHeader",components:{"s-breadcrumb":Ve},props:{title:{type:[String,Boolean],default:!0,required:!1},logo:{type:String,default:"",required:!1},avatar:{type:String,default:"",required:!1}},data:function(){return{}}},Ze=Je,Qe=(n("5eac"),Object(l["a"])(Ze,Ue,Ke,!1,null,"3f857d04",null)),et=Qe.exports,tt=et,nt={name:"PageView",components:{PageHeader:tt},props:{avatar:{type:String,default:null},title:{type:[String,Boolean],default:!0},logo:{type:String,default:null}},data:function(){return{pageTitle:null,description:null,linkList:[],extraImage:"",search:!1,tabs:{}}},mounted:function(){this.getPageMeta()},updated:function(){this.getPageMeta()},methods:{getPageMeta:function(){this.pageTitle="string"!==typeof this.title&&this.title?this.$route.meta.title:this.title;var e=this.$refs.content;e&&(e.pageMeta?Object.assign(this,e.pageMeta):(this.description=e.description,this.linkList=e.linkList,this.extraImage=e.extraImage,this.search=!0===e.search,this.tabs=e.tabs))}}},at=nt,ot=(n("b538"),Object(l["a"])(at,Be,Ne,!1,null,"9c624dc6",null)),rt=ot.exports;n.d(t,"a",function(){return Fe}),n.d(t,"b",function(){return f}),n.d(t,"c",function(){return rt})},"8e39":function(e,t,n){"use strict";var a=n("97e9"),o=n.n(a);o.a},"97e9":function(e,t,n){},"97fe":function(e,t,n){},"9e74":function(e,t,n){},"9efd":function(e,t,n){"use strict";n("4453");var a=n("a7ca"),o=n("7f43"),r=n.n(o),i=n("38bc"),s=n.n(i),c=(n("70e7"),n("6e6d")),u=n("843a"),l=n("4360"),d=n("a18c"),f=r.a.create({baseURL:"",timeout:5e3,withCredentials:!0});function h(e){var t=l["a"].getters.token;c["a"].$log.debug("Got token from store",t),t&&t.access_token&&(e.headers["Admin-Authorization"]=t.access_token)}function m(e){return p.apply(this,arguments)}function p(){return p=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=t.response.config,h(n),e.next=4,r.a.request(n);case 4:return a=e.sent,e.abrupt("return",a);case 6:case"end":return e.stop()}},e)})),p.apply(this,arguments)}var b=null;function g(e){return v.apply(this,arguments)}function v(){return v=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=l["a"].getters.token.refresh_token,e.prev=1,null===b&&(b=l["a"].dispatch("refreshToken",n)),e.next=5,b;case 5:e.next=11;break;case 7:e.prev=7,e.t0=e["catch"](1),e.t0.response&&e.t0.response.data&&e.t0.response.data.data===n&&d["a"].push({name:"Login"}),c["a"].$log.error("Failed to refresh token",e.t0);case 11:return e.prev=11,b=null,e.finish(11);case 14:return e.abrupt("return",m(t));case 15:case"end":return e.stop()}},e,null,[[1,7,11,14]])})),v.apply(this,arguments)}f.interceptors.request.use(function(e){return s.a.start(),h(e),e},function(e){return s.a.remove(),Promise.reject(e)}),f.interceptors.response.use(function(e){return s.a.done(),e},function(e){if(s.a.done(),r.a.isCancel(e))return c["a"].$log.debug("Cancelled uploading by user."),Promise.reject(e);c["a"].$log.error("Response failed",e);var t=e.response,n=t?t.status:-1;c["a"].$log.error("Server response status",n);var a=t?t.data:null;if(a){if(c["a"].$log.error("Business response status",a.status),400===a.status);else if(401===a.status)if(l["a"].getters.token&&l["a"].getters.token.access_token===a.data){var o=g(e);if(o!==e)return o}else d["a"].push({name:"Login"});else 403===a.status||404===a.status||a.status;u["a"].error(a.message)}else u["a"].error("Server unavailable");return Promise.reject(e)}),t["a"]=f},"9fb0":function(e,t,n){"use strict";n.d(t,"a",function(){return a}),n.d(t,"i",function(){return o}),n.d(t,"h",function(){return r}),n.d(t,"g",function(){return i}),n.d(t,"b",function(){return s}),n.d(t,"d",function(){return c}),n.d(t,"f",function(){return u}),n.d(t,"e",function(){return l}),n.d(t,"c",function(){return d}),n.d(t,"j",function(){return f});var a="Access-Token",o="SIDEBAR_TYPE",r="DEFAULT_THEME",i="DEFAULT_LAYOUT_MODE",s="DEFAULT_COLOR",c="DEFAULT_FIXED_HEADER",u="DEFAULT_FIXED_SIDEMENU",l="DEFAULT_FIXED_HEADER_HIDDEN",d="DEFAULT_CONTENT_WIDTH_TYPE",f="USER"},a18c:function(e,t,n){"use strict";var a=n("6e6d"),o=n("1e6f"),r=n("d73b");a["a"].use(o["a"]),t["a"]=new o["a"]({mode:"hash",base:"/",scrollBehavior:function(){return{y:0}},routes:r["b"].concat(r["a"])})},ac0d:function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return s});var a=n("3556"),o=n("51e6"),r=n("591a"),i={computed:Object(a["a"])({},Object(r["e"])({layoutMode:function(e){return e.app.layout},navTheme:function(e){return e.app.theme},primaryColor:function(e){return e.app.color},fixedHeader:function(e){return e.app.fixedHeader},fixSiderbar:function(e){return e.app.fixSiderbar},fixSidebar:function(e){return e.app.fixSiderbar},contentWidth:function(e){return e.app.contentWidth},autoHideHeader:function(e){return e.app.autoHideHeader},sidebarOpened:function(e){return e.app.sidebar}})),methods:{isTopMenu:function(){return"topmenu"===this.layoutMode},isSideMenu:function(){return!this.isTopMenu()}}},s={computed:Object(a["a"])({},Object(r["e"])({device:function(e){return e.app.device}})),methods:{isMobile:function(){return this.device===o["a"].MOBILE},isDesktop:function(){return this.device===o["a"].DESKTOP},isTablet:function(){return this.device===o["a"].TABLET}}}},b538:function(e,t,n){"use strict";var a=n("399e"),o=n.n(a);o.a},bc6c:function(e,t,n){},c24f:function(e,t,n){"use strict";var a=n("9efd"),o="/api/admin/users",r={getProfile:function(){return Object(a["a"])({url:"".concat(o,"/profiles"),method:"get"})},updateProfile:function(e){return Object(a["a"])({url:"".concat(o,"/profiles"),method:"put",data:e})},updatePassword:function(e,t){return Object(a["a"])({url:"".concat(o,"/profiles/password"),method:"put",data:{oldPassword:e,newPassword:t}})}};t["a"]=r},ca00:function(e,t,n){"use strict";n.d(t,"b",function(){return r}),n.d(t,"a",function(){return i});var a=n("6bf2"),o=n.n(a);n("35d0");function r(){var e=document.createEvent("HTMLEvents");e.initEvent("resize",!0,!0),e.eventType="message",window.dispatchEvent(e)}function i(e){var t=(new Date).getTime(),n=t-e,a=Math.floor(n/864e5);if(0===a){var r=n%864e5,i=Math.floor(r/36e5);if(0===i){var s=r%36e5,c=Math.floor(s/6e4);if(0===c){var u=s%6e4,l=Math.round(u/1e3);return l+" 秒前"}return c+" 分钟前"}return i+" 小时前"}return a<0?"刚刚":a<5?a+" 天前":o()(e).format("YYYY-MM-DD HH:mm")}},d487:function(e,t,n){"use strict";var a=n("e0b9"),o=n.n(a);o.a},d73b:function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var a=n("680a"),o=[{path:"/",name:"index",component:a["a"],meta:{title:"首页"},redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:function(){return n.e("chunk-0aab7d1a").then(n.bind(null,"5c3a"))},meta:{title:"仪表盘",icon:"dashboard",hiddenHeaderContent:!1}},{path:"/posts",name:"Posts",redirect:"/posts/list",component:a["c"],meta:{title:"文章",icon:"form"},children:[{path:"/posts/list",name:"PostList",component:function(){return n.e("chunk-87e2df70").then(n.bind(null,"dae2"))},meta:{title:"所有文章",hiddenHeaderContent:!1}},{path:"/posts/write",name:"PostEdit",component:function(){return Promise.all([n.e("chunk-4fb0639b"),n.e("chunk-5d83fd61")]).then(n.bind(null,"db44"))},meta:{title:"写文章",hiddenHeaderContent:!1}},{path:"/categories",name:"CategoryList",component:function(){return n.e("chunk-4d54295e").then(n.bind(null,"7e89"))},meta:{title:"分类目录",hiddenHeaderContent:!1}},{path:"/tags",name:"TagList",component:function(){return n.e("chunk-407d6578").then(n.bind(null,"aa1e9"))},meta:{title:"标签",hiddenHeaderContent:!1}}]},{path:"/sheets",name:"Sheets",component:a["c"],redirect:"/sheets/list",meta:{title:"页面",icon:"read"},children:[{path:"/sheets/list",name:"SheetList",component:function(){return n.e("chunk-142c8832").then(n.bind(null,"a8ed"))},meta:{title:"所有页面",hiddenHeaderContent:!1}},{path:"/sheets/write",name:"SheetEdit",component:function(){return Promise.all([n.e("chunk-4fb0639b"),n.e("chunk-b6cd2e50")]).then(n.bind(null,"f585"))},meta:{title:"新建页面",hiddenHeaderContent:!1}},{path:"/sheets/links",name:"LinkList",hidden:!0,component:function(){return n.e("chunk-2d21a35c").then(n.bind(null,"bb17"))},meta:{title:"友情链接",hiddenHeaderContent:!1}},{path:"/sheets/photos",name:"PhotoList",hidden:!0,component:function(){return n.e("chunk-75751d79").then(n.bind(null,"6d0d"))},meta:{title:"图库",hiddenHeaderContent:!1}},{path:"/sheets/journals",name:"JournalList",hidden:!0,component:function(){return n.e("chunk-5bf599cc").then(n.bind(null,"81a6"))},meta:{title:"日志",hiddenHeaderContent:!1}}]},{path:"/attachments",name:"Attachments",component:function(){return n.e("chunk-31829c73").then(n.bind(null,"61d0"))},meta:{title:"附件",icon:"picture",hiddenHeaderContent:!1}},{path:"/comments",name:"Comments",component:function(){return n.e("chunk-2d0b64bf").then(n.bind(null,"1d0f"))},meta:{title:"评论",icon:"message",hiddenHeaderContent:!1}},{path:"/interface",name:"Interface",component:a["c"],redirect:"/interface/themes",meta:{title:"外观",icon:"skin"},children:[{path:"/interface/themes",name:"ThemeList",component:function(){return n.e("chunk-cc47e7d0").then(n.bind(null,"79e7"))},meta:{title:"主题",hiddenHeaderContent:!1}},{path:"/interface/menus",name:"MenuList",component:function(){return n.e("chunk-2d0d65a2").then(n.bind(null,"71d6"))},meta:{title:"菜单",hiddenHeaderContent:!1}},{path:"/interface/themes/edit",name:"ThemeEdit",component:function(){return n.e("chunk-898a93f6").then(n.bind(null,"33c9"))},meta:{title:"主题编辑",hiddenHeaderContent:!1}}]},{path:"/user",name:"User",component:a["c"],redirect:"/user/profile",meta:{title:"用户",icon:"user"},children:[{path:"/user/profile",name:"Profile",component:function(){return n.e("chunk-92a6af22").then(n.bind(null,"7c54"))},meta:{title:"个人资料",hiddenHeaderContent:!1}}]},{path:"/system",name:"System",component:a["c"],redirect:"/system/options",meta:{title:"系统",icon:"setting"},children:[{path:"/system/options",name:"OptionForm",component:function(){return n.e("chunk-1c8b985a").then(n.bind(null,"26ea"))},meta:{title:"博客设置",hiddenHeaderContent:!1}},{path:"/system/about",name:"About",component:function(){return n.e("chunk-14e8932a").then(n.bind(null,"2967"))},hidden:!0,meta:{title:"关于 Halo",hiddenHeaderContent:!1}}]}]},{path:"*",redirect:"/404",hidden:!0}],r=[{path:"/test",component:a["b"],redirect:"/test/home",children:[{path:"home",name:"TestHome",component:function(){return n.e("chunk-71fa6d51").then(n.bind(null,"bb51"))}}]},{path:"/login",name:"Login",meta:{title:"登录"},component:function(){return n.e("chunk-9449c032").then(n.bind(null,"ac2a5"))}},{path:"/install",name:"Install",meta:{title:"安装向导"},component:function(){return n.e("chunk-c5b09f02").then(n.bind(null,"306f"))}},{path:"/404",name:"NotFound",component:function(){return n.e("fail").then(n.bind(null,"cc89"))}}]},e0b9:function(e,t,n){},e819:function(e,t,n){"use strict";t["a"]={primaryColor:"#1890FF",navTheme:"light",layout:"topmenu",contentWidth:"Fixed",fixedHeader:!1,fixSiderbar:!1,autoHideHeader:!1,storageOptions:{namespace:"halo__",name:"ls",storage:"local"}}},f4eb:function(e,t,n){"use strict";var a=n("07de"),o=n.n(a);o.a}}); \ No newline at end of file diff --git a/src/main/resources/admin/js/app.63c77087.js b/src/main/resources/admin/js/app.63c77087.js new file mode 100644 index 000000000..48871b10f --- /dev/null +++ b/src/main/resources/admin/js/app.63c77087.js @@ -0,0 +1 @@ +(function(e){function t(t){for(var a,o,s=t[0],c=t[1],u=t[2],l=0,d=[];l1&&void 0!==arguments[1]?arguments[1]:"YYYY-MM-DD HH:mm";return He()(e).format(t)}),a["a"].filter("moment",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"YYYY-MM-DD HH:mm";return He()(e).format(t)}),a["a"].filter("timeAgo",De["a"]),a["a"].filter("fileSizeFormat",function(e){if(!e)return"0 Bytes";var t=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],n=0,a=parseFloat(e);n=Math.floor(Math.log(a)/Math.log(1024));var o=a/Math.pow(1024,n);return o=o.toFixed(2),o+" "+t[n]});var je,Me,$e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.split("").reduce(function(e,t){var n=t.charCodeAt(0);return n>=0&&n<=128?e+1:e+2},0)},Ae=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=0;return e.split("").reduce(function(e,a){var o=a.charCodeAt(0);return n+=o>=0&&o<=128?1:2,n<=t?e+a:e},"")},Ie={name:"Ellipsis",components:{Tooltip:ce["a"]},props:{prefixCls:{type:String,default:"ant-pro-ellipsis"},tooltip:{type:Boolean},length:{type:Number,required:!0},lines:{type:Number,default:1},fullWidthRecognition:{type:Boolean,default:!1}},methods:{getStrDom:function(e,t){var n=this.$createElement;return n("span",[Ae(e,this.length)+(t>this.length?"...":"")])},getTooltip:function(e,t){var n=this.$createElement;return n(ce["a"],[n("template",{slot:"title"},[e]),this.getStrDom(e,t)])}},render:function(){var e=this.$props,t=e.tooltip,n=e.length,a=this.$slots.default.map(function(e){return e.text}).join(""),o=$e(a),r=t&&o>n?this.getTooltip(a,o):this.getStrDom(a,o);return r}},Ge=Ie,Re=Object(d["a"])(Ge,je,Me,!1,null,null,null),Pe=Re.exports,Fe=Pe,Be=n("5a70"),Ne=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[e.draggable?n("a-upload-dragger",{attrs:{name:e.name,multiple:e.multiple,accept:e.accept,customRequest:e.handleUpload,remove:e.handleRemove},on:{change:e.handleChange}},[e._t("default",null,{role:"button"})],2):n("a-upload",{attrs:{name:e.name,multiple:e.multiple,accept:e.accept,customRequest:e.handleUpload,remove:e.handleRemove},on:{change:e.handleChange}},[e._t("default")],2)],1)},Ue=[],Ke=n("7f43"),qe=n.n(Ke),Ye={name:"Upload",props:{name:{type:String,required:!1,default:"file"},multiple:{type:Boolean,required:!1,default:!1},draggable:{type:Boolean,required:!1,default:!0},accept:{type:String,required:!1,default:""},uploadHandler:{type:Function,required:!0}},methods:{handleChange:function(e){this.$emit("change",e)},handleRemove:function(e){this.$log.debug("Removed file",e),this.$emit("remove",e)},handleUpload:function(e){var t=this;this.$log.debug("Uploading option",e);var n=qe.a.CancelToken,a=n.source(),o=new FormData;return o.append(this.name,e.file),this.uploadHandler(o,function(n){n.total>0&&(n.percent=n.loaded/n.total*100),t.$log.debug("Uploading percent: ",n.percent),e.onProgress(n)},a.token,e.file).then(function(n){t.$log.debug("Uploaded successfully",n),e.onSuccess(n,e.file),t.$emit("success",n,e.file)}).catch(function(n){t.$log.debug("Failed to upload file",n),e.onError(n,n.response),t.$emit("failure",n,e.file)}),{abort:function(){t.$log.debug("Upload operation aborted by the user"),a.cancel("Upload operation canceled by the user.")}}}}},ze=Ye,We=Object(d["a"])(ze,Ne,Ue,!1,null,null,null),Xe=We.exports,Ve={Ellipsis:Fe,FooterToolbar:Be["a"],Upload:Xe},Je={};Object.keys(Ve).forEach(function(e){Je[e]=a["a"].component(e,Ve[e])});var Ze=n("ac2a"),Qe=n.n(Ze);a["a"].config.productionTip=!1,a["a"].use(m["a"]),a["a"].use(Qe.a),new a["a"]({router:m["a"],store:p["a"],render:function(e){return e(h)}}).$mount("#app")},"56dc":function(e,t,n){"use strict";var a=n("1fdd"),o=n.n(a);o.a},"5a70":function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:e.prefixCls},[n("div",{staticStyle:{float:"left"}},[e._t("extra",[e._v(e._s(e.extra))])],2),n("div",{staticStyle:{float:"right"}},[e._t("default")],2)])},o=[],r={name:"FooterToolBar",props:{prefixCls:{type:String,default:"ant-pro-footer-toolbar"},extra:{type:[String,Object],default:""}}},i=r,s=n("17cc"),c=Object(s["a"])(i,a,o,!1,null,"097458dd",null),u=c.exports;n("2432"),t["a"]=u},"5eac":function(e,t,n){"use strict";var a=n("97fe"),o=n.n(a);o.a},6692:function(e,t,n){"use strict";var a=n("1636"),o=n.n(a);o.a},"680a":function(e,t,n){"use strict";var a,o,r,i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("router-view")],1)},s=[],c={name:"BlankLayout"},u=c,l=n("17cc"),d=Object(l["a"])(u,i,s,!1,null,"2dbba1c3",null),f=d.exports,h=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-layout",{class:["layout",e.device]},[e.isMobile()?n("a-drawer",{attrs:{placement:"left",wrapClassName:"drawer-sider "+e.navTheme,closable:!1,visible:e.collapsed},on:{close:e.drawerClose}},[n("side-menu",{attrs:{mode:"inline",menus:e.menus,theme:e.navTheme,collapsed:!1,collapsible:!0},on:{menuSelect:e.menuSelect}})],1):e.isSideMenu()?n("side-menu",{attrs:{mode:"inline",menus:e.menus,theme:e.navTheme,collapsed:e.collapsed,collapsible:!0}}):e._e(),n("a-layout",{class:[e.layoutMode,"content-width-"+e.contentWidth],style:{paddingLeft:e.contentPaddingLeft,minHeight:"100vh"}},[n("global-header",{attrs:{mode:e.layoutMode,menus:e.menus,theme:e.navTheme,collapsed:e.collapsed,device:e.device},on:{toggle:e.toggle}}),n("a-layout-content",{style:{height:"100%",margin:"24px 24px 0",paddingTop:e.fixedHeader?"64px":"0"}},[n("transition",{attrs:{name:"page-transition"}},[n("route-view")],1)],1),n("a-layout-footer",[n("global-footer")],1)],1)],1)},m=[],p=(n("7415"),n("3556")),b=n("ca00"),g=n("591a"),v=n("ac0d"),y=n("e819"),E=n("d73b"),k={name:"RouteView",props:{keepAlive:{type:Boolean,default:!0}},data:function(){return{}},render:function(){var e=arguments[0],t=this.$route.meta,n=e("keep-alive",[e("router-view")]),a=e("router-view");return!1===t.keepAlive?a:this.keepAlive||t.keepAlive?n:a}},_=k,C=Object(l["a"])(_,a,o,!1,null,null,null),T=C.exports,O=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-layout-sider",{class:["sider",e.isDesktop()?null:"shadow",e.theme,e.fixSiderbar?"ant-fixed-sidemenu":null],attrs:{width:"256px",collapsible:e.collapsible,trigger:null},model:{value:e.collapsed,callback:function(t){e.collapsed=t},expression:"collapsed"}},[n("logo"),n("s-menu",{staticStyle:{padding:"16px 0px"},attrs:{collapsed:e.collapsed,menu:e.menus,theme:e.theme,mode:e.mode},on:{select:e.onSelect}})],1)},S=[],x=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"logo"},[n("router-link",{attrs:{to:{name:"Dashboard"}}},[n("h1",{staticClass:"logo-title"},[e._v("Halo")]),n("h1",{staticClass:"logo-sub-title"},[e._v("Dashboard")])])],1)},w=[],L={name:"Logo"},H=L,D=(n("1953"),Object(l["a"])(H,x,w,!1,null,null,null)),j=D.exports,M=n("34c6"),$=n("23c4"),A=n.n($),I=(n("3a23"),n("e0c1"),n("93fe"),n("612f"),n("5358")),G=n("bc5d"),R=I["a"].Item,P=I["a"].SubMenu,F={name:"SMenu",props:{menu:{type:Array,required:!0},theme:{type:String,required:!1,default:"dark"},mode:{type:String,required:!1,default:"inline"},collapsed:{type:Boolean,required:!1,default:!1}},data:function(){return{openKeys:[],selectedKeys:[],cachedOpenKeys:[]}},computed:{rootSubmenuKeys:function(e){var t=[];return e.menu.forEach(function(e){return t.push(e.path)}),t}},created:function(){this.updateMenu()},watch:{collapsed:function(e){e?(this.cachedOpenKeys=this.openKeys.concat(),this.openKeys=[]):this.openKeys=this.cachedOpenKeys},$route:function(){this.updateMenu()}},methods:{onOpenChange:function(e){var t=this;if("horizontal"!==this.mode){var n=e.find(function(e){return!t.openKeys.includes(e)});this.rootSubmenuKeys.includes(n)?this.openKeys=n?[n]:[]:this.openKeys=e}else this.openKeys=e},updateMenu:function(){var e=this.$route.matched.concat();e.length>=4&&this.$route.meta.hidden?(e.pop(),this.selectedKeys=[e[2].path]):this.selectedKeys=[e.pop().path];var t=[];"inline"===this.mode&&e.forEach(function(e){t.push(e.path)}),this.collapsed?this.cachedOpenKeys=t:this.openKeys=t},renderItem:function(e){return e.hidden?null:e.children&&!e.hideChildrenInMenu?this.renderSubMenu(e):this.renderMenuItem(e)},renderMenuItem:function(e){var t=this.$createElement,n=e.meta.target||null,a=n?"a":"router-link",o={to:{name:e.name}},r={href:e.path,target:e.meta.target};return t(R,A()([{},{key:e.path}]),[t(a,{props:Object(p["a"])({},o),attrs:Object(p["a"])({},r)},[this.renderIcon(e.meta.icon),t("span",[e.meta.title])])])},renderSubMenu:function(e){var t=this,n=this.$createElement,a=[];return e.hideChildrenInMenu||e.children.forEach(function(e){return a.push(t.renderItem(e))}),n(P,A()([{},{key:e.path}]),[n("span",{slot:"title"},[this.renderIcon(e.meta.icon),n("span",[e.meta.title])]),a])},renderIcon:function(e){var t=this.$createElement;if("none"===e||void 0===e)return null;var n={};return"object"===Object(M["a"])(e)?n.component=e:n.type=e,t(G["a"],{props:Object(p["a"])({},n)})}},render:function(){var e=this,t=arguments[0],n=this.mode,a=this.theme,o=this.menu,r={mode:n,theme:a,openKeys:this.openKeys},i={select:function(t){e.selectedKeys=t.selectedKeys,e.$emit("select",t)},openChange:this.onOpenChange},s=o.map(function(t){return t.hidden?null:e.renderItem(t)});return t(I["a"],{props:Object(p["a"])({},r),on:Object(p["a"])({},i),model:{value:e.selectedKeys,callback:function(t){e.selectedKeys=t}}},[s])}},B=F,N={name:"SideMenu",components:{Logo:j,SMenu:B},mixins:[v["a"],v["b"]],props:{mode:{type:String,required:!1,default:"inline"},theme:{type:String,required:!1,default:"dark"},collapsible:{type:Boolean,required:!1,default:!1},collapsed:{type:Boolean,required:!1,default:!1},menus:{type:Array,required:!0}},methods:{onSelect:function(e){this.$emit("menuSelect",e)}}},U=N,K=Object(l["a"])(U,O,S,!1,null,null,null),q=K.exports,Y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"showHeader"}},[e.visible?n("div",{staticClass:"header-animat"},[e.visible?n("a-layout-header",{class:[e.fixedHeader&&"ant-header-fixedHeader",e.sidebarOpened?"ant-header-side-opened":"ant-header-side-closed"],style:{padding:"0"}},["sidemenu"===e.mode?n("div",{staticClass:"header"},["mobile"===e.device?n("a-icon",{staticClass:"trigger",attrs:{type:e.collapsed?"menu-fold":"menu-unfold"},on:{click:e.toggle}}):n("a-icon",{staticClass:"trigger",attrs:{type:e.collapsed?"menu-unfold":"menu-fold"},on:{click:e.toggle}}),n("user-menu")],1):n("div",{class:["top-nav-header-index",e.theme]},[n("div",{staticClass:"header-index-wide"},[n("div",{staticClass:"header-index-left"},["mobile"!==e.device?n("logo",{staticClass:"top-nav-header"}):e._e(),"mobile"!==e.device?n("s-menu",{attrs:{mode:"horizontal",menu:e.menus,theme:e.theme}}):n("a-icon",{staticClass:"trigger",attrs:{type:e.collapsed?"menu-fold":"menu-unfold"},on:{click:e.toggle}})],1),n("user-menu",{staticClass:"header-index-right"})],1)])]):e._e()],1):e._e()])},z=[],W=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"user-wrapper"},[n("a",{attrs:{href:e.options.blog_url,target:"_blank"}},[n("span",{staticClass:"action"},[n("a-icon",{attrs:{type:"link"}})],1)]),n("a",{attrs:{href:"javascript:void(0)"},on:{click:e.showOptionModal}},[n("span",{staticClass:"action"},[n("a-icon",{attrs:{type:"setting"}})],1)]),n("header-comment",{staticClass:"action"}),n("a-dropdown",[e.user?n("span",{staticClass:"action ant-dropdown-link user-dropdown-menu"},[n("a-avatar",{staticClass:"avatar",attrs:{size:"small",src:e.user.avatar||"https://gravatar.loli.net/avatar/?s=256&d=mm"}})],1):e._e(),n("a-menu",{staticClass:"user-dropdown-menu-wrapper",attrs:{slot:"overlay"},slot:"overlay"},[n("a-menu-item",{key:"0"},[n("router-link",{attrs:{to:{name:"Profile"}}},[n("a-icon",{attrs:{type:"user"}}),n("span",[e._v("个人资料")])],1)],1),n("a-menu-divider"),n("a-menu-item",{key:"1"},[n("a",{attrs:{href:"javascript:;"},on:{click:e.handleLogout}},[n("a-icon",{attrs:{type:"logout"}}),n("span",[e._v("退出登录")])],1)])],1)],1),n("setting-drawer",{ref:"drawer"})],1)},X=[],V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-popover",{attrs:{trigger:"click",placement:"bottomRight",autoAdjustOverflow:!0,arrowPointAtCenter:!0,overlayStyle:{width:"300px",top:"50px"},title:"待审核评论"},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},[n("template",{slot:"content"},[n("a-spin",{attrs:{spinning:e.loadding}},[n("div",{staticClass:"custom-tab-wrapper"},[n("a-tabs",[n("a-tab-pane",{key:"1",attrs:{tab:"文章"}},[n("a-list",{attrs:{dataSource:e.converttedPostComments},scopedSlots:e._u([{key:"renderItem",fn:function(t){return n("a-list-item",{},[n("a-list-item-meta",[n("a-avatar",{staticStyle:{"background-color":"white"},attrs:{slot:"avatar",src:"https://gravatar.loli.net/avatar/"+t.gavatarMd5+"&d=mm",size:"large"},slot:"avatar"}),n("template",{slot:"title"},[n("a",{attrs:{href:t.authorUrl,target:"_blank"}},[e._v(e._s(t.author))]),e._v(":"),n("span",{domProps:{innerHTML:e._s(t.content)}})]),n("template",{slot:"description"},[e._v("\n "+e._s(e._f("timeAgo")(t.createTime))+"\n ")])],2)],1)}}])})],1),n("a-tab-pane",{key:"2",attrs:{tab:"页面"}},[n("a-list",{attrs:{dataSource:e.converttedSheetComments},scopedSlots:e._u([{key:"renderItem",fn:function(t){return n("a-list-item",{},[n("a-list-item-meta",[n("a-avatar",{staticStyle:{"background-color":"white"},attrs:{slot:"avatar",src:"https://gravatar.loli.net/avatar/"+t.gavatarMd5+"&d=mm",size:"large"},slot:"avatar"}),n("template",{slot:"title"},[n("a",{attrs:{href:t.authorUrl,target:"_blank"}},[e._v(e._s(t.author))]),e._v(":"),n("span",{domProps:{innerHTML:e._s(t.content)}})]),n("template",{slot:"description"},[e._v("\n "+e._s(e._f("timeAgo")(t.createTime))+"\n ")])],2)],1)}}])})],1)],1)],1)])],1),n("span",{staticClass:"header-comment",on:{click:e.fetchComment}},[e.postComments.length>0||e.sheetComments.length>0?n("a-badge",{attrs:{dot:""}},[n("a-icon",{attrs:{type:"bell"}})],1):n("a-badge",[n("a-icon",{attrs:{type:"bell"}})],1)],1)],2)},J=[],Z=n("063c"),Q=n("ae4d"),ee=n.n(Q),te={name:"HeaderComment",data:function(){return{loadding:!1,visible:!1,postComments:[],sheetComments:[]}},created:function(){this.getComment()},computed:{converttedPostComments:function(){return this.postComments.map(function(e){return e.content=ee()(e.content,{sanitize:!0}),e})},converttedSheetComments:function(){return this.sheetComments.map(function(e){return e.content=ee()(e.content,{sanitize:!0}),e})}},methods:{fetchComment:function(){this.visible?this.loadding=!1:(this.loadding=!0,this.getComment()),this.visible=!this.visible},getComment:function(){var e=this;Z["a"].latestComment("posts",5,"AUDITING").then(function(t){e.postComments=t.data.data,e.loadding=!1}),Z["a"].latestComment("sheets",5,"AUDITING").then(function(t){e.sheetComments=t.data.data,e.loadding=!1})}}},ne=te,ae=(n("8e39"),Object(l["a"])(ne,V,J,!1,null,"12990b48",null)),oe=ae.exports,re=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{ref:"settingDrawer",staticClass:"setting-drawer"},[n("a-drawer",{attrs:{width:"300",closable:"",visible:e.visible,zIndex:9999},on:{close:e.onClose}},[n("div",{staticClass:"setting-drawer-index-content"},[n("div",{style:{marginBottom:"24px"}},[n("h3",{staticClass:"setting-drawer-index-title"},[e._v("整体风格设置")]),n("div",{staticClass:"setting-drawer-index-blockChecbox"},[n("a-tooltip",[n("template",{slot:"title"},[e._v("暗色菜单风格")]),n("div",{staticClass:"setting-drawer-index-item",on:{click:function(t){return e.handleMenuTheme("dark")}}},[n("img",{attrs:{src:"https://gw.alipayobjects.com/zos/rmsportal/LCkqqYNmvBEbokSDscrm.svg",alt:"dark"}}),"dark"===e.navTheme?n("div",{staticClass:"setting-drawer-index-selectIcon"},[n("a-icon",{attrs:{type:"check"}})],1):e._e()])],2),n("a-tooltip",[n("template",{slot:"title"},[e._v("亮色菜单风格")]),n("div",{staticClass:"setting-drawer-index-item",on:{click:function(t){return e.handleMenuTheme("light")}}},[n("img",{attrs:{src:"https://gw.alipayobjects.com/zos/rmsportal/jpRkZQMyYRryryPNtyIC.svg",alt:"light"}}),"dark"!==e.navTheme?n("div",{staticClass:"setting-drawer-index-selectIcon"},[n("a-icon",{attrs:{type:"check"}})],1):e._e()])],2)],1)]),n("a-divider"),n("div",{style:{marginBottom:"24px"}},[n("h3",{staticClass:"setting-drawer-index-title"},[e._v("主题色")]),n("div",{staticStyle:{height:"20px"}},e._l(e.colorList,function(t,a){return n("a-tooltip",{key:a,staticClass:"setting-drawer-theme-color-colorBlock"},[n("template",{slot:"title"},[e._v(e._s(t.key))]),n("a-tag",{attrs:{color:t.color},on:{click:function(n){return e.changeColor(t.color)}}},[t.color===e.primaryColor?n("a-icon",{attrs:{type:"check"}}):e._e()],1)],2)}),1)]),n("a-divider"),n("div",{style:{marginBottom:"24px"}},[n("h3",{staticClass:"setting-drawer-index-title"},[e._v("导航模式")]),n("div",{staticClass:"setting-drawer-index-blockChecbox"},[n("div",{staticClass:"setting-drawer-index-item",on:{click:function(t){return e.handleLayout("sidemenu")}}},[n("img",{attrs:{src:"https://gw.alipayobjects.com/zos/rmsportal/JopDzEhOqwOjeNTXkoje.svg",alt:"sidemenu"}}),"sidemenu"===e.layoutMode?n("div",{staticClass:"setting-drawer-index-selectIcon"},[n("a-icon",{attrs:{type:"check"}})],1):e._e()]),n("div",{staticClass:"setting-drawer-index-item",on:{click:function(t){return e.handleLayout("topmenu")}}},[n("img",{attrs:{src:"https://gw.alipayobjects.com/zos/rmsportal/KDNDBbriJhLwuqMoxcAr.svg",alt:"topmenu"}}),"sidemenu"!==e.layoutMode?n("div",{staticClass:"setting-drawer-index-selectIcon"},[n("a-icon",{attrs:{type:"check"}})],1):e._e()])])]),n("a-divider")],1)])],1)},ie=[],se=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"setting-drawer-index-item"},[n("h3",{staticClass:"setting-drawer-index-title"},[e._v(e._s(e.title))]),e._t("default"),e.divider?n("a-divider"):e._e()],2)},ce=[],ue={name:"SettingItem",props:{title:{type:String,default:""},divider:{type:Boolean,default:!1}}},le=ue,de=(n("f4eb"),Object(l["a"])(le,se,ce,!1,null,"3cea9c3c",null)),fe=de.exports,he=n("843a"),me=[{key:"红色",color:"#F5222D"},{key:"浅红色",color:"#FA541C"},{key:"日暮",color:"#FAAD14"},{key:"青色",color:"#13C2C2"},{key:"绿色",color:"#52C41A"},{key:"默认",color:"#1890FF"},{key:"蓝色",color:"#2F54EB"},{key:"紫色",color:"#722ED1"}],pe=function(e){if(e){var t=he["a"].loading("正在编译主题!",0);if(r)i();else{var n=document.createElement("link"),a=document.createElement("script"),o=document.createElement("script");n.setAttribute("rel","stylesheet/less"),n.setAttribute("href","/color.less"),a.innerHTML="\n window.less = {\n async: true,\n env: 'production',\n javascriptEnabled: true\n };\n ",o.src="https://cdnjs.loli.net/ajax/libs/less.js/3.8.1/less.min.js",o.async=!0,o.onload=function(){i(),o.onload=null},document.body.appendChild(n),document.body.appendChild(a),document.body.appendChild(o),r=!0}}function i(){window.less&&setTimeout(function(){window.less.modifyVars({"@primary-color":e}).then(function(){t()}).catch(function(){he["a"].error("Failed to update theme"),t()})},200)}},be={components:{SettingItem:fe},mixins:[v["a"],v["b"]],data:function(){return{visible:!1,colorList:me,baseConfig:Object.assign({},y["a"])}},watch:{},mounted:function(){this.primaryColor!==y["a"].primaryColor&&pe(this.primaryColor)},methods:{showDrawer:function(){this.visible=!0},onClose:function(){this.visible=!1},toggle:function(){this.visible=!this.visible},handleMenuTheme:function(e){this.baseConfig.navTheme=e,this.$store.dispatch("ToggleTheme",e)},handleLayout:function(e){this.baseConfig.layout=e,this.$store.dispatch("ToggleLayoutMode",e),this.handleFixSiderbar(!1)},handleContentWidthChange:function(e){this.baseConfig.contentWidth=e,this.$store.dispatch("ToggleContentWidth",e)},changeColor:function(e){this.baseConfig.primaryColor=e,this.primaryColor!==e&&(this.$store.dispatch("ToggleColor",e),pe(e))},handleFixedHeader:function(e){this.baseConfig.fixedHeader=e,this.$store.dispatch("ToggleFixedHeader",e)},handleFixedHeaderHidden:function(e){this.baseConfig.autoHideHeader=e,this.$store.dispatch("ToggleFixedHeaderHidden",e)},handleFixSiderbar:function(e){if("topmenu"===this.layoutMode)return this.baseConfig.fixSiderbar=!1,void this.$store.dispatch("ToggleFixSiderbar",!1);this.baseConfig.fixSiderbar=e,this.$store.dispatch("ToggleFixSiderbar",e)}}},ge=be,ve=(n("091d"),Object(l["a"])(ge,re,ie,!1,null,"1836b06b",null)),ye=ve.exports,Ee=n("482b"),ke={name:"UserMenu",components:{HeaderComment:oe,SettingDrawer:ye},data:function(){return{optionVisible:!0,options:[],keys:["blog_url"]}},mounted:function(){this.optionVisible=this.$refs.drawer.visible},created:function(){this.loadOptions()},computed:Object(p["a"])({},Object(g["c"])(["user"])),methods:Object(p["a"])({},Object(g["b"])(["logout"]),{handleLogout:function(){var e=this;this.$confirm({title:"提示",content:"确定要注销登录吗 ?",onOk:function(){return e.logout({}).then(function(){window.location.reload()}).catch(function(t){e.$message.error({title:"错误",description:t.message})})},onCancel:function(){}})},showOptionModal:function(){this.optionVisible=this.$refs.drawer.visible,this.$refs.drawer.toggle()},loadOptions:function(){var e=this;Ee["a"].listAll(this.keys).then(function(t){e.options=t.data.data})}})},_e=ke,Ce=(n("56dc"),Object(l["a"])(_e,W,X,!1,null,"9b91c188",null)),Te=Ce.exports,Oe={name:"GlobalHeader",components:{UserMenu:Te,SMenu:B,Logo:j},mixins:[v["a"]],props:{mode:{type:String,default:"sidemenu"},menus:{type:Array,required:!0},theme:{type:String,required:!1,default:"dark"},collapsed:{type:Boolean,required:!1,default:!1},device:{type:String,required:!1,default:"desktop"}},data:function(){return{visible:!0,oldScrollTop:0}},mounted:function(){document.body.addEventListener("scroll",this.handleScroll,{passive:!0})},methods:{handleScroll:function(){var e=this;if(this.autoHideHeader){var t=document.body.scrollTop+document.documentElement.scrollTop;this.ticking||(this.ticking=!0,requestAnimationFrame(function(){e.oldScrollTop>t?e.visible=!0:t>300&&e.visible?e.visible=!1:t<300&&!e.visible&&(e.visible=!0),e.oldScrollTop=t,e.ticking=!1}))}},toggle:function(){this.$emit("toggle")}},beforeDestroy:function(){document.body.removeEventListener("scroll",this.handleScroll,!0)}},Se=Oe,xe=(n("05fe"),Object(l["a"])(Se,Y,z,!1,null,null,null)),we=xe.exports,Le=we,He=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"footer"},[n("div",{staticClass:"copyright"},[e._v("\n Proudly power by\n "),n("router-link",{attrs:{to:{name:"About"}}},[n("a",{attrs:{href:"javascript:void(0);"}},[e._v("Halo")])])],1)])},De=[],je={name:"GlobalFooter",data:function(){return{}}},Me=je,$e=(n("d487"),Object(l["a"])(Me,He,De,!1,null,"02e9579a",null)),Ae=$e.exports,Ie=Ae,Ge={name:"BasicLayout",mixins:[v["a"],v["b"]],components:{RouteView:T,SideMenu:q,GlobalHeader:Le,GlobalFooter:Ie},data:function(){return{production:y["a"].production,collapsed:!1,menus:[]}},computed:Object(p["a"])({},Object(g["e"])({mainMenu:function(e){return e.permission.addRouters}}),{contentPaddingLeft:function(){return!this.fixSidebar||this.isMobile()?"0":this.sidebarOpened?"256px":"80px"}}),watch:{sidebarOpened:function(e){this.collapsed=!e}},created:function(){this.menus=E["a"].find(function(e){return"/"===e.path}).children,this.collapsed=!this.sidebarOpened},mounted:function(){var e=this,t=navigator.userAgent;t.indexOf("Edge")>-1&&this.$nextTick(function(){e.collapsed=!e.collapsed,setTimeout(function(){e.collapsed=!e.collapsed},16)})},methods:Object(p["a"])({},Object(g["b"])(["setSidebar"]),{toggle:function(){this.collapsed=!this.collapsed,this.setSidebar(!this.collapsed),Object(b["b"])()},paddingCalc:function(){var e="";return e=this.sidebarOpened?this.isDesktop()?"256px":"80px":(this.isMobile()?"0":this.fixSidebar&&"80px")||"0",e},menuSelect:function(){this.isDesktop()||(this.collapsed=!1)},drawerClose:function(){this.collapsed=!1}})},Re=Ge,Pe=(n("6692"),Object(l["a"])(Re,h,m,!1,null,null,null)),Fe=Pe.exports,Be=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:e.$route.meta.hiddenHeaderContent?null:"margin: -24px -24px 0px;"},[e.$route.meta.hiddenHeaderContent?e._e():n("page-header",{attrs:{title:e.pageTitle,logo:e.logo,avatar:e.avatar}},[e._t("action",null,{slot:"action"}),e._t("headerContent",null,{slot:"content"}),!this.$slots.headerContent&&e.description?n("div",{attrs:{slot:"content"},slot:"content"},[n("p",{staticStyle:{"font-size":"14px",color:"rgba(0,0,0,.65)"}},[e._v(e._s(e.description))]),n("div",{staticClass:"link"},[e._l(e.linkList,function(t,a){return[n("a",{key:a,attrs:{href:t.href}},[n("a-icon",{attrs:{type:t.icon}}),n("span",[e._v(e._s(t.title))])],1)]})],2)]):e._e()],2),n("div",{staticClass:"content"},[n("div",{staticClass:"page-header-index-wide"},[e._t("default",[n("router-view",{ref:"content"})])],2)])],1)},Ne=[],Ue=(n("aaa4"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"page-header"},[n("div",{staticClass:"page-header-index-wide"},[n("s-breadcrumb"),n("div",{staticClass:"detail"},[e.$route.meta.hiddenHeaderContent?e._e():n("div",{staticClass:"main"},[n("div",{staticClass:"row"},[e.logo?n("img",{staticClass:"logo",attrs:{src:e.logo}}):e._e(),n("div",{staticClass:"action"},[e._t("action")],2)]),n("div",{staticClass:"row"},[e.avatar?n("div",{staticClass:"avatar"},[n("a-avatar",{attrs:{src:e.avatar}})],1):e._e(),this.$slots.content?n("div",{staticClass:"headerContent"},[e._t("content")],2):e._e(),this.$slots.extra?n("div",{staticClass:"extra"},[e._t("extra")],2):e._e()]),n("div",[e._t("pageMenu")],2)])])],1)])}),Ke=[],qe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-breadcrumb",{staticClass:"breadcrumb"},e._l(e.breadList,function(t,a){return n("a-breadcrumb-item",{key:t.name},[t.name!=e.name&&1!=a?n("router-link",{attrs:{to:{path:""===t.path?"/":t.path}}},[e._v(e._s(t.meta.title))]):n("span",[e._v(e._s(t.meta.title))])],1)}),1)},Ye=[],ze={data:function(){return{name:"",breadList:[]}},created:function(){this.getBreadcrumb()},methods:{getBreadcrumb:function(){var e=this;this.breadList=[],this.name=this.$route.name,this.$route.matched.forEach(function(t){e.breadList.push(t)})}},watch:{$route:function(){this.getBreadcrumb()}}},We=ze,Xe=Object(l["a"])(We,qe,Ye,!1,null,"666624e8",null),Ve=Xe.exports,Je={name:"PageHeader",components:{"s-breadcrumb":Ve},props:{title:{type:[String,Boolean],default:!0,required:!1},logo:{type:String,default:"",required:!1},avatar:{type:String,default:"",required:!1}},data:function(){return{}}},Ze=Je,Qe=(n("5eac"),Object(l["a"])(Ze,Ue,Ke,!1,null,"3f857d04",null)),et=Qe.exports,tt=et,nt={name:"PageView",components:{PageHeader:tt},props:{avatar:{type:String,default:null},title:{type:[String,Boolean],default:!0},logo:{type:String,default:null}},data:function(){return{pageTitle:null,description:null,linkList:[],extraImage:"",search:!1,tabs:{}}},mounted:function(){this.getPageMeta()},updated:function(){this.getPageMeta()},methods:{getPageMeta:function(){this.pageTitle="string"!==typeof this.title&&this.title?this.$route.meta.title:this.title;var e=this.$refs.content;e&&(e.pageMeta?Object.assign(this,e.pageMeta):(this.description=e.description,this.linkList=e.linkList,this.extraImage=e.extraImage,this.search=!0===e.search,this.tabs=e.tabs))}}},at=nt,ot=(n("b538"),Object(l["a"])(at,Be,Ne,!1,null,"9c624dc6",null)),rt=ot.exports;n.d(t,"a",function(){return Fe}),n.d(t,"b",function(){return f}),n.d(t,"c",function(){return rt})},"8e39":function(e,t,n){"use strict";var a=n("97e9"),o=n.n(a);o.a},"97e9":function(e,t,n){},"97fe":function(e,t,n){},"9e74":function(e,t,n){},"9efd":function(e,t,n){"use strict";n("4453");var a=n("a7ca"),o=n("7f43"),r=n.n(o),i=n("38bc"),s=n.n(i),c=(n("70e7"),n("6e6d")),u=n("843a"),l=n("4360"),d=n("a18c"),f=r.a.create({baseURL:"",timeout:5e3,withCredentials:!0});function h(e){var t=l["a"].getters.token;c["a"].$log.debug("Got token from store",t),t&&t.access_token&&(e.headers["Admin-Authorization"]=t.access_token)}function m(e){return p.apply(this,arguments)}function p(){return p=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=t.response.config,h(n),e.next=4,r.a.request(n);case 4:return a=e.sent,e.abrupt("return",a);case 6:case"end":return e.stop()}},e)})),p.apply(this,arguments)}var b=null;function g(e){return v.apply(this,arguments)}function v(){return v=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=l["a"].getters.token.refresh_token,e.prev=1,null===b&&(b=l["a"].dispatch("refreshToken",n)),e.next=5,b;case 5:e.next=11;break;case 7:e.prev=7,e.t0=e["catch"](1),e.t0.response&&e.t0.response.data&&e.t0.response.data.data===n&&d["a"].push({name:"Login"}),c["a"].$log.error("Failed to refresh token",e.t0);case 11:return e.prev=11,b=null,e.finish(11);case 14:return e.abrupt("return",m(t));case 15:case"end":return e.stop()}},e,null,[[1,7,11,14]])})),v.apply(this,arguments)}f.interceptors.request.use(function(e){return s.a.start(),h(e),e},function(e){return s.a.remove(),Promise.reject(e)}),f.interceptors.response.use(function(e){return s.a.done(),e},function(e){if(s.a.done(),r.a.isCancel(e))return c["a"].$log.debug("Cancelled uploading by user."),Promise.reject(e);c["a"].$log.error("Response failed",e);var t=e.response,n=t?t.status:-1;c["a"].$log.error("Server response status",n);var a=t?t.data:null;if(a){if(c["a"].$log.error("Business response status",a.status),400===a.status);else if(401===a.status)if(l["a"].getters.token&&l["a"].getters.token.access_token===a.data){var o=g(e);if(o!==e)return o}else d["a"].push({name:"Login"});else 403===a.status||404===a.status||a.status;u["a"].error(a.message)}else u["a"].error("Server unavailable");return Promise.reject(e)}),t["a"]=f},"9fb0":function(e,t,n){"use strict";n.d(t,"a",function(){return a}),n.d(t,"i",function(){return o}),n.d(t,"h",function(){return r}),n.d(t,"g",function(){return i}),n.d(t,"b",function(){return s}),n.d(t,"d",function(){return c}),n.d(t,"f",function(){return u}),n.d(t,"e",function(){return l}),n.d(t,"c",function(){return d}),n.d(t,"j",function(){return f});var a="Access-Token",o="SIDEBAR_TYPE",r="DEFAULT_THEME",i="DEFAULT_LAYOUT_MODE",s="DEFAULT_COLOR",c="DEFAULT_FIXED_HEADER",u="DEFAULT_FIXED_SIDEMENU",l="DEFAULT_FIXED_HEADER_HIDDEN",d="DEFAULT_CONTENT_WIDTH_TYPE",f="USER"},a18c:function(e,t,n){"use strict";var a=n("6e6d"),o=n("1e6f"),r=n("d73b");a["a"].use(o["a"]),t["a"]=new o["a"]({mode:"hash",base:"/",scrollBehavior:function(){return{y:0}},routes:r["b"].concat(r["a"])})},ac0d:function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return s});var a=n("3556"),o=n("51e6"),r=n("591a"),i={computed:Object(a["a"])({},Object(r["e"])({layoutMode:function(e){return e.app.layout},navTheme:function(e){return e.app.theme},primaryColor:function(e){return e.app.color},fixedHeader:function(e){return e.app.fixedHeader},fixSiderbar:function(e){return e.app.fixSiderbar},fixSidebar:function(e){return e.app.fixSiderbar},contentWidth:function(e){return e.app.contentWidth},autoHideHeader:function(e){return e.app.autoHideHeader},sidebarOpened:function(e){return e.app.sidebar}})),methods:{isTopMenu:function(){return"topmenu"===this.layoutMode},isSideMenu:function(){return!this.isTopMenu()}}},s={computed:Object(a["a"])({},Object(r["e"])({device:function(e){return e.app.device}})),methods:{isMobile:function(){return this.device===o["a"].MOBILE},isDesktop:function(){return this.device===o["a"].DESKTOP},isTablet:function(){return this.device===o["a"].TABLET}}}},b538:function(e,t,n){"use strict";var a=n("399e"),o=n.n(a);o.a},bc6c:function(e,t,n){},c24f:function(e,t,n){"use strict";var a=n("9efd"),o="/api/admin/users",r={getProfile:function(){return Object(a["a"])({url:"".concat(o,"/profiles"),method:"get"})},updateProfile:function(e){return Object(a["a"])({url:"".concat(o,"/profiles"),method:"put",data:e})},updatePassword:function(e,t){return Object(a["a"])({url:"".concat(o,"/profiles/password"),method:"put",data:{oldPassword:e,newPassword:t}})}};t["a"]=r},ca00:function(e,t,n){"use strict";n.d(t,"b",function(){return r}),n.d(t,"a",function(){return i});var a=n("6bf2"),o=n.n(a);n("35d0");function r(){var e=document.createEvent("HTMLEvents");e.initEvent("resize",!0,!0),e.eventType="message",window.dispatchEvent(e)}function i(e){var t=(new Date).getTime(),n=t-e,a=Math.floor(n/864e5);if(0===a){var r=n%864e5,i=Math.floor(r/36e5);if(0===i){var s=r%36e5,c=Math.floor(s/6e4);if(0===c){var u=s%6e4,l=Math.round(u/1e3);return l+" 秒前"}return c+" 分钟前"}return i+" 小时前"}return a<0?"刚刚":a<5?a+" 天前":o()(e).format("YYYY-MM-DD HH:mm")}},d487:function(e,t,n){"use strict";var a=n("e0b9"),o=n.n(a);o.a},d73b:function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var a=n("680a"),o=[{path:"/",name:"index",component:a["a"],meta:{title:"首页"},redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:function(){return n.e("chunk-0aab7d1a").then(n.bind(null,"5c3a"))},meta:{title:"仪表盘",icon:"dashboard",hiddenHeaderContent:!1}},{path:"/posts",name:"Posts",redirect:"/posts/list",component:a["c"],meta:{title:"文章",icon:"form"},children:[{path:"/posts/list",name:"PostList",component:function(){return n.e("chunk-87e2df70").then(n.bind(null,"dae2"))},meta:{title:"所有文章",hiddenHeaderContent:!1}},{path:"/posts/write",name:"PostEdit",component:function(){return Promise.all([n.e("chunk-4fb0639b"),n.e("chunk-02f1697e")]).then(n.bind(null,"db44"))},meta:{title:"写文章",hiddenHeaderContent:!1}},{path:"/categories",name:"CategoryList",component:function(){return n.e("chunk-1ea08528").then(n.bind(null,"7e89"))},meta:{title:"分类目录",hiddenHeaderContent:!1}},{path:"/tags",name:"TagList",component:function(){return n.e("chunk-407d6578").then(n.bind(null,"aa1e9"))},meta:{title:"标签",hiddenHeaderContent:!1}}]},{path:"/sheets",name:"Sheets",component:a["c"],redirect:"/sheets/list",meta:{title:"页面",icon:"read"},children:[{path:"/sheets/list",name:"SheetList",component:function(){return n.e("chunk-142c8832").then(n.bind(null,"a8ed"))},meta:{title:"所有页面",hiddenHeaderContent:!1}},{path:"/sheets/write",name:"SheetEdit",component:function(){return Promise.all([n.e("chunk-4fb0639b"),n.e("chunk-b6cd2e50")]).then(n.bind(null,"f585"))},meta:{title:"新建页面",hiddenHeaderContent:!1}},{path:"/sheets/links",name:"LinkList",hidden:!0,component:function(){return n.e("chunk-2d21a35c").then(n.bind(null,"bb17"))},meta:{title:"友情链接",hiddenHeaderContent:!1}},{path:"/sheets/photos",name:"PhotoList",hidden:!0,component:function(){return n.e("chunk-75751d79").then(n.bind(null,"6d0d"))},meta:{title:"图库",hiddenHeaderContent:!1}},{path:"/sheets/journals",name:"JournalList",hidden:!0,component:function(){return n.e("chunk-5bf599cc").then(n.bind(null,"81a6"))},meta:{title:"日志",hiddenHeaderContent:!1}}]},{path:"/attachments",name:"Attachments",component:function(){return n.e("chunk-31829c73").then(n.bind(null,"61d0"))},meta:{title:"附件",icon:"picture",hiddenHeaderContent:!1}},{path:"/comments",name:"Comments",component:function(){return n.e("chunk-2d0b64bf").then(n.bind(null,"1d0f"))},meta:{title:"评论",icon:"message",hiddenHeaderContent:!1}},{path:"/interface",name:"Interface",component:a["c"],redirect:"/interface/themes",meta:{title:"外观",icon:"skin"},children:[{path:"/interface/themes",name:"ThemeList",component:function(){return n.e("chunk-efde06fa").then(n.bind(null,"79e7"))},meta:{title:"主题",hiddenHeaderContent:!1}},{path:"/interface/menus",name:"MenuList",component:function(){return n.e("chunk-2d0d65a2").then(n.bind(null,"71d6"))},meta:{title:"菜单",hiddenHeaderContent:!1}},{path:"/interface/themes/edit",name:"ThemeEdit",component:function(){return n.e("chunk-898a93f6").then(n.bind(null,"33c9"))},meta:{title:"主题编辑",hiddenHeaderContent:!1}}]},{path:"/user",name:"User",component:a["c"],redirect:"/user/profile",meta:{title:"用户",icon:"user"},children:[{path:"/user/profile",name:"Profile",component:function(){return n.e("chunk-edd856c6").then(n.bind(null,"7c54"))},meta:{title:"个人资料",hiddenHeaderContent:!1}}]},{path:"/system",name:"System",component:a["c"],redirect:"/system/options",meta:{title:"系统",icon:"setting"},children:[{path:"/system/options",name:"OptionForm",component:function(){return n.e("chunk-1c8b985a").then(n.bind(null,"26ea"))},meta:{title:"博客设置",hiddenHeaderContent:!1}},{path:"/system/about",name:"About",component:function(){return n.e("chunk-14e8932a").then(n.bind(null,"2967"))},hidden:!0,meta:{title:"关于 Halo",hiddenHeaderContent:!1}}]}]},{path:"*",redirect:"/404",hidden:!0}],r=[{path:"/test",component:a["b"],redirect:"/test/home",children:[{path:"home",name:"TestHome",component:function(){return n.e("chunk-71fa6d51").then(n.bind(null,"bb51"))}}]},{path:"/login",name:"Login",meta:{title:"登录"},component:function(){return n.e("chunk-9449c032").then(n.bind(null,"ac2a5"))}},{path:"/install",name:"Install",meta:{title:"安装向导"},component:function(){return n.e("chunk-c5b09f02").then(n.bind(null,"306f"))}},{path:"/404",name:"NotFound",component:function(){return n.e("fail").then(n.bind(null,"cc89"))}}]},e0b9:function(e,t,n){},e819:function(e,t,n){"use strict";t["a"]={primaryColor:"#1890FF",navTheme:"light",layout:"topmenu",contentWidth:"Fixed",fixedHeader:!1,fixSiderbar:!1,autoHideHeader:!1,storageOptions:{namespace:"halo__",name:"ls",storage:"local"}}},f4eb:function(e,t,n){"use strict";var a=n("07de"),o=n.n(a);o.a}}); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-5d83fd61.71621386.js b/src/main/resources/admin/js/chunk-02f1697e.fbb91c62.js similarity index 56% rename from src/main/resources/admin/js/chunk-5d83fd61.71621386.js rename to src/main/resources/admin/js/chunk-02f1697e.fbb91c62.js index dfda1cd2c..2653d1948 100644 --- a/src/main/resources/admin/js/chunk-5d83fd61.71621386.js +++ b/src/main/resources/admin/js/chunk-02f1697e.fbb91c62.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5d83fd61"],{2898:function(t,e,a){"use strict";var r=a("a770"),o=a.n(r);o.a},a770:function(t,e,a){},c405:function(t,e,a){"use strict";a("3a23"),a("612f");var r=a("9efd"),o="/api/admin/categories",s={};function n(t,e){e.forEach(function(e){t.key===e.parentId&&(t.children||(t.children=[]),t.children.push({key:e.id,title:e.name,isLeaf:!1}))}),t.children?t.children.forEach(function(t){return n(t,e)}):t.isLeaf=!0}s.listAll=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(r["a"])({url:"".concat(o),params:{more:t},method:"get"})},s.listTree=function(){return Object(r["a"])({url:"".concat(o,"/tree_view"),method:"get"})},s.create=function(t){return Object(r["a"])({url:o,data:t,method:"post"})},s.delete=function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"delete"})},s.get=function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"get"})},s.update=function(t,e){return Object(r["a"])({url:"".concat(o,"/").concat(t),data:e,method:"put"})},s.concreteTree=function(t){var e={key:0,title:"top",children:[]};return n(e,t),e.children},e["a"]=s},caf6:function(t,e,a){"use strict";var r=a("9efd"),o="/api/admin/posts",s={listLatest:function(t){return Object(r["a"])({url:"".concat(o,"/latest"),params:{top:t},method:"get"})},query:function(t){return Object(r["a"])({url:o,params:t,method:"get"})},get:function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"get"})},create:function(t,e){return Object(r["a"])({url:o,method:"post",data:t,params:{autoSave:e}})},update:function(t,e,a){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"put",data:e,params:{autoSave:a}})},updateStatus:function(t,e){return Object(r["a"])({url:"".concat(o,"/").concat(t,"/status/").concat(e),method:"put"})},delete:function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"delete"})},postStatus:{PUBLISHED:{color:"green",status:"success",text:"已发布"},DRAFT:{color:"yellow",status:"warning",text:"草稿"},RECYCLE:{color:"red",status:"error",text:"回收站"}}};e["a"]=s},d28db:function(t,e,a){"use strict";var r=a("9efd"),o="/api/admin/tags",s={listAll:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(r["a"])({url:o,params:{more:t},method:"get"})},createWithName:function(t){return Object(r["a"])({url:o,data:{name:t},method:"post"})},create:function(t){return Object(r["a"])({url:o,data:t,method:"post"})},update:function(t,e){return Object(r["a"])({url:"".concat(o,"/").concat(t),data:e,method:"put"})},delete:function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"delete"})}};e["a"]=s},db44:function(t,e,a){"use strict";a.r(e);var r=function(){var t=this,e=this,a=e.$createElement,r=e._self._c||a;return r("div",{staticClass:"page-header-index-wide"},[r("a-row",{attrs:{gutter:12}},[r("a-col",{attrs:{span:24}},[r("div",{staticStyle:{"margin-bottom":"16px"}},[r("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["title",{rules:[{required:!0,message:"请输入文章标题"}]}],expression:"['title', { rules: [{ required: true, message: '请输入文章标题' }] }]"}],attrs:{size:"large",placeholder:"请输入文章标题"},model:{value:e.postToStage.title,callback:function(t){e.$set(e.postToStage,"title",t)},expression:"postToStage.title"}})],1),r("div",{attrs:{id:"editor"}},[r("mavon-editor",{attrs:{boxShadow:!1,toolbars:e.toolbars,ishljs:!0,autofocus:!1},model:{value:e.postToStage.originalContent,callback:function(t){e.$set(e.postToStage,"originalContent",t)},expression:"postToStage.originalContent"}})],1)])],1),r("a-drawer",{attrs:{title:"文章设置",width:e.isMobile()?"100%":"460",placement:"right",closable:"",visible:e.postSettingVisible},on:{close:function(){return t.postSettingVisible=!1}}},[r("div",{staticClass:"post-setting-drawer-content"},[r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("基本设置")]),r("div",{staticClass:"post-setting-drawer-item"},[r("a-form",{attrs:{layout:"vertical"}},[r("a-form-item",{attrs:{label:"文章路径:",help:e.options.blog_url+"/archives/"+(e.postToStage.url?e.postToStage.url:"{auto_generate}")}},[r("a-input",{model:{value:e.postToStage.url,callback:function(t){e.$set(e.postToStage,"url",t)},expression:"postToStage.url"}})],1),r("a-form-item",{attrs:{label:"开启评论:"}},[r("a-radio-group",{attrs:{defaultValue:!1},model:{value:e.postToStage.disallowComment,callback:function(t){e.$set(e.postToStage,"disallowComment",t)},expression:"postToStage.disallowComment"}},[r("a-radio",{attrs:{value:!1}},[e._v("开启")]),r("a-radio",{attrs:{value:!0}},[e._v("关闭")])],1)],1)],1)],1)]),r("a-divider"),r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("分类目录")]),r("div",{staticClass:"post-setting-drawer-item"},[r("category-tree",{attrs:{categories:e.categories},model:{value:e.selectedCategoryIds,callback:function(t){e.selectedCategoryIds=t},expression:"selectedCategoryIds"}}),r("div",[r("a-form",{attrs:{layout:"vertical"}},[e.categoryForm?r("a-form-item",[r("category-select-tree",{attrs:{categories:e.categories},model:{value:e.categoryToCreate.parentId,callback:function(t){e.$set(e.categoryToCreate,"parentId",t)},expression:"categoryToCreate.parentId"}})],1):e._e(),e.categoryForm?r("a-form-item",[r("a-input",{attrs:{placeholder:"分类名称"},model:{value:e.categoryToCreate.name,callback:function(t){e.$set(e.categoryToCreate,"name",t)},expression:"categoryToCreate.name"}})],1):e._e(),e.categoryForm?r("a-form-item",[r("a-input",{attrs:{placeholder:"分类路径"},model:{value:e.categoryToCreate.slugNames,callback:function(t){e.$set(e.categoryToCreate,"slugNames",t)},expression:"categoryToCreate.slugNames"}})],1):e._e(),r("a-form-item",[e.categoryForm?r("a-button",{staticStyle:{marginRight:"8px"},attrs:{type:"primary"},on:{click:e.handlerCreateCategory}},[e._v("保存")]):e._e(),e.categoryForm?e._e():r("a-button",{staticStyle:{marginRight:"8px"},attrs:{type:"dashed"},on:{click:e.toggleCategoryForm}},[e._v("新增")]),e.categoryForm?r("a-button",{on:{click:e.toggleCategoryForm}},[e._v("取消")]):e._e()],1)],1)],1)],1)]),r("a-divider"),r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("标签")]),r("div",{staticClass:"post-setting-drawer-item"},[r("a-form",{attrs:{layout:"vertical"}},[r("a-form-item",[r("TagSelect",{model:{value:e.selectedTagIds,callback:function(t){e.selectedTagIds=t},expression:"selectedTagIds"}})],1)],1)],1)]),r("a-divider"),r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("摘要")]),r("div",{staticClass:"post-setting-drawer-item"},[r("a-form",{attrs:{layout:"vertical"}},[r("a-form-item",[r("a-input",{attrs:{type:"textarea",autosize:{minRows:5},placeholder:"不填写则会自动生成"},model:{value:e.postToStage.summary,callback:function(t){e.$set(e.postToStage,"summary",t)},expression:"postToStage.summary"}})],1)],1)],1)]),r("a-divider"),r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("缩略图")]),r("div",{staticClass:"post-setting-drawer-item"},[r("div",{staticClass:"post-thum"},[r("img",{staticClass:"img",attrs:{src:e.postToStage.thumbnail||"//i.loli.net/2019/05/05/5ccf007c0a01d.png"},on:{click:function(){return t.thumDrawerVisible=!0}}}),r("a-button",{staticClass:"post-thum-remove",attrs:{type:"dashed"},on:{click:e.handlerRemoveThumb}},[e._v("移除")])],1)])]),r("a-divider",{staticClass:"divider-transparent"})],1),r("AttachmentSelectDrawer",{attrs:{drawerWidth:460},on:{listenToSelect:e.handleSelectPostThumb},model:{value:e.thumDrawerVisible,callback:function(t){e.thumDrawerVisible=t},expression:"thumDrawerVisible"}}),r("div",{staticClass:"bottom-control"},[r("a-button",{staticStyle:{marginRight:"8px"},on:{click:e.handleDraftClick}},[e._v("保存草稿")]),r("a-button",{attrs:{type:"primary"},on:{click:e.handlePublishClick}},[e._v("发布")])],1)],1),r("AttachmentDrawer",{model:{value:e.attachmentDrawerVisible,callback:function(t){e.attachmentDrawerVisible=t},expression:"attachmentDrawerVisible"}}),r("footer-tool-bar",{style:{width:e.isSideMenu()&&e.isDesktop()?"calc(100% - "+(e.sidebarOpened?256:80)+"px)":"100%"}},[r("a-button",{attrs:{type:"primary"},on:{click:function(){return t.postSettingVisible=!0}}},[e._v("发布")]),r("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"dashed"},on:{click:function(){return t.attachmentDrawerVisible=!0}}},[e._v("附件库")])],1)],1)},o=[],s=(a("612f"),a("eda3")),n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("a-select",{staticStyle:{width:"100%"},attrs:{allowClear:"",mode:"tags",placeholder:"选择或输入标签"},on:{blur:t.handleBlur},model:{value:t.selectedTagNames,callback:function(e){t.selectedTagNames=e},expression:"selectedTagNames"}},t._l(t.tags,function(e){return a("a-select-option",{key:e.id,attrs:{value:e.name}},[t._v(t._s(e.name))])}),1)],1)},i=[],c=(a("3a23"),a("d28db")),l=a("7f43"),u=a.n(l),d={name:"TagSelect",model:{prop:"tagIds",event:"change"},props:{tagIds:{type:Array,required:!1,default:function(){return[]}}},data:function(){return{tags:[],selectedTagNames:[]}},created:function(){var t=this;this.loadTags(),this.selectedTagNames=this.tagIds.map(function(e){return t.tagIdMap[e].name})},computed:{tagIdMap:function(){var t={};return this.tags.forEach(function(e){t[e.id]=e}),t},tagNameMap:function(){var t={};return this.tags.forEach(function(e){t[e.name]=e}),t}},methods:{loadTags:function(t){var e=this;c["a"].listAll(!0).then(function(a){e.tags=a.data.data,t&&t()})},handleBlur:function(){var t=this;this.$log.debug("Blured");var e=this.selectedTagNames.filter(function(e){return!t.tagNameMap[e]});if(this.$log.debug("Tag names to create",e),e!==[]){var a=e.map(function(t){return c["a"].createWithName(t)});u.a.all(a).then(u.a.spread(function(){t.loadTags(function(){t.$log.debug("Tag name map",t.tagNameMap);var e=t.selectedTagNames.map(function(e){return t.tagNameMap[e].id});t.$emit("change",e)})}))}else{var r=this.selectedTagNames.map(function(e){return t.tagNameMap[e].id});this.$emit("change",r)}}}},g=d,m=a("17cc"),p=Object(m["a"])(g,n,i,!1,null,null,null),h=p.exports,f=a("6657"),v=a("ed4e"),b=a("3993"),y=a("fa25"),T=a("5a70"),S=a("ac0d"),C=a("2749"),w=(a("cc71"),a("c405")),k=a("caf6"),I=a("482b"),x={components:{TagSelect:h,mavonEditor:f["mavonEditor"],CategoryTree:s["a"],FooterToolBar:T["a"],AttachmentDrawer:v["a"],AttachmentSelectDrawer:b["a"],CategorySelectTree:y["a"]},mixins:[S["a"],S["b"]],data:function(){return{toolbars:C["a"],wrapperCol:{xl:{span:24},sm:{span:24},xs:{span:24}},attachmentDrawerVisible:!1,postSettingVisible:!1,thumDrawerVisible:!1,categoryForm:!1,tags:[],categories:[],selectedCategoryIds:[],selectedTagIds:[],postToStage:{},categoryToCreate:{},timer:null,options:[],keys:["blog_url"]}},created:function(){this.loadTags(),this.loadCategories(),this.loadOptions(),clearInterval(this.timer),this.timer=null,this.autoSaveTimer()},destroyed:function(){clearInterval(this.timer),this.timer=null},beforeRouteLeave:function(t,e,a){null!==this.timer&&clearInterval(this.timer),this.autoSavePost(),a()},beforeRouteEnter:function(t,e,a){var r=t.query.postId;a(function(t){r&&k["a"].get(r).then(function(e){var a=e.data.data;t.postToStage=a,t.selectedTagIds=a.tagIds,t.selectedCategoryIds=a.categoryIds})})},methods:{loadTags:function(){var t=this;c["a"].listAll(!0).then(function(e){t.tags=e.data.data})},loadCategories:function(){var t=this;w["a"].listAll().then(function(e){t.categories=e.data.data})},loadOptions:function(){var t=this;I["a"].listAll(this.keys).then(function(e){t.options=e.data.data})},createOrUpdatePost:function(t,e,a){var r=this;this.postToStage.categoryIds=this.selectedCategoryIds,this.postToStage.tagIds=this.selectedTagIds,this.postToStage.id?k["a"].update(this.postToStage.id,this.postToStage,a).then(function(t){r.$log.debug("Updated post",t.data.data),e&&e()}):k["a"].create(this.postToStage,a).then(function(e){r.$log.debug("Created post",e.data.data),t&&t(),r.postToStage=e.data.data})},savePost:function(){var t=this;this.createOrUpdatePost(function(){return t.$message.success("文章创建成功")},function(){return t.$message.success("文章更新成功")},!1)},autoSavePost:function(){null!=this.postToStage.title&&null!=this.postToStage.originalContent&&this.createOrUpdatePost(null,null,!0)},toggleCategoryForm:function(){this.categoryForm=!this.categoryForm},handlePublishClick:function(){this.postToStage.status="PUBLISHED",this.savePost()},handleDraftClick:function(){this.postToStage.status="DRAFT",this.savePost()},handlerRemoveThumb:function(){this.postToStage.thumbnail=null},handlerCreateCategory:function(){var t=this;w["a"].create(this.categoryToCreate).then(function(e){t.loadCategories(),t.categoryToCreate={}})},handleSelectPostThumb:function(t){this.postToStage.thumbnail=t.path,this.thumDrawerVisible=!1},autoSaveTimer:function(){var t=this;null==this.timer&&(this.timer=setInterval(function(){t.autoSavePost()},15e3))}}},_=x,$=(a("2898"),Object(m["a"])(_,r,o,!1,null,"669770a4",null));e["default"]=$.exports},eda3:function(t,e,a){"use strict";var r=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("a-tree",{attrs:{checkable:"",treeData:t.categoryTree,defaultExpandAll:!0,checkedKeys:t.categoryIds},on:{check:t.onCheck}},[a("span",{staticStyle:{color:"#1890ff"},attrs:{slot:"title0010"},slot:"title0010"},[t._v("sss")])])},o=[],s=a("c405"),n={name:"CategoryTree",model:{prop:"categoryIds",event:"check"},props:{categoryIds:{type:Array,required:!1,default:function(){return[]}},categories:{type:Array,required:!1,default:function(){return[]}}},computed:{categoryTree:function(){return s["a"].concreteTree(this.categories)}},methods:{onCheck:function(t,e){this.$log.debug("Chekced keys",t),this.$log.debug("e",e);var a=e.checkedNodes.filter(function(t){return t.data.props.isLeaf}).map(function(t){return t.key});this.$log.debug("Effectively selected category ids",a),this.$emit("check",a)}}},i=n,c=a("17cc"),l=Object(c["a"])(i,r,o,!1,null,null,null);e["a"]=l.exports},fa25:function(t,e,a){"use strict";var r=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("a-tree-select",{attrs:{treeData:t.categoryTreeData,placeholder:"请选择上级目录,默认为顶级目录",treeDefaultExpandAll:"",treeDataSimpleMode:!0,allowClear:!0,value:t.categoryIdString},on:{change:t.handleSelectionChange}})},o=[],s=(a("48fb"),a("3a23"),a("b06f"),{name:"CategorySelectTree",model:{prop:"categoryId",event:"change"},props:{categoryId:{type:Number,required:!0,default:0},categories:{type:Array,required:!1,default:function(){return[]}}},computed:{categoryTreeData:function(){return this.categories.map(function(t){return{id:t.id,title:t.name,value:t.id.toString(),pId:t.parentId}})},categoryIdString:function(){return this.categoryId.toString()}},methods:{handleSelectionChange:function(t,e,a){this.$log.debug("value: ",t),this.$log.debug("label: ",e),this.$log.debug("extra: ",a),this.$emit("change",t?parseInt(t):0)}}}),n=s,i=a("17cc"),c=Object(i["a"])(n,r,o,!1,null,null,null);e["a"]=c.exports}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-02f1697e"],{2898:function(t,e,a){"use strict";var r=a("a770"),o=a.n(r);o.a},a770:function(t,e,a){},c405:function(t,e,a){"use strict";a("3a23"),a("612f");var r=a("9efd"),o="/api/admin/categories",s={};function n(t,e){e.forEach(function(e){t.key===e.parentId&&(t.children||(t.children=[]),t.children.push({key:e.id,title:e.name,isLeaf:!1}))}),t.children?t.children.forEach(function(t){return n(t,e)}):t.isLeaf=!0}s.listAll=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(r["a"])({url:"".concat(o),params:{more:t},method:"get"})},s.listTree=function(){return Object(r["a"])({url:"".concat(o,"/tree_view"),method:"get"})},s.create=function(t){return Object(r["a"])({url:o,data:t,method:"post"})},s.delete=function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"delete"})},s.get=function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"get"})},s.update=function(t,e){return Object(r["a"])({url:"".concat(o,"/").concat(t),data:e,method:"put"})},s.concreteTree=function(t){var e={key:0,title:"top",children:[]};return n(e,t),e.children},e["a"]=s},caf6:function(t,e,a){"use strict";var r=a("9efd"),o="/api/admin/posts",s={listLatest:function(t){return Object(r["a"])({url:"".concat(o,"/latest"),params:{top:t},method:"get"})},query:function(t){return Object(r["a"])({url:o,params:t,method:"get"})},get:function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"get"})},create:function(t,e){return Object(r["a"])({url:o,method:"post",data:t,params:{autoSave:e}})},update:function(t,e,a){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"put",data:e,params:{autoSave:a}})},updateStatus:function(t,e){return Object(r["a"])({url:"".concat(o,"/").concat(t,"/status/").concat(e),method:"put"})},delete:function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"delete"})},postStatus:{PUBLISHED:{color:"green",status:"success",text:"已发布"},DRAFT:{color:"yellow",status:"warning",text:"草稿"},RECYCLE:{color:"red",status:"error",text:"回收站"}}};e["a"]=s},d28db:function(t,e,a){"use strict";var r=a("9efd"),o="/api/admin/tags",s={listAll:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(r["a"])({url:o,params:{more:t},method:"get"})},createWithName:function(t){return Object(r["a"])({url:o,data:{name:t},method:"post"})},create:function(t){return Object(r["a"])({url:o,data:t,method:"post"})},update:function(t,e){return Object(r["a"])({url:"".concat(o,"/").concat(t),data:e,method:"put"})},delete:function(t){return Object(r["a"])({url:"".concat(o,"/").concat(t),method:"delete"})}};e["a"]=s},db44:function(t,e,a){"use strict";a.r(e);var r=function(){var t=this,e=this,a=e.$createElement,r=e._self._c||a;return r("div",{staticClass:"page-header-index-wide"},[r("a-row",{attrs:{gutter:12}},[r("a-col",{attrs:{span:24}},[r("div",{staticStyle:{"margin-bottom":"16px"}},[r("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["title",{rules:[{required:!0,message:"请输入文章标题"}]}],expression:"['title', { rules: [{ required: true, message: '请输入文章标题' }] }]"}],attrs:{size:"large",placeholder:"请输入文章标题"},model:{value:e.postToStage.title,callback:function(t){e.$set(e.postToStage,"title",t)},expression:"postToStage.title"}})],1),r("div",{attrs:{id:"editor"}},[r("mavon-editor",{attrs:{boxShadow:!1,toolbars:e.toolbars,ishljs:!0,autofocus:!1},model:{value:e.postToStage.originalContent,callback:function(t){e.$set(e.postToStage,"originalContent",t)},expression:"postToStage.originalContent"}})],1)])],1),r("a-drawer",{attrs:{title:"文章设置",width:e.isMobile()?"100%":"460",placement:"right",closable:"",visible:e.postSettingVisible},on:{close:function(){return t.postSettingVisible=!1}}},[r("div",{staticClass:"post-setting-drawer-content"},[r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("基本设置")]),r("div",{staticClass:"post-setting-drawer-item"},[r("a-form",{attrs:{layout:"vertical"}},[r("a-form-item",{attrs:{label:"文章路径:",help:e.options.blog_url+"/archives/"+(e.postToStage.url?e.postToStage.url:"{auto_generate}")}},[r("a-input",{model:{value:e.postToStage.url,callback:function(t){e.$set(e.postToStage,"url",t)},expression:"postToStage.url"}})],1),r("a-form-item",{attrs:{label:"开启评论:"}},[r("a-radio-group",{attrs:{defaultValue:!1},model:{value:e.postToStage.disallowComment,callback:function(t){e.$set(e.postToStage,"disallowComment",t)},expression:"postToStage.disallowComment"}},[r("a-radio",{attrs:{value:!1}},[e._v("开启")]),r("a-radio",{attrs:{value:!0}},[e._v("关闭")])],1)],1)],1)],1)]),r("a-divider"),r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("分类目录")]),r("div",{staticClass:"post-setting-drawer-item"},[r("category-tree",{attrs:{categories:e.categories},model:{value:e.selectedCategoryIds,callback:function(t){e.selectedCategoryIds=t},expression:"selectedCategoryIds"}}),r("div",[r("a-form",{attrs:{layout:"vertical"}},[e.categoryForm?r("a-form-item",[r("category-select-tree",{attrs:{categories:e.categories},model:{value:e.categoryToCreate.parentId,callback:function(t){e.$set(e.categoryToCreate,"parentId",t)},expression:"categoryToCreate.parentId"}})],1):e._e(),e.categoryForm?r("a-form-item",[r("a-input",{attrs:{placeholder:"分类名称"},model:{value:e.categoryToCreate.name,callback:function(t){e.$set(e.categoryToCreate,"name",t)},expression:"categoryToCreate.name"}})],1):e._e(),e.categoryForm?r("a-form-item",[r("a-input",{attrs:{placeholder:"分类路径"},model:{value:e.categoryToCreate.slugNames,callback:function(t){e.$set(e.categoryToCreate,"slugNames",t)},expression:"categoryToCreate.slugNames"}})],1):e._e(),r("a-form-item",[e.categoryForm?r("a-button",{staticStyle:{marginRight:"8px"},attrs:{type:"primary"},on:{click:e.handlerCreateCategory}},[e._v("保存")]):e._e(),e.categoryForm?e._e():r("a-button",{staticStyle:{marginRight:"8px"},attrs:{type:"dashed"},on:{click:e.toggleCategoryForm}},[e._v("新增")]),e.categoryForm?r("a-button",{on:{click:e.toggleCategoryForm}},[e._v("取消")]):e._e()],1)],1)],1)],1)]),r("a-divider"),r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("标签")]),r("div",{staticClass:"post-setting-drawer-item"},[r("a-form",{attrs:{layout:"vertical"}},[r("a-form-item",[r("TagSelect",{model:{value:e.selectedTagIds,callback:function(t){e.selectedTagIds=t},expression:"selectedTagIds"}})],1)],1)],1)]),r("a-divider"),r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("摘要")]),r("div",{staticClass:"post-setting-drawer-item"},[r("a-form",{attrs:{layout:"vertical"}},[r("a-form-item",[r("a-input",{attrs:{type:"textarea",autosize:{minRows:5},placeholder:"不填写则会自动生成"},model:{value:e.postToStage.summary,callback:function(t){e.$set(e.postToStage,"summary",t)},expression:"postToStage.summary"}})],1)],1)],1)]),r("a-divider"),r("div",{style:{marginBottom:"16px"}},[r("h3",{staticClass:"post-setting-drawer-title"},[e._v("缩略图")]),r("div",{staticClass:"post-setting-drawer-item"},[r("div",{staticClass:"post-thum"},[r("img",{staticClass:"img",attrs:{src:e.postToStage.thumbnail||"//i.loli.net/2019/05/05/5ccf007c0a01d.png"},on:{click:function(){return t.thumDrawerVisible=!0}}}),r("a-button",{staticClass:"post-thum-remove",attrs:{type:"dashed"},on:{click:e.handlerRemoveThumb}},[e._v("移除")])],1)])]),r("a-divider",{staticClass:"divider-transparent"})],1),r("AttachmentSelectDrawer",{attrs:{drawerWidth:460},on:{listenToSelect:e.handleSelectPostThumb},model:{value:e.thumDrawerVisible,callback:function(t){e.thumDrawerVisible=t},expression:"thumDrawerVisible"}}),r("div",{staticClass:"bottom-control"},[r("a-button",{staticStyle:{marginRight:"8px"},on:{click:e.handleDraftClick}},[e._v("保存草稿")]),r("a-button",{attrs:{type:"primary"},on:{click:e.handlePublishClick}},[e._v("发布")])],1)],1),r("AttachmentDrawer",{model:{value:e.attachmentDrawerVisible,callback:function(t){e.attachmentDrawerVisible=t},expression:"attachmentDrawerVisible"}}),r("footer-tool-bar",{style:{width:e.isSideMenu()&&e.isDesktop()?"calc(100% - "+(e.sidebarOpened?256:80)+"px)":"100%"}},[r("a-button",{attrs:{type:"primary"},on:{click:function(){return t.postSettingVisible=!0}}},[e._v("发布")]),r("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"dashed"},on:{click:function(){return t.attachmentDrawerVisible=!0}}},[e._v("附件库")])],1)],1)},o=[],s=(a("612f"),function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("a-tree",{attrs:{checkable:"",treeData:t.categoryTree,defaultExpandAll:!0,checkedKeys:t.categoryIds},on:{check:t.onCheck}},[a("span",{staticStyle:{color:"#1890ff"},attrs:{slot:"title0010"},slot:"title0010"},[t._v("sss")])])}),n=[],i=a("c405"),c={name:"CategoryTree",model:{prop:"categoryIds",event:"check"},props:{categoryIds:{type:Array,required:!1,default:function(){return[]}},categories:{type:Array,required:!1,default:function(){return[]}}},computed:{categoryTree:function(){return i["a"].concreteTree(this.categories)}},methods:{onCheck:function(t,e){this.$log.debug("Chekced keys",t),this.$log.debug("e",e);var a=e.checkedNodes.filter(function(t){return t.data.props.isLeaf}).map(function(t){return t.key});this.$log.debug("Effectively selected category ids",a),this.$emit("check",a)}}},l=c,u=a("17cc"),d=Object(u["a"])(l,s,n,!1,null,null,null),g=d.exports,m=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("a-select",{staticStyle:{width:"100%"},attrs:{allowClear:"",mode:"tags",placeholder:"选择或输入标签"},on:{blur:t.handleBlur},model:{value:t.selectedTagNames,callback:function(e){t.selectedTagNames=e},expression:"selectedTagNames"}},t._l(t.tags,function(e){return a("a-select-option",{key:e.id,attrs:{value:e.name}},[t._v(t._s(e.name))])}),1)],1)},p=[],h=(a("3a23"),a("d28db")),f=a("7f43"),v=a.n(f),b={name:"TagSelect",model:{prop:"tagIds",event:"change"},props:{tagIds:{type:Array,required:!1,default:function(){return[]}}},data:function(){return{tags:[],selectedTagNames:[]}},created:function(){var t=this;this.loadTags(),this.selectedTagNames=this.tagIds.map(function(e){return t.tagIdMap[e].name})},computed:{tagIdMap:function(){var t={};return this.tags.forEach(function(e){t[e.id]=e}),t},tagNameMap:function(){var t={};return this.tags.forEach(function(e){t[e.name]=e}),t}},methods:{loadTags:function(t){var e=this;h["a"].listAll(!0).then(function(a){e.tags=a.data.data,t&&t()})},handleBlur:function(){var t=this;this.$log.debug("Blured");var e=this.selectedTagNames.filter(function(e){return!t.tagNameMap[e]});if(this.$log.debug("Tag names to create",e),e!==[]){var a=e.map(function(t){return h["a"].createWithName(t)});v.a.all(a).then(v.a.spread(function(){t.loadTags(function(){t.$log.debug("Tag name map",t.tagNameMap);var e=t.selectedTagNames.map(function(e){return t.tagNameMap[e].id});t.$emit("change",e)})}))}else{var r=this.selectedTagNames.map(function(e){return t.tagNameMap[e].id});this.$emit("change",r)}}}},y=b,T=Object(u["a"])(y,m,p,!1,null,null,null),S=T.exports,C=a("6657"),w=a("ed4e"),k=a("3993"),I=a("fa25"),x=a("5a70"),_=a("ac0d"),$=a("2749"),D=(a("cc71"),a("caf6")),O=a("482b"),j={components:{TagSelect:S,mavonEditor:C["mavonEditor"],CategoryTree:g,FooterToolBar:x["a"],AttachmentDrawer:w["a"],AttachmentSelectDrawer:k["a"],CategorySelectTree:I["a"]},mixins:[_["a"],_["b"]],data:function(){return{toolbars:$["a"],wrapperCol:{xl:{span:24},sm:{span:24},xs:{span:24}},attachmentDrawerVisible:!1,postSettingVisible:!1,thumDrawerVisible:!1,categoryForm:!1,tags:[],categories:[],selectedCategoryIds:[],selectedTagIds:[],postToStage:{},categoryToCreate:{},timer:null,options:[],keys:["blog_url"]}},created:function(){this.loadTags(),this.loadCategories(),this.loadOptions(),clearInterval(this.timer),this.timer=null,this.autoSaveTimer()},destroyed:function(){clearInterval(this.timer),this.timer=null},beforeRouteLeave:function(t,e,a){null!==this.timer&&clearInterval(this.timer),this.autoSavePost(),a()},beforeRouteEnter:function(t,e,a){var r=t.query.postId;a(function(t){r&&D["a"].get(r).then(function(e){var a=e.data.data;t.postToStage=a,t.selectedTagIds=a.tagIds,t.selectedCategoryIds=a.categoryIds})})},methods:{loadTags:function(){var t=this;h["a"].listAll(!0).then(function(e){t.tags=e.data.data})},loadCategories:function(){var t=this;i["a"].listAll().then(function(e){t.categories=e.data.data})},loadOptions:function(){var t=this;O["a"].listAll(this.keys).then(function(e){t.options=e.data.data})},createOrUpdatePost:function(t,e,a){var r=this;this.postToStage.categoryIds=this.selectedCategoryIds,this.postToStage.tagIds=this.selectedTagIds,this.postToStage.id?D["a"].update(this.postToStage.id,this.postToStage,a).then(function(t){r.$log.debug("Updated post",t.data.data),e&&e()}):D["a"].create(this.postToStage,a).then(function(e){r.$log.debug("Created post",e.data.data),t&&t(),r.postToStage=e.data.data})},savePost:function(){var t=this;this.createOrUpdatePost(function(){return t.$message.success("文章创建成功")},function(){return t.$message.success("文章更新成功")},!1)},autoSavePost:function(){null!=this.postToStage.title&&null!=this.postToStage.originalContent&&this.createOrUpdatePost(null,null,!0)},toggleCategoryForm:function(){this.categoryForm=!this.categoryForm},handlePublishClick:function(){this.postToStage.status="PUBLISHED",this.savePost()},handleDraftClick:function(){this.postToStage.status="DRAFT",this.savePost()},handlerRemoveThumb:function(){this.postToStage.thumbnail=null},handlerCreateCategory:function(){var t=this;i["a"].create(this.categoryToCreate).then(function(e){t.loadCategories(),t.categoryToCreate={}})},handleSelectPostThumb:function(t){this.postToStage.thumbnail=t.path,this.thumDrawerVisible=!1},autoSaveTimer:function(){var t=this;null==this.timer&&(this.timer=setInterval(function(){t.autoSavePost()},15e3))}}},N=j,A=(a("2898"),Object(u["a"])(N,r,o,!1,null,"669770a4",null));e["default"]=A.exports},fa25:function(t,e,a){"use strict";var r=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("a-tree-select",{attrs:{treeData:t.categoryTreeData,placeholder:"请选择上级目录,默认为顶级目录",treeDefaultExpandAll:"",treeDataSimpleMode:!0,allowClear:!0,value:t.categoryIdString},on:{change:t.handleSelectionChange}})},o=[],s=(a("48fb"),a("3a23"),a("b06f"),{name:"CategorySelectTree",model:{prop:"categoryId",event:"change"},props:{categoryId:{type:Number,required:!0,default:0},categories:{type:Array,required:!1,default:function(){return[]}}},computed:{categoryTreeData:function(){return this.categories.map(function(t){return{id:t.id,title:t.name,value:t.id.toString(),pId:t.parentId}})},categoryIdString:function(){return this.categoryId.toString()}},methods:{handleSelectionChange:function(t,e,a){this.$log.debug("value: ",t),this.$log.debug("label: ",e),this.$log.debug("extra: ",a),this.$emit("change",t?parseInt(t):0)}}}),n=s,i=a("17cc"),c=Object(i["a"])(n,r,o,!1,null,null,null);e["a"]=c.exports}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-142c8832.0d298dce.js b/src/main/resources/admin/js/chunk-142c8832.0d298dce.js new file mode 100644 index 000000000..7509f8f69 --- /dev/null +++ b/src/main/resources/admin/js/chunk-142c8832.0d298dce.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-142c8832"],{a8ed:function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"page-header-index-wide"},[a("a-row",[a("a-col",{attrs:{span:24}},[a("div",{staticClass:"card-container"},[a("a-tabs",{attrs:{type:"card"}},[a("a-tab-pane",{key:"internal"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"pushpin"}}),t._v("内置页面\n ")],1),a("a-table",{attrs:{columns:t.internalColumns,dataSource:t.internalSheets,pagination:!1,rowKey:function(t){return t.id}},scopedSlots:t._u([{key:"status",fn:function(e){return[e?a("span",[t._v("可用")]):a("span",[t._v("不可用\n "),a("a-tooltip",{attrs:{slot:"action",title:"当前主题没有对应模板"},slot:"action"},[a("a-icon",{attrs:{type:"info-circle-o"}})],1)],1)]}},{key:"action",fn:function(e,n){return a("span",{},[1==n.id?a("router-link",{attrs:{to:{name:"LinkList"}}},[a("a",{attrs:{href:"javascript:void(0);"}},[t._v("管理")])]):t._e(),2==n.id?a("router-link",{attrs:{to:{name:"PhotoList"}}},[a("a",{attrs:{href:"javascript:void(0);"}},[t._v("管理")])]):t._e(),3==n.id?a("router-link",{attrs:{to:{name:"JournalList"}}},[a("a",{attrs:{href:"javascript:void(0);"}},[t._v("管理")])]):t._e(),a("a-divider",{attrs:{type:"vertical"}}),n.status?a("a",{attrs:{href:t.options.blog_url+n.url,target:"_blank"}},[t._v("查看")]):a("a",{attrs:{href:t.options.blog_url+n.url,target:"_blank",disabled:""}},[t._v("查看")])],1)}}])})],1),a("a-tab-pane",{key:"custom"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"fork"}}),t._v("自定义页面\n ")],1),a("a-table",{attrs:{rowKey:function(t){return t.id},columns:t.customColumns,dataSource:t.formattedSheets,pagination:!1},scopedSlots:t._u([{key:"status",fn:function(e){return a("span",{},[a("a-badge",{attrs:{status:e.status}}),t._v("\n "+t._s(e.text)+"\n ")],1)}},{key:"updateTime",fn:function(e){return a("span",{},[t._v(t._s(t._f("timeAgo")(e)))])}},{key:"action",fn:function(e,n){return a("span",{},["PUBLISHED"===n.status||"DRAFT"===n.status?a("a",{attrs:{href:"javascript:;"},on:{click:function(e){return t.handleEditClick(n)}}},[t._v("编辑")]):"RECYCLE"===n.status?a("a-popconfirm",{attrs:{title:"你确定要发布【"+n.title+"】?",okText:"确定",cancelText:"取消"},on:{confirm:function(e){return t.handleEditStatusClick(n.id,"PUBLISHED")}}},[a("a",{attrs:{href:"javascript:;"}},[t._v("还原")])]):t._e(),a("a-divider",{attrs:{type:"vertical"}}),"PUBLISHED"===n.status||"DRAFT"===n.status?a("a-popconfirm",{attrs:{title:"你确定要将【"+n.title+"】页面移到回收站?",okText:"确定",cancelText:"取消"},on:{confirm:function(e){return t.handleEditStatusClick(n.id,"RECYCLE")}}},[a("a",{attrs:{href:"javascript:;"}},[t._v("回收站")])]):"RECYCLE"===n.status?a("a-popconfirm",{attrs:{title:"你确定要永久删除【"+n.title+"】页面?",okText:"确定",cancelText:"取消"},on:{confirm:function(e){return t.handleDeleteClick(n.id)}}},[a("a",{attrs:{href:"javascript:;"}},[t._v("删除")])]):t._e()],1)}}])})],1)],1)],1)])],1)],1)},s=[],o=(a("612f"),a("ac0d")),r=a("ed66"),i=a("482b"),c=[{title:"页面名称",dataIndex:"title"},{title:"访问路径",dataIndex:"url"},{title:"状态",dataIndex:"status",scopedSlots:{customRender:"status"}},{title:"操作",dataIndex:"action",width:"150px",scopedSlots:{customRender:"action"}}],u=[{title:"标题",dataIndex:"title"},{title:"状态",className:"status",dataIndex:"statusProperty",scopedSlots:{customRender:"status"}},{title:"评论量",dataIndex:"commentCount"},{title:"访问量",dataIndex:"visits"},{title:"更新时间",dataIndex:"updateTime",scopedSlots:{customRender:"updateTime"}},{title:"操作",width:"150px",scopedSlots:{customRender:"action"}}],l={mixins:[o["a"],o["b"]],data:function(){return{sheetStatus:r["a"].sheetStatus,internalColumns:c,customColumns:u,internalSheets:[],sheets:[],options:[],keys:["blog_url"]}},computed:{formattedSheets:function(){var t=this;return this.sheets.map(function(e){return e.statusProperty=t.sheetStatus[e.status],e})}},created:function(){this.loadSheets(),this.loadInternalSheets(),this.loadOptions()},methods:{loadSheets:function(){var t=this;r["a"].list().then(function(e){t.sheets=e.data.data.content})},loadInternalSheets:function(){var t=this;r["a"].listInternal().then(function(e){t.internalSheets=e.data.data})},loadOptions:function(){var t=this;i["a"].listAll(this.keys).then(function(e){t.options=e.data.data})},handleEditClick:function(t){this.$router.push({name:"SheetEdit",query:{sheetId:t.id}})},handleEditStatusClick:function(t,e){var a=this;r["a"].updateStatus(t,e).then(function(t){a.$message.success("操作成功!"),a.loadSheets()})},handleDeleteClick:function(t){var e=this;r["a"].delete(t).then(function(t){e.$message.success("删除成功!"),e.loadSheets()})}}},d=l,p=a("17cc"),h=Object(p["a"])(d,n,s,!1,null,null,null);e["default"]=h.exports},ed66:function(t,e,a){"use strict";var n=a("9efd"),s="/api/admin/sheets",o={list:function(){return Object(n["a"])({url:s,method:"get"})},listInternal:function(){return Object(n["a"])({url:"".concat(s,"/internal"),method:"get"})},get:function(t){return Object(n["a"])({url:"".concat(s,"/").concat(t),method:"get"})},create:function(t,e){return Object(n["a"])({url:s,method:"post",data:t,params:{autoSave:e}})},update:function(t,e,a){return Object(n["a"])({url:"".concat(s,"/").concat(t),method:"put",data:e,params:{autoSave:a}})},updateStatus:function(t,e){return Object(n["a"])({url:"".concat(s,"/").concat(t,"/").concat(e),method:"put"})},delete:function(t){return Object(n["a"])({url:"".concat(s,"/").concat(t),method:"delete"})},sheetStatus:{PUBLISHED:{color:"green",status:"success",text:"已发布"},DRAFT:{color:"yellow",status:"warning",text:"草稿"},RECYCLE:{color:"red",status:"error",text:"回收站"}}};e["a"]=o}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-142c8832.ac1f84d9.js b/src/main/resources/admin/js/chunk-142c8832.ac1f84d9.js deleted file mode 100644 index a5f2cf726..000000000 --- a/src/main/resources/admin/js/chunk-142c8832.ac1f84d9.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-142c8832"],{a8ed:function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"page-header-index-wide"},[a("a-row",[a("a-col",{attrs:{span:24}},[a("div",{staticClass:"card-container"},[a("a-tabs",{attrs:{type:"card"}},[a("a-tab-pane",{key:"internal"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"pushpin"}}),t._v("内置页面\n ")],1),a("a-table",{attrs:{columns:t.internalColumns,dataSource:t.internalSheets,pagination:!1,rowKey:function(t){return t.id}},scopedSlots:t._u([{key:"action",fn:function(e,n){return a("span",{},[1==n.id?a("router-link",{attrs:{to:{name:"LinkList"}}},[a("a",{attrs:{href:"javascript:void(0);"}},[t._v("管理")])]):t._e(),2==n.id?a("router-link",{attrs:{to:{name:"PhotoList"}}},[a("a",{attrs:{href:"javascript:void(0);"}},[t._v("管理")])]):t._e(),3==n.id?a("router-link",{attrs:{to:{name:"JournalList"}}},[a("a",{attrs:{href:"javascript:void(0);"}},[t._v("管理")])]):t._e(),a("a-divider",{attrs:{type:"vertical"}}),a("a",{attrs:{href:t.options.blog_url+n.url,target:"_blank"}},[t._v("查看")])],1)}}])})],1),a("a-tab-pane",{key:"custom"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"fork"}}),t._v("自定义页面\n ")],1),a("a-table",{attrs:{rowKey:function(t){return t.id},columns:t.customColumns,dataSource:t.formattedSheets,pagination:!1},scopedSlots:t._u([{key:"status",fn:function(e){return a("span",{},[a("a-badge",{attrs:{status:e.status}}),t._v("\n "+t._s(e.text)+"\n ")],1)}},{key:"updateTime",fn:function(e){return a("span",{},[t._v(t._s(t._f("timeAgo")(e)))])}},{key:"action",fn:function(e,n){return a("span",{},["PUBLISHED"===n.status||"DRAFT"===n.status?a("a",{attrs:{href:"javascript:;"},on:{click:function(e){return t.handleEditClick(n)}}},[t._v("编辑")]):"RECYCLE"===n.status?a("a-popconfirm",{attrs:{title:"你确定要发布【"+n.title+"】?",okText:"确定",cancelText:"取消"},on:{confirm:function(e){return t.handleEditStatusClick(n.id,"PUBLISHED")}}},[a("a",{attrs:{href:"javascript:;"}},[t._v("还原")])]):t._e(),a("a-divider",{attrs:{type:"vertical"}}),"PUBLISHED"===n.status||"DRAFT"===n.status?a("a-popconfirm",{attrs:{title:"你确定要将【"+n.title+"】页面移到回收站?",okText:"确定",cancelText:"取消"},on:{confirm:function(e){return t.handleEditStatusClick(n.id,"RECYCLE")}}},[a("a",{attrs:{href:"javascript:;"}},[t._v("回收站")])]):"RECYCLE"===n.status?a("a-popconfirm",{attrs:{title:"你确定要永久删除【"+n.title+"】页面?",okText:"确定",cancelText:"取消"},on:{confirm:function(e){return t.handleDeleteClick(n.id)}}},[a("a",{attrs:{href:"javascript:;"}},[t._v("删除")])]):t._e()],1)}}])})],1)],1)],1)])],1)],1)},s=[],o=(a("612f"),a("ac0d")),r=a("ed66"),i=a("482b"),u=[{title:"页面名称",dataIndex:"name"},{title:"访问路径",dataIndex:"url"},{title:"状态",dataIndex:"status"},{title:"操作",dataIndex:"action",width:"150px",scopedSlots:{customRender:"action"}}],c=[{title:"标题",dataIndex:"title"},{title:"状态",className:"status",dataIndex:"statusProperty",scopedSlots:{customRender:"status"}},{title:"评论量",dataIndex:"commentCount"},{title:"访问量",dataIndex:"visits"},{title:"更新时间",dataIndex:"updateTime",scopedSlots:{customRender:"updateTime"}},{title:"操作",width:"150px",scopedSlots:{customRender:"action"}}],d=[{id:"1",name:"友情链接",url:"/links",status:"可用"},{id:"2",name:"图库页面",url:"/photos",status:"可用"},{id:"3",name:"日志页面",url:"/journals",status:"实验性"}],l={mixins:[o["a"],o["b"]],data:function(){return{sheetStatus:r["a"].sheetStatus,internalColumns:u,customColumns:c,internalSheets:d,sheets:[],options:[],keys:["blog_url"]}},computed:{formattedSheets:function(){var t=this;return this.sheets.map(function(e){return e.statusProperty=t.sheetStatus[e.status],e})}},created:function(){this.loadSheets(),this.loadOptions()},methods:{loadSheets:function(){var t=this;r["a"].list().then(function(e){t.sheets=e.data.data.content})},loadOptions:function(){var t=this;i["a"].listAll(this.keys).then(function(e){t.options=e.data.data})},handleEditClick:function(t){this.$router.push({name:"SheetEdit",query:{sheetId:t.id}})},handleEditStatusClick:function(t,e){var a=this;r["a"].updateStatus(t,e).then(function(t){a.$message.success("操作成功!"),a.loadSheets()})},handleDeleteClick:function(t){var e=this;r["a"].delete(t).then(function(t){e.$message.success("删除成功!"),e.loadSheets()})}}},p=l,h=a("17cc"),f=Object(h["a"])(p,n,s,!1,null,null,null);e["default"]=f.exports},ed66:function(t,e,a){"use strict";var n=a("9efd"),s="/api/admin/sheets",o={list:function(){return Object(n["a"])({url:s,method:"get"})},get:function(t){return Object(n["a"])({url:"".concat(s,"/").concat(t),method:"get"})},create:function(t,e){return Object(n["a"])({url:s,method:"post",data:t,params:{autoSave:e}})},update:function(t,e,a){return Object(n["a"])({url:"".concat(s,"/").concat(t),method:"put",data:e,params:{autoSave:a}})},updateStatus:function(t,e){return Object(n["a"])({url:"".concat(s,"/").concat(t,"/").concat(e),method:"put"})},delete:function(t){return Object(n["a"])({url:"".concat(s,"/").concat(t),method:"delete"})},sheetStatus:{PUBLISHED:{color:"green",status:"success",text:"已发布"},DRAFT:{color:"yellow",status:"warning",text:"草稿"},RECYCLE:{color:"red",status:"error",text:"回收站"}}};e["a"]=o}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-1c8b985a.8f4810a0.js b/src/main/resources/admin/js/chunk-1c8b985a.8f4810a0.js deleted file mode 100644 index 5fc193ac9..000000000 --- a/src/main/resources/admin/js/chunk-1c8b985a.8f4810a0.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1c8b985a"],{1325:function(t,e,a){},"26ea":function(t,e,a){"use strict";a.r(e);var o=function(){var t=this,e=this,a=e.$createElement,o=e._self._c||a;return o("div",{staticClass:"page-header-index-wide"},[o("a-row",[o("a-col",{attrs:{span:24}},[o("div",{staticClass:"card-container"},[o("a-tabs",{attrs:{type:"card"}},[o("a-tab-pane",{key:"general"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"tool"}}),e._v("常规设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"博客标题:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.blog_title,callback:function(t){e.$set(e.options,"blog_title",t)},expression:"options.blog_title"}})],1),o("a-form-item",{attrs:{label:"博客地址:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.blog_url,callback:function(t){e.$set(e.options,"blog_url",t)},expression:"options.blog_url"}})],1),o("a-form-item",{attrs:{label:"Logo:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.blog_logo,callback:function(t){e.$set(e.options,"blog_logo",t)},expression:"options.blog_logo"}},[o("a",{attrs:{slot:"addonAfter",href:"javascript:void(0);"},on:{click:function(){return t.logoDrawerVisible=!0}},slot:"addonAfter"},[o("a-icon",{attrs:{type:"picture"}})],1)])],1),o("a-form-item",{attrs:{label:"Favicon:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.blog_favicon,callback:function(t){e.$set(e.options,"blog_favicon",t)},expression:"options.blog_favicon"}},[o("a",{attrs:{slot:"addonAfter",href:"javascript:void(0);"},on:{click:function(){return t.faviconDrawerVisible=!0}},slot:"addonAfter"},[o("a-icon",{attrs:{type:"picture"}})],1)])],1),o("a-form-item",{attrs:{label:"页脚信息:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:e.options.blog_footer_info,callback:function(t){e.$set(e.options,"blog_footer_info",t)},expression:"options.blog_footer_info"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"seo"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"global"}}),e._v("SEO 设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"关键词: ","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"多个关键词以英文逗号隔开"}},[o("a-input",{model:{value:e.options.seo_keywords,callback:function(t){e.$set(e.options,"seo_keywords",t)},expression:"options.seo_keywords"}})],1)],1),o("a-form-item",{attrs:{label:"博客描述:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_description,callback:function(t){e.$set(e.options,"seo_description",t)},expression:"options.seo_description"}})],1),o("a-form-item",{attrs:{label:"百度推送 Token: ","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_baidu_token,callback:function(t){e.$set(e.options,"seo_baidu_token",t)},expression:"options.seo_baidu_token"}})],1),o("a-form-item",{attrs:{label:"百度站点验证:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_verification_baidu,callback:function(t){e.$set(e.options,"seo_verification_baidu",t)},expression:"options.seo_verification_baidu"}})],1),o("a-form-item",{attrs:{label:"Google 站点验证:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_verification_google,callback:function(t){e.$set(e.options,"seo_verification_google",t)},expression:"options.seo_verification_google"}})],1),o("a-form-item",{attrs:{label:"Bing 站点验证:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_verification_bing,callback:function(t){e.$set(e.options,"seo_verification_bing",t)},expression:"options.seo_verification_bing"}})],1),o("a-form-item",{attrs:{label:"360 站点验证:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_verification_qihu,callback:function(t){e.$set(e.options,"seo_verification_qihu",t)},expression:"options.seo_verification_qihu"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"post"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"form"}}),e._v("文章设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"首页显示条数:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"number"},model:{value:e.options.post_index_page_size,callback:function(t){e.$set(e.options,"post_index_page_size",t)},expression:"options.post_index_page_size"}})],1),o("a-form-item",{attrs:{label:"RSS 显示条数:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"number"},model:{value:e.options.rss_page_size,callback:function(t){e.$set(e.options,"rss_page_size",t)},expression:"options.rss_page_size"}})],1),o("a-form-item",{attrs:{label:"文章摘要字数:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"number"},model:{value:e.options.post_summary_length,callback:function(t){e.$set(e.options,"post_summary_length",t)},expression:"options.post_summary_length"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"comment"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"message"}}),e._v("评论设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"评论者头像:","wrapper-col":e.wrapperCol}},[o("a-select",{model:{value:e.options.comment_gavatar_default,callback:function(t){e.$set(e.options,"comment_gavatar_default",t)},expression:"options.comment_gavatar_default"}},[o("a-select-option",{attrs:{value:"mm"}},[e._v("默认")]),o("a-select-option",{attrs:{value:"identicon"}},[e._v("抽象几何图形")]),o("a-select-option",{attrs:{value:"monsterid"}},[e._v("小怪物")]),o("a-select-option",{attrs:{value:"wavatar"}},[e._v("Wavatar")]),o("a-select-option",{attrs:{value:"retro"}},[e._v("复古")]),o("a-select-option",{attrs:{value:"robohash"}},[e._v("机器人")]),o("a-select-option",{attrs:{value:"blank"}},[e._v("不显示头像")])],1)],1),o("a-form-item",{attrs:{label:"评论审核后才显示:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.comment_new_need_check,callback:function(t){e.$set(e.options,"comment_new_need_check",t)},expression:"options.comment_new_need_check"}})],1),o("a-form-item",{attrs:{label:"新评论通知:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.comment_new_notice,callback:function(t){e.$set(e.options,"comment_new_notice",t)},expression:"options.comment_new_notice"}})],1),o("a-form-item",{attrs:{label:"评论回复通知对方:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.comment_reply_notice,callback:function(t){e.$set(e.options,"comment_reply_notice",t)},expression:"options.comment_reply_notice"}})],1),o("a-form-item",{attrs:{label:"API 评论开关:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.comment_api_enabled,callback:function(t){e.$set(e.options,"comment_api_enabled",t)},expression:"options.comment_api_enabled"}})],1),o("a-form-item",{attrs:{label:"每页显示条数: ","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"number"},model:{value:e.options.comment_page_size,callback:function(t){e.$set(e.options,"comment_page_size",t)},expression:"options.comment_page_size"}})],1),o("a-form-item",{attrs:{label:"占位提示:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.comment_content_placeholder,callback:function(t){e.$set(e.options,"comment_content_placeholder",t)},expression:"options.comment_content_placeholder"}})],1),o("a-form-item",{attrs:{label:"自定义样式:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:e.options.comment_custom_style,callback:function(t){e.$set(e.options,"comment_custom_style",t)},expression:"options.comment_custom_style"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"attachment"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"picture"}}),e._v("附件设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"存储位置:","wrapper-col":e.wrapperCol}},[o("a-select",{on:{change:e.handleAttachChange},model:{value:e.options.attachment_type,callback:function(t){e.$set(e.options,"attachment_type",t)},expression:"options.attachment_type"}},e._l(Object.keys(e.attachmentType),function(t){return o("a-select-option",{key:t,attrs:{value:t}},[e._v(e._s(e.attachmentType[t].text))])}),1)],1),o("div",{directives:[{name:"show",rawName:"v-show",value:e.upyunFormHidden,expression:"upyunFormHidden"}],staticClass:"upyunForm"},[o("a-form-item",{attrs:{label:"域名:","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"需要加上 http:// 或者 https://"}},[o("a-input",{model:{value:e.options.oss_upyun_domain,callback:function(t){e.$set(e.options,"oss_upyun_domain",t)},expression:"options.oss_upyun_domain"}})],1)],1),o("a-form-item",{attrs:{label:"空间名称:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_upyun_bucket,callback:function(t){e.$set(e.options,"oss_upyun_bucket",t)},expression:"options.oss_upyun_bucket"}})],1),o("a-form-item",{attrs:{label:"操作员名称:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_upyun_operator,callback:function(t){e.$set(e.options,"oss_upyun_operator",t)},expression:"options.oss_upyun_operator"}})],1),o("a-form-item",{attrs:{label:"操作员密码:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"password"},model:{value:e.options.oss_upyun_password,callback:function(t){e.$set(e.options,"oss_upyun_password",t)},expression:"options.oss_upyun_password"}})],1),o("a-form-item",{attrs:{label:"文件目录:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_upyun_source,callback:function(t){e.$set(e.options,"oss_upyun_source",t)},expression:"options.oss_upyun_source"}})],1),o("a-form-item",{attrs:{label:"处理策略:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_upyun_small_url,callback:function(t){e.$set(e.options,"oss_upyun_small_url",t)},expression:"options.oss_upyun_small_url"}})],1)],1),o("div",{directives:[{name:"show",rawName:"v-show",value:e.qnyunFormHidden,expression:"qnyunFormHidden"}],staticClass:"qnyunForm"},[o("a-form-item",{attrs:{label:"区域:","wrapper-col":e.wrapperCol}},[o("a-select",{model:{value:e.options.oss_qiniu_zone,callback:function(t){e.$set(e.options,"oss_qiniu_zone",t)},expression:"options.oss_qiniu_zone"}},[o("a-select-option",{attrs:{value:"auto"}},[e._v("自动选择")]),o("a-select-option",{attrs:{value:"z0"}},[e._v("华东")]),o("a-select-option",{attrs:{value:"z1"}},[e._v("华北")]),o("a-select-option",{attrs:{value:"z2"}},[e._v("华南")]),o("a-select-option",{attrs:{value:"na0"}},[e._v("北美")]),o("a-select-option",{attrs:{value:"as0"}},[e._v("东南亚")])],1)],1),o("a-form-item",{attrs:{label:"域名:","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"需要加上 http:// 或者 https://"}},[o("a-input",{model:{value:e.options.oss_qiniu_domain,callback:function(t){e.$set(e.options,"oss_qiniu_domain",t)},expression:"options.oss_qiniu_domain"}})],1)],1),o("a-form-item",{attrs:{label:"Access Key:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_qiniu_access_key,callback:function(t){e.$set(e.options,"oss_qiniu_access_key",t)},expression:"options.oss_qiniu_access_key"}})],1),o("a-form-item",{attrs:{label:"Secret Key:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_qiniu_secret_key,callback:function(t){e.$set(e.options,"oss_qiniu_secret_key",t)},expression:"options.oss_qiniu_secret_key"}})],1),o("a-form-item",{attrs:{label:"Bucket:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_qiniu_bucket,callback:function(t){e.$set(e.options,"oss_qiniu_bucket",t)},expression:"options.oss_qiniu_bucket"}})],1),o("a-form-item",{attrs:{label:"处理策略:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_qiniu_small_url,callback:function(t){e.$set(e.options,"oss_qiniu_small_url",t)},expression:"options.oss_qiniu_small_url"}})],1)],1),o("div",{directives:[{name:"show",rawName:"v-show",value:e.aliyunFormHidden,expression:"aliyunFormHidden"}],staticClass:"aliyunForm"},[o("a-form-item",{attrs:{label:"域名:","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"需要加上 http:// 或者 https://"}},[o("a-input",{model:{value:e.options.oss_aliyun_endpoint,callback:function(t){e.$set(e.options,"oss_aliyun_endpoint",t)},expression:"options.oss_aliyun_endpoint"}})],1)],1),o("a-form-item",{attrs:{label:"Access Key:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_aliyun_access_key,callback:function(t){e.$set(e.options,"oss_aliyun_access_key",t)},expression:"options.oss_aliyun_access_key"}})],1),o("a-form-item",{attrs:{label:"Access Secret:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_aliyun_access_secret,callback:function(t){e.$set(e.options,"oss_aliyun_access_secret",t)},expression:"options.oss_aliyun_access_secret"}})],1),o("a-form-item",{attrs:{label:"Bucket:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_aliyun_bucket_name,callback:function(t){e.$set(e.options,"oss_aliyun_bucket_name",t)},expression:"options.oss_aliyun_bucket_name"}})],1)],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"smtp"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"mail"}}),e._v("SMTP 服务\n ")],1),o("div",{staticClass:"custom-tab-wrapper"},[o("a-tabs",[o("a-tab-pane",{key:"1",attrs:{tab:"发信设置"}},[o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"是否启用:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.email_enabled,callback:function(t){e.$set(e.options,"email_enabled",t)},expression:"options.email_enabled"}})],1),o("a-form-item",{attrs:{label:"SMTP 地址:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_host,callback:function(t){e.$set(e.options,"email_host",t)},expression:"options.email_host"}})],1),o("a-form-item",{attrs:{label:"发送协议:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_protocol,callback:function(t){e.$set(e.options,"email_protocol",t)},expression:"options.email_protocol"}})],1),o("a-form-item",{attrs:{label:"SSL 端口:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_ssl_port,callback:function(t){e.$set(e.options,"email_ssl_port",t)},expression:"options.email_ssl_port"}})],1),o("a-form-item",{attrs:{label:"邮箱账号:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_username,callback:function(t){e.$set(e.options,"email_username",t)},expression:"options.email_username"}})],1),o("a-form-item",{attrs:{label:"邮箱密码:","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"部分邮箱可能是授权码"}},[o("a-input",{model:{value:e.options.email_password,callback:function(t){e.$set(e.options,"email_password",t)},expression:"options.email_password"}})],1)],1),o("a-form-item",{attrs:{label:"发件人:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_from_name,callback:function(t){e.$set(e.options,"email_from_name",t)},expression:"options.email_from_name"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"2",attrs:{tab:"发送测试"}},[o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"收件人:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.mailParam.to,callback:function(t){e.$set(e.mailParam,"to",t)},expression:"mailParam.to"}})],1),o("a-form-item",{attrs:{label:"主题:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.mailParam.subject,callback:function(t){e.$set(e.mailParam,"subject",t)},expression:"mailParam.subject"}})],1),o("a-form-item",{attrs:{label:"内容:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:e.mailParam.content,callback:function(t){e.$set(e.mailParam,"content",t)},expression:"mailParam.content"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleTestMailClick}},[e._v("发送")])],1)],1)],1)],1)],1)]),o("a-tab-pane",{key:"other"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"align-left"}}),e._v("其他设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"API服务:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.api_enabled,callback:function(t){e.$set(e.options,"api_enabled",t)},expression:"options.api_enabled"}})],1),o("a-form-item",{attrs:{label:"Access key:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.api_token,callback:function(t){e.$set(e.options,"api_token",t)},expression:"options.api_token"}})],1),o("a-form-item",{attrs:{label:"屏蔽搜索引擎:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.spider_disabled,callback:function(t){e.$set(e.options,"spider_disabled",t)},expression:"options.spider_disabled"}})],1),o("a-form-item",{attrs:{label:"统计代码:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:e.options.blog_statistics_code,callback:function(t){e.$set(e.options,"blog_statistics_code",t)},expression:"options.blog_statistics_code"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1)],1)],1)])],1),o("AttachmentSelectDrawer",{attrs:{title:"选择 Logo"},on:{listenToSelect:e.handleSelectLogo},model:{value:e.logoDrawerVisible,callback:function(t){e.logoDrawerVisible=t},expression:"logoDrawerVisible"}}),o("AttachmentSelectDrawer",{attrs:{title:"选择 Favicon"},on:{listenToSelect:e.handleSelectFavicon},model:{value:e.faviconDrawerVisible,callback:function(t){e.faviconDrawerVisible=t},expression:"faviconDrawerVisible"}})],1)},s=[],n=a("3556"),i=a("3993"),l=a("482b"),r=a("9efd"),p="/api/admin/mails",c={testMail:function(t){return Object(r["a"])({url:"".concat(p,"/test"),method:"post",data:t})}},u=c,m=a("a796"),_=a("591a"),d={components:{AttachmentSelectDrawer:i["a"]},data:function(){return{attachmentType:m["a"].type,wrapperCol:{xl:{span:8},lg:{span:8},sm:{span:12},xs:{span:24}},upyunFormHidden:!1,qnyunFormHidden:!1,aliyunFormHidden:!1,logoDrawerVisible:!1,faviconDrawerVisible:!1,options:[],mailParam:{}}},mounted:function(){this.loadOptions()},methods:Object(n["a"])({},Object(_["b"])(["loadUser"]),{loadOptions:function(){var t=this;l["a"].listAll().then(function(e){t.options=e.data.data,t.handleAttachChange(t.options["attachment_type"])})},handleSaveOptions:function(){var t=this;l["a"].save(this.options).then(function(e){t.loadOptions(),t.loadUser(),t.$message.success("保存成功!")})},handleAttachChange:function(t){switch(t){case"LOCAL":case"SMMS":this.upyunFormHidden=!1,this.qnyunFormHidden=!1,this.aliyunFormHidden=!1;break;case"UPYUN":this.upyunFormHidden=!0,this.qnyunFormHidden=!1,this.aliyunFormHidden=!1;break;case"QNYUN":this.qnyunFormHidden=!0,this.upyunFormHidden=!1,this.aliyunFormHidden=!1;break;case"ALIYUN":this.aliyunFormHidden=!0,this.qnyunFormHidden=!1,this.upyunFormHidden=!1;break}},handleSelectLogo:function(t){this.options.blog_logo=t.path,this.logoDrawerVisible=!1},handleTestMailClick:function(){var t=this;u.testMail(this.mailParam).then(function(e){t.$message.info(e.data.message)})},handleSelectFavicon:function(t){this.options.blog_favicon=t.path,this.faviconDrawerVisible=!1}})},b=d,f=a("17cc"),v=Object(f["a"])(b,o,s,!1,null,null,null);e["default"]=v.exports},"307b":function(t,e,a){"use strict";var o=a("1325"),s=a.n(o);s.a},3993:function(t,e,a){"use strict";var o=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("a-drawer",{attrs:{title:t.title,width:t.isMobile()?"100%":t.drawerWidth,closable:"",visible:t.visiable,destroyOnClose:""},on:{close:t.onClose}},[a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-input-search",{attrs:{placeholder:"搜索附件",enterButton:""}})],1),a("a-divider"),a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-skeleton",{attrs:{active:"",loading:t.skeletonLoading,paragraph:{rows:18}}},[a("a-col",{attrs:{span:24}},t._l(t.attachments,function(e,o){return a("div",{key:o,staticClass:"attach-item",on:{click:function(a){return t.handleSelectAttachment(e)}}},[a("img",{attrs:{src:e.thumbPath}})])}),0)],1)],1),a("a-divider"),a("div",{staticClass:"page-wrapper"},[a("a-pagination",{attrs:{defaultPageSize:t.pagination.size,total:t.pagination.total},on:{change:t.handlePaginationChange}})],1),a("a-divider",{staticClass:"divider-transparent"}),a("div",{staticClass:"bottom-control"},[a("a-button",{attrs:{type:"primary"},on:{click:t.handleShowUploadModal}},[t._v("上传附件")])],1)],1),a("a-modal",{attrs:{title:"上传附件",footer:null},model:{value:t.uploadVisible,callback:function(e){t.uploadVisible=e},expression:"uploadVisible"}},[a("upload",{attrs:{name:"file",multiple:"",accept:"image/*",uploadHandler:t.attachmentUploadHandler},on:{success:t.handleAttachmentUploadSuccess}},[a("p",{staticClass:"ant-upload-drag-icon"},[a("a-icon",{attrs:{type:"inbox"}})],1),a("p",{staticClass:"ant-upload-text"},[t._v("点击选择文件或将文件拖拽到此处")]),a("p",{staticClass:"ant-upload-hint"},[t._v("支持单个或批量上传")])])],1)],1)},s=[],n=(a("b06f"),a("ac0d")),i=a("a796"),l={name:"AttachmentSelectDrawer",mixins:[n["a"],n["b"]],model:{prop:"visiable",event:"close"},props:{visiable:{type:Boolean,required:!1,default:!1},drawerWidth:{type:Number,required:!1,default:460},title:{type:String,required:!1,default:"选择附件"}},data:function(){return{uploadVisible:!1,skeletonLoading:!0,pagination:{page:1,size:12,sort:""},attachments:[],attachmentUploadHandler:i["a"].upload}},created:function(){this.loadSkeleton(),this.loadAttachments()},watch:{visiable:function(t,e){t&&this.loadSkeleton()}},methods:{loadSkeleton:function(){var t=this;this.skeletonLoading=!0,setTimeout(function(){t.skeletonLoading=!1},500)},handleShowUploadModal:function(){this.uploadVisible=!0},loadAttachments:function(){var t=this,e=Object.assign({},this.pagination);e.page--,i["a"].query(e).then(function(e){t.attachments=e.data.data.content,t.pagination.total=e.data.data.total})},handleSelectAttachment:function(t){this.$emit("listenToSelect",t)},handlePaginationChange:function(t,e){this.pagination.page=t,this.pagination.size=e,this.loadAttachments()},handleAttachmentUploadSuccess:function(){this.$message.success("上传成功"),this.loadAttachments()},handleDelete:function(){this.loadAttachments()},onClose:function(){this.$emit("close",!1)}}},r=l,p=(a("307b"),a("17cc")),c=Object(p["a"])(r,o,s,!1,null,null,null);e["a"]=c.exports},a796:function(t,e,a){"use strict";var o=a("7f43"),s=a.n(o),n=a("9efd"),i="/api/admin/attachments",l={query:function(t){return Object(n["a"])({url:i,params:t,method:"get"})},get:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"get"})},delete:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"delete"})},update:function(t,e){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"put",data:e})},getMediaTypes:function(){return Object(n["a"])({url:"".concat(i,"/media_types"),method:"get"})}};l.CancelToken=s.a.CancelToken,l.isCancel=s.a.isCancel,l.upload=function(t,e,a){return Object(n["a"])({url:"".concat(i,"/upload"),timeout:864e4,data:t,onUploadProgress:e,cancelToken:a,method:"post"})},l.type={LOCAL:{type:"local",text:"本地"},SMMS:{type:"smms",text:"SM.MS"},UPYUN:{type:"upyun",text:"又拍云"},QNYUN:{type:"qnyun",text:"七牛云"},ALIYUN:{type:"aliyun",text:"阿里云"}},e["a"]=l}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-1c8b985a.d1e58af8.js b/src/main/resources/admin/js/chunk-1c8b985a.d1e58af8.js new file mode 100644 index 000000000..6c750fa32 --- /dev/null +++ b/src/main/resources/admin/js/chunk-1c8b985a.d1e58af8.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1c8b985a"],{1325:function(t,e,a){},"26ea":function(t,e,a){"use strict";a.r(e);var o=function(){var t=this,e=this,a=e.$createElement,o=e._self._c||a;return o("div",{staticClass:"page-header-index-wide"},[o("a-row",[o("a-col",{attrs:{span:24}},[o("div",{staticClass:"card-container"},[o("a-tabs",{attrs:{type:"card"}},[o("a-tab-pane",{key:"general"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"tool"}}),e._v("常规设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"博客标题:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.blog_title,callback:function(t){e.$set(e.options,"blog_title",t)},expression:"options.blog_title"}})],1),o("a-form-item",{attrs:{label:"博客地址:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{placeholder:"如:https://halo.run"},model:{value:e.options.blog_url,callback:function(t){e.$set(e.options,"blog_url",t)},expression:"options.blog_url"}})],1),o("a-form-item",{attrs:{label:"Logo:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.blog_logo,callback:function(t){e.$set(e.options,"blog_logo",t)},expression:"options.blog_logo"}},[o("a",{attrs:{slot:"addonAfter",href:"javascript:void(0);"},on:{click:function(){return t.logoDrawerVisible=!0}},slot:"addonAfter"},[o("a-icon",{attrs:{type:"picture"}})],1)])],1),o("a-form-item",{attrs:{label:"Favicon:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.blog_favicon,callback:function(t){e.$set(e.options,"blog_favicon",t)},expression:"options.blog_favicon"}},[o("a",{attrs:{slot:"addonAfter",href:"javascript:void(0);"},on:{click:function(){return t.faviconDrawerVisible=!0}},slot:"addonAfter"},[o("a-icon",{attrs:{type:"picture"}})],1)])],1),o("a-form-item",{attrs:{label:"页脚信息:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:e.options.blog_footer_info,callback:function(t){e.$set(e.options,"blog_footer_info",t)},expression:"options.blog_footer_info"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"seo"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"global"}}),e._v("SEO 设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"关键词: ","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"多个关键词以英文逗号隔开"}},[o("a-input",{model:{value:e.options.seo_keywords,callback:function(t){e.$set(e.options,"seo_keywords",t)},expression:"options.seo_keywords"}})],1)],1),o("a-form-item",{attrs:{label:"博客描述:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_description,callback:function(t){e.$set(e.options,"seo_description",t)},expression:"options.seo_description"}})],1),o("a-form-item",{attrs:{label:"百度站点验证:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_verification_baidu,callback:function(t){e.$set(e.options,"seo_verification_baidu",t)},expression:"options.seo_verification_baidu"}})],1),o("a-form-item",{attrs:{label:"Google 站点验证:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_verification_google,callback:function(t){e.$set(e.options,"seo_verification_google",t)},expression:"options.seo_verification_google"}})],1),o("a-form-item",{attrs:{label:"Bing 站点验证:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_verification_bing,callback:function(t){e.$set(e.options,"seo_verification_bing",t)},expression:"options.seo_verification_bing"}})],1),o("a-form-item",{attrs:{label:"360 站点验证:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.seo_verification_qihu,callback:function(t){e.$set(e.options,"seo_verification_qihu",t)},expression:"options.seo_verification_qihu"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"post"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"form"}}),e._v("文章设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"首页显示条数:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"number"},model:{value:e.options.post_index_page_size,callback:function(t){e.$set(e.options,"post_index_page_size",t)},expression:"options.post_index_page_size"}})],1),o("a-form-item",{attrs:{label:"RSS 显示条数:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"number"},model:{value:e.options.rss_page_size,callback:function(t){e.$set(e.options,"rss_page_size",t)},expression:"options.rss_page_size"}})],1),o("a-form-item",{attrs:{label:"文章摘要字数:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"number"},model:{value:e.options.post_summary_length,callback:function(t){e.$set(e.options,"post_summary_length",t)},expression:"options.post_summary_length"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"comment"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"message"}}),e._v("评论设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"评论者头像:","wrapper-col":e.wrapperCol}},[o("a-select",{model:{value:e.options.comment_gavatar_default,callback:function(t){e.$set(e.options,"comment_gavatar_default",t)},expression:"options.comment_gavatar_default"}},[o("a-select-option",{attrs:{value:"mm"}},[e._v("默认")]),o("a-select-option",{attrs:{value:"identicon"}},[e._v("抽象几何图形")]),o("a-select-option",{attrs:{value:"monsterid"}},[e._v("小怪物")]),o("a-select-option",{attrs:{value:"wavatar"}},[e._v("Wavatar")]),o("a-select-option",{attrs:{value:"retro"}},[e._v("复古")]),o("a-select-option",{attrs:{value:"robohash"}},[e._v("机器人")]),o("a-select-option",{attrs:{value:"blank"}},[e._v("不显示头像")])],1)],1),o("a-form-item",{attrs:{label:"评论审核后才显示:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.comment_new_need_check,callback:function(t){e.$set(e.options,"comment_new_need_check",t)},expression:"options.comment_new_need_check"}})],1),o("a-form-item",{attrs:{label:"新评论通知:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.comment_new_notice,callback:function(t){e.$set(e.options,"comment_new_notice",t)},expression:"options.comment_new_notice"}})],1),o("a-form-item",{attrs:{label:"评论回复通知对方:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.comment_reply_notice,callback:function(t){e.$set(e.options,"comment_reply_notice",t)},expression:"options.comment_reply_notice"}})],1),o("a-form-item",{attrs:{label:"API 评论开关:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.comment_api_enabled,callback:function(t){e.$set(e.options,"comment_api_enabled",t)},expression:"options.comment_api_enabled"}})],1),o("a-form-item",{attrs:{label:"每页显示条数: ","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"number"},model:{value:e.options.comment_page_size,callback:function(t){e.$set(e.options,"comment_page_size",t)},expression:"options.comment_page_size"}})],1),o("a-form-item",{attrs:{label:"占位提示:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.comment_content_placeholder,callback:function(t){e.$set(e.options,"comment_content_placeholder",t)},expression:"options.comment_content_placeholder"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"attachment"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"picture"}}),e._v("附件设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"存储位置:","wrapper-col":e.wrapperCol}},[o("a-select",{on:{change:e.handleAttachChange},model:{value:e.options.attachment_type,callback:function(t){e.$set(e.options,"attachment_type",t)},expression:"options.attachment_type"}},e._l(Object.keys(e.attachmentType),function(t){return o("a-select-option",{key:t,attrs:{value:t}},[e._v(e._s(e.attachmentType[t].text))])}),1)],1),o("div",{directives:[{name:"show",rawName:"v-show",value:e.upyunFormHidden,expression:"upyunFormHidden"}],staticClass:"upyunForm"},[o("a-form-item",{attrs:{label:"域名:","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"需要加上 http:// 或者 https://"}},[o("a-input",{model:{value:e.options.oss_upyun_domain,callback:function(t){e.$set(e.options,"oss_upyun_domain",t)},expression:"options.oss_upyun_domain"}})],1)],1),o("a-form-item",{attrs:{label:"空间名称:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_upyun_bucket,callback:function(t){e.$set(e.options,"oss_upyun_bucket",t)},expression:"options.oss_upyun_bucket"}})],1),o("a-form-item",{attrs:{label:"操作员名称:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_upyun_operator,callback:function(t){e.$set(e.options,"oss_upyun_operator",t)},expression:"options.oss_upyun_operator"}})],1),o("a-form-item",{attrs:{label:"操作员密码:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"password"},model:{value:e.options.oss_upyun_password,callback:function(t){e.$set(e.options,"oss_upyun_password",t)},expression:"options.oss_upyun_password"}})],1),o("a-form-item",{attrs:{label:"文件目录:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_upyun_source,callback:function(t){e.$set(e.options,"oss_upyun_source",t)},expression:"options.oss_upyun_source"}})],1),o("a-form-item",{attrs:{label:"处理策略:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_upyun_small_url,callback:function(t){e.$set(e.options,"oss_upyun_small_url",t)},expression:"options.oss_upyun_small_url"}})],1)],1),o("div",{directives:[{name:"show",rawName:"v-show",value:e.qnyunFormHidden,expression:"qnyunFormHidden"}],staticClass:"qnyunForm"},[o("a-form-item",{attrs:{label:"区域:","wrapper-col":e.wrapperCol}},[o("a-select",{model:{value:e.options.oss_qiniu_zone,callback:function(t){e.$set(e.options,"oss_qiniu_zone",t)},expression:"options.oss_qiniu_zone"}},[o("a-select-option",{attrs:{value:"auto"}},[e._v("自动选择")]),o("a-select-option",{attrs:{value:"z0"}},[e._v("华东")]),o("a-select-option",{attrs:{value:"z1"}},[e._v("华北")]),o("a-select-option",{attrs:{value:"z2"}},[e._v("华南")]),o("a-select-option",{attrs:{value:"na0"}},[e._v("北美")]),o("a-select-option",{attrs:{value:"as0"}},[e._v("东南亚")])],1)],1),o("a-form-item",{attrs:{label:"域名:","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"需要加上 http:// 或者 https://"}},[o("a-input",{model:{value:e.options.oss_qiniu_domain,callback:function(t){e.$set(e.options,"oss_qiniu_domain",t)},expression:"options.oss_qiniu_domain"}})],1)],1),o("a-form-item",{attrs:{label:"Access Key:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_qiniu_access_key,callback:function(t){e.$set(e.options,"oss_qiniu_access_key",t)},expression:"options.oss_qiniu_access_key"}})],1),o("a-form-item",{attrs:{label:"Secret Key:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_qiniu_secret_key,callback:function(t){e.$set(e.options,"oss_qiniu_secret_key",t)},expression:"options.oss_qiniu_secret_key"}})],1),o("a-form-item",{attrs:{label:"Bucket:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_qiniu_bucket,callback:function(t){e.$set(e.options,"oss_qiniu_bucket",t)},expression:"options.oss_qiniu_bucket"}})],1),o("a-form-item",{attrs:{label:"处理策略:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_qiniu_small_url,callback:function(t){e.$set(e.options,"oss_qiniu_small_url",t)},expression:"options.oss_qiniu_small_url"}})],1)],1),o("div",{directives:[{name:"show",rawName:"v-show",value:e.aliyunFormHidden,expression:"aliyunFormHidden"}],staticClass:"aliyunForm"},[o("a-form-item",{attrs:{label:"域名:","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"需要加上 http:// 或者 https://"}},[o("a-input",{model:{value:e.options.oss_aliyun_endpoint,callback:function(t){e.$set(e.options,"oss_aliyun_endpoint",t)},expression:"options.oss_aliyun_endpoint"}})],1)],1),o("a-form-item",{attrs:{label:"Access Key:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_aliyun_access_key,callback:function(t){e.$set(e.options,"oss_aliyun_access_key",t)},expression:"options.oss_aliyun_access_key"}})],1),o("a-form-item",{attrs:{label:"Access Secret:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_aliyun_access_secret,callback:function(t){e.$set(e.options,"oss_aliyun_access_secret",t)},expression:"options.oss_aliyun_access_secret"}})],1),o("a-form-item",{attrs:{label:"Bucket:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.oss_aliyun_bucket_name,callback:function(t){e.$set(e.options,"oss_aliyun_bucket_name",t)},expression:"options.oss_aliyun_bucket_name"}})],1)],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"smtp"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"mail"}}),e._v("SMTP 服务\n ")],1),o("div",{staticClass:"custom-tab-wrapper"},[o("a-tabs",[o("a-tab-pane",{key:"1",attrs:{tab:"发信设置"}},[o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"是否启用:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.email_enabled,callback:function(t){e.$set(e.options,"email_enabled",t)},expression:"options.email_enabled"}})],1),o("a-form-item",{attrs:{label:"SMTP 地址:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_host,callback:function(t){e.$set(e.options,"email_host",t)},expression:"options.email_host"}})],1),o("a-form-item",{attrs:{label:"发送协议:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_protocol,callback:function(t){e.$set(e.options,"email_protocol",t)},expression:"options.email_protocol"}})],1),o("a-form-item",{attrs:{label:"SSL 端口:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_ssl_port,callback:function(t){e.$set(e.options,"email_ssl_port",t)},expression:"options.email_ssl_port"}})],1),o("a-form-item",{attrs:{label:"邮箱账号:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_username,callback:function(t){e.$set(e.options,"email_username",t)},expression:"options.email_username"}})],1),o("a-form-item",{attrs:{label:"邮箱密码:","wrapper-col":e.wrapperCol}},[o("a-tooltip",{attrs:{trigger:["focus"],placement:"right",title:"部分邮箱可能是授权码"}},[o("a-input",{model:{value:e.options.email_password,callback:function(t){e.$set(e.options,"email_password",t)},expression:"options.email_password"}})],1)],1),o("a-form-item",{attrs:{label:"发件人:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.email_from_name,callback:function(t){e.$set(e.options,"email_from_name",t)},expression:"options.email_from_name"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1),o("a-tab-pane",{key:"2",attrs:{tab:"发送测试"}},[o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"收件人:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.mailParam.to,callback:function(t){e.$set(e.mailParam,"to",t)},expression:"mailParam.to"}})],1),o("a-form-item",{attrs:{label:"主题:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.mailParam.subject,callback:function(t){e.$set(e.mailParam,"subject",t)},expression:"mailParam.subject"}})],1),o("a-form-item",{attrs:{label:"内容:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:e.mailParam.content,callback:function(t){e.$set(e.mailParam,"content",t)},expression:"mailParam.content"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleTestMailClick}},[e._v("发送")])],1)],1)],1)],1)],1)]),o("a-tab-pane",{key:"other"},[o("span",{attrs:{slot:"tab"},slot:"tab"},[o("a-icon",{attrs:{type:"align-left"}}),e._v("其他设置\n ")],1),o("a-form",{attrs:{layout:"vertical"}},[o("a-form-item",{attrs:{label:"API服务:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.api_enabled,callback:function(t){e.$set(e.options,"api_enabled",t)},expression:"options.api_enabled"}})],1),o("a-form-item",{attrs:{label:"Access key:","wrapper-col":e.wrapperCol}},[o("a-input",{model:{value:e.options.api_token,callback:function(t){e.$set(e.options,"api_token",t)},expression:"options.api_token"}})],1),o("a-form-item",{attrs:{label:"屏蔽搜索引擎:","wrapper-col":e.wrapperCol}},[o("a-switch",{model:{value:e.options.spider_disabled,callback:function(t){e.$set(e.options,"spider_disabled",t)},expression:"options.spider_disabled"}})],1),o("a-form-item",{attrs:{label:"统计代码:","wrapper-col":e.wrapperCol}},[o("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:e.options.blog_statistics_code,callback:function(t){e.$set(e.options,"blog_statistics_code",t)},expression:"options.blog_statistics_code"}})],1),o("a-form-item",[o("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveOptions}},[e._v("保存")])],1)],1)],1)],1)],1)])],1),o("AttachmentSelectDrawer",{attrs:{title:"选择 Logo"},on:{listenToSelect:e.handleSelectLogo},model:{value:e.logoDrawerVisible,callback:function(t){e.logoDrawerVisible=t},expression:"logoDrawerVisible"}}),o("AttachmentSelectDrawer",{attrs:{title:"选择 Favicon"},on:{listenToSelect:e.handleSelectFavicon},model:{value:e.faviconDrawerVisible,callback:function(t){e.faviconDrawerVisible=t},expression:"faviconDrawerVisible"}})],1)},s=[],n=a("3556"),i=a("3993"),l=a("482b"),r=a("9efd"),p="/api/admin/mails",c={testMail:function(t){return Object(r["a"])({url:"".concat(p,"/test"),method:"post",data:t})}},u=c,m=a("a796"),d=a("591a"),_={components:{AttachmentSelectDrawer:i["a"]},data:function(){return{attachmentType:m["a"].type,wrapperCol:{xl:{span:8},lg:{span:8},sm:{span:12},xs:{span:24}},upyunFormHidden:!1,qnyunFormHidden:!1,aliyunFormHidden:!1,logoDrawerVisible:!1,faviconDrawerVisible:!1,options:[],mailParam:{}}},mounted:function(){this.loadOptions()},methods:Object(n["a"])({},Object(d["b"])(["loadUser"]),{loadOptions:function(){var t=this;l["a"].listAll().then(function(e){t.options=e.data.data,t.handleAttachChange(t.options["attachment_type"])})},handleSaveOptions:function(){var t=this;l["a"].save(this.options).then(function(e){t.loadOptions(),t.loadUser(),t.$message.success("保存成功!")})},handleAttachChange:function(t){switch(t){case"LOCAL":case"SMMS":this.upyunFormHidden=!1,this.qnyunFormHidden=!1,this.aliyunFormHidden=!1;break;case"UPYUN":this.upyunFormHidden=!0,this.qnyunFormHidden=!1,this.aliyunFormHidden=!1;break;case"QNYUN":this.qnyunFormHidden=!0,this.upyunFormHidden=!1,this.aliyunFormHidden=!1;break;case"ALIYUN":this.aliyunFormHidden=!0,this.qnyunFormHidden=!1,this.upyunFormHidden=!1;break}},handleSelectLogo:function(t){this.options.blog_logo=t.path,this.logoDrawerVisible=!1},handleTestMailClick:function(){var t=this;u.testMail(this.mailParam).then(function(e){t.$message.info(e.data.message)})},handleSelectFavicon:function(t){this.options.blog_favicon=t.path,this.faviconDrawerVisible=!1}})},b=_,f=a("17cc"),v=Object(f["a"])(b,o,s,!1,null,null,null);e["default"]=v.exports},"307b":function(t,e,a){"use strict";var o=a("1325"),s=a.n(o);s.a},3993:function(t,e,a){"use strict";var o=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("a-drawer",{attrs:{title:t.title,width:t.isMobile()?"100%":t.drawerWidth,closable:"",visible:t.visiable,destroyOnClose:""},on:{close:t.onClose}},[a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-input-search",{attrs:{placeholder:"搜索附件",enterButton:""}})],1),a("a-divider"),a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-skeleton",{attrs:{active:"",loading:t.skeletonLoading,paragraph:{rows:18}}},[a("a-col",{attrs:{span:24}},t._l(t.attachments,function(e,o){return a("div",{key:o,staticClass:"attach-item",on:{click:function(a){return t.handleSelectAttachment(e)}}},[a("img",{attrs:{src:e.thumbPath}})])}),0)],1)],1),a("a-divider"),a("div",{staticClass:"page-wrapper"},[a("a-pagination",{attrs:{defaultPageSize:t.pagination.size,total:t.pagination.total},on:{change:t.handlePaginationChange}})],1),a("a-divider",{staticClass:"divider-transparent"}),a("div",{staticClass:"bottom-control"},[a("a-button",{attrs:{type:"primary"},on:{click:t.handleShowUploadModal}},[t._v("上传附件")])],1)],1),a("a-modal",{attrs:{title:"上传附件",footer:null},model:{value:t.uploadVisible,callback:function(e){t.uploadVisible=e},expression:"uploadVisible"}},[a("upload",{attrs:{name:"file",multiple:"",accept:"image/*",uploadHandler:t.attachmentUploadHandler},on:{success:t.handleAttachmentUploadSuccess}},[a("p",{staticClass:"ant-upload-drag-icon"},[a("a-icon",{attrs:{type:"inbox"}})],1),a("p",{staticClass:"ant-upload-text"},[t._v("点击选择文件或将文件拖拽到此处")]),a("p",{staticClass:"ant-upload-hint"},[t._v("支持单个或批量上传")])])],1)],1)},s=[],n=(a("b06f"),a("ac0d")),i=a("a796"),l={name:"AttachmentSelectDrawer",mixins:[n["a"],n["b"]],model:{prop:"visiable",event:"close"},props:{visiable:{type:Boolean,required:!1,default:!1},drawerWidth:{type:Number,required:!1,default:460},title:{type:String,required:!1,default:"选择附件"}},data:function(){return{uploadVisible:!1,skeletonLoading:!0,pagination:{page:1,size:12,sort:""},attachments:[],attachmentUploadHandler:i["a"].upload}},created:function(){this.loadSkeleton(),this.loadAttachments()},watch:{visiable:function(t,e){t&&this.loadSkeleton()}},methods:{loadSkeleton:function(){var t=this;this.skeletonLoading=!0,setTimeout(function(){t.skeletonLoading=!1},500)},handleShowUploadModal:function(){this.uploadVisible=!0},loadAttachments:function(){var t=this,e=Object.assign({},this.pagination);e.page--,i["a"].query(e).then(function(e){t.attachments=e.data.data.content,t.pagination.total=e.data.data.total})},handleSelectAttachment:function(t){this.$emit("listenToSelect",t)},handlePaginationChange:function(t,e){this.pagination.page=t,this.pagination.size=e,this.loadAttachments()},handleAttachmentUploadSuccess:function(){this.$message.success("上传成功"),this.loadAttachments()},handleDelete:function(){this.loadAttachments()},onClose:function(){this.$emit("close",!1)}}},r=l,p=(a("307b"),a("17cc")),c=Object(p["a"])(r,o,s,!1,null,null,null);e["a"]=c.exports},a796:function(t,e,a){"use strict";var o=a("7f43"),s=a.n(o),n=a("9efd"),i="/api/admin/attachments",l={query:function(t){return Object(n["a"])({url:i,params:t,method:"get"})},get:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"get"})},delete:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"delete"})},update:function(t,e){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"put",data:e})},getMediaTypes:function(){return Object(n["a"])({url:"".concat(i,"/media_types"),method:"get"})}};l.CancelToken=s.a.CancelToken,l.isCancel=s.a.isCancel,l.upload=function(t,e,a){return Object(n["a"])({url:"".concat(i,"/upload"),timeout:864e4,data:t,onUploadProgress:e,cancelToken:a,method:"post"})},l.type={LOCAL:{type:"local",text:"本地"},SMMS:{type:"smms",text:"SM.MS"},UPYUN:{type:"upyun",text:"又拍云"},QNYUN:{type:"qnyun",text:"七牛云"},ALIYUN:{type:"aliyun",text:"阿里云"}},e["a"]=l}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-1ea08528.6dd705ab.js b/src/main/resources/admin/js/chunk-1ea08528.6dd705ab.js new file mode 100644 index 000000000..e76a5cb40 --- /dev/null +++ b/src/main/resources/admin/js/chunk-1ea08528.6dd705ab.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1ea08528"],{"68ad":function(e,t,a){"use strict";var r=a("f672"),o=a.n(r);o.a},"7e89":function(e,t,a){"use strict";a.r(t);var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"page-header-index-wide"},[a("a-row",{attrs:{gutter:12}},[a("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[a("a-card",{attrs:{title:e.title}},[a("a-form",{attrs:{layout:"horizontal"}},[a("a-form-item",{attrs:{label:"名称:",help:"* 页面上所显示的名称"}},[a("a-input",{model:{value:e.categoryToCreate.name,callback:function(t){e.$set(e.categoryToCreate,"name",t)},expression:"categoryToCreate.name"}})],1),a("a-form-item",{attrs:{label:"别名:",help:"* 一般为单个分类页面的标识,最好为英文"}},[a("a-input",{model:{value:e.categoryToCreate.slugName,callback:function(t){e.$set(e.categoryToCreate,"slugName",t)},expression:"categoryToCreate.slugName"}})],1),a("a-form-item",{attrs:{label:"上级目录:"}},[a("category-select-tree",{attrs:{categories:e.categories},model:{value:e.categoryToCreate.parentId,callback:function(t){e.$set(e.categoryToCreate,"parentId",t)},expression:"categoryToCreate.parentId"}})],1),a("a-form-item",{attrs:{label:"描述:",help:"* 分类描述,部分主题可显示"}},[a("a-input",{attrs:{type:"textarea",autosize:{minRows:3}},model:{value:e.categoryToCreate.description,callback:function(t){e.$set(e.categoryToCreate,"description",t)},expression:"categoryToCreate.description"}})],1),a("a-form-item",["create"===e.formType?a("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveClick}},[e._v("保存")]):a("a-button-group",[a("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveClick}},[e._v("更新")]),"update"===e.formType?a("a-button",{attrs:{type:"dashed"},on:{click:e.handleAddCategory}},[e._v("返回添加")]):e._e()],1)],1)],1)],1)],1),a("a-col",{style:{"padding-bottom":"1rem"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[a("a-card",{attrs:{title:"分类列表"}},[a("a-table",{attrs:{columns:e.columns,dataSource:e.categories,rowKey:function(e){return e.id},loading:e.loading},scopedSlots:e._u([{key:"name",fn:function(t){return a("ellipsis",{attrs:{length:30,tooltip:""}},[e._v("\n "+e._s(t)+"\n ")])}},{key:"action",fn:function(t,r){return a("span",{},[a("a",{attrs:{href:"javascript:;"},on:{click:function(t){return e.handleEditCategory(r)}}},[e._v("编辑")]),a("a-divider",{attrs:{type:"vertical"}}),a("a-popconfirm",{attrs:{title:"你确定要删除【"+r.name+"】分类?",okText:"确定",cancelText:"取消"},on:{confirm:function(t){return e.handleDeleteCategory(r.id)}}},[a("a",{attrs:{href:"javascript:;"}},[e._v("删除")])])],1)}}])})],1)],1)],1)],1)},o=[],n=a("fa25"),c=a("c405"),i=[{title:"名称",dataIndex:"name"},{title:"别名",dataIndex:"slugName"},{title:"描述",dataIndex:"description"},{title:"文章数",dataIndex:"postCount"},{title:"操作",key:"action",scopedSlots:{customRender:"action"}}],l={components:{CategorySelectTree:n["a"]},data:function(){return{formType:"create",categories:[],categoryToCreate:{},loading:!1,columns:i}},computed:{title:function(){return this.categoryToCreate.id?"修改分类":"添加分类"}},created:function(){this.loadCategories()},methods:{loadCategories:function(){var e=this;this.loading=!0,c["a"].listAll(!0).then(function(t){e.categories=t.data.data,e.loading=!1})},handleSaveClick:function(){this.createOrUpdateCategory()},handleAddCategory:function(){this.formType="create",this.categoryToCreate={}},handleEditCategory:function(e){this.categoryToCreate=e,this.formType="update"},handleDeleteCategory:function(e){var t=this;c["a"].delete(e).then(function(e){t.$message.success("删除成功!"),t.loadCategories()})},createOrUpdateCategory:function(){var e=this;this.categoryToCreate.id?c["a"].update(this.categoryToCreate.id,this.categoryToCreate).then(function(t){e.$message.success("更新成功!"),e.loadCategories(),e.categoryToCreate={}}):c["a"].create(this.categoryToCreate).then(function(t){e.$message.success("保存成功!"),e.loadCategories(),e.categoryToCreate={}}),this.handleAddCategory()}}},s=l,d=(a("68ad"),a("17cc")),u=Object(d["a"])(s,r,o,!1,null,"3d736771",null);t["default"]=u.exports},c405:function(e,t,a){"use strict";a("3a23"),a("612f");var r=a("9efd"),o="/api/admin/categories",n={};function c(e,t){t.forEach(function(t){e.key===t.parentId&&(e.children||(e.children=[]),e.children.push({key:t.id,title:t.name,isLeaf:!1}))}),e.children?e.children.forEach(function(e){return c(e,t)}):e.isLeaf=!0}n.listAll=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(r["a"])({url:"".concat(o),params:{more:e},method:"get"})},n.listTree=function(){return Object(r["a"])({url:"".concat(o,"/tree_view"),method:"get"})},n.create=function(e){return Object(r["a"])({url:o,data:e,method:"post"})},n.delete=function(e){return Object(r["a"])({url:"".concat(o,"/").concat(e),method:"delete"})},n.get=function(e){return Object(r["a"])({url:"".concat(o,"/").concat(e),method:"get"})},n.update=function(e,t){return Object(r["a"])({url:"".concat(o,"/").concat(e),data:t,method:"put"})},n.concreteTree=function(e){var t={key:0,title:"top",children:[]};return c(t,e),t.children},t["a"]=n},f672:function(e,t,a){},fa25:function(e,t,a){"use strict";var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("a-tree-select",{attrs:{treeData:e.categoryTreeData,placeholder:"请选择上级目录,默认为顶级目录",treeDefaultExpandAll:"",treeDataSimpleMode:!0,allowClear:!0,value:e.categoryIdString},on:{change:e.handleSelectionChange}})},o=[],n=(a("48fb"),a("3a23"),a("b06f"),{name:"CategorySelectTree",model:{prop:"categoryId",event:"change"},props:{categoryId:{type:Number,required:!0,default:0},categories:{type:Array,required:!1,default:function(){return[]}}},computed:{categoryTreeData:function(){return this.categories.map(function(e){return{id:e.id,title:e.name,value:e.id.toString(),pId:e.parentId}})},categoryIdString:function(){return this.categoryId.toString()}},methods:{handleSelectionChange:function(e,t,a){this.$log.debug("value: ",e),this.$log.debug("label: ",t),this.$log.debug("extra: ",a),this.$emit("change",e?parseInt(e):0)}}}),c=n,i=a("17cc"),l=Object(i["a"])(c,r,o,!1,null,null,null);t["a"]=l.exports}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-2d0d65a2.f7c7af76.js b/src/main/resources/admin/js/chunk-2d0d65a2.d68d48c2.js similarity index 95% rename from src/main/resources/admin/js/chunk-2d0d65a2.f7c7af76.js rename to src/main/resources/admin/js/chunk-2d0d65a2.d68d48c2.js index be9ddf863..46288a02f 100644 --- a/src/main/resources/admin/js/chunk-2d0d65a2.f7c7af76.js +++ b/src/main/resources/admin/js/chunk-2d0d65a2.d68d48c2.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d65a2"],{"71d6":function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"page-header-index-wide"},[n("a-row",{attrs:{gutter:12}},[n("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[n("a-card",{attrs:{title:e.title}},[n("a-form",{attrs:{layout:"horizontal"}},[n("a-form-item",{attrs:{label:"名称:",help:"* 页面上所显示的名称"}},[n("a-input",{model:{value:e.menuToCreate.name,callback:function(t){e.$set(e.menuToCreate,"name",t)},expression:"menuToCreate.name"}})],1),n("a-form-item",{attrs:{label:"路径:",help:"* 菜单的路径"}},[n("a-input",{model:{value:e.menuToCreate.url,callback:function(t){e.$set(e.menuToCreate,"url",t)},expression:"menuToCreate.url"}})],1),n("a-form-item",{attrs:{label:"上级菜单:"}},[n("menu-select-tree",{attrs:{menus:e.menus},model:{value:e.menuToCreate.parentId,callback:function(t){e.$set(e.menuToCreate,"parentId",t)},expression:"menuToCreate.parentId"}})],1),n("a-form-item",{attrs:{label:"排序编号:"}},[n("a-input",{attrs:{type:"number"},model:{value:e.menuToCreate.priority,callback:function(t){e.$set(e.menuToCreate,"priority",t)},expression:"menuToCreate.priority"}})],1),n("a-form-item",{style:{display:e.fieldExpand?"block":"none"},attrs:{label:"图标:",help:"* 请根据主题的支持选填"}},[n("a-input",{model:{value:e.menuToCreate.icon,callback:function(t){e.$set(e.menuToCreate,"icon",t)},expression:"menuToCreate.icon"}})],1),n("a-form-item",{style:{display:e.fieldExpand?"block":"none"},attrs:{label:"打开方式:"}},[n("a-select",{attrs:{defaultValue:"_self"},model:{value:e.menuToCreate.target,callback:function(t){e.$set(e.menuToCreate,"target",t)},expression:"menuToCreate.target"}},[n("a-select-option",{attrs:{value:"_self"}},[e._v("当前窗口")]),n("a-select-option",{attrs:{value:"_blank"}},[e._v("新窗口")])],1)],1),n("a-form-item",["create"===e.formType?n("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveClick}},[e._v("保存")]):n("a-button-group",[n("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveClick}},[e._v("更新")]),"update"===e.formType?n("a-button",{attrs:{type:"dashed"},on:{click:e.handleAddMenu}},[e._v("返回添加")]):e._e()],1),n("a",{style:{marginLeft:"8px"},on:{click:e.toggleExpand}},[e._v("\n 更多选项\n "),n("a-icon",{attrs:{type:e.fieldExpand?"up":"down"}})],1)],1)],1)],1)],1),n("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[n("a-card",{attrs:{title:"所有菜单"}},[n("a-table",{attrs:{columns:e.columns,dataSource:e.menus,loading:e.loading,rowKey:function(e){return e.id}},scopedSlots:e._u([{key:"name",fn:function(t){return n("ellipsis",{attrs:{length:30,tooltip:""}},[e._v(e._s(t))])}},{key:"action",fn:function(t,a){return n("span",{},[n("a",{attrs:{href:"javascript:;"},on:{click:function(t){return e.handleEditMenu(a)}}},[e._v("编辑")]),n("a-divider",{attrs:{type:"vertical"}}),n("a-popconfirm",{attrs:{title:"你确定要删除【"+a.name+"】菜单?",okText:"确定",cancelText:"取消"},on:{confirm:function(t){return e.handleDeleteMenu(a.id)}}},[n("a",{attrs:{href:"javascript:;"}},[e._v("删除")])])],1)}}])})],1)],1)],1)],1)},r=[],o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-tree-select",{attrs:{treeData:e.menuTreeData,placeholder:"请选择上级菜单,默认为顶级菜单",treeDefaultExpandAll:"",treeDataSimpleMode:!0,allowClear:!0,value:e.menuIdString},on:{change:e.handleSelectionChange}})},l=[],u=(n("48fb"),n("3a23"),n("b06f"),{name:"MenuSelectTree",model:{prop:"menuId",event:"change"},props:{menuId:{type:Number,required:!0,default:0},menus:{type:Array,required:!1,default:function(){return[]}}},computed:{menuTreeData:function(){return this.menus.map(function(e){return{id:e.id,title:e.name,value:e.id.toString(),pId:e.parentId}})},menuIdString:function(){return this.menuId.toString()}},methods:{handleSelectionChange:function(e,t,n){this.$log.debug("value: ",e),this.$log.debug("label: ",t),this.$log.debug("extra: ",n),this.$emit("change",e?parseInt(e):0)}}}),i=u,s=n("17cc"),c=Object(s["a"])(i,o,l,!1,null,null,null),d=c.exports,m=n("9efd"),p="/api/admin/menus",f={listAll:function(){return Object(m["a"])({url:p,method:"get"})},listTree:function(){return Object(m["a"])({url:"".concat(p,"/tree_view"),method:"get"})},create:function(e){return Object(m["a"])({url:p,data:e,method:"post"})},delete:function(e){return Object(m["a"])({url:"".concat(p,"/").concat(e),method:"delete"})},get:function(e){return Object(m["a"])({url:"".concat(p,"/").concat(e),method:"get"})},update:function(e,t){return Object(m["a"])({url:"".concat(p,"/").concat(e),data:t,method:"put"})}},h=f,g=[{title:"名称",dataIndex:"name",scopedSlots:{customRender:"name"}},{title:"路径",dataIndex:"url"},{title:"排序",dataIndex:"priority"},{title:"操作",key:"action",scopedSlots:{customRender:"action"}}],b={components:{MenuSelectTree:d},data:function(){return{formType:"create",loading:!1,columns:g,menus:[],menuToCreate:{},fieldExpand:!1}},computed:{title:function(){return this.menuToCreate.id?"修改菜单":"添加菜单"}},created:function(){this.loadMenus()},methods:{loadMenus:function(){var e=this;this.loading=!0,h.listTree().then(function(t){e.menus=t.data.data,e.loading=!1})},handleSaveClick:function(){this.createOrUpdateMenu()},handleAddMenu:function(){this.formType="create",this.menuToCreate={}},handleEditMenu:function(e){this.menuToCreate=e,this.formType="update"},handleDeleteMenu:function(e){var t=this;h.delete(e).then(function(e){t.$message.success("删除成功!"),t.loadMenus()})},createOrUpdateMenu:function(){var e=this;this.menuToCreate.id?h.update(this.menuToCreate.id,this.menuToCreate).then(function(t){e.$message.success("更新成功!"),e.loadMenus()}):h.create(this.menuToCreate).then(function(t){e.$message.success("保存成功!"),e.loadMenus()}),this.handleAddMenu()},toggleExpand:function(){this.fieldExpand=!this.fieldExpand}}},T=b,v=Object(s["a"])(T,a,r,!1,null,"75b8042f",null);t["default"]=v.exports}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d65a2"],{"71d6":function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"page-header-index-wide"},[n("a-row",{attrs:{gutter:12}},[n("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[n("a-card",{attrs:{title:e.title}},[n("a-form",{attrs:{layout:"horizontal"}},[n("a-form-item",{attrs:{label:"名称:",help:"* 页面上所显示的名称"}},[n("a-input",{model:{value:e.menuToCreate.name,callback:function(t){e.$set(e.menuToCreate,"name",t)},expression:"menuToCreate.name"}})],1),n("a-form-item",{attrs:{label:"地址:",help:"* 菜单的地址"}},[n("a-input",{model:{value:e.menuToCreate.url,callback:function(t){e.$set(e.menuToCreate,"url",t)},expression:"menuToCreate.url"}})],1),n("a-form-item",{attrs:{label:"上级菜单:"}},[n("menu-select-tree",{attrs:{menus:e.menus},model:{value:e.menuToCreate.parentId,callback:function(t){e.$set(e.menuToCreate,"parentId",t)},expression:"menuToCreate.parentId"}})],1),n("a-form-item",{attrs:{label:"排序编号:"}},[n("a-input",{attrs:{type:"number"},model:{value:e.menuToCreate.priority,callback:function(t){e.$set(e.menuToCreate,"priority",t)},expression:"menuToCreate.priority"}})],1),n("a-form-item",{style:{display:e.fieldExpand?"block":"none"},attrs:{label:"图标:",help:"* 请根据主题的支持选填"}},[n("a-input",{model:{value:e.menuToCreate.icon,callback:function(t){e.$set(e.menuToCreate,"icon",t)},expression:"menuToCreate.icon"}})],1),n("a-form-item",{style:{display:e.fieldExpand?"block":"none"},attrs:{label:"打开方式:"}},[n("a-select",{attrs:{defaultValue:"_self"},model:{value:e.menuToCreate.target,callback:function(t){e.$set(e.menuToCreate,"target",t)},expression:"menuToCreate.target"}},[n("a-select-option",{attrs:{value:"_self"}},[e._v("当前窗口")]),n("a-select-option",{attrs:{value:"_blank"}},[e._v("新窗口")])],1)],1),n("a-form-item",["create"===e.formType?n("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveClick}},[e._v("保存")]):n("a-button-group",[n("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveClick}},[e._v("更新")]),"update"===e.formType?n("a-button",{attrs:{type:"dashed"},on:{click:e.handleAddMenu}},[e._v("返回添加")]):e._e()],1),n("a",{style:{marginLeft:"8px"},on:{click:e.toggleExpand}},[e._v("\n 更多选项\n "),n("a-icon",{attrs:{type:e.fieldExpand?"up":"down"}})],1)],1)],1)],1)],1),n("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[n("a-card",{attrs:{title:"所有菜单"}},[n("a-table",{attrs:{columns:e.columns,dataSource:e.menus,loading:e.loading,rowKey:function(e){return e.id}},scopedSlots:e._u([{key:"name",fn:function(t){return n("ellipsis",{attrs:{length:30,tooltip:""}},[e._v(e._s(t))])}},{key:"action",fn:function(t,a){return n("span",{},[n("a",{attrs:{href:"javascript:;"},on:{click:function(t){return e.handleEditMenu(a)}}},[e._v("编辑")]),n("a-divider",{attrs:{type:"vertical"}}),n("a-popconfirm",{attrs:{title:"你确定要删除【"+a.name+"】菜单?",okText:"确定",cancelText:"取消"},on:{confirm:function(t){return e.handleDeleteMenu(a.id)}}},[n("a",{attrs:{href:"javascript:;"}},[e._v("删除")])])],1)}}])})],1)],1)],1)],1)},r=[],o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-tree-select",{attrs:{treeData:e.menuTreeData,placeholder:"请选择上级菜单,默认为顶级菜单",treeDefaultExpandAll:"",treeDataSimpleMode:!0,allowClear:!0,value:e.menuIdString},on:{change:e.handleSelectionChange}})},l=[],u=(n("48fb"),n("3a23"),n("b06f"),{name:"MenuSelectTree",model:{prop:"menuId",event:"change"},props:{menuId:{type:Number,required:!0,default:0},menus:{type:Array,required:!1,default:function(){return[]}}},computed:{menuTreeData:function(){return this.menus.map(function(e){return{id:e.id,title:e.name,value:e.id.toString(),pId:e.parentId}})},menuIdString:function(){return this.menuId.toString()}},methods:{handleSelectionChange:function(e,t,n){this.$log.debug("value: ",e),this.$log.debug("label: ",t),this.$log.debug("extra: ",n),this.$emit("change",e?parseInt(e):0)}}}),i=u,s=n("17cc"),c=Object(s["a"])(i,o,l,!1,null,null,null),d=c.exports,m=n("9efd"),p="/api/admin/menus",f={listAll:function(){return Object(m["a"])({url:p,method:"get"})},listTree:function(){return Object(m["a"])({url:"".concat(p,"/tree_view"),method:"get"})},create:function(e){return Object(m["a"])({url:p,data:e,method:"post"})},delete:function(e){return Object(m["a"])({url:"".concat(p,"/").concat(e),method:"delete"})},get:function(e){return Object(m["a"])({url:"".concat(p,"/").concat(e),method:"get"})},update:function(e,t){return Object(m["a"])({url:"".concat(p,"/").concat(e),data:t,method:"put"})}},h=f,g=[{title:"名称",dataIndex:"name",scopedSlots:{customRender:"name"}},{title:"地址",dataIndex:"url"},{title:"排序",dataIndex:"priority"},{title:"操作",key:"action",scopedSlots:{customRender:"action"}}],b={components:{MenuSelectTree:d},data:function(){return{formType:"create",loading:!1,columns:g,menus:[],menuToCreate:{},fieldExpand:!1}},computed:{title:function(){return this.menuToCreate.id?"修改菜单":"添加菜单"}},created:function(){this.loadMenus()},methods:{loadMenus:function(){var e=this;this.loading=!0,h.listTree().then(function(t){e.menus=t.data.data,e.loading=!1})},handleSaveClick:function(){this.createOrUpdateMenu()},handleAddMenu:function(){this.formType="create",this.menuToCreate={}},handleEditMenu:function(e){this.menuToCreate=e,this.formType="update"},handleDeleteMenu:function(e){var t=this;h.delete(e).then(function(e){t.$message.success("删除成功!"),t.loadMenus()})},createOrUpdateMenu:function(){var e=this;this.menuToCreate.id?h.update(this.menuToCreate.id,this.menuToCreate).then(function(t){e.$message.success("更新成功!"),e.loadMenus()}):h.create(this.menuToCreate).then(function(t){e.$message.success("保存成功!"),e.loadMenus()}),this.handleAddMenu()},toggleExpand:function(){this.fieldExpand=!this.fieldExpand}}},T=b,v=Object(s["a"])(T,a,r,!1,null,"432853d4",null);t["default"]=v.exports}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-31829c73.36a05806.js b/src/main/resources/admin/js/chunk-31829c73.620e8a22.js similarity index 100% rename from src/main/resources/admin/js/chunk-31829c73.36a05806.js rename to src/main/resources/admin/js/chunk-31829c73.620e8a22.js diff --git a/src/main/resources/admin/js/chunk-407d6578.1ef8e454.js b/src/main/resources/admin/js/chunk-407d6578.1ef8e454.js new file mode 100644 index 000000000..774daf19a --- /dev/null +++ b/src/main/resources/admin/js/chunk-407d6578.1ef8e454.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-407d6578"],{aa1e9:function(t,a,e){"use strict";e.r(a);var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"page-header-index-wide"},[e("a-row",{attrs:{gutter:12}},[e("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[e("a-card",{attrs:{title:"添加标签"}},[e("a-form",{attrs:{layout:"horizontal"}},[e("a-form-item",{attrs:{label:"名称:",help:"* 页面上所显示的名称"}},[e("a-input",{model:{value:t.tagToCreate.name,callback:function(a){t.$set(t.tagToCreate,"name",a)},expression:"tagToCreate.name"}})],1),e("a-form-item",{attrs:{label:"别名",help:"* 一般为单个标签页面的标识,最好为英文"}},[e("a-input",{model:{value:t.tagToCreate.slugName,callback:function(a){t.$set(t.tagToCreate,"slugName",a)},expression:"tagToCreate.slugName"}})],1),e("a-form-item",[e("a-button",{attrs:{type:"primary"},on:{click:t.handleCreateTag}},[t._v("保存")])],1)],1)],1)],1),e("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[e("a-card",{attrs:{title:"所有标签"}},t._l(t.tags,function(a){return e("a-tooltip",{key:a.id,attrs:{placement:"topLeft"}},[e("template",{slot:"title"},[e("span",[t._v(t._s(a.postCount)+" 篇文章")])]),e("a-tag",{attrs:{closable:"",color:"blue"},on:{close:function(e){return t.handleDeleteTag(a.id)}}},[t._v(t._s(a.name))])],2)}),1)],1)],1)],1)},o=[],l=e("d28db"),r={data:function(){return{tags:[],tagToCreate:{},tagToUpdate:{}}},created:function(){this.loadTags()},methods:{loadTags:function(){var t=this;l["a"].listAll(!0).then(function(a){t.tags=a.data.data})},handleCreateTag:function(){var t=this;l["a"].create(this.tagToCreate).then(function(a){t.loadTags()})},handleUpdateTag:function(t){var a=this;l["a"].update(t,this.tagToUpdate).then(function(t){a.loadTags()})},handleDeleteTag:function(t){var a=this;l["a"].delete(t).then(function(t){a.$message.success("删除成功!"),a.loadTags()})}}},s=r,c=e("17cc"),i=Object(c["a"])(s,n,o,!1,null,null,null);a["default"]=i.exports},d28db:function(t,a,e){"use strict";var n=e("9efd"),o="/api/admin/tags",l={listAll:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(n["a"])({url:o,params:{more:t},method:"get"})},createWithName:function(t){return Object(n["a"])({url:o,data:{name:t},method:"post"})},create:function(t){return Object(n["a"])({url:o,data:t,method:"post"})},update:function(t,a){return Object(n["a"])({url:"".concat(o,"/").concat(t),data:a,method:"put"})},delete:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"delete"})}};a["a"]=l}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-407d6578.b0b0e2da.js b/src/main/resources/admin/js/chunk-407d6578.b0b0e2da.js deleted file mode 100644 index f5184ba04..000000000 --- a/src/main/resources/admin/js/chunk-407d6578.b0b0e2da.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-407d6578"],{aa1e9:function(t,a,e){"use strict";e.r(a);var n=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"page-header-index-wide"},[e("a-row",{attrs:{gutter:12}},[e("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[e("a-card",{attrs:{title:"添加标签"}},[e("a-form",{attrs:{layout:"horizontal"}},[e("a-form-item",{attrs:{label:"名称:",help:"* 页面上所显示的名称"}},[e("a-input",{model:{value:t.tagToCreate.name,callback:function(a){t.$set(t.tagToCreate,"name",a)},expression:"tagToCreate.name"}})],1),e("a-form-item",{attrs:{label:"路径名称:",help:"* 这是文章路径上显示的名称,最好为英文"}},[e("a-input",{model:{value:t.tagToCreate.slugName,callback:function(a){t.$set(t.tagToCreate,"slugName",a)},expression:"tagToCreate.slugName"}})],1),e("a-form-item",[e("a-button",{attrs:{type:"primary"},on:{click:t.handleCreateTag}},[t._v("保存")])],1)],1)],1)],1),e("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[e("a-card",{attrs:{title:"所有标签"}},t._l(t.tags,function(a){return e("a-tooltip",{key:a.id,attrs:{placement:"topLeft"}},[e("template",{slot:"title"},[e("span",[t._v(t._s(a.postCount)+" 篇文章")])]),e("a-tag",{attrs:{closable:"",color:"blue"},on:{close:function(e){return t.handleDeleteTag(a.id)}}},[t._v(t._s(a.name))])],2)}),1)],1)],1)],1)},o=[],l=e("d28db"),r={data:function(){return{tags:[],tagToCreate:{},tagToUpdate:{}}},created:function(){this.loadTags()},methods:{loadTags:function(){var t=this;l["a"].listAll(!0).then(function(a){t.tags=a.data.data})},handleCreateTag:function(){var t=this;l["a"].create(this.tagToCreate).then(function(a){t.loadTags()})},handleUpdateTag:function(t){var a=this;l["a"].update(t,this.tagToUpdate).then(function(t){a.loadTags()})},handleDeleteTag:function(t){var a=this;l["a"].delete(t).then(function(t){a.$message.success("删除成功!"),a.loadTags()})}}},s=r,c=e("17cc"),i=Object(c["a"])(s,n,o,!1,null,null,null);a["default"]=i.exports},d28db:function(t,a,e){"use strict";var n=e("9efd"),o="/api/admin/tags",l={listAll:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(n["a"])({url:o,params:{more:t},method:"get"})},createWithName:function(t){return Object(n["a"])({url:o,data:{name:t},method:"post"})},create:function(t){return Object(n["a"])({url:o,data:t,method:"post"})},update:function(t,a){return Object(n["a"])({url:"".concat(o,"/").concat(t),data:a,method:"put"})},delete:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"delete"})}};a["a"]=l}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-4d54295e.e29bba1d.js b/src/main/resources/admin/js/chunk-4d54295e.e29bba1d.js deleted file mode 100644 index 847193b37..000000000 --- a/src/main/resources/admin/js/chunk-4d54295e.e29bba1d.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-4d54295e"],{"2e09":function(e,t,a){"use strict";var r=a("61aca"),o=a.n(r);o.a},"61aca":function(e,t,a){},"7e89":function(e,t,a){"use strict";a.r(t);var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"page-header-index-wide"},[a("a-row",{attrs:{gutter:12}},[a("a-col",{style:{"padding-bottom":"12px"},attrs:{xl:10,lg:10,md:10,sm:24,xs:24}},[a("a-card",{attrs:{title:e.title}},[a("a-form",{attrs:{layout:"horizontal"}},[a("a-form-item",{attrs:{label:"名称:",help:"* 页面上所显示的名称"}},[a("a-input",{model:{value:e.categoryToCreate.name,callback:function(t){e.$set(e.categoryToCreate,"name",t)},expression:"categoryToCreate.name"}})],1),a("a-form-item",{attrs:{label:"路径名称:",help:"* 这是文章路径上显示的名称,最好为英文"}},[a("a-input",{model:{value:e.categoryToCreate.slugName,callback:function(t){e.$set(e.categoryToCreate,"slugName",t)},expression:"categoryToCreate.slugName"}})],1),a("a-form-item",{attrs:{label:"上级目录:"}},[a("category-select-tree",{attrs:{categories:e.categories},model:{value:e.categoryToCreate.parentId,callback:function(t){e.$set(e.categoryToCreate,"parentId",t)},expression:"categoryToCreate.parentId"}})],1),a("a-form-item",{attrs:{label:"描述:",help:"* 分类描述,部分主题可显示"}},[a("a-input",{attrs:{type:"textarea",autosize:{minRows:3}},model:{value:e.categoryToCreate.description,callback:function(t){e.$set(e.categoryToCreate,"description",t)},expression:"categoryToCreate.description"}})],1),a("a-form-item",["create"===e.formType?a("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveClick}},[e._v("保存")]):a("a-button-group",[a("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveClick}},[e._v("更新")]),"update"===e.formType?a("a-button",{attrs:{type:"dashed"},on:{click:e.handleAddCategory}},[e._v("返回添加")]):e._e()],1)],1)],1)],1)],1),a("a-col",{style:{"padding-bottom":"1rem"},attrs:{xl:14,lg:14,md:14,sm:24,xs:24}},[a("a-card",{attrs:{title:"分类列表"}},[a("a-table",{attrs:{columns:e.columns,dataSource:e.categories,rowKey:function(e){return e.id},loading:e.loading},scopedSlots:e._u([{key:"name",fn:function(t){return a("ellipsis",{attrs:{length:30,tooltip:""}},[e._v("\n "+e._s(t)+"\n ")])}},{key:"action",fn:function(t,r){return a("span",{},[a("a",{attrs:{href:"javascript:;"},on:{click:function(t){return e.handleEditCategory(r)}}},[e._v("编辑")]),a("a-divider",{attrs:{type:"vertical"}}),a("a-popconfirm",{attrs:{title:"你确定要删除【"+r.name+"】分类?",okText:"确定",cancelText:"取消"},on:{confirm:function(t){return e.handleDeleteCategory(r.id)}}},[a("a",{attrs:{href:"javascript:;"}},[e._v("删除")])])],1)}}])})],1),a("a-card",{staticClass:"category-tree",attrs:{title:"分类树"}},[a("category-tree",{attrs:{categories:e.categories}})],1)],1)],1)],1)},o=[],n=a("fa25"),c=a("eda3"),i=a("c405"),l=[{title:"名称",dataIndex:"name"},{title:"路径",dataIndex:"slugName"},{title:"描述",dataIndex:"description"},{title:"文章数",dataIndex:"postCount"},{title:"操作",key:"action",scopedSlots:{customRender:"action"}}],s={components:{CategorySelectTree:n["a"],CategoryTree:c["a"]},data:function(){return{formType:"create",categories:[],categoryToCreate:{},loading:!1,columns:l}},computed:{title:function(){return this.categoryToCreate.id?"修改分类":"添加分类"}},created:function(){this.loadCategories()},methods:{loadCategories:function(){var e=this;this.loading=!0,i["a"].listAll(!0).then(function(t){e.categories=t.data.data,e.loading=!1})},handleSaveClick:function(){this.createOrUpdateCategory()},handleAddCategory:function(){this.formType="create",this.categoryToCreate={}},handleEditCategory:function(e){this.categoryToCreate=e,this.formType="update"},handleDeleteCategory:function(e){var t=this;i["a"].delete(e).then(function(e){t.$message.success("删除成功!"),t.loadCategories()})},createOrUpdateCategory:function(){var e=this;this.categoryToCreate.id?i["a"].update(this.categoryToCreate.id,this.categoryToCreate).then(function(t){e.$message.success("更新成功!"),e.loadCategories(),e.categoryToCreate={}}):i["a"].create(this.categoryToCreate).then(function(t){e.$message.success("保存成功!"),e.loadCategories(),e.categoryToCreate={}}),this.handleAddCategory()}}},d=s,u=(a("2e09"),a("17cc")),g=Object(u["a"])(d,r,o,!1,null,"42549218",null);t["default"]=g.exports},c405:function(e,t,a){"use strict";a("3a23"),a("612f");var r=a("9efd"),o="/api/admin/categories",n={};function c(e,t){t.forEach(function(t){e.key===t.parentId&&(e.children||(e.children=[]),e.children.push({key:t.id,title:t.name,isLeaf:!1}))}),e.children?e.children.forEach(function(e){return c(e,t)}):e.isLeaf=!0}n.listAll=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(r["a"])({url:"".concat(o),params:{more:e},method:"get"})},n.listTree=function(){return Object(r["a"])({url:"".concat(o,"/tree_view"),method:"get"})},n.create=function(e){return Object(r["a"])({url:o,data:e,method:"post"})},n.delete=function(e){return Object(r["a"])({url:"".concat(o,"/").concat(e),method:"delete"})},n.get=function(e){return Object(r["a"])({url:"".concat(o,"/").concat(e),method:"get"})},n.update=function(e,t){return Object(r["a"])({url:"".concat(o,"/").concat(e),data:t,method:"put"})},n.concreteTree=function(e){var t={key:0,title:"top",children:[]};return c(t,e),t.children},t["a"]=n},eda3:function(e,t,a){"use strict";var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("a-tree",{attrs:{checkable:"",treeData:e.categoryTree,defaultExpandAll:!0,checkedKeys:e.categoryIds},on:{check:e.onCheck}},[a("span",{staticStyle:{color:"#1890ff"},attrs:{slot:"title0010"},slot:"title0010"},[e._v("sss")])])},o=[],n=a("c405"),c={name:"CategoryTree",model:{prop:"categoryIds",event:"check"},props:{categoryIds:{type:Array,required:!1,default:function(){return[]}},categories:{type:Array,required:!1,default:function(){return[]}}},computed:{categoryTree:function(){return n["a"].concreteTree(this.categories)}},methods:{onCheck:function(e,t){this.$log.debug("Chekced keys",e),this.$log.debug("e",t);var a=t.checkedNodes.filter(function(e){return e.data.props.isLeaf}).map(function(e){return e.key});this.$log.debug("Effectively selected category ids",a),this.$emit("check",a)}}},i=c,l=a("17cc"),s=Object(l["a"])(i,r,o,!1,null,null,null);t["a"]=s.exports},fa25:function(e,t,a){"use strict";var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("a-tree-select",{attrs:{treeData:e.categoryTreeData,placeholder:"请选择上级目录,默认为顶级目录",treeDefaultExpandAll:"",treeDataSimpleMode:!0,allowClear:!0,value:e.categoryIdString},on:{change:e.handleSelectionChange}})},o=[],n=(a("48fb"),a("3a23"),a("b06f"),{name:"CategorySelectTree",model:{prop:"categoryId",event:"change"},props:{categoryId:{type:Number,required:!0,default:0},categories:{type:Array,required:!1,default:function(){return[]}}},computed:{categoryTreeData:function(){return this.categories.map(function(e){return{id:e.id,title:e.name,value:e.id.toString(),pId:e.parentId}})},categoryIdString:function(){return this.categoryId.toString()}},methods:{handleSelectionChange:function(e,t,a){this.$log.debug("value: ",e),this.$log.debug("label: ",t),this.$log.debug("extra: ",a),this.$emit("change",e?parseInt(e):0)}}}),c=n,i=a("17cc"),l=Object(i["a"])(c,r,o,!1,null,null,null);t["a"]=l.exports}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-4fb0639b.1668db6b.js b/src/main/resources/admin/js/chunk-4fb0639b.1be7f2f2.js similarity index 100% rename from src/main/resources/admin/js/chunk-4fb0639b.1668db6b.js rename to src/main/resources/admin/js/chunk-4fb0639b.1be7f2f2.js diff --git a/src/main/resources/admin/js/chunk-75751d79.f0f603bc.js b/src/main/resources/admin/js/chunk-75751d79.1b49b36e.js similarity index 100% rename from src/main/resources/admin/js/chunk-75751d79.f0f603bc.js rename to src/main/resources/admin/js/chunk-75751d79.1b49b36e.js diff --git a/src/main/resources/admin/js/chunk-b6cd2e50.cc4cab63.js b/src/main/resources/admin/js/chunk-b6cd2e50.cc4cab63.js new file mode 100644 index 000000000..d68e614b0 --- /dev/null +++ b/src/main/resources/admin/js/chunk-b6cd2e50.cc4cab63.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-b6cd2e50"],{"12de":function(t,e,a){"use strict";var n=a("9efd"),o="/api/admin/themes",s={listAll:function(){return Object(n["a"])({url:"".concat(o),method:"get"})},listFiles:function(){return Object(n["a"])({url:"".concat(o,"/files"),method:"get"})},customTpls:function(){return Object(n["a"])({url:"".concat(o,"/files/custom"),method:"get"})},active:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/activation"),method:"post"})},getActivatedTheme:function(){return Object(n["a"])({url:"".concat(o,"/activation"),method:"get"})},delete:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"delete"})},fetchConfiguration:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/configurations"),method:"get"})},fetchSettings:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/settings"),method:"get"})},saveSettings:function(t,e){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/settings"),data:e,method:"post"})},getProperty:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"get"})},upload:function(t,e,a){return Object(n["a"])({url:"".concat(o,"/upload"),timeout:864e4,data:t,onUploadProgress:e,cancelToken:a,method:"post"})},fetching:function(t){return Object(n["a"])({url:"".concat(o,"/fetching"),params:{uri:t},method:"post"})},getContent:function(t){return Object(n["a"])({url:"".concat(o,"/files/content"),params:{path:t},method:"get"})},saveContent:function(t,e){return Object(n["a"])({url:"".concat(o,"/files/content"),params:{path:t},data:e,method:"put"})},reload:function(){return Object(n["a"])({url:"".concat(o,"/reload"),method:"post"})},exists:function(t){return Object(n["a"])({url:"".concat(o,"/activation/template/exists"),method:"get",params:{template:t}})}};e["a"]=s},"2ffa":function(t,e,a){"use strict";var n=a("79e0"),o=a.n(n);o.a},"79e0":function(t,e,a){},ed66:function(t,e,a){"use strict";var n=a("9efd"),o="/api/admin/sheets",s={list:function(){return Object(n["a"])({url:o,method:"get"})},listInternal:function(){return Object(n["a"])({url:"".concat(o,"/internal"),method:"get"})},get:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"get"})},create:function(t,e){return Object(n["a"])({url:o,method:"post",data:t,params:{autoSave:e}})},update:function(t,e,a){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"put",data:e,params:{autoSave:a}})},updateStatus:function(t,e){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/").concat(e),method:"put"})},delete:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"delete"})},sheetStatus:{PUBLISHED:{color:"green",status:"success",text:"已发布"},DRAFT:{color:"yellow",status:"warning",text:"草稿"},RECYCLE:{color:"red",status:"error",text:"回收站"}}};e["a"]=s},f585:function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=this,a=e.$createElement,n=e._self._c||a;return n("div",{staticClass:"page-header-index-wide"},[n("a-row",{attrs:{gutter:12}},[n("a-col",{attrs:{span:24}},[n("div",{staticStyle:{"margin-bottom":"16px"}},[n("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["title",{rules:[{required:!0,message:"请输入页面标题"}]}],expression:"['title', { rules: [{ required: true, message: '请输入页面标题' }] }]"}],attrs:{size:"large",placeholder:"请输入页面标题"},model:{value:e.sheetToStage.title,callback:function(t){e.$set(e.sheetToStage,"title",t)},expression:"sheetToStage.title"}})],1),n("div",{attrs:{id:"editor"}},[n("mavon-editor",{attrs:{boxShadow:!1,toolbars:e.toolbars,ishljs:!0,autofocus:!1},model:{value:e.sheetToStage.originalContent,callback:function(t){e.$set(e.sheetToStage,"originalContent",t)},expression:"sheetToStage.originalContent"}})],1)]),n("a-col",{attrs:{xl:24,lg:24,md:24,sm:24,xs:24}},[n("a-drawer",{attrs:{title:"页面设置",width:e.isMobile()?"100%":"460",closable:!0,visible:e.sheetSettingVisible},on:{close:function(){return t.sheetSettingVisible=!1}}},[n("div",{staticClass:"post-setting-drawer-content"},[n("div",{style:{marginBottom:"16px"}},[n("h3",{staticClass:"post-setting-drawer-title"},[e._v("基本设置")]),n("div",{staticClass:"post-setting-drawer-item"},[n("a-form",{attrs:{layout:"vertical"}},[n("a-form-item",{attrs:{label:"页面路径:",help:e.options.blog_url+"/s/"+(e.sheetToStage.url?e.sheetToStage.url:"{auto_generate}")}},[n("a-input",{model:{value:e.sheetToStage.url,callback:function(t){e.$set(e.sheetToStage,"url",t)},expression:"sheetToStage.url"}})],1),n("a-form-item",{attrs:{label:"开启评论:"}},[n("a-radio-group",{attrs:{defaultValue:!1},model:{value:e.sheetToStage.disallowComment,callback:function(t){e.$set(e.sheetToStage,"disallowComment",t)},expression:"sheetToStage.disallowComment"}},[n("a-radio",{attrs:{value:!1}},[e._v("开启")]),n("a-radio",{attrs:{value:!0}},[e._v("关闭")])],1)],1),n("a-form-item",{attrs:{label:"自定义模板:"}},[n("a-select",{model:{value:e.sheetToStage.template,callback:function(t){e.$set(e.sheetToStage,"template",t)},expression:"sheetToStage.template"}},[n("a-select-option",{key:"",attrs:{value:""}},[e._v("无")]),e._l(e.customTpls,function(t){return n("a-select-option",{key:t,attrs:{value:t}},[e._v(e._s(t))])})],2)],1)],1)],1)]),n("a-divider"),n("div",{style:{marginBottom:"16px"}},[n("h3",{staticClass:"post-setting-drawer-title"},[e._v("缩略图")]),n("div",{staticClass:"post-setting-drawer-item"},[n("div",{staticClass:"sheet-thum"},[n("img",{staticClass:"img",attrs:{src:e.sheetToStage.thumbnail||"//i.loli.net/2019/05/05/5ccf007c0a01d.png"},on:{click:function(){return t.thumDrawerVisible=!0}}}),n("a-button",{staticClass:"sheet-thum-remove",attrs:{type:"dashed"},on:{click:e.handlerRemoveThumb}},[e._v("移除")])],1)])]),n("a-divider",{staticClass:"divider-transparent"})],1),n("AttachmentSelectDrawer",{attrs:{drawerWidth:460},on:{listenToSelect:e.handleSelectSheetThumb},model:{value:e.thumDrawerVisible,callback:function(t){e.thumDrawerVisible=t},expression:"thumDrawerVisible"}}),n("div",{staticClass:"bottom-control"},[n("a-button",{staticStyle:{marginRight:"8px"},on:{click:e.handleDraftClick}},[e._v("保存草稿")]),n("a-button",{attrs:{type:"primary"},on:{click:e.handlePublishClick}},[e._v("发布")])],1)],1)],1)],1),n("AttachmentDrawer",{model:{value:e.attachmentDrawerVisible,callback:function(t){e.attachmentDrawerVisible=t},expression:"attachmentDrawerVisible"}}),n("footer-tool-bar",{style:{width:e.isSideMenu()&&e.isDesktop()?"calc(100% - "+(e.sidebarOpened?256:80)+"px)":"100%"}},[n("a-button",{attrs:{type:"primary"},on:{click:function(){return t.sheetSettingVisible=!0}}},[e._v("发布")]),n("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"dashed"},on:{click:function(){return t.attachmentDrawerVisible=!0}}},[e._v("附件库")])],1)],1)},o=[],s=(a("612f"),a("6657")),i=a("ed4e"),r=a("3993"),c=a("5a70"),l=a("ac0d"),u=a("2749"),h=(a("cc71"),a("ed66")),d=a("12de"),m=a("482b"),f={components:{mavonEditor:s["mavonEditor"],FooterToolBar:c["a"],AttachmentDrawer:i["a"],AttachmentSelectDrawer:r["a"]},mixins:[l["a"],l["b"]],data:function(){return{toolbars:u["a"],wrapperCol:{xl:{span:24},sm:{span:24},xs:{span:24}},attachmentDrawerVisible:!1,thumDrawerVisible:!1,sheetSettingVisible:!1,customTpls:[],sheetToStage:{},timer:null,options:[],keys:["blog_url"]}},created:function(){this.loadCustomTpls(),this.loadOptions(),clearInterval(this.timer),this.timer=null,this.autoSaveTimer()},destroyed:function(){clearInterval(this.timer),this.timer=null},beforeRouteLeave:function(t,e,a){null!==this.timer&&clearInterval(this.timer),this.autoSaveSheet(),a()},beforeRouteEnter:function(t,e,a){var n=t.query.sheetId;a(function(t){n&&h["a"].get(n).then(function(e){var a=e.data.data;t.sheetToStage=a})})},methods:{loadCustomTpls:function(){var t=this;d["a"].customTpls().then(function(e){t.customTpls=e.data.data})},loadOptions:function(){var t=this;m["a"].listAll(this.keys).then(function(e){t.options=e.data.data})},handlePublishClick:function(){this.sheetToStage.status="PUBLISHED",this.saveSheet()},handleDraftClick:function(){this.sheetToStage.status="DRAFT",this.saveSheet()},handlerRemoveThumb:function(){this.sheetToStage.thumbnail=null},createOrUpdateSheet:function(t,e,a){var n=this;this.sheetToStage.id?h["a"].update(this.sheetToStage.id,this.sheetToStage,a).then(function(t){n.$log.debug("Updated sheet",t.data.data),e&&e()}):h["a"].create(this.sheetToStage,a).then(function(e){n.$log.debug("Created sheet",e.data.data),t&&t(),n.sheetToStage=e.data.data})},saveSheet:function(){var t=this;this.createOrUpdateSheet(function(){return t.$message.success("页面创建成功")},function(){return t.$message.success("页面更新成功")},!1)},autoSaveSheet:function(){null!=this.sheetToStage.title&&null!=this.sheetToStage.originalContent&&this.createOrUpdateSheet(null,null,!0)},handleSelectSheetThumb:function(t){this.sheetToStage.thumbnail=t.path,this.thumDrawerVisible=!1},autoSaveTimer:function(){var t=this;null==this.timer&&(this.timer=setInterval(function(){t.autoSaveSheet()},15e3))}}},p=f,g=(a("2ffa"),a("17cc")),b=Object(g["a"])(p,n,o,!1,null,"d8269fa2",null);e["default"]=b.exports}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-b6cd2e50.d2c0d717.js b/src/main/resources/admin/js/chunk-b6cd2e50.d2c0d717.js deleted file mode 100644 index 76f5ffda1..000000000 --- a/src/main/resources/admin/js/chunk-b6cd2e50.d2c0d717.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-b6cd2e50"],{"12de":function(t,e,a){"use strict";var n=a("9efd"),o="/api/admin/themes",s={listAll:function(){return Object(n["a"])({url:"".concat(o),method:"get"})},listFiles:function(){return Object(n["a"])({url:"".concat(o,"/files"),method:"get"})},customTpls:function(){return Object(n["a"])({url:"".concat(o,"/files/custom"),method:"get"})},active:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/activation"),method:"post"})},getActivatedTheme:function(){return Object(n["a"])({url:"".concat(o,"/activation"),method:"get"})},delete:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"delete"})},fetchConfiguration:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/configurations"),method:"get"})},fetchSettings:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/settings"),method:"get"})},saveSettings:function(t,e){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/settings"),data:e,method:"post"})},getProperty:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"get"})},upload:function(t,e,a){return Object(n["a"])({url:"".concat(o,"/upload"),timeout:864e4,data:t,onUploadProgress:e,cancelToken:a,method:"post"})},fetching:function(t){return Object(n["a"])({url:"".concat(o,"/fetching"),params:{uri:t},method:"post"})},getContent:function(t){return Object(n["a"])({url:"".concat(o,"/files/content"),params:{path:t},method:"get"})},saveContent:function(t,e){return Object(n["a"])({url:"".concat(o,"/files/content"),params:{path:t},data:e,method:"put"})},reload:function(){return Object(n["a"])({url:"".concat(o,"/reload"),method:"post"})},exists:function(t){return Object(n["a"])({url:"".concat(o,"/activation/template/exists"),method:"get",params:{template:t}})}};e["a"]=s},"2ffa":function(t,e,a){"use strict";var n=a("79e0"),o=a.n(n);o.a},"79e0":function(t,e,a){},ed66:function(t,e,a){"use strict";var n=a("9efd"),o="/api/admin/sheets",s={list:function(){return Object(n["a"])({url:o,method:"get"})},get:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"get"})},create:function(t,e){return Object(n["a"])({url:o,method:"post",data:t,params:{autoSave:e}})},update:function(t,e,a){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"put",data:e,params:{autoSave:a}})},updateStatus:function(t,e){return Object(n["a"])({url:"".concat(o,"/").concat(t,"/").concat(e),method:"put"})},delete:function(t){return Object(n["a"])({url:"".concat(o,"/").concat(t),method:"delete"})},sheetStatus:{PUBLISHED:{color:"green",status:"success",text:"已发布"},DRAFT:{color:"yellow",status:"warning",text:"草稿"},RECYCLE:{color:"red",status:"error",text:"回收站"}}};e["a"]=s},f585:function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=this,a=e.$createElement,n=e._self._c||a;return n("div",{staticClass:"page-header-index-wide"},[n("a-row",{attrs:{gutter:12}},[n("a-col",{attrs:{span:24}},[n("div",{staticStyle:{"margin-bottom":"16px"}},[n("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["title",{rules:[{required:!0,message:"请输入页面标题"}]}],expression:"['title', { rules: [{ required: true, message: '请输入页面标题' }] }]"}],attrs:{size:"large",placeholder:"请输入页面标题"},model:{value:e.sheetToStage.title,callback:function(t){e.$set(e.sheetToStage,"title",t)},expression:"sheetToStage.title"}})],1),n("div",{attrs:{id:"editor"}},[n("mavon-editor",{attrs:{boxShadow:!1,toolbars:e.toolbars,ishljs:!0,autofocus:!1},model:{value:e.sheetToStage.originalContent,callback:function(t){e.$set(e.sheetToStage,"originalContent",t)},expression:"sheetToStage.originalContent"}})],1)]),n("a-col",{attrs:{xl:24,lg:24,md:24,sm:24,xs:24}},[n("a-drawer",{attrs:{title:"页面设置",width:e.isMobile()?"100%":"460",closable:!0,visible:e.sheetSettingVisible},on:{close:function(){return t.sheetSettingVisible=!1}}},[n("div",{staticClass:"post-setting-drawer-content"},[n("div",{style:{marginBottom:"16px"}},[n("h3",{staticClass:"post-setting-drawer-title"},[e._v("基本设置")]),n("div",{staticClass:"post-setting-drawer-item"},[n("a-form",{attrs:{layout:"vertical"}},[n("a-form-item",{attrs:{label:"页面路径:",help:e.options.blog_url+"/s/"+(e.sheetToStage.url?e.sheetToStage.url:"{auto_generate}")}},[n("a-input",{model:{value:e.sheetToStage.url,callback:function(t){e.$set(e.sheetToStage,"url",t)},expression:"sheetToStage.url"}})],1),n("a-form-item",{attrs:{label:"开启评论:"}},[n("a-radio-group",{attrs:{defaultValue:!1},model:{value:e.sheetToStage.disallowComment,callback:function(t){e.$set(e.sheetToStage,"disallowComment",t)},expression:"sheetToStage.disallowComment"}},[n("a-radio",{attrs:{value:!1}},[e._v("开启")]),n("a-radio",{attrs:{value:!0}},[e._v("关闭")])],1)],1),n("a-form-item",{attrs:{label:"自定义模板:"}},[n("a-select",{model:{value:e.sheetToStage.template,callback:function(t){e.$set(e.sheetToStage,"template",t)},expression:"sheetToStage.template"}},[n("a-select-option",{key:"",attrs:{value:""}},[e._v("无")]),e._l(e.customTpls,function(t){return n("a-select-option",{key:t,attrs:{value:t}},[e._v(e._s(t))])})],2)],1)],1)],1)]),n("a-divider"),n("div",{style:{marginBottom:"16px"}},[n("h3",{staticClass:"post-setting-drawer-title"},[e._v("缩略图")]),n("div",{staticClass:"post-setting-drawer-item"},[n("div",{staticClass:"sheet-thum"},[n("img",{staticClass:"img",attrs:{src:e.sheetToStage.thumbnail||"//i.loli.net/2019/05/05/5ccf007c0a01d.png"},on:{click:function(){return t.thumDrawerVisible=!0}}}),n("a-button",{staticClass:"sheet-thum-remove",attrs:{type:"dashed"},on:{click:e.handlerRemoveThumb}},[e._v("移除")])],1)])]),n("a-divider",{staticClass:"divider-transparent"})],1),n("AttachmentSelectDrawer",{attrs:{drawerWidth:460},on:{listenToSelect:e.handleSelectSheetThumb},model:{value:e.thumDrawerVisible,callback:function(t){e.thumDrawerVisible=t},expression:"thumDrawerVisible"}}),n("div",{staticClass:"bottom-control"},[n("a-button",{staticStyle:{marginRight:"8px"},on:{click:e.handleDraftClick}},[e._v("保存草稿")]),n("a-button",{attrs:{type:"primary"},on:{click:e.handlePublishClick}},[e._v("发布")])],1)],1)],1)],1),n("AttachmentDrawer",{model:{value:e.attachmentDrawerVisible,callback:function(t){e.attachmentDrawerVisible=t},expression:"attachmentDrawerVisible"}}),n("footer-tool-bar",{style:{width:e.isSideMenu()&&e.isDesktop()?"calc(100% - "+(e.sidebarOpened?256:80)+"px)":"100%"}},[n("a-button",{attrs:{type:"primary"},on:{click:function(){return t.sheetSettingVisible=!0}}},[e._v("发布")]),n("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"dashed"},on:{click:function(){return t.attachmentDrawerVisible=!0}}},[e._v("附件库")])],1)],1)},o=[],s=(a("612f"),a("6657")),i=a("ed4e"),r=a("3993"),c=a("5a70"),l=a("ac0d"),u=a("2749"),h=(a("cc71"),a("ed66")),d=a("12de"),m=a("482b"),f={components:{mavonEditor:s["mavonEditor"],FooterToolBar:c["a"],AttachmentDrawer:i["a"],AttachmentSelectDrawer:r["a"]},mixins:[l["a"],l["b"]],data:function(){return{toolbars:u["a"],wrapperCol:{xl:{span:24},sm:{span:24},xs:{span:24}},attachmentDrawerVisible:!1,thumDrawerVisible:!1,sheetSettingVisible:!1,customTpls:[],sheetToStage:{},timer:null,options:[],keys:["blog_url"]}},created:function(){this.loadCustomTpls(),this.loadOptions(),clearInterval(this.timer),this.timer=null,this.autoSaveTimer()},destroyed:function(){clearInterval(this.timer),this.timer=null},beforeRouteLeave:function(t,e,a){null!==this.timer&&clearInterval(this.timer),this.autoSaveSheet(),a()},beforeRouteEnter:function(t,e,a){var n=t.query.sheetId;a(function(t){n&&h["a"].get(n).then(function(e){var a=e.data.data;t.sheetToStage=a})})},methods:{loadCustomTpls:function(){var t=this;d["a"].customTpls().then(function(e){t.customTpls=e.data.data})},loadOptions:function(){var t=this;m["a"].listAll(this.keys).then(function(e){t.options=e.data.data})},handlePublishClick:function(){this.sheetToStage.status="PUBLISHED",this.saveSheet()},handleDraftClick:function(){this.sheetToStage.status="DRAFT",this.saveSheet()},handlerRemoveThumb:function(){this.sheetToStage.thumbnail=null},createOrUpdateSheet:function(t,e,a){var n=this;this.sheetToStage.id?h["a"].update(this.sheetToStage.id,this.sheetToStage,a).then(function(t){n.$log.debug("Updated sheet",t.data.data),e&&e()}):h["a"].create(this.sheetToStage,a).then(function(e){n.$log.debug("Created sheet",e.data.data),t&&t(),n.sheetToStage=e.data.data})},saveSheet:function(){var t=this;this.createOrUpdateSheet(function(){return t.$message.success("页面创建成功")},function(){return t.$message.success("页面更新成功")},!1)},autoSaveSheet:function(){null!=this.sheetToStage.title&&null!=this.sheetToStage.originalContent&&this.createOrUpdateSheet(null,null,!0)},handleSelectSheetThumb:function(t){this.sheetToStage.thumbnail=t.path,this.thumDrawerVisible=!1},autoSaveTimer:function(){var t=this;null==this.timer&&(this.timer=setInterval(function(){t.autoSaveSheet()},15e3))}}},p=f,g=(a("2ffa"),a("17cc")),b=Object(g["a"])(p,n,o,!1,null,"d8269fa2",null);e["default"]=b.exports}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-cc47e7d0.30a4457f.js b/src/main/resources/admin/js/chunk-cc47e7d0.30a4457f.js deleted file mode 100644 index e600f5bcc..000000000 --- a/src/main/resources/admin/js/chunk-cc47e7d0.30a4457f.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-cc47e7d0"],{"0bb5":function(t,e,a){},"12de":function(t,e,a){"use strict";var n=a("9efd"),i="/api/admin/themes",o={listAll:function(){return Object(n["a"])({url:"".concat(i),method:"get"})},listFiles:function(){return Object(n["a"])({url:"".concat(i,"/files"),method:"get"})},customTpls:function(){return Object(n["a"])({url:"".concat(i,"/files/custom"),method:"get"})},active:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t,"/activation"),method:"post"})},getActivatedTheme:function(){return Object(n["a"])({url:"".concat(i,"/activation"),method:"get"})},delete:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"delete"})},fetchConfiguration:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t,"/configurations"),method:"get"})},fetchSettings:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t,"/settings"),method:"get"})},saveSettings:function(t,e){return Object(n["a"])({url:"".concat(i,"/").concat(t,"/settings"),data:e,method:"post"})},getProperty:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"get"})},upload:function(t,e,a){return Object(n["a"])({url:"".concat(i,"/upload"),timeout:864e4,data:t,onUploadProgress:e,cancelToken:a,method:"post"})},fetching:function(t){return Object(n["a"])({url:"".concat(i,"/fetching"),params:{uri:t},method:"post"})},getContent:function(t){return Object(n["a"])({url:"".concat(i,"/files/content"),params:{path:t},method:"get"})},saveContent:function(t,e){return Object(n["a"])({url:"".concat(i,"/files/content"),params:{path:t},data:e,method:"put"})},reload:function(){return Object(n["a"])({url:"".concat(i,"/reload"),method:"post"})},exists:function(t){return Object(n["a"])({url:"".concat(i,"/activation/template/exists"),method:"get",params:{template:t}})}};e["a"]=o},"502d":function(t,e,a){"use strict";var n=a("8365"),i=a.n(n);i.a},"5bcf":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("a-drawer",{attrs:{title:"附件详情",width:t.isMobile()?"100%":"460",closable:"",visible:t.visiable,destroyOnClose:""},on:{close:t.onClose}},[a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-col",{attrs:{span:24}},[a("a-skeleton",{attrs:{active:"",loading:t.detailLoading,paragraph:{rows:8}}},[a("div",{staticClass:"attach-detail-img"},[a("img",{attrs:{src:t.attachment.path}})])])],1),a("a-divider"),a("a-col",{attrs:{span:24}},[a("a-skeleton",{attrs:{active:"",loading:t.detailLoading,paragraph:{rows:8}}},[a("a-list",{attrs:{itemLayout:"horizontal"}},[a("a-list-item",[a("a-list-item-meta",[t.editable?a("template",{slot:"description"},[a("a-input",{on:{blur:t.doUpdateAttachment},model:{value:t.attachment.name,callback:function(e){t.$set(t.attachment,"name",e)},expression:"attachment.name"}})],1):a("template",{slot:"description"},[t._v(t._s(t.attachment.name))]),a("span",{attrs:{slot:"title"},slot:"title"},[t._v("\n 附件名:\n "),a("a",{attrs:{href:"javascript:void(0);"}},[a("a-icon",{attrs:{type:"edit"},on:{click:t.handleEditName}})],1)])],2)],1),a("a-list-item",[a("a-list-item-meta",{attrs:{description:t.attachment.mediaType}},[a("span",{attrs:{slot:"title"},slot:"title"},[t._v("附件类型:")])])],1),a("a-list-item",[a("a-list-item-meta",{attrs:{description:t.attachment.typeProperty}},[a("span",{attrs:{slot:"title"},slot:"title"},[t._v("存储位置:")])])],1),a("a-list-item",[a("a-list-item-meta",[a("template",{slot:"description"},[t._v("\n "+t._s(t._f("fileSizeFormat")(t.attachment.size))+"\n ")]),a("span",{attrs:{slot:"title"},slot:"title"},[t._v("附件大小:")])],2)],1),a("a-list-item",[a("a-list-item-meta",{attrs:{description:t.attachment.height+"x"+t.attachment.width}},[a("span",{attrs:{slot:"title"},slot:"title"},[t._v("图片尺寸:")])])],1),a("a-list-item",[a("a-list-item-meta",[a("template",{slot:"description"},[t._v("\n "+t._s(t._f("moment")(t.attachment.createTime))+"\n ")]),a("span",{attrs:{slot:"title"},slot:"title"},[t._v("上传日期:")])],2)],1),a("a-list-item",[a("a-list-item-meta",{attrs:{description:t.attachment.path}},[a("span",{attrs:{slot:"title"},slot:"title"},[t._v("\n 普通链接:\n "),a("a",{attrs:{href:"javascript:void(0);"}},[a("a-icon",{attrs:{type:"copy"},on:{click:t.handleCopyNormalLink}})],1)])])],1),a("a-list-item",[a("a-list-item-meta",[a("span",{attrs:{slot:"description"},slot:"description"},[t._v("!["+t._s(t.attachment.name)+"]("+t._s(t.attachment.path)+")")]),a("span",{attrs:{slot:"title"},slot:"title"},[t._v("\n Markdown 格式:\n "),a("a",{attrs:{href:"javascript:void(0);"}},[a("a-icon",{attrs:{type:"copy"},on:{click:t.handleCopyMarkdownLink}})],1)])])],1)],1)],1)],1)],1),a("a-divider",{staticClass:"divider-transparent"}),a("div",{staticClass:"bottom-control"},[t.addToPhoto?a("a-popconfirm",{attrs:{title:"你确定要添加到图库?",okText:"确定",cancelText:"取消"},on:{confirm:t.handleAddToPhoto}},[a("a-button",{staticStyle:{marginRight:"8px"},attrs:{type:"dashed"}},[t._v("添加到图库")])],1):t._e(),a("a-popconfirm",{attrs:{title:"你确定要删除该附件?",okText:"确定",cancelText:"取消"},on:{confirm:t.handleDeleteAttachment}},[a("a-button",{attrs:{type:"danger"}},[t._v("删除")])],1)],1)],1)},i=[],o=(a("3a23"),a("ac0d")),s=a("a796"),l=a("975e"),r={name:"AttachmentDetailDrawer",mixins:[o["a"],o["b"]],data:function(){return{detailLoading:!0,editable:!1,photo:{}}},model:{prop:"visiable",event:"close"},props:{attachment:{type:Object,required:!0},addToPhoto:{type:Boolean,required:!1,default:!1},visiable:{type:Boolean,required:!1,default:!0}},created:function(){this.loadSkeleton()},watch:{visiable:function(t,e){this.$log.debug("old value",e),this.$log.debug("new value",t),t&&this.loadSkeleton()}},methods:{loadSkeleton:function(){var t=this;this.detailLoading=!0,setTimeout(function(){t.detailLoading=!1},500)},handleDeleteAttachment:function(){var t=this;s["a"].delete(this.attachment.id).then(function(e){t.$message.success("删除成功!"),t.$emit("delete",t.attachment),t.onClose()})},handleEditName:function(){this.editable=!this.editable},doUpdateAttachment:function(){var t=this;s["a"].update(this.attachment.id,this.attachment).then(function(e){t.$log.debug("Updated attachment",e.data.data),t.$message.success("附件修改成功")}),this.editable=!1},handleCopyNormalLink:function(){var t=this,e="".concat(this.attachment.path);this.$copyText(e).then(function(e){console.log("copy",e),t.$message.success("复制成功")}).catch(function(e){console.log("copy.err",e),t.$message.error("复制失败")})},handleCopyMarkdownLink:function(){var t=this,e="![".concat(this.attachment.name,"](").concat(this.attachment.path,")");this.$copyText(e).then(function(e){console.log("copy",e),t.$message.success("复制成功")}).catch(function(e){console.log("copy.err",e),t.$message.error("复制失败")})},handleAddToPhoto:function(){var t=this;this.photo["name"]=this.attachment.name,this.photo["thumbnail"]=this.attachment.thumbPath,this.photo["url"]=this.attachment.path,this.photo["takeTime"]=(new Date).getTime(),l["a"].create(this.photo).then(function(e){t.$message.success("添加成功!")})},onClose:function(){this.$emit("close",!1)}}},c=r,d=(a("b3a7"),a("17cc")),u=Object(d["a"])(c,n,i,!1,null,null,null);e["a"]=u.exports},"5f9f":function(t,e,a){"use strict";var n=a("0bb5"),i=a.n(n);i.a},"79e7":function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=this,a=e.$createElement,n=e._self._c||a;return n("div",{staticClass:"page-header-index-wide"},[n("a-row",{attrs:{gutter:12,type:"flex",align:"middle"}},[n("a-col",{attrs:{span:24}},[n("a-list",{attrs:{grid:{gutter:12,xs:1,sm:1,md:2,lg:4,xl:4,xxl:4},dataSource:e.themes,loading:e.themeLoading},scopedSlots:e._u([{key:"renderItem",fn:function(t,a){return n("a-list-item",{key:a},[n("a-card",{attrs:{hoverable:"",title:t.name,bodyStyle:{padding:0}}},[n("div",{staticClass:"theme-thumb"},[n("img",{attrs:{alt:t.name,src:t.screenshots}})]),n("template",{staticClass:"ant-card-actions",slot:"actions"},[t.activated?n("div",[n("a-icon",{attrs:{type:"unlock",theme:"twoTone"}}),e._v("已启用\n ")],1):n("div",{on:{click:function(a){return e.handleActivateClick(t)}}},[n("a-icon",{attrs:{type:"lock"}}),e._v("启用\n ")],1),n("div",{on:{click:function(a){return e.handleEditClick(t)}}},[n("a-icon",{attrs:{type:"setting"}}),e._v("设置\n ")],1),n("a-dropdown",{attrs:{placement:"topCenter"}},[n("a",{staticClass:"ant-dropdown-link",attrs:{href:"#"}},[n("a-icon",{attrs:{type:"ellipsis"}}),e._v("更多\n ")],1),n("a-menu",{attrs:{slot:"overlay"},slot:"overlay"},[n("a-menu-item",{key:1,attrs:{disabled:t.activated}},[t.activated?n("span",[n("a-icon",{attrs:{type:"delete"}}),e._v("删除\n ")],1):n("a-popconfirm",{attrs:{title:"确定删除【"+t.name+"】主题?",okText:"确定",cancelText:"取消"},on:{confirm:function(a){return e.handleDeleteTheme(t.id)}}},[n("a-icon",{attrs:{type:"delete"}}),e._v("删除\n ")],1)],1)],1)],1)],1)],2)],1)}}])})],1)],1),e.themeProperty?n("a-drawer",{attrs:{title:e.themeProperty.name+" 主题设置",width:"100%",closable:"",visible:e.visible,destroyOnClose:""},on:{close:e.onClose}},[n("a-row",{attrs:{gutter:12,type:"flex"}},[n("a-col",{attrs:{xl:12,lg:12,md:12,sm:24,xs:24}},[n("a-skeleton",{attrs:{active:"",loading:e.optionLoading,paragraph:{rows:10}}},[n("a-card",{attrs:{bordered:!1}},[n("img",{attrs:{slot:"cover",alt:e.themeProperty.name,src:e.themeProperty.screenshots},slot:"cover"}),n("a-card-meta",{attrs:{description:e.themeProperty.description}},[n("template",{slot:"title"},[n("a",{attrs:{href:e.themeProperty.author.website,target:"_blank"}},[e._v(e._s(e.themeProperty.author.name))])]),e.themeProperty.logo?n("a-avatar",{attrs:{slot:"avatar",src:e.themeProperty.logo,size:"large"},slot:"avatar"}):n("a-avatar",{attrs:{slot:"avatar",size:"large"},slot:"avatar"},[e._v(e._s(e.themeProperty.author.name))])],2)],1)],1)],1),n("a-col",{staticStyle:{"padding-bottom":"50px"},attrs:{xl:12,lg:12,md:12,sm:24,xs:24}},[n("a-skeleton",{attrs:{active:"",loading:e.optionLoading,paragraph:{rows:20}}},[n("div",{staticClass:"card-container"},[n("a-tabs",{attrs:{type:"card",defaultActiveKey:"0"}},e._l(e.themeConfiguration,function(t,a){return n("a-tab-pane",{key:a.toString(),attrs:{tab:t.label}},[n("a-form",{attrs:{layout:"vertical"}},e._l(t.items,function(t,a){return n("a-form-item",{key:a,attrs:{label:t.label+":","wrapper-col":e.wrapperCol}},["TEXT"==t.type?n("a-input",{attrs:{defaultValue:t.defaultValue},model:{value:e.themeSettings[t.name],callback:function(a){e.$set(e.themeSettings,t.name,a)},expression:"themeSettings[item.name]"}}):"TEXTAREA"==t.type?n("a-input",{attrs:{type:"textarea",autosize:{minRows:5}},model:{value:e.themeSettings[t.name],callback:function(a){e.$set(e.themeSettings,t.name,a)},expression:"themeSettings[item.name]"}}):"RADIO"==t.type?n("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["radio-group"],expression:"['radio-group']"}],attrs:{defaultValue:t.defaultValue},model:{value:e.themeSettings[t.name],callback:function(a){e.$set(e.themeSettings,t.name,a)},expression:"themeSettings[item.name]"}},e._l(t.options,function(t,a){return n("a-radio",{key:a,attrs:{value:t.value}},[e._v(e._s(t.label))])}),1):"SELECT"==t.type?n("a-select",{attrs:{defaultValue:t.defaultValue},model:{value:e.themeSettings[t.name],callback:function(a){e.$set(e.themeSettings,t.name,a)},expression:"themeSettings[item.name]"}},e._l(t.options,function(t){return n("a-select-option",{key:t.value,attrs:{value:t.value}},[e._v(e._s(t.label))])}),1):e._e()],1)}),1)],1)}),1)],1)])],1)],1),n("footer-tool-bar",{style:{width:e.isSideMenu()&&e.isDesktop()?"calc(100% - "+(e.sidebarOpened?256:80)+"px)":"100%"}},[n("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveSettings}},[e._v("保存")]),n("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"dashed"},on:{click:function(){return t.attachmentDrawerVisible=!0}}},[e._v("附件库")])],1),n("AttachmentDrawer",{model:{value:e.attachmentDrawerVisible,callback:function(t){e.attachmentDrawerVisible=t},expression:"attachmentDrawerVisible"}})],1):e._e(),n("div",{staticClass:"upload-button"},[n("a-dropdown",{attrs:{placement:"topLeft",trigger:["click"]}},[n("a-button",{attrs:{type:"primary",shape:"circle",icon:"plus",size:"large"}}),n("a-menu",{attrs:{slot:"overlay"},slot:"overlay"},[n("a-menu-item",[n("a",{attrs:{rel:"noopener noreferrer",href:"javascript:void(0);"},on:{click:function(){return t.uploadVisible=!0}}},[e._v("安装主题")])]),n("a-menu-item",[n("a",{attrs:{rel:"noopener noreferrer",href:"javascript:void(0);"},on:{click:e.handleReload}},[e._v("刷新列表")])])],1)],1)],1),n("a-modal",{attrs:{title:"安装主题",footer:null,bodyStyle:{padding:"0 24px 24px"}},model:{value:e.uploadVisible,callback:function(t){e.uploadVisible=t},expression:"uploadVisible"}},[n("div",{staticClass:"custom-tab-wrapper"},[n("a-tabs",[n("a-tab-pane",{key:"1",attrs:{tab:"本地上传"}},[n("upload",{attrs:{name:"file",multiple:"",accept:"application/zip",uploadHandler:e.uploadHandler},on:{change:e.handleChange,success:e.handleUploadSuccess}},[n("p",{staticClass:"ant-upload-drag-icon"},[n("a-icon",{attrs:{type:"inbox"}})],1),n("p",{staticClass:"ant-upload-text"},[e._v("点击选择主题或将主题拖拽到此处")]),n("p",{staticClass:"ant-upload-hint"},[e._v("支持单个或批量上传,仅支持 ZIP 格式的文件")])])],1),n("a-tab-pane",{key:"2",attrs:{tab:"远程拉取"}},[n("a-form",{attrs:{layout:"vertical"}},[n("a-form-item",{attrs:{label:"远程地址:"}},[n("a-input",{model:{value:e.fetchingUrl,callback:function(t){e.fetchingUrl=t},expression:"fetchingUrl"}})],1),n("a-form-item",[n("a-button",{attrs:{type:"primary"},on:{click:e.handleFetching}},[e._v("确定")])],1)],1)],1)],1)],1)])],1)},i=[],o=(a("3a23"),a("7415"),a("ed4e")),s=a("5a70"),l=a("ac0d"),r=a("12de"),c={components:{AttachmentDrawer:o["a"],FooterToolBar:s["a"]},mixins:[l["a"],l["b"]],data:function(){return{themeLoading:!1,optionLoading:!0,uploadVisible:!1,wrapperCol:{xl:{span:12},lg:{span:12},sm:{span:24},xs:{span:24}},attachmentDrawerVisible:!1,themes:[],visible:!1,themeConfiguration:null,themeSettings:[],themeProperty:null,fetchingUrl:null,uploadHandler:r["a"].upload}},computed:{activatedTheme:function(){return this.themes.find(function(t){return t.activated})}},created:function(){this.loadThemes()},destroyed:function(){this.visible&&(this.visible=!1)},beforeRouteLeave:function(t,e,a){this.visible&&(this.visible=!1),a()},methods:{loadThemes:function(){var t=this;this.themeLoading=!0,r["a"].listAll().then(function(e){t.themes=e.data.data,t.themeLoading=!1})},settingDrawer:function(t){var e=this;this.visible=!0,this.optionLoading=!0,this.themeProperty=t,r["a"].fetchConfiguration(t.id).then(function(a){e.themeConfiguration=a.data.data,r["a"].fetchSettings(t.id).then(function(t){e.themeSettings=t.data.data,setTimeout(function(){e.visible=!0,e.optionLoading=!1},300)})})},activeTheme:function(t){var e=this;r["a"].active(t).then(function(t){e.$message.success("设置成功!"),e.loadThemes()})},handleDeleteTheme:function(t){var e=this;r["a"].delete(t).then(function(t){e.$message.success("删除成功!"),e.loadThemes()})},handleSaveSettings:function(){var t=this;r["a"].saveSettings(this.themeProperty.id,this.themeSettings).then(function(e){t.$message.success("保存成功!")})},onClose:function(){this.visible=!1,this.optionLoading=!1,this.themeConfiguration=null,this.themeProperty=null},handleChange:function(t){var e=t.file.status;"done"===e?this.$message.success("".concat(t.file.name," 主题上传成功")):"error"===e&&this.$message.error("".concat(t.file.name," 主题上传失败"))},handleUploadSuccess:function(){this.loadThemes()},handleEllipsisClick:function(t){this.$log.debug("Ellipsis clicked",t)},handleEditClick:function(t){this.settingDrawer(t)},handleActivateClick:function(t){this.activeTheme(t.id)},handleFetching:function(){var t=this;r["a"].fetching(this.fetchingUrl).then(function(e){t.$message.success("上传成功"),t.loadThemes()})},handleReload:function(){var t=this;r["a"].reload().then(function(e){t.loadThemes(),t.$message.success("刷新成功!")})}}},d=c,u=(a("502d"),a("17cc")),h=Object(u["a"])(d,n,i,!1,null,"6d086f28",null);e["default"]=h.exports},8365:function(t,e,a){},9298:function(t,e,a){},"975e":function(t,e,a){"use strict";var n=a("9efd"),i="/api/admin/photos",o={query:function(t){return Object(n["a"])({url:i,params:t,method:"get"})},create:function(t){return Object(n["a"])({url:i,data:t,method:"post"})},update:function(t,e){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"put",data:e})},delete:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"delete"})}};e["a"]=o},a796:function(t,e,a){"use strict";var n=a("7f43"),i=a.n(n),o=a("9efd"),s="/api/admin/attachments",l={query:function(t){return Object(o["a"])({url:s,params:t,method:"get"})},get:function(t){return Object(o["a"])({url:"".concat(s,"/").concat(t),method:"get"})},delete:function(t){return Object(o["a"])({url:"".concat(s,"/").concat(t),method:"delete"})},update:function(t,e){return Object(o["a"])({url:"".concat(s,"/").concat(t),method:"put",data:e})},getMediaTypes:function(){return Object(o["a"])({url:"".concat(s,"/media_types"),method:"get"})}};l.CancelToken=i.a.CancelToken,l.isCancel=i.a.isCancel,l.upload=function(t,e,a){return Object(o["a"])({url:"".concat(s,"/upload"),timeout:864e4,data:t,onUploadProgress:e,cancelToken:a,method:"post"})},l.type={LOCAL:{type:"local",text:"本地"},SMMS:{type:"smms",text:"SM.MS"},UPYUN:{type:"upyun",text:"又拍云"},QNYUN:{type:"qnyun",text:"七牛云"},ALIYUN:{type:"aliyun",text:"阿里云"}},e["a"]=l},b3a7:function(t,e,a){"use strict";var n=a("9298"),i=a.n(n);i.a},ed4e:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("a-drawer",{attrs:{title:"附件库",width:t.isMobile()?"100%":"460",closable:"",visible:t.visiable,destroyOnClose:""},on:{close:t.onClose}},[a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-input-search",{attrs:{placeholder:"搜索附件",enterButton:""},on:{search:function(e){return t.loadAttachments(!0)}},model:{value:t.queryParam.keyword,callback:function(e){t.$set(t.queryParam,"keyword",e)},expression:"queryParam.keyword"}})],1),a("a-divider"),a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-skeleton",{attrs:{active:"",loading:t.skeletonLoading,paragraph:{rows:18}}},[a("a-col",{attrs:{span:24}},t._l(t.formattedDatas,function(e,n){return a("div",{key:n,staticClass:"attach-item",on:{click:function(a){return t.handleShowDetailDrawer(e)}}},[a("img",{attrs:{src:e.thumbPath}})])}),0)],1)],1),a("a-divider"),a("div",{staticClass:"page-wrapper"},[a("a-pagination",{attrs:{defaultPageSize:t.pagination.size,total:t.pagination.total},on:{change:t.handlePaginationChange}})],1),t.selectedAttachment?a("AttachmentDetailDrawer",{attrs:{attachment:t.selectedAttachment},on:{delete:t.handleDelete},model:{value:t.detailVisiable,callback:function(e){t.detailVisiable=e},expression:"detailVisiable"}}):t._e(),a("a-divider",{staticClass:"divider-transparent"}),a("div",{staticClass:"bottom-control"},[a("a-button",{attrs:{type:"primary"},on:{click:t.handleShowUploadModal}},[t._v("上传附件")])],1)],1),a("a-modal",{attrs:{title:"上传附件",footer:null},model:{value:t.uploadVisible,callback:function(e){t.uploadVisible=e},expression:"uploadVisible"}},[a("upload",{attrs:{name:"file",multiple:"",accept:"image/*",uploadHandler:t.attachmentUploadHandler},on:{success:t.handleAttachmentUploadSuccess}},[a("p",{staticClass:"ant-upload-drag-icon"},[a("a-icon",{attrs:{type:"inbox"}})],1),a("p",{staticClass:"ant-upload-text"},[t._v("点击选择文件或将文件拖拽到此处")]),a("p",{staticClass:"ant-upload-hint"},[t._v("支持单个或批量上传")])])],1)],1)},i=[],o=(a("ab56"),a("ac0d")),s=a("a796"),l=a("5bcf"),r={name:"AttachmentDrawer",mixins:[o["a"],o["b"]],components:{AttachmentDetailDrawer:l["a"]},model:{prop:"visiable",event:"close"},props:{visiable:{type:Boolean,required:!1,default:!1}},data:function(){return{attachmentType:s["a"].type,detailVisiable:!1,attachmentDrawerVisible:!1,uploadVisible:!1,skeletonLoading:!0,pagination:{page:1,size:12,sort:""},queryParam:{page:0,size:18,sort:null,keyword:null},attachments:[],selectedAttachment:{},attachmentUploadHandler:s["a"].upload}},computed:{formattedDatas:function(){var t=this;return this.attachments.map(function(e){return e.typeProperty=t.attachmentType[e.type],e})}},created:function(){this.loadSkeleton(),this.loadAttachments()},watch:{visiable:function(t,e){t&&this.loadSkeleton()}},methods:{loadSkeleton:function(){var t=this;this.skeletonLoading=!0,setTimeout(function(){t.skeletonLoading=!1},500)},handleShowUploadModal:function(){this.uploadVisible=!0},handleShowDetailDrawer:function(t){this.selectedAttachment=t,this.$log.debug("Show detail of",t),this.detailVisiable=!0},loadAttachments:function(t){var e=this;this.queryParam.page=this.pagination.page-1,this.queryParam.size=this.pagination.size,this.queryParam.sort=this.pagination.sort,t&&(this.queryParam.page=0),s["a"].query(this.queryParam).then(function(t){e.attachments=t.data.data.content,e.pagination.total=t.data.data.total})},handlePaginationChange:function(t,e){this.pagination.page=t,this.pagination.size=e,this.loadAttachments()},handleAttachmentUploadSuccess:function(){this.$message.success("上传成功"),this.loadAttachments()},handleDelete:function(){this.loadAttachments()},onClose:function(){this.$emit("close",!1)}}},c=r,d=(a("5f9f"),a("17cc")),u=Object(d["a"])(c,n,i,!1,null,null,null);e["a"]=u.exports}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-92a6af22.b84ae833.js b/src/main/resources/admin/js/chunk-edd856c6.20633ba8.js similarity index 99% rename from src/main/resources/admin/js/chunk-92a6af22.b84ae833.js rename to src/main/resources/admin/js/chunk-edd856c6.20633ba8.js index 5e40434d0..af9343d24 100644 --- a/src/main/resources/admin/js/chunk-92a6af22.b84ae833.js +++ b/src/main/resources/admin/js/chunk-edd856c6.20633ba8.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-92a6af22"],{"00dd":function(t,a,e){"use strict";var s=e("0295"),n=e.n(s);n.a},"0295":function(t,a,e){},1325:function(t,a,e){},"307b":function(t,a,e){"use strict";var s=e("1325"),n=e.n(s);n.a},3993:function(t,a,e){"use strict";var s=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",[e("a-drawer",{attrs:{title:t.title,width:t.isMobile()?"100%":t.drawerWidth,closable:"",visible:t.visiable,destroyOnClose:""},on:{close:t.onClose}},[e("a-row",{attrs:{type:"flex",align:"middle"}},[e("a-input-search",{attrs:{placeholder:"搜索附件",enterButton:""}})],1),e("a-divider"),e("a-row",{attrs:{type:"flex",align:"middle"}},[e("a-skeleton",{attrs:{active:"",loading:t.skeletonLoading,paragraph:{rows:18}}},[e("a-col",{attrs:{span:24}},t._l(t.attachments,function(a,s){return e("div",{key:s,staticClass:"attach-item",on:{click:function(e){return t.handleSelectAttachment(a)}}},[e("img",{attrs:{src:a.thumbPath}})])}),0)],1)],1),e("a-divider"),e("div",{staticClass:"page-wrapper"},[e("a-pagination",{attrs:{defaultPageSize:t.pagination.size,total:t.pagination.total},on:{change:t.handlePaginationChange}})],1),e("a-divider",{staticClass:"divider-transparent"}),e("div",{staticClass:"bottom-control"},[e("a-button",{attrs:{type:"primary"},on:{click:t.handleShowUploadModal}},[t._v("上传附件")])],1)],1),e("a-modal",{attrs:{title:"上传附件",footer:null},model:{value:t.uploadVisible,callback:function(a){t.uploadVisible=a},expression:"uploadVisible"}},[e("upload",{attrs:{name:"file",multiple:"",accept:"image/*",uploadHandler:t.attachmentUploadHandler},on:{success:t.handleAttachmentUploadSuccess}},[e("p",{staticClass:"ant-upload-drag-icon"},[e("a-icon",{attrs:{type:"inbox"}})],1),e("p",{staticClass:"ant-upload-text"},[t._v("点击选择文件或将文件拖拽到此处")]),e("p",{staticClass:"ant-upload-hint"},[t._v("支持单个或批量上传")])])],1)],1)},n=[],o=(e("b06f"),e("ac0d")),i=e("a796"),r={name:"AttachmentSelectDrawer",mixins:[o["a"],o["b"]],model:{prop:"visiable",event:"close"},props:{visiable:{type:Boolean,required:!1,default:!1},drawerWidth:{type:Number,required:!1,default:460},title:{type:String,required:!1,default:"选择附件"}},data:function(){return{uploadVisible:!1,skeletonLoading:!0,pagination:{page:1,size:12,sort:""},attachments:[],attachmentUploadHandler:i["a"].upload}},created:function(){this.loadSkeleton(),this.loadAttachments()},watch:{visiable:function(t,a){t&&this.loadSkeleton()}},methods:{loadSkeleton:function(){var t=this;this.skeletonLoading=!0,setTimeout(function(){t.skeletonLoading=!1},500)},handleShowUploadModal:function(){this.uploadVisible=!0},loadAttachments:function(){var t=this,a=Object.assign({},this.pagination);a.page--,i["a"].query(a).then(function(a){t.attachments=a.data.data.content,t.pagination.total=a.data.data.total})},handleSelectAttachment:function(t){this.$emit("listenToSelect",t)},handlePaginationChange:function(t,a){this.pagination.page=t,this.pagination.size=a,this.loadAttachments()},handleAttachmentUploadSuccess:function(){this.$message.success("上传成功"),this.loadAttachments()},handleDelete:function(){this.loadAttachments()},onClose:function(){this.$emit("close",!1)}}},l=r,c=(e("307b"),e("17cc")),d=Object(c["a"])(l,s,n,!1,null,null,null);a["a"]=d.exports},"7c54":function(t,a,e){"use strict";e.r(a);var s=function(){var t=this,a=this,e=a.$createElement,s=a._self._c||e;return s("div",{staticClass:"page-header-index-wide page-header-wrapper-grid-content-main"},[s("a-row",{attrs:{gutter:12}},[s("a-col",{style:{"padding-bottom":"12px"},attrs:{lg:10,md:24}},[s("a-card",{attrs:{bordered:!1}},[s("div",{staticClass:"profile-center-avatarHolder"},[s("a-tooltip",{attrs:{placement:"right",trigger:["hover"],title:"点击可修改头像"}},[s("template",{slot:"title"},[s("span",[a._v("prompt text")])]),s("div",{staticClass:"avatar"},[s("img",{attrs:{src:a.user.avatar||"https://gravatar.loli.net/avatar/?s=256&d=mm"},on:{click:function(){return t.attachmentDrawerVisible=!0}}})])],2),s("div",{staticClass:"username"},[a._v(a._s(a.user.nickname))]),s("div",{staticClass:"bio"},[a._v(a._s(a.user.description))])],1),s("div",{staticClass:"profile-center-detail"},[s("p",[s("a-icon",{attrs:{type:"link"}}),s("a",{attrs:{href:a.options.blog_url,target:"method"}},[a._v(a._s(a.options.blog_url))])],1),s("p",[s("a-icon",{attrs:{type:"mail"}}),a._v(a._s(a.user.email)+"\n ")],1),s("p",[s("a-icon",{attrs:{type:"calendar"}}),a._v(a._s(a.counts.establishDays||0)+" 天\n ")],1)]),s("a-divider"),s("div",{staticClass:"general-profile"},[s("a-list",{attrs:{loading:a.countsLoading,itemLayout:"horizontal"}},[s("a-list-item",[a._v("累计发表了 "+a._s(a.counts.postCount||0)+" 篇文章。")]),s("a-list-item",[a._v("累计创建了 "+a._s(a.counts.linkCount||0)+" 个标签。")]),s("a-list-item",[a._v("累计获得了 "+a._s(a.counts.commentCount||0)+" 条评论。")]),s("a-list-item",[a._v("累计添加了 "+a._s(a.counts.linkCount||0)+" 个友链。")]),s("a-list-item",[a._v("文章总访问 "+a._s(a.counts.visitCount||0)+" 次。")]),s("a-list-item")],1)],1)],1)],1),s("a-col",{style:{"padding-bottom":"12px"},attrs:{lg:14,md:24}},[s("a-card",{attrs:{bodyStyle:{padding:"0"},bordered:!1,title:"个人资料"}},[s("div",{staticClass:"card-container"},[s("a-tabs",{attrs:{type:"card"}},[s("a-tab-pane",{key:"1"},[s("span",{attrs:{slot:"tab"},slot:"tab"},[s("a-icon",{attrs:{type:"idcard"}}),a._v("基本资料\n ")],1),s("a-form",{attrs:{layout:"vertical"}},[s("a-form-item",{attrs:{label:"用户名:"}},[s("a-input",{model:{value:a.user.username,callback:function(t){a.$set(a.user,"username",t)},expression:"user.username"}})],1),s("a-form-item",{attrs:{label:"昵称:"}},[s("a-input",{model:{value:a.user.nickname,callback:function(t){a.$set(a.user,"nickname",t)},expression:"user.nickname"}})],1),s("a-form-item",{attrs:{label:"邮箱:"}},[s("a-input",{model:{value:a.user.email,callback:function(t){a.$set(a.user,"email",t)},expression:"user.email"}})],1),s("a-form-item",{attrs:{label:"个人说明:"}},[s("a-input",{attrs:{autosize:{minRows:5},type:"textarea"},model:{value:a.user.description,callback:function(t){a.$set(a.user,"description",t)},expression:"user.description"}})],1),s("a-form-item",[s("a-button",{attrs:{type:"primary"},on:{click:a.handleUpdateProfile}},[a._v("保存")])],1)],1)],1),s("a-tab-pane",{key:"2"},[s("span",{attrs:{slot:"tab"},slot:"tab"},[s("a-icon",{attrs:{type:"lock"}}),a._v("密码\n ")],1),s("a-form",{attrs:{layout:"vertical"}},[s("a-form-item",{attrs:{label:"原密码:"}},[s("a-input",{attrs:{type:"password"},model:{value:a.passwordParam.oldPassword,callback:function(t){a.$set(a.passwordParam,"oldPassword",t)},expression:"passwordParam.oldPassword"}})],1),s("a-form-item",{attrs:{label:"新密码:"}},[s("a-input",{attrs:{type:"password"},model:{value:a.passwordParam.newPassword,callback:function(t){a.$set(a.passwordParam,"newPassword",t)},expression:"passwordParam.newPassword"}})],1),s("a-form-item",{attrs:{label:"确认密码:"}},[s("a-input",{attrs:{type:"password"},model:{value:a.passwordParam.confirmPassword,callback:function(t){a.$set(a.passwordParam,"confirmPassword",t)},expression:"passwordParam.confirmPassword"}})],1),s("a-form-item",[s("a-button",{attrs:{disabled:a.passwordUpdateButtonDisabled,type:"primary"},on:{click:a.handleUpdatePassword}},[a._v("确认更改")])],1)],1)],1)],1)],1)])],1)],1),s("AttachmentSelectDrawer",{attrs:{title:"选择头像"},on:{listenToSelect:a.handleSelectAvatar},model:{value:a.attachmentDrawerVisible,callback:function(t){a.attachmentDrawerVisible=t},expression:"attachmentDrawerVisible"}})],1)},n=[],o=(e("612f"),e("3556")),i=e("3993"),r=e("c24f"),l=e("50fc"),c=e("482b"),d=e("591a"),u={components:{AttachmentSelectDrawer:i["a"]},data:function(){return{countsLoading:!0,attachmentDrawerVisible:!1,user:{},counts:{},passwordParam:{oldPassword:null,newPassword:null,confirmPassword:null},attachment:{},options:[],keys:["blog_url"]}},computed:{passwordUpdateButtonDisabled:function(){return!(this.passwordParam.oldPassword&&this.passwordParam.newPassword)}},created:function(){this.loadUser(),this.getCounts(),this.loadOptions()},methods:Object(o["a"])({},Object(d["d"])({setUser:"SET_USER"}),{loadUser:function(){var t=this;r["a"].getProfile().then(function(a){t.user=a.data.data,t.profileLoading=!1})},loadOptions:function(){var t=this;c["a"].listAll(this.keys).then(function(a){t.options=a.data.data})},getCounts:function(){var t=this;l["a"].counts().then(function(a){t.counts=a.data.data,t.countsLoading=!1})},handleUpdatePassword:function(){this.passwordParam.newPassword===this.passwordParam.confirmPassword?r["a"].updatePassword(this.passwordParam.oldPassword,this.passwordParam.newPassword).then(function(t){}):this.$message.error("确认密码和新密码不匹配!")},handleUpdateProfile:function(){var t=this;r["a"].updateProfile(this.user).then(function(a){t.user=a.data.data,t.setUser(Object.assign({},t.user)),t.$message.success("资料更新成功!")})},handleSelectAvatar:function(t){this.user.avatar=t.path,this.attachmentDrawerVisible=!1}})},p=u,m=(e("00dd"),e("17cc")),h=Object(m["a"])(p,s,n,!1,null,"f7b75946",null);a["default"]=h.exports},a796:function(t,a,e){"use strict";var s=e("7f43"),n=e.n(s),o=e("9efd"),i="/api/admin/attachments",r={query:function(t){return Object(o["a"])({url:i,params:t,method:"get"})},get:function(t){return Object(o["a"])({url:"".concat(i,"/").concat(t),method:"get"})},delete:function(t){return Object(o["a"])({url:"".concat(i,"/").concat(t),method:"delete"})},update:function(t,a){return Object(o["a"])({url:"".concat(i,"/").concat(t),method:"put",data:a})},getMediaTypes:function(){return Object(o["a"])({url:"".concat(i,"/media_types"),method:"get"})}};r.CancelToken=n.a.CancelToken,r.isCancel=n.a.isCancel,r.upload=function(t,a,e){return Object(o["a"])({url:"".concat(i,"/upload"),timeout:864e4,data:t,onUploadProgress:a,cancelToken:e,method:"post"})},r.type={LOCAL:{type:"local",text:"本地"},SMMS:{type:"smms",text:"SM.MS"},UPYUN:{type:"upyun",text:"又拍云"},QNYUN:{type:"qnyun",text:"七牛云"},ALIYUN:{type:"aliyun",text:"阿里云"}},a["a"]=r}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-edd856c6"],{"00dd":function(t,a,e){"use strict";var s=e("0295"),n=e.n(s);n.a},"0295":function(t,a,e){},1325:function(t,a,e){},"307b":function(t,a,e){"use strict";var s=e("1325"),n=e.n(s);n.a},3993:function(t,a,e){"use strict";var s=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",[e("a-drawer",{attrs:{title:t.title,width:t.isMobile()?"100%":t.drawerWidth,closable:"",visible:t.visiable,destroyOnClose:""},on:{close:t.onClose}},[e("a-row",{attrs:{type:"flex",align:"middle"}},[e("a-input-search",{attrs:{placeholder:"搜索附件",enterButton:""}})],1),e("a-divider"),e("a-row",{attrs:{type:"flex",align:"middle"}},[e("a-skeleton",{attrs:{active:"",loading:t.skeletonLoading,paragraph:{rows:18}}},[e("a-col",{attrs:{span:24}},t._l(t.attachments,function(a,s){return e("div",{key:s,staticClass:"attach-item",on:{click:function(e){return t.handleSelectAttachment(a)}}},[e("img",{attrs:{src:a.thumbPath}})])}),0)],1)],1),e("a-divider"),e("div",{staticClass:"page-wrapper"},[e("a-pagination",{attrs:{defaultPageSize:t.pagination.size,total:t.pagination.total},on:{change:t.handlePaginationChange}})],1),e("a-divider",{staticClass:"divider-transparent"}),e("div",{staticClass:"bottom-control"},[e("a-button",{attrs:{type:"primary"},on:{click:t.handleShowUploadModal}},[t._v("上传附件")])],1)],1),e("a-modal",{attrs:{title:"上传附件",footer:null},model:{value:t.uploadVisible,callback:function(a){t.uploadVisible=a},expression:"uploadVisible"}},[e("upload",{attrs:{name:"file",multiple:"",accept:"image/*",uploadHandler:t.attachmentUploadHandler},on:{success:t.handleAttachmentUploadSuccess}},[e("p",{staticClass:"ant-upload-drag-icon"},[e("a-icon",{attrs:{type:"inbox"}})],1),e("p",{staticClass:"ant-upload-text"},[t._v("点击选择文件或将文件拖拽到此处")]),e("p",{staticClass:"ant-upload-hint"},[t._v("支持单个或批量上传")])])],1)],1)},n=[],o=(e("b06f"),e("ac0d")),i=e("a796"),r={name:"AttachmentSelectDrawer",mixins:[o["a"],o["b"]],model:{prop:"visiable",event:"close"},props:{visiable:{type:Boolean,required:!1,default:!1},drawerWidth:{type:Number,required:!1,default:460},title:{type:String,required:!1,default:"选择附件"}},data:function(){return{uploadVisible:!1,skeletonLoading:!0,pagination:{page:1,size:12,sort:""},attachments:[],attachmentUploadHandler:i["a"].upload}},created:function(){this.loadSkeleton(),this.loadAttachments()},watch:{visiable:function(t,a){t&&this.loadSkeleton()}},methods:{loadSkeleton:function(){var t=this;this.skeletonLoading=!0,setTimeout(function(){t.skeletonLoading=!1},500)},handleShowUploadModal:function(){this.uploadVisible=!0},loadAttachments:function(){var t=this,a=Object.assign({},this.pagination);a.page--,i["a"].query(a).then(function(a){t.attachments=a.data.data.content,t.pagination.total=a.data.data.total})},handleSelectAttachment:function(t){this.$emit("listenToSelect",t)},handlePaginationChange:function(t,a){this.pagination.page=t,this.pagination.size=a,this.loadAttachments()},handleAttachmentUploadSuccess:function(){this.$message.success("上传成功"),this.loadAttachments()},handleDelete:function(){this.loadAttachments()},onClose:function(){this.$emit("close",!1)}}},l=r,c=(e("307b"),e("17cc")),d=Object(c["a"])(l,s,n,!1,null,null,null);a["a"]=d.exports},"7c54":function(t,a,e){"use strict";e.r(a);var s=function(){var t=this,a=this,e=a.$createElement,s=a._self._c||e;return s("div",{staticClass:"page-header-index-wide page-header-wrapper-grid-content-main"},[s("a-row",{attrs:{gutter:12}},[s("a-col",{style:{"padding-bottom":"12px"},attrs:{lg:10,md:24}},[s("a-card",{attrs:{bordered:!1}},[s("div",{staticClass:"profile-center-avatarHolder"},[s("a-tooltip",{attrs:{placement:"right",trigger:["hover"],title:"点击可修改头像"}},[s("template",{slot:"title"},[s("span",[a._v("prompt text")])]),s("div",{staticClass:"avatar"},[s("img",{attrs:{src:a.user.avatar||"https://gravatar.loli.net/avatar/?s=256&d=mm"},on:{click:function(){return t.attachmentDrawerVisible=!0}}})])],2),s("div",{staticClass:"username"},[a._v(a._s(a.user.nickname))]),s("div",{staticClass:"bio"},[a._v(a._s(a.user.description))])],1),s("div",{staticClass:"profile-center-detail"},[s("p",[s("a-icon",{attrs:{type:"link"}}),s("a",{attrs:{href:a.options.blog_url,target:"method"}},[a._v(a._s(a.options.blog_url))])],1),s("p",[s("a-icon",{attrs:{type:"mail"}}),a._v(a._s(a.user.email)+"\n ")],1),s("p",[s("a-icon",{attrs:{type:"calendar"}}),a._v(a._s(a.counts.establishDays||0)+" 天\n ")],1)]),s("a-divider"),s("div",{staticClass:"general-profile"},[s("a-list",{attrs:{loading:a.countsLoading,itemLayout:"horizontal"}},[s("a-list-item",[a._v("累计发表了 "+a._s(a.counts.postCount||0)+" 篇文章。")]),s("a-list-item",[a._v("累计创建了 "+a._s(a.counts.linkCount||0)+" 个标签。")]),s("a-list-item",[a._v("累计获得了 "+a._s(a.counts.commentCount||0)+" 条评论。")]),s("a-list-item",[a._v("累计添加了 "+a._s(a.counts.linkCount||0)+" 个友链。")]),s("a-list-item",[a._v("文章总访问 "+a._s(a.counts.visitCount||0)+" 次。")]),s("a-list-item")],1)],1)],1)],1),s("a-col",{style:{"padding-bottom":"12px"},attrs:{lg:14,md:24}},[s("a-card",{attrs:{bodyStyle:{padding:"0"},bordered:!1,title:"个人资料"}},[s("div",{staticClass:"card-container"},[s("a-tabs",{attrs:{type:"card"}},[s("a-tab-pane",{key:"1"},[s("span",{attrs:{slot:"tab"},slot:"tab"},[s("a-icon",{attrs:{type:"idcard"}}),a._v("基本资料\n ")],1),s("a-form",{attrs:{layout:"vertical"}},[s("a-form-item",{attrs:{label:"用户名:"}},[s("a-input",{model:{value:a.user.username,callback:function(t){a.$set(a.user,"username",t)},expression:"user.username"}})],1),s("a-form-item",{attrs:{label:"昵称:"}},[s("a-input",{model:{value:a.user.nickname,callback:function(t){a.$set(a.user,"nickname",t)},expression:"user.nickname"}})],1),s("a-form-item",{attrs:{label:"邮箱:"}},[s("a-input",{model:{value:a.user.email,callback:function(t){a.$set(a.user,"email",t)},expression:"user.email"}})],1),s("a-form-item",{attrs:{label:"个人说明:"}},[s("a-input",{attrs:{autosize:{minRows:5},type:"textarea"},model:{value:a.user.description,callback:function(t){a.$set(a.user,"description",t)},expression:"user.description"}})],1),s("a-form-item",[s("a-button",{attrs:{type:"primary"},on:{click:a.handleUpdateProfile}},[a._v("保存")])],1)],1)],1),s("a-tab-pane",{key:"2"},[s("span",{attrs:{slot:"tab"},slot:"tab"},[s("a-icon",{attrs:{type:"lock"}}),a._v("密码\n ")],1),s("a-form",{attrs:{layout:"vertical"}},[s("a-form-item",{attrs:{label:"原密码:"}},[s("a-input",{attrs:{type:"password"},model:{value:a.passwordParam.oldPassword,callback:function(t){a.$set(a.passwordParam,"oldPassword",t)},expression:"passwordParam.oldPassword"}})],1),s("a-form-item",{attrs:{label:"新密码:"}},[s("a-input",{attrs:{type:"password"},model:{value:a.passwordParam.newPassword,callback:function(t){a.$set(a.passwordParam,"newPassword",t)},expression:"passwordParam.newPassword"}})],1),s("a-form-item",{attrs:{label:"确认密码:"}},[s("a-input",{attrs:{type:"password"},model:{value:a.passwordParam.confirmPassword,callback:function(t){a.$set(a.passwordParam,"confirmPassword",t)},expression:"passwordParam.confirmPassword"}})],1),s("a-form-item",[s("a-button",{attrs:{disabled:a.passwordUpdateButtonDisabled,type:"primary"},on:{click:a.handleUpdatePassword}},[a._v("确认更改")])],1)],1)],1)],1)],1)])],1)],1),s("AttachmentSelectDrawer",{attrs:{title:"选择头像"},on:{listenToSelect:a.handleSelectAvatar},model:{value:a.attachmentDrawerVisible,callback:function(t){a.attachmentDrawerVisible=t},expression:"attachmentDrawerVisible"}})],1)},n=[],o=(e("612f"),e("3556")),i=e("3993"),r=e("c24f"),l=e("50fc"),c=e("482b"),d=e("591a"),u={components:{AttachmentSelectDrawer:i["a"]},data:function(){return{countsLoading:!0,attachmentDrawerVisible:!1,user:{},counts:{},passwordParam:{oldPassword:null,newPassword:null,confirmPassword:null},attachment:{},options:[],keys:["blog_url"]}},computed:{passwordUpdateButtonDisabled:function(){return!(this.passwordParam.oldPassword&&this.passwordParam.newPassword)}},created:function(){this.loadUser(),this.getCounts(),this.loadOptions()},methods:Object(o["a"])({},Object(d["d"])({setUser:"SET_USER"}),{loadUser:function(){var t=this;r["a"].getProfile().then(function(a){t.user=a.data.data,t.profileLoading=!1})},loadOptions:function(){var t=this;c["a"].listAll(this.keys).then(function(a){t.options=a.data.data})},getCounts:function(){var t=this;l["a"].counts().then(function(a){t.counts=a.data.data,t.countsLoading=!1})},handleUpdatePassword:function(){this.passwordParam.newPassword===this.passwordParam.confirmPassword?r["a"].updatePassword(this.passwordParam.oldPassword,this.passwordParam.newPassword).then(function(t){}):this.$message.error("确认密码和新密码不匹配!")},handleUpdateProfile:function(){var t=this;r["a"].updateProfile(this.user).then(function(a){t.user=a.data.data,t.setUser(Object.assign({},t.user)),t.$message.success("资料更新成功!")})},handleSelectAvatar:function(t){this.user.avatar=t.path,this.attachmentDrawerVisible=!1}})},p=u,m=(e("00dd"),e("17cc")),h=Object(m["a"])(p,s,n,!1,null,"f7b75946",null);a["default"]=h.exports},a796:function(t,a,e){"use strict";var s=e("7f43"),n=e.n(s),o=e("9efd"),i="/api/admin/attachments",r={query:function(t){return Object(o["a"])({url:i,params:t,method:"get"})},get:function(t){return Object(o["a"])({url:"".concat(i,"/").concat(t),method:"get"})},delete:function(t){return Object(o["a"])({url:"".concat(i,"/").concat(t),method:"delete"})},update:function(t,a){return Object(o["a"])({url:"".concat(i,"/").concat(t),method:"put",data:a})},getMediaTypes:function(){return Object(o["a"])({url:"".concat(i,"/media_types"),method:"get"})}};r.CancelToken=n.a.CancelToken,r.isCancel=n.a.isCancel,r.upload=function(t,a,e){return Object(o["a"])({url:"".concat(i,"/upload"),timeout:864e4,data:t,onUploadProgress:a,cancelToken:e,method:"post"})},r.type={LOCAL:{type:"local",text:"本地"},SMMS:{type:"smms",text:"SM.MS"},UPYUN:{type:"upyun",text:"又拍云"},QNYUN:{type:"qnyun",text:"七牛云"},ALIYUN:{type:"aliyun",text:"阿里云"}},a["a"]=r}}]); \ No newline at end of file diff --git a/src/main/resources/admin/js/chunk-efde06fa.9e1e510c.js b/src/main/resources/admin/js/chunk-efde06fa.9e1e510c.js new file mode 100644 index 000000000..e72e62372 --- /dev/null +++ b/src/main/resources/admin/js/chunk-efde06fa.9e1e510c.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-efde06fa"],{"0bb5":function(t,e,a){},"12de":function(t,e,a){"use strict";var n=a("9efd"),i="/api/admin/themes",o={listAll:function(){return Object(n["a"])({url:"".concat(i),method:"get"})},listFiles:function(){return Object(n["a"])({url:"".concat(i,"/files"),method:"get"})},customTpls:function(){return Object(n["a"])({url:"".concat(i,"/files/custom"),method:"get"})},active:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t,"/activation"),method:"post"})},getActivatedTheme:function(){return Object(n["a"])({url:"".concat(i,"/activation"),method:"get"})},delete:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"delete"})},fetchConfiguration:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t,"/configurations"),method:"get"})},fetchSettings:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t,"/settings"),method:"get"})},saveSettings:function(t,e){return Object(n["a"])({url:"".concat(i,"/").concat(t,"/settings"),data:e,method:"post"})},getProperty:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"get"})},upload:function(t,e,a){return Object(n["a"])({url:"".concat(i,"/upload"),timeout:864e4,data:t,onUploadProgress:e,cancelToken:a,method:"post"})},fetching:function(t){return Object(n["a"])({url:"".concat(i,"/fetching"),params:{uri:t},method:"post"})},getContent:function(t){return Object(n["a"])({url:"".concat(i,"/files/content"),params:{path:t},method:"get"})},saveContent:function(t,e){return Object(n["a"])({url:"".concat(i,"/files/content"),params:{path:t},data:e,method:"put"})},reload:function(){return Object(n["a"])({url:"".concat(i,"/reload"),method:"post"})},exists:function(t){return Object(n["a"])({url:"".concat(i,"/activation/template/exists"),method:"get",params:{template:t}})}};e["a"]=o},"5bcf":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("a-drawer",{attrs:{title:"附件详情",width:t.isMobile()?"100%":"460",closable:"",visible:t.visiable,destroyOnClose:""},on:{close:t.onClose}},[a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-col",{attrs:{span:24}},[a("a-skeleton",{attrs:{active:"",loading:t.detailLoading,paragraph:{rows:8}}},[a("div",{staticClass:"attach-detail-img"},[a("img",{attrs:{src:t.attachment.path}})])])],1),a("a-divider"),a("a-col",{attrs:{span:24}},[a("a-skeleton",{attrs:{active:"",loading:t.detailLoading,paragraph:{rows:8}}},[a("a-list",{attrs:{itemLayout:"horizontal"}},[a("a-list-item",[a("a-list-item-meta",[t.editable?a("template",{slot:"description"},[a("a-input",{on:{blur:t.doUpdateAttachment},model:{value:t.attachment.name,callback:function(e){t.$set(t.attachment,"name",e)},expression:"attachment.name"}})],1):a("template",{slot:"description"},[t._v(t._s(t.attachment.name))]),a("span",{attrs:{slot:"title"},slot:"title"},[t._v("\n 附件名:\n "),a("a",{attrs:{href:"javascript:void(0);"}},[a("a-icon",{attrs:{type:"edit"},on:{click:t.handleEditName}})],1)])],2)],1),a("a-list-item",[a("a-list-item-meta",{attrs:{description:t.attachment.mediaType}},[a("span",{attrs:{slot:"title"},slot:"title"},[t._v("附件类型:")])])],1),a("a-list-item",[a("a-list-item-meta",{attrs:{description:t.attachment.typeProperty}},[a("span",{attrs:{slot:"title"},slot:"title"},[t._v("存储位置:")])])],1),a("a-list-item",[a("a-list-item-meta",[a("template",{slot:"description"},[t._v("\n "+t._s(t._f("fileSizeFormat")(t.attachment.size))+"\n ")]),a("span",{attrs:{slot:"title"},slot:"title"},[t._v("附件大小:")])],2)],1),a("a-list-item",[a("a-list-item-meta",{attrs:{description:t.attachment.height+"x"+t.attachment.width}},[a("span",{attrs:{slot:"title"},slot:"title"},[t._v("图片尺寸:")])])],1),a("a-list-item",[a("a-list-item-meta",[a("template",{slot:"description"},[t._v("\n "+t._s(t._f("moment")(t.attachment.createTime))+"\n ")]),a("span",{attrs:{slot:"title"},slot:"title"},[t._v("上传日期:")])],2)],1),a("a-list-item",[a("a-list-item-meta",{attrs:{description:t.attachment.path}},[a("span",{attrs:{slot:"title"},slot:"title"},[t._v("\n 普通链接:\n "),a("a",{attrs:{href:"javascript:void(0);"}},[a("a-icon",{attrs:{type:"copy"},on:{click:t.handleCopyNormalLink}})],1)])])],1),a("a-list-item",[a("a-list-item-meta",[a("span",{attrs:{slot:"description"},slot:"description"},[t._v("!["+t._s(t.attachment.name)+"]("+t._s(t.attachment.path)+")")]),a("span",{attrs:{slot:"title"},slot:"title"},[t._v("\n Markdown 格式:\n "),a("a",{attrs:{href:"javascript:void(0);"}},[a("a-icon",{attrs:{type:"copy"},on:{click:t.handleCopyMarkdownLink}})],1)])])],1)],1)],1)],1)],1),a("a-divider",{staticClass:"divider-transparent"}),a("div",{staticClass:"bottom-control"},[t.addToPhoto?a("a-popconfirm",{attrs:{title:"你确定要添加到图库?",okText:"确定",cancelText:"取消"},on:{confirm:t.handleAddToPhoto}},[a("a-button",{staticStyle:{marginRight:"8px"},attrs:{type:"dashed"}},[t._v("添加到图库")])],1):t._e(),a("a-popconfirm",{attrs:{title:"你确定要删除该附件?",okText:"确定",cancelText:"取消"},on:{confirm:t.handleDeleteAttachment}},[a("a-button",{attrs:{type:"danger"}},[t._v("删除")])],1)],1)],1)},i=[],o=(a("3a23"),a("ac0d")),s=a("a796"),l=a("975e"),r={name:"AttachmentDetailDrawer",mixins:[o["a"],o["b"]],data:function(){return{detailLoading:!0,editable:!1,photo:{}}},model:{prop:"visiable",event:"close"},props:{attachment:{type:Object,required:!0},addToPhoto:{type:Boolean,required:!1,default:!1},visiable:{type:Boolean,required:!1,default:!0}},created:function(){this.loadSkeleton()},watch:{visiable:function(t,e){this.$log.debug("old value",e),this.$log.debug("new value",t),t&&this.loadSkeleton()}},methods:{loadSkeleton:function(){var t=this;this.detailLoading=!0,setTimeout(function(){t.detailLoading=!1},500)},handleDeleteAttachment:function(){var t=this;s["a"].delete(this.attachment.id).then(function(e){t.$message.success("删除成功!"),t.$emit("delete",t.attachment),t.onClose()})},handleEditName:function(){this.editable=!this.editable},doUpdateAttachment:function(){var t=this;s["a"].update(this.attachment.id,this.attachment).then(function(e){t.$log.debug("Updated attachment",e.data.data),t.$message.success("附件修改成功")}),this.editable=!1},handleCopyNormalLink:function(){var t=this,e="".concat(this.attachment.path);this.$copyText(e).then(function(e){console.log("copy",e),t.$message.success("复制成功")}).catch(function(e){console.log("copy.err",e),t.$message.error("复制失败")})},handleCopyMarkdownLink:function(){var t=this,e="![".concat(this.attachment.name,"](").concat(this.attachment.path,")");this.$copyText(e).then(function(e){console.log("copy",e),t.$message.success("复制成功")}).catch(function(e){console.log("copy.err",e),t.$message.error("复制失败")})},handleAddToPhoto:function(){var t=this;this.photo["name"]=this.attachment.name,this.photo["thumbnail"]=this.attachment.thumbPath,this.photo["url"]=this.attachment.path,this.photo["takeTime"]=(new Date).getTime(),l["a"].create(this.photo).then(function(e){t.$message.success("添加成功!")})},onClose:function(){this.$emit("close",!1)}}},c=r,d=(a("b3a7"),a("17cc")),u=Object(d["a"])(c,n,i,!1,null,null,null);e["a"]=u.exports},"5f9f":function(t,e,a){"use strict";var n=a("0bb5"),i=a.n(n);i.a},6870:function(t,e,a){},"79e7":function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=this,a=e.$createElement,n=e._self._c||a;return n("div",{staticClass:"page-header-index-wide"},[n("a-row",{attrs:{gutter:12,type:"flex",align:"middle"}},[n("a-col",{attrs:{span:24}},[n("a-list",{attrs:{grid:{gutter:12,xs:1,sm:1,md:2,lg:4,xl:4,xxl:4},dataSource:e.themes,loading:e.themeLoading},scopedSlots:e._u([{key:"renderItem",fn:function(t,a){return n("a-list-item",{key:a},[n("a-card",{attrs:{hoverable:"",title:t.name,bodyStyle:{padding:0}}},[n("div",{staticClass:"theme-thumb"},[n("img",{attrs:{alt:t.name,src:t.screenshots}})]),n("template",{staticClass:"ant-card-actions",slot:"actions"},[t.activated?n("div",[n("a-icon",{attrs:{type:"unlock",theme:"twoTone"}}),e._v("已启用\n ")],1):n("div",{on:{click:function(a){return e.handleActivateClick(t)}}},[n("a-icon",{attrs:{type:"lock"}}),e._v("启用\n ")],1),n("div",{on:{click:function(a){return e.handleEditClick(t)}}},[n("a-icon",{attrs:{type:"setting"}}),e._v("设置\n ")],1),n("a-dropdown",{attrs:{placement:"topCenter"}},[n("a",{staticClass:"ant-dropdown-link",attrs:{href:"#"}},[n("a-icon",{attrs:{type:"ellipsis"}}),e._v("更多\n ")],1),n("a-menu",{attrs:{slot:"overlay"},slot:"overlay"},[n("a-menu-item",{key:1,attrs:{disabled:t.activated}},[t.activated?n("span",[n("a-icon",{attrs:{type:"delete"}}),e._v("删除\n ")],1):n("a-popconfirm",{attrs:{title:"确定删除【"+t.name+"】主题?",okText:"确定",cancelText:"取消"},on:{confirm:function(a){return e.handleDeleteTheme(t.id)}}},[n("a-icon",{attrs:{type:"delete"}}),e._v("删除\n ")],1)],1)],1)],1)],1)],2)],1)}}])})],1)],1),e.themeProperty?n("a-drawer",{attrs:{title:e.themeProperty.name+" 主题设置",width:"100%",closable:"",visible:e.visible,destroyOnClose:""},on:{close:e.onClose}},[n("a-row",{attrs:{gutter:12,type:"flex"}},[n("a-col",{attrs:{xl:12,lg:12,md:12,sm:24,xs:24}},[n("a-skeleton",{attrs:{active:"",loading:e.optionLoading,paragraph:{rows:10}}},[n("a-card",{attrs:{bordered:!1}},[n("img",{attrs:{slot:"cover",alt:e.themeProperty.name,src:e.themeProperty.screenshots},slot:"cover"}),n("a-card-meta",{attrs:{description:e.themeProperty.description}},[n("template",{slot:"title"},[n("a",{attrs:{href:e.themeProperty.author.website,target:"_blank"}},[e._v(e._s(e.themeProperty.author.name))])]),e.themeProperty.logo?n("a-avatar",{attrs:{slot:"avatar",src:e.themeProperty.logo,size:"large"},slot:"avatar"}):n("a-avatar",{attrs:{slot:"avatar",size:"large"},slot:"avatar"},[e._v(e._s(e.themeProperty.author.name))])],2)],1)],1)],1),n("a-col",{staticStyle:{"padding-bottom":"50px"},attrs:{xl:12,lg:12,md:12,sm:24,xs:24}},[n("a-skeleton",{attrs:{active:"",loading:e.optionLoading,paragraph:{rows:20}}},[n("div",{staticClass:"card-container"},[n("a-tabs",{attrs:{type:"card",defaultActiveKey:"0"}},e._l(e.themeConfiguration,function(t,a){return n("a-tab-pane",{key:a.toString(),attrs:{tab:t.label}},[n("a-form",{attrs:{layout:"vertical"}},e._l(t.items,function(t,a){return n("a-form-item",{key:a,attrs:{label:t.label+":","wrapper-col":e.wrapperCol}},["TEXT"==t.type?n("a-input",{attrs:{defaultValue:t.defaultValue,placeholder:t.placeholder},model:{value:e.themeSettings[t.name],callback:function(a){e.$set(e.themeSettings,t.name,a)},expression:"themeSettings[item.name]"}}):"TEXTAREA"==t.type?n("a-input",{attrs:{type:"textarea",autosize:{minRows:5},placeholder:t.placeholder},model:{value:e.themeSettings[t.name],callback:function(a){e.$set(e.themeSettings,t.name,a)},expression:"themeSettings[item.name]"}}):"RADIO"==t.type?n("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["radio-group"],expression:"['radio-group']"}],attrs:{defaultValue:t.defaultValue},model:{value:e.themeSettings[t.name],callback:function(a){e.$set(e.themeSettings,t.name,a)},expression:"themeSettings[item.name]"}},e._l(t.options,function(t,a){return n("a-radio",{key:a,attrs:{value:t.value}},[e._v(e._s(t.label))])}),1):"SELECT"==t.type?n("a-select",{attrs:{defaultValue:t.defaultValue},model:{value:e.themeSettings[t.name],callback:function(a){e.$set(e.themeSettings,t.name,a)},expression:"themeSettings[item.name]"}},e._l(t.options,function(t){return n("a-select-option",{key:t.value,attrs:{value:t.value}},[e._v(e._s(t.label))])}),1):e._e()],1)}),1)],1)}),1)],1)])],1)],1),n("footer-tool-bar",{style:{width:e.isSideMenu()&&e.isDesktop()?"calc(100% - "+(e.sidebarOpened?256:80)+"px)":"100%"}},[n("a-button",{attrs:{type:"primary"},on:{click:e.handleSaveSettings}},[e._v("保存")]),n("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"dashed"},on:{click:function(){return t.attachmentDrawerVisible=!0}}},[e._v("附件库")])],1),n("AttachmentDrawer",{model:{value:e.attachmentDrawerVisible,callback:function(t){e.attachmentDrawerVisible=t},expression:"attachmentDrawerVisible"}})],1):e._e(),n("div",{staticClass:"upload-button"},[n("a-dropdown",{attrs:{placement:"topLeft",trigger:["click"]}},[n("a-button",{attrs:{type:"primary",shape:"circle",icon:"plus",size:"large"}}),n("a-menu",{attrs:{slot:"overlay"},slot:"overlay"},[n("a-menu-item",[n("a",{attrs:{rel:"noopener noreferrer",href:"javascript:void(0);"},on:{click:function(){return t.uploadVisible=!0}}},[e._v("安装主题")])]),n("a-menu-item",[n("a",{attrs:{rel:"noopener noreferrer",href:"javascript:void(0);"},on:{click:e.handleReload}},[e._v("刷新列表")])])],1)],1)],1),n("a-modal",{attrs:{title:"安装主题",footer:null,bodyStyle:{padding:"0 24px 24px"}},model:{value:e.uploadVisible,callback:function(t){e.uploadVisible=t},expression:"uploadVisible"}},[n("div",{staticClass:"custom-tab-wrapper"},[n("a-tabs",[n("a-tab-pane",{key:"1",attrs:{tab:"本地上传"}},[n("upload",{attrs:{name:"file",multiple:"",accept:"application/zip",uploadHandler:e.uploadHandler},on:{change:e.handleChange,success:e.handleUploadSuccess}},[n("p",{staticClass:"ant-upload-drag-icon"},[n("a-icon",{attrs:{type:"inbox"}})],1),n("p",{staticClass:"ant-upload-text"},[e._v("点击选择主题或将主题拖拽到此处")]),n("p",{staticClass:"ant-upload-hint"},[e._v("支持单个或批量上传,仅支持 ZIP 格式的文件")])])],1),n("a-tab-pane",{key:"2",attrs:{tab:"远程拉取"}},[n("a-form",{attrs:{layout:"vertical"}},[n("a-form-item",{attrs:{label:"远程地址:"}},[n("a-input",{model:{value:e.fetchingUrl,callback:function(t){e.fetchingUrl=t},expression:"fetchingUrl"}})],1),n("a-form-item",[n("a-button",{attrs:{type:"primary"},on:{click:e.handleFetching}},[e._v("确定")])],1)],1)],1)],1)],1)])],1)},i=[],o=(a("3a23"),a("7415"),a("ed4e")),s=a("5a70"),l=a("ac0d"),r=a("12de"),c={components:{AttachmentDrawer:o["a"],FooterToolBar:s["a"]},mixins:[l["a"],l["b"]],data:function(){return{themeLoading:!1,optionLoading:!0,uploadVisible:!1,wrapperCol:{xl:{span:12},lg:{span:12},sm:{span:24},xs:{span:24}},attachmentDrawerVisible:!1,themes:[],visible:!1,themeConfiguration:null,themeSettings:[],themeProperty:null,fetchingUrl:null,uploadHandler:r["a"].upload}},computed:{activatedTheme:function(){return this.themes.find(function(t){return t.activated})}},created:function(){this.loadThemes()},destroyed:function(){this.visible&&(this.visible=!1)},beforeRouteLeave:function(t,e,a){this.visible&&(this.visible=!1),a()},methods:{loadThemes:function(){var t=this;this.themeLoading=!0,r["a"].listAll().then(function(e){t.themes=e.data.data,t.themeLoading=!1})},settingDrawer:function(t){var e=this;this.visible=!0,this.optionLoading=!0,this.themeProperty=t,r["a"].fetchConfiguration(t.id).then(function(a){e.themeConfiguration=a.data.data,r["a"].fetchSettings(t.id).then(function(t){e.themeSettings=t.data.data,setTimeout(function(){e.visible=!0,e.optionLoading=!1},300)})})},activeTheme:function(t){var e=this;r["a"].active(t).then(function(t){e.$message.success("设置成功!"),e.loadThemes()})},handleDeleteTheme:function(t){var e=this;r["a"].delete(t).then(function(t){e.$message.success("删除成功!"),e.loadThemes()})},handleSaveSettings:function(){var t=this;r["a"].saveSettings(this.themeProperty.id,this.themeSettings).then(function(e){t.$message.success("保存成功!")})},onClose:function(){this.visible=!1,this.optionLoading=!1,this.themeConfiguration=null,this.themeProperty=null},handleChange:function(t){var e=t.file.status;"done"===e?this.$message.success("".concat(t.file.name," 主题上传成功")):"error"===e&&this.$message.error("".concat(t.file.name," 主题上传失败"))},handleUploadSuccess:function(){this.uploadVisible=!1,this.loadThemes()},handleEllipsisClick:function(t){this.$log.debug("Ellipsis clicked",t)},handleEditClick:function(t){this.settingDrawer(t)},handleActivateClick:function(t){this.activeTheme(t.id)},handleFetching:function(){var t=this;r["a"].fetching(this.fetchingUrl).then(function(e){t.$message.success("上传成功"),t.uploadVisible=!1,t.loadThemes()})},handleReload:function(){var t=this;r["a"].reload().then(function(e){t.loadThemes(),t.$message.success("刷新成功!")})}}},d=c,u=(a("b4dc"),a("17cc")),h=Object(u["a"])(d,n,i,!1,null,"76b16ba4",null);e["default"]=h.exports},9298:function(t,e,a){},"975e":function(t,e,a){"use strict";var n=a("9efd"),i="/api/admin/photos",o={query:function(t){return Object(n["a"])({url:i,params:t,method:"get"})},create:function(t){return Object(n["a"])({url:i,data:t,method:"post"})},update:function(t,e){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"put",data:e})},delete:function(t){return Object(n["a"])({url:"".concat(i,"/").concat(t),method:"delete"})}};e["a"]=o},a796:function(t,e,a){"use strict";var n=a("7f43"),i=a.n(n),o=a("9efd"),s="/api/admin/attachments",l={query:function(t){return Object(o["a"])({url:s,params:t,method:"get"})},get:function(t){return Object(o["a"])({url:"".concat(s,"/").concat(t),method:"get"})},delete:function(t){return Object(o["a"])({url:"".concat(s,"/").concat(t),method:"delete"})},update:function(t,e){return Object(o["a"])({url:"".concat(s,"/").concat(t),method:"put",data:e})},getMediaTypes:function(){return Object(o["a"])({url:"".concat(s,"/media_types"),method:"get"})}};l.CancelToken=i.a.CancelToken,l.isCancel=i.a.isCancel,l.upload=function(t,e,a){return Object(o["a"])({url:"".concat(s,"/upload"),timeout:864e4,data:t,onUploadProgress:e,cancelToken:a,method:"post"})},l.type={LOCAL:{type:"local",text:"本地"},SMMS:{type:"smms",text:"SM.MS"},UPYUN:{type:"upyun",text:"又拍云"},QNYUN:{type:"qnyun",text:"七牛云"},ALIYUN:{type:"aliyun",text:"阿里云"}},e["a"]=l},b3a7:function(t,e,a){"use strict";var n=a("9298"),i=a.n(n);i.a},b4dc:function(t,e,a){"use strict";var n=a("6870"),i=a.n(n);i.a},ed4e:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("a-drawer",{attrs:{title:"附件库",width:t.isMobile()?"100%":"460",closable:"",visible:t.visiable,destroyOnClose:""},on:{close:t.onClose}},[a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-input-search",{attrs:{placeholder:"搜索附件",enterButton:""},on:{search:function(e){return t.loadAttachments(!0)}},model:{value:t.queryParam.keyword,callback:function(e){t.$set(t.queryParam,"keyword",e)},expression:"queryParam.keyword"}})],1),a("a-divider"),a("a-row",{attrs:{type:"flex",align:"middle"}},[a("a-skeleton",{attrs:{active:"",loading:t.skeletonLoading,paragraph:{rows:18}}},[a("a-col",{attrs:{span:24}},t._l(t.formattedDatas,function(e,n){return a("div",{key:n,staticClass:"attach-item",on:{click:function(a){return t.handleShowDetailDrawer(e)}}},[a("img",{attrs:{src:e.thumbPath}})])}),0)],1)],1),a("a-divider"),a("div",{staticClass:"page-wrapper"},[a("a-pagination",{attrs:{defaultPageSize:t.pagination.size,total:t.pagination.total},on:{change:t.handlePaginationChange}})],1),t.selectedAttachment?a("AttachmentDetailDrawer",{attrs:{attachment:t.selectedAttachment},on:{delete:t.handleDelete},model:{value:t.detailVisiable,callback:function(e){t.detailVisiable=e},expression:"detailVisiable"}}):t._e(),a("a-divider",{staticClass:"divider-transparent"}),a("div",{staticClass:"bottom-control"},[a("a-button",{attrs:{type:"primary"},on:{click:t.handleShowUploadModal}},[t._v("上传附件")])],1)],1),a("a-modal",{attrs:{title:"上传附件",footer:null},model:{value:t.uploadVisible,callback:function(e){t.uploadVisible=e},expression:"uploadVisible"}},[a("upload",{attrs:{name:"file",multiple:"",accept:"image/*",uploadHandler:t.attachmentUploadHandler},on:{success:t.handleAttachmentUploadSuccess}},[a("p",{staticClass:"ant-upload-drag-icon"},[a("a-icon",{attrs:{type:"inbox"}})],1),a("p",{staticClass:"ant-upload-text"},[t._v("点击选择文件或将文件拖拽到此处")]),a("p",{staticClass:"ant-upload-hint"},[t._v("支持单个或批量上传")])])],1)],1)},i=[],o=(a("ab56"),a("ac0d")),s=a("a796"),l=a("5bcf"),r={name:"AttachmentDrawer",mixins:[o["a"],o["b"]],components:{AttachmentDetailDrawer:l["a"]},model:{prop:"visiable",event:"close"},props:{visiable:{type:Boolean,required:!1,default:!1}},data:function(){return{attachmentType:s["a"].type,detailVisiable:!1,attachmentDrawerVisible:!1,uploadVisible:!1,skeletonLoading:!0,pagination:{page:1,size:12,sort:""},queryParam:{page:0,size:18,sort:null,keyword:null},attachments:[],selectedAttachment:{},attachmentUploadHandler:s["a"].upload}},computed:{formattedDatas:function(){var t=this;return this.attachments.map(function(e){return e.typeProperty=t.attachmentType[e.type],e})}},created:function(){this.loadSkeleton(),this.loadAttachments()},watch:{visiable:function(t,e){t&&this.loadSkeleton()}},methods:{loadSkeleton:function(){var t=this;this.skeletonLoading=!0,setTimeout(function(){t.skeletonLoading=!1},500)},handleShowUploadModal:function(){this.uploadVisible=!0},handleShowDetailDrawer:function(t){this.selectedAttachment=t,this.$log.debug("Show detail of",t),this.detailVisiable=!0},loadAttachments:function(t){var e=this;this.queryParam.page=this.pagination.page-1,this.queryParam.size=this.pagination.size,this.queryParam.sort=this.pagination.sort,t&&(this.queryParam.page=0),s["a"].query(this.queryParam).then(function(t){e.attachments=t.data.data.content,e.pagination.total=t.data.data.total})},handlePaginationChange:function(t,e){this.pagination.page=t,this.pagination.size=e,this.loadAttachments()},handleAttachmentUploadSuccess:function(){this.$message.success("上传成功"),this.loadAttachments()},handleDelete:function(){this.loadAttachments()},onClose:function(){this.$emit("close",!1)}}},c=r,d=(a("5f9f"),a("17cc")),u=Object(d["a"])(c,n,i,!1,null,null,null);e["a"]=u.exports}}]); \ No newline at end of file From 0050213f49f2d7cff1f3437e38657be9996d4bae Mon Sep 17 00:00:00 2001 From: ruibaby Date: Wed, 29 May 2019 15:21:12 +0800 Subject: [PATCH 10/31] Refactor MarkdownUtils. --- build.gradle | 4 ++ .../run/halo/app/utils/MarkdownUtils.java | 71 ++++++++++++++++--- 2 files changed, 66 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 782e8cf2d..bc2b510e4 100644 --- a/build.gradle +++ b/build.gradle @@ -56,6 +56,10 @@ dependencies { implementation 'com.atlassian.commonmark:commonmark:0.12.1' implementation 'com.atlassian.commonmark:commonmark-ext-gfm-tables:0.12.1' implementation 'com.atlassian.commonmark:commonmark-ext-yaml-front-matter:0.12.1' + implementation 'com.atlassian.commonmark:commonmark-ext-autolink:0.12.1' + implementation 'com.atlassian.commonmark:commonmark-ext-gfm-strikethrough:0.12.1' + implementation 'com.atlassian.commonmark:commonmark-ext-heading-anchor:0.12.1' + implementation 'com.atlassian.commonmark:commonmark-ext-ins:0.12.1' implementation 'io.springfox:springfox-swagger2:2.9.2' implementation 'io.springfox:springfox-swagger-ui:2.9.2' implementation 'org.apache.commons:commons-lang3:3.8.1' diff --git a/src/main/java/run/halo/app/utils/MarkdownUtils.java b/src/main/java/run/halo/app/utils/MarkdownUtils.java index acd60e4f3..7f3e9c7e6 100644 --- a/src/main/java/run/halo/app/utils/MarkdownUtils.java +++ b/src/main/java/run/halo/app/utils/MarkdownUtils.java @@ -2,9 +2,13 @@ package run.halo.app.utils; import org.apache.commons.lang3.StringUtils; import org.commonmark.Extension; +import org.commonmark.ext.autolink.AutolinkExtension; import org.commonmark.ext.front.matter.YamlFrontMatterExtension; import org.commonmark.ext.front.matter.YamlFrontMatterVisitor; +import org.commonmark.ext.gfm.strikethrough.StrikethroughExtension; import org.commonmark.ext.gfm.tables.TablesExtension; +import org.commonmark.ext.heading.anchor.HeadingAnchorExtension; +import org.commonmark.ext.ins.InsExtension; import org.commonmark.node.Node; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; @@ -26,30 +30,73 @@ import java.util.Set; */ public class MarkdownUtils { - /** - * Front-matter extension - */ - private static final Set EXTENSIONS_YAML = Collections.singleton(YamlFrontMatterExtension.create()); /** - * Table extension + * commonmark-java extension for autolinking */ - private static final Set EXTENSIONS_TABLE = Collections.singleton(TablesExtension.create()); + private static final Set EXTENSIONS_AUTO_LINK = Collections.singleton(AutolinkExtension.create()); + + /** + * commonmark-java extension for strikethrough + */ + private static final Set EXTENSIONS_STRIKETHROUGH = Collections.singleton(StrikethroughExtension.create()); + + /** + * commonmark-java extension for tables + */ + private static final Set EXTENSIONS_TABLES = Collections.singleton(TablesExtension.create()); + + /** + * commonmark-java extension for adding id attributes to h tags + */ + private static final Set EXTENSIONS_HEADING_ANCHOR = Collections.singleton(HeadingAnchorExtension.create()); + + /** + * commonmark-java extension for <ins> (underline) + */ + private static final Set EXTENSIONS_INS = Collections.singleton(InsExtension.create()); + + /** + * commonmark-java extension for YAML front matter + */ + private static final Set EXTENSIONS_YAML_FRONT_MATTER = Collections.singleton(YamlFrontMatterExtension.create()); + /** * Parse Markdown content */ - private static final Parser PARSER = Parser.builder().extensions(EXTENSIONS_YAML).extensions(EXTENSIONS_TABLE).build(); + private static final Parser PARSER = Parser.builder() + .extensions(EXTENSIONS_AUTO_LINK) + .extensions(EXTENSIONS_STRIKETHROUGH) + .extensions(EXTENSIONS_TABLES) + .extensions(EXTENSIONS_HEADING_ANCHOR) + .extensions(EXTENSIONS_INS) + .extensions(EXTENSIONS_YAML_FRONT_MATTER) + .build(); /** * Render HTML content */ - private static final HtmlRenderer RENDERER = HtmlRenderer.builder().extensions(EXTENSIONS_YAML).extensions(EXTENSIONS_TABLE).build(); + private static final HtmlRenderer RENDERER = HtmlRenderer.builder() + .extensions(EXTENSIONS_AUTO_LINK) + .extensions(EXTENSIONS_STRIKETHROUGH) + .extensions(EXTENSIONS_TABLES) + .extensions(EXTENSIONS_HEADING_ANCHOR) + .extensions(EXTENSIONS_INS) + .extensions(EXTENSIONS_YAML_FRONT_MATTER) + .build(); /** * Render text content */ - private static final TextContentRenderer TEXT_CONTENT_RENDERER = TextContentRenderer.builder().extensions(EXTENSIONS_YAML).extensions(EXTENSIONS_TABLE).build(); + private static final TextContentRenderer TEXT_CONTENT_RENDERER = TextContentRenderer.builder() + .extensions(EXTENSIONS_AUTO_LINK) + .extensions(EXTENSIONS_STRIKETHROUGH) + .extensions(EXTENSIONS_TABLES) + .extensions(EXTENSIONS_HEADING_ANCHOR) + .extensions(EXTENSIONS_INS) + .extensions(EXTENSIONS_YAML_FRONT_MATTER) + .build(); /** * Render Markdown content @@ -59,20 +106,25 @@ public class MarkdownUtils { * @see TaleUtils.java */ public static String renderMarkdown(String content) { + final Node document = PARSER.parse(content); String renderContent = RENDERER.render(document); + // render netease music short url if (content.contains(HaloConst.NETEASE_MUSIC_PREFIX)) { renderContent = content.replaceAll(HaloConst.NETEASE_MUSIC_REG_PATTERN, HaloConst.NETEASE_MUSIC_IFRAME); } + // render bilibili video short url if (content.contains(HaloConst.BILIBILI_VIDEO_PREFIX)) { renderContent = content.replaceAll(HaloConst.BILIBILI_VIDEO_REG_PATTERN, HaloConst.BILIBILI_VIDEO_IFRAME); } + // render youtube video short url if (content.contains(HaloConst.YOUTUBE_VIDEO_PREFIX)) { renderContent = content.replaceAll(HaloConst.YOUTUBE_VIDEO_REG_PATTERN, HaloConst.YOUTUBE_VIDEO_IFRAME); } + return renderContent; } @@ -84,6 +136,7 @@ public class MarkdownUtils { */ @NonNull public static String renderText(@Nullable String markdownContent) { + if (StringUtils.isBlank(markdownContent)) { return ""; } From bd7b87aa5030de82b4504cbf9fb0555617eb8e68 Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 30 May 2019 02:04:20 +0800 Subject: [PATCH 11/31] Enhance theme fetching api --- .../run/halo/app/service/impl/ThemeServiceImpl.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java index 579ab2b4c..11bf16cb6 100644 --- a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java @@ -440,10 +440,11 @@ public class ThemeServiceImpl implements ThemeService { // Create temp path Path themeTmpPath = tmpPath.resolve(HaloUtils.randomUUIDWithoutDash()); - if (StringUtils.endsWithIgnoreCase(uri, ".git")) { - cloneFromGit(uri, themeTmpPath); - } else { + if (StringUtils.endsWithIgnoreCase(uri, ".zip")) { downloadZipAndUnzip(uri, themeTmpPath); + } else { + uri = StringUtils.appendIfMissingIgnoreCase(uri, ".git", ".git"); + cloneFromGit(uri, themeTmpPath); } return add(themeTmpPath); @@ -464,7 +465,7 @@ public class ThemeServiceImpl implements ThemeService { * * @param gitUrl git url must not be blank * @param targetPath target path must not be null - * @throws GitAPIException + * @throws GitAPIException throws when clone error */ private void cloneFromGit(@NonNull String gitUrl, @NonNull Path targetPath) throws GitAPIException { Assert.hasText(gitUrl, "Git url must not be blank"); @@ -486,7 +487,7 @@ public class ThemeServiceImpl implements ThemeService { * * @param zipUrl zip url must not be null * @param targetPath target path must not be null - * @throws IOException + * @throws IOException throws when download zip or unzip error */ private void downloadZipAndUnzip(@NonNull String zipUrl, @NonNull Path targetPath) throws IOException { Assert.hasText(zipUrl, "Zip url must not be blank"); @@ -514,7 +515,7 @@ public class ThemeServiceImpl implements ThemeService { * Creates temporary path. * * @return temporary path - * @throws IOException + * @throws IOException if an I/O error occurs or the temporary-file directory does not exist */ @NonNull private Path createTempPath() throws IOException { From 427a0b86e7f606c87506650539725a035be65b95 Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 30 May 2019 02:21:35 +0800 Subject: [PATCH 12/31] Add filter ip address service in BaseCommentService --- .../app/service/base/BaseCommentService.java | 21 +++++++++++++++++ .../service/impl/BaseCommentServiceImpl.java | 23 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/main/java/run/halo/app/service/base/BaseCommentService.java b/src/main/java/run/halo/app/service/base/BaseCommentService.java index dcd3b54a1..6bcad1570 100644 --- a/src/main/java/run/halo/app/service/base/BaseCommentService.java +++ b/src/main/java/run/halo/app/service/base/BaseCommentService.java @@ -214,4 +214,25 @@ public interface BaseCommentService extends CrudSer */ @NonNull List listChildrenBy(@NonNull Integer targetId, @NonNull Long commentParentId, @NonNull CommentStatus status, @NonNull Sort sort); + + /** + * Filters comment ip address. + * + * @param comment comment dto must not be null + */ + void filterIpAddress(@NonNull BaseCommentDTO comment); + + /** + * Filters comment ip address. + * + * @param comments comment dto list + */ + void filterIpAddress(@Nullable List comments); + + /** + * Filters comment ip address. + * + * @param commentPage comment page + */ + void filterIpAddress(@NonNull Page commentPage); } diff --git a/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java b/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java index 906cac579..929d57e39 100644 --- a/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java @@ -470,6 +470,29 @@ public abstract class BaseCommentServiceImpl extend return childrenList; } + @Override + public void filterIpAddress(BaseCommentDTO comment) { + Assert.notNull(comment, "Base comment dto must not be null"); + + // Clear ip address + comment.setIpAddress(""); + } + + @Override + public void filterIpAddress(List comments) { + if (CollectionUtils.isEmpty(comments)) { + return; + } + + comments.forEach(this::filterIpAddress); + } + + @Override + public void filterIpAddress(Page commentPage) { + Assert.notNull(commentPage, "Comment page must not be null"); + commentPage.forEach(this::filterIpAddress); + } + /** * Get children comments recursively. * From c0546440355e51429d9c8a5d1ddb09afe0f78f79 Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 30 May 2019 03:07:03 +0800 Subject: [PATCH 13/31] Enhance filter ip address service --- .../app/service/base/BaseCommentService.java | 7 ++-- .../service/impl/BaseCommentServiceImpl.java | 32 ++++++++++++++++--- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/main/java/run/halo/app/service/base/BaseCommentService.java b/src/main/java/run/halo/app/service/base/BaseCommentService.java index 6bcad1570..37172c378 100644 --- a/src/main/java/run/halo/app/service/base/BaseCommentService.java +++ b/src/main/java/run/halo/app/service/base/BaseCommentService.java @@ -220,19 +220,20 @@ public interface BaseCommentService extends CrudSer * * @param comment comment dto must not be null */ - void filterIpAddress(@NonNull BaseCommentDTO comment); + T filterIpAddress(@NonNull T comment); /** * Filters comment ip address. * * @param comments comment dto list */ - void filterIpAddress(@Nullable List comments); + List filterIpAddress(@Nullable List comments); /** * Filters comment ip address. * * @param commentPage comment page */ - void filterIpAddress(@NonNull Page commentPage); + Page filterIpAddress(@NonNull Page commentPage); + } diff --git a/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java b/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java index 929d57e39..33dcb8e81 100644 --- a/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java @@ -471,26 +471,50 @@ public abstract class BaseCommentServiceImpl extend } @Override - public void filterIpAddress(BaseCommentDTO comment) { + public T filterIpAddress(@NonNull T comment) { Assert.notNull(comment, "Base comment dto must not be null"); // Clear ip address comment.setIpAddress(""); + + // Handle base comment vo + if (comment instanceof BaseCommentVO) { + BaseCommentVO baseCommentVO = (BaseCommentVO) comment; + Queue commentQueue = new LinkedList<>(); + commentQueue.offer(baseCommentVO); + while (!commentQueue.isEmpty()) { + BaseCommentVO current = commentQueue.poll(); + + // Clear ip address + current.setIpAddress(""); + + if (!CollectionUtils.isEmpty(current.getChildren())) { + // Add children + commentQueue.addAll(current.getChildren()); + } + } + } + + return comment; } @Override - public void filterIpAddress(List comments) { + public List filterIpAddress(List comments) { if (CollectionUtils.isEmpty(comments)) { - return; + return Collections.emptyList(); } comments.forEach(this::filterIpAddress); + + return comments; } @Override - public void filterIpAddress(Page commentPage) { + public Page filterIpAddress(Page commentPage) { Assert.notNull(commentPage, "Comment page must not be null"); commentPage.forEach(this::filterIpAddress); + + return commentPage; } /** From 738d3e6cd8a9ee362e0c3a27fadb6d4efc619d66 Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 30 May 2019 03:12:41 +0800 Subject: [PATCH 14/31] Apply filter ip address service --- .../content/api/JournalController.java | 12 ++++++++---- .../controller/content/api/PostController.java | 16 ++++++++++++---- .../controller/content/api/SheetController.java | 12 ++++++++---- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/main/java/run/halo/app/controller/content/api/JournalController.java b/src/main/java/run/halo/app/controller/content/api/JournalController.java index 3605185bf..06c0a9c93 100644 --- a/src/main/java/run/halo/app/controller/content/api/JournalController.java +++ b/src/main/java/run/halo/app/controller/content/api/JournalController.java @@ -48,7 +48,8 @@ public class JournalController { public Page listTopComments(@PathVariable("journalId") Integer journalId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return journalCommentService.pageTopCommentsBy(journalId, CommentStatus.PUBLISHED, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + Page result = journalCommentService.pageTopCommentsBy(journalId, CommentStatus.PUBLISHED, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + return journalCommentService.filterIpAddress(result); } @GetMapping("{journalId:\\d+}/comments/{commentParentId:\\d+}/children") @@ -58,7 +59,8 @@ public class JournalController { // Find all children comments List postComments = journalCommentService.listChildrenBy(journalId, commentParentId, CommentStatus.PUBLISHED, sort); // Convert to base comment dto - return journalCommentService.convertTo(postComments); + List result = journalCommentService.convertTo(postComments); + return journalCommentService.filterIpAddress(result); } @GetMapping("{journalId:\\d+}/comments/tree_view") @@ -66,7 +68,8 @@ public class JournalController { public Page listCommentsTree(@PathVariable("journalId") Integer journalId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return journalCommentService.pageVosBy(journalId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + Page result = journalCommentService.pageVosBy(journalId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + return journalCommentService.filterIpAddress(result); } @GetMapping("{journalId:\\d+}/comments/list_view") @@ -74,7 +77,8 @@ public class JournalController { public Page listComments(@PathVariable("journalId") Integer journalId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return journalCommentService.pageWithParentVoBy(journalId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + Page result = journalCommentService.pageWithParentVoBy(journalId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + return journalCommentService.filterIpAddress(result); } @PostMapping("comments") diff --git a/src/main/java/run/halo/app/controller/content/api/PostController.java b/src/main/java/run/halo/app/controller/content/api/PostController.java index 8cdfadb22..ae8fbff0f 100644 --- a/src/main/java/run/halo/app/controller/content/api/PostController.java +++ b/src/main/java/run/halo/app/controller/content/api/PostController.java @@ -83,7 +83,10 @@ public class PostController { public Page listTopComments(@PathVariable("postId") Integer postId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return postCommentService.pageTopCommentsBy(postId, CommentStatus.PUBLISHED, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + + Page result = postCommentService.pageTopCommentsBy(postId, CommentStatus.PUBLISHED, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + + return postCommentService.filterIpAddress(result); } @@ -94,7 +97,10 @@ public class PostController { // Find all children comments List postComments = postCommentService.listChildrenBy(postId, commentParentId, CommentStatus.PUBLISHED, sort); // Convert to base comment dto - return postCommentService.convertTo(postComments); + + List result = postCommentService.convertTo(postComments); + + return postCommentService.filterIpAddress(result); } @GetMapping("{postId:\\d+}/comments/tree_view") @@ -102,7 +108,8 @@ public class PostController { public Page listCommentsTree(@PathVariable("postId") Integer postId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return postCommentService.pageVosBy(postId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + Page result = postCommentService.pageVosBy(postId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + return postCommentService.filterIpAddress(result); } @GetMapping("{postId:\\d+}/comments/list_view") @@ -110,7 +117,8 @@ public class PostController { public Page listComments(@PathVariable("postId") Integer postId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return postCommentService.pageWithParentVoBy(postId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + Page result = postCommentService.pageWithParentVoBy(postId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + return postCommentService.filterIpAddress(result); } @PostMapping("comments") diff --git a/src/main/java/run/halo/app/controller/content/api/SheetController.java b/src/main/java/run/halo/app/controller/content/api/SheetController.java index 46a129909..2fab00766 100644 --- a/src/main/java/run/halo/app/controller/content/api/SheetController.java +++ b/src/main/java/run/halo/app/controller/content/api/SheetController.java @@ -48,7 +48,8 @@ public class SheetController { public Page listTopComments(@PathVariable("sheetId") Integer sheetId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return sheetCommentService.pageTopCommentsBy(sheetId, CommentStatus.PUBLISHED, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + Page result = sheetCommentService.pageTopCommentsBy(sheetId, CommentStatus.PUBLISHED, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + return sheetCommentService.filterIpAddress(result); } @GetMapping("{sheetId:\\d+}/comments/{commentParentId:\\d+}/children") @@ -58,7 +59,8 @@ public class SheetController { // Find all children comments List sheetComments = sheetCommentService.listChildrenBy(sheetId, commentParentId, CommentStatus.PUBLISHED, sort); // Convert to base comment dto - return sheetCommentService.convertTo(sheetComments); + List result = sheetCommentService.convertTo(sheetComments); + return sheetCommentService.filterIpAddress(result); } @@ -67,7 +69,8 @@ public class SheetController { public Page listCommentsTree(@PathVariable("sheetId") Integer sheetId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return sheetCommentService.pageVosBy(sheetId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + Page result = sheetCommentService.pageVosBy(sheetId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + return sheetCommentService.filterIpAddress(result); } @GetMapping("{sheetId:\\d+}/comments/list_view") @@ -75,7 +78,8 @@ public class SheetController { public Page listComments(@PathVariable("sheetId") Integer sheetId, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @SortDefault(sort = "createTime", direction = DESC) Sort sort) { - return sheetCommentService.pageWithParentVoBy(sheetId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + Page result = sheetCommentService.pageWithParentVoBy(sheetId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); + return sheetCommentService.filterIpAddress(result); } @PostMapping("comments") From 76e6f6eb2be471195e649e0e0152742c5a0342c6 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Wed, 29 May 2019 21:11:11 +0800 Subject: [PATCH 15/31] Update anatole theme. --- .../resources/templates/themes/anatole/404.ftl | 12 ++++++++++++ .../resources/templates/themes/anatole/500.ftl | 12 ++++++++++++ .../templates/themes/anatole/README.md | 18 ++++++++++++++++++ .../templates/themes/anatole/theme.yaml | 2 +- 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/templates/themes/anatole/404.ftl create mode 100644 src/main/resources/templates/themes/anatole/500.ftl create mode 100644 src/main/resources/templates/themes/anatole/README.md diff --git a/src/main/resources/templates/themes/anatole/404.ftl b/src/main/resources/templates/themes/anatole/404.ftl new file mode 100644 index 000000000..b2d2658b8 --- /dev/null +++ b/src/main/resources/templates/themes/anatole/404.ftl @@ -0,0 +1,12 @@ + + + + + + Not Found + + +
+

The page you are looking for is missing

+
+ \ No newline at end of file diff --git a/src/main/resources/templates/themes/anatole/500.ftl b/src/main/resources/templates/themes/anatole/500.ftl new file mode 100644 index 000000000..598fd68cd --- /dev/null +++ b/src/main/resources/templates/themes/anatole/500.ftl @@ -0,0 +1,12 @@ + + + + + + Internal Error + + +
+

The page you are looking for is error

+
+ \ No newline at end of file diff --git a/src/main/resources/templates/themes/anatole/README.md b/src/main/resources/templates/themes/anatole/README.md new file mode 100644 index 000000000..6cb7723c2 --- /dev/null +++ b/src/main/resources/templates/themes/anatole/README.md @@ -0,0 +1,18 @@ +

halo-theme-anatole

+ +## 说明 + +该主题的原作者为 [Caicai](https://www.caicai.me),非常感谢做出这么优秀的主题。 + +原主题地址:[https://github.com/hi-caicai/farbox-theme-Anatole](https://github.com/hi-caicai/farbox-theme-Anatole) + +## 预览截图 + +![index](https://i.loli.net/2019/05/29/5ced6a1f70be890881.png) +![settings](https://i.loli.net/2019/05/29/5ced6a1fddb4562005.png) + +## 使用方法 + +1. 克隆或者[下载](https://github.com/halo-dev/halo-theme-anatole/releases)。 +2. 压缩为 zip 压缩包之后在后台的主题设置直接上传即可使用。 + diff --git a/src/main/resources/templates/themes/anatole/theme.yaml b/src/main/resources/templates/themes/anatole/theme.yaml index 30f0df637..8b352bf15 100644 --- a/src/main/resources/templates/themes/anatole/theme.yaml +++ b/src/main/resources/templates/themes/anatole/theme.yaml @@ -5,5 +5,5 @@ author: website: https://www.caicai.me description: A other Halo theme logo: https://avatars1.githubusercontent.com/u/1811819?s=460&v=4 -website: https://github.com/hi-caicai/farbox-theme-Anatole +repo: https://github.com/halo-dev/halo-theme-anatole version: 1.0 \ No newline at end of file From 084902c719b1201f83de1ea86ceb3ea3f02e3c1b Mon Sep 17 00:00:00 2001 From: ruibaby Date: Wed, 29 May 2019 23:40:49 +0800 Subject: [PATCH 16/31] Support import post. --- .../admin/api/BackupController.java | 20 ++++++++++++++++ .../theme/config/support/ThemeProperty.java | 2 ++ .../run/halo/app/model/dto/BackupDTO.java | 23 +++++++++++++++++++ .../run/halo/app/service/BackupService.java | 13 +++++++++++ .../run/halo/app/service/PostService.java | 3 ++- .../app/service/impl/BackupServiceImpl.java | 22 ++++++++++++++++++ .../app/service/impl/PostServiceImpl.java | 16 +++++++++++-- 7 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 src/main/java/run/halo/app/model/dto/BackupDTO.java diff --git a/src/main/java/run/halo/app/controller/admin/api/BackupController.java b/src/main/java/run/halo/app/controller/admin/api/BackupController.java index 21b178712..8f7dca762 100644 --- a/src/main/java/run/halo/app/controller/admin/api/BackupController.java +++ b/src/main/java/run/halo/app/controller/admin/api/BackupController.java @@ -1,9 +1,18 @@ package run.halo.app.controller.admin.api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import run.halo.app.model.dto.post.BasePostDetailDTO; import run.halo.app.service.BackupService; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; + /** * Backup controller * @@ -19,4 +28,15 @@ public class BackupController { public BackupController(BackupService backupService) { this.backupService = backupService; } + + @PostMapping("import/markdowns") + @ApiOperation("Import markdowns") + public List backupMarkdowns(@RequestPart("files") MultipartFile[] files) throws IOException { + List result = new LinkedList<>(); + for (MultipartFile file : files) { + BasePostDetailDTO post = backupService.importMarkdowns(file); + result.add(post); + } + return result; + } } diff --git a/src/main/java/run/halo/app/handler/theme/config/support/ThemeProperty.java b/src/main/java/run/halo/app/handler/theme/config/support/ThemeProperty.java index 50bdd14da..6b79f41de 100644 --- a/src/main/java/run/halo/app/handler/theme/config/support/ThemeProperty.java +++ b/src/main/java/run/halo/app/handler/theme/config/support/ThemeProperty.java @@ -28,6 +28,8 @@ public class ThemeProperty { */ private String website; + private String repo; + /** * Theme description. */ diff --git a/src/main/java/run/halo/app/model/dto/BackupDTO.java b/src/main/java/run/halo/app/model/dto/BackupDTO.java new file mode 100644 index 000000000..ca37da6dd --- /dev/null +++ b/src/main/java/run/halo/app/model/dto/BackupDTO.java @@ -0,0 +1,23 @@ +package run.halo.app.model.dto; + +import lombok.Data; + +import java.util.Date; + +/** + * @author ryanwang + * @date 2019-05-25 + */ +@Data +public class BackupDTO { + + private String fileName; + + private Date createTime; + + private String fileSize; + + private String fileType; + + private String type; +} diff --git a/src/main/java/run/halo/app/service/BackupService.java b/src/main/java/run/halo/app/service/BackupService.java index fe25e70af..6426fa0c6 100644 --- a/src/main/java/run/halo/app/service/BackupService.java +++ b/src/main/java/run/halo/app/service/BackupService.java @@ -1,5 +1,10 @@ package run.halo.app.service; +import org.springframework.web.multipart.MultipartFile; +import run.halo.app.model.dto.post.BasePostDetailDTO; + +import java.io.IOException; + /** * Backup service interface. * @@ -7,4 +12,12 @@ package run.halo.app.service; * @date 19-4-26 */ public interface BackupService { + + /** + * Backup posts and sheets + * + * @param file file + * @return post info + */ + BasePostDetailDTO importMarkdowns(MultipartFile file) throws IOException; } diff --git a/src/main/java/run/halo/app/service/PostService.java b/src/main/java/run/halo/app/service/PostService.java index 953669a55..8368fef2a 100755 --- a/src/main/java/run/halo/app/service/PostService.java +++ b/src/main/java/run/halo/app/service/PostService.java @@ -101,10 +101,11 @@ public interface PostService extends BasePostService { * Import post from markdown document. * * @param markdown markdown document. + * @param filename filename * @return imported post */ @NonNull - PostDetailVO importMarkdown(@NonNull String markdown); + PostDetailVO importMarkdown(@NonNull String markdown, String filename); /** * Export post to markdown file by post id. diff --git a/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java b/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java index 5e800df1a..88df39af0 100644 --- a/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java @@ -1,7 +1,13 @@ package run.halo.app.service.impl; +import cn.hutool.core.io.IoUtil; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import run.halo.app.model.dto.post.BasePostDetailDTO; import run.halo.app.service.BackupService; +import run.halo.app.service.PostService; + +import java.io.IOException; /** * Backup service implementation. @@ -12,4 +18,20 @@ import run.halo.app.service.BackupService; @Service public class BackupServiceImpl implements BackupService { + private final PostService postService; + + public BackupServiceImpl(PostService postService) { + this.postService = postService; + } + + @Override + public BasePostDetailDTO importMarkdowns(MultipartFile file) throws IOException { + + // Read markdown content. + String markdown = IoUtil.read(file.getInputStream(), "UTF-8"); + + // TODO sheet import + + return postService.importMarkdown(markdown, file.getOriginalFilename()); + } } diff --git a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java index 206287720..f364fbfb7 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -2,6 +2,7 @@ package run.halo.app.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.StrBuilder; +import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationEventPublisher; @@ -277,7 +278,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe } @Override - public PostDetailVO importMarkdown(String markdown) { + public PostDetailVO importMarkdown(String markdown, String filename) { Assert.notNull(markdown, "Markdown document must not be null"); // Render markdown to html document. @@ -345,8 +346,19 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe } } + if (null == post.getStatus()) { + post.setStatus(PostStatus.PUBLISHED); + } + + if (StrUtil.isEmpty(post.getTitle())) { + post.setTitle(filename); + } + + if (StrUtil.isEmpty(post.getUrl())) { + post.setUrl(DateUtil.format(new Date(), "yyyyMMddHHmmss")); + } + post.setOriginalContent(markdown); - post.setFormatContent(content); return createBy(post, tagIds, categoryIds, false); } From bf6b11eb2e15fff8322434629169a921410540ec Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 30 May 2019 14:34:11 +0800 Subject: [PATCH 17/31] Fix NPE when importing markdown files --- src/main/java/run/halo/app/service/TagService.java | 1 + .../java/run/halo/app/service/impl/CategoryServiceImpl.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/run/halo/app/service/TagService.java b/src/main/java/run/halo/app/service/TagService.java index 1992eb2ce..afd05df33 100644 --- a/src/main/java/run/halo/app/service/TagService.java +++ b/src/main/java/run/halo/app/service/TagService.java @@ -31,6 +31,7 @@ public interface TagService extends CrudService { * @param name name * @return Tag */ + @Nullable Tag getByName(@NonNull String name); /** diff --git a/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java b/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java index 0d8b8509a..fff4aa1cc 100644 --- a/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java @@ -16,6 +16,7 @@ import run.halo.app.repository.CategoryRepository; import run.halo.app.service.CategoryService; import run.halo.app.service.PostCategoryService; import run.halo.app.service.base.AbstractCrudService; +import run.halo.app.utils.ServiceUtils; import java.util.Collections; import java.util.LinkedList; @@ -56,7 +57,7 @@ public class CategoryServiceImpl extends AbstractCrudService } // Check parent id - if (category.getParentId() > 0) { + if (!ServiceUtils.isEmptyId(category.getParentId())) { count = categoryRepository.countById(category.getParentId()); if (count == 0) { From 0c8955dfcf33e4dbeaf390180438e3b259519a3e Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 30 May 2019 23:06:59 +0800 Subject: [PATCH 18/31] Complete theme updating --- .../controller/admin/api/ThemeController.java | 8 ++ .../app/exception/ThemeUpdateException.java | 18 ++++ .../impl/YamlThemePropertyResolver.java | 9 +- .../theme/config/support/ThemeProperty.java | 10 ++- .../run/halo/app/service/ThemeService.java | 19 ++++ .../app/service/impl/ThemeServiceImpl.java | 90 +++++++++++++++++++ .../java/run/halo/app/utils/FileUtils.java | 6 +- src/main/resources/application-dev.yaml | 4 +- .../templates/themes/anatole/theme.yaml | 1 + src/test/java/run/halo/app/utils/GitTest.java | 38 ++++++-- 10 files changed, 190 insertions(+), 13 deletions(-) create mode 100644 src/main/java/run/halo/app/exception/ThemeUpdateException.java diff --git a/src/main/java/run/halo/app/controller/admin/api/ThemeController.java b/src/main/java/run/halo/app/controller/admin/api/ThemeController.java index 4734e1386..5955ee053 100644 --- a/src/main/java/run/halo/app/controller/admin/api/ThemeController.java +++ b/src/main/java/run/halo/app/controller/admin/api/ThemeController.java @@ -117,6 +117,13 @@ public class ThemeController { themeSettingService.save(settings, themeId); } + @PutMapping("{themeId}") + public ThemeProperty updateTheme(@PathVariable("themeId") String themeId, + @RequestPart(name = "file", required = false) MultipartFile file) { + + return themeService.update(themeId); + } + @DeleteMapping("{themeId}") @ApiOperation("Deletes a theme") public void deleteBy(@PathVariable("themeId") String themeId) { @@ -145,4 +152,5 @@ public class ThemeController { public BaseResponse exists(@RequestParam(value = "template") String template) { return BaseResponse.ok(themeService.templateExists(template)); } + } diff --git a/src/main/java/run/halo/app/exception/ThemeUpdateException.java b/src/main/java/run/halo/app/exception/ThemeUpdateException.java new file mode 100644 index 000000000..78b2bb276 --- /dev/null +++ b/src/main/java/run/halo/app/exception/ThemeUpdateException.java @@ -0,0 +1,18 @@ +package run.halo.app.exception; + +/** + * Theme update exception. + * + * @author johnniang + * @date 19-5-30 + */ +public class ThemeUpdateException extends ServiceException { + + public ThemeUpdateException(String message) { + super(message); + } + + public ThemeUpdateException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/run/halo/app/handler/theme/config/impl/YamlThemePropertyResolver.java b/src/main/java/run/halo/app/handler/theme/config/impl/YamlThemePropertyResolver.java index 8b3ef5f0b..a76be9e41 100644 --- a/src/main/java/run/halo/app/handler/theme/config/impl/YamlThemePropertyResolver.java +++ b/src/main/java/run/halo/app/handler/theme/config/impl/YamlThemePropertyResolver.java @@ -1,6 +1,8 @@ package run.halo.app.handler.theme.config.impl; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.springframework.stereotype.Service; import org.springframework.util.Assert; @@ -18,7 +20,12 @@ import java.io.IOException; @Service public class YamlThemePropertyResolver implements ThemePropertyResolver { - private final ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory()); + private final ObjectMapper yamlMapper; + + public YamlThemePropertyResolver() { + yamlMapper = new ObjectMapper(new YAMLFactory()); + yamlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } @Override public ThemeProperty resolve(String content) throws IOException { diff --git a/src/main/java/run/halo/app/handler/theme/config/support/ThemeProperty.java b/src/main/java/run/halo/app/handler/theme/config/support/ThemeProperty.java index 6b79f41de..dcae2ae0c 100644 --- a/src/main/java/run/halo/app/handler/theme/config/support/ThemeProperty.java +++ b/src/main/java/run/halo/app/handler/theme/config/support/ThemeProperty.java @@ -28,6 +28,14 @@ public class ThemeProperty { */ private String website; + /** + * Theme remote branch.(default is master) + */ + private String branch; + + /** + * Theme repo url. + */ private String repo; /** @@ -51,7 +59,7 @@ public class ThemeProperty { private Author author; /** - * Theme path. + * Theme full path. */ private String themePath; diff --git a/src/main/java/run/halo/app/service/ThemeService.java b/src/main/java/run/halo/app/service/ThemeService.java index 0204573f9..1835e835d 100644 --- a/src/main/java/run/halo/app/service/ThemeService.java +++ b/src/main/java/run/halo/app/service/ThemeService.java @@ -71,6 +71,16 @@ public interface ThemeService { */ String CUSTOM_SHEET_PREFIX = "sheet_"; + /** + * Theme provider remote name. + */ + String THEME_PROVIDER_REMOTE_NAME = "theme-provider"; + + /** + * Default remote branch name. + */ + String DEFAULT_REMOTE_BRANCH = "master"; + /** * Get theme property by theme id. * @@ -241,4 +251,13 @@ public interface ThemeService { * Reloads themes */ void reload(); + + /** + * Updates theme by theme id. + * + * @param themeId theme id must not be blank + * @return theme property + */ + @NonNull + ThemeProperty update(@NonNull String themeId); } diff --git a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java index 11bf16cb6..d9f161ab0 100644 --- a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java @@ -3,7 +3,14 @@ package run.halo.app.service.impl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.MergeCommand; +import org.eclipse.jgit.api.PullResult; import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.errors.RepositoryNotFoundException; +import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.merge.MergeStrategy; +import org.eclipse.jgit.transport.RemoteConfig; +import org.eclipse.jgit.transport.URIish; import org.springframework.context.ApplicationEventPublisher; import org.springframework.http.ResponseEntity; import org.springframework.lang.NonNull; @@ -32,7 +39,9 @@ import run.halo.app.utils.FilenameUtils; import run.halo.app.utils.HaloUtils; import java.io.ByteArrayInputStream; +import java.io.File; import java.io.IOException; +import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -460,6 +469,87 @@ public class ThemeServiceImpl implements ThemeService { eventPublisher.publishEvent(new ThemeUpdatedEvent(this)); } + @Override + public ThemeProperty update(String themeId) { + Assert.hasText(themeId, "Theme id must not be blank"); + + ThemeProperty updatingTheme = getThemeOfNonNullBy(themeId); + + try { + pullFromGit(updatingTheme); + } catch (Exception e) { + throw new ThemeUpdateException("主题更新失败!您与主题作者可能同时更改了同一个文件,您也可以尝试删除主题并重新拉取最新的主题", e).setErrorData(themeId); + } + + eventPublisher.publishEvent(new ThemeUpdatedEvent(this)); + + return getThemeOfNonNullBy(themeId); + } + + private void pullFromGit(@NonNull ThemeProperty themeProperty) throws IOException, GitAPIException, URISyntaxException { + Assert.notNull(themeProperty, "Theme property must not be null"); + + // Get branch + String branch = StringUtils.isBlank(themeProperty.getBranch()) ? + DEFAULT_REMOTE_BRANCH : themeProperty.getBranch(); + + File themeFolder = Paths.get(themeProperty.getThemePath()).toFile(); + // Open the theme path + Git git; + + try { + git = Git.open(themeFolder); + } catch (RepositoryNotFoundException e) { + // Repository is not initialized + git = Git.init().setDirectory(themeFolder).call(); + } + + // Force to set remote name + git.remoteRemove().setRemoteName(THEME_PROVIDER_REMOTE_NAME).call(); + RemoteConfig remoteConfig = git.remoteAdd() + .setName(THEME_PROVIDER_REMOTE_NAME) + .setUri(new URIish(themeProperty.getRepo())) + .call(); + + // Add all changes + git.add() + .addFilepattern(".") + .call(); + // Commit the changes + git.commit().setMessage("Commit by halo automatically").call(); + + // Check out to specified branch + if (!StringUtils.equalsIgnoreCase(branch, git.getRepository().getBranch())) { + boolean present = git.branchList() + .call() + .stream() + .map(Ref::getName) + .anyMatch(name -> StringUtils.equalsIgnoreCase(name, branch)); + + git.checkout() + .setCreateBranch(true) + .setForced(!present) + .setName(branch) + .call(); + } + + // Pull with rebasing + PullResult pullResult = git.pull() + .setRemote(remoteConfig.getName()) + .setRemoteBranchName(branch) + .setRebase(true) + .call(); + + if (!pullResult.isSuccessful()) { + log.debug("Rebase result: [{}]", pullResult.getRebaseResult()); + log.debug("Merge result: [{}]", pullResult.getMergeResult()); + + throw new ThemeUpdateException("拉取失败!您与主题作者可能同时更改了同一个文件"); + } + // Close git + git.close(); + } + /** * Clones theme from git. * diff --git a/src/main/java/run/halo/app/utils/FileUtils.java b/src/main/java/run/halo/app/utils/FileUtils.java index d7aac7685..033a9343e 100644 --- a/src/main/java/run/halo/app/utils/FileUtils.java +++ b/src/main/java/run/halo/app/utils/FileUtils.java @@ -64,7 +64,7 @@ public class FileUtils { * * @param deletingPath deleting path must not be null */ - public static void deleteFolder(Path deletingPath) throws IOException { + public static void deleteFolder(@NonNull Path deletingPath) throws IOException { Assert.notNull(deletingPath, "Deleting path must not be null"); log.debug("Deleting [{}]", deletingPath); @@ -249,9 +249,9 @@ public class FileUtils { /** * Deletes folder quietly. * - * @param deletingPath deleting path must not be null + * @param deletingPath deleting path */ - public static void deleteFolderQuietly(@NonNull Path deletingPath) { + public static void deleteFolderQuietly(@Nullable Path deletingPath) { try { if (deletingPath != null) { FileUtils.deleteFolder(deletingPath); diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml index b81ba59ba..39c53a893 100755 --- a/src/main/resources/application-dev.yaml +++ b/src/main/resources/application-dev.yaml @@ -44,8 +44,8 @@ spring: open-in-view: false servlet: multipart: - max-file-size: 10MB - max-request-size: 10MB + max-file-size: 10240MB + max-request-size: 10240MB cache: type: none diff --git a/src/main/resources/templates/themes/anatole/theme.yaml b/src/main/resources/templates/themes/anatole/theme.yaml index 8b352bf15..53cf5f148 100644 --- a/src/main/resources/templates/themes/anatole/theme.yaml +++ b/src/main/resources/templates/themes/anatole/theme.yaml @@ -5,5 +5,6 @@ author: website: https://www.caicai.me description: A other Halo theme logo: https://avatars1.githubusercontent.com/u/1811819?s=460&v=4 +website: https://github.com/halo-dev/halo-theme-anatole repo: https://github.com/halo-dev/halo-theme-anatole version: 1.0 \ No newline at end of file diff --git a/src/test/java/run/halo/app/utils/GitTest.java b/src/test/java/run/halo/app/utils/GitTest.java index 75558c3c5..93bfbc752 100644 --- a/src/test/java/run/halo/app/utils/GitTest.java +++ b/src/test/java/run/halo/app/utils/GitTest.java @@ -1,15 +1,23 @@ package run.halo.app.utils; +import lombok.extern.slf4j.Slf4j; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.Status; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.errors.RepositoryNotFoundException; +import org.eclipse.jgit.transport.RemoteConfig; +import org.eclipse.jgit.transport.URIish; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import java.io.IOException; +import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.List; +import java.util.Set; /** * Git test. @@ -17,17 +25,23 @@ import java.nio.file.Path; * @author johnniang * @date 19-5-21 */ -@Ignore +@Slf4j public class GitTest { - private final Path tempPath; + private static Path tempPath; - public GitTest() throws IOException { + @BeforeClass + public static void setUp() throws IOException { tempPath = Files.createTempDirectory("git-test"); } + @AfterClass + public static void destroy() throws IOException { + FileUtils.deleteFolder(tempPath); + } + @Test(expected = RepositoryNotFoundException.class) - public void openTest() throws IOException { + public void openFailureTest() throws IOException { Git.open(tempPath.toFile()); } @@ -37,17 +51,29 @@ public class GitTest { } @Test - public void statusTest() throws GitAPIException { + public void statusSuccessfulTest() throws GitAPIException { Git git = Git.init().setDirectory(tempPath.toFile()).call(); - git.status().call(); + Status status = git.status().call(); + log.debug("Status missing: [{}]", status.getMissing()); } @Test + public void remoteAddTest() throws GitAPIException, URISyntaxException { + Git git = Git.init().setDirectory(tempPath.toFile()).call(); + git.remoteRemove().setRemoteName("theme-provider").call(); + git.remoteAdd().setName("theme-provider").setUri(new URIish("https://github.com/halo-dev/halo-theme-pinghsu.git")).call(); + List remoteConfigs = git.remoteList().call(); + remoteConfigs.forEach(remoteConfig -> log.debug("name: [{}], url: [{}]", remoteConfig.getName(), remoteConfig.getURIs())); + } + + @Test + @Ignore public void cloneTest() throws GitAPIException { cloneRepository(); } @Test + @Ignore public void pullTest() throws GitAPIException { Git git = cloneRepository(); git.pull().call(); From 8e9f4dff06adf0ea4ad574d88085a0d38aa4aa13 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Thu, 30 May 2019 23:23:28 +0800 Subject: [PATCH 19/31] Fixed ali oss upload error. --- .../app/handler/file/AliYunFileHandler.java | 3 ++- .../app/handler/file/QnYunFileHandler.java | 19 ++++++++++--------- .../app/handler/file/UpYunFileHandler.java | 6 +++--- .../model/properties/AliYunProperties.java | 7 ++++++- .../app/model/properties/QnYunProperties.java | 12 ++++++------ .../app/model/properties/UpYunProperties.java | 2 +- .../app/service/impl/OptionServiceImpl.java | 2 +- 7 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java b/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java index 554499024..c2de320aa 100644 --- a/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java @@ -46,6 +46,7 @@ public class AliYunFileHandler implements FileHandler { String ossAccessKey = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_KEY).toString(); String ossAccessSecret = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_ACCESS_SECRET).toString(); String ossBucketName = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_BUCKET_NAME).toString(); + String ossStyleRule = optionService.getByPropertyOfNonNull(AliYunProperties.OSS_STYLE_RULE).toString(); String ossSource = StringUtils.join("https://", ossBucketName, "." + ossEndPoint); // Init OSS client @@ -78,7 +79,7 @@ public class AliYunFileHandler implements FileHandler { BufferedImage image = ImageIO.read(file.getInputStream()); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(filePath); + uploadResult.setThumbPath(StringUtils.isBlank(ossStyleRule) ? filePath : filePath + ossStyleRule); } return uploadResult; diff --git a/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java b/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java index 63650cda5..8747cf9d6 100644 --- a/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java @@ -53,11 +53,11 @@ public class QnYunFileHandler implements FileHandler { // Get all config Zone zone = optionService.getQnYunZone(); - String accessKey = optionService.getByPropertyOfNonNull(QnYunProperties.ACCESS_KEY).toString(); - String secretKey = optionService.getByPropertyOfNonNull(QnYunProperties.SECRET_KEY).toString(); - String bucket = optionService.getByPropertyOfNonNull(QnYunProperties.BUCKET).toString(); - String domain = optionService.getByPropertyOfNonNull(QnYunProperties.DOMAIN).toString(); - String smallUrl = optionService.getByPropertyOrDefault(QnYunProperties.SMALL_URL, String.class, ""); + String accessKey = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_ACCESS_KEY).toString(); + String secretKey = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_SECRET_KEY).toString(); + String bucket = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_BUCKET).toString(); + String domain = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_DOMAIN).toString(); + String styleRule = optionService.getByPropertyOrDefault(QnYunProperties.OSS_STYLE_RULE, String.class, ""); // Create configuration Configuration configuration = new Configuration(zone); @@ -109,9 +109,10 @@ public class QnYunFileHandler implements FileHandler { result.setWidth(putSet.getWidth()); result.setHeight(putSet.getHeight()); result.setMediaType(MediaType.valueOf(Objects.requireNonNull(file.getContentType()))); + result.setSize(file.getSize()); if (isImageType(result.getMediaType())) { - result.setThumbPath(StringUtils.isBlank(smallUrl) ? filePath : filePath + smallUrl); + result.setThumbPath(StringUtils.isBlank(styleRule) ? filePath : filePath + styleRule); } return result; @@ -130,9 +131,9 @@ public class QnYunFileHandler implements FileHandler { // Get all config Zone zone = optionService.getQnYunZone(); - String accessKey = optionService.getByPropertyOfNonNull(QnYunProperties.ACCESS_KEY).toString(); - String secretKey = optionService.getByPropertyOfNonNull(QnYunProperties.SECRET_KEY).toString(); - String bucket = optionService.getByPropertyOfNonNull(QnYunProperties.BUCKET).toString(); + String accessKey = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_ACCESS_KEY).toString(); + String secretKey = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_SECRET_KEY).toString(); + String bucket = optionService.getByPropertyOfNonNull(QnYunProperties.OSS_BUCKET).toString(); // Create configuration Configuration configuration = new Configuration(zone); diff --git a/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java b/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java index eea0bd2d1..2ff2b06d3 100644 --- a/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java @@ -44,8 +44,8 @@ public class UpYunFileHandler implements FileHandler { String ossBucket = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_BUCKET).toString(); String ossDomain = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_DOMAIN).toString(); String ossOperator = optionService.getByPropertyOfNonNull(UpYunProperties.OSS_OPERATOR).toString(); - // small url can be null - String ossSmallUrl = optionService.getByPropertyOrDefault(UpYunProperties.OSS_SMALL_URL, String.class, ""); + // style rule can be null + String ossStyleRule = optionService.getByPropertyOrDefault(UpYunProperties.OSS_STYLE_RULE, String.class, ""); // Create up yun UpYun upYun = new UpYun(ossBucket, ossOperator, ossPassword); @@ -86,7 +86,7 @@ public class UpYunFileHandler implements FileHandler { BufferedImage image = ImageIO.read(file.getInputStream()); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(StringUtils.isBlank(ossSmallUrl) ? filePath : filePath + ossSmallUrl); + uploadResult.setThumbPath(StringUtils.isBlank(ossStyleRule) ? filePath : filePath + ossStyleRule); } return uploadResult; diff --git a/src/main/java/run/halo/app/model/properties/AliYunProperties.java b/src/main/java/run/halo/app/model/properties/AliYunProperties.java index 1f2ff491c..7e4b076cf 100644 --- a/src/main/java/run/halo/app/model/properties/AliYunProperties.java +++ b/src/main/java/run/halo/app/model/properties/AliYunProperties.java @@ -26,7 +26,12 @@ public enum AliYunProperties implements PropertyEnum { /** * Aliyun oss access secret. */ - OSS_ACCESS_SECRET("oss_aliyun_access_secret", String.class, ""); + OSS_ACCESS_SECRET("oss_aliyun_access_secret", String.class, ""), + + /** + * Aliyun oss style rule + */ + OSS_STYLE_RULE("oss_aliyun_style_rule", String.class, ""); private final String value; diff --git a/src/main/java/run/halo/app/model/properties/QnYunProperties.java b/src/main/java/run/halo/app/model/properties/QnYunProperties.java index 350c0da4f..01d76ba76 100644 --- a/src/main/java/run/halo/app/model/properties/QnYunProperties.java +++ b/src/main/java/run/halo/app/model/properties/QnYunProperties.java @@ -8,17 +8,17 @@ package run.halo.app.model.properties; */ public enum QnYunProperties implements PropertyEnum { - ZONE("oss_qiniu_zone", String.class, "auto"), + OSS_ZONE("oss_qiniu_zone", String.class, "auto"), - ACCESS_KEY("oss_qiniu_access_key", String.class, ""), + OSS_ACCESS_KEY("oss_qiniu_access_key", String.class, ""), - SECRET_KEY("oss_qiniu_secret_key", String.class, ""), + OSS_SECRET_KEY("oss_qiniu_secret_key", String.class, ""), - DOMAIN("oss_qiniu_domain", String.class, ""), + OSS_DOMAIN("oss_qiniu_domain", String.class, ""), - BUCKET("oss_qiniu_bucket", String.class, ""), + OSS_BUCKET("oss_qiniu_bucket", String.class, ""), - SMALL_URL("oss_qiniu_small_url", String.class, ""); + OSS_STYLE_RULE("oss_qiniu_style_rule", String.class, ""); private final String value; diff --git a/src/main/java/run/halo/app/model/properties/UpYunProperties.java b/src/main/java/run/halo/app/model/properties/UpYunProperties.java index a85123018..11ffc4f60 100644 --- a/src/main/java/run/halo/app/model/properties/UpYunProperties.java +++ b/src/main/java/run/halo/app/model/properties/UpYunProperties.java @@ -18,7 +18,7 @@ public enum UpYunProperties implements PropertyEnum { OSS_OPERATOR("oss_upyun_operator", String.class, ""), - OSS_SMALL_URL("oss_upyun_small_url", String.class, ""); + OSS_STYLE_RULE("oss_upyun_style_rule", String.class, ""); private final String defaultValue; private String value; diff --git a/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java b/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java index ef3c66574..6ee06ff78 100644 --- a/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java @@ -312,7 +312,7 @@ public class OptionServiceImpl extends AbstractCrudService impl @Override public Zone getQnYunZone() { - return getByProperty(QnYunProperties.ZONE).map(qiniuZone -> { + return getByProperty(QnYunProperties.OSS_ZONE).map(qiniuZone -> { Zone zone; switch (qiniuZone.toString()) { From 78d7f17a1bfb4ce879e256024800af79b106d733 Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 30 May 2019 23:37:51 +0800 Subject: [PATCH 20/31] Resolve test error --- src/test/java/run/halo/app/utils/GitTest.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/test/java/run/halo/app/utils/GitTest.java b/src/test/java/run/halo/app/utils/GitTest.java index 93bfbc752..83c36ab00 100644 --- a/src/test/java/run/halo/app/utils/GitTest.java +++ b/src/test/java/run/halo/app/utils/GitTest.java @@ -7,10 +7,7 @@ import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.transport.RemoteConfig; import org.eclipse.jgit.transport.URIish; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.*; import java.io.IOException; import java.net.URISyntaxException; @@ -28,15 +25,15 @@ import java.util.Set; @Slf4j public class GitTest { - private static Path tempPath; + private Path tempPath; - @BeforeClass - public static void setUp() throws IOException { + @Before + public void setUp() throws IOException { tempPath = Files.createTempDirectory("git-test"); } - @AfterClass - public static void destroy() throws IOException { + @After + public void destroy() throws IOException { FileUtils.deleteFolder(tempPath); } From 9aba7ca37c0e1f7a33762b9cc505ad1238e80143 Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 30 May 2019 23:48:19 +0800 Subject: [PATCH 21/31] Fix test error again --- .../java/run/halo/app/service/impl/OptionServiceImplTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/run/halo/app/service/impl/OptionServiceImplTest.java b/src/test/java/run/halo/app/service/impl/OptionServiceImplTest.java index 834e0a8d6..00f4ca678 100644 --- a/src/test/java/run/halo/app/service/impl/OptionServiceImplTest.java +++ b/src/test/java/run/halo/app/service/impl/OptionServiceImplTest.java @@ -80,7 +80,7 @@ public class OptionServiceImplTest { } private void getQiniuZoneTest(Zone actualZone, Option option) { - QnYunProperties zoneProperty = QnYunProperties.ZONE; + QnYunProperties zoneProperty = QnYunProperties.OSS_ZONE; // Given // given(optionRepository.findByKey(zoneProperty.getValue())).willReturn(Optional.ofNullable(option)); From 294c948ddc2d0102e6faf3394ebd6dc6dc0713ea Mon Sep 17 00:00:00 2001 From: ruibaby Date: Fri, 31 May 2019 00:08:26 +0800 Subject: [PATCH 22/31] Update ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index e385f8ea1..4a908b6b2 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -5,7 +5,8 @@ **我确定我已经查看了** (标注`[ ]`为`[x]`) -- [ ] [Halo 使用文档](https://docs.halo.run/) +- [ ] [Halo 使用文档](https://halo.run/docs) +- [ ] [Halo 论坛](https://bbs.halo.run) - [ ] [Github Wiki 常见问题](https://github.com/halo-dev/halo/wiki/4.-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98) - [ ] [其他 Issues](https://github.com/halo-dev/halo/issues) From e4cfd0a3c6243acbd08fcd7c030220d74126cb04 Mon Sep 17 00:00:00 2001 From: johnniang Date: Fri, 31 May 2019 00:15:18 +0800 Subject: [PATCH 23/31] Add createTime modification feature --- src/main/java/run/halo/app/model/params/PostParam.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/run/halo/app/model/params/PostParam.java b/src/main/java/run/halo/app/model/params/PostParam.java index 159d2ea6a..3f60c45c1 100644 --- a/src/main/java/run/halo/app/model/params/PostParam.java +++ b/src/main/java/run/halo/app/model/params/PostParam.java @@ -12,6 +12,7 @@ import run.halo.app.utils.HaloUtils; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; +import java.util.Date; import java.util.Set; /** @@ -50,6 +51,8 @@ public class PostParam implements InputConverter { @Min(value = 0, message = "Post top priority must not be less than {value}") private Integer topPriority = 0; + private Date createTime; + private PostCreateFrom createFrom = PostCreateFrom.ADMIN; private Set tagIds; From 5c4ace9bc9d7413895c86d4aac5441139546e6d8 Mon Sep 17 00:00:00 2001 From: johnniang Date: Fri, 31 May 2019 00:51:01 +0800 Subject: [PATCH 24/31] Add jackson data format configuration --- src/main/resources/application-dev.yaml | 2 ++ src/main/resources/application-test.yaml | 2 ++ src/main/resources/application.yaml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml index 39c53a893..69fd15605 100755 --- a/src/main/resources/application-dev.yaml +++ b/src/main/resources/application-dev.yaml @@ -13,6 +13,8 @@ server: enabled: true mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain spring: + jackson: + date-format: yyyy-MM-dd HH:mm:ss output: ansi: enabled: always diff --git a/src/main/resources/application-test.yaml b/src/main/resources/application-test.yaml index e05453263..f35f5c74f 100755 --- a/src/main/resources/application-test.yaml +++ b/src/main/resources/application-test.yaml @@ -13,6 +13,8 @@ server: enabled: true mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain spring: + jackson: + date-format: yyyy-MM-dd HH:mm:ss output: ansi: enabled: always diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 16cbddf62..2d54b8234 100755 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -13,6 +13,8 @@ server: enabled: true mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain spring: + jackson: + date-format: yyyy-MM-dd HH:mm:ss devtools: add-properties: false output: From 73c6f754695cbb76fca115e6b4e4864838336d6e Mon Sep 17 00:00:00 2001 From: johnniang Date: Fri, 31 May 2019 15:08:55 +0800 Subject: [PATCH 25/31] Fix comment count bug --- .../admin/api/JournalController.java | 2 +- .../repository/JournalCommentRepository.java | 24 +++++++++++++++--- .../app/repository/PostCommentRepository.java | 22 +++++++++++++--- .../repository/SheetCommentRepository.java | 25 +++++++++++++++---- 4 files changed, 59 insertions(+), 14 deletions(-) diff --git a/src/main/java/run/halo/app/controller/admin/api/JournalController.java b/src/main/java/run/halo/app/controller/admin/api/JournalController.java index d60a29210..708518113 100644 --- a/src/main/java/run/halo/app/controller/admin/api/JournalController.java +++ b/src/main/java/run/halo/app/controller/admin/api/JournalController.java @@ -50,7 +50,7 @@ public class JournalController { } @GetMapping - @ApiOperation("Gets latest journals") + @ApiOperation("Lists journals") public Page pageBy(@PageableDefault(sort = "updateTime", direction = DESC) Pageable pageable, JournalQuery journalQuery) { Page journalPage = journalService.pageBy(journalQuery, pageable); diff --git a/src/main/java/run/halo/app/repository/JournalCommentRepository.java b/src/main/java/run/halo/app/repository/JournalCommentRepository.java index 904d849a8..737ff89a8 100644 --- a/src/main/java/run/halo/app/repository/JournalCommentRepository.java +++ b/src/main/java/run/halo/app/repository/JournalCommentRepository.java @@ -1,8 +1,14 @@ package run.halo.app.repository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.lang.NonNull; import run.halo.app.model.entity.JournalComment; +import run.halo.app.model.projection.CommentChildrenCountProjection; +import run.halo.app.model.projection.CommentCountProjection; import run.halo.app.repository.base.BaseCommentRepository; +import java.util.List; + /** * Journal comment repository. * @@ -11,8 +17,18 @@ import run.halo.app.repository.base.BaseCommentRepository; */ public interface JournalCommentRepository extends BaseCommentRepository { -// @Query("select new run.halo.app.model.projection.CommentCountProjection(count(comment.id), comment.postId) from JournalComment comment where comment.postId in ?1 group by comment.postId") -// @NonNull -// @Override -// List countByPostIds(@NonNull Iterable postIds); + @Query("select new run.halo.app.model.projection.CommentCountProjection(count(comment.id), comment.postId) " + + "from JournalComment comment " + + "where comment.postId in ?1 group by comment.postId") + @NonNull + @Override + List countByPostIds(@NonNull Iterable postIds); + + @Query("select new run.halo.app.model.projection.CommentChildrenCountProjection(count(comment.id), comment.parentId) " + + "from JournalComment comment " + + "where comment.parentId in ?1 " + + "group by comment.parentId") + @NonNull + @Override + List findDirectChildrenCount(@NonNull Iterable commentIds); } diff --git a/src/main/java/run/halo/app/repository/PostCommentRepository.java b/src/main/java/run/halo/app/repository/PostCommentRepository.java index 461801739..974178d46 100644 --- a/src/main/java/run/halo/app/repository/PostCommentRepository.java +++ b/src/main/java/run/halo/app/repository/PostCommentRepository.java @@ -1,8 +1,14 @@ package run.halo.app.repository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.lang.NonNull; import run.halo.app.model.entity.PostComment; +import run.halo.app.model.projection.CommentChildrenCountProjection; +import run.halo.app.model.projection.CommentCountProjection; import run.halo.app.repository.base.BaseCommentRepository; +import java.util.List; + /** * PostComment repository. * @@ -11,9 +17,17 @@ import run.halo.app.repository.base.BaseCommentRepository; */ public interface PostCommentRepository extends BaseCommentRepository { -// @Query("select new run.halo.app.model.projection.CommentCountProjection(count(comment.id), comment.postId) from PostComment comment where comment.postId in ?1 group by comment.postId") -// @NonNull -// @Override -// List countByPostIds(@NonNull Iterable postIds); + @Query("select new run.halo.app.model.projection.CommentCountProjection(count(comment.id), comment.postId) " + + "from PostComment comment " + + "where comment.postId in ?1 group by comment.postId") + @NonNull + @Override + List countByPostIds(@NonNull Iterable postIds); + @Query("select new run.halo.app.model.projection.CommentChildrenCountProjection(count(comment.id), comment.parentId) " + + "from PostComment comment " + + "where comment.parentId in ?1 " + + "group by comment.parentId") + @NonNull + List findDirectChildrenCount(@NonNull Iterable commentIds); } diff --git a/src/main/java/run/halo/app/repository/SheetCommentRepository.java b/src/main/java/run/halo/app/repository/SheetCommentRepository.java index a197e143d..e121952b5 100644 --- a/src/main/java/run/halo/app/repository/SheetCommentRepository.java +++ b/src/main/java/run/halo/app/repository/SheetCommentRepository.java @@ -1,8 +1,14 @@ package run.halo.app.repository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.lang.NonNull; import run.halo.app.model.entity.SheetComment; +import run.halo.app.model.projection.CommentChildrenCountProjection; +import run.halo.app.model.projection.CommentCountProjection; import run.halo.app.repository.base.BaseCommentRepository; +import java.util.List; + /** * Sheet comment repository. * @@ -10,9 +16,18 @@ import run.halo.app.repository.base.BaseCommentRepository; * @date 19-4-24 */ public interface SheetCommentRepository extends BaseCommentRepository { -// -// @Query("select new run.halo.app.model.projection.CommentCountProjection(count(comment.id), comment.postId) from SheetComment comment where comment.postId in ?1 group by comment.postId") -// @NonNull -// @Override -// List countByPostIds(@NonNull Iterable postIds); + + @Query("select new run.halo.app.model.projection.CommentCountProjection(count(comment.id), comment.postId) " + + "from SheetComment comment " + + "where comment.postId in ?1 group by comment.postId") + @NonNull + @Override + List countByPostIds(@NonNull Iterable postIds); + + @Query("select new run.halo.app.model.projection.CommentChildrenCountProjection(count(comment.id), comment.parentId) " + + "from SheetComment comment " + + "where comment.parentId in ?1 " + + "group by comment.parentId") + @NonNull + List findDirectChildrenCount(@NonNull Iterable commentIds); } From fbaff2883b1a583304c124a04c5e9e5181d8406e Mon Sep 17 00:00:00 2001 From: ruibaby Date: Fri, 31 May 2019 17:57:49 +0800 Subject: [PATCH 26/31] Translate some exception message. --- .../java/run/halo/app/controller/core/CommonController.java | 6 +----- .../java/run/halo/app/handler/file/AliYunFileHandler.java | 2 +- .../java/run/halo/app/handler/file/LocalFileHandler.java | 2 +- .../java/run/halo/app/handler/file/QnYunFileHandler.java | 2 +- .../java/run/halo/app/handler/file/SmmsFileHandler.java | 2 +- .../java/run/halo/app/handler/file/UpYunFileHandler.java | 2 +- .../java/run/halo/app/service/impl/BasePostServiceImpl.java | 2 +- .../java/run/halo/app/service/impl/CategoryServiceImpl.java | 2 +- .../java/run/halo/app/service/impl/MenuServiceImpl.java | 2 +- src/main/java/run/halo/app/service/impl/TagServiceImpl.java | 2 +- .../java/run/halo/app/service/impl/ThemeServiceImpl.java | 6 ++---- 11 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/main/java/run/halo/app/controller/core/CommonController.java b/src/main/java/run/halo/app/controller/core/CommonController.java index bae5ee298..c56710cbd 100644 --- a/src/main/java/run/halo/app/controller/core/CommonController.java +++ b/src/main/java/run/halo/app/controller/core/CommonController.java @@ -57,11 +57,7 @@ public class CommonController implements ErrorController { } } - if (statusCode == 500) { - return "redirect:/500"; - } else { - return "redirect:/404"; - } + return statusCode == 500 ? "redirect:/500" : "redirect:/404"; } /** diff --git a/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java b/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java index c2de320aa..4649b0ac6 100644 --- a/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/AliYunFileHandler.java @@ -62,7 +62,7 @@ public class AliYunFileHandler implements FileHandler { // Upload PutObjectResult putObjectResult = ossClient.putObject(ossBucketName, upFilePath, file.getInputStream()); if (putObjectResult == null) { - throw new FileOperationException("Failed to upload file " + file.getOriginalFilename() + " to AliYun " + upFilePath); + throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到阿里云失败 "); } // Response result diff --git a/src/main/java/run/halo/app/handler/file/LocalFileHandler.java b/src/main/java/run/halo/app/handler/file/LocalFileHandler.java index 14cf56bb1..d81454e0a 100644 --- a/src/main/java/run/halo/app/handler/file/LocalFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/LocalFileHandler.java @@ -162,7 +162,7 @@ public class LocalFileHandler implements FileHandler { return uploadResult; } catch (IOException e) { log.error("Failed to upload file to local: " + uploadPath, e); - throw new ServiceException("Failed to upload file to local").setErrorData(uploadPath); + throw new ServiceException("上传附件失败").setErrorData(uploadPath); } } diff --git a/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java b/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java index 8747cf9d6..0d0d406fa 100644 --- a/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/QnYunFileHandler.java @@ -121,7 +121,7 @@ public class QnYunFileHandler implements FileHandler { log.error("QnYun error response: [{}]", ((QiniuException) e).response); } - throw new FileOperationException("Failed to upload file " + file.getOriginalFilename() + " to QnYun", e); + throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到七牛云失败", e); } } diff --git a/src/main/java/run/halo/app/handler/file/SmmsFileHandler.java b/src/main/java/run/halo/app/handler/file/SmmsFileHandler.java index ec0fd7ab8..526abcb09 100644 --- a/src/main/java/run/halo/app/handler/file/SmmsFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/SmmsFileHandler.java @@ -65,7 +65,7 @@ public class SmmsFileHandler implements FileHandler { body.add("smfile", new HttpClientUtils.MultipartFileResource(file.getBytes(), file.getOriginalFilename())); } catch (IOException e) { log.error("Failed to get file input stream", e); - throw new FileOperationException("Failed to upload " + file.getOriginalFilename() + " file", e); + throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到 SM.MS 失败", e); } body.add("ssl", false); diff --git a/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java b/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java index 2ff2b06d3..097f706e2 100644 --- a/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/UpYunFileHandler.java @@ -91,7 +91,7 @@ public class UpYunFileHandler implements FileHandler { return uploadResult; } catch (Exception e) { - throw new FileOperationException("Failed to upload file " + file.getOriginalFilename() + " to UpYun", e); + throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到又拍云失败", e); } } diff --git a/src/main/java/run/halo/app/service/impl/BasePostServiceImpl.java b/src/main/java/run/halo/app/service/impl/BasePostServiceImpl.java index bb28f1cf0..163586804 100644 --- a/src/main/java/run/halo/app/service/impl/BasePostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BasePostServiceImpl.java @@ -342,7 +342,7 @@ public abstract class BasePostServiceImpl extends Abstrac } if (exist) { - throw new AlreadyExistsException("The post url " + post.getUrl() + " has been exist"); + throw new AlreadyExistsException("文章路径 " + post.getUrl() + " 已存在"); } } diff --git a/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java b/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java index fff4aa1cc..2b78e82a6 100644 --- a/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java @@ -53,7 +53,7 @@ public class CategoryServiceImpl extends AbstractCrudService if (count > 0) { log.error("Category has exist already: [{}]", category); - throw new AlreadyExistsException("The category has exist already"); + throw new AlreadyExistsException("该分类已存在"); } // Check parent id diff --git a/src/main/java/run/halo/app/service/impl/MenuServiceImpl.java b/src/main/java/run/halo/app/service/impl/MenuServiceImpl.java index 318fb087b..b91b8b750 100644 --- a/src/main/java/run/halo/app/service/impl/MenuServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/MenuServiceImpl.java @@ -171,7 +171,7 @@ public class MenuServiceImpl extends AbstractCrudService implemen } if (exist) { - throw new AlreadyExistsException("The menu name " + menu.getName() + " already exists"); + throw new AlreadyExistsException("菜单 " + menu.getName() + " 已存在"); } } } diff --git a/src/main/java/run/halo/app/service/impl/TagServiceImpl.java b/src/main/java/run/halo/app/service/impl/TagServiceImpl.java index 9b3310830..e2c49b6ad 100644 --- a/src/main/java/run/halo/app/service/impl/TagServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/TagServiceImpl.java @@ -42,7 +42,7 @@ public class TagServiceImpl extends AbstractCrudService implements if (count > 0) { // If the tag has exist already - throw new AlreadyExistsException("The tag has already exist").setErrorData(tag); + throw new AlreadyExistsException("该标签已存在").setErrorData(tag); } // Get tag name diff --git a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java index d9f161ab0..7fb995568 100644 --- a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java @@ -3,12 +3,10 @@ package run.halo.app.service.impl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.api.MergeCommand; import org.eclipse.jgit.api.PullResult; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.lib.Ref; -import org.eclipse.jgit.merge.MergeStrategy; import org.eclipse.jgit.transport.RemoteConfig; import org.eclipse.jgit.transport.URIish; import org.springframework.context.ApplicationEventPublisher; @@ -371,7 +369,7 @@ public class ThemeServiceImpl implements ThemeService { Assert.notNull(file, "Multipart file must not be null"); if (!StringUtils.endsWithIgnoreCase(file.getOriginalFilename(), ".zip")) { - throw new UnsupportedMediaTypeException("Unsupported theme media type: " + file.getContentType()).setErrorData(file.getOriginalFilename()); + throw new UnsupportedMediaTypeException("不支持的文件类型: " + file.getContentType()).setErrorData(file.getOriginalFilename()); } ZipInputStream zis = null; @@ -395,7 +393,7 @@ public class ThemeServiceImpl implements ThemeService { // Go to the base folder and add the theme into system return add(FileUtils.skipZipParentFolder(themeTempPath)); } catch (IOException e) { - throw new ServiceException("Failed to upload theme file: " + file.getOriginalFilename(), e); + throw new ServiceException("上传主题失败: " + file.getOriginalFilename(), e); } finally { // Close zip input stream FileUtils.closeQuietly(zis); From 9630f9a2bb49acef90c0611373a3ac448d05142c Mon Sep 17 00:00:00 2001 From: ruibaby Date: Fri, 31 May 2019 22:00:29 +0800 Subject: [PATCH 27/31] Update anatole theme. --- src/main/resources/templates/themes/anatole/module/comment.ftl | 2 +- src/main/resources/templates/themes/anatole/post.ftl | 2 +- src/main/resources/templates/themes/anatole/sheet.ftl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/templates/themes/anatole/module/comment.ftl b/src/main/resources/templates/themes/anatole/module/comment.ftl index ddc55a953..8155a358f 100644 --- a/src/main/resources/templates/themes/anatole/module/comment.ftl +++ b/src/main/resources/templates/themes/anatole/module/comment.ftl @@ -1,7 +1,7 @@ <#macro comment post,type> <#if !post.disallowComment!false> - + \ No newline at end of file diff --git a/src/main/resources/templates/themes/anatole/post.ftl b/src/main/resources/templates/themes/anatole/post.ftl index 2776841f1..0b108cf27 100644 --- a/src/main/resources/templates/themes/anatole/post.ftl +++ b/src/main/resources/templates/themes/anatole/post.ftl @@ -91,7 +91,7 @@ -
+
<#include "module/comment.ftl"> <@comment post=post type="post" />
diff --git a/src/main/resources/templates/themes/anatole/sheet.ftl b/src/main/resources/templates/themes/anatole/sheet.ftl index 7b054e74a..12b7c6632 100644 --- a/src/main/resources/templates/themes/anatole/sheet.ftl +++ b/src/main/resources/templates/themes/anatole/sheet.ftl @@ -71,7 +71,7 @@ class="fa fa-twitter">
-
+
<#include "module/comment.ftl"> <@comment post=sheet type="sheet" />
From c5631375775b4e99c7ee411844c97c0caaf9cf2b Mon Sep 17 00:00:00 2001 From: ruibaby Date: Fri, 31 May 2019 22:36:11 +0800 Subject: [PATCH 28/31] Translate some exception message. --- .../run/halo/app/controller/admin/api/UserController.java | 4 +++- src/main/java/run/halo/app/service/impl/UserServiceImpl.java | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/run/halo/app/controller/admin/api/UserController.java b/src/main/java/run/halo/app/controller/admin/api/UserController.java index aeac27e38..df98f8490 100644 --- a/src/main/java/run/halo/app/controller/admin/api/UserController.java +++ b/src/main/java/run/halo/app/controller/admin/api/UserController.java @@ -5,6 +5,7 @@ import run.halo.app.model.dto.UserDTO; import run.halo.app.model.entity.User; import run.halo.app.model.params.PasswordParam; import run.halo.app.model.params.UserParam; +import run.halo.app.model.support.BaseResponse; import run.halo.app.model.support.UpdateCheck; import run.halo.app.service.UserService; import run.halo.app.utils.ValidationUtils; @@ -45,7 +46,8 @@ public class UserController { } @PutMapping("profiles/password") - public void updatePassword(@RequestBody @Valid PasswordParam passwordParam, User user) { + public BaseResponse updatePassword(@RequestBody @Valid PasswordParam passwordParam, User user) { userService.updatePassword(passwordParam.getOldPassword(), passwordParam.getNewPassword(), user.getId()); + return BaseResponse.ok("密码修改成功"); } } diff --git a/src/main/java/run/halo/app/service/impl/UserServiceImpl.java b/src/main/java/run/halo/app/service/impl/UserServiceImpl.java index 8912fbb8f..8b785b04a 100644 --- a/src/main/java/run/halo/app/service/impl/UserServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/UserServiceImpl.java @@ -106,7 +106,7 @@ public class UserServiceImpl extends AbstractCrudService implemen Assert.notNull(userId, "User id must not be blank"); if (oldPassword.equals(newPassword)) { - throw new BadRequestException("There is nothing changed because new password is equal to old password"); + throw new BadRequestException("新密码和旧密码不能相同"); } // Get the user @@ -114,7 +114,7 @@ public class UserServiceImpl extends AbstractCrudService implemen // Check the user old password if (!BCrypt.checkpw(oldPassword, user.getPassword())) { - throw new BadRequestException("Old password is mismatch").setErrorData(oldPassword); + throw new BadRequestException("旧密码错误").setErrorData(oldPassword); } // Set new password From 8a1b9ccffeb06af70cedc872315ec6c5f9f611e9 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sat, 1 Jun 2019 00:21:45 +0800 Subject: [PATCH 29/31] Update halo-comment.js path. --- .../halo/app/config/HaloConfiguration.java | 3 +- .../content/api/OptionController.java | 11 + .../app/service/impl/PostServiceImpl.java | 3 +- src/main/resources/static/js/halo-comment.js | 7591 ----------------- .../resources/static/js/halo-comment.min.js | 11 - .../themes/anatole/module/comment.ftl | 2 +- 6 files changed, 16 insertions(+), 7605 deletions(-) delete mode 100644 src/main/resources/static/js/halo-comment.js delete mode 100644 src/main/resources/static/js/halo-comment.min.js diff --git a/src/main/java/run/halo/app/config/HaloConfiguration.java b/src/main/java/run/halo/app/config/HaloConfiguration.java index 5155421f3..0b3d8f627 100644 --- a/src/main/java/run/halo/app/config/HaloConfiguration.java +++ b/src/main/java/run/halo/app/config/HaloConfiguration.java @@ -113,7 +113,8 @@ public class HaloConfiguration { ApiAuthenticationFilter apiFilter = new ApiAuthenticationFilter(haloProperties, optionService); apiFilter.addExcludeUrlPatterns( "/api/content/*/comments", - "/api/content/**/comments/**" + "/api/content/**/comments/**", + "/api/content/options/comment" ); DefaultAuthenticationFailureHandler failureHandler = new DefaultAuthenticationFailureHandler(); diff --git a/src/main/java/run/halo/app/controller/content/api/OptionController.java b/src/main/java/run/halo/app/controller/content/api/OptionController.java index eeabbeafd..dad00c93b 100644 --- a/src/main/java/run/halo/app/controller/content/api/OptionController.java +++ b/src/main/java/run/halo/app/controller/content/api/OptionController.java @@ -8,6 +8,7 @@ import run.halo.app.model.dto.OptionDTO; import run.halo.app.model.support.BaseResponse; import run.halo.app.service.OptionService; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -48,4 +49,14 @@ public class OptionController { public BaseResponse getBy(@PathVariable("key") String key) { return BaseResponse.ok(HttpStatus.OK.getReasonPhrase(), optionService.getByKey(key).orElse(null)); } + + + @GetMapping("comment") + @ApiOperation("Options for comment") + public Map comment() { + List keys = new ArrayList<>(); + keys.add("comment_gavatar_default"); + keys.add("comment_content_placeholder"); + return optionService.listOptions(keys); + } } diff --git a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java index f364fbfb7..96666b825 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -2,6 +2,7 @@ package run.halo.app.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.StrBuilder; +import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -355,7 +356,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe } if (StrUtil.isEmpty(post.getUrl())) { - post.setUrl(DateUtil.format(new Date(), "yyyyMMddHHmmss")); + post.setUrl(DateUtil.format(new Date(), "yyyyMMddHHmmss" + RandomUtil.randomNumbers(5))); } post.setOriginalContent(markdown); diff --git a/src/main/resources/static/js/halo-comment.js b/src/main/resources/static/js/halo-comment.js deleted file mode 100644 index 47bf1b3de..000000000 --- a/src/main/resources/static/js/halo-comment.js +++ /dev/null @@ -1,7591 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "7535"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "0439": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__("3332"); -var bind = __webpack_require__("51f3"); -var Axios = __webpack_require__("9b45"); -var defaults = __webpack_require__("5ce4"); - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * @return {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - var context = new Axios(defaultConfig); - var instance = bind(Axios.prototype.request, context); - - // Copy axios.prototype to instance - utils.extend(instance, Axios.prototype, context); - - // Copy context to instance - utils.extend(instance, context); - - return instance; -} - -// Create the default instance to be exported -var axios = createInstance(defaults); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios; - -// Factory for creating new instances -axios.create = function create(instanceConfig) { - return createInstance(utils.merge(defaults, instanceConfig)); -}; - -// Expose Cancel & CancelToken -axios.Cancel = __webpack_require__("9f80"); -axios.CancelToken = __webpack_require__("d475"); -axios.isCancel = __webpack_require__("3673"); - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; -axios.spread = __webpack_require__("9e99"); - -module.exports = axios; - -// Allow use of default import syntax in TypeScript -module.exports.default = axios; - - -/***/ }), - -/***/ "04ac": -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__("4d65"); -var dPs = __webpack_require__("9208"); -var enumBugKeys = __webpack_require__("2ba0"); -var IE_PROTO = __webpack_require__("5ee9")('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__("bce2")('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__("5b58").appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - - -/***/ }), - -/***/ "0709": -/***/ (function(module, exports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__("9102"); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), - -/***/ "0af5": -/***/ (function(module, exports, __webpack_require__) { - -var ctx = __webpack_require__("0709"); -var invoke = __webpack_require__("be04"); -var html = __webpack_require__("5b58"); -var cel = __webpack_require__("bce2"); -var global = __webpack_require__("4839"); -var process = global.process; -var setTask = global.setImmediate; -var clearTask = global.clearImmediate; -var MessageChannel = global.MessageChannel; -var Dispatch = global.Dispatch; -var counter = 0; -var queue = {}; -var ONREADYSTATECHANGE = 'onreadystatechange'; -var defer, channel, port; -var run = function () { - var id = +this; - // eslint-disable-next-line no-prototype-builtins - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } -}; -var listener = function (event) { - run.call(event.data); -}; -// Node.js 0.9+ & IE10+ has setImmediate, otherwise: -if (!setTask || !clearTask) { - setTask = function setImmediate(fn) { - var args = []; - var i = 1; - while (arguments.length > i) args.push(arguments[i++]); - queue[++counter] = function () { - // eslint-disable-next-line no-new-func - invoke(typeof fn == 'function' ? fn : Function(fn), args); - }; - defer(counter); - return counter; - }; - clearTask = function clearImmediate(id) { - delete queue[id]; - }; - // Node.js 0.8- - if (__webpack_require__("9b6d")(process) == 'process') { - defer = function (id) { - process.nextTick(ctx(run, id, 1)); - }; - // Sphere (JS game engine) Dispatch API - } else if (Dispatch && Dispatch.now) { - defer = function (id) { - Dispatch.now(ctx(run, id, 1)); - }; - // Browsers with MessageChannel, includes WebWorkers - } else if (MessageChannel) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = ctx(port.postMessage, port, 1); - // Browsers with postMessage, skip WebWorkers - // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { - defer = function (id) { - global.postMessage(id + '', '*'); - }; - global.addEventListener('message', listener, false); - // IE8- - } else if (ONREADYSTATECHANGE in cel('script')) { - defer = function (id) { - html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run.call(id); - }; - }; - // Rest old browsers - } else { - defer = function (id) { - setTimeout(ctx(run, id, 1), 0); - }; - } -} -module.exports = { - set: setTask, - clear: clearTask -}; - - -/***/ }), - -/***/ "0d0d": -/***/ (function(module, exports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__("54a3"); -var toLength = __webpack_require__("33f2"); -var toAbsoluteIndex = __webpack_require__("8da8"); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - - -/***/ }), - -/***/ "1145": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__("4725"); -var $export = __webpack_require__("2d2c"); -var redefine = __webpack_require__("7f00"); -var hide = __webpack_require__("c84b"); -var Iterators = __webpack_require__("f03e"); -var $iterCreate = __webpack_require__("648e"); -var setToStringTag = __webpack_require__("c67d"); -var getPrototypeOf = __webpack_require__("d6e1"); -var ITERATOR = __webpack_require__("f3ae")('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; - - -/***/ }), - -/***/ "13c4": -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__("1dff"); -var global = __webpack_require__("4839"); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __webpack_require__("4725") ? 'pure' : 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), - -/***/ "1417": -/***/ (function(module, exports, __webpack_require__) { - -// style-loader: Adds some css to the DOM by adding a