兰代清没头发

This commit is contained in:
Zhang HaoYang 2023-12-24 22:28:00 +08:00
parent 1d23a9eaf0
commit a3479d41b8
2 changed files with 342 additions and 291 deletions

View File

@ -1,135 +1,141 @@
<template>
<div class="wrapper">
<LeftSide :category="category"></LeftSide>
<div class="DefinedPage" >
<div class="LeftPart" style="overflow: auto">
<div class="JustBack" style="width:670px;display:flex; flex-direction: row; flex-wrap: nowrap;height:430px !important;">
<div id="ShowPic" style="display: flex;flex-direction: column;flex-wrap: wrap">
<div class="card" style="width: 180px;height:180px;margin-top:50px;background-color: var( --theme-bg-color)" >
<img :src="UrlObj.icon">
</div>
<div id="IconGroup" style="margin-top:60px;display: flex;flex-direction: row;flex-wrap: nowrap;margin-left:-20px">
<div class="little-Triangle" style=" margin-left:15px;">
<el-tooltip placement="bottom" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="MyPopover" slot="content">
<span style="font-size:12px !important;">91视频网站完整URL</span><br/><br/>
<div style="width:100% ;text-align: center">{{UrlObj.url}}</div>
</div>
<i class="el-icon-link" id="little-Circle-content" style="font-weight:550;padding:5px;font-size:15px!important;margin-top:5px">完整URL</i>
</el-tooltip>
<div class="DefinedPage">
<div class="LeftPart" style="overflow: auto">
<div class="JustBack"
style="width:670px;display:flex; flex-direction: row; flex-wrap: nowrap;height:430px !important;">
<div id="ShowPic" style="display: flex;flex-direction: column;flex-wrap: wrap">
<div class="card" style="width: 180px;height:180px;margin-top:50px;background-color: var( --theme-bg-color)"
@click="ToURL()">
<img :src="UrlObj.icon">
</div>
<div class="little-Triangle" style=" margin-left:15px;">
<el-tooltip placement="bottom" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="MyPopover" slot="content">
<span style="font-size:12px !important;">91视频网站手机二维码</span><br/><br/>
<div style="width:100% ;text-align: center"><img style="width:150px" src="../../assets/img/beauty.jpg" /></div>
</div>
<i class="el-icon-picture" id="little-Circle-content" style="font-weight:550; padding:5px;font-size:15px!important;margin-top:5px">手机查看</i>
</el-tooltip>
</div>
</div>
</div>
<div class="NavInfo" style="margin-top:45px;margin-left:50px;width:220px;">
<span style="font-size:30px;font-family: STHupo">{{UrlObj.name}}</span><br/>
<div class="NavInfo" >
<span style="width:200px">创建时间{{Cdate}}</span><br/>
<span style="width:200px">创建用户{{}}</span><br/>
<span style="width:200px">所属标签小视频</span><br/>
<div style="display: flex;flex-direction: row">
<div class="little-Circle" id="readNum" style=" margin-left:15px;">
<el-tooltip placement="top" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div id="IconGroup"
style="margin-top:60px;display: flex;flex-direction: row;flex-wrap: nowrap;margin-left:-20px">
<div class="little-Triangle" style=" margin-left:15px;">
<el-tooltip placement="bottom" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="MyPopover" slot="content">
<span style="font-size:12px !important;">91视频网站总浏览量</span><br/><br/>
<div style="width:100% ;text-align: center">{{UrlObj.views}} </div>
<span style="font-size:12px !important;">{{ UrlObj.name }}完整URL</span><br/><br/>
<div style="width:100% ;text-align: center">{{ UrlObj.url }}</div>
</div>
<i class="el-icon-s-custom" id="little-Circle-content" style=" padding:5px;"></i>
<i class="el-icon-link" id="little-Circle-content"
style="font-weight:550;padding:5px;font-size:15px!important;margin-top:5px">完整URL</i>
</el-tooltip>
</div>
<div class="little-Circle" id="Rank" style="margin-left:15px;">
<el-tooltip placement="top" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="little-Triangle" style=" margin-left:15px;">
<el-tooltip placement="bottom" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="MyPopover" slot="content">
<span style="font-size:12px !important;">91视频网站总星级</span><br/><br/>
<div style="width:100% ;text-align: center;">
<span style="font-size:20px"></span>
<br/>
<span>评分 3.8</span>
<span style="font-size:12px !important;">{{ UrlObj.name }}手机二维码</span><br/><br/>
<div style="width:100% ;text-align: center"><img style="width:150px"
:src="getQR(UrlId,UrlObj.icon)"></div>
</div>
<i class="el-icon-picture" id="little-Circle-content"
style="font-weight:550; padding:5px;font-size:15px!important;margin-top:5px">手机查看</i>
</el-tooltip>
</div>
</div>
</div>
<div class="NavInfo" style="margin-top:45px;margin-left:50px;width:220px;">
<span style="font-size:30px;font-family: STHupo">{{ UrlObj.name }}</span><br/>
<div class="NavInfo">
<span style="width:200px">创建时间{{ Cdate }}</span><br/>
<span style="width:200px">创建用户{{}}</span><br/>
<span style="width:200px">所属标签小视频</span><br/>
<div style="display: flex;flex-direction: row">
<div class="little-Circle" id="readNum" style=" margin-left:15px;">
<el-tooltip placement="top" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="MyPopover" slot="content">
<span style="font-size:12px !important;">91视频网站总浏览量</span><br/><br/>
<div style="width:100% ;text-align: center">{{ UrlObj.views }} </div>
</div>
</div>
<i class="el-icon-star-on" id="little-Circle-content" style=" padding:5.5px; "></i>
</el-tooltip>
</div>
<div class="little-Circle" id="Rank" style="margin-left:15px;" @click="WarnToAdmin()">
<el-tooltip placement="top" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="MyPopover" slot="content" >
<span style="font-size:12px !important;">向管理员反馈问题</span><br/><br/>
</div>
<i class="el-icon-warning" id="little-Circle-content" style=" padding:5px; "></i>
</el-tooltip>
<i class="el-icon-s-custom" id="little-Circle-content" style=" padding:5px;"></i>
</el-tooltip>
</div>
<div class="little-Circle" id="Rank" style="margin-left:15px;">
<el-tooltip placement="top" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="MyPopover" slot="content">
<span style="font-size:12px !important;">91视频网站总星级</span><br/><br/>
<div style="width:100% ;text-align: center;">
<span style="font-size:20px"></span>
<br/>
<span>评分 3.8</span>
</div>
</div>
<i class="el-icon-star-on" id="little-Circle-content" style=" padding:5.5px; "></i>
</el-tooltip>
</div>
<div class="little-Circle" id="Rank" style="margin-left:15px;" @click="WarnToAdmin()">
<el-tooltip placement="top" width="150"
trigger="hover"
effect="dark" close-delay="2000">
<div class="MyPopover" slot="content">
<span style="font-size:12px !important;">向管理员反馈问题</span><br/><br/>
</div>
<i class="el-icon-warning" id="little-Circle-content" style=" padding:5px; "></i>
</el-tooltip>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 标签详情-->
<div class="JustBack" style="width:670px;display:flex; flex-direction: column; flex-wrap: nowrap;">
<!--文章详情-->
<div style="width:670px;color: var(--theme-color)">
<div class="HeadLine">
<div class="HeadSquare"></div>
<div class="TitleFont"><i class="el-icon-s-promotion"></i>网站介绍</div>
<!-- 标签详情-->
<div class="JustBack" style="width:670px;display:flex; flex-direction: column; flex-wrap: nowrap;">
<!--文章详情-->
<div style="width:670px;color: var(--theme-color)">
<div class="HeadLine">
<div class="HeadSquare"></div>
<div class="TitleFont"><i class="el-icon-s-promotion"></i>网站介绍</div>
</div>
<div class="ArticleContent">
{{ UrlObj.desc }}
</div>
</div>
<div class="ArticleContent">
{{UrlObj.desc}}
<!--导航评论-->
</div>
<!--热度趋势-->
<div class="JustBack" style="width:670px;display:flex; flex-direction: column; flex-wrap: nowrap;">
<div style="width:670px;color: var(--theme-color)">
<div class="HeadLine" style="margin-top:50px">
<div class="HeadSquare"></div>
<div class="TitleFont"><i class="el-icon-s-marketing"></i>热度趋势</div>
</div>
<div class="ArticleContent">
<div id="ManuEchart" style="width:550px;height:300px;"></div>
</div>
</div>
</div>
<!--导航评论-->
</div>
<!--热度趋势-->
<div class="JustBack" style="width:670px;display:flex; flex-direction: column; flex-wrap: nowrap;">
<div style="width:670px;color: var(--theme-color)">
<div class="HeadLine" style="margin-top:50px">
<div class="HeadSquare"></div>
<div class="TitleFont"><i class="el-icon-s-marketing"></i>热度趋势</div>
</div>
<div class="ArticleContent">
<div ref="ManuEchart" style="width:550px;height:300px;"></div>
<!--用户评论-->
<div class="JustBack" style="width:670px;height:auto;display:flex; flex-direction: column; flex-wrap: nowrap;">
<div style="width:670px;color: var(--theme-color)">
<div class="HeadLine" style="margin-top:30px">
<div class="HeadSquare"></div>
<div class="TitleFont"><i class="el-icon-s-comment"></i>用户评论</div>
</div>
<div class="ArticleContent" style="margin-left:6px !important;width:580px !important;">
<el-card style="background-color: var(--theme-comment-color)">
<UserComment></UserComment>
</el-card>
</div>
</div>
</div>
</div>
<!--用户评论-->
<div class="JustBack" style="width:670px;height:auto;display:flex; flex-direction: column; flex-wrap: nowrap;">
<div style="width:670px;color: var(--theme-color)">
<div class="HeadLine" style="margin-top:30px">
<div class="HeadSquare"></div>
<div class="TitleFont"><i class="el-icon-s-comment"></i>用户评论</div>
</div>
<div class="ArticleContent" style="margin-left:6px !important;width:580px !important;">
<el-card style="background-color: var(--theme-comment-color)">
<UserComment></UserComment>
</el-card>
</div>
</div>
<div class="RightPart" style="overflow: auto;display: flex;flex-direction: column">
<hot-recomment></hot-recomment>
<NewRecomment></NewRecomment>
<RandomRecomment></RandomRecomment>
</div>
</div>
<div class="RightPart" style="overflow: auto;display: flex;flex-direction: column">
<hot-recomment></hot-recomment>
<NewRecomment></NewRecomment>
<RandomRecomment></RandomRecomment>
</div>
</div>
</div>
</template>
@ -142,58 +148,64 @@ import Vue from "vue";
import * as echarts from 'echarts'
import axios from "axios";
import LeftSide from "@/components/home/LeftSide.vue";
Vue.prototype.$echarts = echarts;
export default {
name:"NavDetail",
name: "NavDetail",
// eslint-disable-next-line vue/no-unused-components
components: {LeftSide, HotRecomment,NewRecomment,RandomRecomment,UserComment},
components: {LeftSide, HotRecomment, NewRecomment, RandomRecomment, UserComment},
data() {
return {
category:[],
category: [],
visible: false,
//
TimeList:[],
//
PageView:[],
//Echart
ManuChart:null,
// Echart
MyOption:{},
// urlId:
UrlId :null,
//
UrlObj:Object,
//
UnDate:null,
Cdate:null,
}},
//
TimeList: [],
//
PageView: [],
//Echart
ManuChart: null,
// urlId:
UrlId: null,
//
UrlObj: Object,
//
UnDate: null,
Cdate: null,
//
viewByTime: null,
//
//
xTime: [],
// y
YView: [],
imageCode: null,
}
},
mounted() {
this.initPage();
this.GetNav(this.UrlId);
this.initEchart();
this.getCategories();
this.initPage();
this.getQR(this.UrlId, this.UrlObj.icon);
},
created() {
},
computed: {
},
computed: {},
methods: {
getCategories() {
// 访
ViewByTime(id) {
let _this = this;
axios({
method: 'post',
url: '/api/UrlAndCate/disposeBookmarkExhibitedToJson',
}).then(function (res) {
// console.log(res);
if (res.data.data) {
_this.category = res.data.data;
} else {
return false;
axios.get('/api/getUrlAccess', {
params: {
urlId: id
}
}).then(function (res) {
_this.viewByTime = res.data;
// console.log(_this.viewByTime)
Object.keys(_this.viewByTime).forEach(key => {
_this.xTime.push(_this.viewByTime[key].time);
_this.YView.push(_this.viewByTime[key].views);
})
_this.initEchart(_this.xTime,_this.YView);
}).catch((error) => {
Vue.prototype.$notify.error({
title: '错误',
@ -202,140 +214,183 @@ export default {
});
})
},
//
getFormatDate() {
var that = this;
console.log(this.UnDate + "传入时间戳");
var date = new Date(this.UnDate);// 10*1000131000
var Y = date.getFullYear() + '年';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '月';
var D = date.getDate() + '日 ';
// var h = date.getHours() + ':';
// var m = date.getMinutes() + ':';
// var s = date.getSeconds();
that.Cdate = "" + Y + M + D ;
},
//
initPage(){
this.UrlId = this.$route.query.uid;
},
// Echart
initEchart(){
var that = this;
this.ManuChart = this.$echarts.init(this.$refs.ManuEchart);
that.MyOption={
tooltip: {
trigger: 'item',
axisPointer: {
type: 'shadow'
},
backgroundColor: '#fff', //
borderColor: '#000', //
borderWidth: 1, //
textStyle: { //
color: '#000',
fontSize: 12
}
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisLine:{
show: true,
lineStyle: {
color: '#76aaff',
width: 2,
type: "solid"
}
}
},
yAxis: {
type: 'value',
splitLine:{
lineStyle:{
color:'#76aaff',
}
},
axisLine:{
show: true,
lineStyle: {
color: '#76aaff',
width: 2,
type: "solid"
}
},
axisLabel: {//y
textStyle: {
color: '#76aaff',
margin: 15
},
// formatter: '{value} %'//y%
}
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line',
label: {//
show: true, //
}
},
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'bar'
},
],
dataZoom: {
yAxisIndex: [0],
type:'inside',
start: 0,
end: 100,
zoomLock:true,
}
//
getQR(url_id, icon_url) {
let _this = this;
axios({
method: 'post',
url: '/api/qrcode/qrc_return',
data: {
url_id: url_id,
icon_url: icon_url
}
that.ManuChart.setOption(that.MyOption,true);
},
//
GetNav(id){
let that = this;
axios({
method: 'post',
url: '/api/UrlAndCate/clickUrl',
params: {
urlId : id
}
}).then((res)=>{
that.UrlObj = res.data.data;
that.UnDate = that.UrlObj.createtime;
}).catch((error)=>{
Vue.prototype.$notify.error({
title: '错误',
message: error===null?'':error,
offset: 0
});
}).then(function (res) {
if (res.data) {
_this.imageCode = "data:image/jpg;base64," + res.data;
}
return false;
}).catch((error) => {
Vue.prototype.$notify.error({
title: '错误',
message: error === null ? '' : error,
offset: 0
});
this.getFormatDate();
})
return this.imageCode
},
//
ToURL() {
var that = this;
window.open(that.UrlObj.url, '_blank')
},
//
getFormatDate() {
var that = this;
console.log(this.UnDate + "传入时间戳");
var date = new Date(this.UnDate);// 10*1000131000
var Y = date.getFullYear() + '年';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '月';
var D = date.getDate() + '日 ';
// var h = date.getHours() + ':';
// var m = date.getMinutes() + ':';
// var s = date.getSeconds();
that.Cdate = "" + Y + M + D;
},
//
initPage() {
this.UrlId = this.$route.query.uid;
this.GetNav(this.UrlId);
// this.initEchart();
},
// Echart
initEchart(xline,yline) {
// var that = this;
var myChart = this.$echarts.init(
document.getElementById('ManuEchart')
);
var MyOption = {
tooltip: {
trigger: 'item',
axisPointer: {
type: 'shadow'
},
dataZoom: [{
type: 'slider', //
show: true, // dataZoom
start: 0, // 0
end: 30, // 100
handleSize: 8, //
handleStyle: {
color: '#DCE2E8' //
},
xAxisIndex: [0], // x
filterMode: 'filter' // filter
}]
,
backgroundColor: '#fff', //
borderColor: '#000', //
borderWidth: 1, //
textStyle: { //
color: '#000',
fontSize: 12
}
},
xAxis: {
type: 'category',
data: xline,
axisLine: {
show: true,
lineStyle: {
color: '#76aaff',
width: 2,
type: "solid"
}
}
},
yAxis: {
type: 'value',
splitLine: {
lineStyle: {
color: '#76aaff',
}
},
axisLine: {
show: true,
lineStyle: {
color: '#76aaff',
width: 2,
type: "solid"
}
},
axisLabel: {//y
textStyle: {
color: '#76aaff',
margin: 15
},
// formatter: '{value} %'//y%
}
},
series: [
{
data: yline,
type: 'line',
label: {//
show: true, //
}
},
{
data: yline,
type: 'bar'
},
],
dataZoom: {
yAxisIndex: [0],
type: 'inside',
start: 0,
end: 100,
zoomLock: true,
}
}
myChart.setOption(MyOption, true);
},
//
GetNav(id) {
let that = this;
axios({
method: 'post',
url: '/api/UrlAndCate/clickUrl',
params: {
urlId: id
}
}).then((res) => {
that.UrlObj = res.data.data;
that.UnDate = that.UrlObj.createtime;
}).catch((error) => {
Vue.prototype.$notify.error({
title: '错误',
message: error === null ? '' : error,
offset: 0
});
});
this.getFormatDate();
},
//
WarnToAdmin(){
console.log(this.UrlId);
console.log(this.UrlObj);
console.log(this.UrlObj.createtime + typeof (this.UrlObj.createtime));
console.log(this.Cdate);
WarnToAdmin() {
console.log(this.xTime);
}
}
}
</script>
<style lang="css">
.DefinedPage{
display:flex;
.DefinedPage {
display: flex;
flex-direction: row;
width:100%;
width: 100%;
overflow: auto;
}
</style>
@ -343,30 +398,26 @@ export default {
<style scoped>
/**标签详情**/
.ArticleContent{
width:80%;
margin-left:50px;
margin-top:15px;
font-weight:550;
font-size:18px;
.ArticleContent {
width: 80%;
margin-left: 50px;
margin-top: 15px;
font-weight: 550;
font-size: 18px;
color: var(--theme-color);
}
/**趋势图**/
.LookNumEchart{
width:80%;
margin-left:60px;
margin-top:15px;
font-weight:550;
font-size:18px;
.LookNumEchart {
width: 80%;
margin-left: 60px;
margin-top: 15px;
font-weight: 550;
font-size: 18px;
color: var(--theme-color);
}
@property --rotate {
syntax: "<angle>";
initial-value: 132deg;
@ -413,6 +464,7 @@ body {
color: rgb(88 199 250 / 100%);
transition: color 1s;
}
.card:hover:before, .card:hover:after {
animation: none;
opacity: 0;
@ -425,8 +477,7 @@ body {
height: 108%;
border-radius: 8px;
background-image: linear-gradient(
var(--rotate)
, #5ddcff, #3c67e3 43%, #4e00c2);
var(--rotate), #5ddcff, #3c67e3 43%, #4e00c2);
position: absolute;
z-index: -1;
//top: -1%;
@ -447,8 +498,7 @@ body {
transform: scale(0.8);
filter: blur(calc(var(--card-height) / 6));
background-image: linear-gradient(
var(--rotate)
, #5ddcff, #3c67e3 43%, #4e00c2);
var(--rotate), #5ddcff, #3c67e3 43%, #4e00c2);
opacity: 1;
transition: opacity .5s;
animation: spin 2.5s linear infinite;

View File

@ -98,6 +98,7 @@ export default {
}).then(function (res) {
if (res.data) {
_this.navList = res.data;
console.log(res.data);
}
}).catch((error) => {
Vue.prototype.$notify.error({