This commit is contained in:
landaiqing 2023-12-29 10:09:35 +08:00
parent 4fc4858efc
commit a2648c6c16
8 changed files with 112 additions and 47 deletions

View File

@ -1,4 +1,4 @@
<template> <template xmlns="http://www.w3.org/1999/html">
<div class="wrapper" :key="UrlId"> <div class="wrapper" :key="UrlId">
<LeftSide :category="category"></LeftSide> <LeftSide :category="category"></LeftSide>
<div class="DefinedPage"> <div class="DefinedPage">
@ -9,7 +9,7 @@
<div class="card" style="width: 130px;height:130px;margin-top:50px;background-color: var( --theme-bg-color)" <div class="card" style="width: 130px;height:130px;margin-top:50px;background-color: var( --theme-bg-color)"
@click="ToURL()"> @click="ToURL()">
<div style="width:100%;height:100%"> <div style="width:100%;height:100%">
<el-image v-if="UrlObj.icon !== null " :src="UrlObj.icon" style="width:100%;height:100%"> <el-image v-if="UrlObj.icon" :src="UrlObj.icon" style="width:100%;height:100%">
<div slot="error" class="image-slot"> <div slot="error" class="image-slot">
<img style="width: 28px;" :src="require('@/assets/img/null.png')" alt="图标"> <img style="width: 28px;" :src="require('@/assets/img/null.png')" alt="图标">
</div> </div>
@ -29,22 +29,25 @@
<div style="width:100% ;text-align: center">{{ UrlObj.url }}</div> <div style="width:100% ;text-align: center">{{ UrlObj.url }}</div>
</div> </div>
<i class="el-icon-link" id="little-Circle-content" <i class="el-icon-link" id="little-Circle-content"
style="font-weight:550;padding:5px;font-size:15px!important;margin-top:5px">完整URL</i> style="cursor: pointer;font-weight:550;padding:5px;font-size:15px!important;margin-top:5px">完整URL</i>
</el-tooltip> </el-tooltip>
</div> </div>
<div class="little-Triangle" style=" margin-left:15px;"> <div class="little-Triangle" style=" margin-left:15px;">
<el-tooltip placement="bottom" width="150" <el-popover
trigger="hover" placement="bottom"
effect="dark" close-delay="2000"> width="200"
<div class="MyPopover" slot="content"> trigger="click"
<span v-if="UrlObj.name" style="font-size:12px !important;">{{ UrlObj.name }}手机二维码</span><br/><br/> :title="'【'+UrlObj.name+'】'+'手机二维码'"
>
<div class="MyPopover" >
<div style="width:100% ;text-align: center"><img style="width:150px" <div style="width:100% ;text-align: center"><img style="width:150px"
:src="getNavQR(this.$route.query.uid)"></div> :src="imageCode"></div>
</div> </div>
<i class="el-icon-picture" id="little-Circle-content" <i slot="reference" class="el-icon-picture" id="little-Circle-content"
style="font-weight:550; padding:5px;font-size:15px!important;margin-top:5px">手机查看</i> style="cursor: pointer;font-weight:550; padding:5px;font-size:15px!important;margin-top:5px" @click="getNavQR">手机查看</i>
</el-tooltip> </el-popover>
</div> </div>
</div> </div>
</div> </div>
<div id="网站信息" class="NavInfo" style="margin-top:35px;margin-left:50px;width:220px;"> <div id="网站信息" class="NavInfo" style="margin-top:35px;margin-left:50px;width:220px;">
@ -93,16 +96,25 @@
<i class="el-icon-star-on" id="little-Circle-content" style=" padding:5.5px; "></i> <i class="el-icon-star-on" id="little-Circle-content" style=" padding:5.5px; "></i>
</el-tooltip> </el-tooltip>
</div> </div>
<!-- <div class="little-Circle" id="Rank" style="margin-left:15px;" @click="WarnToAdmin()">--> <div class="little-Circle" id="Rank" style="margin-left:15px;" @click="checkUrl(UrlObj.url)">
<!-- <el-tooltip placement="top" width="150"--> <el-popover
<!-- trigger="hover"--> placement="bottom"
<!-- effect="dark" close-delay="2000">--> width="200"
<!-- <div class="MyPopover" slot="content">--> trigger="click"
<!-- <span style="font-size:12px !important;">向管理员反馈问题</span><br/><br/>--> :title="'【'+UrlObj.url+'】'+'状态检测'"
<!-- </div>--> >
<!-- <i class="el-icon-warning" id="little-Circle-content" style=" padding:5px; "></i>--> <div class="MyPopover"
<!-- </el-tooltip>--> v-loading="loading"
<!-- </div>--> element-loading-text="拼命加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="var(--theme-bg-color)">
<span> {{msg}}</span> <br>
<span>返回数据{{code}}</span><br>
<span> {{speed}}</span><br>
</div>
<i slot="reference" class="el-icon-star-on" id="little-Circle-content" style=" padding:5.5px; "></i>
</el-popover>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -141,7 +153,7 @@
</div> </div>
</div> </div>
</div> </div>
<div id="热度趋势" class="JustBack" style="width:670px;display:flex; flex-direction: column; flex-wrap: nowrap;"> <div id="特别声明" class="JustBack" style="width:670px;display:flex; flex-direction: column; flex-wrap: nowrap;">
<div style="width:670px;color: var(--theme-color)"> <div style="width:670px;color: var(--theme-color)">
<div class="HeadLine" style="margin-top:50px"> <div class="HeadLine" style="margin-top:50px">
<div class="HeadSquare"></div> <div class="HeadSquare"></div>
@ -346,6 +358,10 @@ export default {
components: {LeftSide, HotRecomment, NewRecomment, RandomRecomment, UserComment}, components: {LeftSide, HotRecomment, NewRecomment, RandomRecomment, UserComment},
data() { data() {
return { return {
loading:true,
msg:null,
code:null,
speed:null,
CateNum:'', CateNum:'',
userId:'', userId:'',
userItem:{}, userItem:{},
@ -363,6 +379,11 @@ export default {
name:'热度趋势', name:'热度趋势',
childUC:[] childUC:[]
}, },
{
name:'特别声明',
childUC:[]
}
,
{ {
name:'用户评论', name:'用户评论',
childUC:[] childUC:[]
@ -414,6 +435,7 @@ export default {
content: [{ required: 'true', message: '请输入评价!', trigger: 'blur' }], content: [{ required: 'true', message: '请输入评价!', trigger: 'blur' }],
}, },
copyright_info:null, copyright_info:null,
urlStatus:null,
} }
}, },
watch: { watch: {
@ -734,7 +756,7 @@ export default {
} }
}).then(function (res) { }).then(function (res) {
Object.keys(res.data.data).forEach(key => { Object.keys(res.data.data).forEach(key => {
if(res.data.data[key].id == _this.UrlObj.cateId){ if(res.data.data[key].id === _this.UrlObj.cateId){
_this.BelongTo = res.data.data[key].name; _this.BelongTo = res.data.data[key].name;
} }
}) })
@ -790,6 +812,24 @@ export default {
} }
}) })
}, },
checkUrl(url) {
let _this = this;
axios({
method: 'get',
url: '/api/urlcheck',
params: {
url: url,
}
}).then(function (res) {
_this.msg=res.data.msg;
_this.code=res.data.code;
_this.speed=res.data.speed;
_this.loading=false;
})
},
// //
getNavQR(url_id) { getNavQR(url_id) {
let _this = this; let _this = this;
@ -797,16 +837,14 @@ export default {
method: 'post', method: 'post',
url: '/api/qrcode/qrc_return', url: '/api/qrcode/qrc_return',
params: { params: {
url_id: url_id, url_id: this.$route.query.uid,
} }
}).then(function (res) { }).then(function (res) {
if (res.data) { if (res.data) {
_this.imageCode = "data:image/jpg;base64," + res.data; _this.imageCode = "data:image/jpg;base64," + res.data;
} }
return false; return false;
}) })
return this.imageCode
}, },
// //
ToURL() { ToURL() {

View File

@ -55,7 +55,11 @@
<el-dropdown @command="handleCommand"> <el-dropdown @command="handleCommand">
<div class="avatar-div" <div class="avatar-div"
style="border-radius: 50px;width: 44px;height: 44px;margin-left: 20px;cursor: pointer" v-show="!isLogin"> style="border-radius: 50px;width: 44px;height: 44px;margin-left: 20px;cursor: pointer" v-show="!isLogin">
<el-avatar> user</el-avatar> <el-avatar :src="avatar" >
<div slot="error" class="image-slot" style="display: flex;align-items: center;justify-content: center">
<img style="border-radius: 50px;width: 90%;margin-top: 5px" :src="require('@/assets/img/avater.png')" alt="图标">
</div>
</el-avatar>
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="setting">书签设置</el-dropdown-item> <el-dropdown-item command="setting">书签设置</el-dropdown-item>
@ -287,6 +291,7 @@ export default {
components: {SearchInput}, components: {SearchInput},
data() { data() {
return { return {
visible: false, visible: false,
TabsValue: '1', TabsValue: '1',
tabList: [ tabList: [
@ -348,7 +353,7 @@ export default {
searchDialog:false, searchDialog:false,
otherNav:[], otherNav:[],
imageUrl:null, imageUrl:null,
avatar:null,
} }
}, },
mounted() { mounted() {
@ -357,14 +362,14 @@ export default {
// this.reacherBarFun(); // this.reacherBarFun();
this.changeImg(); this.changeImg();
this.getOtherNav(); this.getOtherNav();
this.avatar=localStorage.getItem('avatar')
}, },
created() { created() {
this.getImageByConfig('logo'); this.getImageByConfig('logo');
}, },
computed: {}, computed: {},
methods: { methods: {
...mapMutations(['changeLogin', 'setUserId', 'setUserRole']), ...mapMutations(['changeLogin', 'setUserId', 'setUserRole','setAvatar']),
getImageByConfig(name){ getImageByConfig(name){
let _this=this; let _this=this;
@ -474,6 +479,7 @@ export default {
localStorage.removeItem("Authorization") localStorage.removeItem("Authorization")
localStorage.removeItem("userId") localStorage.removeItem("userId")
localStorage.removeItem("userRole") localStorage.removeItem("userRole")
localStorage.removeItem("avatar")
this.$router.push({ this.$router.push({
path:'/home', path:'/home',
}) })
@ -562,6 +568,7 @@ export default {
// _this.userToken = 'Bearer ' + res.data.token; // _this.userToken = 'Bearer ' + res.data.token;
_this.changeLogin({Authorization: res.data.token}); _this.changeLogin({Authorization: res.data.token});
_this.setAvatar({avatar: res.data.avatar});
_this.setUserId({userId: res.data.Id}); _this.setUserId({userId: res.data.Id});
_this.setUserRole({userRole: res.data.roleId}); _this.setUserRole({userRole: res.data.roleId});
_this.closeLoginDialog(); _this.closeLoginDialog();

View File

@ -15,11 +15,10 @@
<span class="title">热搜榜</span> <span class="title">热搜榜</span>
<!-- <span class="clear" @click="clearHistory" v-show="isShowClearHistory"><i class="el-icon-circle-close"></i>清空</span>--> <!-- <span class="clear" @click="clearHistory" v-show="isShowClearHistory"><i class="el-icon-circle-close"></i>清空</span>-->
</div> </div>
<div v-if="hotSearchKeyWords" v-show="isShowClearHistory"> <div v-if="hotSearchKeyWords" v-for="(tag,index) in hotSearchKeyWords"
:key="index" v-show="isShowClearHistory">
<el-tag <el-tag
:v-if="hotSearchKeyWords" :v-if="hotSearchKeyWords"
v-for="(tag,index) in hotSearchKeyWords"
:key="index"
size="small" size="small"
style="margin-right: 10px; margin-top: 10px; cursor: pointer" style="margin-right: 10px; margin-top: 10px; cursor: pointer"
@click="handleSearch(tag)" @click="handleSearch(tag)"
@ -148,7 +147,6 @@ export default {
} }
}).then((res)=>{ }).then((res)=>{
if (res.data.code === 200) { if (res.data.code === 200) {
that.hotSearchKeyWords=res.data.data; that.hotSearchKeyWords=res.data.data;
} else { } else {

View File

@ -4,8 +4,8 @@
<img style="width: 70px;height: 70px;margin-left: 10px" :src="icon"> <img style="width: 70px;height: 70px;margin-left: 10px" :src="icon">
</div> </div>
<div class="content"> <div class="content">
<span class="content-info">{{info}} /</span> <span v-if="info" class="content-info">{{info}} /</span>
<span class="content-tag">{{name}}</span> <span v-if="name" class="content-tag">{{name}}</span>
</div> </div>
</div> </div>
</template> </template>

View File

@ -4,9 +4,9 @@
<div class="card-cover" <div class="card-cover"
style="background-image: url('https://pic.imgdb.cn/item/658af285c458853aef9177aa.jpg')"></div> style="background-image: url('https://pic.imgdb.cn/item/658af285c458853aef9177aa.jpg')"></div>
<!-- <img class="card-avatar" src="https://pic.imgdb.cn/item/658af285c458853aef9177aa.jpg" alt="avatar">--> <!-- <img class="card-avatar" src="https://pic.imgdb.cn/item/658af285c458853aef9177aa.jpg" alt="avatar">-->
<el-image v-if="user.avatar" class="card-avatar" :src="user.avatar" alt="avatar"> <el-image class="card-avatar" :src="user.avatar" alt="avatar">
<div slot="error" class="image-slot"> <div slot="error" class="image-slot" style="display: flex;align-items: center;justify-content: center">
<img style="width: 100%;margin-top: 5px" :src="require('@/assets/img/NAV.png')" alt="图标"> <img style="border-radius: 50px;width: 90%;margin-top: 5px" :src="require('@/assets/img/avater.png')" alt="图标">
</div> </div>
</el-image> </el-image>
<h1 v-if="user.nickname===null" class="card-fullname">{{user.userLogin}}</h1> <h1 v-if="user.nickname===null" class="card-fullname">{{user.userLogin}}</h1>
@ -129,6 +129,7 @@
<script> <script>
import axios from "axios"; import axios from "axios";
import Vue from "vue"; import Vue from "vue";
import {mapMutations} from "vuex";
export default { export default {
name: "PersonalInfoCard", name: "PersonalInfoCard",
@ -189,6 +190,7 @@ export default {
}, },
computed: {}, computed: {},
methods: { methods: {
...mapMutations(['setAvatar']),
// //
resetForm(formName) { resetForm(formName) {
this.$refs[formName].resetFields(); this.$refs[formName].resetFields();
@ -222,6 +224,9 @@ export default {
}); });
_this.resetForm('updateForm'); _this.resetForm('updateForm');
_this.getUserAllInfo(); _this.getUserAllInfo();
setTimeout(()=>{
window.location.reload();
},1000)
} }
}).catch((error) => { }).catch((error) => {
// Vue.prototype.$notify.error({ // Vue.prototype.$notify.error({
@ -260,6 +265,7 @@ export default {
_this.user.userLogin=res.data.userLogin; _this.user.userLogin=res.data.userLogin;
_this.user.userRegistered=res.data.userRegistered; _this.user.userRegistered=res.data.userRegistered;
_this.user.roleId=res.data.roleId; _this.user.roleId=res.data.roleId;
_this.setAvatar({avatar:_this.user.avatar});
} }
}).catch((error) => { }).catch((error) => {
// Vue.prototype.$notify.error({ // Vue.prototype.$notify.error({

View File

@ -26,7 +26,11 @@
<el-dropdown @command="handleCommand"> <el-dropdown @command="handleCommand">
<div class="avatar-div" <div class="avatar-div"
style="border-radius: 50px;width: 44px;height: 44px;margin-left: 20px;cursor: pointer"> style="border-radius: 50px;width: 44px;height: 44px;margin-left: 20px;cursor: pointer">
<el-avatar> user</el-avatar> <el-avatar :src="avatar" >
<div slot="error" class="image-slot" style="display: flex;align-items: center;justify-content: center">
<img style="border-radius: 50px;width: 90%;margin-top: 5px" :src="require('@/assets/img/avater.png')" alt="图标">
</div>
</el-avatar>
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="home">返回首页</el-dropdown-item> <el-dropdown-item command="home">返回首页</el-dropdown-item>
@ -49,10 +53,12 @@ export default {
return { return {
loginDialogVisible:false, loginDialogVisible:false,
imageUrl:null, imageUrl:null,
avatar:null,
}}, }},
mounted() { mounted() {
this.toggleActive(); this.toggleActive();
// this.reacherBarFun(); // this.reacherBarFun();
this.avatar=localStorage.getItem('avatar')
}, },
created() { created() {
this.getImageByConfig('logo'); this.getImageByConfig('logo');

View File

@ -366,10 +366,15 @@ export default {
url:url url:url
} }
}).then(function(res){ }).then(function(res){
if(res.data.data){
that.form.icon = res.data.data.iconUrl; that.form.icon = res.data.data.iconUrl;
that.form.name = res.data.data.title; that.form.name = res.data.data.title;
that.form.desc = res.data.data.description; that.form.desc = res.data.data.description;
that.form.tags = res.data.data.keywords; that.form.tags = res.data.data.keywords;
}else {
return false;
}
}); });
}, },
// //

View File

@ -5,6 +5,7 @@ Vue.use(Vuex)
export default new Vuex.Store({ export default new Vuex.Store({
state: { state: {
avatar:localStorage.getItem('avatar') ? localStorage.getItem('avatar') : '',
title: localStorage.getItem('title') ? localStorage.getItem('title') : '', title: localStorage.getItem('title') ? localStorage.getItem('title') : '',
keywords: localStorage.getItem('keywords') ? localStorage.getItem('keywords') : '', keywords: localStorage.getItem('keywords') ? localStorage.getItem('keywords') : '',
description: localStorage.getItem('description') ? localStorage.getItem('description') : '', description: localStorage.getItem('description') ? localStorage.getItem('description') : '',
@ -16,6 +17,10 @@ export default new Vuex.Store({
}, },
getters: {}, getters: {},
mutations: { mutations: {
setAvatar(state, data){
state.avatar = data.avatar;
localStorage.setItem('avatar', data.avatar);
},
setTitle(state, data){ setTitle(state, data){
state.title = data.title; state.title = data.title;
localStorage.setItem('title', data.title); localStorage.setItem('title', data.title);