更新
This commit is contained in:
32
package-lock.json
generated
32
package-lock.json
generated
@@ -17,8 +17,10 @@
|
|||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"fs": "^0.0.1-security",
|
"fs": "^0.0.1-security",
|
||||||
"json-server": "^0.17.3",
|
"json-server": "^0.17.3",
|
||||||
|
"prismjs": "^1.29.0",
|
||||||
"vue": "^2.6.14",
|
"vue": "^2.6.14",
|
||||||
"vue-cookie": "^1.1.4",
|
"vue-cookie": "^1.1.4",
|
||||||
|
"vue-prism-editor": "^1.3.0",
|
||||||
"vue-router": "^3.5.1",
|
"vue-router": "^3.5.1",
|
||||||
"vuex": "^3.6.2",
|
"vuex": "^3.6.2",
|
||||||
"vxe-table": "^3.6.13"
|
"vxe-table": "^3.6.13"
|
||||||
@@ -11540,6 +11542,14 @@
|
|||||||
"renderkid": "^3.0.0"
|
"renderkid": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/prismjs": {
|
||||||
|
"version": "1.29.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
|
||||||
|
"integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/process-nextick-args": {
|
"node_modules/process-nextick-args": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||||
@@ -14455,6 +14465,17 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/vue-prism-editor": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/vue-prism-editor/-/vue-prism-editor-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-54RfgtMGRMNr9484zKMOZs1wyLDR6EfFylzE2QrMCD9alCvXyYYcS0vX8oUHh+6pMUu6ts59uSN9cHglpU2NRQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": "^2.6.11"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/vue-property-decorator": {
|
"node_modules/vue-property-decorator": {
|
||||||
"version": "8.5.1",
|
"version": "8.5.1",
|
||||||
"resolved": "https://registry.npmmirror.com/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz",
|
"resolved": "https://registry.npmmirror.com/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz",
|
||||||
@@ -24155,6 +24176,11 @@
|
|||||||
"renderkid": "^3.0.0"
|
"renderkid": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"prismjs": {
|
||||||
|
"version": "1.29.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
|
||||||
|
"integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
|
||||||
|
},
|
||||||
"process-nextick-args": {
|
"process-nextick-args": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||||
@@ -26420,6 +26446,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vue-prism-editor": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/vue-prism-editor/-/vue-prism-editor-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-54RfgtMGRMNr9484zKMOZs1wyLDR6EfFylzE2QrMCD9alCvXyYYcS0vX8oUHh+6pMUu6ts59uSN9cHglpU2NRQ==",
|
||||||
|
"requires": {}
|
||||||
|
},
|
||||||
"vue-property-decorator": {
|
"vue-property-decorator": {
|
||||||
"version": "8.5.1",
|
"version": "8.5.1",
|
||||||
"resolved": "https://registry.npmmirror.com/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz",
|
"resolved": "https://registry.npmmirror.com/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz",
|
||||||
|
@@ -17,8 +17,10 @@
|
|||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"fs": "^0.0.1-security",
|
"fs": "^0.0.1-security",
|
||||||
"json-server": "^0.17.3",
|
"json-server": "^0.17.3",
|
||||||
|
"prismjs": "^1.29.0",
|
||||||
"vue": "^2.6.14",
|
"vue": "^2.6.14",
|
||||||
"vue-cookie": "^1.1.4",
|
"vue-cookie": "^1.1.4",
|
||||||
|
"vue-prism-editor": "^1.3.0",
|
||||||
"vue-router": "^3.5.1",
|
"vue-router": "^3.5.1",
|
||||||
"vuex": "^3.6.2",
|
"vuex": "^3.6.2",
|
||||||
"vxe-table": "^3.6.13"
|
"vxe-table": "^3.6.13"
|
||||||
|
@@ -126,8 +126,8 @@
|
|||||||
<el-checkbox style="margin-top: 20px" v-for="(tag,index) in tags" :key="index" v-html="tag.category" border size="medium"></el-checkbox>
|
<el-checkbox style="margin-top: 20px" v-for="(tag,index) in tags" :key="index" v-html="tag.category" border size="medium"></el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="box-card">
|
<el-card class="box-card" style="margin-top: 10px">
|
||||||
总共:
|
总共: {{tags.length}}
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-backtop target=".main" :visibility-height="20" :right="10" :bottom="10"></el-backtop>
|
<el-backtop target=".main" :visibility-height="20" :right="10" :bottom="10"></el-backtop>
|
||||||
@@ -159,7 +159,7 @@ export default {
|
|||||||
loading: false,
|
loading: false,
|
||||||
loginDialogVisible: false,
|
loginDialogVisible: false,
|
||||||
manageCategoryVisible:false,
|
manageCategoryVisible:false,
|
||||||
tags:null,
|
tags:[],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -202,7 +202,7 @@ export default {
|
|||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'http://localhost:8082/helloGithub_war_exploded/selectLastByCate',
|
url: '/api/selectLastByCate',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
num: "0",
|
num: "0",
|
||||||
@@ -216,7 +216,7 @@ export default {
|
|||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'http://localhost:8082/helloGithub_war_exploded/selectMostStar',
|
url: '/api/selectMostStar',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
num: index,
|
num: index,
|
||||||
@@ -248,7 +248,7 @@ export default {
|
|||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'http://localhost:8082/helloGithub_war_exploded/selectLastByCate',
|
url: '/api/selectLastByCate',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
num: index,
|
num: index,
|
||||||
@@ -274,7 +274,7 @@ export default {
|
|||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'http://localhost:8082/helloGithub_war_exploded/retLabel',
|
url: '/api/retLabel',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
}
|
}
|
||||||
@@ -289,7 +289,7 @@ export default {
|
|||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'http://localhost:8082/helloGithub_war_exploded/userNum',
|
url: '/api/userNum',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
}
|
}
|
||||||
@@ -302,7 +302,7 @@ export default {
|
|||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'http://localhost:8082/helloGithub_war_exploded/countNum',
|
url: '/api/countNum',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
|
|
||||||
|
@@ -239,11 +239,11 @@ export default {
|
|||||||
// this.$refs.NextBtn.style.display = "none"
|
// this.$refs.NextBtn.style.display = "none"
|
||||||
// }
|
// }
|
||||||
},
|
},
|
||||||
test(){
|
// test(){
|
||||||
console.log(this.MonType);
|
// console.log(this.MonType);
|
||||||
console.log(this.MonTypePro);
|
// console.log(this.MonTypePro);
|
||||||
console.log(this.MonList);
|
// console.log(this.MonList);
|
||||||
},
|
// },
|
||||||
// 月刊总数:
|
// 月刊总数:
|
||||||
getMonely(){
|
getMonely(){
|
||||||
var that = this;
|
var that = this;
|
||||||
@@ -273,7 +273,7 @@ export default {
|
|||||||
Object.keys(that.MonList).forEach(key=>{
|
Object.keys(that.MonList).forEach(key=>{
|
||||||
that.MonTypePro.push(that.MonList[key]);
|
that.MonTypePro.push(that.MonList[key]);
|
||||||
})
|
})
|
||||||
console.log(that.MonList);
|
// console.log(that.MonTypePro);
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// 月刊详情页面跳转
|
// 月刊详情页面跳转
|
||||||
|
@@ -19,9 +19,10 @@
|
|||||||
<div style="margin-top: 20px">
|
<div style="margin-top: 20px">
|
||||||
<template>
|
<template>
|
||||||
<el-table
|
<el-table
|
||||||
|
@row-click="toDetailPage"
|
||||||
border
|
border
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
style="width: 100%;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);border-radius: 10px;border: none">
|
style="cursor: pointer;width: 100%;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);border-radius: 10px;border: none">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="name"
|
prop="name"
|
||||||
label="名称"
|
label="名称"
|
||||||
@@ -30,7 +31,7 @@
|
|||||||
<el-table-column
|
<el-table-column
|
||||||
prop="language"
|
prop="language"
|
||||||
label="语言"
|
label="语言"
|
||||||
width="130">
|
width="100">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="description"
|
prop="description"
|
||||||
@@ -41,12 +42,46 @@
|
|||||||
</div>
|
</div>
|
||||||
<el-card style="border: none;margin-top: 20px">
|
<el-card style="border: none;margin-top: 20px">
|
||||||
<div style="display: flex;flex-direction: column;flex-wrap: nowrap;justify-content: flex-start;text-align: left">
|
<div style="display: flex;flex-direction: column;flex-wrap: nowrap;justify-content: flex-start;text-align: left">
|
||||||
<b>「OneFile」:</b><span>一个开源项目,在这里你可以找到有趣运行简单的程序。同时它也是一个编程挑战,你也可以提交一个文件接受挑战。<el-link><b>点击加入</b></el-link> OneFile 编程挑战,一个文件而已就写点有趣的代码吧!</span>
|
<b>「OneFile」:</b><span>一个开源项目,在这里你可以找到有趣运行简单的程序。同时它也是一个编程挑战,你也可以提交一个文件接受挑战。快点加入OneFile 编程挑战,一个文件而已就写点有趣的代码吧!</span>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;flex-direction: row;justify-content: flex-end">
|
||||||
|
<el-button plain size="small" @click="openSubmit">提交</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
<el-dialog title="提交" :visible.sync="dialogVisible" width="46%"
|
||||||
|
append-to-body
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<el-form ref="ruleForm" class="login_container" :model="form" :rules="rules" status-icon label-width="60px">
|
||||||
|
<el-form-item label="名称" prop="oneFileName">
|
||||||
|
<el-input v-model="form.oneFileName" placeholder='取个名字吧'></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="地址" prop="url">
|
||||||
|
<el-input v-model="form.url" placeholder='地址url'></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述" prop="description" >
|
||||||
|
<el-input v-model="form.description" placeholder='一句话描述一下' clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="内容" prop="Content" >
|
||||||
|
<el-input v-model="form.Content"
|
||||||
|
type="textarea"
|
||||||
|
rows="10"
|
||||||
|
placeholder='代码内容'
|
||||||
|
clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="语言" prop="language" >
|
||||||
|
<el-input v-model="form.language" placeholder='语言种类' clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<div style="display: flex;flex-direction: row;align-items: center;flex-wrap: nowrap;justify-content: flex-end">
|
||||||
|
<el-button @click="submit()" type="primary" style=";margin-top:10px">提交</el-button>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<RightTools></RightTools>
|
<RightTools></RightTools>
|
||||||
@@ -55,36 +90,91 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import RightTools from "@/components/Home/RightTools.vue";
|
import RightTools from "@/components/Home/RightTools.vue";
|
||||||
|
import axios from "axios";
|
||||||
|
import Vue from "vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "OneFile",
|
name: "OneFile",
|
||||||
components: {RightTools},
|
components: {RightTools},
|
||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
tableData: [{
|
tableData: [],
|
||||||
date: '2016-05-02',
|
dialogVisible:false,
|
||||||
name: '王小虎',
|
form:{
|
||||||
address: '上海市普陀区金沙江路 1518 弄'
|
oneFileName:'',
|
||||||
}, {
|
language:'',
|
||||||
date: '2016-05-04',
|
description:'',
|
||||||
name: '王小虎',
|
url:'',
|
||||||
address: '上海市普陀区金沙江路 1517 弄'
|
Content:'',
|
||||||
}, {
|
},
|
||||||
date: '2016-05-01',
|
rules: {
|
||||||
name: '王小虎',
|
oneFileName: [
|
||||||
address: '上海市普陀区金沙江路 1519 弄'
|
// required:规则,o:失去焦点触发
|
||||||
}, {
|
{required: true, message: "请输入名称", trigger: "blur"},
|
||||||
date: '2016-05-03',
|
],
|
||||||
name: '王小虎',
|
language: [{required: true, message: "请输入语言", trigger: "blur"}],
|
||||||
address: '上海市普陀区金沙江路 1516 弄'
|
description: [{required: true, message: "请输入描述", trigger: "blur"}],
|
||||||
}]
|
Content: [{required: true, message: "请输入内容", trigger: "blur"}],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
openSubmit(){
|
||||||
|
this.dialogVisible=true;
|
||||||
|
},
|
||||||
|
submit(){
|
||||||
|
axios({
|
||||||
|
method: 'post',
|
||||||
|
// 请求的地址
|
||||||
|
url: 'http://localhost:8082/helloGithub_war_exploded/insertFileByAdmin',
|
||||||
|
// URL 中的查询参数
|
||||||
|
params: this.form,
|
||||||
|
}).then(function (res) {
|
||||||
|
if(res.data.code===200){
|
||||||
|
Vue.prototype.$notify({
|
||||||
|
title: '成功',
|
||||||
|
message: ('i', {style: 'color: teal'}, res.data.msg+'请等待审核'),
|
||||||
|
type: 'success',
|
||||||
|
offset: 50
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
Vue.prototype.$notify.error({
|
||||||
|
title: '错误',
|
||||||
|
message: res.data.msg,
|
||||||
|
offset: 50
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
goBack() {
|
goBack() {
|
||||||
window.history.go(-1);
|
window.history.go(-1);
|
||||||
},
|
},
|
||||||
|
toDetailPage(row){
|
||||||
|
this.$router.push({
|
||||||
|
path:'/OneFileDetail',
|
||||||
|
query: {
|
||||||
|
id: row.id,
|
||||||
|
refresh: true
|
||||||
|
}})
|
||||||
|
},
|
||||||
|
getOneFile(){
|
||||||
|
var that=this;
|
||||||
|
axios({
|
||||||
|
method: 'post',
|
||||||
|
// 请求的地址
|
||||||
|
url: 'http://localhost:8082/helloGithub_war_exploded/selectFile',
|
||||||
|
// URL 中的查询参数
|
||||||
|
params: {
|
||||||
}
|
}
|
||||||
|
}).then(function (res) {
|
||||||
|
that.tableData=res.data;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getOneFile();
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@@ -13,11 +13,43 @@
|
|||||||
<div class="PageContent" style="display: flex;flex-direction: column;flex-wrap: nowrap">
|
<div class="PageContent" style="display: flex;flex-direction: column;flex-wrap: nowrap">
|
||||||
<el-card style="border: none">
|
<el-card style="border: none">
|
||||||
<div style="display: flex;flex-direction: column;flex-wrap: nowrap;">
|
<div style="display: flex;flex-direction: column;flex-wrap: nowrap;">
|
||||||
<el-card style="box-shadow: none;border-radius: 5px">
|
<el-card style="box-shadow: none;border-radius: 10px">
|
||||||
|
<div style="display: flex;flex-direction: row;flex-wrap: nowrap;align-items: center">
|
||||||
|
<span style="font-size: 18px;color: #6b7280;font-weight: bold">
|
||||||
|
{{oneFileName}} :
|
||||||
|
</span>
|
||||||
|
<span style="font-size: 16px;color: #6b7280;font-weight: bold">
|
||||||
|
{{description}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;flex-wrap: nowrap;flex-direction: row;align-items: center;justify-content: space-between">
|
||||||
|
<div style="font-size: 15px;color: #9ca3af;margin-top: 20px;">
|
||||||
|
<span>发布于: </span>
|
||||||
|
<span>{{userName}}</span>
|
||||||
|
<span> · </span>
|
||||||
|
<span> 主语言 {{language}}</span>
|
||||||
|
<span> · </span>
|
||||||
|
<span> {{formatNumber(lookNum)}} </span>
|
||||||
|
<span> 次查看 </span>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;align-items: center;justify-content: center;margin-top: 20px;">
|
||||||
|
<el-button plain icon="el-icon-link" size="mini" @click="goTo(url)">访问</el-button>
|
||||||
|
<el-button plain icon="el-icon-document-copy" size="mini" @click="copyText">复制</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card style="box-shadow: none;margin-top: 20px;border-radius: 5px">
|
<el-card style="box-shadow: none;margin-top: 20px;border-radius: 10px">
|
||||||
|
<PrismEditor
|
||||||
|
class="my-editor height-300"
|
||||||
|
v-model="content"
|
||||||
|
aria-disabled
|
||||||
|
:highlight="highlighter"
|
||||||
|
line-numbers
|
||||||
|
:readonly="true"
|
||||||
|
autoStyleLineNumbers
|
||||||
|
:tabSize="4"
|
||||||
|
></PrismEditor>
|
||||||
|
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
@@ -30,20 +62,112 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import RightTools from "@/components/Home/RightTools.vue";
|
import RightTools from "@/components/Home/RightTools.vue";
|
||||||
|
import axios from "axios";
|
||||||
|
import { PrismEditor } from "vue-prism-editor";
|
||||||
|
import "vue-prism-editor/dist/prismeditor.min.css";
|
||||||
|
import { highlight, languages } from "prismjs/components/prism-core";
|
||||||
|
import "prismjs/components/prism-clike";
|
||||||
|
import "prismjs/components/prism-javascript";
|
||||||
|
import "prismjs/themes/prism-tomorrow.css";
|
||||||
|
import Vue from "vue";
|
||||||
export default {
|
export default {
|
||||||
name: "OneFileDetail",
|
name: "OneFileDetail",
|
||||||
components: {RightTools},
|
components: {RightTools,PrismEditor},
|
||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
|
|
||||||
|
id:'',
|
||||||
|
oneFileName:'',
|
||||||
|
language:'',
|
||||||
|
description:'',
|
||||||
|
userId:'',
|
||||||
|
url:'',
|
||||||
|
lookNum:'',
|
||||||
|
content:'',
|
||||||
|
isValid:'',
|
||||||
|
userName:'',
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
copyText() {
|
||||||
|
let text = this.content;
|
||||||
|
let inputElement = document.createElement('input')
|
||||||
|
inputElement.value = text;
|
||||||
|
document.body.appendChild(inputElement);
|
||||||
|
inputElement .select(); //选中文本
|
||||||
|
document.execCommand("copy"); //执行浏览器复制命令
|
||||||
|
inputElement.remove();
|
||||||
|
Vue.prototype.$notify({
|
||||||
|
title: '成功',
|
||||||
|
message: ('i', {style: 'color: teal'}, "复制成功"),
|
||||||
|
type: 'success',
|
||||||
|
offset: 50
|
||||||
|
});
|
||||||
|
},
|
||||||
|
highlighter(code) {
|
||||||
|
return highlight(code, languages.js); //returns html
|
||||||
|
},
|
||||||
|
formatNumber(num) {
|
||||||
|
return num >= 1e3 && num < 1e4 ? (num / 1e3).toFixed(1) + 'k' : num >= 1e4 ? (num / 1e4).toFixed(1) + 'w' : num
|
||||||
|
},
|
||||||
goBack() {
|
goBack() {
|
||||||
window.history.go(-1);
|
window.history.go(-1);
|
||||||
},
|
},
|
||||||
|
addLookCount(){
|
||||||
|
var that=this;
|
||||||
|
axios({
|
||||||
|
method: 'post',
|
||||||
|
// 请求的地址
|
||||||
|
url: 'http://localhost:8082/helloGithub_war_exploded/addFileLookCount',
|
||||||
|
// URL 中的查询参数
|
||||||
|
params: {
|
||||||
|
id:this.$route.query.id
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getOneFileDetail(){
|
||||||
|
var that=this;
|
||||||
|
axios({
|
||||||
|
method: 'post',
|
||||||
|
// 请求的地址
|
||||||
|
url: 'http://localhost:8082/helloGithub_war_exploded/selectFileById',
|
||||||
|
// URL 中的查询参数
|
||||||
|
params: {
|
||||||
|
id:this.$route.query.id
|
||||||
|
}
|
||||||
|
}).then(function (res) {
|
||||||
|
console.log(res);
|
||||||
|
that.id=res.data.id;
|
||||||
|
that.language=res.data.language;
|
||||||
|
that.lookNum=res.data.lookNum;
|
||||||
|
that.oneFileName=res.data.oneFileName;
|
||||||
|
that.url=res.data.url;
|
||||||
|
that.userId=res.data.userId;
|
||||||
|
that.description=res.data.description;
|
||||||
|
that.content=res.data.content;
|
||||||
|
that.userName=res.data.userName;
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goTo(url){
|
||||||
|
window.open(url);
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getOneFileDetail();
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.addLookCount();
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
$route () {
|
||||||
|
if(this.$route.query.refresh){
|
||||||
|
this.getOneFileDetail() //重新调用http请求实现页面的重新渲染
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -60,4 +184,19 @@ export default {
|
|||||||
border-right: none;
|
border-right: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* required class */
|
||||||
|
::v-deep .my-editor {
|
||||||
|
background: transparent;
|
||||||
|
color: #ccc;
|
||||||
|
|
||||||
|
font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.5;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* optional */
|
||||||
|
::v-deep .prism-editor__textarea:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
@@ -174,7 +174,7 @@
|
|||||||
<el-rate
|
<el-rate
|
||||||
style="margin-left: 10px"
|
style="margin-left: 10px"
|
||||||
v-model="startValue"
|
v-model="startValue"
|
||||||
show-text>
|
>
|
||||||
</el-rate>
|
</el-rate>
|
||||||
</div>
|
</div>
|
||||||
<el-button type="primary" plain @click="publishComment">发布</el-button>
|
<el-button type="primary" plain @click="publishComment">发布</el-button>
|
||||||
@@ -724,7 +724,11 @@ export default {
|
|||||||
that.github.name=res.data.name;
|
that.github.name=res.data.name;
|
||||||
that.github.default_branch=res.data.default_branch;
|
that.github.default_branch=res.data.default_branch;
|
||||||
that.github.avatar_url=res.data.owner.avatar_url;
|
that.github.avatar_url=res.data.owner.avatar_url;
|
||||||
|
if(that.$route.query.id){
|
||||||
that.saveGithubInfo();
|
that.saveGithubInfo();
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}else{
|
}else{
|
||||||
return false;
|
return false;
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 20px">
|
<div style="margin-top: 20px">
|
||||||
<el-card class="box-card" style="border: none">
|
<el-card class="box-card" style="border: none">
|
||||||
<div ref="echart1" style="width:300px;height:300px">
|
<div id="echart1" ref="echart1" style="width:350px;height:300px;">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -156,17 +156,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- eChart 图-->
|
<!-- eChart 图-->
|
||||||
<div style="margin-top: 23px;margin-left: 40px;">
|
<div style="margin-top: 23px;margin-left: 40px;">
|
||||||
<el-card style="border: none;height:450px">
|
<el-card style="border: none;">
|
||||||
<!-- <el-tabs v-model="activeName" @tab-click="handleClick">-->
|
<div id="echart2" ref="echart2" style="width: 800px;height: 300px;">
|
||||||
<!-- <el-tab-pane label="日期统计" name="first">日期统计</el-tab-pane>-->
|
|
||||||
<!-- <el-tab-pane label="月度统计" name="second">月度统计</el-tab-pane>-->
|
|
||||||
<!-- <el-tab-pane label="年度统计" name="third">年度统计</el-tab-pane>-->
|
|
||||||
<!-- </el-tabs>-->
|
|
||||||
<div ref="echart2" style="width: 20vw;height: 30vh">
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-button @click="test()"></el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -183,10 +176,7 @@ Vue.prototype.$echarts = echarts;
|
|||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
Myechart1:'',
|
activeName: 'first',
|
||||||
Myechart2:'',
|
|
||||||
Myoption1:{},
|
|
||||||
Myoption2:{},
|
|
||||||
userTotal:null,
|
userTotal:null,
|
||||||
projectTotal:null,
|
projectTotal:null,
|
||||||
loginTime:'',
|
loginTime:'',
|
||||||
@@ -194,33 +184,20 @@ export default {
|
|||||||
CategoryTotal:'',
|
CategoryTotal:'',
|
||||||
CommentTotal:'',
|
CommentTotal:'',
|
||||||
AdminTotal:'',
|
AdminTotal:'',
|
||||||
// 日期目录:
|
|
||||||
datecate:[],
|
|
||||||
// 月份目录:
|
|
||||||
Moncate:[],
|
|
||||||
// 年份目录:
|
|
||||||
Yearcate:[],
|
|
||||||
// 日期折线单元:
|
|
||||||
dateLine:[],
|
|
||||||
// 月份折线单元:
|
|
||||||
monLine:[],
|
|
||||||
// 年份折线单元:
|
|
||||||
yearLine:[],
|
|
||||||
date:[],
|
date:[],
|
||||||
|
dateNum:[],
|
||||||
|
|
||||||
Month:[],
|
Month:[],
|
||||||
|
MonthNum:[],
|
||||||
|
|
||||||
Year:[],
|
Year:[],
|
||||||
|
YearNum:[],
|
||||||
|
categoryArray:[],
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initEchart(){
|
|
||||||
// var that = this;
|
|
||||||
// that.Myechart1 = that.$echarts.init(that.$refs.echart1);
|
|
||||||
// that.Myechart2 = that.$echarts.init(that.$refs.echart2);
|
|
||||||
},
|
|
||||||
test(){
|
|
||||||
this.getProjectByTime();
|
|
||||||
},
|
|
||||||
getAdminLoginTime(){
|
getAdminLoginTime(){
|
||||||
var that=this;
|
var that=this;
|
||||||
axios({
|
axios({
|
||||||
@@ -240,7 +217,7 @@ export default {
|
|||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'http://localhost:8082/helloGithub_war_exploded/userNum',
|
url: '/api/userNum',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
}
|
}
|
||||||
@@ -259,7 +236,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}).then((res)=>{
|
}).then((res)=>{
|
||||||
that.projectTotal=res.data;
|
that.projectTotal=res.data;
|
||||||
console.log(that.projectTotal);
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getArticleTotal(){
|
getArticleTotal(){
|
||||||
@@ -320,106 +296,246 @@ export default {
|
|||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'http://localhost:8082/helloGithub_war_exploded/retProjectByTime',
|
url: 'http://localhost:8082/helloGithub_war_exploded/retProjectByTime',
|
||||||
// URL 中的查询参数
|
|
||||||
params: {
|
|
||||||
}
|
|
||||||
}).then((res)=>{
|
}).then((res)=>{
|
||||||
console.log(res);
|
|
||||||
that.date=res.data.Date;
|
that.date=res.data.Date;
|
||||||
that.Month=res.data.Month;
|
that.Month=res.data.Month;
|
||||||
that.Year=res.data.Year;
|
that.Year=res.data.Year;
|
||||||
console.log(that.date);
|
setTimeout(()=>{
|
||||||
for(let i=0;i<that.date.length;i++){
|
that.eChart2(that.date,'echart2');
|
||||||
that.datecate.push(that.date[i]['date']);
|
},1000);
|
||||||
let num = parseInt(that.date[i]['num']);
|
|
||||||
let datefac = {"value":num,"date":that.date[i]['date'],"type":"line"};
|
|
||||||
that.dateLine.push(datefac);
|
|
||||||
}
|
|
||||||
console.log(that.dateLine);
|
|
||||||
console.log(that.datecate);
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
eChartPic1(){
|
eChart2(Date,id){
|
||||||
// 按日期折线图:
|
var myChart = echarts.init(document.getElementById(id));
|
||||||
var that = this;
|
|
||||||
that.Myoption1 = {
|
var xData=[],yData=[];
|
||||||
//dataZoom-inside 内置型数据区域缩放组件 所谓内置 1平移:在坐标系中滑动拖拽进行数据区域平移。2缩放:PC端:鼠标在坐标系范围内滚轮滚动(MAC触控板类同;移动端:在移动端触屏上,支持两指滑动缩放。
|
Date.map(function (a) {
|
||||||
dataZoom: [{
|
xData.push(a.date);
|
||||||
type: 'inside', //1平移 缩放
|
yData.push(a.num);
|
||||||
throttle: '50', //设置触发视图刷新的频率。单位为毫秒(ms)。
|
});
|
||||||
minValueSpan: 6, //用于限制窗口大小的最小值,在类目轴上可以设置为 5 表示 5 个类目
|
var option = {
|
||||||
start: 1, //数据窗口范围的起始百分比 范围是:0 ~ 100。表示 0% ~ 100%。
|
|
||||||
end: 50, //数据窗口范围的结束百分比。范围是:0 ~ 100。
|
|
||||||
zoomLock: true, //如果设置为 true 则锁定选择区域的大小,也就是说,只能平移,不能缩放。
|
|
||||||
}],
|
|
||||||
// 主要用来控制图表四周留白
|
|
||||||
grid: {
|
|
||||||
left: '15%',
|
|
||||||
top: '10%',
|
|
||||||
},
|
|
||||||
// 提示框组件
|
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
|
trigger: 'axis'
|
||||||
backgroundColor: '#377CFF', //提示框浮层的背景颜色。
|
|
||||||
axisPointer: { //去掉移动的指示线
|
|
||||||
type: 'none'
|
|
||||||
},
|
},
|
||||||
// 自定义提示框内容
|
xAxis: [{
|
||||||
formatter: function (params) {
|
type: 'category',
|
||||||
var text = params[0].data.date + ': ' + params[0].data.value
|
data: xData,
|
||||||
return text;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
//直角坐标系 grid 中的 x 轴,
|
|
||||||
xAxis: {
|
|
||||||
type: 'category', //'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
|
|
||||||
// 坐标轴轴线相关设置
|
|
||||||
axisLine: {
|
axisLine: {
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: '#E5E5E5', // 坐标轴线线的颜色。
|
color: "#999"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
yAxis: [{
|
||||||
|
type: 'value',
|
||||||
|
splitNumber: 4,
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
type: 'dashed',
|
||||||
|
color: '#DDD'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 坐标轴刻度标签(类目,简单说就是x轴上的内容)的相关设置
|
|
||||||
axisLabel: {
|
|
||||||
// 是否显示坐标刻度标签(这了指是否显示x轴上的月份)
|
|
||||||
show: true,
|
|
||||||
// 标签文字的颜色
|
|
||||||
color: '#999'
|
|
||||||
},
|
|
||||||
//x轴刻度线设置
|
|
||||||
axisTick: {
|
|
||||||
"show": false
|
|
||||||
},
|
|
||||||
// 类目数据,在类目轴(type: 'category')中有效。
|
|
||||||
data: that.datecate,
|
|
||||||
},
|
|
||||||
//直角坐标系 grid 中的 y 轴,
|
|
||||||
yAxis: {
|
|
||||||
type: 'value', //'value' 数值轴,适用于连续数据。
|
|
||||||
// 坐标轴轴线相关设置
|
|
||||||
axisLine: {
|
axisLine: {
|
||||||
show: false //y轴线消失
|
show: false,
|
||||||
|
lineStyle: {
|
||||||
|
color: "#333"
|
||||||
},
|
},
|
||||||
// 坐标轴刻度标签(类目,简单说就是x轴上的内容)的相关设置
|
|
||||||
axisLabel: {
|
|
||||||
show: true,
|
|
||||||
// 标签文字的颜色
|
|
||||||
color: '#999'
|
|
||||||
},
|
},
|
||||||
//y轴刻度线设置
|
nameTextStyle: {
|
||||||
axisTick: {
|
color: "#999"
|
||||||
"show": false
|
|
||||||
},
|
},
|
||||||
splitNumber: 5, //坐标轴的分割段数,需要注意的是这个分割段数只是个预估值,最后实际显示的段数会在这个基础上根据分割后坐标轴刻度显示的易读程度作调整.在类目轴中无效。
|
splitArea: {
|
||||||
},
|
show: false
|
||||||
series: that.dateLine,
|
|
||||||
};
|
|
||||||
that.Myechart1.setOption(that.Myoption1,true);
|
|
||||||
// 图表大小变动从新渲染,动态自适应
|
|
||||||
},
|
|
||||||
eChartPic2(){
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}],
|
||||||
|
series: [{
|
||||||
|
name: '提交项目数量',
|
||||||
|
type: 'line',
|
||||||
|
data: yData,
|
||||||
|
lineStyle: {
|
||||||
|
normal: {
|
||||||
|
width: 8,
|
||||||
|
color: {
|
||||||
|
type: 'linear',
|
||||||
|
|
||||||
|
colorStops: [{
|
||||||
|
offset: 0,
|
||||||
|
color: '#A9F387' // 0% 处的颜色
|
||||||
|
}, {
|
||||||
|
offset: 1,
|
||||||
|
color: '#48D8BF' // 100% 处的颜色
|
||||||
|
}],
|
||||||
|
globalCoord: false // 缺省为 false
|
||||||
|
},
|
||||||
|
shadowColor: 'rgba(72,216,191, 0.3)',
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetY: 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: '#fff',
|
||||||
|
borderWidth: 10,
|
||||||
|
/*shadowColor: 'rgba(72,216,191, 0.3)',
|
||||||
|
shadowBlur: 100,*/
|
||||||
|
borderColor: "#A9F387"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
smooth: true
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
myChart.setOption(option);
|
||||||
|
//图表大小变动从新渲染,动态自适应
|
||||||
|
window.addEventListener("resize", function () {
|
||||||
|
myChart.resize();
|
||||||
|
});
|
||||||
|
myChart.resize({
|
||||||
|
width: 900,
|
||||||
|
height: 300
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
getCategoryByProject(){
|
||||||
|
var that=this;
|
||||||
|
axios({
|
||||||
|
method: 'post',
|
||||||
|
// 请求的地址
|
||||||
|
url: 'http://localhost:8082/helloGithub_war_exploded/retProjectNumByCategory',
|
||||||
|
}).then((res)=>{
|
||||||
|
that.categoryArray=res.data;
|
||||||
|
var xData=[],yData=[];
|
||||||
|
that.categoryArray.map(function (a) {
|
||||||
|
xData.push(a.categoryName);
|
||||||
|
yData.push(a.num);
|
||||||
|
});
|
||||||
|
setTimeout(()=>{
|
||||||
|
that.echart_Pie(xData,yData,'echart1');
|
||||||
|
},1000)
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
echart_Pie(xData, yData, id) {
|
||||||
|
var chartDom = document.getElementById(id);
|
||||||
|
var myChart = echarts.init(chartDom);
|
||||||
|
|
||||||
|
|
||||||
|
var dataName = xData;
|
||||||
|
|
||||||
|
var dataName2 = xData;
|
||||||
|
var value = yData
|
||||||
|
var dataarr = []
|
||||||
|
var max = value[0];
|
||||||
|
var dataarr2 = []
|
||||||
|
value.forEach(function (ele, index) {
|
||||||
|
if (ele > max) {
|
||||||
|
max = ele;
|
||||||
|
}
|
||||||
|
dataarr.push({
|
||||||
|
value: ele,
|
||||||
|
name: dataName[index]
|
||||||
|
})
|
||||||
|
dataarr2.push({
|
||||||
|
value: ele,
|
||||||
|
name: dataName2[index]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
var option = {
|
||||||
|
// backgroundColor: '#424956',
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: "{a} <br/>{b}: {c} ({d}%)",
|
||||||
|
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
|
||||||
|
orient: 'vertical',
|
||||||
|
x: 'right',
|
||||||
|
y: 'middle',
|
||||||
|
itemWidth: 20,
|
||||||
|
itemGap: 10,
|
||||||
|
itemHeight: 14,
|
||||||
|
align: 'left',
|
||||||
|
|
||||||
|
data: dataName,
|
||||||
|
textStyle: {
|
||||||
|
color: '#00000',
|
||||||
|
fontSize: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
name: '统计',
|
||||||
|
type: 'pie',
|
||||||
|
radius: ['25%', '65%'],
|
||||||
|
center: ['50%', '50%'],
|
||||||
|
color: [
|
||||||
|
'#2CEDED',
|
||||||
|
'#7049F0',
|
||||||
|
'#B347FF',
|
||||||
|
'#E70E65',
|
||||||
|
'#FF714A',
|
||||||
|
'#F6B768',
|
||||||
|
'#B0DF5D',
|
||||||
|
'#FC7DBC',
|
||||||
|
'#0A9FFD'
|
||||||
|
],
|
||||||
|
|
||||||
|
labelLine: {
|
||||||
|
normal: {
|
||||||
|
show: true,
|
||||||
|
length: 10,
|
||||||
|
length2: 24
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: dataarr
|
||||||
|
}, {
|
||||||
|
name: '统计',
|
||||||
|
type: 'pie',
|
||||||
|
radius: ['25%', '65%'],
|
||||||
|
center: ['50%', '50%'],
|
||||||
|
color: [
|
||||||
|
'transparent',
|
||||||
|
'transparent',
|
||||||
|
'transparent',
|
||||||
|
'transparent',
|
||||||
|
'transparent',
|
||||||
|
'transparent',
|
||||||
|
'transparent',
|
||||||
|
'rgba(252,125,188,0.5)',
|
||||||
|
'transparent'
|
||||||
|
],
|
||||||
|
label: {
|
||||||
|
normal: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
labelLine: {
|
||||||
|
normal: {
|
||||||
|
show: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: dataarr2,
|
||||||
|
zlevel: 2
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
myChart.clear();
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
//图表大小变动从新渲染,动态自适应
|
||||||
|
window.addEventListener("resize", function () {
|
||||||
|
myChart.resize();
|
||||||
|
});
|
||||||
|
// myChart.resize({
|
||||||
|
// width: 449,
|
||||||
|
// height: 265
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
// 初始化Echart
|
// 初始化Echart
|
||||||
|
|
||||||
@@ -432,9 +548,9 @@ export default {
|
|||||||
this.getAdminTotal();
|
this.getAdminTotal();
|
||||||
this.getCategoryTotal();
|
this.getCategoryTotal();
|
||||||
this.getProjectByTime();
|
this.getProjectByTime();
|
||||||
this.Myechart1 = this.$echarts.init(this.$refs.echart1);
|
this.getCategoryByProject();
|
||||||
this.Myechart2 = this.$echarts.init(this.$refs.echart2);
|
|
||||||
this.eChartPic1();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@@ -65,10 +65,10 @@ export default {
|
|||||||
this.imageUrl = "http://localhost:8082/helloGithub_war_exploded/VerifycodeServlet?" + new Date().getTime();
|
this.imageUrl = "http://localhost:8082/helloGithub_war_exploded/VerifycodeServlet?" + new Date().getTime();
|
||||||
},
|
},
|
||||||
submit(formName){
|
submit(formName){
|
||||||
|
console.log(this.login);
|
||||||
var _this=this;
|
var _this=this;
|
||||||
this.$refs[formName].validate((valid) => {
|
this.$refs[formName].validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
|
||||||
//调用方法提交
|
//调用方法提交
|
||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
@@ -81,6 +81,7 @@ export default {
|
|||||||
code: this.login.code,
|
code: this.login.code,
|
||||||
}
|
}
|
||||||
}).then(function (res) {
|
}).then(function (res) {
|
||||||
|
console.log(res);
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
Vue.prototype.$notify({
|
Vue.prototype.$notify({
|
||||||
title: '成功',
|
title: '成功',
|
||||||
@@ -89,9 +90,12 @@ export default {
|
|||||||
offset: 50
|
offset: 50
|
||||||
});
|
});
|
||||||
_this.$cookie.set('adminName',_this.login.username);
|
_this.$cookie.set('adminName',_this.login.username);
|
||||||
|
setTimeout(()=>{
|
||||||
_this.$router.push({
|
_this.$router.push({
|
||||||
path:'/systemIndex',
|
path:'/systemIndex',
|
||||||
})
|
})
|
||||||
|
},1000);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Vue.prototype.$notify.error({
|
Vue.prototype.$notify.error({
|
||||||
title: '错误',
|
title: '错误',
|
||||||
|
@@ -5,6 +5,9 @@
|
|||||||
<div class="TitleFont">标签管理</div>
|
<div class="TitleFont">标签管理</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height:50px;width:100%;"></div>
|
<div style="height:50px;width:100%;"></div>
|
||||||
|
<div style="display: flex;flex-direction: row;justify-content: flex-start">
|
||||||
|
<el-button type="primary" icon="el-icon-plus" @click="openAddCategoryFun">新增</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<el-card style="width:1000px;margin-left:200px;" shadow="always" class="card_style">
|
<el-card style="width:1000px;margin-left:200px;" shadow="always" class="card_style">
|
||||||
<div style="width:900px;margin-left:30px;">
|
<div style="width:900px;margin-left:30px;">
|
||||||
@@ -72,10 +75,39 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-dialog title="添加标签" :visible.sync="openAddCategory" width="26%"
|
||||||
|
append-to-body
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:before-close="closeDialog"
|
||||||
|
>
|
||||||
|
<el-form ref="ruleForm" class="login_container" :model="form" status-icon label-width="100px">
|
||||||
|
<el-form-item label="标签名" prop="categoryName">
|
||||||
|
<el-input v-model="form.categoryName" placeholder='标签名' :disabled="isEdit" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="标签图标" prop="category" >
|
||||||
|
<el-input v-model="form.category" placeholder='标签图标' clearable :disabled="isEdit"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否有效" prop="isValid">
|
||||||
|
<el-radio-group v-model="form.isValid" :disabled="isEdit">
|
||||||
|
<el-radio :label="1">有效</el-radio>
|
||||||
|
<el-radio :label="0">无效</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<div style="display: flex;flex-direction: row;align-items: center;flex-wrap: nowrap;justify-content: space-between">
|
||||||
|
<el-button @click="editForm()">编辑</el-button>
|
||||||
|
<el-button @click="addCategory()" type="primary" style=";margin-top:10px">添加</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
|
||||||
@@ -92,15 +124,13 @@ export default {
|
|||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
isEdit:true,
|
isEdit:true,
|
||||||
|
openAddCategory:false,
|
||||||
List:[],
|
List:[],
|
||||||
dialogVisible:false,
|
dialogVisible:false,
|
||||||
form:{
|
form:{
|
||||||
articleId:'',
|
categoryId:'',
|
||||||
userId: '',
|
category:'',
|
||||||
articleContent: '',
|
categoryName:'',
|
||||||
articleTitle: '',
|
|
||||||
articleIco: '',
|
|
||||||
readCount: '',
|
|
||||||
isValid:'',
|
isValid:'',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -109,6 +139,9 @@ export default {
|
|||||||
this.GetData();
|
this.GetData();
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
openAddCategoryFun(){
|
||||||
|
this.openAddCategory=true;
|
||||||
|
},
|
||||||
handleChangeStatus($event, id){
|
handleChangeStatus($event, id){
|
||||||
if ($event === 1) { // 这里判断一下
|
if ($event === 1) { // 这里判断一下
|
||||||
// 启用
|
// 启用
|
||||||
@@ -199,6 +232,7 @@ export default {
|
|||||||
this.GetData();
|
this.GetData();
|
||||||
// 后关闭
|
// 后关闭
|
||||||
this.dialogVisible = false;
|
this.dialogVisible = false;
|
||||||
|
this.openAddCategory=false;
|
||||||
this.isEdit=true;
|
this.isEdit=true;
|
||||||
},
|
},
|
||||||
editForm(){
|
editForm(){
|
||||||
@@ -291,6 +325,40 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
addCategory(){
|
||||||
|
var _this = this;
|
||||||
|
//调用方法提交
|
||||||
|
axios({
|
||||||
|
method: 'post',
|
||||||
|
// 请求的地址
|
||||||
|
url: 'http://localhost:8082/helloGithub_war_exploded/insertCategory',
|
||||||
|
// URL 中的查询参数
|
||||||
|
params: {
|
||||||
|
url: this.form.category,
|
||||||
|
isValid: this.form.isValid,
|
||||||
|
name: this.form.categoryName,
|
||||||
|
}
|
||||||
|
}).then(function (res) {
|
||||||
|
if (res.data.code === 500) {
|
||||||
|
Vue.prototype.$notify.error({
|
||||||
|
title: '错误',
|
||||||
|
message: res.data.msg,
|
||||||
|
offset: 50
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
_this.isEdit=true;
|
||||||
|
_this.dialogVisible = false;
|
||||||
|
_this.GetData();
|
||||||
|
Vue.prototype.$notify({
|
||||||
|
title: '成功',
|
||||||
|
message: ('i', {style: 'color: teal'}, "更新成功!"),
|
||||||
|
type: 'success',
|
||||||
|
offset: 50
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
<el-card shadow="always" class="card_style">
|
<el-card shadow="always" class="card_style">
|
||||||
<el-table
|
<el-table
|
||||||
|
@row-dblclick="toDetailPage"
|
||||||
:header-row-style="{height:'20px'}" :cell-style="{padding:'2px'}" border
|
:header-row-style="{height:'20px'}" :cell-style="{padding:'2px'}" border
|
||||||
:data="List"
|
:data="List"
|
||||||
style="width: 100%;margin-top: 20px;cursor: pointer">
|
style="width: 100%;margin-top: 20px;cursor: pointer">
|
||||||
@@ -86,7 +87,7 @@
|
|||||||
:inactive-value="0"
|
:inactive-value="0"
|
||||||
active-color="#13ce66"
|
active-color="#13ce66"
|
||||||
inactive-color="#ff4949"
|
inactive-color="#ff4949"
|
||||||
@change="handleChangeStatus($event,scope.row.userId)"
|
@change="handleChangeStatus($event,scope.row.id)"
|
||||||
>
|
>
|
||||||
</el-switch>
|
</el-switch>
|
||||||
</template>
|
</template>
|
||||||
@@ -105,7 +106,7 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog title="编辑" :visible.sync="dialogVisible" width="26%"
|
<el-dialog title="编辑" :visible.sync="dialogVisible" width="46%"
|
||||||
append-to-body
|
append-to-body
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
:before-close="closeDialog"
|
:before-close="closeDialog"
|
||||||
@@ -117,21 +118,22 @@
|
|||||||
<el-form-item label="发布用户ID" prop="userId">
|
<el-form-item label="发布用户ID" prop="userId">
|
||||||
<el-input v-model="form.userId" disabled></el-input>
|
<el-input v-model="form.userId" disabled></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="文件名" prop="oneFileName">
|
<el-form-item label="名称" prop="oneFileName">
|
||||||
<el-input v-model="form.oneFileName" :disabled="isEdit"></el-input>
|
<el-input v-model="form.oneFileName" :disabled="isEdit"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="URL" prop="url">
|
<el-form-item label="URL" prop="url">
|
||||||
<el-input v-model="form.url" :disabled="isEdit"></el-input>
|
<el-input v-model="form.url" :disabled="isEdit"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="文件描述" prop="description" >
|
<el-form-item label="描述" prop="description" >
|
||||||
<el-input v-model="form.description" placeholder='文件描述' clearable :disabled="isEdit"></el-input>
|
<el-input v-model="form.description" placeholder='描述' clearable :disabled="isEdit"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="文件内容" prop="content" >
|
<el-form-item label="内容" prop="content" >
|
||||||
<el-input v-model="form.content"
|
<el-input v-model="form.content"
|
||||||
|
|
||||||
type="textarea"
|
type="textarea"
|
||||||
rows="10"
|
rows="10"
|
||||||
placeholder='文章内容'
|
placeholder='内容'
|
||||||
:disabled="isEdit"
|
disabled
|
||||||
clearable></el-input>
|
clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="阅读量" prop="lookNum" >
|
<el-form-item label="阅读量" prop="lookNum" >
|
||||||
@@ -171,9 +173,9 @@ export default {
|
|||||||
List:[],
|
List:[],
|
||||||
dialogVisible:false,
|
dialogVisible:false,
|
||||||
form:{
|
form:{
|
||||||
id:'',
|
id:null,
|
||||||
userId:'',
|
userId:null,
|
||||||
lookNum:'',
|
lookNum:null,
|
||||||
oneFileName:'',
|
oneFileName:'',
|
||||||
content:'',
|
content:'',
|
||||||
language:'',
|
language:'',
|
||||||
@@ -202,7 +204,7 @@ export default {
|
|||||||
url: 'http://localhost:8082/helloGithub_war_exploded/updateisValid_onefile',
|
url: 'http://localhost:8082/helloGithub_war_exploded/updateisValid_onefile',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
articleId:id,
|
id:id,
|
||||||
isValid:$event
|
isValid:$event
|
||||||
}
|
}
|
||||||
}).then(function (res) {
|
}).then(function (res) {
|
||||||
@@ -237,7 +239,7 @@ export default {
|
|||||||
url: 'http://localhost:8082/helloGithub_war_exploded/updateisValid_onefile',
|
url: 'http://localhost:8082/helloGithub_war_exploded/updateisValid_onefile',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
articleId:id,
|
id:id,
|
||||||
isValid:$event
|
isValid:$event
|
||||||
}
|
}
|
||||||
}).then(function (res) {
|
}).then(function (res) {
|
||||||
@@ -269,7 +271,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}).then((res)=>{
|
}).then((res)=>{
|
||||||
that.List = res.data;
|
that.List = res.data;
|
||||||
console.log(that.List);
|
|
||||||
})
|
})
|
||||||
// /selectAllArticleByadmin
|
// /selectAllArticleByadmin
|
||||||
},
|
},
|
||||||
@@ -341,14 +342,14 @@ export default {
|
|||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// 请求的地址
|
// 请求的地址
|
||||||
url: 'api/updateFileByAdmin',
|
url: 'http://localhost:8082/helloGithub_war_exploded/updateFileByAdmin',
|
||||||
// URL 中的查询参数
|
// URL 中的查询参数
|
||||||
params: {
|
params: {
|
||||||
id: this.form.id,
|
id: this.form.id,
|
||||||
userId: this.form.userId,
|
userId: this.form.userId,
|
||||||
lookNum: this.form.lookNum,
|
lookNum: this.form.lookNum,
|
||||||
oneFileName: this.form.oneFileName,
|
oneFileName: this.form.oneFileName,
|
||||||
Content: this.form.content,
|
// Content: '',
|
||||||
language: this.form.language,
|
language: this.form.language,
|
||||||
url: this.form.url,
|
url: this.form.url,
|
||||||
isValid: this.form.isValid,
|
isValid: this.form.isValid,
|
||||||
@@ -377,9 +378,9 @@ export default {
|
|||||||
},
|
},
|
||||||
toDetailPage(row){
|
toDetailPage(row){
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path:'/ArticleDetail',
|
path:'/oneFileDetail',
|
||||||
query: {
|
query: {
|
||||||
id: row.articleId,
|
id: row.id,
|
||||||
refresh: true
|
refresh: true
|
||||||
}})
|
}})
|
||||||
}
|
}
|
||||||
|
@@ -25,8 +25,8 @@
|
|||||||
<span style="display: flex;justify-content:flex-start;margin-top: 10px;color: #6b7280;font-size: 15px">你是 HelloGitHub 社区的第<span style="font-size: 16px;color:#2b2e33;font-weight: bold "> {{userId}} </span>位用户,于 {{creatTime}} 加入。</span>
|
<span style="display: flex;justify-content:flex-start;margin-top: 10px;color: #6b7280;font-size: 15px">你是 HelloGitHub 社区的第<span style="font-size: 16px;color:#2b2e33;font-weight: bold "> {{userId}} </span>位用户,于 {{creatTime}} 加入。</span>
|
||||||
<span style="display: flex;justify-content: flex-start;margin-top: 10px;color: #6b7280;font-size: 15px">
|
<span style="display: flex;justify-content: flex-start;margin-top: 10px;color: #6b7280;font-size: 15px">
|
||||||
分享
|
分享
|
||||||
<span v-if="projectNum!=null" style="font-size: 16px;color:#2b2e33;font-weight: bold ">{{projectNum}}</span>
|
<span v-if="projectList.length!==0" style="font-size: 16px;color:#2b2e33;font-weight: bold ">{{projectList.length}}</span>
|
||||||
<span v-if="projectNum==null" style="font-size: 16px;color:#2b2e33;font-weight: bold ">0</span>
|
<span v-if="projectList.length===0" style="font-size: 16px;color:#2b2e33;font-weight: bold ">0</span>
|
||||||
个开源项目,
|
个开源项目,
|
||||||
<span v-if="Object.keys(commentList).length!==0" style="font-size: 16px;color:#2b2e33;font-weight: bold ">{{Object.keys(commentList).length}}</span>
|
<span v-if="Object.keys(commentList).length!==0" style="font-size: 16px;color:#2b2e33;font-weight: bold ">{{Object.keys(commentList).length}}</span>
|
||||||
<span v-if="Object.keys(commentList).length===0" style="font-size: 16px;color:#2b2e33;font-weight: bold ">0</span>
|
<span v-if="Object.keys(commentList).length===0" style="font-size: 16px;color:#2b2e33;font-weight: bold ">0</span>
|
||||||
|
@@ -28,11 +28,6 @@ Vue.prototype.$cookie = cookie;
|
|||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
Vue.use(Element);
|
Vue.use(Element);
|
||||||
|
|
||||||
import 'xe-utils'
|
|
||||||
import VXETable from 'vxe-table'
|
|
||||||
import 'vxe-table/lib/style.css'
|
|
||||||
Vue.use(VXETable)
|
|
||||||
Vue.prototype.$VXETable = VXETable
|
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
router,
|
router,
|
||||||
|
Reference in New Issue
Block a user