merge master

This commit is contained in:
Pan 2019-03-19 15:42:05 +08:00
commit ae02d6bb56
118 changed files with 722 additions and 303 deletions

View File

@ -21,6 +21,8 @@ module.exports = {
"allowFirstLine": false "allowFirstLine": false
} }
}], }],
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline":"off",
"vue/name-property-casing": ["error", "PascalCase"], "vue/name-property-casing": ["error", "PascalCase"],
'accessor-pairs': 2, 'accessor-pairs': 2,
'arrow-spacing': [2, { 'arrow-spacing': [2, {

View File

@ -82,10 +82,10 @@
"copy-webpack-plugin": "4.5.2", "copy-webpack-plugin": "4.5.2",
"cross-env": "5.2.0", "cross-env": "5.2.0",
"css-loader": "1.0.0", "css-loader": "1.0.0",
"eslint": "4.19.1", "eslint": "5.15.2",
"eslint-friendly-formatter": "4.0.1", "eslint-friendly-formatter": "4.0.1",
"eslint-loader": "2.0.0", "eslint-loader": "2.1.2",
"eslint-plugin-vue": "4.7.1", "eslint-plugin-vue": "5.2.2",
"file-loader": "1.1.11", "file-loader": "1.1.11",
"friendly-errors-webpack-plugin": "1.7.0", "friendly-errors-webpack-plugin": "1.7.0",
"hash-sum": "1.0.2", "hash-sum": "1.0.2",

View File

@ -1,11 +1,11 @@
<template> <template>
<div id="app"> <div id="app">
<router-view/> <router-view />
</div> </div>
</template> </template>
<script> <script>
export default{ export default {
name: 'App' name: 'App'
} }
</script> </script>

View File

@ -4,7 +4,7 @@
<svg width="16" height="16" viewBox="0 0 17 17" xmlns="http://www.w3.org/2000/svg" class="Icon Icon--backToTopArrow" aria-hidden="true" style="height: 16px; width: 16px;"> <svg width="16" height="16" viewBox="0 0 17 17" xmlns="http://www.w3.org/2000/svg" class="Icon Icon--backToTopArrow" aria-hidden="true" style="height: 16px; width: 16px;">
<title>回到顶部</title> <title>回到顶部</title>
<g> <g>
<path d="M12.036 15.59c0 .55-.453.995-.997.995H5.032c-.55 0-.997-.445-.997-.996V8.584H1.03c-1.1 0-1.36-.633-.578-1.416L7.33.29c.39-.39 1.026-.385 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.004z" fill-rule="evenodd"/> <path d="M12.036 15.59c0 .55-.453.995-.997.995H5.032c-.55 0-.997-.445-.997-.996V8.584H1.03c-1.1 0-1.36-.633-.578-1.416L7.33.29c.39-.39 1.026-.385 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.004z" fill-rule="evenodd" />
</g> </g>
</svg> </svg>
</div> </div>

View File

@ -2,8 +2,9 @@
<el-breadcrumb class="app-breadcrumb" separator="/"> <el-breadcrumb class="app-breadcrumb" separator="/">
<transition-group name="breadcrumb"> <transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path"> <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
<span v-if="item.redirect==='noredirect'||index==levelList.length-1" class="no-redirect">{{ <span v-if="item.redirect==='noredirect'||index==levelList.length-1" class="no-redirect">
generateTitle(item.meta.title) }}</span> {{ generateTitle(item.meta.title) }}
</span>
<a v-else @click.prevent="handleLink(item)">{{ generateTitle(item.meta.title) }}</a> <a v-else @click.prevent="handleLink(item)">{{ generateTitle(item.meta.title) }}</a>
</el-breadcrumb-item> </el-breadcrumb-item>
</transition-group> </transition-group>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="className" :id="id" :style="{height:height,width:width}"/> <div :id="id" :class="className" :style="{height:height,width:width}" />
</template> </template>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="className" :id="id" :style="{height:height,width:width}"/> <div :id="id" :class="className" :style="{height:height,width:width}" />
</template> </template>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="className" :id="id" :style="{height:height,width:width}"/> <div :id="id" :class="className" :style="{height:height,width:width}" />
</template> </template>
<script> <script>

View File

@ -7,7 +7,7 @@
<div class="list-complete-item-handle">{{ element.id }}[{{ element.author }}] {{ element.title }}</div> <div class="list-complete-item-handle">{{ element.id }}[{{ element.author }}] {{ element.title }}</div>
<div style="position:absolute;right:0px;"> <div style="position:absolute;right:0px;">
<span style="float: right ;margin-top: -20px;margin-right:5px;" @click="deleteEle(element)"> <span style="float: right ;margin-top: -20px;margin-right:5px;" @click="deleteEle(element)">
<i style="color:#ff4949" class="el-icon-delete"/> <i style="color:#ff4949" class="el-icon-delete" />
</span> </span>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<template> <template>
<el-select ref="dragSelect" v-model="selectVal" v-bind="$attrs" class="drag-select" multiple v-on="$listeners"> <el-select ref="dragSelect" v-model="selectVal" v-bind="$attrs" class="drag-select" multiple v-on="$listeners">
<slot/> <slot />
</el-select> </el-select>
</template> </template>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :ref="id" :action="url" :id="id" class="dropzone"> <div :id="id" :ref="id" :action="url" class="dropzone">
<input type="file" name="file"> <input type="file" name="file">
</div> </div>
</template> </template>

View File

@ -5,17 +5,20 @@
height="80" height="80"
viewBox="0 0 250 250" viewBox="0 0 250 250"
style="fill:#40c9c6; color:#fff;" style="fill:#40c9c6; color:#fff;"
aria-hidden="true"> aria-hidden="true"
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"/> >
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" />
<path <path
d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
fill="currentColor" fill="currentColor"
style="transform-origin: 130px 106px;" style="transform-origin: 130px 106px;"
class="octo-arm"/> class="octo-arm"
/>
<path <path
d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
fill="currentColor" fill="currentColor"
class="octo-body"/> class="octo-body"
/>
</svg> </svg>
</a> </a>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<div :class="{'show':show}" class="header-search"> <div :class="{'show':show}" class="header-search">
<svg-icon class-name="search-icon" icon-class="search" @click="click" /> <svg-icon class-name="search-icon" icon-class="search" @click.stop="click" />
<el-select <el-select
ref="headerSearchSelect" ref="headerSearchSelect"
v-model="search" v-model="search"
@ -10,8 +10,9 @@
remote remote
placeholder="Search" placeholder="Search"
class="header-search-select" class="header-search-select"
@change="change"> @change="change"
<el-option v-for="item in options" :key="item.path" :value="item" :label="item.title.join(' > ')"/> >
<el-option v-for="item in options" :key="item.path" :value="item" :label="item.title.join(' > ')" />
</el-select> </el-select>
</div> </div>
</template> </template>

View File

@ -2,22 +2,22 @@
<div v-show="value" class="vue-image-crop-upload"> <div v-show="value" class="vue-image-crop-upload">
<div class="vicp-wrap"> <div class="vicp-wrap">
<div class="vicp-close" @click="off"> <div class="vicp-close" @click="off">
<i class="vicp-icon4"/> <i class="vicp-icon4" />
</div> </div>
<div v-show="step == 1" class="vicp-step1"> <div v-show="step == 1" class="vicp-step1">
<div class="vicp-drop-area" @dragleave="preventDefault" @dragover="preventDefault" @dragenter="preventDefault" @click="handleClick" @drop="handleChange"> <div class="vicp-drop-area" @dragleave="preventDefault" @dragover="preventDefault" @dragenter="preventDefault" @click="handleClick" @drop="handleChange">
<i v-show="loading != 1" class="vicp-icon1"> <i v-show="loading != 1" class="vicp-icon1">
<i class="vicp-icon1-arrow"/> <i class="vicp-icon1-arrow" />
<i class="vicp-icon1-body"/> <i class="vicp-icon1-body" />
<i class="vicp-icon1-bottom"/> <i class="vicp-icon1-bottom" />
</i> </i>
<span v-show="loading !== 1" class="vicp-hint">{{ lang.hint }}</span> <span v-show="loading !== 1" class="vicp-hint">{{ lang.hint }}</span>
<span v-show="!isSupported" class="vicp-no-supported-hint">{{ lang.noSupported }}</span> <span v-show="!isSupported" class="vicp-no-supported-hint">{{ lang.noSupported }}</span>
<input v-show="false" v-if="step == 1" ref="fileinput" type="file" @change="handleChange"> <input v-show="false" v-if="step == 1" ref="fileinput" type="file" @change="handleChange">
</div> </div>
<div v-show="hasError" class="vicp-error"> <div v-show="hasError" class="vicp-error">
<i class="vicp-icon2"/> {{ errorMsg }} <i class="vicp-icon2" /> {{ errorMsg }}
</div> </div>
<div class="vicp-operate"> <div class="vicp-operate">
<a @click="off" @mousedown="ripple">{{ lang.btn.off }}</a> <a @click="off" @mousedown="ripple">{{ lang.btn.off }}</a>
@ -48,15 +48,16 @@
@mousedown="imgStartMove" @mousedown="imgStartMove"
@mousemove="imgMove" @mousemove="imgMove"
@mouseup="createImg" @mouseup="createImg"
@mouseout="createImg"> @mouseout="createImg"
<div :style="sourceImgShadeStyle" class="vicp-img-shade vicp-img-shade-1"/> >
<div :style="sourceImgShadeStyle" class="vicp-img-shade vicp-img-shade-2"/> <div :style="sourceImgShadeStyle" class="vicp-img-shade vicp-img-shade-1" />
<div :style="sourceImgShadeStyle" class="vicp-img-shade vicp-img-shade-2" />
</div> </div>
<div class="vicp-range"> <div class="vicp-range">
<input :value="scale.range" type="range" step="1" min="0" max="100" @input="zoomChange"> <input :value="scale.range" type="range" step="1" min="0" max="100" @input="zoomChange">
<i class="vicp-icon5" @mousedown="startZoomSub" @mouseout="endZoomSub" @mouseup="endZoomSub"/> <i class="vicp-icon5" @mousedown="startZoomSub" @mouseout="endZoomSub" @mouseup="endZoomSub" />
<i class="vicp-icon6" @mousedown="startZoomAdd" @mouseout="endZoomAdd" @mouseup="endZoomAdd"/> <i class="vicp-icon6" @mousedown="startZoomAdd" @mouseout="endZoomAdd" @mouseup="endZoomAdd" />
</div> </div>
<div v-if="!noRotate" class="vicp-rotate"> <div v-if="!noRotate" class="vicp-rotate">
@ -87,13 +88,13 @@
<div class="vicp-upload"> <div class="vicp-upload">
<span v-show="loading === 1" class="vicp-loading">{{ lang.loading }}</span> <span v-show="loading === 1" class="vicp-loading">{{ lang.loading }}</span>
<div class="vicp-progress-wrap"> <div class="vicp-progress-wrap">
<span v-show="loading === 1" :style="progressStyle" class="vicp-progress"/> <span v-show="loading === 1" :style="progressStyle" class="vicp-progress" />
</div> </div>
<div v-show="hasError" class="vicp-error"> <div v-show="hasError" class="vicp-error">
<i class="vicp-icon2"/> {{ errorMsg }} <i class="vicp-icon2" /> {{ errorMsg }}
</div> </div>
<div v-show="loading === 2" class="vicp-success"> <div v-show="loading === 2" class="vicp-success">
<i class="vicp-icon3"/> {{ lang.success }} <i class="vicp-icon3" /> {{ lang.success }}
</div> </div>
</div> </div>
<div class="vicp-operate"> <div class="vicp-operate">
@ -101,7 +102,7 @@
<a @click="off" @mousedown="ripple">{{ lang.btn.close }}</a> <a @click="off" @mousedown="ripple">{{ lang.btn.close }}</a>
</div> </div>
</div> </div>
<canvas v-show="false" ref="canvas" :width="width" :height="height"/> <canvas v-show="false" ref="canvas" :width="width" :height="height" />
</div> </div>
</div> </div>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="json-editor"> <div class="json-editor">
<textarea ref="textarea"/> <textarea ref="textarea" />
</div> </div>
</template> </template>

View File

@ -6,7 +6,8 @@
<draggable <draggable
:list="list" :list="list"
:options="options" :options="options"
class="board-column-content"> class="board-column-content"
>
<div v-for="element in list" :key="element.id" class="board-item"> <div v-for="element in list" :key="element.id" class="board-item">
{{ element.name }} {{ element.id }} {{ element.name }} {{ element.id }}
</div> </div>

View File

@ -4,9 +4,15 @@
<svg-icon class-name="international-icon" icon-class="language" /> <svg-icon class-name="international-icon" icon-class="language" />
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item :disabled="language==='zh'" command="zh">中文</el-dropdown-item> <el-dropdown-item :disabled="language==='zh'" command="zh">
<el-dropdown-item :disabled="language==='en'" command="en">English</el-dropdown-item> 中文
<el-dropdown-item :disabled="language==='es'" command="es">Español</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :disabled="language==='en'" command="en">
English
</el-dropdown-item>
<el-dropdown-item :disabled="language==='es'" command="es">
Español
</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>

View File

@ -1,12 +1,12 @@
<template> <template>
<div :class="computedClasses" class="material-input__component"> <div :class="computedClasses" class="material-input__component">
<div :class="{iconClass:icon}"> <div :class="{iconClass:icon}">
<i v-if="icon" :class="['el-icon-' + icon]" class="el-input__icon material-input__icon"/> <i v-if="icon" :class="['el-icon-' + icon]" class="el-input__icon material-input__icon" />
<input <input
v-if="type === 'email'" v-if="type === 'email'"
v-model="currentValue"
:name="name" :name="name"
:placeholder="fillPlaceHolder" :placeholder="fillPlaceHolder"
v-model="currentValue"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:autoComplete="autoComplete" :autoComplete="autoComplete"
@ -15,12 +15,13 @@
class="material-input" class="material-input"
@focus="handleMdFocus" @focus="handleMdFocus"
@blur="handleMdBlur" @blur="handleMdBlur"
@input="handleModelInput"> @input="handleModelInput"
>
<input <input
v-if="type === 'url'" v-if="type === 'url'"
v-model="currentValue"
:name="name" :name="name"
:placeholder="fillPlaceHolder" :placeholder="fillPlaceHolder"
v-model="currentValue"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:autoComplete="autoComplete" :autoComplete="autoComplete"
@ -29,12 +30,13 @@
class="material-input" class="material-input"
@focus="handleMdFocus" @focus="handleMdFocus"
@blur="handleMdBlur" @blur="handleMdBlur"
@input="handleModelInput"> @input="handleModelInput"
>
<input <input
v-if="type === 'number'" v-if="type === 'number'"
v-model="currentValue"
:name="name" :name="name"
:placeholder="fillPlaceHolder" :placeholder="fillPlaceHolder"
v-model="currentValue"
:step="step" :step="step"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
@ -48,12 +50,13 @@
class="material-input" class="material-input"
@focus="handleMdFocus" @focus="handleMdFocus"
@blur="handleMdBlur" @blur="handleMdBlur"
@input="handleModelInput"> @input="handleModelInput"
>
<input <input
v-if="type === 'password'" v-if="type === 'password'"
v-model="currentValue"
:name="name" :name="name"
:placeholder="fillPlaceHolder" :placeholder="fillPlaceHolder"
v-model="currentValue"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:autoComplete="autoComplete" :autoComplete="autoComplete"
@ -64,12 +67,13 @@
class="material-input" class="material-input"
@focus="handleMdFocus" @focus="handleMdFocus"
@blur="handleMdBlur" @blur="handleMdBlur"
@input="handleModelInput"> @input="handleModelInput"
>
<input <input
v-if="type === 'tel'" v-if="type === 'tel'"
v-model="currentValue"
:name="name" :name="name"
:placeholder="fillPlaceHolder" :placeholder="fillPlaceHolder"
v-model="currentValue"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:autoComplete="autoComplete" :autoComplete="autoComplete"
@ -78,12 +82,13 @@
class="material-input" class="material-input"
@focus="handleMdFocus" @focus="handleMdFocus"
@blur="handleMdBlur" @blur="handleMdBlur"
@input="handleModelInput"> @input="handleModelInput"
>
<input <input
v-if="type === 'text'" v-if="type === 'text'"
v-model="currentValue"
:name="name" :name="name"
:placeholder="fillPlaceHolder" :placeholder="fillPlaceHolder"
v-model="currentValue"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:autoComplete="autoComplete" :autoComplete="autoComplete"
@ -94,10 +99,11 @@
class="material-input" class="material-input"
@focus="handleMdFocus" @focus="handleMdFocus"
@blur="handleMdBlur" @blur="handleMdBlur"
@input="handleModelInput"> @input="handleModelInput"
<span class="material-input-bar"/> >
<span class="material-input-bar" />
<label class="material-label"> <label class="material-label">
<slot/> <slot />
</label> </label>
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :id="id"/> <div :id="id" />
</template> </template>
<script> <script>

View File

@ -9,7 +9,8 @@
:total="total" :total="total"
v-bind="$attrs" v-bind="$attrs"
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange"/> @current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>

View File

@ -2,7 +2,7 @@
<div :style="{zIndex:zIndex,height:height,width:width}" class="pan-item"> <div :style="{zIndex:zIndex,height:height,width:width}" class="pan-item">
<div class="pan-info"> <div class="pan-info">
<div class="pan-info-roles-container"> <div class="pan-info-roles-container">
<slot/> <slot />
</div> </div>
</div> </div>
<img :src="image" class="pan-thumb"> <img :src="image" class="pan-thumb">

View File

@ -4,8 +4,9 @@
<svg-icon class-name="size-icon" icon-class="size" /> <svg-icon class-name="size-icon" icon-class="size" />
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size===item.value" :command="item.value">{{ <el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size===item.value" :command="item.value">
item.label }}</el-dropdown-item> {{ item.label }}
</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>

View File

@ -1,6 +1,9 @@
<template> <template>
<div :style="{height:height+'px',zIndex:zIndex}"> <div :style="{height:height+'px',zIndex:zIndex}">
<div :class="className" :style="{top:stickyTop+'px',zIndex:zIndex,position:position,width:width,height:height+'px'}"> <div
:class="className"
:style="{top:(isSticky ? stickyTop +'px' : ''),zIndex:zIndex,position:position,width:width,height:height+'px'}"
>
<slot> <slot>
<div>sticky</div> <div>sticky</div>
</slot> </slot>

View File

@ -1,6 +1,6 @@
<template> <template>
<svg :class="svgClass" aria-hidden="true" v-on="$listeners"> <svg :class="svgClass" aria-hidden="true" v-on="$listeners">
<use :xlink:href="iconName"/> <use :xlink:href="iconName" />
</svg> </svg>
</template> </template>

View File

@ -1,8 +1,8 @@
<template> <template>
<a :class="className" class="link--mallki" href="#"> <a :class="className" class="link--mallki" href="#">
{{ text }} {{ text }}
<span :data-letters="text"/> <span :data-letters="text" />
<span :data-letters="text"/> <span :data-letters="text" />
</a> </a>
</template> </template>

View File

@ -2,7 +2,8 @@
<el-color-picker <el-color-picker
v-model="theme" v-model="theme"
class="theme-picker" class="theme-picker"
popper-class="theme-picker-dropdown"/> popper-class="theme-picker-dropdown"
/>
</template> </template>
<script> <script>

View File

@ -1,6 +1,7 @@
<template> <template>
<div class="upload-container"> <div class="upload-container">
<el-button :style="{background:color,borderColor:color}" icon="el-icon-upload" size="mini" type="primary" @click=" dialogVisible=true">上传图片 <el-button :style="{background:color,borderColor:color}" icon="el-icon-upload" size="mini" type="primary" @click=" dialogVisible=true">
上传图片
</el-button> </el-button>
<el-dialog :visible.sync="dialogVisible"> <el-dialog :visible.sync="dialogVisible">
<el-upload <el-upload
@ -12,7 +13,8 @@
:before-upload="beforeUpload" :before-upload="beforeUpload"
class="editor-slide-upload" class="editor-slide-upload"
action="https://httpbin.org/post" action="https://httpbin.org/post"
list-type="picture-card"> list-type="picture-card"
>
<el-button size="small" type="primary">点击上传</el-button> <el-button size="small" type="primary">点击上传</el-button>
</el-upload> </el-upload>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>

View File

@ -1,8 +1,8 @@
<template> <template>
<div :class="{fullscreen:fullscreen}" class="tinymce-container editor-container"> <div :class="{fullscreen:fullscreen}" class="tinymce-container editor-container">
<textarea :id="tinymceId" class="tinymce-textarea"/> <textarea :id="tinymceId" class="tinymce-textarea" />
<div class="editor-custom-btn-container"> <div class="editor-custom-btn-container">
<editorImage color="#1890ff" class="editor-upload-btn" @successCBK="imageSuccessCBK"/> <editorImage color="#1890ff" class="editor-upload-btn" @successCBK="imageSuccessCBK" />
</div> </div>
</div> </div>
</template> </template>

View File

@ -1,18 +1,19 @@
<template> <template>
<el-table :data="tableData" :row-style="showRow" v-bind="$attrs" v-on="$listeners" > <el-table :data="tableData" :row-style="showRow" v-bind="$attrs" v-on="$listeners">
<slot name="selection" /> <slot name="selection" />
<slot name="pre-column" /> <slot name="pre-column" />
<el-table-column <el-table-column
v-for="item in columns" v-for="item in columns"
:label="item.label"
:key="item.key" :key="item.key"
:label="item.label"
:width="item.width" :width="item.width"
:align="item.align||'center'" :align="item.align||'center'"
:header-align="item.headerAlign"> :header-align="item.headerAlign"
>
<template slot-scope="scope"> <template slot-scope="scope">
<slot :scope="scope" :name="item.key"> <slot :scope="scope" :name="item.key">
<template v-if="item.expand"> <template v-if="item.expand">
<span :style="{'padding-left':+scope.row._level*indent + 'px'} "/> <span :style="{'padding-left':+scope.row._level*indent + 'px'} " />
<span v-show="showSperadIcon(scope.row)" class="tree-ctrl" @click="toggleExpanded(scope.$index)"> <span v-show="showSperadIcon(scope.row)" class="tree-ctrl" @click="toggleExpanded(scope.$index)">
<i v-if="!scope.row._expand" class="el-icon-plus" /> <i v-if="!scope.row._expand" class="el-icon-plus" />
<i v-else class="el-icon-minus" /> <i v-else class="el-icon-minus" />
@ -21,15 +22,17 @@
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<el-checkbox <el-checkbox
v-if="scope.row[defaultChildren]&&scope.row[defaultChildren].length>0" v-if="scope.row[defaultChildren]&&scope.row[defaultChildren].length>0"
v-model="scope.row._select"
:style="{'padding-left':+scope.row._level*indent + 'px'} " :style="{'padding-left':+scope.row._level*indent + 'px'} "
:indeterminate="scope.row._select" :indeterminate="scope.row._select"
v-model="scope.row._select" @change="handleCheckAllChange(scope.row)"
@change="handleCheckAllChange(scope.row)" /> />
<el-checkbox <el-checkbox
v-else v-else
:style="{'padding-left':+scope.row._level*indent + 'px'} "
v-model="scope.row._select" v-model="scope.row._select"
@change="handleCheckAllChange(scope.row)" /> :style="{'padding-left':+scope.row._level*indent + 'px'} "
@change="handleCheckAllChange(scope.row)"
/>
</template> </template>
{{ scope.row[item.key] }} {{ scope.row[item.key] }}
</slot> </slot>

View File

@ -0,0 +1,220 @@
- [Enlgish](#Brief)
# 中文
## 写在前面
此组件仅提供一个创建 `TreeTable` 的解决思路。它基于`element-ui`的 table 组件实现,通过`el-table`的`row-style`方法,在里面判断元素是否需要隐藏或者显示,从而实现`TreeTable`的展开与收起。
并且本组件充分利用 `vue` 插槽的特性来方便用户自定义。
`evel.js` 里面,`addAttrs` 方法会给数据添加几个属性,`treeTotable` 会对数组扁平化。这些操作都不会破坏源数据,只是会新增属性。
## Props 说明
| Attribute | Description | Type | Default |
| :--------------: | :--------------------------------- | :-----: | :------: |
| data | 原始展示数据 | Array | [] |
| columns | 列属性 | Array | [] |
| defaultExpandAll | 默认是否全部展开 | Boolean | false |
| defaultChildren | 指定子树为节点对象的某个属性值 | String | children | |
| indent | 相邻级节点间的水平缩进,单位为像素 | Number | 50 |
> 任何 `el-table` 的属性都支持,例如`border`、`fit`、`size`或者`@select`、`@cell-click`等方法。详情属性见`el-table`文档。
---
### 代码示例
```html
<tree-table :data="data" :columns="columns" border>
```
#### data(**必填**)
```js
const data = [
{
name:'1'
children: [
{
name: '1-1'
},
{
name: '1-2'
}
]
},
{
name: `2`
}
]
```
#### columns(**必填**)
- label: 显示在表头的文字
- key: 对应 data 的 key。treeTable 将显示相应的 value
- expand: `true` or `false`。若为 true则在该列显示展开收起图标
- checkbox: `true` or `false`。若为 true则在该列显示`checkbox`
- width: 每列的宽度,为一个数字(可选)。例如`200`
- align: 对齐方式 `left/center/right`
- header-align: 表头对齐方式 `left/center/right`
```javascript
const columns = [
{
label: 'Checkbox',
checkbox: true
},
{
label: '',
key: 'id',
expand: true
},
{
label: 'Event',
key: 'event',
width: 200,
align: 'left'
},
{
label: 'Scope',
key: 'scope'
}
]
```
> 树表组件将会根据 columns 的 key 属性生成具名插槽,如果你需要对列数据进行自定义,通过插槽即可实现
```html
<template slot="your key" slot-scope="{scope}">
<el-tag>level: {{ scope.row._level }}</el-tag>
<el-tag>expand: {{ scope.row._expand }}</el-tag>
<el-tag>select: {{ scope.row._select }}</el-tag>
</template>
```
## Events
目前提供了几个方法,不过只是`beta`版本,之后很可能会修改。
```js
this.$refs.TreeTable.addChild(row, data) //添加子元素
this.$refs.TreeTable.addBrother(row, data) //添加兄弟元素
this.$refs.TreeTable.delete(row) //删除该元素
```
## 其他
如果有其他的需求,请参考[el-table](http://element-cn.eleme.io/#/en-US/component/table)的 api 自行修改 index.vue
# English
## Brief
This component only provides a solution for creating `TreeTable`. It is based on the `element-ui` table component. It uses the `row-style` method of `el-table` to determine whether the element needs to be hidden or displayed.
And this component makes full use of the features of the `vue` slot to make it user-friendly.
In `evel.js`, the `addAttrs` method adds several properties to the data, and `treeTotable` flattens the array. None of these operations will destroy the source data, just add properties.
## Props
| Attribute | Description | Type | Default |
| :--------------: | :----------------------------------------------------------- | :-----: | :------: |
| data | original display data | Array | [] |
| columns | column attribute | Array | [] |
| defaultExpandAll | whether to expand all nodes by default | Boolean | false |
| defaultChildren | specify which node object is used as the node's subtree | String | children | |
| indent | horizontal indentation of nodes in adjacent levels in pixels | Number | 50 |
> Any of the `el-table` properties are supported, such as `border`, `fit`, `size` or `@select`, `@cell-click`. See the ʻel-table` documentation for details.
---
### Example
```html
<tree-table :data="data" :columns="columns" border>
```
#### data(**Required**)
```js
const data = [
{
name:'1'
children: [
{
name: '1-1'
},
{
name: '1-2'
}
]
},
{
name: `2`
}
]
```
#### columns(**Required**)
- label: text displayed in the header
- key: data.key will show in column
- expand: `true` or `false`
- checkbox: `true` or `false`
- width: column width 。such as `200`
- align: alignment `left/center/right`
- header-align: alignment of the table header `left/center/right`
```javascript
const columns = [
{
label: 'Checkbox',
checkbox: true
},
{
label: '',
key: 'id',
expand: true
},
{
label: 'Event',
key: 'event',
width: 200,
align: 'left'
},
{
label: 'Scope',
key: 'scope'
}
]
```
> The tree table component will generate a named slot based on the key property of columns. If you need to customize the column data, you can do it through the slot.
```html
<template slot="your key" slot-scope="{scope}">
<el-tag>level: {{ scope.row._level }}</el-tag>
<el-tag>expand: {{ scope.row._expand }}</el-tag>
<el-tag>select: {{ scope.row._select }}</el-tag>
</template>
```
## Events
Several methods are currently available, but only the `beta` version, which is likely to be modified later.
```js
this.$refs.TreeTable.addChild(row, data) //Add child elements
this.$refs.TreeTable.addBrother(row, data) //Add a sibling element
this.$refs.TreeTable.delete(row) //Delete the element
```
## Other
If you have other requirements, please refer to the [el-table](http://element-cn.eleme.io/#/en-US/component/table) api to modify the index.vue

View File

@ -7,15 +7,16 @@
:on-success="handleImageSuccess" :on-success="handleImageSuccess"
class="image-uploader" class="image-uploader"
drag drag
action="https://httpbin.org/post"> action="https://httpbin.org/post"
<i class="el-icon-upload"/> >
<i class="el-icon-upload" />
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
</el-upload> </el-upload>
<div class="image-preview"> <div class="image-preview">
<div v-show="imageUrl.length>1" class="image-preview-wrapper"> <div v-show="imageUrl.length>1" class="image-preview-wrapper">
<img :src="imageUrl+'?imageView2/1/w/200/h/200'"> <img :src="imageUrl+'?imageView2/1/w/200/h/200'">
<div class="image-preview-action"> <div class="image-preview-action">
<i class="el-icon-delete" @click="rmImage"/> <i class="el-icon-delete" @click="rmImage" />
</div> </div>
</div> </div>
</div> </div>

View File

@ -7,15 +7,16 @@
:on-success="handleImageSuccess" :on-success="handleImageSuccess"
class="image-uploader" class="image-uploader"
drag drag
action="https://httpbin.org/post"> action="https://httpbin.org/post"
<i class="el-icon-upload"/> >
<i class="el-icon-upload" />
<div class="el-upload__text">Drag或<em>点击上传</em></div> <div class="el-upload__text">Drag或<em>点击上传</em></div>
</el-upload> </el-upload>
<div v-show="imageUrl.length>0" class="image-preview"> <div v-show="imageUrl.length>0" class="image-preview">
<div v-show="imageUrl.length>1" class="image-preview-wrapper"> <div v-show="imageUrl.length>1" class="image-preview-wrapper">
<img :src="imageUrl"> <img :src="imageUrl">
<div class="image-preview-action"> <div class="image-preview-action">
<i class="el-icon-delete" @click="rmImage"/> <i class="el-icon-delete" @click="rmImage" />
</div> </div>
</div> </div>
</div> </div>

View File

@ -7,15 +7,16 @@
:on-success="handleImageSuccess" :on-success="handleImageSuccess"
class="image-uploader" class="image-uploader"
drag drag
action="https://httpbin.org/post"> action="https://httpbin.org/post"
<i class="el-icon-upload"/> >
<i class="el-icon-upload" />
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
</el-upload> </el-upload>
<div class="image-preview image-app-preview"> <div class="image-preview image-app-preview">
<div v-show="imageUrl.length>1" class="image-preview-wrapper"> <div v-show="imageUrl.length>1" class="image-preview-wrapper">
<img :src="imageUrl"> <img :src="imageUrl">
<div class="image-preview-action"> <div class="image-preview-action">
<i class="el-icon-delete" @click="rmImage"/> <i class="el-icon-delete" @click="rmImage" />
</div> </div>
</div> </div>
</div> </div>
@ -23,7 +24,7 @@
<div v-show="imageUrl.length>1" class="image-preview-wrapper"> <div v-show="imageUrl.length>1" class="image-preview-wrapper">
<img :src="imageUrl"> <img :src="imageUrl">
<div class="image-preview-action"> <div class="image-preview-action">
<i class="el-icon-delete" @click="rmImage"/> <i class="el-icon-delete" @click="rmImage" />
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,4 +1,4 @@
export default{ export default {
bind(el, binding, vnode) { bind(el, binding, vnode) {
const dialogHeaderEl = el.querySelector('.el-dialog__header') const dialogHeaderEl = el.querySelector('.el-dialog__header')
const dragDom = el.querySelector('.el-dialog') const dragDom = el.querySelector('.el-dialog')

View File

@ -1,7 +1,7 @@
import store from '@/store' import store from '@/store'
export default{ export default {
inserted(el, binding, vnode) { inserted(el, binding, vnode) {
const { value } = binding const { value } = binding
const roles = store.getters && store.getters.roles const roles = store.getters && store.getters.roles

View File

@ -57,6 +57,7 @@ export default {
excel: 'Excel', excel: 'Excel',
exportExcel: 'Export Excel', exportExcel: 'Export Excel',
selectExcel: 'Export Selected', selectExcel: 'Export Selected',
mergeHeader: 'Merge Header',
uploadExcel: 'Upload Excel', uploadExcel: 'Upload Excel',
zip: 'Zip', zip: 'Zip',
pdf: 'PDF', pdf: 'PDF',

View File

@ -57,6 +57,7 @@ export default {
excel: 'Excel', excel: 'Excel',
exportExcel: 'Exportar a Excel', exportExcel: 'Exportar a Excel',
selectExcel: 'Export seleccionado', selectExcel: 'Export seleccionado',
mergeHeader: 'Merge Header',
uploadExcel: 'Subir Excel', uploadExcel: 'Subir Excel',
zip: 'Zip', zip: 'Zip',
pdf: 'PDF', pdf: 'PDF',

View File

@ -55,9 +55,10 @@ export default {
page404: '404', page404: '404',
errorLog: '错误日志', errorLog: '错误日志',
excel: 'Excel', excel: 'Excel',
exportExcel: 'Export Excel', exportExcel: '导出 Excel',
selectExcel: 'Export Selected', selectExcel: '导出 已选择项',
uploadExcel: 'Upload Excel', mergeHeader: '导出 多级表头',
uploadExcel: '上传 Excel',
zip: 'Zip', zip: 'Zip',
pdf: 'PDF', pdf: 'PDF',
exportZip: 'Export Zip', exportZip: 'Export Zip',

View File

@ -279,6 +279,12 @@ export const asyncRoutes = [
name: 'SelectExcel', name: 'SelectExcel',
meta: { title: 'selectExcel' } meta: { title: 'selectExcel' }
}, },
{
path: 'export-merge-header',
component: () => import('@/views/excel/mergeHeader'),
name: 'MergeHeader',
meta: { title: 'mergeHeader' }
},
{ {
path: 'upload-excel', path: 'upload-excel',
component: () => import('@/views/excel/uploadExcel'), component: () => import('@/views/excel/uploadExcel'),

View File

@ -145,9 +145,11 @@ export function export_table_to_excel(id) {
} }
export function export_json_to_excel({ export function export_json_to_excel({
multiHeader,
header, header,
data, data,
filename, filename,
merges,
autoWidth = true, autoWidth = true,
bookType= 'xlsx' bookType= 'xlsx'
} = {}) { } = {}) {
@ -155,10 +157,22 @@ export function export_json_to_excel({
filename = filename || 'excel-list' filename = filename || 'excel-list'
data = [...data] data = [...data]
data.unshift(header); data.unshift(header);
for (let i = multiHeader.length-1; i > -1; i--) {
data.unshift(multiHeader[i])
}
var ws_name = "SheetJS"; var ws_name = "SheetJS";
var wb = new Workbook(), var wb = new Workbook(),
ws = sheet_from_array_of_arrays(data); ws = sheet_from_array_of_arrays(data);
if (merges.length > 0) {
if (!ws['!merges']) ws['!merges'] = [];
merges.forEach(item => {
ws['!merges'].push(XLSX.utils.decode_range(item))
})
}
if (autoWidth) { if (autoWidth) {
/*设置worksheet每列的最大宽度*/ /*设置worksheet每列的最大宽度*/
const colWidth = data.map(row => row.map(val => { const colWidth = data.map(row => row.map(val => {

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="chart-container"> <div class="chart-container">
<chart height="100%" width="100%"/> <chart height="100%" width="100%" />
</div> </div>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="chart-container"> <div class="chart-container">
<chart height="100%" width="100%"/> <chart height="100%" width="100%" />
</div> </div>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="chart-container"> <div class="chart-container">
<chart height="100%" width="100%"/> <chart height="100%" width="100%" />
</div> </div>
</template> </template>

View File

@ -2,11 +2,11 @@
<div class="app-container"> <div class="app-container">
<el-tabs v-model="activeName"> <el-tabs v-model="activeName">
<el-tab-pane label="use clipboard directly" name="directly"> <el-tab-pane label="use clipboard directly" name="directly">
<el-input v-model="inputData" placeholder="Please input" style="width:400px;max-width:100%;"/> <el-input v-model="inputData" placeholder="Please input" style="width:400px;max-width:100%;" />
<el-button type="primary" icon="document" @click="handleCopy(inputData,$event)">copy</el-button> <el-button type="primary" icon="document" @click="handleCopy(inputData,$event)">copy</el-button>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="use clipboard by v-directive" name="v-directive"> <el-tab-pane label="use clipboard by v-directive" name="v-directive">
<el-input v-model="inputData" placeholder="Please input" style="width:400px;max-width:100%;"/> <el-input v-model="inputData" placeholder="Please input" style="width:400px;max-width:100%;" />
<el-button v-clipboard:copy="inputData" v-clipboard:success="clipboardSuccess" type="primary" icon="document">copy</el-button> <el-button v-clipboard:copy="inputData" v-clipboard:success="clipboardSuccess" type="primary" icon="document">copy</el-button>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>

View File

@ -5,20 +5,22 @@
{{ $t('components.imageUploadTips') }} {{ $t('components.imageUploadTips') }}
</code> </code>
<pan-thumb :image="image"/> <pan-thumb :image="image" />
<el-button type="primary" icon="upload" style="position: absolute;bottom: 15px;margin-left: 40px;" @click="imagecropperShow=true">Change Avatar <el-button type="primary" icon="upload" style="position: absolute;bottom: 15px;margin-left: 40px;" @click="imagecropperShow=true">
Change Avatar
</el-button> </el-button>
<image-cropper <image-cropper
v-show="imagecropperShow" v-show="imagecropperShow"
:key="imagecropperKey"
:width="300" :width="300"
:height="300" :height="300"
:key="imagecropperKey"
url="https://httpbin.org/post" url="https://httpbin.org/post"
lang-type="en" lang-type="en"
@close="close" @close="close"
@crop-upload-success="cropSuccess"/> @crop-upload-success="cropSuccess"
/>
</div> </div>
</template> </template>

View File

@ -116,7 +116,7 @@
<!--可自定义按钮的样式show/hide临界点返回的位置 --> <!--可自定义按钮的样式show/hide临界点返回的位置 -->
<!--如需文字提示可在外部添加element的<el-tooltip></el-tooltip> --> <!--如需文字提示可在外部添加element的<el-tooltip></el-tooltip> -->
<el-tooltip placement="top" content="tooltip"> <el-tooltip placement="top" content="tooltip">
<back-to-top :custom-style="myBackToTopStyle" :visibility-height="300" :back-position="50" transition-name="fade"/> <back-to-top :custom-style="myBackToTopStyle" :visibility-height="300" :back-position="50" transition-name="fade" />
</el-tooltip> </el-tooltip>
</div> </div>
</template> </template>

View File

@ -13,36 +13,39 @@
:prefix="_prefix" :prefix="_prefix"
:suffix="_suffix" :suffix="_suffix"
:autoplay="false" :autoplay="false"
class="example"/> class="example"
/>
<div style="margin-left: 25%;margin-top: 40px;"> <div style="margin-left: 25%;margin-top: 40px;">
<label class="label" for="startValInput">startVal: <label class="label" for="startValInput">startVal:
<input v-model.number="setStartVal" type="number" name="startValInput" > <input v-model.number="setStartVal" type="number" name="startValInput">
</label> </label>
<label class="label" for="endValInput">endVal: <label class="label" for="endValInput">endVal:
<input v-model.number="setEndVal" type="number" name="endVaInput" > <input v-model.number="setEndVal" type="number" name="endVaInput">
</label> </label>
<label class="label" for="durationInput">duration: <label class="label" for="durationInput">duration:
<input v-model.number="setDuration" type="number" name="durationInput" > <input v-model.number="setDuration" type="number" name="durationInput">
</label> </label>
<div class="startBtn example-btn" @click="start">开始</div> <div class="startBtn example-btn" @click="start">开始</div>
<div class="pause-resume-btn example-btn" @click="pauseResume">暂停/恢复</div> <div class="pause-resume-btn example-btn" @click="pauseResume">暂停/恢复</div>
<br> <br>
<label class="label" for="decimalsInput">decimals: <label class="label" for="decimalsInput">decimals:
<input v-model.number="setDecimals" type="number" name="decimalsInput" > <input v-model.number="setDecimals" type="number" name="decimalsInput">
</label> </label>
<label class="label" for="separatorInput">separator: <label class="label" for="separatorInput">separator:
<input v-model="setSeparator" name="separatorInput" > <input v-model="setSeparator" name="separatorInput">
</label> </label>
<label class="label" for="prefixInput">prefix: <label class="label" for="prefixInput">prefix:
<input v-model="setPrefix" name="prefixInput" > <input v-model="setPrefix" name="prefixInput">
</label> </label>
<label class="label" for="suffixInput">suffix: <label class="label" for="suffixInput">suffix:
<input v-model="setSuffix" name="suffixInput" > <input v-model="setSuffix" name="suffixInput">
</label> </label>
</div> </div>
<code>&lt;count-to :start-val=&#x27;{{ _startVal }}&#x27; :end-val=&#x27;{{ _endVal }}&#x27; :duration=&#x27;{{ _duration }}&#x27; <code>
&lt;count-to :start-val=&#x27;{{ _startVal }}&#x27; :end-val=&#x27;{{ _endVal }}&#x27; :duration=&#x27;{{ _duration }}&#x27;
:decimals=&#x27;{{ _decimals }}&#x27; :separator=&#x27;{{ _separator }}&#x27; :prefix=&#x27;{{ _prefix }}&#x27; :suffix=&#x27;{{ _suffix }}&#x27; :decimals=&#x27;{{ _decimals }}&#x27; :separator=&#x27;{{ _separator }}&#x27; :prefix=&#x27;{{ _prefix }}&#x27; :suffix=&#x27;{{ _suffix }}&#x27;
:autoplay=false&gt;</code> :autoplay=false&gt;
</code>
</div> </div>
</template> </template>

View File

@ -4,7 +4,7 @@
<a href="https://github.com/SortableJS/Vue.Draggable" target="_blank">Vue.Draggable</a> <a href="https://github.com/SortableJS/Vue.Draggable" target="_blank">Vue.Draggable</a>
</code> </code>
<div class="editor-container"> <div class="editor-container">
<dnd-list :list1="list1" :list2="list2" list1-title="List" list2-title="Article pool"/> <dnd-list :list1="list1" :list2="list2" list1-title="List" list2-title="Article pool" />
</div> </div>
</div> </div>
</template> </template>

View File

@ -3,12 +3,12 @@
<el-button type="primary" @click="dialogTableVisible = true">open a Drag Dialog</el-button> <el-button type="primary" @click="dialogTableVisible = true">open a Drag Dialog</el-button>
<el-dialog v-el-drag-dialog :visible.sync="dialogTableVisible" title="Shipping address" @dragDialog="handleDrag"> <el-dialog v-el-drag-dialog :visible.sync="dialogTableVisible" title="Shipping address" @dragDialog="handleDrag">
<el-select ref="select" v-model="value" placeholder="请选择"> <el-select ref="select" v-model="value" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
<el-table :data="gridData"> <el-table :data="gridData">
<el-table-column property="date" label="Date" width="150"/> <el-table-column property="date" label="Date" width="150" />
<el-table-column property="name" label="Name" width="200"/> <el-table-column property="name" label="Name" width="200" />
<el-table-column property="address" label="Address"/> <el-table-column property="address" label="Address" />
</el-table> </el-table>
</el-dialog> </el-dialog>
</div> </div>

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="components-container board"> <div class="components-container board">
<Kanban :key="1" :list="list1" :options="options" class="kanban todo" header-text="Todo"/> <Kanban :key="1" :list="list1" :options="options" class="kanban todo" header-text="Todo" />
<Kanban :key="2" :list="list2" :options="options" class="kanban working" header-text="Working"/> <Kanban :key="2" :list="list2" :options="options" class="kanban working" header-text="Working" />
<Kanban :key="3" :list="list3" :options="options" class="kanban done" header-text="Done"/> <Kanban :key="3" :list="list3" :options="options" class="kanban done" header-text="Done" />
</div> </div>
</template> </template>
<script> <script>

View File

@ -2,7 +2,7 @@
<div class="components-container"> <div class="components-container">
<el-drag-select v-model="value" style="width:500px;" multiple placeholder="请选择"> <el-drag-select v-model="value" style="width:500px;" multiple placeholder="请选择">
<el-option v-for="item in options" :label="item.label" :value="item.value" :key="item.value" /> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-drag-select> </el-drag-select>
<div style="margin-top:30px;"> <div style="margin-top:30px;">

View File

@ -5,7 +5,7 @@
{{ $t('components.dropzoneTips') }} {{ $t('components.dropzoneTips') }}
</code> </code>
<div class="editor-container"> <div class="editor-container">
<dropzone id="myVueDropzone" url="https://httpbin.org/post" @dropzone-removedFile="dropzoneR" @dropzone-success="dropzoneS"/> <dropzone id="myVueDropzone" url="https://httpbin.org/post" @dropzone-removedFile="dropzoneR" @dropzone-success="dropzoneS" />
</div> </div>
</div> </div>
</template> </template>

View File

@ -2,7 +2,7 @@
<div class="components-container"> <div class="components-container">
<code>JsonEditor is base on <a href="https://github.com/codemirror/CodeMirror" target="_blank">CodeMirrorr</a> , lint base on json-lint </code> <code>JsonEditor is base on <a href="https://github.com/codemirror/CodeMirror" target="_blank">CodeMirrorr</a> , lint base on json-lint </code>
<div class="editor-container"> <div class="editor-container">
<json-editor ref="jsonEditor" v-model="value"/> <json-editor ref="jsonEditor" v-model="value" />
</div> </div>
</div> </div>
</template> </template>

View File

@ -9,12 +9,12 @@
<div class="editor-container"> <div class="editor-container">
<el-tag class="tag-title">Basic:</el-tag> <el-tag class="tag-title">Basic:</el-tag>
<markdown-editor v-model="content" height="300px"/> <markdown-editor v-model="content" height="300px" />
</div> </div>
<div class="editor-container"> <div class="editor-container">
<el-tag class="tag-title">Markdown Mode:</el-tag> <el-tag class="tag-title">Markdown Mode:</el-tag>
<markdown-editor ref="markdownEditor" v-model="content" :options="{hideModeSwitch:true,previewStyle:'tab'}" height="200px"/> <markdown-editor ref="markdownEditor" v-model="content" :options="{hideModeSwitch:true,previewStyle:'tab'}" height="200px" />
</div> </div>
<div class="editor-container"> <div class="editor-container">
@ -28,12 +28,13 @@
<div class="editor-container"> <div class="editor-container">
<el-tag class="tag-title">I18n:</el-tag> <el-tag class="tag-title">I18n:</el-tag>
<el-alert :closable="false" title="You can change the language of the admin system to see the effect" type="success"/> <el-alert :closable="false" title="You can change the language of the admin system to see the effect" type="success" />
<markdown-editor v-model="content" :language="language" height="300px"/> <markdown-editor v-model="content" :language="language" height="300px" />
</div> </div>
<el-button style="margin-top:80px;" type="primary" icon="el-icon-document" @click="getHtml">Get HTML</el-button> <el-button style="margin-top:80px;" type="primary" icon="el-icon-document" @click="getHtml">Get HTML</el-button>
<div v-html="html"/> <!-- eslint-disable-next-line -->
<div v-html="html" />
</div> </div>
</template> </template>

View File

@ -74,7 +74,7 @@
<span>hover text</span> <span>hover text</span>
</div> </div>
<div class="component-item"> <div class="component-item">
<mallki class-name="mallki-text" text="vue-element-admin"/> <mallki class-name="mallki-text" text="vue-element-admin" />
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
@ -87,12 +87,11 @@
<span>Share</span> <span>Share</span>
</div> </div>
<div class="component-item" style="height:420px;"> <div class="component-item" style="height:420px;">
<dropdown-menu :items="articleList" style="margin:0 auto;" title="系列文章"/> <dropdown-menu :items="articleList" style="margin:0 auto;" title="系列文章" />
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
</template> </template>

View File

@ -7,15 +7,15 @@
</code> </code>
<split-pane split="vertical" @resize="resize"> <split-pane split="vertical" @resize="resize">
<template slot="paneL"> <template slot="paneL">
<div class="left-container"/> <div class="left-container" />
</template> </template>
<template slot="paneR"> <template slot="paneR">
<split-pane split="horizontal"> <split-pane split="horizontal">
<template slot="paneL"> <template slot="paneL">
<div class="top-container"/> <div class="top-container" />
</template> </template>
<template slot="paneR"> <template slot="paneR">
<div class="bottom-container"/> <div class="bottom-container" />
</template> </template>
</split-pane> </split-pane>
</template> </template>

View File

@ -3,11 +3,11 @@
<sticky class-name="sub-navbar"> <sticky class-name="sub-navbar">
<el-dropdown trigger="click"> <el-dropdown trigger="click">
<el-button plain> <el-button plain>
Platform<i class="el-icon-caret-bottom el-icon--right"/> Platform<i class="el-icon-caret-bottom el-icon--right" />
</el-button> </el-button>
<el-dropdown-menu slot="dropdown" class="no-border"> <el-dropdown-menu slot="dropdown" class="no-border">
<el-checkbox-group v-model="platforms" style="padding: 5px 15px;"> <el-checkbox-group v-model="platforms" style="padding: 5px 15px;">
<el-checkbox v-for="item in platformsOptions" :label="item.key" :key="item.key"> <el-checkbox v-for="item in platformsOptions" :key="item.key" :label="item.key">
{{ item.name }} {{ item.name }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
@ -16,7 +16,7 @@
<el-dropdown trigger="click"> <el-dropdown trigger="click">
<el-button plain> <el-button plain>
Link<i class="el-icon-caret-bottom el-icon--right"/> Link<i class="el-icon-caret-bottom el-icon--right" />
</el-button> </el-button>
<el-dropdown-menu slot="dropdown" class="no-padding no-border" style="width:300px"> <el-dropdown-menu slot="dropdown" class="no-padding no-border" style="width:300px">
<el-input v-model="url" placeholder="Please enter the content"> <el-input v-model="url" placeholder="Please enter the content">
@ -26,10 +26,11 @@
</el-dropdown> </el-dropdown>
<div class="time-container"> <div class="time-container">
<el-date-picker v-model="time" :picker-options="pickerOptions" type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="Release time"/> <el-date-picker v-model="time" :picker-options="pickerOptions" type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="Release time" />
</div> </div>
<el-button style="margin-left: 10px;" type="success">publish <el-button style="margin-left: 10px;" type="success">
publish
</el-button> </el-button>
</sticky> </sticky>
@ -48,7 +49,9 @@
<div>placeholder</div> <div>placeholder</div>
<div>placeholder</div> <div>placeholder</div>
<div>placeholder</div> <div>placeholder</div>
<div>placeholder</div> <sticky :sticky-top="200">
<el-button type="primary"> placeholder</el-button>
</sticky>
<div>placeholder</div> <div>placeholder</div>
<div>placeholder</div> <div>placeholder</div>
<div>placeholder</div> <div>placeholder</div>

View File

@ -5,9 +5,10 @@
<a target="_blank" class="link-type" href="https://panjiachen.github.io/vue-element-admin-site/component/rich-editor.html"> {{ $t('components.documentation') }}</a> <a target="_blank" class="link-type" href="https://panjiachen.github.io/vue-element-admin-site/component/rich-editor.html"> {{ $t('components.documentation') }}</a>
</code> </code>
<div> <div>
<tinymce :height="300" v-model="content"/> <tinymce v-model="content" :height="300" />
</div> </div>
<div class="editor-content" v-html="content"/> <!-- eslint-disable-next-line -->
<div class="editor-content" v-html="content" />
</div> </div>
</template> </template>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="className" :style="{height:height,width:width}"/> <div :class="className" :style="{height:height,width:width}" />
</template> </template>
<script> <script>

View File

@ -4,23 +4,23 @@
<img src="https://wpimg.wallstcn.com/e7d23d71-cf19-4b90-a1cc-f56af8c0903d.png"> <img src="https://wpimg.wallstcn.com/e7d23d71-cf19-4b90-a1cc-f56af8c0903d.png">
</div> </div>
<div style="position:relative;"> <div style="position:relative;">
<pan-thumb :image="avatar" class="panThumb"/> <pan-thumb :image="avatar" class="panThumb" />
<mallki class-name="mallki-text" text="vue-element-admin"/> <mallki class-name="mallki-text" text="vue-element-admin" />
<div style="padding-top:35px;" class="progress-item"> <div style="padding-top:35px;" class="progress-item">
<span>Vue</span> <span>Vue</span>
<el-progress :percentage="70"/> <el-progress :percentage="70" />
</div> </div>
<div class="progress-item"> <div class="progress-item">
<span>JavaScript</span> <span>JavaScript</span>
<el-progress :percentage="18"/> <el-progress :percentage="18" />
</div> </div>
<div class="progress-item"> <div class="progress-item">
<span>Css</span> <span>Css</span>
<el-progress :percentage="12"/> <el-progress :percentage="12" />
</div> </div>
<div class="progress-item"> <div class="progress-item">
<span>ESLint</span> <span>ESLint</span>
<el-progress :percentage="100" status="success"/> <el-progress :percentage="100" status="success" />
</div> </div>
</div> </div>
</el-card> </el-card>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="className" :style="{height:height,width:width}"/> <div :class="className" :style="{height:height,width:width}" />
</template> </template>
<script> <script>

View File

@ -7,7 +7,7 @@
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text">New Visits</div> <div class="card-panel-text">New Visits</div>
<count-to :start-val="0" :end-val="102400" :duration="2600" class="card-panel-num"/> <count-to :start-val="0" :end-val="102400" :duration="2600" class="card-panel-num" />
</div> </div>
</div> </div>
</el-col> </el-col>
@ -18,7 +18,7 @@
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text">Messages</div> <div class="card-panel-text">Messages</div>
<count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num"/> <count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num" />
</div> </div>
</div> </div>
</el-col> </el-col>
@ -29,7 +29,7 @@
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text">Purchases</div> <div class="card-panel-text">Purchases</div>
<count-to :start-val="0" :end-val="9280" :duration="3200" class="card-panel-num"/> <count-to :start-val="0" :end-val="9280" :duration="3200" class="card-panel-num" />
</div> </div>
</div> </div>
</el-col> </el-col>
@ -40,7 +40,7 @@
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text">Shoppings</div> <div class="card-panel-text">Shoppings</div>
<count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num"/> <count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
</div> </div>
</div> </div>
</el-col> </el-col>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="className" :style="{height:height,width:width}"/> <div :class="className" :style="{height:height,width:width}" />
</template> </template>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="className" :style="{height:height,width:width}"/> <div :class="className" :style="{height:height,width:width}" />
</template> </template>
<script> <script>

View File

@ -5,9 +5,10 @@
:checked="todo.done" :checked="todo.done"
class="toggle" class="toggle"
type="checkbox" type="checkbox"
@change="toggleTodo( todo)"> @change="toggleTodo( todo)"
<label @dblclick="editing = true" v-text="todo.text"/> >
<button class="destroy" @click="deleteTodo( todo )"/> <label @dblclick="editing = true" v-text="todo.text" />
<button class="destroy" @click="deleteTodo( todo )" />
</div> </div>
<input <input
v-focus="editing" v-focus="editing"
@ -16,7 +17,8 @@
class="edit" class="edit"
@keyup.enter="doneEdit" @keyup.enter="doneEdit"
@keyup.esc="cancelEdit" @keyup.esc="cancelEdit"
@blur="doneEdit"> @blur="doneEdit"
>
</li> </li>
</template> </template>

View File

@ -7,7 +7,7 @@
<!-- main section --> <!-- main section -->
<section v-show="todos.length" class="main"> <section v-show="todos.length" class="main">
<input id="toggle-all" :checked="allChecked" class="toggle-all" type="checkbox" @change="toggleAll({ done: !allChecked })"> <input id="toggle-all" :checked="allChecked" class="toggle-all" type="checkbox" @change="toggleAll({ done: !allChecked })">
<label for="toggle-all"/> <label for="toggle-all" />
<ul class="todo-list"> <ul class="todo-list">
<todo <todo
v-for="(todo, index) in filteredTodos" v-for="(todo, index) in filteredTodos"
@ -15,7 +15,8 @@
:todo="todo" :todo="todo"
@toggleTodo="toggleTodo" @toggleTodo="toggleTodo"
@editTodo="editTodo" @editTodo="editTodo"
@deleteTodo="deleteTodo"/> @deleteTodo="deleteTodo"
/>
</ul> </ul>
</section> </section>
<!-- footer --> <!-- footer -->

View File

@ -12,7 +12,9 @@
</el-table-column> </el-table-column>
<el-table-column label="Status" width="100" align="center"> <el-table-column label="Status" width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag :type="scope.row.status | statusFilter"> {{ scope.row.status }}</el-tag> <el-tag :type="scope.row.status | statusFilter">
{{ scope.row.status }}
</el-tag>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -1,41 +1,41 @@
<template> <template>
<div class="dashboard-editor-container"> <div class="dashboard-editor-container">
<github-corner style="position: absolute; top: 0px; border: 0; right: 0;"/> <github-corner style="position: absolute; top: 0px; border: 0; right: 0;" />
<panel-group @handleSetLineChartData="handleSetLineChartData"/> <panel-group @handleSetLineChartData="handleSetLineChartData" />
<el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
<line-chart :chart-data="lineChartData"/> <line-chart :chart-data="lineChartData" />
</el-row> </el-row>
<el-row :gutter="32"> <el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8"> <el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper"> <div class="chart-wrapper">
<raddar-chart/> <raddar-chart />
</div> </div>
</el-col> </el-col>
<el-col :xs="24" :sm="24" :lg="8"> <el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper"> <div class="chart-wrapper">
<pie-chart/> <pie-chart />
</div> </div>
</el-col> </el-col>
<el-col :xs="24" :sm="24" :lg="8"> <el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper"> <div class="chart-wrapper">
<bar-chart/> <bar-chart />
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="8"> <el-row :gutter="8">
<el-col :xs="{span: 24}" :sm="{span: 24}" :md="{span: 24}" :lg="{span: 12}" :xl="{span: 12}" style="padding-right:8px;margin-bottom:30px;"> <el-col :xs="{span: 24}" :sm="{span: 24}" :md="{span: 24}" :lg="{span: 12}" :xl="{span: 12}" style="padding-right:8px;margin-bottom:30px;">
<transaction-table/> <transaction-table />
</el-col> </el-col>
<el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;"> <el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;">
<todo-list/> <todo-list />
</el-col> </el-col>
<el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;"> <el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;">
<box-card/> <box-card />
</el-col> </el-col>
</el-row> </el-row>

View File

@ -1,10 +1,11 @@
<template> <template>
<div class="dashboard-editor-container"> <div class="dashboard-editor-container">
<div class=" clearfix"> <div class=" clearfix">
<pan-thumb :image="avatar" style="float: left"> Your roles: <pan-thumb :image="avatar" style="float: left">
Your roles:
<span v-for="item in roles" :key="item" class="pan-info-roles">{{ item }}</span> <span v-for="item in roles" :key="item" class="pan-info-roles">{{ item }}</span>
</pan-thumb> </pan-thumb>
<github-corner style="position: absolute; top: 0px; border: 0; right: 0;"/> <github-corner style="position: absolute; top: 0px; border: 0; right: 0;" />
<div class="info-container"> <div class="info-container">
<span class="display_name">{{ name }}</span> <span class="display_name">{{ name }}</span>
<span style="font-size:20px;padding-top:20px;display:inline-block;">Editor's Dashboard</span> <span style="font-size:20px;padding-top:20px;display:inline-block;">Editor's Dashboard</span>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="dashboard-container"> <div class="dashboard-container">
<component :is="currentRole"/> <component :is="currentRole" />
</div> </div>
</template> </template>

View File

@ -3,7 +3,7 @@
<a class="document-btn" target="_blank" href="https://panjiachen.github.io/vue-element-admin-site/">{{ $t('documentation.documentation') }}</a> <a class="document-btn" target="_blank" href="https://panjiachen.github.io/vue-element-admin-site/">{{ $t('documentation.documentation') }}</a>
<a class="document-btn" target="_blank" href="https://github.com/PanJiaChen/vue-element-admin/">{{ $t('documentation.github') }}</a> <a class="document-btn" target="_blank" href="https://github.com/PanJiaChen/vue-element-admin/">{{ $t('documentation.github') }}</a>
<a class="document-btn" target="_blank" href="https://panjiachen.gitee.io/vue-element-admin-site/zh/">国内文档</a> <a class="document-btn" target="_blank" href="https://panjiachen.gitee.io/vue-element-admin-site/zh/">国内文档</a>
<dropdown-menu :items="articleList" style="float:left;margin-left:50px;" title="系列文章"/> <dropdown-menu :items="articleList" style="float:left;margin-left:50px;" title="系列文章" />
</div> </div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<div/> <div />
</template> </template>
<script> <script>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="errPage-container"> <div class="errPage-container">
<errorA/> <errorA />
<errorB/> <errorB />
<!-- $t is vue-i18n global function to translate lang --> <!-- $t is vue-i18n global function to translate lang -->
<h3>{{ $t('errorLog.tips') }}</h3> <h3>{{ $t('errorLog.tips') }}</h3>
<code> <code>

View File

@ -9,7 +9,8 @@
</div> </div>
<div class="bullshit"> <div class="bullshit">
<div class="bullshit__oops">OOPS!</div> <div class="bullshit__oops">OOPS!</div>
<div class="bullshit__info">版权所有 <div class="bullshit__info">
版权所有
<a class="link-type" href="https://wallstreetcn.com" target="_blank">华尔街见闻</a> <a class="link-type" href="https://wallstreetcn.com" target="_blank">华尔街见闻</a>
</div> </div>
<div class="bullshit__headline">{{ message }}</div> <div class="bullshit__headline">{{ message }}</div>

View File

@ -6,7 +6,8 @@
<CommentDropdown v-model="postForm.comment_disabled" /> <CommentDropdown v-model="postForm.comment_disabled" />
<PlatformDropdown v-model="postForm.platforms" /> <PlatformDropdown v-model="postForm.platforms" />
<SourceUrlDropdown v-model="postForm.source_uri" /> <SourceUrlDropdown v-model="postForm.source_uri" />
<el-button v-loading="loading" style="margin-left: 10px;" type="success" @click="submitForm">发布 <el-button v-loading="loading" style="margin-left: 10px;" type="success" @click="submitForm">
发布
</el-button> </el-button>
<el-button v-loading="loading" type="warning" @click="draftForm">草稿</el-button> <el-button v-loading="loading" type="warning" @click="draftForm">草稿</el-button>
</sticky> </sticky>
@ -28,14 +29,14 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label-width="45px" label="作者:" class="postInfo-container-item"> <el-form-item label-width="45px" label="作者:" class="postInfo-container-item">
<el-select v-model="postForm.author" :remote-method="getRemoteUserList" filterable remote placeholder="搜索用户"> <el-select v-model="postForm.author" :remote-method="getRemoteUserList" filterable remote placeholder="搜索用户">
<el-option v-for="(item,index) in userListOptions" :key="item+index" :label="item" :value="item"/> <el-option v-for="(item,index) in userListOptions" :key="item+index" :label="item" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
<el-form-item label-width="80px" label="发布时间:" class="postInfo-container-item"> <el-form-item label-width="80px" label="发布时间:" class="postInfo-container-item">
<el-date-picker v-model="postForm.display_time" type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期时间"/> <el-date-picker v-model="postForm.display_time" type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期时间" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -47,7 +48,8 @@
:colors="['#99A9BF', '#F7BA2A', '#FF9900']" :colors="['#99A9BF', '#F7BA2A', '#FF9900']"
:low-threshold="1" :low-threshold="1"
:high-threshold="3" :high-threshold="3"
style="margin-top:8px;"/> style="margin-top:8px;"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -56,12 +58,12 @@
</el-row> </el-row>
<el-form-item style="margin-bottom: 40px;" label-width="45px" label="摘要:"> <el-form-item style="margin-bottom: 40px;" label-width="45px" label="摘要:">
<el-input :rows="1" v-model="postForm.content_short" type="textarea" class="article-textarea" autosize placeholder="请输入内容"/> <el-input v-model="postForm.content_short" :rows="1" type="textarea" class="article-textarea" autosize placeholder="请输入内容" />
<span v-show="contentShortLength" class="word-counter">{{ contentShortLength }}</span> <span v-show="contentShortLength" class="word-counter">{{ contentShortLength }}</span>
</el-form-item> </el-form-item>
<el-form-item prop="content" style="margin-bottom: 30px;"> <el-form-item prop="content" style="margin-bottom: 30px;">
<Tinymce ref="editor" :height="400" v-model="postForm.content" /> <Tinymce ref="editor" v-model="postForm.content" :height="400" />
</el-form-item> </el-form-item>
<el-form-item prop="image_uri" style="margin-bottom: 30px;"> <el-form-item prop="image_uri" style="margin-bottom: 30px;">

View File

@ -1,13 +1,18 @@
<template> <template>
<el-dropdown :show-timeout="100" trigger="click"> <el-dropdown :show-timeout="100" trigger="click">
<el-button plain>{{ !comment_disabled?'评论已打开':'评论已关闭' }} <el-button plain>
<i class="el-icon-caret-bottom el-icon--right"/> {{ !comment_disabled?'评论已打开':'评论已关闭' }}
<i class="el-icon-caret-bottom el-icon--right" />
</el-button> </el-button>
<el-dropdown-menu slot="dropdown" class="no-padding"> <el-dropdown-menu slot="dropdown" class="no-padding">
<el-dropdown-item> <el-dropdown-item>
<el-radio-group v-model="comment_disabled" style="padding: 10px;"> <el-radio-group v-model="comment_disabled" style="padding: 10px;">
<el-radio :label="true">关闭评论</el-radio> <el-radio :label="true">
<el-radio :label="false">打开评论</el-radio> 关闭评论
</el-radio>
<el-radio :label="false">
打开评论
</el-radio>
</el-radio-group> </el-radio-group>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>

View File

@ -2,11 +2,11 @@
<el-dropdown :hide-on-click="false" :show-timeout="100" trigger="click"> <el-dropdown :hide-on-click="false" :show-timeout="100" trigger="click">
<el-button plain> <el-button plain>
平台({{ platforms.length }}) 平台({{ platforms.length }})
<i class="el-icon-caret-bottom el-icon--right"/> <i class="el-icon-caret-bottom el-icon--right" />
</el-button> </el-button>
<el-dropdown-menu slot="dropdown" class="no-border"> <el-dropdown-menu slot="dropdown" class="no-border">
<el-checkbox-group v-model="platforms" style="padding: 5px 15px;"> <el-checkbox-group v-model="platforms" style="padding: 5px 15px;">
<el-checkbox v-for="item in platformsOptions" :label="item.key" :key="item.key"> <el-checkbox v-for="item in platformsOptions" :key="item.key" :label="item.key">
{{ item.name }} {{ item.name }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>

View File

@ -2,12 +2,14 @@
<el-dropdown :show-timeout="100" trigger="click"> <el-dropdown :show-timeout="100" trigger="click">
<el-button plain> <el-button plain>
外链 外链
<i class="el-icon-caret-bottom el-icon--right"/> <i class="el-icon-caret-bottom el-icon--right" />
</el-button> </el-button>
<el-dropdown-menu slot="dropdown" class="no-padding no-border" style="width:400px"> <el-dropdown-menu slot="dropdown" class="no-padding no-border" style="width:400px">
<el-form-item label-width="0px" style="margin-bottom: 0px" prop="source_uri"> <el-form-item label-width="0px" style="margin-bottom: 0px" prop="source_uri">
<el-input v-model="source_uri" placeholder="请输入内容"> <el-input v-model="source_uri" placeholder="请输入内容">
<template slot="prepend">填写url</template> <template slot="prepend">
填写url
</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-dropdown-menu> </el-dropdown-menu>

View File

@ -4,7 +4,8 @@
的include直接缓存所有页面详情见 的include直接缓存所有页面详情见
<a <a
href="https://panjiachen.github.io/vue-element-admin-site/guide/essentials/tags-view.html" href="https://panjiachen.github.io/vue-element-admin-site/guide/essentials/tags-view.html"
target="_blank">文档</a> target="_blank"
>文档</a>
</p> </p>
</template> </template>

View File

@ -1,5 +1,5 @@
<template> <template>
<article-detail :is-edit="false"/> <article-detail :is-edit="false" />
</template> </template>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<article-detail :is-edit="true"/> <article-detail :is-edit="true" />
</template> </template>
<script> <script>

View File

@ -22,7 +22,7 @@
<el-table-column width="100px" label="Importance"> <el-table-column width="100px" label="Importance">
<template slot-scope="scope"> <template slot-scope="scope">
<svg-icon v-for="n in +scope.row.importance" :key="n" icon-class="star" class="meta-item__icon"/> <svg-icon v-for="n in +scope.row.importance" :key="n" icon-class="star" class="meta-item__icon" />
</template> </template>
</el-table-column> </el-table-column>

View File

@ -1,12 +1,13 @@
<template> <template>
<div style="display:inline-block;"> <div style="display:inline-block;">
<label class="radio-label">Book Type: </label> <label class="radio-label">Book Type: </label>
<el-select v-model="bookType" style="width:120px;" > <el-select v-model="bookType" style="width:120px;">
<el-option <el-option
v-for="item in options" v-for="item in options"
:key="item" :key="item"
:label="item" :label="item"
:value="item"/> :value="item"
/>
</el-select> </el-select>
</div> </div>
</template> </template>

View File

@ -2,7 +2,7 @@
<div style="display:inline-block;"> <div style="display:inline-block;">
<!-- $t is vue-i18n global function to translate lang --> <!-- $t is vue-i18n global function to translate lang -->
<label class="radio-label" style="padding-left:0;">Filename: </label> <label class="radio-label" style="padding-left:0;">Filename: </label>
<el-input :placeholder="$t('excel.placeholder')" v-model="filename" style="width:340px;" prefix-icon="el-icon-document"/> <el-input v-model="filename" :placeholder="$t('excel.placeholder')" style="width:340px;" prefix-icon="el-icon-document" />
</div> </div>
</template> </template>

View File

@ -35,7 +35,7 @@
</el-table-column> </el-table-column>
<el-table-column align="center" label="Date" width="220"> <el-table-column align="center" label="Date" width="220">
<template slot-scope="scope"> <template slot-scope="scope">
<i class="el-icon-time"/> <i class="el-icon-time" />
<span>{{ scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -46,12 +46,10 @@
<script> <script>
import { fetchList } from '@/api/article' import { fetchList } from '@/api/article'
import { parseTime } from '@/utils' import { parseTime } from '@/utils'
// options components // options components
import FilenameOption from './components/FilenameOption' import FilenameOption from './components/FilenameOption'
import AutoWidthOption from './components/AutoWidthOption' import AutoWidthOption from './components/AutoWidthOption'
import BookTypeOption from './components/BookTypeOption' import BookTypeOption from './components/BookTypeOption'
export default { export default {
name: 'ExportExcel', name: 'ExportExcel',
components: { FilenameOption, AutoWidthOption, BookTypeOption }, components: { FilenameOption, AutoWidthOption, BookTypeOption },
@ -114,4 +112,3 @@ export default {
padding: 0 12px 0 30px; padding: 0 12px 0 30px;
} }
</style> </style>

View File

@ -0,0 +1,101 @@
<template>
<div class="app-container">
<el-button :loading="downloadLoading" style="margin-bottom:20px" type="primary" icon="document" @click="handleDownload">Export</el-button>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="list"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column align="center" label="Id" width="95">
<template slot-scope="scope">
{{ scope.$index }}
</template>
</el-table-column>
<el-table-column label="Main Information" align="center">
<el-table-column label="Title">
<template slot-scope="scope">
{{ scope.row.title }}
</template>
</el-table-column>
<el-table-column label="Author" width="110" align="center">
<template slot-scope="scope">
<el-tag>{{ scope.row.author }}</el-tag>
</template>
</el-table-column>
<el-table-column label="Readings" width="115" align="center">
<template slot-scope="scope">
{{ scope.row.pageviews }}
</template>
</el-table-column>
</el-table-column>
<el-table-column align="center" label="Date" width="220">
<template slot-scope="scope">
<i class="el-icon-time" />
<span>{{ scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import { fetchList } from '@/api/article'
import { parseTime } from '@/utils'
export default {
name: 'MergeHeader',
data() {
return {
list: null,
listLoading: true,
downloadLoading: false
}
},
created() {
this.fetchData()
},
methods: {
fetchData() {
this.listLoading = true
fetchList(this.listQuery).then(response => {
this.list = response.data.items
this.listLoading = false
})
},
handleDownload() {
this.downloadLoading = true
import('@/vendor/Export2Excel').then(excel => {
const multiHeader = [['Id', 'Main Information', '', '', 'Date']]
const header = ['', 'Title', 'Author', 'Readings', '']
const filterVal = ['id', 'title', 'author', 'pageviews', 'display_time']
const list = this.list
const data = this.formatJson(filterVal, list)
const merges = ['A1:A2', 'B1:D1', 'E1:E2']
excel.export_json_to_excel({
multiHeader,
header,
merges,
data
})
this.downloadLoading = false
})
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => {
if (j === 'timestamp') {
return parseTime(v[j])
} else {
return v[j]
}
}))
}
}
}
</script>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- $t is vue-i18n global function to translate lang --> <!-- $t is vue-i18n global function to translate lang -->
<el-input :placeholder="$t('excel.placeholder')" v-model="filename" style="width:340px;" prefix-icon="el-icon-document"/> <el-input v-model="filename" :placeholder="$t('excel.placeholder')" style="width:340px;" prefix-icon="el-icon-document" />
<el-button :loading="downloadLoading" style="margin-bottom:20px" type="primary" icon="document" @click="handleDownload">{{ $t('excel.selectedExport') }}</el-button> <el-button :loading="downloadLoading" style="margin-bottom:20px" type="primary" icon="document" @click="handleDownload">{{ $t('excel.selectedExport') }}</el-button>
<a href="https://panjiachen.github.io/vue-element-admin-site/feature/component/excel.html" target="_blank" style="margin-left:15px;"> <a href="https://panjiachen.github.io/vue-element-admin-site/feature/component/excel.html" target="_blank" style="margin-left:15px;">
<el-tag type="info">Documentation</el-tag> <el-tag type="info">Documentation</el-tag>
@ -14,8 +14,9 @@
border border
fit fit
highlight-current-row highlight-current-row
@selection-change="handleSelectionChange"> @selection-change="handleSelectionChange"
<el-table-column type="selection" align="center"/> >
<el-table-column type="selection" align="center" />
<el-table-column align="center" label="Id" width="95"> <el-table-column align="center" label="Id" width="95">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.$index }} {{ scope.$index }}
@ -38,7 +39,7 @@
</el-table-column> </el-table-column>
<el-table-column align="center" label="PDate" width="220"> <el-table-column align="center" label="PDate" width="220">
<template slot-scope="scope"> <template slot-scope="scope">
<i class="el-icon-time"/> <i class="el-icon-time" />
<span>{{ scope.row.display_time }}</span> <span>{{ scope.row.display_time }}</span>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<upload-excel-component :on-success="handleSuccess" :before-upload="beforeUpload"/> <upload-excel-component :on-success="handleSuccess" :before-upload="beforeUpload" />
<el-table :data="tableData" border highlight-current-row style="width: 100%;margin-top:20px;"> <el-table :data="tableData" border highlight-current-row style="width: 100%;margin-top:20px;">
<el-table-column v-for="item of tableHeader" :prop="item" :label="item" :key="item"/> <el-table-column v-for="item of tableHeader" :key="item" :prop="item" :label="item" />
</el-table> </el-table>
</div> </div>
</template> </template>

View File

@ -18,7 +18,7 @@
<el-row :gutter="20" style="margin:100px 15px 50px;"> <el-row :gutter="20" style="margin:100px 15px 50px;">
<el-col :span="12" :xs="24"> <el-col :span="12" :xs="24">
<div class="block"> <div class="block">
<el-date-picker v-model="date" :placeholder="$t('i18nView.datePlaceholder')" type="date"/> <el-date-picker v-model="date" :placeholder="$t('i18nView.datePlaceholder')" type="date" />
</div> </div>
<div class="block"> <div class="block">
<el-select v-model="value" :placeholder="$t('i18nView.selectPlaceholder')"> <el-select v-model="value" :placeholder="$t('i18nView.selectPlaceholder')">
@ -26,7 +26,8 @@
v-for="item in options" v-for="item in options"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"/> :value="item.value"
/>
</el-select> </el-select>
</div> </div>
<div class="block"> <div class="block">
@ -40,9 +41,9 @@
</el-col> </el-col>
<el-col :span="12" :xs="24"> <el-col :span="12" :xs="24">
<el-table :data="tableData" fit highlight-current-row border style="width: 100%"> <el-table :data="tableData" fit highlight-current-row border style="width: 100%">
<el-table-column :label="$t('i18nView.tableName')" prop="name" width="100" align="center"/> <el-table-column :label="$t('i18nView.tableName')" prop="name" width="100" align="center" />
<el-table-column :label="$t('i18nView.tableDate')" prop="date" width="120" align="center"/> <el-table-column :label="$t('i18nView.tableDate')" prop="date" width="120" align="center" />
<el-table-column :label="$t('i18nView.tableAddress')" prop="address"/> <el-table-column :label="$t('i18nView.tableAddress')" prop="address" />
</el-table> </el-table>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -1,12 +1,12 @@
<template> <template>
<div :class="classObj" class="app-wrapper"> <div :class="classObj" class="app-wrapper">
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/> <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
<sidebar class="sidebar-container"/> <sidebar class="sidebar-container" />
<div class="main-container"> <div class="main-container">
<navbar/> <navbar />
<tags-view/> <tags-view />
<AD/> <AD />
<app-main/> <app-main />
</div> </div>
</div> </div>
</template> </template>

View File

@ -2,7 +2,7 @@
<section class="app-main"> <section class="app-main">
<transition name="fade-transform" mode="out-in"> <transition name="fade-transform" mode="out-in">
<keep-alive :include="cachedViews"> <keep-alive :include="cachedViews">
<router-view :key="key"/> <router-view :key="key" />
</keep-alive> </keep-alive>
</transition> </transition>
</section> </section>

View File

@ -1,32 +1,32 @@
<template> <template>
<div class="navbar"> <div class="navbar">
<hamburger :toggle-click="toggleSideBar" :is-active="sidebar.opened" class="hamburger-container"/> <hamburger :toggle-click="toggleSideBar" :is-active="sidebar.opened" class="hamburger-container" />
<breadcrumb class="breadcrumb-container"/> <breadcrumb class="breadcrumb-container" />
<div class="right-menu"> <div class="right-menu">
<template v-if="device!=='mobile'"> <template v-if="device!=='mobile'">
<search class="right-menu-item" /> <search class="right-menu-item" />
<error-log class="errLog-container right-menu-item hover-effect"/> <error-log class="errLog-container right-menu-item hover-effect" />
<screenfull class="right-menu-item hover-effect"/> <screenfull class="right-menu-item hover-effect" />
<el-tooltip :content="$t('navbar.size')" effect="dark" placement="bottom"> <el-tooltip :content="$t('navbar.size')" effect="dark" placement="bottom">
<size-select class="right-menu-item hover-effect"/> <size-select class="right-menu-item hover-effect" />
</el-tooltip> </el-tooltip>
<lang-select class="right-menu-item hover-effect"/> <lang-select class="right-menu-item hover-effect" />
<el-tooltip :content="$t('navbar.theme')" effect="dark" placement="bottom"> <el-tooltip :content="$t('navbar.theme')" effect="dark" placement="bottom">
<theme-picker class="right-menu-item hover-effect"/> <theme-picker class="right-menu-item hover-effect" />
</el-tooltip> </el-tooltip>
</template> </template>
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar"> <img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar">
<i class="el-icon-caret-bottom"/> <i class="el-icon-caret-bottom" />
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<router-link to="/"> <router-link to="/">

View File

@ -2,7 +2,7 @@
<template> <template>
<!-- eslint-disable vue/require-component-is --> <!-- eslint-disable vue/require-component-is -->
<component v-bind="linkProps(to)"> <component v-bind="linkProps(to)">
<slot/> <slot />
</component> </component>
</template> </template>

View File

@ -15,11 +15,12 @@
</template> </template>
<sidebar-item <sidebar-item
v-for="child in item.children" v-for="child in item.children"
:key="child.path"
:is-nest="true" :is-nest="true"
:item="child" :item="child"
:key="child.path"
:base-path="resolvePath(child.path)" :base-path="resolvePath(child.path)"
class="nest-menu" /> class="nest-menu"
/>
</el-submenu> </el-submenu>
</div> </div>

View File

@ -9,7 +9,7 @@
:collapse-transition="false" :collapse-transition="false"
mode="vertical" mode="vertical"
> >
<sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path"/> <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" />
</el-menu> </el-menu>
</el-scrollbar> </el-scrollbar>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<el-scrollbar ref="scrollContainer" :vertical="false" class="scroll-container" @wheel.native.prevent="handleScroll"> <el-scrollbar ref="scrollContainer" :vertical="false" class="scroll-container" @wheel.native.prevent="handleScroll">
<slot/> <slot />
</el-scrollbar> </el-scrollbar>
</template> </template>

View File

@ -4,21 +4,23 @@
<router-link <router-link
v-for="tag in visitedViews" v-for="tag in visitedViews"
ref="tag" ref="tag"
:key="tag.path"
:class="isActive(tag)?'active':''" :class="isActive(tag)?'active':''"
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
:key="tag.path"
tag="span" tag="span"
class="tags-view-item" class="tags-view-item"
@click.middle.native="closeSelectedTag(tag)" @click.middle.native="closeSelectedTag(tag)"
@contextmenu.prevent.native="openMenu(tag,$event)"> @contextmenu.prevent.native="openMenu(tag,$event)"
>
{{ generateTitle(tag.title) }} {{ generateTitle(tag.title) }}
<span v-if="!tag.meta.affix" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" /> <span v-if="!tag.meta.affix" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
</router-link> </router-link>
</scroll-pane> </scroll-pane>
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu"> <ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
<li @click="refreshSelectedTag(selectedTag)">{{ $t('tagsView.refresh') }}</li> <li @click="refreshSelectedTag(selectedTag)">{{ $t('tagsView.refresh') }}</li>
<li v-if="!(selectedTag.meta&&selectedTag.meta.affix)" @click="closeSelectedTag(selectedTag)">{{ <li v-if="!(selectedTag.meta&&selectedTag.meta.affix)" @click="closeSelectedTag(selectedTag)">
$t('tagsView.close') }}</li> {{ $t('tagsView.close') }}
</li>
<li @click="closeOthersTags">{{ $t('tagsView.closeOthers') }}</li> <li @click="closeOthersTags">{{ $t('tagsView.closeOthers') }}</li>
<li @click="closeAllTags(selectedTag)">{{ $t('tagsView.closeAll') }}</li> <li @click="closeAllTags(selectedTag)">{{ $t('tagsView.closeAll') }}</li>
</ul> </ul>

View File

@ -1,10 +1,10 @@
<template> <template>
<div class="social-signup-container"> <div class="social-signup-container">
<div class="sign-btn" @click="wechatHandleClick('wechat')"> <div class="sign-btn" @click="wechatHandleClick('wechat')">
<span class="wx-svg-container"><svg-icon icon-class="wechat" class="icon"/></span> 微信 <span class="wx-svg-container"><svg-icon icon-class="wechat" class="icon" /></span> 微信
</div> </div>
<div class="sign-btn" @click="tencentHandleClick('tencent')"> <div class="sign-btn" @click="tencentHandleClick('tencent')">
<span class="qq-svg-container"><svg-icon icon-class="qq" class="icon"/></span> QQ <span class="qq-svg-container"><svg-icon icon-class="qq" class="icon" /></span> QQ
</div> </div>
</div> </div>
</template> </template>

View File

@ -1,4 +1,4 @@
<template > <template>
<div style="padding:30px;"> <div style="padding:30px;">
<el-alert :closable="false" title="menu 1"> <el-alert :closable="false" title="menu 1">
<router-view /> <router-view />

View File

@ -1,4 +1,4 @@
<template > <template>
<div style="padding:30px;"> <div style="padding:30px;">
<el-alert :closable="false" title="menu 1-1" type="success"> <el-alert :closable="false" title="menu 1-1" type="success">
<router-view /> <router-view />

Some files were not shown because too many files have changed in this diff Show More