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

鸿蒙小林
• 阅读 4

## 技术栈

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());
          }

        });
      })

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

点赞
收藏
评论区
推荐文章
鸿蒙小林 鸿蒙小林
13小时前
《仿盒马》app开发技术分享-- 商品详情页(10)
技术栈Appgalleryconnect开发准备上一节我们实现了自定义标题栏和商品详情的数据接收,我们已经拿到了想要的数据,这一节我们要丰富商品详情页的内容。商品详情页面我们需要展示的是商品的各个属性参数、商品的图片、商品规格、活动详情等功能分析商品详情页
鸿蒙小林 鸿蒙小林
13小时前
《仿盒马》app开发技术分享-- 分类模块顶部导航列表弹窗(16)
技术栈Appgalleryconnect开发准备上一节我们实现了分类页面的顶部导航栏列表,并且实现了首页金刚区跟首页导航栏的联动,这一节我们实现导航栏列表的弹窗功能,需要学习的知识点有自定义弹窗,同时我们的数据源需要跟分类页保持一一致。功能分析1.弹窗自定
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 旧物回收页(业务逻辑)(41)
技术栈Appgalleryconnect开发准备上一节我们实现了旧物回收页的静态展示页,现在我们开始添加对应的模块逻辑,我们要实现的内容有,地址选择、留言、取件时间、重量选择这些模块功能分析1.地址选择要实现地址选择,我们首先要在跳转到地址列表选择页,传递
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 旧物回收订单列表(43)
技术栈Appgalleryconnect开发准备上一节我们实现了订单的创建,并且成功吧数据提交到云数据库中,这一节我们实现的内容是展示我们提交的订单列表功能分析要实现订单列表的展示,首先我们要查询对应用户下的订单列表,查询出对应的订单列表后,展示出对应的数
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 兑换订单提交(73)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换提交前的准备页面,向用户展示了兑换相关的所有信息,这一节我们就可以实现兑换订单的提交了功能分析订单提交我们需要创建对应的兑换商品订单提交信息表,我们需要把地址,商品信息,积分,备注,订单状
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 订单提交逻辑完善(74)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换订单的提交功能,并且成功的把数据提交到云端,但是我们的业务逻辑并没有完全实现,我们只是把数据提交到了云端,但我们的积分还存在,我们回到积分数据查看的页面也没有消费积分的记录,这一节我们要实
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 待发货兑换订单列表(76)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换订单展示页面的框架,这一节我们要进行兑换订单的展示,在兑换订单提交后,默认的状态是待发货状态,我们用列表的方式展示出来功能分析进入页面时我们就要通过用户的userid去查询对应的订单,获取
鸿蒙小林 鸿蒙小林
4小时前
《伴时匣》app开发技术分享--用户注册(2)
技术栈Appgalleryconnect开发准备上一节我们已经实现了静态的用户登陆页,这时候我们已经有了用户登录的窗口了,现在我们只需要搞定用户数据的插入,就可以使用登陆功能了,这一节我们就要实现用户注册功能,实现用户的数据插入。这样我们在后续的业务里就可
鸿蒙小林 鸿蒙小林
4小时前
《伴时匣》app开发技术分享--用户登录(3)
技术栈Appgalleryconnect开发准备上一节我们实现了用户数据的提交,我们成功的实现了用户的注册,这一节我们就要根据提交的信息进行登陆验证,在登陆之后我们需要保存当前用户的信息,方便我们后续的使用。功能分析要实现登陆,首先我们需要拿到用户输入的内
鸿蒙小林 鸿蒙小林
4小时前
《伴时匣》app开发技术分享--表单提交准备(4)
技术栈Appgalleryconnect开发准备上一节我们实现了用户登录功能,现在我们进入首页,可以开始准备着手发布我们的日期计划了,在这之前我们先实现信息表的创建。在首页实现一个标题栏,一个悬浮的按钮。功能分析我们的信息表要展示的内容很多,首先是我们的事