家政服务小程序实战开发教程017-我的页面未注册功能开发

news2024/10/5 21:19:50

顾客在家政服务小程序可以在线提交预约信息,预约成功后可以查看订单的进度。我们本篇就来实现一下我的页面的功能。

1 新建页面

进入编辑器,在组件页面区域点击+号,创建我的页面
在这里插入图片描述
在这里插入图片描述

2 未登录页面开发

我的页面的逻辑是如果用户未注册,那么显示注册按钮,要求用户注册。如果用户已经注册,则显示我的预约菜单

往页面放入网格布局,修改列数量为2
在这里插入图片描述
选中第一列,修改列宽度为手动调节,我们让列宽占到4
在这里插入图片描述
然后往列里放入普通容器,普通容器里放入图片组件
在这里插入图片描述
在未登录之前,我们给图片一个默认的头像图片,从素材库选择一个默认登录的图片
在这里插入图片描述
设置图片的布局模式为裁剪填满,修改图片的宽和高
在这里插入图片描述
设置普通容器为居中对齐
在这里插入图片描述
设置15像素的内边距
在这里插入图片描述
第二列增加一个普通容器,里边放一个文本组件,修改文本内容为未注册
在这里插入图片描述
设置普通容器的宽和高为100%,布局为横向排列,左对齐,垂直居中对齐
在这里插入图片描述
网格布局下放置一个普通容器,设置为灰色的背景,高度为8Px
在这里插入图片描述
下边放置一个普通容器,里边放置一个按钮组件
在这里插入图片描述
设置按钮的宽度为90%
在这里插入图片描述
设置普通容器为居中对齐,外边距为100
在这里插入图片描述

3 控制未登录显示

页面搭建好之后,我们就需要判断什么状态下用户是未注册。我们先定义一个变量来表示用户信息
在这里插入图片描述
默认值我们自己初始化一下

{"_id":""}

当用户启动小程序的时候我们需要在生命周期函数里去加载一下信息,逻辑是根据当前用户的openid来去数据源查询,如果找到数据说明用户已经注册了,如果未找到数据说明用户未注册

如果需要存储信息,我们先需要新建一个数据源,字段包含三个,昵称、头像、openid

在控制台点击新建数据模型,将三个字段都建立好

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据源创建好之后,就在全局生命周期函数里加载用户信息

export default {
  async onAppLaunch(launchOpts) {
    //console.log('---------> LifeCycle onAppLaunch', launchOpts)
    //$app.auth.currentUser.openId = "o29js5TnCwiYJayG9AieKzkIlOBg"
    const userInfo  = await $app.auth.getUserInfo();

    console.log(userInfo)

    const result = await app.cloud.callModel({
      name:'yhxx_5wybupo',
      methodName:'wedaGetRecords',
      params:{
        pageNo:1,
        pageSize:1,
        where:[
          {
            key:"openid",
            rel:"eq",
            val:userInfo.openId
          }
        ]
      }
    })
    console.log(userInfo.openId)
    console.log(result)
    if(result.total>0){
      $app.dataset.state.user = result.records[0]
      /*app.navigateTo({
        pageId:"index",
        params:{}
      })*/
    }else{
      /*app.navigateTo({
        pageId:"u_jiao_se_xuan_ze",
        params:{}
      })*/
    }
  },
  onAppShow(appShowOpts) {
    //console.log('---------> LifeCycle onAppShow', appShowOpts)
  },
  onAppHide() {
    //console.log('---------> LifeCycle onAppHide')
  },
  onAppError(options) {
    //console.log('---------> LifeCycle onAppError', options)
  },
  onAppPageNotFound(options) {
    //console.log('---------> LifeCycle onAppPageNotFound', options)
  },
  onAppUnhandledRejection(options) {
    //console.log('---------> LifeCycle onAppUnhandledRejection', options)
  }
}

在这里插入图片描述
加载完了之后,我们就可以给容器做条件展示绑定了,我们的逻辑是看user对象的_id是否为空,如果为空就表示用户未注册

在这里插入图片描述

app.dataset.state.user._id==""

按钮那块也按照同样的方式进行绑定,然后给用户注册按钮绑定事件,跳转到我们的用户新增页面

在这里插入图片描述

总结

我们本篇主要讲解的是我的信息页面的功能开发,用户在未注册的时候我们需要引导用户注册信息,需要根据变量的值来显示对应的组件信息,需要了解微搭的相关概念,比如生命周期函数、前端API、数据源的API等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MyBatisPlus】一文带你快速上手MyBatisPlus

文章目录MyBatisPlus学习笔记前言1、MyBatisPlus概述2、快速体验3、CRUD接口3.1 Mapper层CRUD接口3.1.1 Insert3.1.2 Delete3.1.3 Update3.1.4 Select3.2 Service层CRUD接口3.2.1 Save3.2.2 Remove3.2.3 Update3.2.4 Get3.3 自定义SQL接口4、常用注解和配置4.1 TableId4.2 Tabl…

【C++】模板进阶(非类型模板参数、类模板的特化和模板的分离编译)

之前我们讲解过模板初阶,没有阅读过的童鞋可以先去阅读之前的博文----->模板初阶 本章我们将针对模板进行进一步的讲解。 目录 (一)非类型模板参数 (二)模板的特化 (1)概念 &#xff0…

我的面试八股(Java集合篇)

Java集合 两个抽象接口派生:一个是Collection接口,存放单一元素;一个是Map接口存放键值对。 Vector为什么是线程安全 简单,因为官方在可能涉及到线程不安全的操作都进行了synchronized操作,就自身源码就给你加了把锁。 Vector…

Stacking:解决机器学习进行多模型组合的实用工具

文章目录1 Stacking原理第一步:生成预测结果第二步:整合预测结果2 使用Python实现Stacking第一步:生成预测结果第二步:整合预测结果借助sklearn实现stacking3 各领域内的一些实际应用在机器学习领域,算法的选择和参数的…

前端--文件上传--文件切片--利用FileReader()中的readAsDataURL()做缩略图--多文件上传--formData--切片上传实现

一、文件上传 <template><div><input type"file" name"file" change"fileChange" /><button click"submit">提交</button></div> </template><script setup>function fileChange(e)…

ROS开发之如何制作launch启动文件?

文章目录0、引言1、Launch文件语法2、Launch示例0、引言 笔者因研究课题涉及ROS开发&#xff0c;学习了古月居出品的ROS入门21讲&#xff0c;为巩固launch的知识&#xff0c;本文将ROS的launch启动文件制作一讲内容进行总结。launch文件通过XML文件实现多节点的配置和启动&…

Compose (11/N) - 手势

一、点击 1.1 可点击 Modifier.clickable( ) 允许应用检测对该元素的点击。 Composable fun ClickableSample() {val count remember { mutableStateOf(0) }Text(text count.value.toString(),modifier Modifier.clickable { count.value 1 }) } 1.2 手势检测 Modifier.p…

【技术分享】接口自动化测试中,如何做断言验证?

在服务端自动化测试过程中&#xff0c;发起请求之后还需要对响应值进行验证。验证响应信息符合预期值之后&#xff0c;这一条接口自动化测试用例才算完整的通过。所以这一章节&#xff0c;将会讲解在接口自动化测试中&#xff0c;如何对服务端返回的响应内容做断言验证。 实战…

C语言函数大全-- i 开头的函数

C语言函数大全 本篇介绍C语言函数大全– i 开头的函数 1. imagesize 1.1 函数说明 函数声明函数功能unsigned imagesize(int left, int top, int right, int bottom);获取保存位图像所需的字节数 1.2 演示示例 #include <graphics.h> #include <stdlib.h> #in…

【Java数据结构】链表OJ提交小记

目录 1.删除链表中所有值为val的节点 2.反转单链表 3.返回链表的中间节点 4.返回链表倒数第k个节点 5.按次序合并链表 6.按值分割链表 7.判断链表是否为回文 1.删除链表中所有值为val的节点 1. 删除链表中所有值为val的节点https://leetcode.cn/problems/remove…

考研数据结构-绪论

绪论 文章目录绪论1. 什么是数据结构2. 基本概念数据结构的四类基本结构&#xff08;逻辑结构&#xff09;存储结构顺序存储和链式存储比较分析3. 算法概念特征优点&#xff08;也是要求&#xff09;算法效率的度量概念时间复杂度空间复杂度(了解)1. 什么是数据结构 数据结构是…

【Python】字符串 ⑦ ( input 字符串输入 | input 函数自带提示参数 | input 函数接收的变量类型 )

文章目录一、input 字符串输入二、代码示例三、input 函数自带提示参数四、input 函数接收的变量类型一、input 字符串输入 在命令行中 , 使用 printf 可以输出数据 , 将 变量 , 字面量 , 表达式 输出到命令行中 ; 在命令行中 , 使用 input 语句可以 在 命令行 中 , 从键盘获取…

2023年第五届传智杯前四题题解(后俩没写出来)

比赛链接&#xff1a;第五届“传智杯”全国大学生计算机大赛&#xff08;决赛B组&#xff09; - 比赛详情 - 洛谷 时效「月岩笠的诅咒」 题目背景 蓬莱之药&#xff0c;被诅咒的不死之药。 奉命将蓬莱之药投入富士山中销毁的月岩笠&#xff0c;最终打算把蓬莱之药改投入八岳销…

STM32Cube的debug和release切换

一&#xff0c; Debug / Release版本区别 来源&#xff1a;STM32CUBEIDE中 Debug 和 Release 的作用/区别/使用场景 - svchao - 博客园 (cnblogs.com) 二&#xff0c;Debug / Release使用。 1&#xff0c;在编译的时候可以选择Debug 还是 Release . 2,使用stm32CubeIDE调试或运…

【模型复现】resnet,使用net.add_module()的方法构建模型。小小的改进大大的影响,何大神思路很奇妙,基础很扎实

从经验来看&#xff0c;网络的深度对模型的性能至关重要&#xff0c;当增加网络层数后&#xff0c;网络可以进行更加复杂的特征模式的提取&#xff0c;所以当模型更深时理论上可以取得更好的结果。但是更深的网络其性能一定会更好吗&#xff1f;实验发现深度网络出现了退化问题…

Git的安装与基本使用

Git是一个分布式版本控制工具&#xff0c;可以快速高效地处理从小型到大型的各种项目。 1.Git的安装 官网下载地址 &#xff1a;https://git-scm.com/ 安装过程 选择 Git 安装位置&#xff0c;要求是非中文并且没有空格的目录&#xff0c;然后下一步。 Git 选项配置&#xf…

ChatGPT搭建语音智能助手

环境 python&#xff1a;3 ffmpeg:用于处理视频和语音 gradio:UI界面和读取语音 概述 我们的目的是做一个语音智能助手 下面我们开始 准备工作 下载Visual Studio Code Visual Studio Code 因为需要写python代码&#xff0c;用Visual Studio Code比较方便。 安装pytho…

( “树” 之 DFS) 101. 对称二叉树 ——【Leetcode每日一题】

101. 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 提示&#xff1a…

webgl-画任意多边形

注意&#xff1a; let canvas document.getElementById(webgl) canvas.width window.innerWidth canvas.height window.innerHeight let radio window.innerWidth/window.innerHeight; let ctx canvas.getContext(webgl) 由于屏幕长宽像素不一样&#xff0c;导致了长宽像素…

移远云服务QuecCloud正式发布,一站式为全球客户提供创新有效的解决方案

4月12日&#xff0c;在“万物智联共数未来”移远通信物联网生态大会上&#xff0c;移远通信宣布正式推出其物联网云服务——QuecCloud。QuecCloud具备智能硬件开发、物联网开放平台、行业解决方案三大能力&#xff0c;可为开发者和企业用户提供从硬件接入到软件应用的全流程解决…