Merge branch 'develop' into feature/headermenu-scroll
Former-commit-id: 82039d00173295785498485193767faa85975db9 [formerly 82039d00173295785498485193767faa85975db9 [formerly 82039d00173295785498485193767faa85975db9 [formerly 82039d00173295785498485193767faa85975db9 [formerly f2f6907eead2dc347e9f960cd22214905b9d3ae2 [formerly 941bad68f597ae2073569e5f77004e9fe32e5237]]]]] Former-commit-id: ddca9a7423317cc209e97412791b001a14d4e077 Former-commit-id: 2e61f8586ce996397bf50b8e83dbff48badc1fc8 Former-commit-id: b25ec95ca475a12639e54cb33ad2422432b4c121 [formerly fcc94fcb2e8ed5b3c7f24911c0279d3230f812cb] Former-commit-id: 037705c17d588cd319db4d26c214bb3a48829458 Former-commit-id: 309a1eabb1112f116c06743bee2b391913cf4094 Former-commit-id: cf9f50fbdbafbd26f5bb81e7920836f6bb13eea7 Former-commit-id: c744fb3031977e93baa48604fe33c449f0e32471 Former-commit-id: fc30fe9f534928e493bfe637ffb7ea3c6c38c662
This commit is contained in:
@@ -84,6 +84,12 @@
|
|||||||
* 全局菜单搜索 `1.3.0 +`
|
* 全局菜单搜索 `1.3.0 +`
|
||||||
* 自定义登录重定向 `1.3.0 +`
|
* 自定义登录重定向 `1.3.0 +`
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
* 可以折叠后显示一行输入控件的的表格搜索栏组件
|
||||||
|
* 用户管理示例界面(用户管理、权限管理、角色管理等)方便对接后台
|
||||||
|
* 更多的错误信息页面以及美化错误页面(404、401...)
|
||||||
|
|
||||||
## 其它版本
|
## 其它版本
|
||||||
|
|
||||||
| 名称 | Github / 主页 | 预览 | 介绍 |
|
| 名称 | Github / 主页 | 预览 | 介绍 |
|
||||||
|
|||||||
133
doc/CH.md
133
doc/CH.md
@@ -1,133 +0,0 @@
|
|||||||

|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a><img src="https://img.shields.io/github/release/d2-projects/d2-admin.svg"/></a>
|
|
||||||
<a><img src="https://img.shields.io/npm/v/@d2-admin/ice-scaffold.svg"/></a>
|
|
||||||
<a href="https://www.travis-ci.org/d2-projects/d2-admin"><img src="https://www.travis-ci.org/d2-projects/d2-admin.svg?branch=master"/></a>
|
|
||||||
<a><img src="https://img.shields.io/github/last-commit/d2-projects/d2-admin.svg"/></a>
|
|
||||||
<a><img src="https://img.shields.io/badge/code_style-standard-brightgreen.svg"/></a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a><img src="https://img.shields.io/github/issues/d2-projects/d2-admin.svg"/></a>
|
|
||||||
<a><img src="https://img.shields.io/github/issues-closed/d2-projects/d2-admin.svg"/></a>
|
|
||||||
<a><img src="https://img.shields.io/github/issues-pr/d2-projects/d2-admin.svg"/></a>
|
|
||||||
<a><img src="https://img.shields.io/github/issues-pr-closed/d2-projects/d2-admin.svg"/></a>
|
|
||||||
<a><img src="https://img.shields.io/github/forks/d2-projects/d2-admin.svg"/></a>
|
|
||||||
<a><img src="https://img.shields.io/github/stars/d2-projects/d2-admin.svg"/></a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
[D2Admin](https://github.com/d2-projects/d2-admin) 是一个完全**开源免费**的管理系统前端集成方案,为您做好大部分项目前期准备工作,提供大量示例代码,方便快速进行管理系统开发。
|
|
||||||
|
|
||||||
## 文档
|
|
||||||
|
|
||||||
[中文文档](https://d2-projects.github.io/d2-admin-doc/zh/)
|
|
||||||
|
|
||||||
## 预览
|
|
||||||
|
|
||||||
[预览地址](https://d2-projects.github.io/d2-admin/)
|
|
||||||
|
|
||||||
> 预览部署在 Github Page ,如果您访问时由于网络原因卡在载入界面或者白屏,请克隆或者下载本仓库在本地运行查看效果。
|
|
||||||
|
|
||||||
## 码云镜像
|
|
||||||
|
|
||||||
[码云](https://gitee.com/fairyever/d2-admin)
|
|
||||||
|
|
||||||
## 功能
|
|
||||||
|
|
||||||
* 使用 vue-cli3 构建
|
|
||||||
* 首屏加载等待动画
|
|
||||||
* 五款主题
|
|
||||||
* 详细的文档
|
|
||||||
* 登录和注销
|
|
||||||
* 分离的路由和菜单设置
|
|
||||||
* 可折叠侧边栏
|
|
||||||
* 多国语
|
|
||||||
* 富文本编辑器
|
|
||||||
* Markdown 编辑器
|
|
||||||
* 全屏
|
|
||||||
* Fontawesome 图标库
|
|
||||||
* 图标选择器
|
|
||||||
* 自动注册 SVG 图标
|
|
||||||
* 模拟数据
|
|
||||||
* 剪贴板封装
|
|
||||||
* 图表库
|
|
||||||
* 时间日期计算工具
|
|
||||||
* 导入 Excel ( xlsx + csv )
|
|
||||||
* 数据导出 Excel ( xlsx + csv )
|
|
||||||
* 数据导出文本
|
|
||||||
* 数字动画
|
|
||||||
* 可拖拽调整大小的区块布局
|
|
||||||
* 可拖拽调整大小和位置的网格布局
|
|
||||||
* 开箱即用的页面布局组件
|
|
||||||
* 加载并解析 markdown 文件
|
|
||||||
* GitHub 样式的 markdown 显示组件
|
|
||||||
* markdown 内代码高亮
|
|
||||||
* 为 markdown 扩展了百度云链接解析和优化显示
|
|
||||||
* 右键菜单组件
|
|
||||||
* 自定义滚动条和滚动控制
|
|
||||||
* 公用样式抽离,方便的主题定制
|
|
||||||
* 支持临时菜单配置
|
|
||||||
* 系统功能展示模块 `1.1.4 +`
|
|
||||||
* 多标签页模式 `1.1.4 +`
|
|
||||||
* 美化滚动条 `1.1.4 +`
|
|
||||||
* json view `1.1.4 +`
|
|
||||||
* cookie 封装 `1.1.5 +`
|
|
||||||
* 多标签页全局控制 API `1.1.5 +`
|
|
||||||
* 菜单全局控制 API `1.1.5 +`
|
|
||||||
* 多标签页关闭控制支持右键菜单 `1.1.10 +`
|
|
||||||
* 模块化全局状态管理 `1.2.0 +`
|
|
||||||
* 多种数据持久化方式:区分用户,区分路由,页面数据快照功能 `1.2.0 +`
|
|
||||||
* 支持跳出外部链接的菜单系统 `1.2.0 +`
|
|
||||||
* 支持菜单 svg 图标 `1.3.0 +`
|
|
||||||
* 日志记录和错误捕捉 `1.3.0 +`
|
|
||||||
* 全局菜单搜索 `1.3.0 +`
|
|
||||||
* 自定义登录重定向 `1.3.0 +`
|
|
||||||
|
|
||||||
## 其它版本
|
|
||||||
|
|
||||||
| 名称 | Github / 主页 | 预览 | 介绍 |
|
|
||||||
| --- | --- | --- | --- |
|
|
||||||
| 简化版模板 | [Github](https://github.com/d2-projects/d2-admin-start-kit) | [预览](https://d2-projects.github.io/d2-admin-start-kit) | 无 |
|
|
||||||
| 飞冰脚手架 | [飞冰](https://alibaba.github.io/ice/scaffold?type=vue) | [预览](https://d2-projects.github.io/d2-admin-ice) | [介绍](https://juejin.im/post/5b6349716fb9a04f834669d6) |
|
|
||||||
|
|
||||||
## 生态
|
|
||||||
|
|
||||||
| 名称 | Github / 主页 | 预览 | 介绍 |
|
|
||||||
| --- | --- | --- | --- |
|
|
||||||
| D2 CRUD | [Github](https://github.com/d2-projects/d2-crud) | [预览](https://d2-projects.github.io/d2-admin/#/demo/d2-crud/index) | 表格常用操作封装 |
|
|
||||||
| D2 Ribbons | [Github](https://github.com/d2-projects/d2-ribbons) | [预览](https://github.com/d2-projects/d2-ribbons) | 开源项目徽标库 |
|
|
||||||
|
|
||||||
## 徽章
|
|
||||||
|
|
||||||
如果您的开源项目基于 D2Admin 开发,请在您的 README 添加下面的徽章:
|
|
||||||
|
|
||||||
<a href="https://github.com/d2-projects/d2-admin" target="_blank">
|
|
||||||
<img src="https://raw.githubusercontent.com/FairyEver/d2-admin/master/doc/image/d2-admin@2x.png" width="200">
|
|
||||||
</a>
|
|
||||||
|
|
||||||
复制下面代码加入到 README 中即可:
|
|
||||||
|
|
||||||
``` html
|
|
||||||
<a href="https://github.com/d2-projects/d2-admin" target="_blank"><img src="https://raw.githubusercontent.com/FairyEver/d2-admin/master/doc/image/d2-admin@2x.png" width="200"></a>
|
|
||||||
```
|
|
||||||
|
|
||||||
同时您可以将您的项目汇报给我们,优秀项目我们会放置在 D2Admin 相关位置并帮助您宣传。
|
|
||||||
|
|
||||||
## 加入我们
|
|
||||||
|
|
||||||
D2Admin 是完全开源免费的项目,旨在帮助开发者更方便地进行管理系统开发,同时也提供 2000 人的 QQ 交流群和微信群,前后端的朋友可以相互答疑,项目组成员全部在内,所有 D2 相关项目使用问题欢迎在群内提问。
|
|
||||||
|
|
||||||
> 隐性福利:重要通知会发群红包
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 支持
|
|
||||||
|
|
||||||
D2 Projects 相关项目全部完全免费,但是也有相关的费用支出,比如七牛图床、码云付费 page 服务(已经废弃)、服务器和域名(现已全部转至 Github)、QQ 群扩容、群内红包福利等,现已花费数百元。所以如果您喜欢这些项目欢迎小额捐助一下,十分感谢。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
如果希望您的博客或者网站出现在 [D2 Projects](https://github.com/d2-projects) 项目的 README 以及文档中,请联系作者。
|
|
||||||
|
|
||||||

|
|
||||||
@@ -1 +0,0 @@
|
|||||||
2ef12d88b2011063784c37f8b8490336503a5f88
|
|
||||||
@@ -1 +1 @@
|
|||||||
4d463a54f93007210c2e07a05d8f012c386a0023
|
b322c0027c15926f73f03ec142269e3512c5cc14
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "d2-admin",
|
"name": "d2-admin",
|
||||||
"version": "1.4.5",
|
"version": "1.4.6",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "vue-cli-service serve --open",
|
"serve": "vue-cli-service serve --open",
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"test:unit": "vue-cli-service test:unit"
|
"test:unit": "vue-cli-service test:unit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@d2-projects/d2-crud": "^1.1.0",
|
"@d2-projects/d2-crud": "^1.2.0",
|
||||||
"axios": "^0.17.1",
|
"axios": "^0.17.1",
|
||||||
"babel-polyfill": "^6.26.0",
|
"babel-polyfill": "^6.26.0",
|
||||||
"better-scroll": "^1.12.1",
|
"better-scroll": "^1.12.1",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations } from 'vuex'
|
import { mapState, mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
computed: {
|
computed: {
|
||||||
...mapState('d2admin/fullscreen', [
|
...mapState('d2admin/fullscreen', [
|
||||||
@@ -19,7 +19,7 @@ export default {
|
|||||||
])
|
])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations('d2admin/fullscreen', [
|
...mapActions('d2admin/fullscreen', [
|
||||||
'toggle'
|
'toggle'
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations } from 'vuex'
|
import { mapState, mapMutations, mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
name: 'd2-header-size',
|
name: 'd2-header-size',
|
||||||
computed: {
|
computed: {
|
||||||
@@ -51,9 +51,11 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({
|
...mapMutations({
|
||||||
sizeSet: 'd2admin/size/set',
|
|
||||||
pageKeepAliveClean: 'd2admin/page/keepAliveClean'
|
pageKeepAliveClean: 'd2admin/page/keepAliveClean'
|
||||||
}),
|
}),
|
||||||
|
...mapActions({
|
||||||
|
sizeSet: 'd2admin/size/set'
|
||||||
|
}),
|
||||||
handleChange (value) {
|
handleChange (value) {
|
||||||
this.sizeSet(value)
|
this.sizeSet(value)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations } from 'vuex'
|
import { mapState, mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
name: 'd2-theme-list',
|
name: 'd2-theme-list',
|
||||||
data () {
|
data () {
|
||||||
@@ -36,7 +36,7 @@ export default {
|
|||||||
])
|
])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations('d2admin/theme', [
|
...mapActions('d2admin/theme', [
|
||||||
'set'
|
'set'
|
||||||
]),
|
]),
|
||||||
handleSelectTheme (name) {
|
handleSelectTheme (name) {
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations } from 'vuex'
|
import { mapState, mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
D2Contextmenu: () => import('../contextmenu'),
|
D2Contextmenu: () => import('../contextmenu'),
|
||||||
@@ -89,7 +89,7 @@ export default {
|
|||||||
])
|
])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations('d2admin/page', [
|
...mapActions('d2admin/page', [
|
||||||
'close',
|
'close',
|
||||||
'closeLeft',
|
'closeLeft',
|
||||||
'closeRight',
|
'closeRight',
|
||||||
@@ -101,7 +101,6 @@ export default {
|
|||||||
*/
|
*/
|
||||||
handleContextmenu (event) {
|
handleContextmenu (event) {
|
||||||
let target = event.target
|
let target = event.target
|
||||||
|
|
||||||
// 解决 https://github.com/d2-projects/d2-admin/issues/54
|
// 解决 https://github.com/d2-projects/d2-admin/issues/54
|
||||||
let flag = false
|
let flag = false
|
||||||
if (target.className.indexOf('el-tabs__item') > -1) flag = true
|
if (target.className.indexOf('el-tabs__item') > -1) flag = true
|
||||||
@@ -109,7 +108,6 @@ export default {
|
|||||||
target = target.parentNode
|
target = target.parentNode
|
||||||
flag = true
|
flag = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
|
|||||||
@@ -81,7 +81,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapGetters, mapMutations } from 'vuex'
|
import { mapState, mapGetters, mapActions } from 'vuex'
|
||||||
import mixinSearch from './mixins/search'
|
import mixinSearch from './mixins/search'
|
||||||
export default {
|
export default {
|
||||||
name: 'd2-layout-header-aside',
|
name: 'd2-layout-header-aside',
|
||||||
@@ -129,14 +129,14 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({
|
...mapActions('d2admin/menu', [
|
||||||
menuAsideCollapseToggle: 'd2admin/menu/asideCollapseToggle'
|
'asideCollapseToggle'
|
||||||
}),
|
]),
|
||||||
/**
|
/**
|
||||||
* 接收点击切换侧边栏的按钮
|
* 接收点击切换侧边栏的按钮
|
||||||
*/
|
*/
|
||||||
handleToggleAside () {
|
handleToggleAside () {
|
||||||
this.menuAsideCollapseToggle()
|
this.asideCollapseToggle()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,11 +62,11 @@ new Vue({
|
|||||||
// 检查最新版本
|
// 检查最新版本
|
||||||
this.$store.dispatch('d2admin/releases/checkUpdate')
|
this.$store.dispatch('d2admin/releases/checkUpdate')
|
||||||
// 用户登录后从数据库加载一系列的设置
|
// 用户登录后从数据库加载一系列的设置
|
||||||
this.$store.commit('d2admin/account/load')
|
this.$store.dispatch('d2admin/account/load')
|
||||||
// 获取并记录用户 UA
|
// 获取并记录用户 UA
|
||||||
this.$store.commit('d2admin/ua/get')
|
this.$store.commit('d2admin/ua/get')
|
||||||
// 初始化全屏监听
|
// 初始化全屏监听
|
||||||
this.$store.commit('d2admin/fullscreen/listen')
|
this.$store.dispatch('d2admin/fullscreen/listen')
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
// 监听路由 控制侧边栏显示
|
// 监听路由 控制侧边栏显示
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ export default {
|
|||||||
title: '基础功能',
|
title: '基础功能',
|
||||||
children: [
|
children: [
|
||||||
{ path: `${pre}demo1`, title: '基础表格' },
|
{ path: `${pre}demo1`, title: '基础表格' },
|
||||||
|
{ path: `${pre}demo27`, title: '加载状态' },
|
||||||
|
{ path: `${pre}demo28`, title: '自定义加载状态' },
|
||||||
{ path: `${pre}demo2`, title: '带斑马纹表格' },
|
{ path: `${pre}demo2`, title: '带斑马纹表格' },
|
||||||
{ path: `${pre}demo3`, title: '带边框表格' },
|
{ path: `${pre}demo3`, title: '带边框表格' },
|
||||||
{ path: `${pre}demo4`, title: '带状态表格' },
|
{ path: `${pre}demo4`, title: '带状态表格' },
|
||||||
@@ -28,6 +30,7 @@ export default {
|
|||||||
{
|
{
|
||||||
title: '数据操作',
|
title: '数据操作',
|
||||||
children: [
|
children: [
|
||||||
|
{ path: `${pre}demo29`, title: '分页' },
|
||||||
{ path: `${pre}demo16`, title: '新增数据' },
|
{ path: `${pre}demo16`, title: '新增数据' },
|
||||||
{ path: `${pre}demo17`, title: '修改数据' },
|
{ path: `${pre}demo17`, title: '修改数据' },
|
||||||
{ path: `${pre}demo18`, title: '删除数据' },
|
{ path: `${pre}demo18`, title: '删除数据' },
|
||||||
|
|||||||
54
src/pages/demo/d2-crud/demo27/code.js
Normal file
54
src/pages/demo/d2-crud/demo27/code.js
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
export default `<template>
|
||||||
|
<div>
|
||||||
|
<d2-crud
|
||||||
|
:columns="columns"
|
||||||
|
:data="data"
|
||||||
|
:loading="loading"/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '日期',
|
||||||
|
key: 'date'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
key: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '地址',
|
||||||
|
key: 'address'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
loading: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>`
|
||||||
1
src/pages/demo/d2-crud/demo27/doc.md
Normal file
1
src/pages/demo/d2-crud/demo27/doc.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
在 `D2 Crud` 组件中传入 `loading` ,即可控制表格加载状态,`loading` 的可选值为 `true` 和 `false`。代码如下:
|
||||||
76
src/pages/demo/d2-crud/demo27/index.vue
Normal file
76
src/pages/demo/d2-crud/demo27/index.vue
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
<template>
|
||||||
|
<d2-container>
|
||||||
|
<template slot="header">加载状态</template>
|
||||||
|
<el-button @click="handleLoading">点我切换加载状态</el-button>
|
||||||
|
<d2-crud
|
||||||
|
style="margin-top: 10px"
|
||||||
|
:columns="columns"
|
||||||
|
:data="data"
|
||||||
|
:loading="loading"/>
|
||||||
|
<el-card shadow="never" class="d2-mb">
|
||||||
|
<d2-markdown :source="doc"/>
|
||||||
|
</el-card>
|
||||||
|
<el-card shadow="never" class="d2-mb">
|
||||||
|
<d2-highlight :code="code"/>
|
||||||
|
</el-card>
|
||||||
|
<template slot="footer">
|
||||||
|
<d2-link-btn title="文档" link="https://d2-projects.github.io/d2-admin-doc/zh/ecosystem-d2-crud/"/>
|
||||||
|
</template>
|
||||||
|
</d2-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import doc from './doc.md'
|
||||||
|
import code from './code.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
doc,
|
||||||
|
code,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '日期',
|
||||||
|
key: 'date'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
key: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '地址',
|
||||||
|
key: 'address'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
loading: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleLoading () {
|
||||||
|
this.loading = !this.loading
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
60
src/pages/demo/d2-crud/demo28/code.js
Normal file
60
src/pages/demo/d2-crud/demo28/code.js
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
export default `<template>
|
||||||
|
<div>
|
||||||
|
<d2-crud
|
||||||
|
:columns="columns"
|
||||||
|
:data="data"
|
||||||
|
:loading="loading"
|
||||||
|
:loading-options="loadingOptions"/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '日期',
|
||||||
|
key: 'date'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
key: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '地址',
|
||||||
|
key: 'address'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
loading: true,
|
||||||
|
loadingOptions: {
|
||||||
|
text: '拼命加载中',
|
||||||
|
spinner: 'el-icon-loading',
|
||||||
|
background: 'rgba(0, 0, 0, 0.8)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>`
|
||||||
1
src/pages/demo/d2-crud/demo28/doc.md
Normal file
1
src/pages/demo/d2-crud/demo28/doc.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
在 `D2 Crud` 组件中传入 `loading-options` ,即可自定义表格加载状态。代码如下:
|
||||||
82
src/pages/demo/d2-crud/demo28/index.vue
Normal file
82
src/pages/demo/d2-crud/demo28/index.vue
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<template>
|
||||||
|
<d2-container>
|
||||||
|
<template slot="header">自定义加载状态</template>
|
||||||
|
<el-button @click="handleLoading">点我切换加载状态</el-button>
|
||||||
|
<d2-crud
|
||||||
|
style="margin-top: 10px"
|
||||||
|
:columns="columns"
|
||||||
|
:data="data"
|
||||||
|
:loading="loading"
|
||||||
|
:loading-options="loadingOptions"/>
|
||||||
|
<el-card shadow="never" class="d2-mb">
|
||||||
|
<d2-markdown :source="doc"/>
|
||||||
|
</el-card>
|
||||||
|
<el-card shadow="never" class="d2-mb">
|
||||||
|
<d2-highlight :code="code"/>
|
||||||
|
</el-card>
|
||||||
|
<template slot="footer">
|
||||||
|
<d2-link-btn title="文档" link="https://d2-projects.github.io/d2-admin-doc/zh/ecosystem-d2-crud/"/>
|
||||||
|
</template>
|
||||||
|
</d2-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import doc from './doc.md'
|
||||||
|
import code from './code.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
doc,
|
||||||
|
code,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '日期',
|
||||||
|
key: 'date'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
key: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '地址',
|
||||||
|
key: 'address'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
loading: true,
|
||||||
|
loadingOptions: {
|
||||||
|
text: '拼命加载中',
|
||||||
|
spinner: 'el-icon-loading',
|
||||||
|
background: 'rgba(0, 0, 0, 0.8)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleLoading () {
|
||||||
|
this.loading = !this.loading
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
113
src/pages/demo/d2-crud/demo29/code.js
Normal file
113
src/pages/demo/d2-crud/demo29/code.js
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
export default `<template>
|
||||||
|
<div>
|
||||||
|
<d2-crud
|
||||||
|
:columns="columns"
|
||||||
|
:data="data"
|
||||||
|
:pagination="pagination"/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: 'ID',
|
||||||
|
key: 'id'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '日期',
|
||||||
|
key: 'date'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
key: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '地址',
|
||||||
|
key: 'address'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 11,
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 12,
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
pagination: {
|
||||||
|
pageSize: 5,
|
||||||
|
layout: 'prev, pager, next, total'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>`
|
||||||
1
src/pages/demo/d2-crud/demo29/doc.md
Normal file
1
src/pages/demo/d2-crud/demo29/doc.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
在 `D2 Crud` 组件中传入 `pagination` 对象,即可开启分页。代码如下:
|
||||||
128
src/pages/demo/d2-crud/demo29/index.vue
Normal file
128
src/pages/demo/d2-crud/demo29/index.vue
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
<template>
|
||||||
|
<d2-container>
|
||||||
|
<template slot="header">分页</template>
|
||||||
|
<d2-crud
|
||||||
|
:columns="columns"
|
||||||
|
:data="data"
|
||||||
|
:pagination="pagination"/>
|
||||||
|
<el-card shadow="never" class="d2-mb">
|
||||||
|
<d2-markdown :source="doc"/>
|
||||||
|
</el-card>
|
||||||
|
<el-card shadow="never" class="d2-mb">
|
||||||
|
<d2-highlight :code="code"/>
|
||||||
|
</el-card>
|
||||||
|
<template slot="footer">
|
||||||
|
<d2-link-btn title="文档" link="https://d2-projects.github.io/d2-admin-doc/zh/ecosystem-d2-crud/"/>
|
||||||
|
</template>
|
||||||
|
</d2-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import doc from './doc.md'
|
||||||
|
import code from './code.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
doc,
|
||||||
|
code,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: 'ID',
|
||||||
|
key: 'id'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '日期',
|
||||||
|
key: 'date'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
key: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '地址',
|
||||||
|
key: 'address'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
date: '2016-05-02',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1518 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
date: '2016-05-04',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1517 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 11,
|
||||||
|
date: '2016-05-01',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1519 弄'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 12,
|
||||||
|
date: '2016-05-03',
|
||||||
|
name: '王小虎',
|
||||||
|
address: '上海市普陀区金沙江路 1516 弄'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
pagination: {
|
||||||
|
pageSize: 5,
|
||||||
|
layout: 'prev, pager, next, total'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -8,10 +8,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapMutations } from 'vuex'
|
import { mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations('d2admin/fullscreen', [
|
...mapActions('d2admin/fullscreen', [
|
||||||
'toggle'
|
'toggle'
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<d2-container type="card">
|
<d2-container type="card">
|
||||||
<el-radio-group v-model="currentValue" @change="sizeSet">
|
<el-radio-group v-model="currentValue" @change="set">
|
||||||
<el-radio-button label="default"></el-radio-button>
|
<el-radio-button label="default"></el-radio-button>
|
||||||
<el-radio-button label="medium"></el-radio-button>
|
<el-radio-button label="medium"></el-radio-button>
|
||||||
<el-radio-button label="small"></el-radio-button>
|
<el-radio-button label="small"></el-radio-button>
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations } from 'vuex'
|
import { mapState, mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
@@ -31,9 +31,9 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({
|
...mapActions('d2admin/size', [
|
||||||
sizeSet: 'd2admin/size/set'
|
'set'
|
||||||
})
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations } from 'vuex'
|
import { mapState, mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
@@ -48,7 +48,7 @@ export default {
|
|||||||
])
|
])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations('d2admin/theme', [
|
...mapActions('d2admin/theme', [
|
||||||
'set'
|
'set'
|
||||||
]),
|
]),
|
||||||
handleSelectTheme (name) {
|
handleSelectTheme (name) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations } from 'vuex'
|
import { mapState, mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
computed: {
|
computed: {
|
||||||
...mapState('d2admin/transition', [
|
...mapState('d2admin/transition', [
|
||||||
@@ -18,7 +18,7 @@ export default {
|
|||||||
])
|
])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations('d2admin/transition', [
|
...mapActions('d2admin/transition', [
|
||||||
'set'
|
'set'
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ router.afterEach(to => {
|
|||||||
const app = router.app
|
const app = router.app
|
||||||
const { name, params, query } = to
|
const { name, params, query } = to
|
||||||
// 多页控制 打开新的页面
|
// 多页控制 打开新的页面
|
||||||
app.$store.commit('d2admin/page/open', { name, params, query })
|
app.$store.dispatch('d2admin/page/open', { name, params, query })
|
||||||
// 更改标题
|
// 更改标题
|
||||||
util.title(to.meta.title)
|
util.title(to.meta.title)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
c62802e4146a602e5c498cdb99205b56768d4047
|
b2bf5f06d7bc6fbdb1464a1eea0e2eae737ea6af
|
||||||
@@ -12,9 +12,7 @@ export default {
|
|||||||
* @param {Object} param password {String} 密码
|
* @param {Object} param password {String} 密码
|
||||||
* @param {Object} param route {Object} 登录成功后定向的路由对象
|
* @param {Object} param route {Object} 登录成功后定向的路由对象
|
||||||
*/
|
*/
|
||||||
login ({
|
login ({ dispatch }, {
|
||||||
commit
|
|
||||||
}, {
|
|
||||||
vm,
|
vm,
|
||||||
username,
|
username,
|
||||||
password,
|
password,
|
||||||
@@ -27,7 +25,7 @@ export default {
|
|||||||
username,
|
username,
|
||||||
password
|
password
|
||||||
})
|
})
|
||||||
.then(res => {
|
.then(async res => {
|
||||||
// 设置 cookie 一定要存 uuid 和 token 两个 cookie
|
// 设置 cookie 一定要存 uuid 和 token 两个 cookie
|
||||||
// 整个系统依赖这两个数据进行校验和存储
|
// 整个系统依赖这两个数据进行校验和存储
|
||||||
// uuid 是用户身份唯一标识 用户注册的时候确定 并且不可改变 不可重复
|
// uuid 是用户身份唯一标识 用户注册的时候确定 并且不可改变 不可重复
|
||||||
@@ -36,11 +34,11 @@ export default {
|
|||||||
util.cookies.set('uuid', res.uuid)
|
util.cookies.set('uuid', res.uuid)
|
||||||
util.cookies.set('token', res.token)
|
util.cookies.set('token', res.token)
|
||||||
// 设置 vuex 用户信息
|
// 设置 vuex 用户信息
|
||||||
commit('d2admin/user/set', {
|
await dispatch('d2admin/user/set', {
|
||||||
name: res.name
|
name: res.name
|
||||||
}, { root: true })
|
}, { root: true })
|
||||||
// 用户登录后从持久化数据加载一系列的设置
|
// 用户登录后从持久化数据加载一系列的设置
|
||||||
commit('load')
|
await dispatch('load')
|
||||||
// 更新路由 尝试去获取 cookie 里保存的需要重定向的页面完整地址
|
// 更新路由 尝试去获取 cookie 里保存的需要重定向的页面完整地址
|
||||||
const path = util.cookies.get('redirect')
|
const path = util.cookies.get('redirect')
|
||||||
// 根据是否存有重定向页面判断如何重定向
|
// 根据是否存有重定向页面判断如何重定向
|
||||||
@@ -49,9 +47,7 @@ export default {
|
|||||||
util.cookies.remove('redirect')
|
util.cookies.remove('redirect')
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.group('登录结果')
|
|
||||||
console.log('err: ', err)
|
console.log('err: ', err)
|
||||||
console.groupEnd()
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
@@ -92,26 +88,28 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
logout()
|
logout()
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
|
||||||
mutations: {
|
|
||||||
/**
|
/**
|
||||||
* @description 用户登录后从持久化数据加载一系列的设置
|
* @description 用户登录后从持久化数据加载一系列的设置
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
*/
|
*/
|
||||||
load (state) {
|
load ({ commit, dispatch }) {
|
||||||
// DB -> store 加载用户名
|
return new Promise(async resolve => {
|
||||||
this.commit('d2admin/user/load')
|
// DB -> store 加载用户名
|
||||||
// DB -> store 加载主题
|
await dispatch('d2admin/user/load', null, { root: true })
|
||||||
this.commit('d2admin/theme/load')
|
// DB -> store 加载主题
|
||||||
// DB -> store 加载页面过渡效果设置
|
await dispatch('d2admin/theme/load', null, { root: true })
|
||||||
this.commit('d2admin/transition/load')
|
// DB -> store 加载页面过渡效果设置
|
||||||
// DB -> store 持久化数据加载上次退出时的多页列表
|
await dispatch('d2admin/transition/load', null, { root: true })
|
||||||
this.commit('d2admin/page/openedLoad')
|
// DB -> store 持久化数据加载上次退出时的多页列表
|
||||||
// DB -> store 持久化数据加载侧边栏折叠状态
|
await dispatch('d2admin/page/openedLoad', null, { root: true })
|
||||||
this.commit('d2admin/menu/asideCollapseLoad')
|
// DB -> store 持久化数据加载侧边栏折叠状态
|
||||||
// DB -> store 持久化数据加载全局尺寸
|
await dispatch('d2admin/menu/asideCollapseLoad', null, { root: true })
|
||||||
this.commit('d2admin/size/load')
|
// DB -> store 持久化数据加载全局尺寸
|
||||||
|
await dispatch('d2admin/size/load', null, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,31 +6,42 @@ export default {
|
|||||||
// 全屏激活
|
// 全屏激活
|
||||||
active: false
|
active: false
|
||||||
},
|
},
|
||||||
mutations: {
|
actions: {
|
||||||
/**
|
/**
|
||||||
* @description 初始化监听
|
* @description 初始化监听
|
||||||
*/
|
*/
|
||||||
listen () {
|
listen ({ commit }) {
|
||||||
if (screenfull.enabled) {
|
return new Promise(resolve => {
|
||||||
screenfull.on('change', () => {
|
if (screenfull.enabled) {
|
||||||
if (!screenfull.isFullscreen) {
|
screenfull.on('change', () => {
|
||||||
this.commit('d2admin/fullscreen/set', false)
|
console.log('1')
|
||||||
}
|
if (!screenfull.isFullscreen) {
|
||||||
})
|
commit('set', false)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* @description 切换全屏
|
* @description 切换全屏
|
||||||
*/
|
*/
|
||||||
toggle () {
|
toggle ({ commit }) {
|
||||||
if (screenfull.isFullscreen) {
|
return new Promise(resolve => {
|
||||||
screenfull.exit()
|
if (screenfull.isFullscreen) {
|
||||||
this.commit('d2admin/fullscreen/set', false)
|
screenfull.exit()
|
||||||
} else {
|
commit('set', false)
|
||||||
screenfull.request()
|
} else {
|
||||||
this.commit('d2admin/fullscreen/set', true)
|
screenfull.request()
|
||||||
}
|
commit('set', true)
|
||||||
},
|
}
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
/**
|
/**
|
||||||
* @description 设置 store 里的全屏状态
|
* @description 设置 store 里的全屏状态
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
|
|||||||
@@ -24,16 +24,6 @@ export default {
|
|||||||
return state.list.filter(l => l.type === 'error').length
|
return state.list.filter(l => l.type === 'error').length
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mutations: {
|
|
||||||
/**
|
|
||||||
* @description 清空日志
|
|
||||||
* @param {Object} state vuex state
|
|
||||||
*/
|
|
||||||
clean (state) {
|
|
||||||
// store 赋值
|
|
||||||
state.list = []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
actions: {
|
actions: {
|
||||||
/**
|
/**
|
||||||
* @description 添加一个日志
|
* @description 添加一个日志
|
||||||
@@ -70,5 +60,15 @@ export default {
|
|||||||
info: toString(info)
|
info: toString(info)
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
/**
|
||||||
|
* @description 清空日志
|
||||||
|
* @param {Object} state vuex state
|
||||||
|
*/
|
||||||
|
clean (state) {
|
||||||
|
// store 赋值
|
||||||
|
state.list = []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,64 @@ export default {
|
|||||||
// 侧边栏收缩
|
// 侧边栏收缩
|
||||||
asideCollapse: setting.menu.asideCollapse
|
asideCollapse: setting.menu.asideCollapse
|
||||||
},
|
},
|
||||||
|
actions: {
|
||||||
|
/**
|
||||||
|
* 设置侧边栏展开或者收缩
|
||||||
|
* @param {Object} state vuex state
|
||||||
|
* @param {Boolean} collapse is collapse
|
||||||
|
*/
|
||||||
|
asideCollapseSet ({ state, dispatch }, collapse) {
|
||||||
|
return new Promise(async resolve => {
|
||||||
|
// store 赋值
|
||||||
|
state.asideCollapse = collapse
|
||||||
|
// 持久化
|
||||||
|
await dispatch('d2admin/db/set', {
|
||||||
|
dbName: 'sys',
|
||||||
|
path: 'menu.asideCollapse',
|
||||||
|
value: state.asideCollapse,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 切换侧边栏展开和收缩
|
||||||
|
* @param {Object} state vuex state
|
||||||
|
*/
|
||||||
|
asideCollapseToggle ({ state, dispatch }) {
|
||||||
|
return new Promise(async resolve => {
|
||||||
|
// store 赋值
|
||||||
|
state.asideCollapse = !state.asideCollapse
|
||||||
|
// 持久化
|
||||||
|
await dispatch('d2admin/db/set', {
|
||||||
|
dbName: 'sys',
|
||||||
|
path: 'menu.asideCollapse',
|
||||||
|
value: state.asideCollapse,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 从持久化数据读取侧边栏展开或者收缩
|
||||||
|
* @param {Object} state vuex state
|
||||||
|
*/
|
||||||
|
asideCollapseLoad ({ state, dispatch }) {
|
||||||
|
return new Promise(async resolve => {
|
||||||
|
// store 赋值
|
||||||
|
state.asideCollapse = await dispatch('d2admin/db/get', {
|
||||||
|
dbName: 'sys',
|
||||||
|
path: 'menu.asideCollapse',
|
||||||
|
defaultValue: setting.menu.asideCollapse,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
/**
|
/**
|
||||||
* @description 设置顶栏菜单
|
* @description 设置顶栏菜单
|
||||||
@@ -29,50 +87,6 @@ export default {
|
|||||||
asideSet (state, menu) {
|
asideSet (state, menu) {
|
||||||
// store 赋值
|
// store 赋值
|
||||||
state.aside = menu
|
state.aside = menu
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 设置侧边栏展开或者收缩
|
|
||||||
* @param {Object} state vuex state
|
|
||||||
* @param {Boolean} collapse is collapse
|
|
||||||
*/
|
|
||||||
asideCollapseSet (state, collapse) {
|
|
||||||
// store 赋值
|
|
||||||
state.asideCollapse = collapse
|
|
||||||
// 持久化
|
|
||||||
this.dispatch('d2admin/db/set', {
|
|
||||||
dbName: 'sys',
|
|
||||||
path: 'menu.asideCollapse',
|
|
||||||
value: state.asideCollapse,
|
|
||||||
user: true
|
|
||||||
})
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 切换侧边栏展开和收缩
|
|
||||||
* @param {Object} state vuex state
|
|
||||||
*/
|
|
||||||
asideCollapseToggle (state) {
|
|
||||||
// store 赋值
|
|
||||||
state.asideCollapse = !state.asideCollapse
|
|
||||||
// 持久化
|
|
||||||
this.dispatch('d2admin/db/set', {
|
|
||||||
dbName: 'sys',
|
|
||||||
path: 'menu.asideCollapse',
|
|
||||||
value: state.asideCollapse,
|
|
||||||
user: true
|
|
||||||
})
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 从持久化数据读取侧边栏展开或者收缩
|
|
||||||
* @param {Object} state vuex state
|
|
||||||
*/
|
|
||||||
async asideCollapseLoad (state) {
|
|
||||||
// store 赋值
|
|
||||||
state.asideCollapse = await this.dispatch('d2admin/db/get', {
|
|
||||||
dbName: 'sys',
|
|
||||||
path: 'menu.asideCollapse',
|
|
||||||
defaultValue: setting.menu.asideCollapse,
|
|
||||||
user: true
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
9abf067fc9ee38d5c28f4b1450b9df450c2583bc
|
3cac6fb289611555b60a92937c3b5ba99e7b9ec1
|
||||||
@@ -4,34 +4,42 @@ export default {
|
|||||||
// 尺寸
|
// 尺寸
|
||||||
value: '' // medium small mini
|
value: '' // medium small mini
|
||||||
},
|
},
|
||||||
mutations: {
|
actions: {
|
||||||
/**
|
/**
|
||||||
* @description 设置尺寸
|
* @description 设置尺寸
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
* @param {String} size 尺寸
|
* @param {String} size 尺寸
|
||||||
*/
|
*/
|
||||||
set (state, size) {
|
set ({ state, dispatch }, size) {
|
||||||
// store 赋值
|
return new Promise(async resolve => {
|
||||||
state.value = size
|
// store 赋值
|
||||||
// 持久化
|
state.value = size
|
||||||
this.dispatch('d2admin/db/set', {
|
// 持久化
|
||||||
dbName: 'sys',
|
await dispatch('d2admin/db/set', {
|
||||||
path: 'size.value',
|
dbName: 'sys',
|
||||||
value: state.value,
|
path: 'size.value',
|
||||||
user: true
|
value: state.value,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* @description 从持久化数据读取尺寸设置
|
* @description 从持久化数据读取尺寸设置
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
*/
|
*/
|
||||||
async load (state) {
|
load ({ state, dispatch }) {
|
||||||
// store 赋值
|
return new Promise(async resolve => {
|
||||||
state.value = await this.dispatch('d2admin/db/get', {
|
// store 赋值
|
||||||
dbName: 'sys',
|
state.value = await dispatch('d2admin/db/get', {
|
||||||
path: 'size.value',
|
dbName: 'sys',
|
||||||
defaultValue: 'default',
|
path: 'size.value',
|
||||||
user: true
|
defaultValue: 'default',
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,40 +18,50 @@ export default {
|
|||||||
return state.list.find(theme => theme.name === state.activeName)
|
return state.list.find(theme => theme.name === state.activeName)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mutations: {
|
actions: {
|
||||||
/**
|
/**
|
||||||
* @description 激活一个主题
|
* @description 激活一个主题
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
* @param {String} themeValue 需要激活的主题名称
|
* @param {String} themeValue 需要激活的主题名称
|
||||||
*/
|
*/
|
||||||
set (state, themeName) {
|
set ({ state, commit, dispatch }, themeName) {
|
||||||
// 检查这个主题在主题列表里是否存在
|
return new Promise(async resolve => {
|
||||||
state.activeName = state.list.find(e => e.name === themeName) ? themeName : state.list[0].name
|
// 检查这个主题在主题列表里是否存在
|
||||||
// 将 vuex 中的主题应用到 dom
|
state.activeName = state.list.find(e => e.name === themeName) ? themeName : state.list[0].name
|
||||||
this.commit('d2admin/theme/dom')
|
// 将 vuex 中的主题应用到 dom
|
||||||
// 持久化
|
commit('dom')
|
||||||
this.dispatch('d2admin/db/set', {
|
// 持久化
|
||||||
dbName: 'sys',
|
await dispatch('d2admin/db/set', {
|
||||||
path: 'theme.activeName',
|
dbName: 'sys',
|
||||||
value: state.activeName,
|
path: 'theme.activeName',
|
||||||
user: true
|
value: state.activeName,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* @description 从持久化数据加载主题设置
|
* @description 从持久化数据加载主题设置
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
*/
|
*/
|
||||||
async load (state) {
|
load ({ state, commit, dispatch }) {
|
||||||
// store 赋值
|
return new Promise(async resolve => {
|
||||||
state.activeName = await this.dispatch('d2admin/db/get', {
|
// store 赋值
|
||||||
dbName: 'sys',
|
state.activeName = await dispatch('d2admin/db/get', {
|
||||||
path: 'theme.activeName',
|
dbName: 'sys',
|
||||||
defaultValue: state.list[0].name,
|
path: 'theme.activeName',
|
||||||
user: true
|
defaultValue: state.list[0].name,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// 将 vuex 中的主题应用到 dom
|
||||||
|
commit('dom')
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
})
|
})
|
||||||
// 更新到页面
|
}
|
||||||
this.commit('d2admin/theme/dom')
|
},
|
||||||
},
|
mutations: {
|
||||||
/**
|
/**
|
||||||
* @description 将 vuex 中的主题应用到 dom
|
* @description 将 vuex 中的主题应用到 dom
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
|
|||||||
@@ -7,34 +7,42 @@ export default {
|
|||||||
// 是否开启页面过度动画
|
// 是否开启页面过度动画
|
||||||
active: setting.transition.active
|
active: setting.transition.active
|
||||||
},
|
},
|
||||||
mutations: {
|
actions: {
|
||||||
/**
|
/**
|
||||||
* @description 设置开启状态
|
* @description 设置开启状态
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
* @param {Boolean} active 新的状态
|
* @param {Boolean} active 新的状态
|
||||||
*/
|
*/
|
||||||
set (state, active) {
|
set ({ state, dispatch }, active) {
|
||||||
// store 赋值
|
return new Promise(async resolve => {
|
||||||
state.active = active
|
// store 赋值
|
||||||
// 持久化
|
state.active = active
|
||||||
this.dispatch('d2admin/db/set', {
|
// 持久化
|
||||||
dbName: 'sys',
|
await dispatch('d2admin/db/set', {
|
||||||
path: 'transition.active',
|
dbName: 'sys',
|
||||||
value: state.active,
|
path: 'transition.active',
|
||||||
user: true
|
value: state.active,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 从数据库读取页面过渡动画设置
|
* 从数据库读取页面过渡动画设置
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
*/
|
*/
|
||||||
async load (state) {
|
load ({ state, dispatch }) {
|
||||||
// store 赋值
|
return new Promise(async resolve => {
|
||||||
state.active = await this.dispatch('d2admin/db/get', {
|
// store 赋值
|
||||||
dbName: 'sys',
|
state.active = await dispatch('d2admin/db/get', {
|
||||||
path: 'transition.active',
|
dbName: 'sys',
|
||||||
defaultValue: setting.transition.active,
|
path: 'transition.active',
|
||||||
user: true
|
defaultValue: setting.transition.active,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,34 +7,42 @@ export default {
|
|||||||
// 用户信息
|
// 用户信息
|
||||||
info: setting.user.info
|
info: setting.user.info
|
||||||
},
|
},
|
||||||
mutations: {
|
actions: {
|
||||||
/**
|
/**
|
||||||
* @description 设置用户数据
|
* @description 设置用户数据
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
* @param {*} info info
|
* @param {*} info info
|
||||||
*/
|
*/
|
||||||
set (state, info) {
|
set ({ state, dispatch }, info) {
|
||||||
// store 赋值
|
return new Promise(async resolve => {
|
||||||
state.info = info
|
// store 赋值
|
||||||
// 持久化
|
state.info = info
|
||||||
this.dispatch('d2admin/db/set', {
|
// 持久化
|
||||||
dbName: 'sys',
|
await dispatch('d2admin/db/set', {
|
||||||
path: 'user.info',
|
dbName: 'sys',
|
||||||
value: info,
|
path: 'user.info',
|
||||||
user: true
|
value: info,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* @description 从数据库取用户数据
|
* @description 从数据库取用户数据
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
*/
|
*/
|
||||||
async load (state) {
|
load ({ state, dispatch }) {
|
||||||
// store 赋值
|
return new Promise(async resolve => {
|
||||||
state.info = await this.dispatch('d2admin/db/get', {
|
// store 赋值
|
||||||
dbName: 'sys',
|
state.info = await dispatch('d2admin/db/get', {
|
||||||
path: 'user.info',
|
dbName: 'sys',
|
||||||
defaultValue: setting.user.info,
|
path: 'user.info',
|
||||||
user: true
|
defaultValue: setting.user.info,
|
||||||
|
user: true
|
||||||
|
}, { root: true })
|
||||||
|
// end
|
||||||
|
resolve()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
98d7a73c1fb484dbcca94b8f6a41f916b8a30c20
|
9f0de1b1283741f3ab3b7a925f9b96808cfb51e5
|
||||||
Reference in New Issue
Block a user