是一个后台前端解决方案,基于 vue 和 element-ui实现
需要在本地安装 node 和 git
├── build # 构建相关
├── mock # 项目mock 模拟数据
├── plop-templates # 基本模板
├── public # 静态资源
│ │── favicon.ico # favicon图标
│ └── index.html # html模板
├── src # 源代码
│ ├── api # 所有请求
│ ├── assets # 主题 字体等静态资源
│ ├── components # 全局公用组件
│ ├── directive # 全局指令
│ ├── filters # 全局 filter
│ ├── icons # 项目所有 svg icons
│ ├── lang # 国际化 language
│ ├── layout # 全局 layout
│ ├── router # 路由
│ ├── store # 全局 store管理
│ ├── styles # 全局样式
│ ├── utils # 全局公用方法
│ ├── vendor # 公用vendor
│ ├── views # views 所有页面
│ ├── App.vue # 入口页面
│ ├── main.js # 入口文件 加载组件 初始化等
│ └── permission.js # 权限管理
├── tests # 测试
├── .env.xxx # 环境变量配置
├── .eslintrc.js # eslint 配置项
├── .babelrc # babel-loader 配置
├── .travis.yml # 自动化CI配置
├── vue.config.js # vue-cli 配置
├── postcss.config.js # postcss 配置
└── package.json # package.json
安装基础模板
https://github.com/PanJiaChen/vue-admin-template.git
再使用 npm install 安装依赖
安装vuex-persistedstate
npm install vuex-persistedstate
在store目录下index引入
import createPersistedState from 'vuex-persistedstate'
配置vuex-persistedstate
const PERSIST_PATHS = ['user']
const store = new Vuex.Store({
state: {},
modules: {
app,
settings,
user,
permission,
tagsView
},
getters,
plugins: [createPersistedState({
storage: window.sessionStorage,
paths: PERSIST_PATHS
})]
})
或者在app.vue加入如下代码
export default {
name: 'App',
created () {
//在页面加载时读取sessionStorage里的状态信息
if (sessionStorage.getItem("store") ) {
this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store"))))
}
//在页面刷新时将vuex里的信息保存到sessionStorage里
window.addEventListener("beforeunload",()=>{
sessionStorage.setItem("store",JSON.stringify(this.$store.state))
})
}
}
<el-table-column label="入职时间" sortable prop="timeOfEntry">
<template slot-scope="obj">
{{
obj.row.timeOfEntry | 过滤器
}}
</template>
</el-table-column>
安装 moment
npm i moment
编写过滤器函数
import moment from 'moment'
export function formatTime(value) {
return moment(value * 1000).format('YYYY-MM-DD HH:mm:ss')
}
在 main.js 中全局注册过滤器
import * as filters from '@/filters'
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
})
安装 xlsx 插件
npm i xlsx
注册全局的导入excel组件
import CommonTools from './CommonTools'
import UploadExcel from './UploadExcel'
export default {
install(Vue) {
Vue.component('CommonTools', CommonTools) // 注册工具栏组件
Vue.component('UploadExcel', UploadExcel) // 注册导入excel组件
}
}
安装如下命令
npm install xlsx file-saver -S
npm install script-loader -S -D
安装生成二维码的插件
npm i qrcode
qrcode的用法是
QrCode.toCanvas(dom, info)
将canvas标签放到dialog的弹层中
<el-dialog title="二维码" :visible.sync="showCodeDialog" @opened="showQrCode"
@close="imgUrl=''">
<el-row type="flex" justify="center">
<canvas ref="myCanvas" />
</el-row>
</el-dialog>
点击用户显示弹层并将图片地址转化成二维码
showQrCode(url) {
if (url) {
this.showCodeDialog = true
this.$nextTick(() => {
QrCode.toCanvas(this.$refs.myCanvas, url)
})
} else {
this.$message.warning('该用户还未上传头像')
}
}