《伴时匣》app开发技术分享--表单提交页(5)

简介: 上一节我们已经实现了表单信息的创建,完成了首页跳转表单提交页的内容,这一节我们就要实现表单创建前的数据填充的页面。

## 技术栈

Appgallery connect

开发准备

上一节我们已经实现了表单信息的创建,完成了首页跳转表单提交页的内容,这一节我们就要实现表单创建前的数据填充的页面。

功能分析

在表单提交前,我们要实现的静态内容有很多,分别有输入框,开关,时间选择器,表类型,是否置顶,是否设置结束时间,是否包含当天日期,事件的颜色选择,图标选择,当天的天气选择,心情选择,这些我们都需要去先有一个静态选择或者展示的入口

功能开发

我们先实现简单的静态页

import {
    CommonTopBar } from '../widget/CommonTopBar';

@Entry
@Component
struct TablePushPage {
   
  @State title:string=''
  @State time_visibility:boolean=false
  @State top_visibility:boolean=false

  build() {
   
    Column({
   space:15}) {
   
      CommonTopBar({
    title: "添加新日子", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})
      Row({
   space:10}){
   
        Image($r('app.media.mubiaoshijian'))
          .height(30)
          .width(30)
        TextInput({
   text:this.title,
          placeholder: '请输入事件名称'
        })
          .placeholderColor("#ff999595")
          .fontColor("#333333")
          .onChange((value: string) => {
   
            this.title=value
          })
      }
      .width('100%')
      .justifyContent(FlexAlign.Start)

      Row({
   space:10}){
   
        Image($r('app.media.mubiaori'))
          .height(30)
          .width(30)
        Text("目标日")
          .fontColor(Color.Gray)
          .fontSize(14)
        Blank()
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)
      Row({
   space:10}){
   
        Image($r('app.media.daoshuben'))
          .height(30)
          .width(30)
        Text("倒数本")
          .fontColor(Color.Gray)
          .fontSize(14)
        Blank()


        Text("生活")
          .fontColor(Color.Gray)
          .fontSize(14)
        Image($r('app.media.xiajiantou'))
          .height(15)
          .width(15)
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)

      Row({
   space:10}){
   
        Image($r('app.media.zhiding'))
          .height(30)
          .width(30)
        Text("置顶")
          .fontColor(Color.Gray)
          .fontSize(14)
        Blank()
        Image(this.top_visibility?$r('app.media.kai'):$r('app.media.guan'))
          .width(60)
          .height(30)
          .onClick(async ()=>{
   
            this.top_visibility=!this.top_visibility
          })
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)
      Row({
   space:10}){
   
        Image($r('app.media.jingqueshijian'))
          .height(30)
          .width(30)
        Text("显示精确时间")
          .fontColor(Color.Gray)
          .fontSize(14)
        Blank()
        Image(this.time_visibility?$r('app.media.kai'):$r('app.media.guan'))
          .width(60)
          .height(30)
          .onClick(async ()=>{
   
                this.time_visibility=!this.time_visibility
          })
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)
      Row({
   space:10}){
   
        Image($r('app.media.yanse'))
          .height(30)
          .width(30)
        Text("事件颜色")
          .fontColor(Color.Gray)
          .fontSize(14)
        Blank()
        Image($r('app.media.xiajiantou'))
          .height(15)
          .width(15)
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)

      Row({
   space:10}){
   
        Image($r('app.media.tubiao'))
          .height(30)
          .width(30)
        Text("事件图标")
          .fontColor(Color.Gray)
          .fontSize(14)

        Blank()
        Image($r('app.media.xiajiantou'))
          .height(15)
          .width(15)
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)

      Row({
   space:10}){
   
        Image($r('app.media.tianqi'))
          .height(30)
          .width(30)
        Text("天气")
          .fontColor(Color.Gray)
          .fontSize(14)
        Blank()
        Image($r('app.media.xiajiantou'))
          .height(15)
          .width(15)
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)

      Row({
   space:10}){
   
        Image($r('app.media.xinqing'))
          .height(30)
          .width(30)
        Text("心情")
          .fontColor(Color.Gray)
          .fontSize(14)
        Blank()
        Image($r('app.media.xiajiantou'))
          .height(15)
          .width(15)
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)

    }
    .padding(10)
    .backgroundColor(Color.White)
    .height('100%')
    .width('100%')
  }
}

接下来我们实现一个日期选择的弹窗

  Row({
   space:10}){
   
        Image($r('app.media.mubiaori'))
          .height(30)
          .width(30)
        Text("目标日")
          .fontColor(Color.Gray)
          .fontSize(14)
        Blank()
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)
      .onClick(()=>{
   
        this.getUIContext().showDatePickerDialog({
   
          start: new Date("2000-1-1"),
          end: new Date("2100-12-31"),
          selected: this.selectedDate,
          disappearTextStyle: {
    color: '#297bec', font: {
    size: '20fp', weight: FontWeight.Bold } },
          textStyle: {
    color: Color.Black, font: {
    size: '18fp', weight: FontWeight.Normal } },
          selectedTextStyle: {
    color: Color.Blue, font: {
    size: '26fp', weight: FontWeight.Regular } },
          acceptButtonStyle: {
   
            type: ButtonType.Normal,
            style: ButtonStyleMode.NORMAL,
            role: ButtonRole.NORMAL,
            fontColor: 'rgb(81, 81, 216)',
            fontSize: '26fp',
            fontWeight: FontWeight.Bolder,
            fontStyle: FontStyle.Normal,
            fontFamily: 'sans-serif',
            backgroundColor: '#A6ACAF',
            borderRadius: 20
          },
          cancelButtonStyle: {
   
            type: ButtonType.Normal,
            style: ButtonStyleMode.NORMAL,
            role: ButtonRole.NORMAL,
            fontColor: Color.Blue,
            fontSize: '16fp',
            fontWeight: FontWeight.Normal,
            fontStyle: FontStyle.Italic,
            fontFamily: 'sans-serif',
            backgroundColor: '#50182431',
            borderRadius: 10
          },
          onDateAccept: (value: Date) => {
   
            this.selectedDate = value;
            console.info("时间" + value.toString());
          }

        });
      })

这样我们就实现了表单提交页和日期的选择器

相关文章
|
6月前
《仿盒马》app开发技术分享-- 商品兑换校验(70)
上一节我们实现了可兑换商品的详情,我们能够查看到商品更多的信息,这一节我们来实现商品兑换相关的功能,在进行商品兑换之前,我们在兑换详情页面,点击立即兑换按钮之后我们需要跳转到兑换详情页,但是用户的积分可能达不到我们当前商品的兑换标准,这时候如果我们进入了下个页面,在用户点击确认的时候去校验,就让用户多操作了一步,这样的操作体验非常的不友好,所以我们在兑换前进行校验,通过校验后我们在确认页实现地址添加相关的内容
113 4
|
6月前
|
数据库
《仿盒马》app开发技术分享-- 兑换商品取消订单&取消列表展示(77)
上一节我们实现了兑换订单待发货列表的展示逻辑,成功的在列表中展示出来,我们在订单条目中新增了两个按钮,确认揽收与取消订单,这一节我们要实现的功能是订单的取消,以及订单取消后取消列表的展示
119 1
|
6月前
|
存储
《仿盒马》app开发技术分享-- 兑换订单提交(73)
上一节我们实现了兑换提交前的准备页面,向用户展示了兑换相关的所有信息,这一节我们就可以实现兑换订单的提交了
120 1
|
6月前
《仿盒马》app开发技术分享-- 兑换商品收货确认&已完成列表展示(79)
上一节我们实现了兑换商品订单的确认揽收功能,实现了tabs切换时的数据刷新,实现了待收货订单的列表展示。这一节我们要实现确认收货功能,并且实现待收货的列表展示功能
122 0
|
6月前
《仿盒马》app开发技术分享-- 兑换商品确认揽收&待收货列表展示(78)
上一节我们实现了订单取消功能,实现了tabs切换时的数据刷新,实现了已取消订单的列表展示。这一节我们要实现揽收功能,并且实现待收货的列表展示功能
152 0
|
存储
《仿盒马》app开发技术分享-- 待发货兑换订单列表(76)
上一节我们实现了兑换订单展示页面的框架,这一节我们要进行兑换订单的展示,在兑换订单提交后,默认的状态是待发货状态,我们用列表的方式展示出来
110 0
《仿盒马》app开发技术分享-- 兑换订单列表框架(75)
上一节我们针对订单兑换的业务逻辑进行了完善,成功的在兑换物品之后修改了用户信息的修改,新增了积分消费的记录。这一节我们实现订单创建之后进入的列表展示页框架。
123 0
《仿盒马》app开发技术分享-- 订单提交逻辑完善(74)
上一节我们实现了兑换订单的提交功能,并且成功的把数据提交到云端,但是我们的业务逻辑并没有完全实现,我们只是把数据提交到了云端,但我们的积分还存在,我们回到积分数据查看的页面也没有消费积分的记录,这一节我们要实现的就是完善订单提交的业务逻辑
131 0
|
JSON 数据库 数据格式
《仿盒马》app开发技术分享-- 兑换页地址商品展示(71)
上一节我们实现了商品兑换的校验功能,这能很好的帮助用户节省更多的时间,同时也能减小服务器的开销,同时我们的业务逻辑也会更加的完善功能也更加的丰富了,这一节我们实现校验通过后的内容,实现地址的选择和兑换商品信息的展示
116 0
《仿盒马》app开发技术分享-- 兑换商品详情(69)
上一节我们实现了兑换商品列表的展示,用户可以在回收之后通过积分页面进入兑换列表页查看当前能够兑换的商品了,我们距离一个完整的app又更近了一步,现在我们要实现的就是当用户点击列表条目的时候能够查看数据详情。
109 0