资金管理系统(带权限)(2019.7.21)

资金管理系统(带权限)

目录:

快速开始

文件结构说明

功能说明

效果展示

接口说明

(附1)打码过程记录

(附2)视频学习地址

一、快速开始

git clone https://github.com/Allenem/CapitalManagementSystem.git

npm install

npm run client-install

npm run dev

服务端地址:http://localhost:5000, 客户端地址:http://localhost:8080

二、文件结构说明

1.结构树

根目录下打开cmdpowershell运行tree /f命令生成

.
│  package-lock.json
│  package.json
│  README.md
│  server.js
│
├─client
│  │  .gitignore
│  │  babel.config.js
│  │  package-lock.json
│  │  package.json
│  │  README.md
│  │  vue.config.js
│  │
│  ├─public
│  │  │  favicon.ico
│  │  │  index.html
│  │  │
│  │  └─css
│  │          reset.css
│  │
│  └─src
│      │  App.vue
│      │  http.js
│      │  main.js
│      │  router.js
│      │  store.js
│      │
│      ├─assets
│      │      403.png
│      │      404.gif
│      │      bg.jpg
│      │      coin.png
│      │      showcase.jpg
│      │
│      ├─components
│      │      Dialog.vue
│      │      HeadNav.vue
│      │      LeftMenu.vue
│      │
│      └─views
│              404.vue
│              ChangeList.vue
│              FundList.vue
│              Home.vue
│              Index.vue
│              InfoShow.vue
│              Login.vue
│              Register.vue
│              UserList.vue
│
├─config
│      keys.js
│      passport.js
│
├─effectImg
│      ……
│
├─models
│      Profile.js
│      User.js
│
└─routers
    └─api
            profiles.js
            users.js

2.结构说明

①后端文件

主文件

server.js

两个模型

models/Profile.js

models/User.js

路由配置

routers/api/profiles.js

routers/api/users.js

常量和token验证

config/key

config/passport

②前端文件

vue默认配置

client/vue.config.js

入口文件

client/public/index.html

根组件

client/src/App.vue

路由配置

client/src/router.js

库的引用

client/src/main.js

loading,请求拦截,响应拦截

client/src/http.js

vuex存储

client/src/store.js

静态文件夹

client/src/assets

页面文件夹

client/src/views

组件文件夹

client/src/components

三、功能说明

  • [x] 后端users接口配置(注册、登录、获取)
  • [x] 后端profilss接口配置(查询全部,查询单个,增,改,删)
  • [x] 注册页面
  • [x] 登录页面
  • [x] 主页页面
  • [x] 资金流水页面
  • [ ] 修改记录页面
  • [x] 个人信息页面
  • [x] 全员信息页面
  • [x] 404页面

四、效果展示

test无身份,all为管理员

注册页


register.png

登录页


login.png

主页


home.png

非管理员资金流水页


employeefundlist.png

非管理员资金流水页筛选


employeefundlistsearch.png

非管理员修改记录


changelist.png

非管理员个人信息页


notmanagerinfoshow.png

非管理员全员信息页


employeeuserlist.png

管理员资金流水页(5/page)


managerfundlist5items.png

管理员资金流水页(10/page)


managerfundlist10items.png

管理员资金流水页编辑


managerfundlistedit.png

管理员个人信息页


managerinfoshow.png

管理员全员信息页


manageruserlist.png

管理员全员信息筛选


manageruserlistsearch.png

五、接口说明

用户部分

1.users数据库测试

接口地址:http://localhost:5000/api/users/test
请求方式:get
请求示例:Examples
接口参数:
1.请求参数说明:
{
    
}
2.返回参数说明:
{
  "msg":"users test api works"
}

2.用户注册

接口地址:http://localhost:5000/api/users/register
请求方式:post
请求示例:Examples
接口参数:
1.请求参数说明:
{
  "name": "test",
  "email": "test@test.com",
  "password": "123456",
  "identity": "manager"
}
2.返回参数说明:
{
  "name": "test",
  "email": "test@test.com",
  "avatar": "xxx",
  "password": "123456",
  "identity": "manager"
}

3.用户登录

接口地址:http://localhost:5000/api/users/login
请求方式:post
请求示例:Examples
接口参数:
返回参数说明:
1.请求参数说明:
{
  "email": "test@test.com", 
  "password": "123456",
}
2.返回参数说明:
{
  "success": true,
  "token": "'Bearer'  + token"
}

4.获取当前用户

接口地址:http://localhost:5000/api/users/current
请求方式:get
请求示例:Examples
接口参数:
返回参数说明:
1.请求参数说明:
{
  
}
2.返回参数说明:
{
  "id": "qwertyuiopasdfghjklcvbnm",
  "name": "test",
  "email": "test@test.com",
  "identity": "manager"
}

5.获取所有用户信息

接口地址:http://localhost:5000/api/users/
请求方式:get
请求示例:Examples
接口参数:
返回参数说明:
1.请求参数说明:
{
  
}
2.返回参数说明:
{
"user":
[
    {
        "_id": "5d320d3bb77a763724d503d9",
        "name": "test",
        "email": "test@gmail.com",
        "avatar": "//www.gravatar.com/avatar/1aedb8d9dc4751e229a335e371db8058?s=200&r=pg&d=mm",
        "password": "$2b$10$TBjcpQBI2hsXfZMB5DKzXuQBeevJI7mc7GuootkbwscUT9A/wiI6S",
        "date": "2019-07-19T18:34:35.489Z",
        "__v": 0
    },
    {
        "_id": "5d32b28ae6b23dcb8dd4f727",
        "name": "abc",
        "email": "abc@abc.com",
        "avatar": "//www.gravatar.com/avatar/4adcca49b3b1e5a08ac202f5d5a9e688?s=200&r=pg&d=mm",
        "password": "$2b$10$TFjKmx0vtwbDjQMr6R0kNeQ/jQvDLzCksDPXebDBJyykahun7Cnhi",
        "identity": "employee",
        "date": "2019-07-20T06:19:54.158Z",
        "__v": 0
    }
]
}

资金流水部分

1.profiles数据库测试

接口地址:http://localhost:5000/api/profiles/test
请求方式:get
请求示例:Examples
接口参数:
1.请求参数说明:
{
    
}
2.返回参数说明:
{
  "msg":"profiles test api works"
}

2.资金流水添加

接口地址:http://localhost:5000/api/profiles/add
请求方式:post
请求示例:Examples
接口参数:
返回参数说明:
1.请求参数说明:
{
  "type":"优惠券",
  "describe":"买书",
  "income":"30",
  "expend":"20",
  "cash":"10",
  "remark":"开心"
}
2.返回参数说明:
{
  "type":"优惠券",
  "describe":"买书",
  "income":"30",
  "expend":"20",
  "cash":"10",
  "remark":"开心"
}

3.资金流水获取全部

接口地址:http://localhost:5000/api/profiles/
请求方式:get
请求示例:Examples
接口参数:
返回参数说明:
1.请求参数说明:
{

}
2.返回参数说明:
{
  "profile":
  [
    {
      "type":"优惠券",
      "describe":"买书",
      "income":"30",
      "expend":"20",
      "cash":"10",
      "remark":"开心"
    },
    {
      "type":"礼券",
      "describe":"充值",
      "income":"50",
      "expend":"20",
      "cash":"30",
      "remark":"好开心"
    }
  ]
}

4.资金流水获取单个

接口地址:http://localhost:5000/api/profiles/id
请求方式:get
请求示例:Examples
接口参数:
返回参数说明:
1.请求参数说明:
{
  "id":"5d320d3bb77a763724d503d9"
}
2.返回参数说明:
{
  "_id":"5d320d3bb77a763724d503d9",
  "type":"优惠券",
  "describe":"买书",
  "income":"30",
  "expend":"20",
  "cash":"10",
  "remark":"开心"
}

5.资金流水编辑

接口地址:http://localhost:5000/api/profiles/edit/id
请求方式:post
请求示例:Examples
接口参数:
返回参数说明:
1.请求参数说明:
{
  "type":"优惠券",
  "describe":"买书",
  "income":"30",
  "expend":"20",
  "cash":"10",
  "remark":"开心"
}
2.返回参数说明:
{
  "type":"优惠券",
  "describe":"买书",
  "income":"30",
  "expend":"20",
  "cash":"10",
  "remark":"开心"
}

6.资金流水删除

接口地址:http://localhost:5000/api/profiles/delete/id
请求方式:delete
请求示例:Examples
接口参数:
返回参数说明:
1.请求参数说明:
{
  "id":"5d320d3bb77a763724d503d9"
}
2.返回参数说明:
{
  "_id":"5d320d3bb77a763724d503d9",
  "type":"优惠券",
  "describe":"买书",
  "income":"30",
  "expend":"20",
  "cash":"10",
  "remark":"开心"
}
//已删除的信息

(附1)打码过程记录

1.后端接口配置(nodejs, express)

npm install nodemon -g 全局安装nodemon避免重复启动服务器

npm i mongoose 安装mangooose

MongoDB Atlas 官网免费注册申请 MongoDB Atlas 云数据库

postman 下载安装软件进行接口测试

npm i body-parser 安装body-parser发post请求

npm i bcrypt 加密

npm i gravatar 头像,可到https://en.gravatar.com/注册上传头像

npm i jsonwebtoken 登录成功返回token,token可以理解为一个令牌或者一个钥匙

npm install passport-jwt passport 验证token

2.前端页面书写(vue-cli 3.9.3, element-ui)

npm install -g @vue/cli-service-global 全局安装最新的vue-cli

总文件目录下运行 npm i concurrently 前后端连载,不用分步开启服务,配置如下:

配置前端 client/package.json"scripts"

  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "start": "npm run serve"
  },

配置总文件 package.json"scripts"

  "scripts": {
    "client-install": "npm install --prefix client",
    "client": "npm start --prefix client",
    "start": "node server.js",
    "server": "nodemon server.js",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  },

总文件目录下运行 npm run dev 实现前后端服务同时开启

npm i jwt-decode -S 解析token模块

npm i axios -S 请求工具axios

npm i element-ui -S 安装element-ui组件

用到其

  • Message 消息提示
  • Loading 加载
  • NavMenu 导航菜单
  • Table 表格
  • Form 表单
  • Pagination 分页
  • DateTimePicker 日期时间选择器
  • Icon 图标
  • MessageBox 弹框

等等

引入 font-awesome 图库

<link href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet">

<!-- 示例 -->
<i class="fa fa-margin fa-server fa-2x"></i>

(附2)学习地址

腾讯课堂:https://ke.qq.com/course/391846

网易课堂:https://study.163.com/course/introduction/1209227821.htm

B站地址:

https://www.bilibili.com/video/av59056478
https://www.bilibili.com/video/av55896464
https://www.bilibili.com/video/av53141006
https://www.bilibili.com/video/av54125678
https://www.bilibili.com/video/av44940777

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容