├── public
├── favicon.ico
├── img
│ ├── 0-1.jpg
│ ├── 0-2.jpg
│ ├── 0-3.png
│ ├── 0-6.png
│ └── github-16.png
└── index.html
├── src
├── assets
│ └── logo.png
├── App.vue
├── utils
│ ├── config.js
│ ├── sessionStorage.js
│ └── request.js
├── main.js
├── pages
│ ├── welfare
│ │ └── girls.vue
│ ├── org
│ │ ├── dept-add.vue
│ │ ├── dept-edit.vue
│ │ ├── role-add.vue
│ │ ├── permission-list.vue
│ │ ├── dept-list.vue
│ │ ├── role-list.vue
│ │ ├── role-edit.vue
│ │ ├── permission-add.vue
│ │ ├── user-add.vue
│ │ ├── user-edit.vue
│ │ ├── permission-edit.vue
│ │ └── user-list.vue
│ ├── book
│ │ ├── book-details.vue
│ │ ├── chapter-add.vue
│ │ ├── chapter-edit.vue
│ │ ├── book-read.vue
│ │ ├── author-list.vue
│ │ ├── author-details.vue
│ │ ├── chapter-list.vue
│ │ ├── author-add.vue
│ │ ├── author-edit.vue
│ │ ├── book-list.vue
│ │ ├── book-edit.vue
│ │ └── book-add.vue
│ ├── dictionary
│ │ ├── edit.vue
│ │ ├── add.vue
│ │ └── list.vue
│ ├── user
│ │ ├── password.vue
│ │ └── info.vue
│ ├── login.vue
│ └── home.vue
└── router
│ └── index.js
├── babel.config.js
├── vue.config.js
├── .gitignore
├── LICENSE
├── package.json
└── README.md
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zealon159/book-ms-ui/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/img/0-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zealon159/book-ms-ui/HEAD/public/img/0-1.jpg
--------------------------------------------------------------------------------
/public/img/0-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zealon159/book-ms-ui/HEAD/public/img/0-2.jpg
--------------------------------------------------------------------------------
/public/img/0-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zealon159/book-ms-ui/HEAD/public/img/0-3.png
--------------------------------------------------------------------------------
/public/img/0-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zealon159/book-ms-ui/HEAD/public/img/0-6.png
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zealon159/book-ms-ui/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/public/img/github-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zealon159/book-ms-ui/HEAD/public/img/github-16.png
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/src/utils/config.js:
--------------------------------------------------------------------------------
1 | /** 公共配置 */
2 |
3 | // API接口前缀
4 | export const baseApi = "/api";
5 |
6 | /** 图片路径处理 */
7 | export function handleImgUri(imgUrl){
8 | return this.baseApi + "/" + imgUrl;
9 | }
10 |
--------------------------------------------------------------------------------
/src/utils/sessionStorage.js:
--------------------------------------------------------------------------------
1 | let db = {
2 | save (key, value) {
3 | window.sessionStorage.setItem(key, JSON.stringify(value))
4 | },
5 | get (key) {
6 | return JSON.parse(window.sessionStorage.getItem(key))
7 | },
8 | remove (key) {
9 | window.sessionStorage.removeItem(key)
10 | },
11 | clear () {
12 | window.sessionStorage.clear()
13 | }
14 | }
15 |
16 | export default db
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | // vue.config.js
2 | module.exports = {
3 | publicPath: './',
4 | devServer: {
5 | port: 9000,
6 | proxy: {
7 | "/api": {
8 | //请求源地址
9 | target: 'http://localhost:8002',
10 | //是否跨域
11 | changeOrigin: true,
12 | ws: true,
13 | pathRewrite: {
14 | '^/api': ''
15 | }
16 | }
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | package-lock.json.json
4 | public/img/girls/00-0.jpg
5 | public/img/girls/00-1.jpg
6 | public/img/girls/00-2.jpg
7 | public/img/girls/00-3.jpg
8 | public/img/girls/00-4.jpg
9 | public/img/girls/00-5.jpg
10 | public/img/girls/00-6.jpg
11 | public/img/girls/00-7.jpg
12 | public/img/girls/00-8.jpg
13 | public/img/girls/00-9.jpg
14 | public/img/girls/00-10.jpg
15 | public/img/girls/00-11.jpg
16 | public/img/girls/00-12.jpg
17 | public/img/girls/00-13.jpg
18 | public/img/girls/00-14.jpg
19 | public/img/girls/00-15.jpg
20 | public/img/girls/00-16.jpg
21 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | book-ms
9 |
10 |
11 |
12 | We're sorry but swagger doesn't work properly without JavaScript enabled. Please enable it to continue.
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import ElementUI from 'element-ui'
4 | import 'element-ui/lib/theme-chalk/index.css'
5 | import iconPicker from 'vue-fontawesome-elementui-icon-picker'
6 | import {postRequest} from "./utils/request"
7 | import {postKeyValueRequest} from "./utils/request"
8 | import {putRequest} from "./utils/request"
9 | import {deleteRequest} from "./utils/request"
10 | import {getRequest} from "./utils/request"
11 | import router from "./router"
12 | import db from "./utils/sessionStorage"
13 | import * as config from "./utils/config"
14 |
15 | Vue.config.productionTip = false
16 | Vue.use(ElementUI)
17 | Vue.use(iconPicker)
18 |
19 | Vue.prototype.db = db
20 | Vue.prototype.config = config
21 | Vue.prototype.postRequest = postRequest;
22 | Vue.prototype.postKeyValueRequest = postKeyValueRequest;
23 | Vue.prototype.putRequest = putRequest;
24 | Vue.prototype.deleteRequest = deleteRequest;
25 | Vue.prototype.getRequest = getRequest;
26 |
27 | new Vue({
28 | router,
29 | render: h => h(App),
30 | }).$mount('#app')
31 |
--------------------------------------------------------------------------------
/src/pages/welfare/girls.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
11 |
12 |
13 |
35 |
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 光彩盛年
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "book-ms-ui",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "axios": "^0.19.1",
12 | "core-js": "^3.4.4",
13 | "element-ui": "^2.13.0",
14 | "vue": "^2.6.10",
15 | "vue-fontawesome-elementui-icon-picker": "^0.1.9",
16 | "vue-multiselect": "^2.1.6",
17 | "vue-router": "^3.1.5"
18 | },
19 | "devDependencies": {
20 | "@vue/cli-plugin-babel": "^4.1.0",
21 | "@vue/cli-plugin-eslint": "^4.1.0",
22 | "@vue/cli-service": "^4.1.0",
23 | "babel-eslint": "^10.0.3",
24 | "eslint": "^5.16.0",
25 | "eslint-plugin-vue": "^5.0.0",
26 | "vue-template-compiler": "^2.6.10"
27 | },
28 | "eslintConfig": {
29 | "root": true,
30 | "env": {
31 | "node": true
32 | },
33 | "extends": [
34 | "plugin:vue/essential",
35 | "eslint:recommended"
36 | ],
37 | "rules": {},
38 | "parserOptions": {
39 | "parser": "babel-eslint"
40 | }
41 | },
42 | "browserslist": [
43 | "> 1%",
44 | "last 2 versions"
45 | ]
46 | }
47 |
--------------------------------------------------------------------------------
/src/pages/org/dept-add.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | 立即创建
13 | 返回
14 |
15 |
16 |
17 |
18 |
19 |
60 |
61 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 微图书管理平台
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 演示地址:[http://books.zealon.cn/](http://books.zealon.cn/)
16 |
17 | ## 项目介绍
18 |
19 | 基于 vue.js 、element-ui 搭建一个极简的图书管理平台。项目功能不是很多,但是前后端分离的项目,该用到的技术点也都会涉及到,很适合开始准备学 vue 的同学,具体有以下特点:
20 |
21 | - 完备组织架构体系,基于 RBAC 模型实现用户权限配置
22 |
23 | - 基于导航守卫,动态生成路由、用户菜单、面包屑导航等
24 |
25 | - axios 异步请求统一封装,统一处理操作结果通知
26 | - element-ui 组件使用覆盖率达到 70% 以上
27 |
28 | 项目接口工程基于 SpringBoot2.x 开发,[点击进入仓库](https://github.com/Zealon159/book-ms-interface)
29 |
30 | ## 项目截图
31 |
32 | 
33 |
34 | 
35 |
36 | 
37 |
38 | 
39 |
40 | ## 其它说明
41 |
42 | 虽是一款图书管理平台,更恰切滴描述的话,其实是一个后台管理的脚手架,任何后台管理内容的方式都大同小异,无非是一套通用的组织权限管理,在这个基础上,也可以用来开发自己想维护的任何模块,对吧
43 |
44 | ## 快速开始
45 |
46 | ### 工程结构
47 |
48 | ```
49 | - assets / 资源
50 | - router / 路由
51 | - utils /
52 | - config / 静态配置
53 | - request / axios封装
54 | - sessionStorage / 本地存储封装
55 | - style / 样式文件
56 | - App.vue
57 | - vue.config.js
58 | - pages / 组件
59 | - book / 图书、章节、作者
60 | - dictionary / 数据字典
61 | - org / 组织、用户、角色、权限
62 | - user / 个人信息
63 | - welfare / 小福利
64 | ```
65 |
66 | ### 环境安装
67 |
68 | 1.拉取项目至本地
69 |
70 | 命令:`git clone https://github.com/Zealon159/book-ms-ui.git`
71 |
72 | 2.初始化npm依赖
73 |
74 | 使用cd命令进入本地工程目录,再用 cnpm 安装依赖,`cnpm install`
75 |
76 | 3.启动
77 |
78 | 命令:`npm run serve`,启动成功 `http://localhost:9000/ `,默认端口9000,可以进入 `vue.config.js` 配置文件修改端口
79 |
80 | ## License
81 |
82 | [MIT](https://github.com/Zealon159/book-ms-ui/blob/master/LICENSE)
83 |
84 | Copyright (c) 2020 光彩盛年
85 |
--------------------------------------------------------------------------------
/src/pages/org/dept-edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | 确认
13 | 返回
14 |
15 |
16 |
17 |
18 |
19 |
72 |
73 |
--------------------------------------------------------------------------------
/src/pages/book/book-details.vue:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
65 |
66 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import db from "../utils/sessionStorage"
4 | import {getRequest} from "../utils/request"
5 | Vue.use(Router)
6 |
7 | // 静态路由
8 | const login = r => require.ensure([], () => r(require('@/pages/login')), 'login');
9 | const home = r => require.ensure([], () => r(require('@/pages/home')), 'home');
10 | const userinfo = r => require.ensure([], () => r(require('@/pages/user/info')), 'userinfo');
11 | const pwd = r => require.ensure([], () => r(require('@/pages/user/password')), 'pwd');
12 | const constRouter = [
13 | {
14 | path: '/',
15 | name: '登录页',
16 | component: login,
17 | hidden: true
18 | }
19 | ]
20 |
21 | // 动态路由主页
22 | const dynamicRouter = [
23 | {
24 | path: '/home',
25 | name: '主页',
26 | component: home,
27 | hidden: true,
28 | children:[
29 | {
30 | path: '/userinfo',
31 | name: '个人中心',
32 | component: userinfo,
33 | hidden: false ,
34 | meta:[
35 | {"name":"个人中心","path":""}
36 | ]
37 | },
38 | {
39 | path: '/pwd',
40 | name: '修改密码',
41 | component: pwd,
42 | hidden: false ,
43 | meta:[
44 | {"name":"个人中心","path":"/userinfo"},{"name":"修改密码","path":""}
45 | ]
46 | }
47 | ]
48 | }
49 | ]
50 |
51 | let router = new Router({
52 | routes: constRouter
53 | })
54 |
55 | // 导航守卫,处理动态路由
56 | let asyncRouter
57 | router.beforeEach((to, from, next) => {
58 | let user = db.get("USER")
59 | let userRouter = db.get('USER_ROUTER')
60 |
61 | if(user && user.userId){
62 | if (!asyncRouter || asyncRouter=='') {
63 | if (!userRouter || userRouter=='' || userRouter==null) {
64 | getRequest('/system/org/permission/get-user-router', {}).then(resp => {
65 | if (resp.code == 200) {
66 | asyncRouter = resp.data
67 | if(resp.data.length>0){
68 | db.save('USER_ROUTER', resp.data)
69 | loadAsyncRouter(to, next)
70 | }
71 | }
72 | })
73 | } else {
74 | asyncRouter = userRouter
75 | loadAsyncRouter(to, next)
76 | }
77 | } else {
78 | next()
79 | }
80 | } else {
81 | next()
82 | }
83 | })
84 |
85 | // 载入异步路由
86 | function loadAsyncRouter (to, next) {
87 | if(asyncRouter.length > 0){
88 | asyncRouter = filterAsyncRouter(asyncRouter)
89 | dynamicRouter.find(v => v.path === '/home').children.push(...asyncRouter)
90 | router.addRoutes(dynamicRouter)
91 | }
92 | next({...to, replace: true})
93 | }
94 |
95 | // 过滤路由
96 | function filterAsyncRouter(routes){
97 | return routes.filter((route) => {
98 | route.component = resolveComponent(route.component)
99 | return true
100 | })
101 | }
102 |
103 | // 解析组件
104 | function resolveComponent (path) {
105 | return function (resolve) {
106 | import(`@/pages/${path}.vue`).then(mod => {
107 | resolve(mod)
108 | })
109 | }
110 | }
111 |
112 | export default router
--------------------------------------------------------------------------------
/src/pages/dictionary/edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 | {{dataForm.dicType}}
7 |
8 |
9 | {{dataForm.code}}
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 保存
19 | 返回
20 |
21 |
22 |
23 |
24 |
25 |
76 |
77 |
--------------------------------------------------------------------------------
/src/pages/book/chapter-add.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 | {{dataForm.bookId}}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
22 |
23 |
24 |
25 | 确认
26 | 返回
27 |
28 |
29 |
30 |
31 |
32 |
82 |
83 |
--------------------------------------------------------------------------------
/src/pages/book/chapter-edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 | {{dataForm.bookId}}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
22 |
23 |
24 |
25 | 保存
26 | 返回
27 |
28 |
29 |
30 |
31 |
32 |
87 |
88 |
--------------------------------------------------------------------------------
/src/pages/user/password.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 保存
15 | 返回
16 |
17 |
18 |
19 |
20 |
21 |
77 |
78 |
--------------------------------------------------------------------------------
/src/pages/org/role-add.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
22 |
23 |
24 |
25 | 立即创建
26 | 返回
27 |
28 |
29 |
30 |
31 |
32 |
93 |
94 |
--------------------------------------------------------------------------------
/src/pages/dictionary/add.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 保存
21 | 返回
22 |
23 |
24 |
25 |
26 |
27 |
82 |
83 |
--------------------------------------------------------------------------------
/src/utils/request.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios'
2 | import {Message} from 'element-ui';
3 | import router from '../router'
4 | import db from '../utils/sessionStorage'
5 | import * as config from '../utils/config'
6 |
7 | //axios.defaults.withCredentials = true;
8 | axios.interceptors.response.use(success => {
9 | if (success.status && success.status == 200 && success.data.status == 500) {
10 | Message.error({message: success.data.msg})
11 | return;
12 | }
13 | if (success.data.msg) {
14 | if(success.data.code == 200){
15 | Message.success({message: success.data.msg})
16 | }else{
17 | Message.warning({message: success.data.msg})
18 | }
19 | }
20 | return success.data;
21 | }, error => {
22 | if (error.response.status == 504 || error.response.status == 404) {
23 | Message.error({message: '服务器被吃了( ╯□╰ )'})
24 | } else if (error.response.status == 403) {
25 | Message.error({message: '权限不足,请联系管理员'})
26 | } else if (error.response.status == 401) {
27 | // 防止重复弹出消息
28 | if(db.get("LOGINFLAG") == "0"){
29 | Message.error({message: '尚未登录或登录状态已过期,请登录'})
30 | db.remove("LOGINFLAG")
31 | db.save("LOGINFLAG","1")
32 | }
33 | router.replace('/');
34 | } else {
35 | if (error.response.data.msg) {
36 | Message.error({message: error.response.data.msg})
37 | } else {
38 | Message.error({message: '未知错误!'})
39 | }
40 | }
41 | return;
42 | })
43 |
44 | let base = config.baseApi;
45 |
46 | export const postKeyValueRequest = (url, params) => {
47 | return axios({
48 | method: 'post',
49 | url: `${base}${url}`,
50 | data: params,
51 | transformRequest: [function (data) {
52 | let ret = '';
53 | for (let i in data) {
54 | ret += encodeURIComponent(i) + '=' + encodeURIComponent(data[i]) + '&'
55 | }
56 | return ret;
57 | }],
58 | headers: {
59 | 'Content-Type': 'application/x-www-form-urlencoded'
60 | }
61 | });
62 | }
63 | export const postRequest = (url, params) => {
64 | return axios({
65 | method: 'post',
66 | url: `${base}${url}`,
67 | data: params
68 | })
69 | }
70 | export const putRequest = (url, params) => {
71 | return axios({
72 | method: 'put',
73 | url: `${base}${url}`,
74 | data: params
75 | })
76 | }
77 | export const getRequest = (url, params) => {
78 | let apiUrl = `${base}${url}`;
79 | apiUrl = getApiUrl(apiUrl,params);
80 | // 请求
81 | return axios({
82 | method: 'get',
83 | url: apiUrl,
84 | data: params
85 | })
86 | }
87 | export const deleteRequest = (url, params) => {
88 | let apiUrl = `${base}${url}`;
89 | apiUrl = getApiUrl(apiUrl,params);
90 | return axios({
91 | method: 'delete',
92 | url: apiUrl,
93 | data: params
94 | })
95 | }
96 |
97 | // 处理参数转换
98 | function getApiUrl(url,params){
99 | let apiUrl = url;
100 | let i = 0;
101 | for (const key in params) {
102 | if (params.hasOwnProperty(key)) {
103 | const value = params[key];
104 | const param = key+"="+value;
105 | let s = '?';
106 | if ( i > 0 ){
107 | s = '&';
108 | }
109 | apiUrl = apiUrl+s+param;
110 | i++;
111 | }
112 | }
113 | return apiUrl;
114 | }
--------------------------------------------------------------------------------
/src/pages/org/permission-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 新增
7 |
8 |
9 |
10 |
16 |
17 | 还没有数据呢~ (⊙︿⊙)
18 |
19 |
20 |
21 | {{scope.row.name}}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 编辑
33 | 删除
35 |
36 |
37 |
38 |
39 |
40 |
41 |
95 |
96 |
--------------------------------------------------------------------------------
/src/pages/book/book-read.vue:
--------------------------------------------------------------------------------
1 |
2 |
21 |
22 |
23 |
80 |
81 |
--------------------------------------------------------------------------------
/src/pages/org/dept-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 新增
7 |
8 |
9 |
10 |
11 |
12 | 还没有数据呢~ (⊙︿⊙)
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 编辑
22 | 删除
24 |
25 |
26 |
27 |
28 |
39 |
40 |
41 |
42 |
102 |
103 |
--------------------------------------------------------------------------------
/src/pages/org/role-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 新增
7 |
8 |
9 |
10 |
11 |
12 | 还没有数据呢~ (⊙︿⊙)
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 编辑
22 | 删除
24 |
25 |
26 |
27 |
28 |
39 |
40 |
41 |
42 |
102 |
103 |
--------------------------------------------------------------------------------
/src/pages/dictionary/list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 新增
7 |
8 |
9 |
10 |
11 |
12 | 还没有数据呢~ (⊙︿⊙)
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | 编辑
26 | 删除
28 |
29 |
30 |
31 |
32 |
43 |
44 |
45 |
46 |
106 |
107 |
--------------------------------------------------------------------------------
/src/pages/book/author-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 新增
7 |
8 |
9 |
10 |
11 |
12 | 还没有数据呢~ (⊙︿⊙)
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | 查看
27 | 编辑
29 | 删除
31 |
32 |
33 |
34 |
35 |
46 |
47 |
48 |
49 |
112 |
113 |
--------------------------------------------------------------------------------
/src/pages/book/author-details.vue:
--------------------------------------------------------------------------------
1 |
2 |
33 |
34 |
35 |
84 |
85 |
--------------------------------------------------------------------------------
/src/pages/login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
.
6 |
7 |
13 | 欢迎使用微图书平台
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 登录
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
87 |
88 |
--------------------------------------------------------------------------------
/src/pages/org/role-edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
25 |
26 |
27 |
28 | 确认
29 | 返回
30 |
31 |
32 |
33 |
34 |
35 |
116 |
117 |
--------------------------------------------------------------------------------
/src/pages/book/chapter-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 新增
7 |
8 |
9 |
10 |
11 |
12 | 还没有数据呢~ (⊙︿⊙)
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | 查看
27 | 编辑
29 | 删除
31 |
32 |
33 |
34 |
35 |
46 |
47 |
48 |
49 |
122 |
123 |
--------------------------------------------------------------------------------
/src/pages/org/permission-add.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
12 | 菜单
13 | 按钮
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | 确认
36 | 返回
37 |
38 |
39 |
40 |
41 |
42 |
110 |
111 |
--------------------------------------------------------------------------------
/src/pages/org/user-add.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | {{item.text}}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 立即创建
32 | 返回
33 |
34 |
35 |
36 |
37 |
38 |
112 |
113 |
--------------------------------------------------------------------------------
/src/pages/book/author-add.vue:
--------------------------------------------------------------------------------
1 |
2 |
30 |
31 |
32 |
104 |
105 |
--------------------------------------------------------------------------------
/src/pages/org/user-edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{userForm.userId}}
13 |
14 |
15 |
16 |
17 |
18 |
19 | {{item.text}}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | 确认
30 | 返回
31 |
32 |
33 |
34 |
35 |
36 |
121 |
122 |
--------------------------------------------------------------------------------
/src/pages/org/permission-edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
12 | 菜单
13 | 按钮
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | 确认
36 | 返回
37 |
38 |
39 |
40 |
41 |
42 |
119 |
120 |
--------------------------------------------------------------------------------
/src/pages/book/author-edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
30 |
31 |
32 |
119 |
120 |
--------------------------------------------------------------------------------
/src/pages/book/book-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | 查询
20 |
21 |
22 | 新增
23 |
24 |
25 |
26 |
27 |
28 | 还没有数据呢~ (⊙︿⊙)
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | 章节
47 | 编辑
49 | 删除
51 |
52 |
53 |
54 |
55 |
66 |
67 |
68 |
69 |
165 |
166 |
--------------------------------------------------------------------------------
/src/pages/user/info.vue:
--------------------------------------------------------------------------------
1 |
2 |
38 |
39 |
40 |
141 |
142 |
--------------------------------------------------------------------------------
/src/pages/org/user-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 查询
16 |
17 |
18 | 新增
19 |
20 |
21 |
22 |
23 |
24 | 还没有数据呢~ (⊙︿⊙)
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | 冻结
39 |
40 |
41 |
42 |
43 |
44 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 | 编辑
65 | 删除
67 |
68 |
69 |
70 |
71 |
82 |
83 |
84 |
85 |
202 |
203 |
--------------------------------------------------------------------------------
/src/pages/book/book-edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
88 |
89 |
90 |
224 |
225 |
--------------------------------------------------------------------------------
/src/pages/book/book-add.vue:
--------------------------------------------------------------------------------
1 |
2 |
103 |
104 |
105 |
253 |
254 |
--------------------------------------------------------------------------------
/src/pages/home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | {{item.name}}
30 |
31 |
32 | {{subItem.name}}
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | Home
43 | {{item.name}}
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | {{book.bookName}}
59 |
60 |
61 | {{book.dicCategoryName}}
62 |
63 |
64 |
65 | {{book.introduction}}
66 |
67 |
68 | {{book.authorName}}
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | {{author.name}}
83 |
84 | ({{author.num}})
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
203 |
204 |
--------------------------------------------------------------------------------