diff --git a/package.json b/package.json index e7f159d3e708faa2492be92a54c56f658eb19e02..77b29007cdf2b9a3fd463cce30bda765dae03530 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ }, "devDependencies": { "autoprefixer": "6.7.2", + "axios-mock-adapter": "^1.8.1", "babel-core": "6.22.1", "babel-eslint": "7.1.1", "babel-loader": "6.2.10", @@ -47,11 +48,11 @@ "copy-webpack-plugin": "4.0.1", "css-loader": "0.26.1", "eslint": "3.14.1", + "eslint-config-airbnb-base": "11.0.1", "eslint-friendly-formatter": "2.0.7", + "eslint-import-resolver-webpack": "0.8.1", "eslint-loader": "1.6.1", "eslint-plugin-html": "2.0.0", - "eslint-config-airbnb-base": "11.0.1", - "eslint-import-resolver-webpack": "0.8.1", "eslint-plugin-import": "2.2.0", "eventsource-polyfill": "0.9.6", "express": "4.14.1", @@ -61,26 +62,26 @@ "function-bind": "1.1.0", "html-webpack-plugin": "2.28.0", "http-proxy-middleware": "0.17.3", - "webpack-bundle-analyzer": "2.2.1", - "semver": "5.3.0", + "node-sass": "3.7.0", "opn": "4.0.2", "optimize-css-assets-webpack-plugin": "1.3.0", "ora": "1.1.0", + "pushstate-server": "2.1.0", "rimraf": "2.6.0", + "sass-loader": "4.0.2", + "script-loader": "0.7.0", + "semver": "5.3.0", + "style-loader": "0.13.1", "url-loader": "0.5.7", "vue-loader": "11.3.4", "vue-style-loader": "2.0.0", "vue-template-compiler": "2.2.6", "webpack": "2.2.1", + "webpack-bundle-analyzer": "2.2.1", + "webpack-dashboard": "0.2.1", "webpack-dev-middleware": "1.10.0", "webpack-hot-middleware": "2.16.1", - "webpack-merge": "2.6.1", - "webpack-dashboard": "0.2.1", - "node-sass": "3.7.0", - "pushstate-server": "2.1.0", - "sass-loader": "4.0.2", - "script-loader": "0.7.0", - "style-loader": "0.13.1" + "webpack-merge": "2.6.1" }, "engines": { "node": ">= 4.0.0", diff --git a/src/components/Dropzone/index.vue b/src/components/Dropzone/index.vue index 977f5a2d6b4e5577c648428d224335b9d745df59..8527e76c334d1dd3fe1014cfebbad467fbf7d504 100644 --- a/src/components/Dropzone/index.vue +++ b/src/components/Dropzone/index.vue @@ -57,17 +57,20 @@ } }, accept: (file, done) => { - const token = this.$store.getters.token; - getToken(token).then(response => { - file.token = response.data.qiniu_token; - file.key = response.data.qiniu_key; - file.url = response.data.qiniu_url; - done(); - }) + /* 七牛*/ + // const token = this.$store.getters.token; + // getToken(token).then(response => { + // file.token = response.data.qiniu_token; + // file.key = response.data.qiniu_key; + // file.url = response.data.qiniu_url; + // done(); + // }) + done(); }, sending: (file, xhr, formData) => { - formData.append('token', file.token); - formData.append('key', file.key); + /* 七牛*/ + // formData.append('token', file.token); + // formData.append('key', file.key); vm.initOnce = false; } }); diff --git a/src/components/SplitPane/Pane.vue b/src/components/SplitPane/Pane.vue index 3e66659b2ca58c3bc28a9a0828dd95415ba082d4..c6765df0e1884e733f5cdf04978ce1b1867e9c80 100644 --- a/src/components/SplitPane/Pane.vue +++ b/src/components/SplitPane/Pane.vue @@ -7,32 +7,12 @@ <script> export default { name: 'Pane', - props: { -// split: { -// validator: function (value) { -// return ['vertical', 'horizontal'].indexOf(value) >= 0 -// }, -// required: true -// } - }, -// computed:{ -// classes () { -// return this.$parent.split -// }, -// }, data() { const classes = ['Pane', this.$parent.split, 'className']; return { classes: classes.join(' '), percent: 50 } - }, - created() { -// console.log(this.$parent.split) - }, - - methods: { - } } </script> diff --git a/src/components/SplitPane/Resizer.vue b/src/components/SplitPane/Resizer.vue index b3bdba0400883ca6f38f923678e17ac187472775..e6499c9b8a075be9b0188e295ae11b174c6094e8 100644 --- a/src/components/SplitPane/Resizer.vue +++ b/src/components/SplitPane/Resizer.vue @@ -1,6 +1,28 @@ <template> <div :class="classes" @mousedown="onMouseDown"></div> </template> +<script> + export default { + props: { + split: { + validator(value) { + return ['vertical', 'horizontal'].indexOf(value) >= 0 + }, + required: true + }, + onMouseDown: { + type: Function, + required: true + } + }, + data() { + const classes = ['Resizer', this.split, 'className']; + return { + classes: classes.join(' ') + } + } + } +</script> <style scoped> .Resizer { -moz-box-sizing: border-box; @@ -37,8 +59,6 @@ .Resizer.vertical { width: 11px; height: 100%; - /*margin: 0 -5px;*/ - border-left: 5px solid rgba(255, 255, 255, 0); border-right: 5px solid rgba(255, 255, 255, 0); cursor: col-resize; @@ -49,27 +69,3 @@ border-right: 5px solid rgba(0, 0, 0, 0.5); } </style> -<script> - export default { - props: { - split: { - validator(value) { - return ['vertical', 'horizontal'].indexOf(value) >= 0 - }, - required: true - }, - onMouseDown: { - type: Function, - required: true - } - }, - data() { - const classes = ['Resizer', this.split, 'className']; - return { - classes: classes.join(' ') - } - }, - - methods: {} - } -</script> diff --git a/src/components/SplitPane/SplitPane-backup.vue b/src/components/SplitPane/SplitPane-backup.vue deleted file mode 100644 index 8a4884d0d064df644f8fb3ff9e968afd8e072ec1..0000000000000000000000000000000000000000 --- a/src/components/SplitPane/SplitPane-backup.vue +++ /dev/null @@ -1,175 +0,0 @@ -<!--<template>--> -<!--<div :style="{ cursor, userSelect }" class="vue-splitter-container clearfix" @mouseup="onMouseUp"--> -<!--@mousemove="onMouseMove">--> - -<!--<Pane split="vertical" :style="{ width: percent+'%' }" class="left-container splitter-pane">--> -<!--orange--> -<!--</Pane>--> - -<!--<Resizer split="vertical" :onMouseDown="onMouseDown" @click="onClick"></Resizer>--> -<!--<div class="todel" :style="{ width: 100-percent+'%'}">--> -<!--<Pane split="horizontal" class="top-container">--> -<!--<div slot>apple banana</div>--> -<!--</Pane>--> -<!--<Resizer split="horizontal" :onMouseDown="onMouseDown" @click="onClick"></Resizer>--> -<!--<Pane split="horizontal" class="bottom-container">--> -<!--<div slot>apple banana</div>--> -<!--</Pane>--> -<!--</div>--> - -<!--</div>--> - -<!--</template>--> -<style scoped> - .clearfix:after { - visibility: hidden; - display: block; - font-size: 0; - content: " "; - clear: both; - height: 0; - } - .vue-splitter-container { - height: inherit; - display: flex; - } -</style> - -<script> - /* eslint-disable */ - import Resizer from './Resizer'; - import vue from 'vue' - export default { - name: 'splitPane', - components: {Resizer}, - props: { - margin: { - type: Number, - default: 10 - } - }, - data () { - return { - active: false, - percent: 50, - hasMoved: false, - panes: [] - } - }, - props: { - split: { - validator: function (value) { - return ['vertical', 'horizontal'].indexOf(value) >= 0 - }, - required: true - } - }, - computed: { - userSelect () { - return this.active ? 'none' : '' - }, - cursor () { - return this.active ? 'col-resize' : '' - }, -// $paneItems () { -// return this.$children.filter(child => { -// console.log(child) -// }) -// } - }, - render(h){ - const temp = []; - this.$slots.default.map((item, i) => { - if (item.tag && item.tag.toUpperCase().indexOf('PANE') >= 0) { - temp.push(item) - } - }); - const newSlots = []; - const length = temp.length; - temp.map((item, index)=> { - newSlots.push(item) - if (index != length - 1) { - newSlots.push( - h('Resizer', { - props: { - split: this.split, - onMouseDown: this.onMouseDown - } - }) - ) - } - }) - return h('div', { - on: { - mousemove: this.onMouseMove - } - }, [ - h('div', { - 'class': { - 'vue-splitter-container': true - }, - }, newSlots) - ]) - }, -// beforeMount(){ -// this.$slots.default=this.$slots.default.map((item, i) => { -// if (item.tag&&item.tag.toUpperCase().indexOf('PANE') >= 0) { -// return item -// }else{ -// return null -// } -// }) -// -// }, - created(){ - - }, - mounted(){ - - }, - methods: { - onClick () { - if (!this.hasMoved) { - this.percent = 50; - this.$emit('resize'); - } - }, - onMouseDown () { - this.active = true; - this.hasMoved = false; - }, - onMouseUp () { - this.active = false; - }, - onMouseMove (e) { - if (e.buttons === 0 || e.which === 0) { - this.active = false; - } - if (this.active) { - - let offset = 0; - let target = e.currentTarget; - while (target) { - offset += target.offsetLeft; - target = target.offsetParent; - } - const percent = Math.floor(((e.pageX - offset) / e.currentTarget.offsetWidth) * 10000) / 100; - if (percent > this.margin && percent < 100 - this.margin) { - this.percent = percent; - } - console.log(percent) - this.$children.map((v, i)=> { - if (i == 0) { - v.percent = percent - } else { - v.percent = 100 - percent - } - - }) - this.$emit('resize'); - this.hasMoved = true; - } - } - } - } -</script> diff --git a/src/components/SplitPane/index.js b/src/components/SplitPane/index.js deleted file mode 100644 index 8e42e2bfd41a69c30854e395a820de7dae553e67..0000000000000000000000000000000000000000 --- a/src/components/SplitPane/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import SplitPane from './a.vue'; -import Pane from './Pane.vue'; - -export { - SplitPane, - Pane -} diff --git a/src/components/SplitPane/SplitPane.vue b/src/components/SplitPane/index.vue similarity index 98% rename from src/components/SplitPane/SplitPane.vue rename to src/components/SplitPane/index.vue index df73ed8821a66f7c533e1815fbb55cbc384c303e..3b4d62ecd9098bf44726dc5f7b67105a68be7400 100644 --- a/src/components/SplitPane/SplitPane.vue +++ b/src/components/SplitPane/index.vue @@ -66,7 +66,6 @@ mounted() { const element = this.$el; const elementOffset = element.getBoundingClientRect(); - console.log(elementOffset.height) // this.height = elementOffset.height+'px'; }, methods: { diff --git a/src/components/twoDndList/index.vue b/src/components/twoDndList/index.vue index 6a24f6e9b633d5faf8e3ead2d7d0a7b106e3fb0a..c7c3577e3efb560b891d97c35da8507bc0c5b3e0 100644 --- a/src/components/twoDndList/index.vue +++ b/src/components/twoDndList/index.vue @@ -1,30 +1,28 @@ <template> - <div class="twoDndList"> - <div class="twoDndList-list" :style="{width:width1}"> - <h3>{{list1Title}}</h3> - <draggable :list="list1" class="dragArea" :options="{group:'article'}"> - <div class="list-complete-item" v-for="element in list1"> - <div class="list-complete-item-handle">[{{element.id}}] {{element.title}}</div> - <div style="position:absolute;right:0px;"> - <a style="float: left ;margin-top: -20px;margin-right:5px;" :href="'/article/edit/'+element.id" target="_blank"><i style="color:#20a0ff" class="el-icon-information"></i></a> - <span style="float: right ;margin-top: -20px;margin-right:5px;" @click="deleteEle(element)"> + <div class="twoDndList"> + <div class="twoDndList-list" :style="{width:width1}"> + <h3>{{list1Title}}</h3> + <draggable :list="list1" class="dragArea" :options="{group:'article'}"> + <div class="list-complete-item" v-for="element in list1"> + <div class="list-complete-item-handle">[{{element.author}}] {{element.title}}</div> + <div style="position:absolute;right:0px;"> + <span style="float: right ;margin-top: -20px;margin-right:5px;" @click="deleteEle(element)"> <i style="color:#ff4949" class="el-icon-delete"></i> </span> - </div> - </div> - </draggable> + </div> </div> + </draggable> + </div> - <div class="twoDndList-list" :style="{width:width2}"> - <h3>{{list2Title}}</h3> - <draggable :list="filterList2" class="dragArea" :options="{group:'article'}"> - <div class="list-complete-item" v-for="element in filterList2"> - <div class='list-complete-item-handle2' @click="pushEle(element)"> [{{element.id}}] {{element.title}}</div> - <a style="float: right ;margin-top: -20px;" :href="'/article/edit/'+element.id" target="_blank"><i style="color:#20a0ff" class="el-icon-information"></i></a> - </div> - </draggable> + <div class="twoDndList-list" :style="{width:width2}"> + <h3>{{list2Title}}</h3> + <draggable :list="filterList2" class="dragArea" :options="{group:'article'}"> + <div class="list-complete-item" v-for="element in filterList2"> + <div class='list-complete-item-handle2' @click="pushEle(element)"> [{{element.author}}] {{element.title}}</div> </div> + </draggable> </div> + </div> </template> <script> @@ -124,6 +122,7 @@ .list-complete-item { cursor: pointer; position: relative; + font-size: 14px; padding: 5px 12px; margin-top: 4px; border: 1px solid #bfcbd9; diff --git a/src/mock/index.js b/src/mock/index.js index 52eeaa362ca206ca24ecbe7aa477e9dfc77084e4..e2b0edab8b1f4f8ab814a08f58462109316fd72b 100644 --- a/src/mock/index.js +++ b/src/mock/index.js @@ -1,5 +1,9 @@ +import axios from 'axios'; import Mock from 'mockjs'; -Mock.mock(/\/article\/list/, { +import MockAdapter from 'axios-mock-adapter'; +const mock = new MockAdapter(axios); + +const articleList = { 'data|20': [{ id: '@id', title: '@ctitle(10, 20)', @@ -7,6 +11,7 @@ Mock.mock(/\/article\/list/, { display_time: '@datetime', pageviews: '@integer(300, 5000)' }] -}) - -export default Mock; +} +const data = JSON.stringify(Mock.mock(articleList)) +mock.onGet('/article/list').reply(200, data); +export default mock; diff --git a/src/router/index.js b/src/router/index.js index 920ed64d8ee2ee6c36cde7ebb74114fea508e8b1..55013a67c7c876b66ea5d6e0e3da6d2ca25d4ce9 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -20,7 +20,12 @@ import reset from '../views/login/reset'; const Tinymce = resolve => require(['../views/components/tinymce'], resolve); const Markdown = resolve => require(['../views/components/markdown'], resolve); const JsonEditor = resolve => require(['../views/components/jsoneditor'], resolve); +const DndList = resolve => require(['../views/components/dndlist'], resolve); const AvatarUpload = resolve => require(['../views/components/avatarupload'], resolve); +const Dropzone = resolve => require(['../views/components/dropzone'], resolve); +const Sticky = resolve => require(['../views/components/sticky'], resolve); +const SplitPane = resolve => require(['../views/components/splitpane'], resolve); + /* charts*/ const KeyboardChart = resolve => require(['../views/charts/keyboard'], resolve); @@ -72,9 +77,12 @@ export default new Router({ children: [ { path: 'tinymce', component: Tinymce, name: '富文本编辑器' }, { path: 'markdown', component: Markdown, name: 'Markdown' }, - { path: 'jsoneditor', component: JsonEditor, name: 'json编辑器' }, - { path: 'avatarupload', component: AvatarUpload, name: '头åƒä¸Šä¼ ' } - + { path: 'jsoneditor', component: JsonEditor, name: 'JSON编辑器' }, + { path: 'dndlist', component: DndList, name: '列表拖拽' }, + { path: 'splitpane', component: SplitPane, name: 'SplitPane' }, + { path: 'avatarupload', component: AvatarUpload, name: '头åƒä¸Šä¼ ' }, + { path: 'dropzone', component: Dropzone, name: 'Dropzone' }, + { path: 'sticky', component: Sticky, name: 'Sticky' } ] }, { diff --git a/src/styles/index.scss b/src/styles/index.scss index d04b5dff0179571636d37038657b0a98adb16175..5e99cb98f4b12db8293bca1d85bf14a45250b050 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -84,6 +84,13 @@ code { padding: 20px 10px; margin-bottom: 20px; display: block; + a { + color: #337ab7; + cursor: pointer; + &:hover { + color: rgb(32, 160, 255); + } + } } .fade-enter-active, diff --git a/src/views/components/dndlist.vue b/src/views/components/dndlist.vue index bc84361d6c6751773727f45386f5f44d2254843c..80984340e378b7a86ff363b01719958fca33ced3 100644 --- a/src/views/components/dndlist.vue +++ b/src/views/components/dndlist.vue @@ -1,17 +1,14 @@ <template> <div class="components-container"> - <code>å…¬å¸åšçš„åŽå°ä¸»è¦æ˜¯ä¸€ä¸ªcms系统,公å¸ä¹Ÿæ˜¯å·²è‡ªåª’ä½“ä¸ºæ ¸å¿ƒçš„ï¼Œæ‰€ä»¥å¯Œæ–‡æœ¬æ˜¯åŽå°å¾ˆæ ¸å¿ƒçš„功能。在选择富文本的过程ä¸ä¹Ÿèµ°äº†ä¸å°‘的弯路,市é¢ä¸Šå¸¸è§çš„富文本都基本用过了,最终选择了tinymce</code> + <code>拖拽https://github.com/SortableJS/Vue.Draggable 项目:Vue.Draggable</code> <div class="editor-container"> - <TwoDndList :list1="list1" :list2="list2" :list1Title="头æ¡åˆ—表" list2Title="æ–‡ç« æ± "></TwoDndList> + <DndList :list1="list1" :list2="list2" list1Title="头æ¡åˆ—表" list2Title="æ–‡ç« æ± " /> </div> - <!--<div class='editor-content'> -{{content}} - </div>--> </div> </template> <script> import DndList from 'components/twoDndList' - + import { getList } from 'api/article'; export default { components: { DndList }, data() { @@ -20,8 +17,18 @@ list2: [] } }, + created() { + this.fetchData(); + }, methods: { - + fetchData() { + this.listLoading = true; + getList(this.listQuery).then(response => { + this.list1 = response.data.splice(0, 5); + this.list2 = response.data; + console.log(this.list1, this.list2) + }) + } } }; </script> diff --git a/src/views/components/dropzone.vue b/src/views/components/dropzone.vue new file mode 100644 index 0000000000000000000000000000000000000000..f9c85d4ece3899e6a8106ce75ff1d63666dc208d --- /dev/null +++ b/src/views/components/dropzone.vue @@ -0,0 +1,28 @@ +<template> + <div class="components-container"> + <code>https://github.com/rowanwins/vue-dropzone + 由于我å¸ä¸šåŠ¡æœ‰ç‰¹æ®Šéœ€æ±‚ï¼Œè€Œä¸”è¦ä¼ 七牛 所以没用第三方 选择了自己å°è£… + </code> + <div class="editor-container"> + <Dropzone v-on:dropzone-removedFile="dropzoneR" v-on:dropzone-success="dropzoneS" id="myVueDropzone" + url="https://httpbin.org/post"></Dropzone> + </div> + </div> +</template> +<script> + import Dropzone from 'components/Dropzone'; + + export default { + components: { Dropzone }, + methods: { + dropzoneS(file) { + this.$message({ message: 'ä¸Šä¼ æˆåŠŸ', type: 'success' }); + }, + dropzoneR(file) { + this.$message({ message: 'åˆ é™¤æˆåŠŸ', type: 'success' }); + } + } + }; +</script> + + diff --git a/src/views/components/splitpane.vue b/src/views/components/splitpane.vue new file mode 100644 index 0000000000000000000000000000000000000000..47e193c06c06b95e81a09a1dbd02f8eb814e04b5 --- /dev/null +++ b/src/views/components/splitpane.vue @@ -0,0 +1,62 @@ +<template> + <div class="components-container" > + <code>splitPane å¦‚æžœä½ ç”¨è¿‡<a href='http://codepen.io/' target='_blank'>codepen</a>,<a href='https://jsfiddle.net/' target='_blank'>jsfiddle</a>å°±ä¸ä¼šé™Œç”Ÿäº† + 暂还没有时间开æºå°è£…好,日åŽè¡¥ä¸Š + </code> + <splitPane v-on:resize="resize" split="vertical"> + <template slot="paneL"> + <div class="left-container"></div> + </template> + <template slot="paneR"> + <split-pane split="horizontal"> + <template slot="paneL"> + <div class="top-container"></div> + </template> + <template slot="paneR"> + <div class="bottom-container"> + </div> + </template> + </split-pane> + </template> + </splitPane> + </div> +</template> + +<script> + import splitPane from 'components/SplitPane' + export default { + components: { splitPane }, + methods: { + resize() { + console.log('resize') + } + } + }; +</script> +<style scoped> + .components-container{ + position: relative; + height: 100vh; + } + .left-container { + background-color: #F38181; + height:100%; + } + + .right-container { + background-color: #FCE38A; + height: 200px; + } + + .top-container { + background-color: #FCE38A; + width: 100%; + height: 100%; + } + + .bottom-container { + width: 100%; + background-color: #95E1D3; + height: 100%; + } +</style> diff --git a/src/views/components/sticky.vue b/src/views/components/sticky.vue new file mode 100644 index 0000000000000000000000000000000000000000..6e29d19f641c5bddf7dca7db61364d8e261c72a5 --- /dev/null +++ b/src/views/components/sticky.vue @@ -0,0 +1,125 @@ +<template> + <div> + <Sticky className="sub-navbar"> + <el-dropdown trigger="click"> + <el-button> + å¹³å°<i class="el-icon-caret-bottom el-icon--right"></i> + </el-button> + <el-dropdown-menu class="no-border" slot="dropdown"> + <el-checkbox-group v-model="platforms" style="padding: 5px 15px;"> + <el-checkbox v-for="item in platformsOptions" :label="item.key" :key="item.key"> + {{item.name}} + </el-checkbox> + </el-checkbox-group> + </el-dropdown-menu> + </el-dropdown> + + <el-dropdown trigger="click"> + <el-button> + 外链<i class="el-icon-caret-bottom el-icon--right"></i> + </el-button> + <el-dropdown-menu class="no-padding no-border" style="width:300px" slot="dropdown"> + <el-input placeholder="请输入内容" v-model="url"> + <template slot="prepend">填写url</template> + </el-input> + </el-dropdown-menu> + </el-dropdown> + + <div class="time-container"> + <el-date-picker v-model="time" type="datetime" :picker-options="pickerOptions" format="yyyy-MM-dd HH:mm:ss" placeholder="å‘布时间"> + </el-date-picker> + </div> + + <el-button style="margin-left: 10px;" type="success">å‘布 + </el-button> + </Sticky> + + <div class="components-container"> + <code>Sticky header 当页颿»šåŠ¨åˆ°é¢„è®¾çš„ä½ç½®ä¼šå¸é™„在顶部</code> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + <div>我是å ä½</div> + </div> + </div> + +</template> +<script> + import Sticky from 'components/Sticky'; + + export default { + components: { Sticky }, + data() { + return { + time: '', + url: '', + platforms: ['a-platform'], + platformsOptions: [ + { key: 'a-platform', name: 'å¹³å°A' }, + { key: 'b-platform', name: 'å¹³å°B' }, + { key: 'c-platform', name: 'å¹³å°C' } + ], + pickerOptions: { + disabledDate(time) { + return time.getTime() > Date.now(); + } + } + } + } + + }; +</script> +<style scoped> + .time-container { + display: inline-block; + } +</style> + diff --git a/src/views/error/404.vue b/src/views/error/404.vue index d2b3ce3ceaabb3e48a710d417fa0ad2c0a1f4d32..ecf964c45816f01f41d824b9d37035c9a011e4b9 100644 --- a/src/views/error/404.vue +++ b/src/views/error/404.vue @@ -1,61 +1,7 @@ <template> - <div class="errorpage-container"> 404 - <splitPane v-on:resize="resize" split="vertical"> - <template slot="paneL"> - <div class="left-container"></div> - </template> - <template slot="paneR"> - <splitPane split="horizontal"> - <template slot="paneL"> - <div class="top-container"></div> - </template> - <template slot="paneR"> - <div class="bottom-container"> - </div> - </template> - </splitPane> - </template> - </splitPane> - </div> + <div>404</div> </template> -<script> - import splitPane from 'components/SplitPane/SplitPane' - export default { - components: { splitPane }, - methods: { - resize() { - console.log('resize') - } - } - }; -</script> -<style rel="stylesheet/scss" lang="scss" scoped> - .errorpage-container{ - position: relative; - height: 100vh; - } - .left-container { - background-color: #F38181; - height:100%; - } - .right-container { - background-color: #FCE38A; - height: 200px; - } - .top-container { - background-color: #FCE38A; - width: 100%; - height: 100%; - } - - .bottom-container { - width: 100%; - background-color: #95E1D3; - height: 100%; - - } -</style> diff --git a/src/views/excel/index.vue b/src/views/excel/index.vue index 3e93abb6fabfaa27e47eb8dc4fdd50021913d622..17a728fec8a66bc30acdb96e274be8a6af30fc88 100644 --- a/src/views/excel/index.vue +++ b/src/views/excel/index.vue @@ -33,7 +33,7 @@ </div> </template> <script> -import { getList } from 'api/article' +import { getList } from 'api/article'; export default { data() { return {