/*mUtils.js用于解析get请求的参数*/
export const param2Obj = url => {
const search = url.split('?')[1]
if (!search) {
return {}
}
return JSON.parse('{"' + decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}')
}

  

/*money.js*/
import Mock from 'mockjs'
import * as mUtils from '@/utils/mUtils'
let List = []
const count = 60
let typelist = [1, 2, 3, 4, 5, 6, 7, 8]
for (let i = 0; i < count; i++) {
List.push(Mock.mock({
id: Mock.Random.guid(),
username: Mock.Random.cname(),
address: Mock.mock('@county(true)'),
createTime: Mock.Random.datetime(),
income: Mock.Random.float(0, 9999, 2,2),
pay: Mock.Random.float(-5999, 0, 2,2),
accoutCash: Mock.Random.float(0, 9999, 2,2),
'incomePayType|1': typelist
}))
}
export default {
/* 获取列表getMoneyList*/
getMoneyList: config => {
const { name, page = 1, limit = 20 } = mUtils.param2Obj(config.url)
console.log(mUtils.param2Obj(config.url))
console.log(page+"++"+limit)
const mockList = List.filter(user => {
if (name && user.username.indexOf(name) === -1) return false
return true
})
const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1))
return {
code: 200,
data: {
total: mockList.length,
moneyList: pageList
}
}
},
/** 增加资金信息createMoney*/
createMoney: config => {
const { username, address, income, pay , accoutCash, incomePayType } = mUtils.param2Obj(config.url)
List.push({
id: Mock.Random.guid(),
username: username,
address: address,
createTime: Mock.Random.now(),
income: income,
pay: pay,
accoutCash: accoutCash,
incomePayType: incomePayType
})
return {
code: 200,
data: {
message: '添加成功'
}
}
},
/*** 删除用户deleteMoney */
deleteMoney: config => {
const { id } = mUtils.param2Obj(config.url)
if (!id) {
return {
code: -999,
message: '参数不正确'
}
} else {
List = List.filter(u => u.id !== id)
return {
code: 200,
data: {
message: '删除成功'
}
}
}
},
/* 批量删除 */ batchremoveMoney: config => {
console.log(config);
// console.log(mUtils.param2Obj(config.url));
let { ids } = mUtils.param2Obj(config.url)
console.log(ids);
ids = ids.split(',')
List = List.filter(u => !ids.includes(u.id))
return {
code: 200,
data: {
message: '批量删除成功'
}
}
},
/*修改用户 */
updateMoney: config => {
const { id,username, address, income, pay , accoutCash, incomePayType } = mUtils.param2Obj(config.url)
List.some(u => {
if (u.id === id) {
u.username = username
u.address = address
u.income = income
u.pay = pay
u.accoutCash = accoutCash
u.incomePayType = incomePayType
return true
}
})
return {
code: 200,
data: {
message: '编辑成功'
}
}
}
}

  

/*index.js*/
import Mock from 'mockjs'
import tableAPI from './money'
import salesAPI from './sales'
import userAPI from './user'
// 设置全局延时 没有延时的话有时候会检测不到数据变化 建议保留
Mock.setup({
timeout: '300-600'
})
// 资金相关
Mock.mock(/\/money\/get/, 'get', tableAPI.getMoneyList)
Mock.mock(/\/money\/remove/, 'get', tableAPI.deleteMoney)
Mock.mock(/\/money\/batchremove/, 'get', tableAPI.batchremoveMoney)
Mock.mock(/\/money\/add/, 'get', tableAPI.createMoney)
Mock.mock(/\/money\/edit/, 'get', tableAPI.updateMoney)
// sales相关
Mock.mock(/\/sales\/get/, 'get', salesAPI.getSalesList)
// user相关
Mock.mock(/\/user\/login/, 'get', userAPI.login)
Mock.mock(/\/user\/logout/, 'get', userAPI.logout)
Mock.mock(/\/user\/info\/get/, 'get', userAPI.getUserInfo)
Mock.mock(/\/user\/list\/get/, 'get', userAPI.getUserList)

  

/*Api.js接口管理*/
import request from '@/utils/axios'
export function getMoneyIncomePay(params) {
return request({
url: '/money/get',
method: 'get',
params: params
})
}
export function addMoney(params) {
return request({
url: '/money/add',
method: 'get',
params: params
})
} export function removeMoney(params) {
return request({
url: '/money/remove',
method: 'get',
params: params
})
}
export function batchremoveMoney(params) {
return request({
url: '/money/batchremove',
method: 'get',
params: params
})
}
export function updateMoney(params) {
return request({
url: '/money/edit',
method: 'get',
params: params
})
}

  

/*在组件里使用*/
<template>
<div class="fillcontain">
<search-item @showDialog="showAddFundDialog" @searchList="getMoneyList" @onBatchDelMoney="onBatchDelMoney"></search-item>
<div class="table_container">
<el-table
v-loading="loading"
:data="tableData"
style="width: 100%"
align='center'
@select="selectTable"
@select-all="selectAll"
>
<el-table-column
v-if="idFlag"
prop="id"
label="id"
align='center'
width="180">
</el-table-column>
<el-table-column
type="selection"
align='center'
width="40">
</el-table-column>
<el-table-column
prop="username"
label="用户姓名"
align='center'
width="80">
</el-table-column>
<el-table-column
prop="address"
label="籍贯"
align='center'
>
</el-table-column>
<el-table-column
prop="createTime"
label="投资时间"
align='center'
sortable
width="170">
<template slot-scope="scope">
<el-icon name="time"></el-icon>
<span style="margin-left: 10px">{{ scope.row.createTime }}</span>
</template>
</el-table-column>
<el-table-column
prop="incomePayType"
label="收支类型"
align='center'
width="130"
:formatter="formatterType"
:filters="fields.incomePayType.filter.list"
:filter-method="filterType">
</el-table-column>
<el-table-column
prop="income"
label="收入"
align='center'
width="130"
sortable>
<template slot-scope="scope">
<span style="color:#00d053">+ {{ scope.row.income }}</span>
</template>
</el-table-column>
<el-table-column
prop="pay"
label="支出"
align='center'
width="130"
sortable>
<template slot-scope="scope">
<span style="color:#f56767">{{ getPay(scope.row.pay) }}</span>
</template>
</el-table-column>
<el-table-column
prop="accoutCash"
label="账户现金"
align='center'
width="130"
sortable>
<template slot-scope="scope">
<span style="color:#4db3ff">{{ scope.row.accoutCash }}</span>
</template>
</el-table-column>
<el-table-column
prop="operation"
align='center'
label="操作"
width="180">
<template slot-scope='scope'>
<el-button
type="warning"
icon='edit'
size="mini"
@click='onEditMoney(scope.row)'
>编辑</el-button>
<el-button
type="danger"
icon='delete'
size="mini"
@click='onDeleteMoney(scope.row,scope.$index)'
>删除</el-button>
</template>
</el-table-column>
</el-table> <pagination :pageTotal="pageTotal" @handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange"></pagination>
<addFundDialog v-if="addFundDialog.show" :isShow="addFundDialog.show" :dialogRow="addFundDialog.dialogRow" @getFundList="getMoneyList" @closeDialog="hideAddFundDialog"></addFundDialog>
</div>
</div>
</template> <script>
import { mapGetters } from "vuex";
import * as mutils from '@/utils/mUtils'
import SearchItem from "./components/searchItem";
import AddFundDialog from "./components/addFundDialog";
import Pagination from "@/components/pagination";
import { getMoneyIncomePay , removeMoney, batchremoveMoney } from "@/api/money";
import axios from "axios"
export default {
data(){
return {
tableData: [],
tableHeight:0,
loading:true,
idFlag:false,
isShow:false, // 是否显示资金modal,默认为falselimit
editid:'',
rowIds:[],
sortnum:0,
format_type_list: {
0: '提现',
1: '提现手续费',
2: '提现锁定',
3: '理财服务退出',
4: '购买宜定盈',
5: '充值',
6: '优惠券',
7: '充值礼券',
8: '转账'
},
addFundDialog:{
show:false,
dialogRow:{}
},
incomePayData:{
page:1,
limit:20,
name:''
},
pageTotal:0,
// 用于列表筛选
fields: {
incomePayType:{
filter: {
list: [{
text: '提现',
value: 0
},{
text: '提现手续费',
value: 1
}, {
text: '提现锁定',
value: 2
}, {
text: '理财服务退出',
value: 3
}, {
text: '购买宜定盈',
value: 4
}, {
text: '充值',
value: 5
}, {
text: '优惠券',
value: 6
}, {
text: '充值礼券',
value: 7
}, {
text: '转账',
value: 8
}],
multiple: true
}
},
}, }
},
components:{
SearchItem,
AddFundDialog,
Pagination
},
computed:{
...mapGetters(['search'])
},
mounted() {
this.getMoneyList();
// this.setTableHeight();
// window.onresize = () => {
// this.setTableHeight();
// }
},
methods: {
setTableHeight(){
this.$nextTick(() => {
this.tableHeight = document.body.clientHeight - 300
})
},
// 获取资金列表数据
getMoneyList(){
const para = Object.assign({},this.incomePayData,this.search);
getMoneyIncomePay(para).then(res => {
console.log(res)
this.loading = false;
this.pageTotal = res.data.total
// console.log(res)
this.tableData = res.data.moneyList
})
},
// 显示资金弹框
showAddFundDialog(val){
this.$store.commit('SET_DIALOG_TITLE', val)
this.addFundDialog.show = true;
},
hideAddFundDialog(){
this.addFundDialog.show = false;
},
// 上下分页
handleCurrentChange(val){
this.incomePayData.page = val;
this.getMoneyList()
},
// 每页显示多少条
handleSizeChange(val){
this.incomePayData.limit = val;
this.getMoneyList()
},
getPay(val){
if(mutils.isInteger(val)){
return -val;
}else{
return val;
}
}, /**
* 格式化状态
*/
formatterType(item) {
const type = parseInt(item.incomePayType);
return this.format_type_list[type];
},
filterType(value, item) {
const type = parseInt(item.incomePayType);
return this.format_type_list[value] == this.format_type_list[type];
},
// 编辑操作方法
onEditMoney(row){
this.addFundDialog.dialogRow = row;
this.showAddFundDialog();
},
// 删除数据
onDeleteMoney(row){
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
})
.then(() => {
const para = { id: row.id }
removeMoney(para).then(res => {
this.$message({
message: '删除成功',
type: 'success'
})
this.getMoneyList()
})
})
.catch(() => {})
},
onBatchDelMoney(){
this.$confirm('确认批量删除记录吗?', '提示', {
type: 'warning'
})
.then(() => {
const ids = this.rowIds.map(item => item.id).toString()
const para = { ids: ids }
batchremoveMoney(para).then(res => {
this.$message({
message: '批量删除成功',
type: 'success'
})
this.getMoneyList()
})
})
.catch(() => {})
},
// 当用户手动勾选数据行的 Checkbox 时触发的事件
selectTable(val, row){
this.setSearchBtn(val);
},
// 用户全选checkbox时触发该事件
selectAll(val){
val.forEach((item) => {
this.rowIds.push(item.id);
});
this.setSearchBtn(val);
},
setSearchBtn(val){
let isFlag = true;
if(val.length > 0){
isFlag = false;
}else{
isFlag = true;
}
this.$store.commit('SET_SEARCHBTN_DISABLED',isFlag);
}
},
}
</script> <style lang="less" scoped>
.table_container{
padding: 10px;
background: #fff;
border-radius: 2px;
}
.el-dialog--small{
width: 600px !important;
}
.pagination{
text-align: left;
margin-top: 10px;
} </style>

  

mockjs 模拟实现增删改查的更多相关文章

  1. python函数模拟mysql增删改查功能

    import os list1 = ['staff_id', 'name', 'age', 'phone', 'dept', 'enroll_date'] def staff_info(): #获取员 ...

  2. Vue+Mock.js模拟登录和表格的增删改查

    有三类人不适合此篇文章: "喜欢站在道德制高点的圣母婊" -- 适合去教堂 "无理取闹的键盘侠" -- 国际新闻版块欢迎你去 "有一定基础但又喜欢逼逼 ...

  3. 用Java中的File类模拟实现对系统文件的增删改查效果

    码字不易,三连支持一波吧 IO操作向来是各大语言的热区,而对文件的操作也是重中之重. 那么在Java中也给我们提供了很多关于文件操作的类.今天我就用一个比较基本的File类来模拟实现对文件的增删改查效 ...

  4. 作业三:模拟 mysql 进行增删改查

    # !/usr/bin/env python3 # _*_coding:utf-8_*_ def help_sql(cmd): if cmd in func_dic.keys(): print('{} ...

  5. 模拟admin组件自己开发stark组件之增删改查

    增删改查,针对视图 我们需要modelform来创建,可自动生成标签,我们还要考虑用户是不是自己定制,依然解决方法是,继承和重写 app01下的joker.py文件 class BookModelFo ...

  6. Python 模拟SQL对文件进行增删改查

    #!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__: Dalhhin # Python 3.5.2,Pycharm 2016.3.2 # 2 ...

  7. Mock.js简易教程,脱离后端独立开发,实现增删改查功能(转)

    在我们的生产实际中,后端的接口往往是较晚才会出来,并且还要写接口文档,于是我们的前端的许多开发都要等到接口给我们才能进行,这样对于我们前端来说显得十分的被动,于是有没有可以制造假数据来模拟后端接口呢, ...

  8. 如何在Vue中使用Mockjs模拟数据的增删查改

    之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...

  9. mock.js 的用法 -- 脱离后端独立开发,实现增删改查功能

    在我们的生产实际中,后端的接口往往是较晚才会出来,并且还要写接口文档,于是我们的前端的许多开发都要等到接口给我们才能进行,这样对于我们前端来说显得十分的被动,于是有没有可以制造假数据来模拟后端接口呢, ...

  10. 【面向对象版】HashMap(增删改查)

    前言: 关于什么是HashMap,HashMap可以用来做些什么,这些定义类的描述,请参照[简易版]HashMap(增删改查)的内容. 这章节主要是面向实例,直接进行HashMap(增删改查)的演示. ...

随机推荐

  1. Uni-App 实现资讯滚动

    项目需要实现资讯的滚动,使用了Swiper组件,实现了首页头部的资讯滚动,简单地做下笔记 效果 实现说明 主要是使用了Swiper可以自动滚动的特性来实现,左边是一个图片,右边则是Swpier,且姜S ...

  2. Linux快速入门(二)Linux基础操作

    绝对路径和相对路径 Linux中绝对路径指从根目录开始,即/目录. 相对路径是指相对于当前路径开始,即./ 目录,../表示上一级目录路径. pwd pwd命令用于查看当前所在目录. gubeiqin ...

  3. 从零开始写 Docker(八)---实现 mydocker run -d 支持后台运行容器

    本文为从零开始写 Docker 系列第八篇,实现类似 docker run -d 的功能,使得容器能够后台运行. 完整代码见:https://github.com/lixd/mydocker 欢迎 S ...

  4. 重新记录一下ArcGisEngine安装的过程

    前言 好久不用Arcgis,突然发现想用时,有点不会安装了,所以这里记录一下安装过程. 下载Arcgis 首先,下载一个arcgis版本,我这里下的是10.1. 推荐[ gis思维(公众号)],[麻辣 ...

  5. 安全测试系列:《web安全深度剖析》读书笔记

    一 基础 1.http请求流程: 请求.响应报文格式: 8种请求方式,get(长度有限制).head(用于测试资源是否存在,服务器不返回消息主体).post(传输大量数据).put(给服务器上传资源) ...

  6. C# PaddleOCR 车牌识别

    效果 车牌识别测试地址 http://47.108.88.211/manual/VehPlateTest.html 通用OCR识别测试地址 http://47.108.88.211/manual/OC ...

  7. module的定义及端口的作用

    模型功能 module是verilog中层次划分的基本单元 通过module之间的调用,可以实现硬件描述层次的提高 端口列表则是module的输入输出,和数字电路的走线连接等效 基于module的不断 ...

  8. KingbaseES参数track_activity_query_size介绍

    背景 同事A在客户现场,最近注意到客户的主数据库性能有所下降,尤其是在高峰时段.怀疑可能有一些复杂的查询影响了数据库的性能,但尚未确定具体是哪些查询. 为了诊断问题,A决定查看高峰期正在执行的查询,先 ...

  9. KingbaseES V8R6集群运维案例-- 备库数据库服务意外down分析

    案例说明: KingbaseES V8R6一主二备架构的集群,两个备库节点sys_log日志分别不同时间点收到'fast shutdown request'的日志信息,导致备库数据库服务down,需要 ...

  10. Web Audio API 第3章 音量和响度

    此章介绍的科普物理声音知识相当有用,编程的反而涉及的少 音量和响度 Loudness 响度 注:根据<韦氏词典>,响度是"一种声音的属性,它决定了所产生的听觉感觉的大小,主要取决 ...