马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import router from '@ohos.router';
- import { ShopCarEntity } from '../../entity/ShopCarEntity';
- import LocDataModel from '../../viewmodel/LocDataModel';
- import data from '@ohos.telephony.data';
- @Entry
- @Component
- export default struct CarPage {
- @State carList:ShopCarEntity[]=LocDataModel.DEFAULT_SHOP_CART_LIST
- @State totalPrice :number =0
- @State totalCount:number =0
- //计算总价和数量
- countTotalNumber(){
- let tempTotalPrice=0
- let temTotalCount=0
- this.carList.forEach((item:ShopCarEntity)=>{
- if (item.isSelected) {
- tempTotalPrice+=item.goods_default_price*item.count
- temTotalCount+=item.count
- }
- })
- this.totalPrice=tempTotalPrice
- this.totalCount=temTotalCount
- }
- //处理商品单选操作
- carItemSelectChanged(state:boolean,index:number){
- let newCarlist:ShopCarEntity[]=[]
- this.carList.forEach((item:ShopCarEntity,itemIndex:number)=>{
- if (itemIndex===index) {
- item.isSelected=state
- item.itemkey=`${Math.random()*10}-${Math.random()}`
- }
- newCarlist.push(item)
- })
- this.carList=newCarlist
- }
- build() {
- Flex({direction:FlexDirection.Column}){
- //标题部分
- this.TitleBarComponent()
- //商品列表
- this.CarListCompoent()
- //底部
- this.BottomOptionsCompoent()
- }
- .width('100%')
- .height('100%')
- .backgroundColor($r('app.color.page_background'))
- }
- /**
- * 标题
- */
- @Builder TitleBarComponent(){
- Stack({alignContent:Alignment.End}){
- Text('购物车')
- .width('100%')
- .textAlign(TextAlign.Center)
- .fontColor(Color.White)
- .fontSize(16)
- .fontWeight(FontWeight.Bold)
- Text('删除已选')
- .borderWidth(1).
- borderColor(Color.White).
- borderRadius(12).
- fontColor(Color.White).
- fontSize(12).
- fontWeight(FontWeight.Bold)
- .padding({
- top:5,
- right:8,
- bottom:5,
- left:8
- })
- .textAlign(TextAlign.Center)
- .lineHeight(12)
- .margin({
- right:15
- })
- }.width('100%')
- .height('56vp')
- .backgroundColor('#ff0000')
- }
- /**
- * 添加商品数量
- *
- */
- addGoodsCount(index:number){
- let newCarList:ShopCarEntity[]=[]
- this.carList.forEach((item:ShopCarEntity,itemIndex:number)=>{
- if (itemIndex===index) {
- item.count++
- item.itemkey=`${Math.random()*10}-${item.id}-${Math.random()}}`
- }
- newCarList.push(item)
- })
- //重新赋值
- this.carList=newCarList
- }
- /**
- * 减少商品数量
- */
- reduceGoodsCount(index:number){
- let newCarList:ShopCarEntity[]=[]
- this.carList.forEach((item:ShopCarEntity,itemIndex:number)=>{
- if (itemIndex===index) {
- item.count--
- item.itemkey=`${Math.random()*10}-${item.id}-${Math.random()}`
- }
- newCarList.push(item)
- })
- //重新赋值
- this.carList=newCarList
- }
- /**
- * 给itemView生成唯一的key
- *
- */
- generatorItemViewKey(data:ShopCarEntity):string{
- if (data.itemkey) {
- return data.itemkey
- }
- return `${Math.random()*10}*${data.id}--${Math.random()}]`
- }
- /**
- * 商品列表
- */
- @Builder CarListCompoent(){
- Scroll(){
- Column(){
- if (this.carList.length>0){
- List({space:2}){
- ForEach(this.carList,(item:ShopCarEntity,index:number)=>{
- ListItem(){
- this.CarItemComponent(item,index)
- }
- },(item:ShopCarEntity) => this.generatorItemViewKey(item))
- }
- }else {
- this.EmptyComponent()
- }
- }.width('100%').height('100%')
- }.width('100%')
- .flexGrow(1)
- }
- @Builder
- CarItemComponent(data:ShopCarEntity,index:number){
- Flex({direction:FlexDirection.Row,alignItems:ItemAlign.Center}){
- //复选框
- Checkbox().width(20).height(20).select(true).selectedColor($r('app.color.focus_color'))
- .onChange((value:boolean)=>{
- this.carItemSelectChanged(value,index)
- })
- Image(data.goods_default_icon)
- .margin({left:10,right:10})
- .width(100).height(100).objectFit(ImageFit.Contain).key(data.goods_id.toString())
- //商品描述和价格
- Column(){
- Text(data.goods_desc).fontSize(14).fontColor(Color.Gray).maxLines(2).textOverflow({overflow:TextOverflow.Ellipsis})
- //商品价格
- Text(){
- Span('价格:').fontSize(12).fontColor(Color.Black)
- Span(`${data.goods_default_price}`).fontColor($r('app.color.focus_color')).fontSize(12)
- }.margin({top:5,bottom:5})
- //数量加减
- Row(){
- Text('数量:').fontSize(12).fontColor(Color.Black)
- Counter(){
- Text(`${data.count}`).fontSize(12)
- }.width(100).height(20)
- .onInc(()=>{
- if (data.count<50) {
- this.addGoodsCount(index)
- }
- })
- .onDec(()=>{
- if (data.count>1) {
- this.reduceGoodsCount(index)
- }
- })
- //空白组件
- Blank().layoutWeight(1)
- //当前商品选中时候,才显示
- if (data.isSelected){
- Image($r('app.media.news_selected')).width(15)
- .objectFit(ImageFit.Contain).onClick(()=>{
- })
- }
- }.alignItems(VerticalAlign.Center)
- }.alignItems(HorizontalAlign.Start)
- .margin({right:5})
- }.padding({left:5,right:5})
- .backgroundColor(Color.White)
- }
- @Builder EmptyComponent(){
- Column(){
- Column(){
- Image($r('app.media.caca')).width(70).objectFit(ImageFit.Contain)
- Text('欢迎添加购物车!!!').fontColor(Color.Gray).fontSize(14).margin({
- top:5
- })
- }.justifyContent(FlexAlign.Center)
- .alignItems(HorizontalAlign.Center)
- }.width('100%')
- .height('100%')
- .justifyContent(FlexAlign.Center)
- }
- /**
- * 底部操作
- *
- */
- @Builder BottomOptionsCompoent(){
- Flex({direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceBetween,alignItems:ItemAlign.Center}){
- //全选和总价
- Row(){
- Checkbox()
- .width(15)
- .height(15)
- .select(true).selectedColor($r('app.color.select_color'))
- .onChange((value:boolean)=>{
- })
- Text('全选').fontColor(Color.Gray).fontSize(12)
- //总价
- Text(){
- Span('总价: ').fontColor(Color.Black).fontSize(12).fontWeight(FontWeight.Bold)
- Span('qwqqeqeqeq').fontColor($r('app.color.focus_color')).fontSize(12)
- Span('元').fontColor(Color.Black).fontSize(12).fontWeight(FontWeight.Bold)
- Span('12节').fontColor(Color.Black).fontSize(12).fontWeight(FontWeight.Bold)
- }.margin({left:20})
- .textAlign(TextAlign.Start)
- }
- .margin({left:10})
- .height('100%')
- //立即结算
- Button('立即结算').margin({right:10}).width(80).height(35).fontSize(12).backgroundColor($r('app.color.focus_color')).onClick(()=>{
- })
- }.width('100%')
- .height('50vp')
- .backgroundColor(Color.White)
- }
- }
- 购物车的代码,以及所有的代码点击加减事件结算
复制代码
这是整体的代码,数量加减和多选删除以及结算
欢迎各人一起讨论,修改和增补代码中的不敷之处
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |