/*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. Jenkins 批量修改Job的配置

    登录Jenkins机器,执行 以下shell 脚本 --单文件替换 sed -i "s#xxxxx#xxxxxx#g" /var/lib/docker/volumes/jenkin ...

  2. AWS API Gateway IP WhileList

    首先创建个API,然后进入API配置,点击左边的资源配置,加入以下配置: { "Version": "2012-10-17", "Statement& ...

  3. C++容器、类型转换、异常与文件流操作

    C++容器.类型转换.异常与文件流操作 目录 C++容器.类型转换.异常与文件流操作 容器 序列式容器/顺序容器 向量(vector) 列表 (list) 双端队列(deque) 栈(stack) 队 ...

  4. 智慧党建3D可视化方案,扩大党建文化宣传数字网络影响力

    信息技术的快速发展加快了社会分化解构,重构了人际传播渠道.随着党员中网民."数字原住民"比重持续攀升,党员工作生活信息化.网络化.数据化持续加深,传统的党建方式对党员,特别是年轻一 ...

  5. 观展新体验!3DCAT助力青桔 “未来之见”线上发布会炫酷亮相

    在"未来之见"滴滴青桔2021新品发布会现场,青桔推出概念车"青桔X","X"代表了无限可能和憧憬,街边的共享单车?这只是其中一面,青桔为您 ...

  6. vue基础知识和原理(一)

    1. vue基础知识和原理 1.1 初识Vue 想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象 demo容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法 demo容器 ...

  7. 记录--vue3+setup+ts 知识总结

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 vue3 于 2020 年 09 月 18 日正式发布,2022 年 2 月 7 日 vue3 成为新的默认版本 距离 vue3 正式发布 ...

  8. c# webBrowser中操作网页元素全攻略

    1.获取非input控件的值: webBrowser1.Document.All["控件ID"].InnerText; 或webBrowser1.Document.GetEleme ...

  9. mybatis调用Oracle存储过程 带游标

    存储过程 CREATE OR REPLACE PROCEDURE proc_test2(p_id IN NUMBER, v_cur OUT SYS_REFCURSOR, p_result_code O ...

  10. Spring Cloud服务之Nacos作为注册中心与配置中心

    1.创建maven父工程管理jar包版本 创建maven骨架,删除多余部分文件.只留pom文件,添加依赖 <packaging>pom</packaging> <pare ...