标签管理
This commit is contained in:
		| @@ -181,7 +181,8 @@ public class SqBookmarkController extends BaseController | ||||
|     public AjaxResult add(@RequestBody SqBookmark sqBookmark) | ||||
|     { | ||||
|         sqBookmark.setUserid(getAuthUser().getUserId()); | ||||
|         return toAjax(sqBookmarkService.insertSqBookmark(sqBookmark)); | ||||
|         int i = sqBookmarkService.insertSqBookmark(sqBookmark); | ||||
|         return new AjaxResult(200,(i>0&&i!=999)?"success":"repetition"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -37,6 +37,40 @@ public class SqTagController extends BaseController | ||||
|  | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 获取所有的书签TAG 并且翻页 | ||||
|      */ | ||||
|     @GetMapping("/listByUser") | ||||
|     public TableDataInfo listByUser() | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SqTag> list = sqTagService.selectSqTagList(new SqTag(getAuthUser().getUserId())); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 模糊查书签TAG | ||||
|      */ | ||||
|     @GetMapping("/listByUserLike") | ||||
|     public TableDataInfo listByUserLike() | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SqTag> list = sqTagService.selectSqTagList(new SqTag(getAuthUser().getUserId())); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     // 以下是系统管理员的操作 | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 查询书签_标签列表 | ||||
|   | ||||
| @@ -174,16 +174,6 @@ public class SqBookmarkTest extends BaseSpringBootTest{ | ||||
|      * @return | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     private HttpSession getLoginSession() throws Exception{ | ||||
|         // mock request get login session | ||||
|         // url = /xxx/xxx/{username}/{password} | ||||
|         MvcResult result = this.mockMvc | ||||
|                 .perform((MockMvcRequestBuilders.post("/login"))) | ||||
|                 .andExpect(MockMvcResultMatchers.status().isOk()) | ||||
|                 .andReturn(); | ||||
|         return result.getRequest().getSession(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -15,8 +15,12 @@ import org.junit.Test; | ||||
| import org.mybatis.spring.SqlSessionTemplate; | ||||
| import org.omg.PortableServer.THREAD_POLICY_ID; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.test.web.servlet.MvcResult; | ||||
| import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; | ||||
| import org.springframework.test.web.servlet.result.MockMvcResultMatchers; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| import javax.servlet.http.HttpSession; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| @@ -38,10 +42,19 @@ public class SqMenuTest extends BaseSpringBootTest{ | ||||
|     SqBookmarkMapper sqBookmarkMapper; | ||||
|     @Autowired | ||||
|     SqlSessionTemplate sqlSessionTemplate; | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     @Test | ||||
|     public void addMenuUplinkSeries() { | ||||
|  | ||||
|  | ||||
|       List<com.ruoyi.bookmark.domain.SqMenu> sqMenus =  sqMenuMapper.selectbymenuUplinkSeries(); | ||||
|       if (null!=sqMenus&&!sqMenus.isEmpty()) { | ||||
|           for (com.ruoyi.bookmark.domain.SqMenu s:sqMenus) { | ||||
| @@ -88,6 +101,11 @@ public class SqMenuTest extends BaseSpringBootTest{ | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void test67(){ | ||||
|         iSqBookmarkService.bookmarkDeleteRepetition(1L); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 初始化是否有下级目录 subordinate 0无下级 1有下级 | ||||
|   | ||||
| @@ -62,6 +62,7 @@ | ||||
|     "vue": "2.6.10", | ||||
|     "vue-count-to": "1.0.13", | ||||
|     "vue-cropper": "0.4.9", | ||||
|     "vue-material": "^1.0.0-beta-15", | ||||
|     "vue-quill-editor": "3.0.6", | ||||
|     "vue-router": "3.0.2", | ||||
|     "vue-splitpane": "1.0.4", | ||||
|   | ||||
| @@ -1,11 +1,11 @@ | ||||
| <template> | ||||
|   <div id="app"> | ||||
|     <router-view /> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default  { | ||||
|   name:  'App' | ||||
| } | ||||
| </script> | ||||
| <template> | ||||
|   <div id="app" style="overflow: hidden;"> | ||||
|     <router-view /> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default  { | ||||
|   name:  'App' | ||||
| } | ||||
| </script> | ||||
|   | ||||
| @@ -1,5 +1,36 @@ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 查询书签_标签列表 | ||||
| export function listByUser(query) { | ||||
|   return request({ | ||||
|     url: '/system/tag/listByUser', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 查询书签_标签列表 | ||||
| export function listByUserLike(query) { | ||||
|   return request({ | ||||
|     url: '/system/tag/listByUserLike', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| // 查询书签_标签列表 | ||||
| export function listTag(query) { | ||||
|   return request({ | ||||
| @@ -50,4 +81,4 @@ export function exportTag(query) { | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| } | ||||
|   | ||||
							
								
								
									
										1
									
								
								ruoyi-ui/src/assets/icons/svg/str.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								ruoyi-ui/src/assets/icons/svg/str.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1620535693527" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3174" data-spm-anchor-id="a313x.7781069.0.i4" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M492.544 663.7568c-6.7584 0-13.7216-2.6624-18.8416-7.7824l-113.0496-113.0496c-5.9392-4.9152-9.6256-12.0832-9.6256-20.2752 0-14.7456 11.6736-26.624 26.4192-26.624h0.6144c6.9632 0 13.9264 2.8672 18.8416 7.7824l114.4832 114.4832a26.58304 26.58304 0 0 1-18.8416 45.4656z" fill="#4e6ef2" p-id="3175"></path><path d="M312.7296 909.312c-9.4208 0-18.8416-3.072-26.8288-9.0112-13.5168-9.8304-20.2752-27.2384-16.9984-44.032l37.888-221.5936-161.3824-157.696c-11.8784-11.4688-16.384-29.4912-11.264-45.4656 5.12-15.9744 19.2512-27.8528 35.84-30.3104l222.8224-31.9488 100.5568-202.3424c7.3728-14.9504 22.528-24.576 39.3216-24.7808h0.2048c16.7936 0 32.5632 9.6256 39.936 24.7808l99.7376 202.3424 223.232 32.3584c15.9744 1.4336 30.9248 13.1072 36.4544 29.9008 5.12 16.5888 0.8192 33.5872-10.8544 45.056l-121.856 118.5792c-12.0832 11.8784-31.5392 11.6736-43.4176-0.6144a30.72 30.72 0 0 1 0.6144-43.4176l96.4608-93.7984-205.2096-29.696c-10.0352-1.4336-18.6368-7.7824-23.1424-16.7936L533.0944 225.28l-92.3648 185.9584c-4.5056 9.0112-13.1072 15.36-23.1424 16.7936l-204.3904 29.2864 148.0704 144.7936c7.168 6.9632 10.4448 17.2032 8.8064 27.2384l-35.0208 204.8 183.7056-96.6656c9.0112-4.7104 19.6608-4.7104 28.672 0l181.0432 95.0272-69.4272-283.8528c-4.096-16.384 6.144-33.1776 22.528-37.0688 16.5888-4.096 33.1776 6.144 37.0688 22.528l78.4384 320.3072c3.2768 13.312 0.2048 27.648-8.6016 38.5024-8.6016 10.6496-21.7088 17.2032-35.6352 16.384-6.144-0.2048-13.1072-1.6384-19.456-4.9152l-200.0896-105.0624-199.68 105.0624c-6.5536 3.2768-13.7216 4.9152-20.8896 4.9152zM737.28 868.7616c0 0.2048 0 0.2048 0 0z m-407.7568-2.048l-0.2048 0.6144c0.2048-0.2048 0.2048-0.4096 0.2048-0.6144z m-24.576-16.9984c-0.2048 0-0.2048 0.2048-0.4096 0.2048l0.4096-0.2048z m582.0416-387.2768c0.6144 0.2048 1.2288 0.2048 1.8432 0.2048l-1.8432-0.2048zM188.416 432.7424c0 0.2048 0 0.2048 0 0zM548.4544 194.1504z m-30.72 0z" fill="#4e6ef2" p-id="3176"></path><path d="M676.0448 258.6624c-7.7824 0-15.7696-3.072-21.7088-9.0112a30.5152 30.5152 0 0 1 0-43.4176l82.5344-82.5344c12.0832-12.0832 31.5392-12.0832 43.4176 0s12.0832 31.5392 0 43.4176l-82.5344 82.5344c-5.9392 6.144-13.7216 9.0112-21.7088 9.0112zM120.2176 796.0576c-7.7824 0-15.7696-3.072-21.7088-9.0112a30.5152 30.5152 0 0 1 0-43.4176l121.0368-121.0368c12.0832-12.0832 31.5392-12.0832 43.4176 0s12.0832 31.5392 0 43.4176l-121.0368 121.0368c-5.9392 5.9392-13.9264 9.0112-21.7088 9.0112zM709.2224 356.1472c-7.7824 0-15.7696-3.072-21.7088-9.0112a30.5152 30.5152 0 0 1 0-43.4176l73.728-74.1376a30.5152 30.5152 0 0 1 43.4176 0c12.0832 11.8784 12.0832 31.3344 0 43.4176l-73.728 74.1376c-5.9392 6.144-13.7216 9.0112-21.7088 9.0112z" fill="#4e6ef2" p-id="3177"></path></svg> | ||||
| After Width: | Height: | Size: 3.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								ruoyi-ui/src/assets/image/sj.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ruoyi-ui/src/assets/image/sj.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 3.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								ruoyi-ui/src/assets/image/sqsc.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ruoyi-ui/src/assets/image/sqsc.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 8.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								ruoyi-ui/src/assets/image/ts.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ruoyi-ui/src/assets/image/ts.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 64 KiB | 
							
								
								
									
										
											BIN
										
									
								
								ruoyi-ui/src/assets/image/zwsj.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ruoyi-ui/src/assets/image/zwsj.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 65 KiB | 
| @@ -28,7 +28,11 @@ | ||||
|           </div> | ||||
|           <div class="bookmark-official bookmark-list-tag-top">{{bm.urls}} · </div> | ||||
|           <div class="bookmark-time bookmark-list-tag-top">{{bm.createTime|changeTime}}</div> | ||||
|           <div class="bookmark-time bookmark-list-tag-top">{{bm.bookmarkStar}}</div> | ||||
|           <div class="bookmark-time bookmark-list-tag-top" v-if="bm.bookmarkStar == 1"> | ||||
|             <svg-icon slot="prefix" icon-class="str" style="font-size: 18px;"/> | ||||
| <!--            <i class="el-icon-star-on" style="color: #569cd5;font-size: 18px;margin-top: 4px"></i>--> | ||||
|           </div> | ||||
|  | ||||
|  | ||||
|           <div class="bookmark-time" v-if="bm.tagNameAll!=null&&bm.tagNameAll!=''"  > | ||||
|             <el-tag  v-for="item in JSON.parse(bm.tagNameAll)"  class="bookmark-list-tag bookmark-list-tag-top" style="float: left"  type="info"  data-tagid="item.tagId"  size="mini"> | ||||
| @@ -69,7 +73,7 @@ | ||||
|         isBookmarkIcon:false, | ||||
|         Ueditor:undefined, | ||||
|         seen:false, | ||||
|         current:0, | ||||
|         current:0 | ||||
|       } | ||||
|     }, | ||||
|     mounted(){ | ||||
| @@ -109,15 +113,39 @@ | ||||
|       }, | ||||
|       /** 星标 **/ | ||||
|       updateStarById:function(bookmarkId,bookmarkStar){ | ||||
|         var that = this; | ||||
|         console.log("bookmarkStar:"+bookmarkStar) | ||||
|         var param={ | ||||
|           bookmarkId:bookmarkId, | ||||
|           bookmarkStr:bookmarkStar==0?1:0 | ||||
|           bookmarkStr:bookmarkStar | ||||
|         } | ||||
|         console.log("bookmarkStar2:"+param.bookmarkStar) | ||||
|         updateBookmarkStarById(param).then(response => { | ||||
|           if (response.code === 200) { | ||||
|             this.msgSuccess("设置成功"); | ||||
|             // let list = this.bookmarkList; | ||||
|             // for (var i=0;i<list.length;i++){ | ||||
|             //   if (list[i].bookmarkId == bookmarkId) { | ||||
|             //     that.$set(this.bookmarkList[i], `bookmarkStr`, 0) | ||||
|             //     console.log("bookmarkStar2:"+this.bookmarkList[i].bookmarkStr) | ||||
|             //     break; | ||||
|             //   } | ||||
|             // } | ||||
|             // //修改数据 | ||||
|             // for (var item of list) { | ||||
|             //   if (item.bookmarkId == bookmarkId){ | ||||
|             //     //修改数据 | ||||
|             //     console.log(item.bookmarkId+"   "+bookmarkId); | ||||
|             //     console.log("item.bookmarkstatus1 = "+ item.bookmarkStr); | ||||
|             //     item.bookmarkStr = bookmarkStar; | ||||
|             //     this.$set(item, `showAlert`, true) | ||||
|             //     console.log("item.bookmarkstatus2 = "+ item.bookmarkStr); | ||||
|             //     this.bookmarkList = list; | ||||
|             //     break; | ||||
|             //   } | ||||
|             // | ||||
|             // } | ||||
|  | ||||
|           } | ||||
|         }); | ||||
|       }, | ||||
| @@ -145,6 +173,7 @@ | ||||
|  | ||||
|       /**搜索高亮 开始**/ | ||||
|       highLight(item, highLight) { | ||||
|         // console.log("搜索高亮") | ||||
|         return this.highLightTableMsg(item, highLight) | ||||
|       }, | ||||
|       highLightTableMsg(msg, highLightStr) { | ||||
|   | ||||
| @@ -27,7 +27,12 @@ import 'element-ui/lib/theme-chalk/index.css' | ||||
| //媒体查詢 | ||||
| import '@/assets/styles/base.css' | ||||
|  | ||||
|  | ||||
| // 全局引入VueMaterial组件库 https://vuematerial.io/ | ||||
| // import VueMaterial from 'vue-material' | ||||
| // import 'vue-material/dist/vue-material.min.css' | ||||
| // import 'vue-material/dist/theme/default.css' | ||||
| // | ||||
| // Vue.use(VueMaterial) | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -19,7 +19,7 @@ | ||||
|       <div class="mdui-btn-group head-tag-button"> | ||||
| <!--        <div  :class="['classification',property=='0'?' classification-click':'']" @click="showopen(0)"><span>网页</span></div>--> | ||||
|         <button @click="goRouter(1)" :class="['mdui-btn mdui-color-theme-accent mdui-ripple ',property=='1'?' mdui-btn-active mdui-color-blue-50 mdui-text-color-blue-600':'']">个人中心</button> | ||||
|         <button @click="goRouter(7)" :class="['mdui-btn mdui-color-theme-accent mdui-ripple ',property=='7'?' mdui-btn-active mdui-color-blue-50 mdui-text-color-blue-600':'']">外观设置</button> | ||||
| <!--        <button @click="goRouter(7)" :class="['mdui-btn mdui-color-theme-accent mdui-ripple ',property=='7'?' mdui-btn-active mdui-color-blue-50 mdui-text-color-blue-600':'']">外观设置</button>--> | ||||
|         <button @click="goRouter(2)" :class="['mdui-btn mdui-color-theme-accent mdui-ripple ',property=='2'?' mdui-btn-active mdui-color-blue-50 mdui-text-color-blue-600':'']">系统设置</button> | ||||
|         <button @click="goRouter(3)" :class="['mdui-btn mdui-color-theme-accent mdui-ripple ',property=='3'?' mdui-btn-active mdui-color-blue-50 mdui-text-color-blue-600':'']">导入书签</button> | ||||
|         <button @click="goRouter(4)" :class="['mdui-btn mdui-color-theme-accent mdui-ripple ',property=='4'?' mdui-btn-active mdui-color-blue-50 mdui-text-color-blue-600':'']">备份导出</button> | ||||
| @@ -70,7 +70,7 @@ | ||||
|             that.$router.push({ | ||||
|               path: "/content", | ||||
|               query: { | ||||
|                 menuId: 'BOOKMARK' | ||||
|                 menuId: 'newest' | ||||
|               } | ||||
|             }) | ||||
|             break; | ||||
|   | ||||
| @@ -24,7 +24,8 @@ | ||||
|         <div class="sousouright-iconadd"> | ||||
|           <el-dropdown trigger="click" size="small" :hide-on-click="true" > | ||||
|               <span class="el-dropdown-link"> | ||||
|           <i class="el-icon-plus" style="font-size: 18px;"/> | ||||
| <!--          <i class="el-icon-plus" style="font-size: 18px;"/>--> | ||||
|                 <el-button icon="el-icon-plus" style="border:0px;font-size: 18px;" size="mini"></el-button> | ||||
|              </span> | ||||
|             <el-dropdown-menu slot="dropdown" class="sq-dropdown"> | ||||
|               <el-dropdown-item class="filter-item" icon="el-icon-plus" @click.native="addbookmarkurl">添加连接 | ||||
| @@ -38,7 +39,7 @@ | ||||
|           <el-dropdown trigger="click" size="small" :hide-on-click="false"> | ||||
|               <span class="el-dropdown-link"> | ||||
|  | ||||
|            <el-avatar :size="28" | ||||
|            <el-avatar style="margin-top: 5px" :size="28" | ||||
|                       src="https://up.raindrop.io/collection/templates/social-media-logos-6/97social.png"></el-avatar> | ||||
|               </span> | ||||
|             <el-dropdown-menu slot="dropdown" class="sq-dropdown"> | ||||
| @@ -55,14 +56,15 @@ | ||||
|           <div class="filter-tbar"> | ||||
|             <div class="filter-classification"> | ||||
|               <div  :class="['classification',property=='0'?' classification-click':'']" @click="showopen(0)"><span>网页</span></div> | ||||
|               <div :class="['classification',property=='1'?' classification-click':'']" @click="showopen(1)"><span>文本</span></div> | ||||
| <!--              <div :class="['classification',property=='1'?' classification-click':'']" @click="showopen(1)"><span>文本</span></div>--> | ||||
|               <div :class="['classification',property=='2'?' classification-click':'']" @click="showopen(2)"><span>其他</span></div> | ||||
|             </div> | ||||
|             <div class="setUpThe"> | ||||
|               <div class="filter-content"> | ||||
|                 <el-dropdown trigger="hover" size="small" @command="handleCommand"> | ||||
|                   <div class="el-dropdown-link dropdownList"> | ||||
|                     <i class="el-icon-document-checked "></i> | ||||
| <!--                    <i class="el-icon-document-checked "></i>--> | ||||
|                     <el-button icon="el-icon-document-checked" style="border:0px;font-size: 18px;" size="mini"></el-button> | ||||
|                   </div> | ||||
|                   <el-dropdown-menu slot="dropdown" class="filter-sort-dropdown"> | ||||
|                     <el-dropdown-item class="filter-item" command="0"><i class="el-icon-bottom"></i>按时间排序(正) | ||||
| @@ -80,7 +82,7 @@ | ||||
|               <div class="filter-content"> | ||||
|                 <el-dropdown trigger="hover" size="small"> | ||||
|                   <div class="el-dropdown-link dropdownList"> | ||||
|                     <i class="el-icon-tickets "></i> | ||||
|                     <el-button icon="el-icon-tickets" style="border:0px;font-size: 18px;" size="mini"></el-button> | ||||
|                   </div> | ||||
|                   <el-dropdown-menu slot="dropdown" class="filter-sort-dropdown"> | ||||
|                     <el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按时间排序(正)</el-dropdown-item> | ||||
| @@ -105,8 +107,8 @@ | ||||
|           <div class="nullbookmark" v-if="showimg"> | ||||
|             <div class="nullbookmark-img"> | ||||
|             </div> | ||||
|             <div style="color: #000000" class="nullbookmark-text"> | ||||
|               此目录还未添加收藏 | ||||
|             <div  class="nullbookmark-text"> | ||||
|               空空如也 | ||||
|             </div> | ||||
|           </div> | ||||
|  | ||||
| @@ -411,7 +413,7 @@ | ||||
|       } | ||||
|  | ||||
|       console.log("routedata:"+routedata) | ||||
|       if (routedata == 'newest'||routedata == 'asterisk'||routedata == 'seeYouLater'||routedata == 'recycle') { | ||||
|       if ((sousuo != null && sousuo != undefined && sousuo != '')||routedata == 'newest'||routedata == 'asterisk'||routedata == 'seeYouLater'||routedata == 'recycle') { | ||||
|         that.queryParams.menuId=null; | ||||
|  | ||||
|         this.listByUserAndPolymerization(routedata); | ||||
| @@ -606,14 +608,25 @@ | ||||
|                   this.msgSuccess("修改成功"); | ||||
|                   this.open = false; | ||||
|                   this.getList(); | ||||
|                 }else{ | ||||
|                   this.msgError("新增失败,系统错误!"); | ||||
|                   this.open = false; | ||||
|                 } | ||||
|               }); | ||||
|             } else { | ||||
|               addBookmark(this.form).then(response => { | ||||
|                 if (response.code === 200) { | ||||
|                   if(response.data === 'repetition'){ | ||||
|                     this.msgSuccess("新增失败,此书签已经存在了!"); | ||||
|                     this.open = false; | ||||
|                     return; | ||||
|                   } | ||||
|                   this.msgSuccess("新增成功"); | ||||
|                   this.open = false; | ||||
|                   this.getList(); | ||||
|                 }else{ | ||||
|                   this.msgError("新增失败,系统错误!"); | ||||
|                   this.open = false; | ||||
|                 } | ||||
|               }); | ||||
|             } | ||||
| @@ -705,24 +718,24 @@ | ||||
|           } | ||||
|         }); | ||||
|       }, | ||||
|       /** 全部书签**/ | ||||
|       getBookmarkList() { | ||||
|         this.loading = true; | ||||
|         selectByUseridList(this.queryParams).then(response => { | ||||
|             if (response.code == 200) { | ||||
|               this.bookmarkList = this.bookmarkList.concat(response.rows); | ||||
|               this.total = response.total; | ||||
|               this.listloading = false | ||||
|               this.loading = false; | ||||
|               console.log("请求完毕" + this.queryParams.pageNum) | ||||
|             } else { | ||||
|               //出错了加载完毕了 禁止滚动 | ||||
|               this.noMore = true; | ||||
|               this.listloading = false | ||||
|               this.loading = false; | ||||
|             } | ||||
|         }); | ||||
|       }, | ||||
|       // /** 全部书签**/ | ||||
|       // getBookmarkList() { | ||||
|       //   this.loading = true; | ||||
|       //   selectByUseridList(this.queryParams).then(response => { | ||||
|       //       if (response.code == 200) { | ||||
|       //         this.bookmarkList = this.bookmarkList.concat(response.rows); | ||||
|       //         this.total = response.total; | ||||
|       //         this.listloading = false | ||||
|       //         this.loading = false; | ||||
|       //         console.log("请求完毕" + this.queryParams.pageNum) | ||||
|       //       } else { | ||||
|       //         //出错了加载完毕了 禁止滚动 | ||||
|       //         this.noMore = true; | ||||
|       //         this.listloading = false | ||||
|       //         this.loading = false; | ||||
|       //       } | ||||
|       //   }); | ||||
|       // }, | ||||
|       /** 最新 星标 回收站 稍后看**/ | ||||
|       listByUserAndPolymerization(str) { | ||||
|         console.log(" 最新 星标 回收站 稍后看"); | ||||
| @@ -735,12 +748,16 @@ | ||||
|               this.total = response.total; | ||||
|               this.listloading = false | ||||
|               this.loading = false; | ||||
|               if (response.total == 0){ | ||||
|                 this.showimg = true;//空提示 | ||||
|               } | ||||
|               console.log("请求完毕" + this.queryParams.pageNum) | ||||
|             } else { | ||||
|               //出错了加载完毕了 禁止滚动 | ||||
|               this.noMore = true; | ||||
|               this.listloading = false | ||||
|               this.loading = false; | ||||
|               this.showimg = true; | ||||
|             } | ||||
|         }); | ||||
|       }, | ||||
| @@ -787,7 +804,7 @@ | ||||
|       /** 查询书签管理列表 */ | ||||
|       getList() { | ||||
|         this.loading = true; | ||||
|         selectBymenuIdUserID(this.queryParams).then(response => { | ||||
|         listByUserAndPolymerization(this.queryParams).then(response => { | ||||
|           if (response.code == 200) { | ||||
|             this.bookmarkList = response.rows; | ||||
|             this.total = response.total; | ||||
| @@ -810,14 +827,9 @@ | ||||
|         var routedata = this.queryParams.menuId; | ||||
|         if(routedata == 'newest'||routedata == 'asterisk'||routedata == 'seeYouLater'||routedata == 'recycle'){ | ||||
|           this.listByUserAndPolymerization(routedata); | ||||
|         //   //全部书签 | ||||
|         //   this.getBookmarkList(); | ||||
|         // }else if (this.queryParams.menuId == 'RECYCLE') { | ||||
|         //   //回收站书签 | ||||
|         //   this.getrecycleList(); | ||||
|         }else{ | ||||
|           //查看目录下的书签 | ||||
|           this.getlistByMenuId(); | ||||
|           this.listByUserAndPolymerization(routedata); | ||||
|         } | ||||
|       }, | ||||
|       /**查询便签 滚动加载分页拼接*/ | ||||
| @@ -965,7 +977,13 @@ | ||||
|  | ||||
|  | ||||
| <style scoped> | ||||
|  | ||||
| /*.isbookmarkContainer{*/ | ||||
| /*  background-color: #f0f0f2;*/ | ||||
| /*  background-image: url(https://shijiechao.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2020/12/top_bg.png);*/ | ||||
| /*  background-repeat: no-repeat;*/ | ||||
| /*  background-attachment: fixed;*/ | ||||
| /*  background-position: center top;*/ | ||||
| /*}*/ | ||||
|  | ||||
|   .button-new-tag { | ||||
|     margin-left: 10px; | ||||
| @@ -1019,21 +1037,23 @@ | ||||
|  | ||||
|   .nullbookmark-img { | ||||
|     margin: 0 auto; | ||||
|     width: 250px; | ||||
|     width: 450px; | ||||
|     height: 250px; | ||||
|     justify-content: center; | ||||
|     align-content: center; | ||||
|     background-image: url("https://s1.ax1x.com/2020/08/22/dawFp9.png"); | ||||
|     background-image: url("../../../assets/image/ts.png"); | ||||
|     background-repeat: no-repeat; | ||||
|     background-size: 100% 100%; | ||||
|     opacity: 0.75; | ||||
|   } | ||||
|  | ||||
|   .nullbookmark-text { | ||||
|     margin: 0 auto; | ||||
|     width: 250px; | ||||
|     text-align: center; | ||||
|     color: #D4D4D4 !important; | ||||
|  | ||||
|     color: #D4D4D4; | ||||
|     font-size: 18px; | ||||
|     /*font-family: "Arial","Microsoft YaHei","黑体","宋体",sans-serif;*/ | ||||
|   } | ||||
|  | ||||
|   .editBookamrk { | ||||
| @@ -1104,10 +1124,10 @@ | ||||
|     height: 40px; | ||||
|     -webkit-box-pack: justify; | ||||
|     justify-content: space-between; | ||||
|     -webkit-box-align: center; | ||||
|     align-items: center; | ||||
|  | ||||
|     box-sizing: border-box; | ||||
|  | ||||
|   } | ||||
|  | ||||
|   .filter-classification { | ||||
| @@ -1125,7 +1145,7 @@ | ||||
|   } | ||||
|  | ||||
|   .filter-content { | ||||
|     margin-left: 13px; | ||||
|     margin-left: 2px; | ||||
|  | ||||
|   } | ||||
|  | ||||
| @@ -1331,7 +1351,7 @@ | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     width: 50px; | ||||
|     width: 60px; | ||||
|   } | ||||
|  | ||||
|   .sq-dropdown { | ||||
|   | ||||
| @@ -20,11 +20,26 @@ | ||||
|  | ||||
|           <div class="main-right"> | ||||
| <!--            <svg-icon icon-class="tool" class="svgicon"/>--> | ||||
|             <div class="aside-title" @click="goRouter(8)"><i class="el-icon-folder"></i><span>最新</span></div> | ||||
|             <div class="aside-title" @click="goRouter(9)"><i class="el-icon-star-off"></i><span>星标</span></div> | ||||
|             <div class="aside-title" @click="goRouter(10)"><i class="el-icon-reading"></i><span>稍后看</span></div> | ||||
|             <div class="aside-title"><i class="el-icon-view"></i><span>发现</span></div> | ||||
|             <div class="aside-title"><i class="el-icon-message"></i><span>收件箱</span></div> | ||||
|             <div class="aside-title" @click="goRouter(8)"><i class="el-icon-folder"></i> | ||||
|               <span>最新</span> | ||||
|               <span class="menuCount">112</span> | ||||
|             </div> | ||||
|             <div class="aside-title" @click="goRouter(9)"><i class="el-icon-star-off"></i> | ||||
|               <span>星标</span> | ||||
|               <span class="menuCount">92</span> | ||||
|             </div> | ||||
|             <div class="aside-title" @click="goRouter(10)"><i class="el-icon-reading"></i> | ||||
|               <span>稍后看</span> | ||||
|               <span class="menuCount">5</span> | ||||
|             </div> | ||||
|             <div class="aside-title"><i class="el-icon-view"></i> | ||||
|               <span>发现</span> | ||||
|               <span class="menuCount"></span> | ||||
|             </div> | ||||
|             <div class="aside-title"><i class="el-icon-message"></i> | ||||
|               <span>收件箱</span> | ||||
|               <span class="menuCount">5</span> | ||||
|             </div> | ||||
|  | ||||
|  | ||||
|             <div class="aside-titleB"  @mouseenter="eidtMenuText=!eidtMenuText" @mouseleave="eidtMenuText=!eidtMenuText"> | ||||
| @@ -73,32 +88,42 @@ | ||||
|               </el-input> | ||||
|               <i v-if="!searchBkMenu" @click="searchBkMenuCk" class="el-icon-close" style="font-size: 25px;margin-left: 5px;margin-bottom: 2px"></i> | ||||
|             </div> | ||||
| <!--            <transition name="el-zoom-in-top">--> | ||||
|  | ||||
|             <!-- 目录--> | ||||
|             <div class="areaTree" v-show="menuListShow"> | ||||
|               <ul id="treeDemo" class="ztree"></ul> | ||||
|             </div> | ||||
| <!--            </transition>--> | ||||
|  | ||||
| <!--            <div class="reminder" STYLE="">工具箱</div>--> | ||||
|  | ||||
|             <div class="aside-titleB"  @mouseenter="eidtTAGText=!eidtTAGText" @mouseleave="eidtTAGText=!eidtTAGText"> | ||||
|               <i @click="tagListShowCk" :class="tagListShow ? 'el-icon-caret-bottom aside-titleB_childi_one':'el-icon-caret-right aside-titleB_childi_one'"   ></i> | ||||
|               <i class="el-icon-price-tag aside-titleB_childi_two"></i> | ||||
|             <span >工具箱</span> | ||||
|               <div style="margin-left: 40%" v-show="eidtTAGText"> | ||||
|                 <i class="el-icon-search" style="font-size: 19px;margin-left: 5px;margin-top: 7px" @click="searchBkTagCk"></i> | ||||
|                 <i class="el-icon-folder-add" style="font-size: 19px;margin-left: 5px;margin-top: 7px" @click="addBkTagCk"></i> | ||||
|             <el-collapse-transition> | ||||
|               <div  class="areaTree transition-box" v-show="menuListShow"> | ||||
|                 <ul id="treeDemo"  class="ztree"></ul> | ||||
|               </div> | ||||
|             </div> | ||||
|             </el-collapse-transition> | ||||
|  | ||||
|  | ||||
|  | ||||
|             <div class="reminder" STYLE="">工具箱</div> | ||||
|  | ||||
|  | ||||
|  | ||||
|               <!-- TAG标签 --> | ||||
|  | ||||
|                 <usertag/> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| <!--            <div class="aside-title"><i class="el-icon-s-flag" style="color: #569cd5"></i><span>RSS订阅</span></div>--> | ||||
|             <div class="aside-title" @click="goRouter(7)"><i class="el-icon-collection"></i><span>标签管理</span></div> | ||||
| <!--            <div class="aside-title" @click="goRouter(7)"><i class="el-icon-collection"></i><span>功能管理</span></div>--> | ||||
|             <div class="aside-title" @click="goRouter(6)"><i class="el-icon-delete" ></i><span>垃圾桶</span></div> | ||||
|             <div class="aside-title"><i class="el-icon-chat-dot-square"></i><span>意见反馈</span></div> | ||||
|             <div class="aside-title" @click="goRouter(2)"><i class="el-icon-suitcase"></i><span>小工具</span></div> | ||||
| <!--            <div class="aside-title"><i class="el-icon-chat-dot-square"></i><span>意见反馈</span></div>--> | ||||
| <!--            <div class="aside-title" @click="goRouter(2)"><i class="el-icon-suitcase"></i><span>小工具</span></div>--> | ||||
|             <div class="aside-title " style="margin-bottom: 100px"  @click="goRouter(11)"><i class="el-icon-setting"></i><span>更多设置</span></div> | ||||
|  | ||||
|           </div> | ||||
| @@ -111,8 +136,8 @@ | ||||
|  | ||||
|  | ||||
|       <!-- 拖拽 --> | ||||
| <!--      <div class="isresize" style="cursor:w-resize">--> | ||||
| <!--      </div>--> | ||||
|       <div class="isresize" style="cursor:w-resize"> | ||||
|       </div> | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -173,11 +198,12 @@ | ||||
|   import "../ztree/zTreeStyle.css" | ||||
|   import "../ztree/jquery.ztree.exedit.js" | ||||
|   import {listMenuByUserId,listByMenuId} from "@/api/bookmark/menu"; | ||||
|   import usertag from '../tag/usertag.vue' | ||||
|  | ||||
|   export default { | ||||
|     name: 'areaTree', | ||||
|     components: { | ||||
|       Treeselect | ||||
|       Treeselect,usertag | ||||
|     }, | ||||
|  | ||||
|     data: function () { | ||||
| @@ -187,10 +213,6 @@ | ||||
|         menuListShow:true,//目录list | ||||
|         eidtMenuText:false,//我的收藏 | ||||
|  | ||||
|         addBkTAG:true,//添加书TAG | ||||
|         searchBkTAG:true,//搜索TAG | ||||
|         tagListShow:false,//TAGlist | ||||
|         eidtTAGText:false,//我的TAG | ||||
|  | ||||
|  | ||||
|         queryParams: { | ||||
| @@ -370,24 +392,7 @@ | ||||
|       }, | ||||
|  | ||||
|  | ||||
|       /**添加书签目录**/ | ||||
|       addBkTagCk(){ | ||||
|         this.addBkTAG = this.addBkTAG?false:true; | ||||
|         this.searchBkTAG = true; | ||||
|         this.tagListShow = true; | ||||
|       }, | ||||
|       /**搜索书签目录**/ | ||||
|       searchBkTagCk(){ | ||||
|         this.searchBkMenu = this.searchBkTAG?false:true; | ||||
|         this.addBkTAG = true; | ||||
|         this.tagListShow = true; | ||||
|       }, | ||||
|       /**搜索书签目录**/ | ||||
|       tagListShowCk(){ | ||||
|         this.tagListShow = this.tagListShow?false:true; | ||||
|         this.addBkTAG = true; | ||||
|         this.searchBkTAG = true; | ||||
|       }, | ||||
|  | ||||
|  | ||||
|       /**图片失败显示**/ | ||||
|       errorHandler() { | ||||
| @@ -413,7 +418,8 @@ | ||||
|         console.log("开始拖拽") | ||||
|         var resize = document.getElementsByClassName('isresize'); | ||||
|         var left = document.getElementsByClassName('main-right'); | ||||
|         var mid = document.getElementsByClassName('el-container mid is-vertical'); | ||||
|         // var mid = document.getElementsByClassName('el-container mid is-vertical'); | ||||
|        var mid = document.getElementsByClassName('mid'); | ||||
|         var box = document.getElementsByClassName('box'); | ||||
|         var transition = document.getElementsByClassName('transition-box'); | ||||
|  | ||||
| @@ -886,7 +892,8 @@ | ||||
|             that.$router.push({ | ||||
|               path: "/content", | ||||
|               query: { | ||||
|                 menuId: 'recycle' | ||||
|                 menuId: 'recycle', | ||||
|                 t:Date.now() | ||||
|               } | ||||
|             }) | ||||
|             break; | ||||
| @@ -1000,7 +1007,6 @@ | ||||
| </script> | ||||
| <style scoped> | ||||
|  | ||||
|  | ||||
|   body { | ||||
|     /*font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;*/ | ||||
|     font-family: "Merriweather", "Open Sans", "Microsoft Jhenghei", "Microsoft Yahei", sans-serif; | ||||
| @@ -1213,6 +1219,11 @@ | ||||
|   .separator { | ||||
|     float: left; | ||||
|   } | ||||
|   .menuCount{ | ||||
|     float: right; | ||||
|     margin-right:18px!important; | ||||
|     color: #9e9e9e | ||||
|   } | ||||
|  | ||||
|   .filter-sort i { | ||||
|     margin-left: -4px; | ||||
|   | ||||
							
								
								
									
										159
									
								
								ruoyi-ui/src/views/bookmark/tag/usertag.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								ruoyi-ui/src/views/bookmark/tag/usertag.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,159 @@ | ||||
| <template> | ||||
|     <div class="main" > | ||||
|       <div class="aside-titleB"  @mouseenter="eidtTAGText=!eidtTAGText" @mouseleave="eidtTAGText=!eidtTAGText"> | ||||
|         <i @click="tagListShowCk" :class="tagListShow ? 'el-icon-caret-bottom aside-titleB_childi_one':'el-icon-caret-right aside-titleB_childi_one'"   ></i> | ||||
|         <i class="el-icon-price-tag aside-titleB_childi_two"></i> | ||||
|         <span >标签管理</span> | ||||
|         <div style="margin-left: 40%" v-show="eidtTAGText"> | ||||
|           <i class="el-icon-search" style="font-size: 19px;margin-left: 5px;margin-top: 7px" @click="searchBkTagCk"></i> | ||||
|           <i class="el-icon-folder-add" style="font-size: 19px;margin-left: 5px;margin-top: 7px" @click="addBkTagCk"></i> | ||||
|         </div> | ||||
|       </div> | ||||
|  | ||||
|  | ||||
|  | ||||
|       <div style="display: flex;justify-items: center;align-items: center"> | ||||
|         <el-input | ||||
|           v-if="!addBkTAG" | ||||
|           placeholder="输入书签名字" | ||||
|           v-model="input4" | ||||
|           size="mini" | ||||
|           style="width: 80%;margin-left: 5%" | ||||
|         > | ||||
|           <i slot="prefix" class="el-input__icon el-icon-circle-plus-outline"></i> | ||||
|         </el-input> | ||||
|         <i v-if="!addBkTAG" @click="addBkTagCk" class="el-icon-close" style="font-size: 25px;margin-left: 5px;margin-bottom: 2px"></i> | ||||
|       </div> | ||||
|  | ||||
|       <div style="display: flex;justify-items: center;align-items: center"> | ||||
|         <el-input | ||||
|           v-if="!searchBkTAG" | ||||
|           placeholder="搜索书签" | ||||
|           v-model="input4" | ||||
|           size="mini" | ||||
|           style="width: 80%;margin-left: 5%" | ||||
|         > | ||||
|           <i slot="prefix" class="el-icon-search" style="margin-left: 5px"></i> | ||||
|         </el-input> | ||||
|         <i v-if="!searchBkTAG" @click="searchBkTagCk" class="el-icon-close" style="font-size: 25px;margin-left: 5px;margin-bottom: 2px"></i> | ||||
|       </div> | ||||
|  | ||||
|  | ||||
|       <el-collapse-transition> | ||||
|         <div v-if=" tagListShow"> | ||||
|       <!-- TAG标签 --> | ||||
|       <div v-if=" !(tagList == undefined ||tagList == null || tagList.length <= 0)" v-for="item in tagList"  > | ||||
|         <div class="aside-title name transition-box" id="item.id"> | ||||
|          <i class="el-icon-collection-tag" style="font-size: 15px"/> {{item.name}} | ||||
| <!--          <el-tag type="info" size="mini">{{item.name}}</el-tag>--> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div v-if=" !(tagList == undefined ||tagList == null || tagList.length <= 0)" class="aside-title name transition-box" >加载更多</div> | ||||
|  | ||||
|       <!-- 无标签 --> | ||||
|         <div v-if=" tagList == undefined ||tagList == null || tagList.length <= 0" class="aside-title name transition-box" >暂无标签</div> | ||||
|         </div> | ||||
|       </el-collapse-transition> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     </div> | ||||
| </template> | ||||
| <script> | ||||
|   import {listByUser,listByUserLike} from "@/api/bookmark/tag"; | ||||
|  | ||||
|     export default { | ||||
|         name: 'areaTree', | ||||
|         components: {}, | ||||
|  | ||||
|         data: function () { | ||||
|             return { | ||||
|               msg:'暂无标签', | ||||
|               tagList:[], | ||||
|               tagParams: { | ||||
|                 pageNum: 1, | ||||
|                 pageSize: 8 | ||||
|               }, | ||||
|  | ||||
|               addBkTAG:true,//添加书TAG | ||||
|               searchBkTAG:true,//搜索TAG | ||||
|               tagListShow:false,//TAGlist | ||||
|               eidtTAGText:false,//我的TAG | ||||
|             } | ||||
|         }, | ||||
|       created(){ | ||||
|           this.listByUser(); | ||||
|       }, | ||||
|         methods: { | ||||
|           /** 查询书签 */ | ||||
|           listByUser: function () { | ||||
|             listByUser(this.tagParams).then(response => { | ||||
|                   if (response.code === 200) { | ||||
|                     this.tagList=response.rows; | ||||
|                   } | ||||
|                 }); | ||||
|           }, | ||||
|  | ||||
|           /**添加书签目录**/ | ||||
|           addBkTagCk(){ | ||||
|             this.addBkTAG = this.addBkTAG?false:true; | ||||
|             this.searchBkTAG = true; | ||||
|             this.tagListShow = true; | ||||
|           }, | ||||
|           /**搜索书签目录**/ | ||||
|           searchBkTagCk(){ | ||||
|             this.searchBkTAG = this.searchBkTAG?false:true; | ||||
|             this.addBkTAG = true; | ||||
|             this.tagListShow = true; | ||||
|           }, | ||||
|           /**搜索书签目录**/ | ||||
|           tagListShowCk(){ | ||||
|             this.tagListShow = this.tagListShow?false:true; | ||||
|             this.addBkTAG = true; | ||||
|             this.searchBkTAG = true; | ||||
|           }, | ||||
|  | ||||
|  | ||||
|         } | ||||
|     } | ||||
| </script> | ||||
| <style scoped> | ||||
|   .name{ | ||||
|     padding-left: 50px; | ||||
|   } | ||||
|   .aside-title:hover{ | ||||
|     background-color: #e8e8e8; | ||||
|     color: #1c84c6; | ||||
|   } | ||||
|   .aside-titleB{ | ||||
|     display: flex; | ||||
|     height: 32px; | ||||
|     align-items: center; | ||||
|     justify-items: center; | ||||
|   } | ||||
|   .aside-titleB:hover { | ||||
|     background-color: #e8e8e8; | ||||
|   } | ||||
|   /**第一个元素**/ | ||||
|   .aside-titleB_childi_one{ | ||||
|     margin-left: 5px; | ||||
|     font-size: 15px; | ||||
|     margin-right: 11px; | ||||
|     vertical-align: middle; | ||||
|   } | ||||
|   /**第二个元素**/ | ||||
|   .aside-titleB_childi_two{ | ||||
|     margin-left: -4px; | ||||
|     font-size: 20px; | ||||
|     margin-right: 11px; | ||||
|     vertical-align: middle; | ||||
|   } | ||||
|   .aside-titleB span{ | ||||
|     font-size: 14px; | ||||
|   } | ||||
|  | ||||
| </style> | ||||
| @@ -1366,7 +1366,7 @@ | ||||
|         if (!node.isAjaxing) { | ||||
|           var isParent = data.nodeIsParent(setting, node); | ||||
|           var icon = (isParent && node.iconOpen && node.iconClose) ? (node.open ? node.iconOpen : node.iconClose) : node[setting.data.key.icon]; | ||||
|           if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;background-position:center;background-size:20px 20px;border-radius: 50%;"); | ||||
|           if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;background-position:center;background-size:20px 20px;");//border-radius: 50%; 目录的图标 | ||||
|           if (setting.view.showIcon == false || !tools.apply(setting.view.showIcon, [setting.treeId, node], true)) { | ||||
|             icoStyle.push("display:none;"); | ||||
|           } | ||||
|   | ||||
| @@ -1,98 +1,101 @@ | ||||
| <template> | ||||
|   <div class="dashboard-editor-container"> | ||||
|  | ||||
|     <panel-group @handleSetLineChartData="handleSetLineChartData" /> | ||||
|  | ||||
|     <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> | ||||
|       <line-chart :chart-data="lineChartData" /> | ||||
|     </el-row> | ||||
|  | ||||
|     <el-row :gutter="32"> | ||||
|       <el-col :xs="24" :sm="24" :lg="8"> | ||||
|         <div class="chart-wrapper"> | ||||
|           <raddar-chart /> | ||||
|         </div> | ||||
|       </el-col> | ||||
|       <el-col :xs="24" :sm="24" :lg="8"> | ||||
|         <div class="chart-wrapper"> | ||||
|           <pie-chart /> | ||||
|         </div> | ||||
|       </el-col> | ||||
|       <el-col :xs="24" :sm="24" :lg="8"> | ||||
|         <div class="chart-wrapper"> | ||||
|           <bar-chart /> | ||||
|         </div> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|  | ||||
|      | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import PanelGroup from './dashboard/PanelGroup' | ||||
| import LineChart from './dashboard/LineChart' | ||||
| import RaddarChart from './dashboard/RaddarChart' | ||||
| import PieChart from './dashboard/PieChart' | ||||
| import BarChart from './dashboard/BarChart' | ||||
|  | ||||
| const lineChartData = { | ||||
|   newVisitis: { | ||||
|     expectedData: [100, 120, 161, 134, 105, 160, 165], | ||||
|     actualData: [120, 82, 91, 154, 162, 140, 145] | ||||
|   }, | ||||
|   messages: { | ||||
|     expectedData: [200, 192, 120, 144, 160, 130, 140], | ||||
|     actualData: [180, 160, 151, 106, 145, 150, 130] | ||||
|   }, | ||||
|   purchases: { | ||||
|     expectedData: [80, 100, 121, 104, 105, 90, 100], | ||||
|     actualData: [120, 90, 100, 138, 142, 130, 130] | ||||
|   }, | ||||
|   shoppings: { | ||||
|     expectedData: [130, 140, 141, 142, 145, 150, 160], | ||||
|     actualData: [120, 82, 91, 154, 162, 140, 130] | ||||
|   } | ||||
| } | ||||
|  | ||||
| export default { | ||||
|   name: 'Index', | ||||
|   components: { | ||||
|     PanelGroup, | ||||
|     LineChart, | ||||
|     RaddarChart, | ||||
|     PieChart, | ||||
|     BarChart | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       lineChartData: lineChartData.newVisitis | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     handleSetLineChartData(type) { | ||||
|       this.lineChartData = lineChartData[type] | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| .dashboard-editor-container { | ||||
|   padding: 32px; | ||||
|   background-color: rgb(240, 242, 245); | ||||
|   position: relative; | ||||
|  | ||||
|   .chart-wrapper { | ||||
|     background: #fff; | ||||
|     padding: 16px 16px 0; | ||||
|     margin-bottom: 32px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @media (max-width:1024px) { | ||||
|   .chart-wrapper { | ||||
|     padding: 8px; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| <template> | ||||
|   <div class="dashboard-editor-container"> | ||||
|  | ||||
|     <panel-group @handleSetLineChartData="handleSetLineChartData" /> | ||||
|  | ||||
|     <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> | ||||
|       <line-chart :chart-data="lineChartData" /> | ||||
|     </el-row> | ||||
|  | ||||
|     <el-row :gutter="32"> | ||||
|       <el-col :xs="24" :sm="24" :lg="8"> | ||||
|         <div class="chart-wrapper"> | ||||
|           <raddar-chart /> | ||||
|         </div> | ||||
|       </el-col> | ||||
|       <el-col :xs="24" :sm="24" :lg="8"> | ||||
|         <div class="chart-wrapper"> | ||||
|           <pie-chart /> | ||||
|         </div> | ||||
|       </el-col> | ||||
|       <el-col :xs="24" :sm="24" :lg="8"> | ||||
|         <div class="chart-wrapper"> | ||||
|           <bar-chart /> | ||||
|         </div> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|  | ||||
|  | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import PanelGroup from './dashboard/PanelGroup' | ||||
| import LineChart from './dashboard/LineChart' | ||||
| import RaddarChart from './dashboard/RaddarChart' | ||||
| import PieChart from './dashboard/PieChart' | ||||
| import BarChart from './dashboard/BarChart' | ||||
|  | ||||
| const lineChartData = { | ||||
|   newVisitis: { | ||||
|     expectedData: [100, 120, 161, 134, 105, 160, 165], | ||||
|     actualData: [120, 82, 91, 154, 162, 140, 145] | ||||
|   }, | ||||
|   messages: { | ||||
|     expectedData: [200, 192, 120, 144, 160, 130, 140], | ||||
|     actualData: [180, 160, 151, 106, 145, 150, 130] | ||||
|   }, | ||||
|   purchases: { | ||||
|     expectedData: [80, 100, 121, 104, 105, 90, 100], | ||||
|     actualData: [120, 90, 100, 138, 142, 130, 130] | ||||
|   }, | ||||
|   shoppings: { | ||||
|     expectedData: [130, 140, 141, 142, 145, 150, 160], | ||||
|     actualData: [120, 82, 91, 154, 162, 140, 130] | ||||
|   } | ||||
| } | ||||
|  | ||||
| export default { | ||||
|   name: 'Index', | ||||
|   components: { | ||||
|     PanelGroup, | ||||
|     LineChart, | ||||
|     RaddarChart, | ||||
|     PieChart, | ||||
|     BarChart | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       lineChartData: lineChartData.newVisitis | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     handleSetLineChartData(type) { | ||||
|       this.lineChartData = lineChartData[type] | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| /*html{*/ | ||||
| /*  overflow: hidden;*/ | ||||
| /*}*/ | ||||
| .dashboard-editor-container { | ||||
|   padding: 32px; | ||||
|   background-color: rgb(240, 242, 245); | ||||
|   position: relative; | ||||
|  | ||||
|   .chart-wrapper { | ||||
|     background: #fff; | ||||
|     padding: 16px 16px 0; | ||||
|     margin-bottom: 32px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @media (max-width:1024px) { | ||||
|   .chart-wrapper { | ||||
|     padding: 8px; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|   | ||||
| @@ -113,9 +113,19 @@ public class SqBookmark | ||||
|     /** 排序的方式 **/ | ||||
|     @Transient | ||||
|     private String sort; | ||||
|     /** 搜索 **/ | ||||
|     @Transient | ||||
|     private String sousuo; | ||||
|  | ||||
|  | ||||
|  | ||||
|     private List<Map<String,Object>> sqTags; | ||||
|     public SqBookmark (){ | ||||
|     } | ||||
|  | ||||
|  | ||||
|     public SqBookmark (String url,Long userid){ | ||||
|         this.url = url; | ||||
|         this.userid = userid; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -80,4 +80,7 @@ public class SqTag | ||||
|     private Date createTime; | ||||
|  | ||||
|  | ||||
|     public  SqTag(Long userId){ | ||||
|         this.userId = userId; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -25,6 +25,8 @@ import com.ruoyi.common.utils.StringUtils; | ||||
| import com.ruoyi.common.utils.bookmarkhtml.Const; | ||||
| import com.ruoyi.common.utils.bookmarkhtml.HtmlName; | ||||
| import com.ruoyi.common.utils.bookmarkhtml.ImportHtml; | ||||
| import com.sun.org.apache.bcel.internal.generic.RETURN; | ||||
| import org.jacoco.agent.rt.internal_f3994fa.core.internal.flow.IFrame; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -119,6 +121,12 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService | ||||
|     @Transactional | ||||
|     public int insertSqBookmark(SqBookmark sqBookmark) | ||||
|     { | ||||
|         //判断标签是否已经存在了 999 | ||||
|         List<SqBookmark> list = sqBookmarkMapper.select(new SqBookmark(sqBookmark.getUrl(),sqBookmark.getUserid())); | ||||
|         if (!(list==null||list.isEmpty())) | ||||
|             return 999; | ||||
|  | ||||
|  | ||||
|         JSONArray objects = new JSONArray(); | ||||
|         JSONObject json = null; | ||||
|         //获取官网urls | ||||
| @@ -378,7 +386,7 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService | ||||
|  | ||||
|     @Override | ||||
|     public int updateBookmarkStarById(Long userId, Long bookmarkId, Integer bookmarkStr) { | ||||
|         return sqBookmarkMapper.updateSqBookmarkByStar(bookmarkId,userId,bookmarkStr==1?1:0); | ||||
|         return sqBookmarkMapper.updateSqBookmarkByStar(bookmarkId,userId,bookmarkStr==1?0:1); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -501,23 +509,32 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService | ||||
|     @Override | ||||
|     public List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark) { | ||||
|  | ||||
|         SqBookmark searchBookmark = new  SqBookmark(); | ||||
|         searchBookmark.setUserid(sqBookmark.getUserid()); | ||||
|         SqBookmark search = new SqBookmark(); | ||||
|         search.setUserid(sqBookmark.getUserid()); | ||||
|         search.setSort(sqBookmark.getSort()); | ||||
|         search.setSousuo(sqBookmark.getSousuo()); | ||||
|         //未删除的 | ||||
|         search.setIdelete(Const.BKDELETE); | ||||
|  | ||||
|         if(sqBookmark.getType().equals(Const.RECYCLE)){ | ||||
|             searchBookmark.setIdelete(Const.BKNOTDELETE);//删除的 | ||||
|         }else{ | ||||
|             searchBookmark.setIdelete(Const.BKDELETE);//未删除的 | ||||
|  | ||||
|         if (sqBookmark.getType()==null){ | ||||
|             //搜索情况下走这里 | ||||
|             return sqBookmarkMapper.listByUserAndPolymerization(search); | ||||
|         } | ||||
|  | ||||
|         if (sqBookmark.getType().equals(Const.NEWEST)){//最新的 | ||||
|         if(sqBookmark.getType().equals(Const.RECYCLE)){ | ||||
|             search.setIdelete(Const.BKNOTDELETE);//删除的 | ||||
|         }else if (sqBookmark.getType().equals(Const.NEWEST)){//最新的 | ||||
|             //无处理 | ||||
|         }else if(sqBookmark.getType().equals(Const.ASTERISK)){ | ||||
|             searchBookmark.setBookmarkStar(1); | ||||
|             search.setBookmarkStar(1); | ||||
|         }else if(sqBookmark.getType().equals(Const.SEEYOULATER)){//稍后看 | ||||
|             searchBookmark.setSeeYouLater(1); | ||||
|             search.setSeeYouLater(1); | ||||
|         }else { | ||||
|             //默认的目录Muidid | ||||
|             search.setMenuId(Long.valueOf(sqBookmark.getType())); | ||||
|         } | ||||
|         return sqBookmarkMapper.listByUserAndPolymerization(searchBookmark); | ||||
|  | ||||
|         return sqBookmarkMapper.listByUserAndPolymerization(search); | ||||
|     } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -187,6 +187,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||
|             <if test="idelete != null "> and idelete = #{idelete}</if> | ||||
|             <if test="bookmarkStar != null "> and bookmark_star = #{bookmarkStar}</if> | ||||
|             <if test="seeYouLater != null "> and see_you_later = #{seeYouLater}</if> | ||||
|             <if test="(sousuo == null  or sousuo == '') and menuId!=null and menuId!=''"> and menu_id = #{menuId}</if> | ||||
|             <if test="start != null  and start != ''"> and start = #{start}</if> | ||||
|             <if test="sousuo != null  and sousuo != ''"> and title like concat('%', #{sousuo}, '%')</if> | ||||
|             order by | ||||
|             <choose> | ||||
|                 <when test="sort == 0"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user