vue实现结账单基本方法
<script>
import axios from 'axios';
export default {
name: 'Pos',
mounted: function () {
var orderHeight = document.body.clientHeight;
document.getElementById("order-list").style.height = orderHeight + 'px';
},
created() {
//读取常用商品列表
axios.get('http://jspang.com/DemoApi/oftenGoods.php')
.then(response => {
//console.log(response);
this.oftenGoods = response.data;
})
.catch(error => {
console.log(error);
alert('网络错误,不能访问');
})
//读取分类商品列表
axios.get('http://jspang.com/DemoApi/typeGoods.php')
.then(response => {
//console.log(response);
//this.oftenGoods=response.data;
this.type0Goods = response.data[0];
this.type1Goods = response.data[1];
this.type2Goods = response.data[2];
this.type3Goods = response.data[3]; })
.catch(error => {
console.log(error);
alert('网络错误,不能访问');
})
},
data() {
return {
tableData: [], //订单列表的值
oftenGoods: [],
type0Goods: [],
type1Goods: [],
type2Goods: [],
type3Goods: [],
totalMoney: 0, //订单总价格
totalCount: 0 //订单商品总数量 }
},
methods: {
//添加订单列表的方法
addOrderList(goods) {
//console.log(goods);
this.totalCount = 0; //汇总数量清0
this.totalMoney = 0;
let isHave = false;
//判断是否这个商品已经存在于订单列表
for (let i = 0; i < this.tableData.length; i++) {
console.log(this.tableData[i].goodsId);
if (this.tableData[i].goodsId == goods.goodsId) { isHave = true; //存在 }
}
//根据isHave的值判断订单列表中是否已经有此商品
if (isHave) {
//存在就进行数量添加
let arr = this.tableData.filter(o => o.goodsId == goods.goodsId);
arr[0].count++;
//console.log(arr);
} else {
//不存在就推入数组
let newGoods = { goodsId: goods.goodsId, goodsName: goods.goodsName, price: goods.price, count: 1 };
this.tableData.push(newGoods); } this.getAllMoney();
},
//删除单个商品
delSingleGoods(goods) {
console.log(goods);
this.tableData = this.tableData.filter(o => o.goodsId != goods.goodsId);
this.getAllMoney(); },
//删除所有商品
delAllGoods() {
this.tableData = [];
this.totalCount = 0;
this.totalMoney = 0;
},
//汇总数量和金额
getAllMoney() {
this.totalCount = 0;
this.totalMoney = 0;
if (this.tableData) {
this.tableData.forEach((element) => {
this.totalCount += element.count;
this.totalMoney = this.totalMoney + (element.price * element.count);
});
}
},
//结账方法模拟
checkout() {
if (this.totalCount!=0) {
this.tableData = [];
this.totalCount = 0;
this.totalMoney = 0;
this.$message({
message: '结账成功,感谢你又为店里出了一份力!',
type: 'success'
}); }else{
this.$message.error('不能空结。老板了解你急切的心情!'); } } }
}
</script>
vue实现结账单基本方法的更多相关文章
- pubwin 客户端会员无法自助结账的排查方法
客户端会员无法自助结账按以下方法排查:1,看客户端能不能打开web https 后台,打不开的话,在服务端打上2048证书补丁(按下面帖子操作)http://bbs.pubwin.com.cn/for ...
- Vue2.x源码学习笔记-Vue实例的属性和方法整理
还是先从浏览器直观的感受下实例属性和方法. 实例属性: 对应解释如下: vm._uid // 自增的id vm._isVue // 标示是vue对象,避免被observe vm._renderProx ...
- Vue(十二)vue实例的属性和方法
vue实例的属性和方法 1. 属性 vm.$el vm.$data vm.$options vm.$refs <!DOCTYPE html> <html lang="en& ...
- 在Vue中关闭Eslint 的方法
在vue项目中关闭ESLint方法:找到 webpack.base.conf.js 将这些代码注释掉, { test: /\.(js|vue)$/, loader: 'eslint-loader', ...
- vue解决遮罩层滚动方法
vue 遮罩层阻止默认滚动事件 在写移动端页面的时候,弹出遮罩层后,我们仍然可以滚动页面. vue中提供 @touchmove.prevent 方法可以完美解决这个问题 <div class=& ...
- vue实例的属性和方法
vue实例的属性和方法 1. 属性 vm.$el #指定要绑定的元素 vm.$data #Vue 实例的数据对象 vm.$options #获取自定义属性的值 new Vue({ customOpti ...
- Vue把父组件的方法传递给子组件调用(评论列表例子)
Vue把父组件的方法传递给子组件调用(评论列表例子) 效果展示: 相关Html: <!DOCTYPE html> <html lang="en"> < ...
- vue中添加util公共方法&&ES6之import、export
vue中添加util公共方法&&ES6之import.export https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Re ...
- vue中methods中的方法闭包缓存问题
vue中methods中的方法闭包缓存问题 问题背景 需求描述 在路由的导航栏中需要, 判断是否为第一次点击 需要一个标志位来记录是否点击过 现状: 这个标志位只在一个函数中用过.不希望存放全局 希望 ...
随机推荐
- 【推导】Codeforces Round #402 (Div. 2) A. Pupils Redistribution
一次交换,会让Group A里面的某个数字的数量-1,另一个数字的数量+1:对Group B恰好相反. 于是答案就是xigma(i=1~5,numA[i]-numB[i]>0)(numA[i]- ...
- 【kd-tree】bzoj3489 A simple rmq problem
Orz zyf教给蒟蒻做法 蒟蒻并不会这题正解……(可持久化树套树?...Orz 对于每个点,我们可以求出pre[i],nex[i],那么询问的答案就是:求max (a[i]),其中 i 满足(pre ...
- 金融应用,计算未来投资回报值 Exercise06_07
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:金融应用,计算未来投资回报值 * */ public class Exer ...
- lua 脚本之高级篇 (面向对象的完全支持),有性能问题。
---------------------------------------------------------- --面向对象核心库 ------------------------------- ...
- 生成唯一code
private String getCode() { List<String> ptypeCodeList = mapper.findCodeList(); String code = & ...
- url参数的获取
方法 function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&am ...
- Linux下使用xargs将多行文本转换成一行并用tr实现逗号隔开
准备: cat test.txt 示例: cat test.txt | xargs 可以看出得到的字符串为空格隔开的. 再把上面的字符串用逗号隔开,可以使用tr命令进行空格的替换 cat test.t ...
- Ubuntu 14 下,命令行终端显示短路径
Ubuntu的终端命令行默认是长路径,即把路径深度全部显示出来,操作起来不是很方便,下面介绍命令行显示短路径的操作: $ vi ~/.bashrc 找到PS1= 的行,将\w(小写)改成\W(大写 ...
- LVM分区管理和扩展
一.LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写.LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它 ...
- 一起來玩鳥 Starling Framework(7)MovieClip
承上一篇,我們接著來講最後一個IAnimatable類別,MovieClip.Starling的MovieClip跟native的MovieClip不太一樣,它只能接收一個Vector.<Tex ...