From 1de730aa336eb6fd5d69994214aa3194d463f4fb Mon Sep 17 00:00:00 2001 From: hansha Date: Sat, 11 May 2024 10:36:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=89=A9=E7=90=86=E4=B9=A6?= =?UTF-8?q?=E6=9E=B6=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=96=B0=E5=A2=9E=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DaBookshelfController.java | 110 +++++++ .../controller/DaCatalogController.java | 23 +- .../com/da/dangan/domain/DaBookshelf.java | 98 ++++++ .../da/dangan/mapper/DaBookshelfMapper.java | 62 ++++ .../dangan/service/IDaBookshelfService.java | 63 ++++ .../da/dangan/service/IDaCatalogService.java | 4 +- .../service/impl/DaBookshelfServiceImpl.java | 117 +++++++ .../service/impl/DaCatalogServiceImpl.java | 41 ++- .../mapper/dangan/DaBookshelfMapper.xml | 91 ++++++ dangan-ui/src/api/dangan/bookshelf.js | 44 +++ .../src/views/dangan/bookshelf/index.vue | 296 ++++++++++++++++++ 11 files changed, 928 insertions(+), 21 deletions(-) create mode 100644 dangan-dangan/src/main/java/com/da/dangan/controller/DaBookshelfController.java create mode 100644 dangan-dangan/src/main/java/com/da/dangan/domain/DaBookshelf.java create mode 100644 dangan-dangan/src/main/java/com/da/dangan/mapper/DaBookshelfMapper.java create mode 100644 dangan-dangan/src/main/java/com/da/dangan/service/IDaBookshelfService.java create mode 100644 dangan-dangan/src/main/java/com/da/dangan/service/impl/DaBookshelfServiceImpl.java create mode 100644 dangan-dangan/src/main/resources/mapper/dangan/DaBookshelfMapper.xml create mode 100644 dangan-ui/src/api/dangan/bookshelf.js create mode 100644 dangan-ui/src/views/dangan/bookshelf/index.vue diff --git a/dangan-dangan/src/main/java/com/da/dangan/controller/DaBookshelfController.java b/dangan-dangan/src/main/java/com/da/dangan/controller/DaBookshelfController.java new file mode 100644 index 0000000..45be9b7 --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/controller/DaBookshelfController.java @@ -0,0 +1,110 @@ +package com.da.dangan.controller; + +import com.da.common.annotation.Log; +import com.da.common.core.controller.BaseController; +import com.da.common.core.domain.AjaxResult; +import com.da.common.core.page.TableDataInfo; +import com.da.common.enums.BusinessType; +import com.da.common.utils.poi.ExcelUtil; +import com.da.dangan.domain.DaBookshelf; +import com.da.dangan.service.IDaBookshelfService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 物理书架Controller + * + * @author hs + * @date 2024-05-11 + */ +@RestController +@RequestMapping("/dangan/bookshelf") +public class DaBookshelfController extends BaseController +{ + @Autowired + private IDaBookshelfService daBookshelfService; + + /** + * 查询物理书架列表 + */ + @PreAuthorize("@ss.hasPermi('dangan:bookshelf:list')") + @GetMapping("/list") + public TableDataInfo list(DaBookshelf daBookshelf) + { + startPage(); + List list = daBookshelfService.selectDaBookshelfList(daBookshelf); + return getDataTable(list); + } + + /** + * 导出物理书架列表 + */ + @PreAuthorize("@ss.hasPermi('dangan:bookshelf:export')") + @Log(title = "物理书架", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DaBookshelf daBookshelf) + { + List list = daBookshelfService.selectDaBookshelfList(daBookshelf); + ExcelUtil util = new ExcelUtil(DaBookshelf.class); + util.exportExcel(response, list, "物理书架数据"); + } + + /** + * 获取物理书架详细信息 + */ + @PreAuthorize("@ss.hasPermi('dangan:bookshelf:query')") + @GetMapping(value = "/{shelfId}") + public AjaxResult getInfo(@PathVariable("shelfId") Long shelfId) + { + return success(daBookshelfService.selectDaBookshelfByShelfId(shelfId)); + } + + /** + * 新增物理书架 + */ + @PreAuthorize("@ss.hasPermi('dangan:bookshelf:add')") + @Log(title = "物理书架", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DaBookshelf daBookshelf) + { + daBookshelf.setCreateBy(getUsername()); + return toAjax(daBookshelfService.insertDaBookshelf(daBookshelf)); + } + + /** + * 修改物理书架 + */ + @PreAuthorize("@ss.hasPermi('dangan:bookshelf:edit')") + @Log(title = "物理书架", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DaBookshelf daBookshelf) + { + return toAjax(daBookshelfService.updateDaBookshelf(daBookshelf)); + } + + /** + * 批量删除物理书架 + */ + /* @PreAuthorize("@ss.hasPermi('dangan:bookshelf:remove')") + @Log(title = "物理书架", businessType = BusinessType.DELETE) + @DeleteMapping("/{shelfIds}") + public AjaxResult remove(@PathVariable Long[] shelfIds) + { + return toAjax(daBookshelfService.deleteDaBookshelfByShelfIds(shelfIds)); + }*/ + + /** + * 删除物理书架 + */ + @PreAuthorize("@ss.hasPermi('dangan:bookshelf:remove')") + @Log(title = "物理书架", businessType = BusinessType.DELETE) + @DeleteMapping("/{shelfId}") + public AjaxResult remove(@PathVariable Long shelfId) + { + return daBookshelfService.deleteDaBookshelfByShelfId(shelfId); + } +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/controller/DaCatalogController.java b/dangan-dangan/src/main/java/com/da/dangan/controller/DaCatalogController.java index 8c372fd..61ab70b 100644 --- a/dangan-dangan/src/main/java/com/da/dangan/controller/DaCatalogController.java +++ b/dangan-dangan/src/main/java/com/da/dangan/controller/DaCatalogController.java @@ -44,17 +44,19 @@ public class DaCatalogController extends BaseController @GetMapping("/treeselect") public AjaxResult treeselect(DaCatalog daCatalog) { - List daCatalogs = daCatalogService.selectAllDaCatalogList(daCatalog, getUserId()); + List daCatalogs = daCatalogService.selectDaCatalogList(daCatalog); return success(daCatalogService.buildCatalogTreeSelect(daCatalogs)); } /** - * 加载对应用户勾选目录列表树 + * 加载用户对应勾选目录列表 */ @GetMapping(value = "/userMenuTreeselect/{userId}") public AjaxResult roleMenuTreeselect(@PathVariable("userId") Long userId) - { - List catalogs = daCatalogService.selectCatalogList(getUserId()); + { /*根据用户查询对应列表 + List catalogs = daCatalogService.selectCatalogList(getUserId());*/ + //查询全部目录列表 + List catalogs = daCatalogService.selectDaCatalogList(new DaCatalog()); AjaxResult ajax = AjaxResult.success(); ajax.put("checkedKeys", daCatalogService.selectCatalogListByUserId(userId)); ajax.put("catalogs", daCatalogService.buildCatalogTreeSelect(catalogs)); @@ -115,10 +117,21 @@ public class DaCatalogController extends BaseController * 删除档案目录 */ @PreAuthorize("@ss.hasPermi('dangan:catalog:remove')") + @Log(title = "档案目录", businessType = BusinessType.DELETE) + @DeleteMapping("/{id}") + public AjaxResult remove(@PathVariable Long id) + { + return daCatalogService.deleteDaCatalogById(id); + } + + /** + * 批量删除档案目录 + */ + /*@PreAuthorize("@ss.hasPermi('dangan:catalog:remove')") @Log(title = "档案目录", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(daCatalogService.deleteDaCatalogByIds(ids)); - } + }*/ } diff --git a/dangan-dangan/src/main/java/com/da/dangan/domain/DaBookshelf.java b/dangan-dangan/src/main/java/com/da/dangan/domain/DaBookshelf.java new file mode 100644 index 0000000..6fc926f --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/domain/DaBookshelf.java @@ -0,0 +1,98 @@ +package com.da.dangan.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.da.common.annotation.Excel; +import com.da.common.core.domain.BaseEntity; + +/** + * 物理书架对象 da_bookshelf + * + * @author hs + * @date 2024-05-11 + */ +public class DaBookshelf extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 书架id */ + private Long shelfId; + + /** 名称 */ + @Excel(name = "名称") + private String name; + + /** 父目录ID */ + @Excel(name = "父目录ID") + private Long pid; + + /** 祖级列表 */ + @Excel(name = "祖级列表") + private String ancestors; + + /** 显示顺序 */ + @Excel(name = "显示顺序") + private Long orderNum; + + public void setShelfId(Long shelfId) + { + this.shelfId = shelfId; + } + + public Long getShelfId() + { + return shelfId; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setPid(Long pid) + { + this.pid = pid; + } + + public Long getPid() + { + return pid; + } + public void setAncestors(String ancestors) + { + this.ancestors = ancestors; + } + + public String getAncestors() + { + return ancestors; + } + public void setOrderNum(Long orderNum) + { + this.orderNum = orderNum; + } + + public Long getOrderNum() + { + return orderNum; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("shelfId", getShelfId()) + .append("name", getName()) + .append("pid", getPid()) + .append("ancestors", getAncestors()) + .append("orderNum", getOrderNum()) + .append("remark", getRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/mapper/DaBookshelfMapper.java b/dangan-dangan/src/main/java/com/da/dangan/mapper/DaBookshelfMapper.java new file mode 100644 index 0000000..9d09a56 --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/mapper/DaBookshelfMapper.java @@ -0,0 +1,62 @@ +package com.da.dangan.mapper; + +import com.da.dangan.domain.DaBookshelf; + +import java.util.List; + +/** + * 物理书架Mapper接口 + * + * @author hs + * @date 2024-05-11 + */ +public interface DaBookshelfMapper +{ + /** + * 查询物理书架 + * + * @param shelfId 物理书架主键 + * @return 物理书架 + */ + public DaBookshelf selectDaBookshelfByShelfId(Long shelfId); + + /** + * 查询物理书架列表 + * + * @param daBookshelf 物理书架 + * @return 物理书架集合 + */ + public List selectDaBookshelfList(DaBookshelf daBookshelf); + + /** + * 新增物理书架 + * + * @param daBookshelf 物理书架 + * @return 结果 + */ + public int insertDaBookshelf(DaBookshelf daBookshelf); + + /** + * 修改物理书架 + * + * @param daBookshelf 物理书架 + * @return 结果 + */ + public int updateDaBookshelf(DaBookshelf daBookshelf); + + /** + * 删除物理书架 + * + * @param shelfId 物理书架主键 + * @return 结果 + */ + public int deleteDaBookshelfByShelfId(Long shelfId); + + /** + * 批量删除物理书架 + * + * @param shelfIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDaBookshelfByShelfIds(Long[] shelfIds); +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/service/IDaBookshelfService.java b/dangan-dangan/src/main/java/com/da/dangan/service/IDaBookshelfService.java new file mode 100644 index 0000000..f1116a0 --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/service/IDaBookshelfService.java @@ -0,0 +1,63 @@ +package com.da.dangan.service; + +import com.da.common.core.domain.AjaxResult; +import com.da.dangan.domain.DaBookshelf; + +import java.util.List; + +/** + * 物理书架Service接口 + * + * @author hs + * @date 2024-05-11 + */ +public interface IDaBookshelfService +{ + /** + * 查询物理书架 + * + * @param shelfId 物理书架主键 + * @return 物理书架 + */ + public DaBookshelf selectDaBookshelfByShelfId(Long shelfId); + + /** + * 查询物理书架列表 + * + * @param daBookshelf 物理书架 + * @return 物理书架集合 + */ + public List selectDaBookshelfList(DaBookshelf daBookshelf); + + /** + * 新增物理书架 + * + * @param daBookshelf 物理书架 + * @return 结果 + */ + public int insertDaBookshelf(DaBookshelf daBookshelf); + + /** + * 修改物理书架 + * + * @param daBookshelf 物理书架 + * @return 结果 + */ + public int updateDaBookshelf(DaBookshelf daBookshelf); + + /** + * 批量删除物理书架 + * + * @param shelfIds 需要删除的物理书架主键集合 + * @return 结果 + */ + public int deleteDaBookshelfByShelfIds(Long[] shelfIds); + + /** + * 删除物理书架信息 + * + * @param shelfId 物理书架主键 + * @return 结果 + */ + public AjaxResult deleteDaBookshelfByShelfId(Long shelfId); +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/service/IDaCatalogService.java b/dangan-dangan/src/main/java/com/da/dangan/service/IDaCatalogService.java index 03a2dc5..d3e0a89 100644 --- a/dangan-dangan/src/main/java/com/da/dangan/service/IDaCatalogService.java +++ b/dangan-dangan/src/main/java/com/da/dangan/service/IDaCatalogService.java @@ -1,5 +1,6 @@ package com.da.dangan.service; +import com.da.common.core.domain.AjaxResult; import com.da.common.core.domain.TreeSelect; import com.da.common.core.domain.entity.DaCatalog; @@ -67,14 +68,13 @@ public interface IDaCatalogService * @param id 档案目录主键 * @return 结果 */ - public int deleteDaCatalogById(Long id); + public AjaxResult deleteDaCatalogById(Long id); boolean checkDaCatalogNameUnique(DaCatalog daCatalog); List selectCatalogList(Long userId); /** * 构建前端所需要树结构 - * * @param daCatalogs 目录列表 * @return 树结构列表 */ diff --git a/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaBookshelfServiceImpl.java b/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaBookshelfServiceImpl.java new file mode 100644 index 0000000..60df7af --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaBookshelfServiceImpl.java @@ -0,0 +1,117 @@ +package com.da.dangan.service.impl; + +import com.da.common.core.domain.AjaxResult; +import com.da.common.core.domain.entity.DaCatalog; +import com.da.common.utils.DateUtils; +import com.da.dangan.domain.DaBookshelf; +import com.da.dangan.mapper.DaBookshelfMapper; +import com.da.dangan.service.IDaBookshelfService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物理书架Service业务层处理 + * + * @author hs + * @date 2024-05-11 + */ +@Service +public class DaBookshelfServiceImpl implements IDaBookshelfService +{ + @Autowired + private DaBookshelfMapper daBookshelfMapper; + + /** + * 查询物理书架 + * + * @param shelfId 物理书架主键 + * @return 物理书架 + */ + @Override + public DaBookshelf selectDaBookshelfByShelfId(Long shelfId) + { + return daBookshelfMapper.selectDaBookshelfByShelfId(shelfId); + } + + /** + * 查询物理书架列表 + * + * @param daBookshelf 物理书架 + * @return 物理书架 + */ + @Override + public List selectDaBookshelfList(DaBookshelf daBookshelf) + { + return daBookshelfMapper.selectDaBookshelfList(daBookshelf); + } + + /** + * 新增物理书架 + * + * @param daBookshelf 物理书架 + * @return 结果 + */ + @Override + public int insertDaBookshelf(DaBookshelf daBookshelf) + { + daBookshelf.setCreateTime(DateUtils.getNowDate()); + daBookshelf.setCreateTime(DateUtils.getNowDate()); + if(daBookshelf.getPid()==0){ //代表添加的是主目录 + daBookshelf.setAncestors(daBookshelf.getPid().toString()); + }else{ + DaBookshelf info = daBookshelfMapper.selectDaBookshelfByShelfId(daBookshelf.getPid()); + daBookshelf.setAncestors(info.getAncestors() + "," + daBookshelf.getPid()); + } + return daBookshelfMapper.insertDaBookshelf(daBookshelf); + } + + /** + * 修改物理书架 + * + * @param daBookshelf 物理书架 + * @return 结果 + */ + @Override + public int updateDaBookshelf(DaBookshelf daBookshelf) + { + daBookshelf.setUpdateTime(DateUtils.getNowDate()); + return daBookshelfMapper.updateDaBookshelf(daBookshelf); + } + + /** + * 批量删除物理书架 + * + * @param shelfIds 需要删除的物理书架主键 + * @return 结果 + */ + @Override + public int deleteDaBookshelfByShelfIds(Long[] shelfIds) + { + return daBookshelfMapper.deleteDaBookshelfByShelfIds(shelfIds); + } + + /** + * 删除物理书架信息 + * + * @param shelfId 物理书架主键 + * @return 结果 + */ + @Override + public AjaxResult deleteDaBookshelfByShelfId(Long shelfId) + { + DaBookshelf daBookshelf = new DaBookshelf(); + daBookshelf.setPid(shelfId); + //有子级目录的不能删除 + List daBookshelfs = daBookshelfMapper.selectDaBookshelfList(daBookshelf); + if(daBookshelfs!=null&&daBookshelfs.size()>0){ + return AjaxResult.error("有子级目录,不能删除"); + } + int i= daBookshelfMapper.deleteDaBookshelfByShelfId(shelfId); + if(i>0){ + return AjaxResult.success(); + } + return AjaxResult.error(); + } +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaCatalogServiceImpl.java b/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaCatalogServiceImpl.java index 99d0069..a9d9234 100644 --- a/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaCatalogServiceImpl.java +++ b/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaCatalogServiceImpl.java @@ -1,12 +1,13 @@ package com.da.dangan.service.impl; import com.da.common.constant.UserConstants; +import com.da.common.core.domain.AjaxResult; import com.da.common.core.domain.TreeSelect; +import com.da.common.core.domain.entity.DaCatalog; import com.da.common.core.domain.entity.SysUser; import com.da.common.exception.ServiceException; import com.da.common.utils.DateUtils; import com.da.common.utils.StringUtils; -import com.da.common.core.domain.entity.DaCatalog; import com.da.dangan.mapper.DaCatalogMapper; import com.da.dangan.service.IDaCatalogService; import org.springframework.stereotype.Service; @@ -101,13 +102,13 @@ public class DaCatalogServiceImpl implements IDaCatalogService public List selectAllDaCatalogList(DaCatalog daCatalog, Long userId) { List catalogList = null; - // 管理员显示所有菜单信息 + // 管理员显示所有目录信息 if (SysUser.isAdmin(userId)) { catalogList = daCatalogMapper.selectDaCatalogList(daCatalog); } else - { + { //根据用户权限显示目录信息 daCatalog.getParams().put("userId", userId); catalogList = daCatalogMapper.selectDaCatalogListByUserId(daCatalog); } @@ -150,6 +151,29 @@ public class DaCatalogServiceImpl implements IDaCatalogService return daCatalogMapper.updateDaCatalog(daCatalog); } + /** + * 删除档案目录信息 + * + * @param id 档案目录主键 + * @return 结果 + */ + @Override + public AjaxResult deleteDaCatalogById(Long id) + { + DaCatalog catalog = new DaCatalog(); + catalog.setPid(id); + //有子级目录的不能删除 + List daCatalogs = daCatalogMapper.selectDaCatalogList(catalog); + if(daCatalogs!=null&&daCatalogs.size()>0){ + return AjaxResult.error("有子级目录,不能删除"); + } + int i= daCatalogMapper.deleteDaCatalogById(id); + if(i>0){ + return AjaxResult.success(); + } + return AjaxResult.error(); + } + /** * 批量删除档案目录 * @@ -173,17 +197,6 @@ public class DaCatalogServiceImpl implements IDaCatalogService return UserConstants.UNIQUE; } - /** - * 删除档案目录信息 - * - * @param id 档案目录主键 - * @return 结果 - */ - @Override - public int deleteDaCatalogById(Long id) - { - return daCatalogMapper.deleteDaCatalogById(id); - } /** * 递归列表 * diff --git a/dangan-dangan/src/main/resources/mapper/dangan/DaBookshelfMapper.xml b/dangan-dangan/src/main/resources/mapper/dangan/DaBookshelfMapper.xml new file mode 100644 index 0000000..4ff7100 --- /dev/null +++ b/dangan-dangan/src/main/resources/mapper/dangan/DaBookshelfMapper.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + select shelf_id, name, pid, ancestors, order_num, remark, create_by, create_time, update_by, update_time from da_bookshelf + + + + + + + + insert into da_bookshelf + + name, + pid, + ancestors, + order_num, + remark, + create_by, + create_time, + update_by, + update_time, + + + #{name}, + #{pid}, + #{ancestors}, + #{orderNum}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update da_bookshelf + + name = #{name}, + pid = #{pid}, + ancestors = #{ancestors}, + order_num = #{orderNum}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where shelf_id = #{shelfId} + + + + delete from da_bookshelf where shelf_id = #{shelfId} + + + + delete from da_bookshelf where shelf_id in + + #{shelfId} + + + \ No newline at end of file diff --git a/dangan-ui/src/api/dangan/bookshelf.js b/dangan-ui/src/api/dangan/bookshelf.js new file mode 100644 index 0000000..a0cbee4 --- /dev/null +++ b/dangan-ui/src/api/dangan/bookshelf.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询物理书架列表 +export function listBookshelf(query) { + return request({ + url: '/dangan/bookshelf/list', + method: 'get', + params: query + }) +} + +// 查询物理书架详细 +export function getBookshelf(shelfId) { + return request({ + url: '/dangan/bookshelf/' + shelfId, + method: 'get' + }) +} + +// 新增物理书架 +export function addBookshelf(data) { + return request({ + url: '/dangan/bookshelf', + method: 'post', + data: data + }) +} + +// 修改物理书架 +export function updateBookshelf(data) { + return request({ + url: '/dangan/bookshelf', + method: 'put', + data: data + }) +} + +// 删除物理书架 +export function delBookshelf(shelfId) { + return request({ + url: '/dangan/bookshelf/' + shelfId, + method: 'delete' + }) +} diff --git a/dangan-ui/src/views/dangan/bookshelf/index.vue b/dangan-ui/src/views/dangan/bookshelf/index.vue new file mode 100644 index 0000000..5c77da7 --- /dev/null +++ b/dangan-ui/src/views/dangan/bookshelf/index.vue @@ -0,0 +1,296 @@ + + +