新增书签设置星标功能 ,新增redis工具类规定时间内请求限制次数,新增阿里大鱼手机号发送验证码功能

This commit is contained in:
WangHao
2021-04-18 03:19:40 +08:00
parent b546760a6f
commit af5faf60df
31 changed files with 885 additions and 128 deletions

View File

@ -1,6 +1,17 @@
import request from '@/utils/request'
//书签设置星标 取消星标
export function updateBookmarkStarById(query) {
return request({
url: '/bookmark/bookmark/updateBookmarkStarById',
method: 'get',
params: query
})
}
export function selectBymenuIdUserID(query) {
return request({
url: '/bookmark/bookmark/selectBymenuIdUserID',

View File

@ -30,22 +30,22 @@
</div>
<div class="bookmark-official">{{bm.urls}}&nbsp;·&nbsp;</div>
<div class="bookmark-time">{{bm.createTime|changeTime}}</div>
<div class="bookmark-time">{{bm.bookmarkStar}}</div>
<div class="bookmark-time" v-for="t in bm.sqTags" v-if="false">
<el-tag class="bookmark-list-tag" data-bookmarkId="t.bookmarkId" data-tagId="t.tagId"
size="mini">
{{t.name}}
</el-tag>
<!-- <el-tag class="bookmark-list-tag" data-bookmarkId="t.bookmarkId" data-tagId="t.tagId"-->
<!-- size="mini">-->
<!-- {{t.name}}-->
<!-- </el-tag>-->
</div>
</div>
</div>
<!--编辑 -->
<div class="editAllBookMark" v-show="seen&&bm.bookmarkId==current">
<el-button type="info" style="color: #1112ff" plain size="mini" icon="el-icon-star-off" ></el-button>
<el-button slot="reference" @click.stop="updateStarById(bm.bookmarkId,bm.bookmarkStar)" type="info" v-bind:class="{ activeClass: bm.bookmarkStar ==1 }" plain size="mini" icon="el-icon-star-off"></el-button>
<el-button type="info" plain size="mini" icon="el-icon-share" ></el-button>
<el-button type="info" plain size="mini" icon="el-icon-edit" @click.stop="handleUpdate(bm.bookmarkId)"></el-button>
<el-button type="danger" plain size="mini" icon="el-icon-delete" @click.stop="handleDelete(bm.bookmarkId)"></el-button>
<div style="width: 10px"></div>
</div>
</div>
@ -54,9 +54,10 @@
</template>
<script>
import {format} from 'timeago.js';
import {updateBookmarkStarById} from '@/api/bookmark/bookmark';
export default {
components: {format},
components: {format,updateBookmarkStarById},
props: {
bookmarkList: Array,
property: null,
@ -85,6 +86,7 @@
// that.Ueditor = that.$route.query.Ueditor;
},
filters: {
//timeago.js插件
//计算时间,类似于几分钟前,几小时前,几天前等
@ -107,6 +109,20 @@
handleDelete:function(bookmarkId) {
this.$emit('on-handleDelete', bookmarkId);
},
/** 星标 **/
updateStarById:function(bookmarkId,bookmarkStar){
console.log("bookmarkStar:"+bookmarkStar)
var param={
bookmarkId:bookmarkId,
bookmarkStr:bookmarkStar==0?1:0
}
console.log("bookmarkStar2:"+param.bookmarkStar)
updateBookmarkStarById(param).then(response => {
if (response.code === 200) {
this.msgSuccess("设置成功");
}
});
},
/**渲染模式**/
showView(e) {
var that=this;
@ -199,6 +215,9 @@
}
</script>
<style scoped>
.activeClass{
color: red;
}
.bookmark-item {
display: flex;

View File

@ -2,16 +2,34 @@
<div class="app-container ">
<el-row :gutter="20" >
<el-col :xs="24" :sm="{span: 16, push: 4}" :md="{span: 14, push: 5}" :xl="{span: 10, push: 7}" >
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>系统设置</span>
</div>
<div>
<ul class="list-group list-group-striped">
</ul>
<el-card class="box-card">
<div style="height: 600px">
<el-tabs tab-position="left" style="height: 200px;" >
<el-tab-pane style="margin-bottom: 110px">
<span slot="label"><i class="el-icon-date"></i> 用户管理</span>
用户管理
</el-tab-pane>
<el-tab-pane >
<span slot="label"><i class="el-icon-coin"></i> 配置管理</span>
配置管理
</el-tab-pane>
<el-tab-pane >
<span slot="label"><i class="el-icon-set-up"></i> 角色管理</span>
角色管理
</el-tab-pane>
<el-tab-pane >
<span slot="label"><i class="el-icon-turn-off"></i> 定时任务</span>
定时任务
</el-tab-pane>
</el-tabs>
</div>
</el-card>
</el-col>
</el-row>

View File

@ -17,8 +17,8 @@
</div>
<div class="sousouright-icon">
<el-badge :value="5" :max="99" class="item"><i class="el-icon-message-solid" style="font-size: 17px;"></i>
</el-badge>
<inform></inform>
</div>
<div class="sousouright-iconadd">
@ -224,7 +224,7 @@
</template>
<script>
import inform from '../common/inform.vue'
import {listMenuByUserId} from "@/api/bookmark/menu";
import { getUserProfile } from "@/api/system/user";
import Treeselect from "@riophae/vue-treeselect";
@ -250,7 +250,7 @@
export default {
components: {
format, Treeselect,BookmarkOne,TinyMceEdit
format, Treeselect,BookmarkOne,TinyMceEdit,inform
},
data: function () {

View File

@ -0,0 +1,190 @@
<template>
<div>
<el-badge :value="5" :max="99" class="item"><i class="el-icon-bell badgeiocn" @click="dialogVisible = true"></i>
</el-badge>
<el-dialog
title="通知信息"
:visible.sync="dialogVisible"
width="35%"
:before-close="handleClose">
<!-- tabs-->
<el-tabs :stretch="true" v-model="activeNameTabs" @tab-click="handleClick" accordion class="tabsList">
<el-tab-pane name="first">
<span slot="label"><i class="el-icon-message tabFont"></i> </span>
<!-- collapse 消息列表-->
<el-collapse v-model="activeName" accordion @change="handleChange"
v-if="informList !==undefined && informList.length > 0">
<el-collapse-item name="1111">
<template slot="title"> 一致性 Consistency 20201-10-10 20:22:22 ....</template>
<div>20201-10-10 20:22:22</div>
<div>与现实生活一致与现实生活的流程逻辑保持一致遵循用户习惯的语言和概念</div>
<div>在界面中一致所有的元素和结构需保持一致比如设计样式图标和文本元素的位置等</div>
</el-collapse-item>
</el-collapse>
<!-- -->
<div v-if="informList == undefined || informList.length <= 0">
<div class="emptyList">
<i class="el-icon-bell"></i>
</div>
<div class="emptytext">
<span>你还没有消息</span>
</div>
</div>
</el-tab-pane>
<el-tab-pane name="second">
<span slot="label"><i class="el-icon-chat-round tabFont"></i> </span>
<!-- collapse 消息列表-->
<el-collapse v-model="activeName" accordion @change="handleChange"
v-if="systemInformList !==undefined && systemInformList.length > 0">
<el-collapse-item name="1111">
<template slot="title"> 一致性 Consistency 20201-10-10 20:22:22 ....</template>
<div>20201-10-10 20:22:22</div>
<div>与现实生活一致与现实生活的流程逻辑保持一致遵循用户习惯的语言和概念</div>
<div>在界面中一致所有的元素和结构需保持一致比如设计样式图标和文本元素的位置等</div>
</el-collapse-item>
</el-collapse>
<!-- -->
<div v-if="systemInformList == undefined || systemInformList.length <= 0">
<div class="emptyList">
<i class="el-icon-bell"></i>
</div>
<div class="emptytext">
<span>你还没有消息</span>
</div>
</div>
</el-tab-pane>
<el-tab-pane name="second2">
<span slot="label"><i class="el-icon-document tabFont"></i> </span>
<!-- collapse 消息列表-->
<el-collapse v-model="activeName" accordion @change="handleChange"
v-if="significanceInformList !==undefined && significanceInformList.length > 0">
<el-collapse-item name="1111">
<template slot="title"> 一致性 Consistency 20201-10-10 20:22:22 ....</template>
<div>20201-10-10 20:22:22</div>
<div>与现实生活一致与现实生活的流程逻辑保持一致遵循用户习惯的语言和概念</div>
<div>在界面中一致所有的元素和结构需保持一致比如设计样式图标和文本元素的位置等</div>
</el-collapse-item>
</el-collapse>
<!-- -->
<div v-if="significanceInformList == undefined || significanceInformList.length <= 0">
<div class="emptyList">
<i class="el-icon-bell"></i>
</div>
<div class="emptytext">
<span>你还没有消息</span>
</div>
</div>
</el-tab-pane>
</el-tabs>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
name: 'areaTree',
components: {},
props: {},
data: function () {
return {
activeName: '1',
dialogVisible: false,
activeNameTabs: 'first',
userInformList: [],
systemInformList: [],
significanceInformList: [],
informList:[]
}
},
methods: {
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {
});
},
handleClick(tab, event) {
console.log(tab, event);
},
handleChange(val) {
console.log(val);
}
}
}
</script>
<style scoped>
.emptyList {
width: 100%;
height: 180px;
display: flex;
justify-items: center;
align-items: center;
}
.emptyList i {
font-size: 120px;
margin: 0 auto;
color: #D4D4D4;
}
.emptytext {
width: 100%;
display: flex;
justify-items: center;
align-items: center;
font-size: 17px;
color: #D4D4D4;
}
.emptytext span {
margin: 0 auto;
}
.badgeiocn {
font-size: 17px;
}
.tabsList {
margin-top: -30px;
min-height: 100px
}
.tabFont {
font-size: 22px;
}
</style>

View File

@ -80,18 +80,21 @@
</div>
</template>
<script>
export default {
name: 'areaTree',
components: {},
components: {
},
data: function () {
return {}
return {
}
},
methods: {
},
mounted() {
document.querySelector('body').setAttribute('style', 'background-color:#f6f5f4')
document.querySelector('body').setAttribute('style', 'background-color:#f4f5f9')
},
beforeDestroy() {
document.querySelector('body').removeAttribute('style')

View File

@ -21,9 +21,10 @@
<div class="main-right">
<!-- <svg-icon icon-class="tool" class="svgicon"/>-->
<!-- <div class="aside-title"><i class="el-icon-s-management"></i><span>发现</span></div>-->
<div class="aside-title" @click="goRouter(8)"><i class="el-icon-s-tools"></i><span>最新</span></div>
<div class="aside-title"><i class="el-icon-star-on"></i><span>星标</span></div>
<div class="aside-title"><i class="el-icon-help"></i><span>稍后看</span></div>
<div class="aside-title" @click="goRouter(8)"><i class="el-icon-folder"></i><span>最新</span></div>
<div class="aside-title"><i class="el-icon-star-off"></i><span>星标</span></div>
<div class="aside-title"><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-s-platform"></i><span>任意门</span></div>-->
<!-- <div class="aside-title"><i class="el-icon-message-solid"></i><span>收件箱</span></div>-->
<div class="reminder">我的收藏 <svg-icon icon-class="sx" style="margin-left:5px" @click="refreshNode"/></div>
@ -32,13 +33,13 @@
</div>
<div class="reminder" >工具箱</div>
<!-- <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-s-management"></i><span>标签管理</span></div>
<div class="aside-title" @click="goRouter(6)"><i class="el-icon-delete-solid" style="color: red"></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" @click="goRouter(5)"><i class="el-icon-s-platform"></i><span>导入书签</span></div>-->
<div class="aside-title"><i class="el-icon-s-comment"></i><span>意见反馈</span></div>
<div class="aside-title"><i class="el-icon-chat-dot-square"></i><span>意见反馈</span></div>
<!-- <div class="aside-title" @click="ceshi"><i class="el-icon-s-comment"></i><span>测试页面</span></div>-->
<div class="aside-title" @click="goRouter(2)"><i class="el-icon-s-platform"></i><span>小工具</span></div>
<div class="aside-title " style="margin-bottom: 100px" @click="goRouter(9)"><i class="el-icon-s-grid"></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(9)"><i class="el-icon-setting"></i><span>更多设置</span></div>
</div>
@ -74,7 +75,7 @@
</el-container>
<!-- 编辑弹窗-->
<el-dialog :title="title" :visible.sync="open" width="500px" class="menuedit" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" >
<el-form-item prop="menuName">
<div class="labelname">菜单名称</div>
<el-input class="custom-input" v-model="form.menuName" placeholder="请输入菜单名称"/>