《仿盒马》app开发技术分享-- 绑定银行卡回显(52)

鸿蒙小林
• 阅读 7

技术栈

Appgallery connect

开发准备

上一节我们实现了安全锁的绑定,这一切都是为了帮助用户在提现流程上能有更好更安全的体验,现在我们开始正式着手提现相关的流程,我们先进行提现银行卡的绑定,绑定成功后我们关闭页面把数据回显到提现页

功能分析

首先我们要实现相应信息的录入,我们需要新建对应的银行卡绑定页面来填充信息,信息填充完成后把银行卡数据提交到云端的bindbank表中,然后我们在提现页面的onPageShow方法中查询对应的数据,展示到卡信息显示模块中,操作的时候一定要跟我们的userid进行关联

代码实现

首先我们创建对应的卡信息录入页面

import { bind_bank } from '../../clouddb/bind_bank';
import { User } from '../../entity/User';
import { StorageUtils } from '../../utils/StorageUtils';
import { cloudDatabase } from '@kit.CloudFoundationKit';
import showToast from '../../utils/ToastUtils';
import { router, Router } from '@kit.ArkUI';
import { CommonTopBar } from '../../widget/CommonTopBar';

let databaseZone = cloudDatabase.zone('default');

@Entry
@Component
struct BindCardPage {
  @State cardNum: string = '';
  @State bankName: string = '';
  @State peopleName: string = '';
  @State user: User|null=null

  async aboutToAppear(): Promise<void> {

    const value = await StorageUtils.getAll('user');
    if (value != "") {
      this.user = JSON.parse(value)
    }
  }


  build() {
    Column({space:5}) {
      CommonTopBar({ title: "添加银行卡", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})

      Row() {
        Text("卡 号")
          .fontColor(Color.Black)
          .fontSize(16)
          .fontWeight(FontWeight.Bold)
        TextInput({ text: this.cardNum, placeholder: '请输入银行卡号' })
          .placeholderColor("#999999")
          .placeholderFont({ size: 16, weight: 400 })
          .caretColor("#FCDB29")
          .width(400)
          .height(50)
          .backgroundColor(null)
          .type(InputType.Number)
          .margin(20)
          .fontSize(14)
          .fontColor(Color.Black)
          .onChange((value: string) => {
            this.cardNum = value
          })
      }
      Divider().width('100%').height(0.8)
        .color("#e6e6e6")
        .width('100%')
      Row() {
        Text("银 行")
          .fontColor(Color.Black)
          .fontSize(16)
          .fontWeight(FontWeight.Bold)
        TextInput({ text: this.bankName, placeholder: '请输入所属银行' })
          .placeholderColor("#999999")
          .placeholderFont({ size: 16, weight: 400 })
          .caretColor("#FCDB29")
          .width(400)
          .height(50)
          .backgroundColor(null)
          .margin(20)
          .fontSize(14)
          .fontColor(Color.Black)
          .onChange((value: string) => {
            this.bankName = value
          })
      }
      Divider().width('100%').height(0.8)
        .color("#e6e6e6")
        .width('100%')
      Row() {
        Text("开户名")
          .fontColor(Color.Black)
          .fontSize(16)
          .fontWeight(FontWeight.Bold)
        TextInput({ text: this.peopleName, placeholder: '请输入银行卡号' })
          .placeholderColor("#999999")
          .placeholderFont({ size: 16, weight: 400 })
          .caretColor("#FCDB29")
          .width(400)
          .height(50)
          .backgroundColor(null)
          .margin(20)
          .fontSize(14)
          .fontColor(Color.Black)
          .onChange((value: string) => {
            this.peopleName = value
          })
      }
      Text("绑定")

        .width('95%')
        .padding(10)
        .borderRadius(10)
        .textAlign(TextAlign.Center)
        .fontColor(Color.White)
        .backgroundColor("#ffe03636")

    }
    .height('100%')
    .backgroundColor(Color.White)
  }
}

添加完成之后,我们把提交方法写到绑定事件上

  Text("绑定")

        .width('95%')
        .padding(10)
        .borderRadius(10)
        .textAlign(TextAlign.Center)
        .fontColor(Color.White)
        .backgroundColor("#ffe03636")
        .onClick(async ()=>{
          let cardInfo=new bind_bank()
          cardInfo.id=Math.floor(Math.random() * 1000000)
          cardInfo.user_id=this.user!.user_id
          cardInfo.bank_name=this.bankName
          cardInfo.bank_card=this.cardNum
          cardInfo.bank_people=this.peopleName
          let num = await databaseZone.upsert(cardInfo);
          if (num>0) {
            showToast("绑定成功")
            router.back()
          }
        })

绑定成功后我们关闭当前页面,回到提现页面进行数据查询


  @State bankList:BindBank[]=[]

async onPageShow(): Promise<void> {
    const value = await StorageUtils.getAll('user');
    if (value != "") {
      this.user = JSON.parse(value)
    }
    let databaseZone = cloudDatabase.zone('default');
    let condition = new cloudDatabase.DatabaseQuery(bind_bank);
    condition.equalTo("user_id", this.user?.user_id)
    let listData = await databaseZone.query(condition);
    let json = JSON.stringify(listData)
    let data: BindBank[] = JSON.parse(json)
    if (data.length>0) {
      this.bankList=data

    }
  }

到这里我们就实现了银行卡的绑定和回显

点赞
收藏
评论区
推荐文章
鸿蒙小林 鸿蒙小林
18小时前
《仿盒马》app开发技术分享-- 用户登陆页面(静态)(20)
技术栈Appgalleryconnect开发准备上一节我们实现了个人中心页面的静态展示,项目进行到这里呢,我们也是时候添加用户相关的内容了,因为到了后期,我们的数据都是跟用户绑定的,各个用户之间的数据并不互通,现在为了实现我们的用户绑定制度,我们需要给应用
鸿蒙小林 鸿蒙小林
18小时前
《仿盒马》app开发技术分享-- 个人中心页or静态头像选择(业务逻辑)(22)
技术栈Appgalleryconnect开发准备上一节我们实现了登录页面的业务逻辑,并且成功的实现了数据的查询,同时我们新增了用户首选项的工具类,现在主界面往登录页面跳转,登录成功后我们关闭登录页面,这时候我们就会回到个人中心页面,那么现在我们的业务逻辑是
鸿蒙小林 鸿蒙小林
18小时前
《仿盒马》app开发技术分享-- 回收金提现准备页(50)
技术栈Appgalleryconnect开发准备上一节我们实现了回收金的收入、支出记录查询,并且在订单完成后成功创建对应的收支记录,但是我们暂时只有收入记录,并没有支出记录,这一节我们将要实现账号的回收金提现功能,从商业角度实现app应用的正向循环功能分析
鸿蒙小林 鸿蒙小林
18小时前
《仿盒马》app开发技术分享-- 设置安全锁(51)
技术栈Appgalleryconnect开发准备上一节我们实现了提现页面以及部分组件的业务逻辑,那么我们在提现这一步为了更多的安全层面的考虑,设置了一个安全锁,用户只要开启了安全锁,那么每次的提现,都需要把本地的密码提交到云端核对安全锁的内容才可以执行后续
鸿蒙小林 鸿蒙小林
18小时前
《仿盒马》app开发技术分享-- 回收金提现(53)
技术栈Appgalleryconnect开发准备上一节我们实现了银行卡的绑定跟回显,这一节我们要真正的实现银行卡提现的功能了,在这之前我们还需要对提现页的业务逻辑进行更进一步的优化,同时为了方便我们去进行数据间的交互,我们在个人信息模块新增了金额和积分的字
鸿蒙小林 鸿蒙小林
18小时前
《仿盒马》app开发技术分享-- 回收金提现记录查询(54)
技术栈Appgalleryconnect开发准备上一节我们实现了回收金提现的功能,并且成功展示了当前账户的支出列表,但是我们的提现相关的记录并没有很好的给用户做出展示,用户只知道当前账户提现扣款,并不知道回收金的去向,这一节我们就要实现回收金记录的查询添加
鸿蒙小林 鸿蒙小林
18小时前
《仿盒马》app开发技术分享-- 回收金提现安全锁校验(55)
技术栈Appgalleryconnect开发准备上一节我们实现了回收金提现记录的展示功能,我们回收金相关的内容更加的丰富了,在之前的业务逻辑中我们添加了一个设置安全锁的功能,虽然我们成功设置了安全锁,也把对应的表信息提交到云端,但是我们并没有在提现的流程中
鸿蒙小林 鸿蒙小林
18小时前
《仿盒马》app开发技术分享-- 我的积分页(63)
技术栈Appgalleryconnect开发准备上一节我们实现了个人中心页面的业务逻辑优化,成功的在用户登陆退出状态下展示对应的组件内容,这一节我们来实现app中另外一个比较重要的模块积分模块。功能分析因为我们的回收订单是跟回收金积分是绑定的,我们在完成回
鸿蒙小林 鸿蒙小林
15小时前
《伴时匣》app开发技术分享--用户登录(3)
技术栈Appgalleryconnect开发准备上一节我们实现了用户数据的提交,我们成功的实现了用户的注册,这一节我们就要根据提交的信息进行登陆验证,在登陆之后我们需要保存当前用户的信息,方便我们后续的使用。功能分析要实现登陆,首先我们需要拿到用户输入的内
鸿蒙小林 鸿蒙小林
15小时前
《伴时匣》app开发技术分享--表单提交准备(4)
技术栈Appgalleryconnect开发准备上一节我们实现了用户登录功能,现在我们进入首页,可以开始准备着手发布我们的日期计划了,在这之前我们先实现信息表的创建。在首页实现一个标题栏,一个悬浮的按钮。功能分析我们的信息表要展示的内容很多,首先是我们的事