jspang 做个那个pos系统--学习笔记
/为什么不能使用Object.assign() //使用Object.assign之后数据会发生改变,但是试图没有跟新
<template>
<div class="pos">
<el-row>
<el-col :span='7' class="pos-order" id="order-list">
<el-tabs>
<!--点餐-->
<el-tab-pane label="点餐">
<el-table :data= 'tableData' style="width:100%;">
<el-table-column prop="goodsName" label="商品名称"></el-table-column>
<el-table-column prop="count" label="数量" width="70"></el-table-column>
<el-table-column prop="price" label="金额" width="70"></el-table-column>
<el-table-column label="操作" width="100" fixed="right">
<template scope="scope">
<el-button type="text" size="small">删除</el-button>
<el-button type="text" size="small">增加</el-button>
</template>
</el-table-column>
</el-table>
<div>
总数:0 总价:0 元
</div>
<div class="btn">
<el-button type="warning">挂单</el-button>
<el-button type="danger">删除</el-button>
<el-button type="success">结账</el-button>
</div>
</el-tab-pane>
<!--挂单-->
<el-tab-pane label="挂单">
</el-tab-pane>
<!--外卖-->
<el-tab-pane label="外卖">
</el-tab-pane>
</el-tabs>
</el-col>
<el-col :span='14' >
<div class="goods">
<div class="title">常用商品</div>
<div class="goods-list">
<ul>
<li v-for="item of oftenGoods" :key="item.id" @click="addOrderList(item)">
<span>{{item.goodsName}}</span>
<span class="o-price">¥{{item.price}}</span>
</li>
</ul>
</div>
</div>
<div class="goods-type">
<el-tabs>
<el-tab-pane label="汉堡">
<div>
<ul class='cookList'>
<li v-for=" list in type0Goods" :key="list.id">
<span class="foodImg"><img :src="list.goodsImg" width="100%"></span>
<span class="foodName">{{list.goodsName}}</span>
<span class="foodPrice">¥{{list.price}}元</span>
</li>
</ul>
</div>
</el-tab-pane>
<el-tab-pane label="小食">
<div>
<ul class='cookList'>
<li v-for=" list in type0Goods1" :key="list.id">
<span class="foodImg"><img :src="list.goodsImg" width="100%"></span>
<span class="foodName">{{list.goodsName}}</span>
<span class="foodPrice">¥{{list.price}}元</span>
</li>
</ul>
</div>
</el-tab-pane>
<el-tab-pane label="饮料">
<div>
<ul class='cookList'>
<li v-for=" list in type0Goods2" :key="list.id">
<span class="foodImg"><img :src="list.goodsImg" width="100%"></span>
<span class="foodName">{{list.goodsName}}</span>
<span class="foodPrice">¥{{list.price}}元</span>
</li>
</ul>
</div>
</el-tab-pane>
<el-tab-pane label="套餐">
<div>
<ul class='cookList'>
<li v-for=" list in type0Goods3" :key="list.id">
<span class="foodImg"><img :src="list.goodsImg" width="100%"></span>
<span class="foodName">{{list.goodsName}}</span>
<span class="foodPrice">¥{{list.price}}元</span>
</li>
</ul>
</div>
</el-tab-pane>
</el-tabs>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import axios from 'axios'
export default {
name: 'pos',
data(){
return{
tableData: [],
tableData1: [],
oftenGoods:[],
type0Goods:[],
type0Goods1:[],
type0Goods2:[],
type0Goods3:[],
totalMoney:0,
totalCount:0
}
},
//在虚拟dom加载完成之后
mounted:function(){
let orderHeight = document.body.clientHeight;
console.log(orderHeight);
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.type0Goods = response.data[0]
this.type0Goods1 = response.data[1]
this.type0Goods2 = response.data[2]
this.type0Goods3 = response.data[3]
})
.catch(error =>{
console.log( error )
alert('网路错误,不能访问')
})
},
methods:{
addOrderList(goods){
this.totalMoney =0;
this.totalCount =0;
//商品是否已经存在于订单列表中
let isHave = false;
for(let i =0; i< this.tableData.length;i++ ){
if(this.tableData[i].goodsId == goods.goodsId ){
isHave = true;
}
}
//根据判断的值编写业务逻辑
if(isHave){
let arr = this.tableData.filter( ele =>
//过滤条件,返回
ele.goodsId == goods.goodsId
)
arr[0].count++;
}else{
//在这里面添加
//let newGoods = Object.assign(goods,{count:1}) //这里为什么不能使用Object.assign() //使用Object.assign之后数据会发生改变,但是试图没有跟新
let newGoods = {
goodsId:goods.goodsId,
goodsName:goods.goodsName,
price:goods.price,
count:1
}
this.tableData.push(newGoods)
//this.$set(this.tableData,newGoods)
console.log(this.tableData)
}
}
},
watch:{
tableData:{
handler(a,b){
this.tableData= a;
console.log(a ,b)
},
deep:true
},
}
}
</script>
jspang 做个那个pos系统--学习笔记的更多相关文章
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- Dubbo -- 系统学习 笔记 -- 配置参考手册
Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...
- Dubbo -- 系统学习 笔记 -- 入门
Dubbo -- 系统学习 笔记 -- 目录 入门 背景 需求 架构 用法 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行, ...
- Dubbo -- 系统学习 笔记 -- 快速启动
Dubbo -- 系统学习 笔记 -- 目录 快速启动 服务提供者 服务消费者 快速启动 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubb ...
- Dubbo -- 系统学习 笔记 -- 配置
Dubbo -- 系统学习 笔记 -- 目录 配置 Xml配置 属性配置 注解配置 API配置 配置 Xml配置 配置项说明 :详细配置项,请参见:配置参考手册 API使用说明 : 如果不想使用Spr ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 泛化引用
Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 泛化引用 泛接口调用方式主要用于客户端没有API接口及模型类元的情况,参数及返回值 ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 结果缓存
Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 结果缓存 结果缓存,用于加速热门数据的访问速度,Dubbo提供声明式缓存,以减少用 ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 分组聚合
Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 分组聚合 按组合并返回结果,比如菜单服务,接口一样,但有多种实现,用group区分 ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 多版本
Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 多版本 当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间 ...
随机推荐
- laravel Excel 导入
<?php namespace App\Modules\Live\Http\Controllers; use Illuminate\Http\Request; use Maatwebsite\E ...
- JavaScript基础避免使用eval()(006)
许多人认为eval()方法是邪恶(evil)的.这个方法可以把任意字符串当成Javascript代码来执行.我们应该尽可能的不用eval()方法.比如,可以使用方括号来得到对象属性的值: // ant ...
- java面试题——对于多态你是怎么理解的呢?不一样的角度,带你重新看java
java面试的时候经常会被问到一个问题,那就是java三大特性:继承,封装和多态.那么这三者的含义究竟是什么你真的清楚吗?我看网上大多都是人云亦云.所以我想把我的想法记录下来供大家参考-今天先聊一个, ...
- Web前端开发未来的六大趋势
说起Web前端开发想必你一定不会陌生,因为现在的前端开发学习的培训机构也是层出不穷.下面济南优就业IT培训给大家总结出了未来Web前端开发的六大趋势从中可以大致看出来Web前端未来的发展前景. 趋势一 ...
- CSS技术让高度自适应减少很多不必要的检测
高度自适应第一种情况 1.高度不去设置,或者高度设置auto 内容撑开父元素的高度.2.内容撑开父元素的高度 -> 最小高度的设置 min-height3.浮动元素添加高度自适应 -> 添 ...
- 带你认识网站图片img懒加载和预加载的区别
懒加载 什么是懒加载? 懒加载也就是延迟加载.当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次,俗称占位图),只有当图片出现在浏览 ...
- 小烈送菜——奇怪的dp
小烈送菜 题目描述 小烈一下碰碰车就被乐满地的工作人员抓住了.作为扰乱秩序的惩罚,小烈必须去乐满地里的"漓江村"饭店端盘子. 服务员的工作很繁忙.他们要上菜,同时要使顾客们尽量高兴 ...
- 「疫期集训day3」要塞
战友们正讨论着他们曾经参加过凡尔登战役的父亲...在黎明前我们必须誓死坚守----法乌克斯要塞中弹尽粮绝的法军士兵 什么!今天又考状压和tarjan! 达成成就:连续两天复习数论和二分图 康乐康,这次 ...
- 解决Chrome插件安装时程序包无效:"CRX_HEADER_INVALID"
打开chorme的扩展程序(设置——>更多工具——>扩展程序)chrome://extensions 选择开发者模式 拖拽.crx至Chrome的扩展程序列表 安装失败 报错为:程序包无效 ...
- Mysql基础(三):MySQL基础数据类型、完整性约束、sql_mode模式
目录 2.MySQL基础数据类型.完整性约束.sql_mode模式 1. MySQL常用数据类型 2. 完整性约束 3. MySQL的sql_mode模式说明以及设置 2.MySQL基础数据类型.完整 ...