add dashboard
							parent
							
								
									33e384ee95
								
							
						
					
					
						commit
						a3a331bd15
					
				|  | @ -31,7 +31,8 @@ | |||
|     "vue-router": "2.3.0", | ||||
|     "vuedraggable": "2.8.4", | ||||
|     "vuex": "2.2.1", | ||||
|     "xlsx": "0.8.1" | ||||
|     "xlsx": "0.8.1", | ||||
|     "vue-count-to":"1.0.5" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "autoprefixer": "6.7.2", | ||||
|  |  | |||
|  | @ -1,29 +1,8 @@ | |||
| import fetch, { tpFetch } from 'utils/fetch'; | ||||
| import { param } from 'utils'; | ||||
| import { tpFetch } from 'utils/fetch'; | ||||
| 
 | ||||
| export function getList(query) { | ||||
| export function getList() { | ||||
|   return tpFetch({ | ||||
|     url: '/article/list', | ||||
|     method: 'get' | ||||
|   }); | ||||
| } | ||||
| export function upload(data) { | ||||
|   return tpFetch({ | ||||
|     url: 'https://upload.qbox.me', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /* 外部uri转七牛uri*/ | ||||
| export function netUpload(token, net_url) { | ||||
|   const imgData = { | ||||
|     net_url | ||||
|   }; | ||||
|   return fetch({ | ||||
|     url: '/qiniu/upload/net/async', | ||||
|     method: 'post', | ||||
|     data: imgData | ||||
|   }); | ||||
| } | ||||
|  |  | |||
|  | @ -48,6 +48,7 @@ | |||
|       methods: { | ||||
|         initBar() { | ||||
|           this.chart = echarts.init(document.getElementById(this.id)); | ||||
|           this.setOptions(); | ||||
|         }, | ||||
|         setOptions() { | ||||
|           this.chart.setOption({ | ||||
|  |  | |||
|  | @ -46,6 +46,7 @@ | |||
|       }, | ||||
|       mounted() { | ||||
|         this.chart = echarts.init(document.getElementById(this.id)); | ||||
|         this.setLine(this.listData); | ||||
|       }, | ||||
|       methods: { | ||||
|         setLine(dataList) { | ||||
|  |  | |||
|  | @ -7,6 +7,7 @@ const articleList = { | |||
|   'data|20': [{ | ||||
|     id: '@id', | ||||
|     title: '@ctitle(10, 20)', | ||||
|     'status|1': ['published', 'draft'], | ||||
|     author: '@cname', | ||||
|     display_time: '@datetime', | ||||
|     pageviews: '@integer(300, 5000)' | ||||
|  |  | |||
|  | @ -19,6 +19,7 @@ import sendPWD from '../views/login/sendpwd'; | |||
| import reset from '../views/login/reset'; | ||||
| 
 | ||||
| /* components*/ | ||||
| const componentsIndex = resolve => require(['../views/components/index'], resolve); | ||||
| const Tinymce = resolve => require(['../views/components/tinymce'], resolve); | ||||
| const Markdown = resolve => require(['../views/components/markdown'], resolve); | ||||
| const JsonEditor = resolve => require(['../views/components/jsoneditor'], resolve); | ||||
|  | @ -32,6 +33,7 @@ const Mixin = resolve => require(['../views/components/mixin'], resolve); | |||
| 
 | ||||
| 
 | ||||
| /* charts*/ | ||||
| const chartIndex = resolve => require(['../views/charts/index'], resolve); | ||||
| const KeyboardChart = resolve => require(['../views/charts/keyboard'], resolve); | ||||
| const KeyboardChart2 = resolve => require(['../views/charts/keyboard2'], resolve); | ||||
| const LineMarker = resolve => require(['../views/charts/line'], resolve); | ||||
|  | @ -80,10 +82,11 @@ export default new Router({ | |||
|     { | ||||
|       path: '/components', | ||||
|       component: Layout, | ||||
|       redirect: 'noredirect', | ||||
|       redirect: '/components/index', | ||||
|       name: '组件', | ||||
|       icon: 'zujian', | ||||
|       children: [ | ||||
|         { path: 'index', component: componentsIndex, name: '介绍' }, | ||||
|         { path: 'tinymce', component: Tinymce, name: '富文本编辑器' }, | ||||
|         { path: 'markdown', component: Markdown, name: 'Markdown' }, | ||||
|         { path: 'jsoneditor', component: JsonEditor, name: 'JSON编辑器' }, | ||||
|  | @ -99,10 +102,11 @@ export default new Router({ | |||
|     { | ||||
|       path: '/charts', | ||||
|       component: Layout, | ||||
|       redirect: 'noredirect', | ||||
|       redirect: '/charts/index', | ||||
|       name: '图表', | ||||
|       icon: 'tubiaoleixingzhengchang', | ||||
|       children: [ | ||||
|         { path: 'index', component: chartIndex, name: '介绍' }, | ||||
|         { path: 'keyboard', component: KeyboardChart, name: '键盘图表' }, | ||||
|         { path: 'keyboard2', component: KeyboardChart2, name: '键盘图表2' }, | ||||
|         { path: 'line', component: LineMarker, name: '折线图' }, | ||||
|  |  | |||
|  | @ -0,0 +1,5 @@ | |||
| <template> | ||||
|   <div class="components-container" > | ||||
|     介绍 | ||||
|   </div> | ||||
| </template> | ||||
|  | @ -0,0 +1,5 @@ | |||
| <template> | ||||
|   <div class="components-container" > | ||||
|     介绍 | ||||
|   </div> | ||||
| </template> | ||||
|  | @ -7,32 +7,32 @@ | |||
|             <div class="info-container"> | ||||
|                 <span class="display_name">{{name}}</span> | ||||
|                 <div class="info-wrapper"> | ||||
|                     <router-link class="info-item" :to="'/article/wscnlist?uid='+uid"> | ||||
|                         <span class="info-item-num">{{statisticsData.article_count | toThousandslsFilter}}</span> | ||||
|                     <div class="info-item" :to="'/article/wscnlist?uid='+uid"> | ||||
|                          <countTo class="info-item-num" :startVal='0' :endVal='statisticsData.article_count' :duration='3400'></countTo> | ||||
|                         <span class="info-item-text">文章</span> | ||||
|                         <wscn-icon-svg icon-class="a" class="dashboard-editor-icon"/> | ||||
|                     </router-link> | ||||
|                     </div> | ||||
|                     <div class="info-item" style="cursor: auto"> | ||||
|                         <span class="info-item-num"> {{statisticsData.pageviews_count | toThousandslsFilter}}</span> | ||||
|                         <countTo class="info-item-num"  :startVal='0' :endVal='statisticsData.pageviews_count' :duration='3600'></countTo> | ||||
|                         <span class="info-item-text">浏览量</span> | ||||
|                         <wscn-icon-svg icon-class="b" class="dashboard-editor-icon"/> | ||||
|                     </div> | ||||
|                     <router-link class="info-item" :to="'/comment/commentslist?res_author_id='+uid"> | ||||
|                         <span class="info-item-num">{{statisticsData.comment_count | toThousandslsFilter}}</span> | ||||
|                     <div class="info-item" :to="'/comment/commentslist?res_author_id='+uid"> | ||||
|                          <countTo class="info-item-num" ref='countTo3' :startVal='0' :endVal='statisticsData.comment_count' :duration='3800'></countTo> | ||||
|                         <span class="info-item-text">评论</span> | ||||
|                         <wscn-icon-svg icon-class="c" class="dashboard-editor-icon"/> | ||||
|                     </router-link> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <div class="btn-group"> | ||||
|             <router-link class="pan-btn blue-btn" to="/article/create">发表文章</router-link> | ||||
|             <router-link class="pan-btn light-blue-btn" to="/livenews/create">发布快讯</router-link> | ||||
|             <router-link class="pan-btn red-btn" to="/push/create">推送</router-link> | ||||
|             <router-link class="pan-btn pink-btn" to="/comment/commentslist">评论管理</router-link> | ||||
|             <router-link class="pan-btn green-btn" to="/article/wscnlist">文章列表</router-link> | ||||
|             <router-link class="pan-btn tiffany-btn" to="/livenews/list">实时列表</router-link> | ||||
|             <router-link class="pan-btn blue-btn" to="/components/index">组价</router-link> | ||||
|             <router-link class="pan-btn light-blue-btn" to="/charts/index">图表</router-link> | ||||
|             <router-link class="pan-btn red-btn" to="/errorpage/404">错误页面</router-link> | ||||
|             <router-link class="pan-btn pink-btn" to="/errlog/log">错误日志</router-link> | ||||
|             <router-link class="pan-btn green-btn" to="/article/wscnlist">导出excel</router-link> | ||||
|             <router-link class="pan-btn tiffany-btn" to="/excel/download">实时列表</router-link> | ||||
|         </div> | ||||
| 
 | ||||
|         <div class="clearfix main-dashboard-container"> | ||||
|  | @ -47,10 +47,10 @@ | |||
|                     <template v-if="recentArticles.length!=0"> | ||||
|                         <div class="recent-articles-item" v-for="item in  recentArticles"> | ||||
|                             <span class="recent-articles-status">{{item.status | statusFilter}}</span> | ||||
|                             <router-link class="recent-articles-content" :to="'/article/edit/'+item.id"> | ||||
|                                 <span>{{item.title}}</span> | ||||
|                             </router-link> | ||||
|                             <span class="recent-articles-time"><i style="padding-right: 4px;" class="el-icon-time"></i>{{item.display_time | parseTime('{m}-{d} {h}:{i}')}}</span> | ||||
|                              <span class="recent-articles-content" :to="'/article/edit/'+item.id"> | ||||
|                                 {{item.title}} | ||||
|                             </span> | ||||
|                             <span class="recent-articles-time">{{item.author}}</span> | ||||
|                         </div> | ||||
|                     </template> | ||||
|                     <template v-else> | ||||
|  | @ -58,9 +58,6 @@ | |||
|                         <!--<img class="emptyGif" :src="emptyGif">--> | ||||
|                     </template> | ||||
|                 </div> | ||||
|                 <router-link class="recent-articles-more" :to="'/article/wscnlist?uid='+uid"> | ||||
|                     Show more | ||||
|                 </router-link> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
|  | @ -71,23 +68,37 @@ | |||
|     import PanThumb from 'components/PanThumb'; | ||||
|     import MonthKpi from './monthKpi'; | ||||
|     import ArticlesChart from './articlesChart'; | ||||
|     // import { getStatistics } from 'api/article'; | ||||
| 
 | ||||
|     import { getList } from 'api/article'; | ||||
|     import emptyGif from 'assets/compbig.gif'; | ||||
|     import countTo from 'vue-count-to'; | ||||
|     export default { | ||||
|       name: 'dashboard-editor', | ||||
|       components: { PanThumb, MonthKpi, ArticlesChart }, | ||||
|       components: { PanThumb, MonthKpi, ArticlesChart, countTo }, | ||||
|       data() { | ||||
|         return { | ||||
|           chart: null, | ||||
|           statisticsData: { | ||||
|             article_count: undefined, | ||||
|             comment_count: undefined, | ||||
|             article_count: 1024, | ||||
|             comment_count: 102400, | ||||
|             latest_article: [], | ||||
|             month_article_count: undefined, | ||||
|             pageviews_count: undefined, | ||||
|             week_article: [] | ||||
|             month_article_count: 28, | ||||
|             pageviews_count: 1024, | ||||
|             week_article: [ | ||||
|                { count: 30, week: '201716' }, | ||||
|                 { count: 26, week: '201715' }, | ||||
|                 { count: 31, week: '201714' }, | ||||
|                 { count: 28, week: '201713' }, | ||||
|                 { count: 40, week: '201712' }, | ||||
|                 { count: 41, week: '201711' }, | ||||
|                 { count: 50, week: '201710' }, | ||||
|                 { count: 42, week: '201709' }, | ||||
|                 { count: 36, week: '201708' }, | ||||
|                 { count: 32, week: '201707' }, | ||||
|                 { count: 40, week: '201706' }, | ||||
|                 { count: 41, week: '201705' } | ||||
|             ] | ||||
|           }, | ||||
|           list: [], | ||||
|           emptyGif | ||||
|         } | ||||
|       }, | ||||
|  | @ -104,15 +115,15 @@ | |||
|           'roles' | ||||
|         ]), | ||||
|         recentArticles() { | ||||
|           return this.statisticsData.latest_article.slice(0, 7) | ||||
|           return this.list.slice(0, 7) | ||||
|         } | ||||
|       }, | ||||
|       methods: { | ||||
|         fetchData() { | ||||
|         //   getStatistics().then(response => { | ||||
|         //     this.statisticsData = response.data; | ||||
|         //     this.statisticsData.week_article = this.statisticsData.week_article.slice().reverse(); | ||||
|         //   }) | ||||
|           getList(this.listQuery).then(response => { | ||||
|             console.log(response.data) | ||||
|             this.list = response.data; | ||||
|           }) | ||||
|         } | ||||
|       }, | ||||
|       filters: { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Pan
						Pan