群聊前选择患者功能的实现

news2024/11/28 7:42:05

和普通群聊不同,开启一个图文会话聊天,必须先选择患者、团队、医生。

原来是集成到腾讯IM当中,现在需要单独写一个页面

原来的代码在这里:

			const handleShow = () => {
				uni.navigateTo({
					url: '/pageB/active-home/active-home'
				})
			};

是否挪动一个位置呢 引入IM后代码体积大,不满足微信小程序要求,所以得分包。

另外一个问题是 原来用的vant,我觉得重了。干脆逐步换掉它。

步骤条实现:

<template>

	<view class="content">
		<van-steps :steps="steps" :active="activeIndex" @change="handleChange">
			<template v-for="(step, index) in steps" :key="index">
				<van-step title="aa" :description="step.description" @next="handleNext(index + 1)">
				</van-step>
			</template>
		</van-steps>
		<view class="contentItem">
			<view v-if="activeIndex === 0">
				<!-- <van-search placeholder="请输入患者" v-model="searchText" shape="round" @search="onSearch" /> -->
				<uni-search-bar @confirm="onSearch" :focus="true" v-model="searchText" @blur="blur" @focus="focus"
					@input="input" @cancel="cancel" @clear="clear">
				</uni-search-bar>




				<van-checkbox-group :value="result" @change="onChange">
					<van-cell-group>
						<van-cell v-for="(item, index) in patients" :key="index" :title="item.patientName"
							:label="item.disease">
							<van-checkbox :name="item.id" class="cell_checkbox" />
						</van-cell>
					</van-cell-group>
				</van-checkbox-group>
			</view>

			<view v-if="activeIndex === 1">

				...
			</view>

			<view v-if="activeIndex === 2">
				...
		</view>

		<van-row>
			<van-col span="12">
				<van-button @click="handlePrevious" :disabled="activeIndex === 0" shape="round" block="true"
					size="small">上一步</van-button>
			</van-col>
			<van-col span="12">
				<van-button v-if="activeIndex !== steps.length - 1" @click="handleNext" shape="round" type="primary"
					block size="small">下一步</van-button>
				<van-button v-if="activeIndex === steps.length - 1" @click="handleCreateMeet" shape="round"
					type="primary" block size="small">新建活动</van-button>
			</van-col>
		</van-row>


		<van-dialog use-slot title="新建活动信息" :show="show" show-cancel-button @close="onClose_dialog"
			@confirm="createActivity">
			<van-cell-group>
				<van-field value="" placeholder="请输入活动名" :border="false" @change="onChange_meetName" />
			</van-cell-group>
		</van-dialog>
	</view>
</template>

这个Vue模板定义了一个具有多个步骤的表单界面,通常用于引导用户逐步完成一系列任务或填写信息。界面使用了uniapp框架和Vant UI库中的组件。下面是对模板中各个部分的解释说明:

  1. 步骤条 (<van-steps>):
    • 显示一个步骤条,通过:steps="steps"绑定步骤数据,:active="activeIndex"表示当前激活的步骤。
    • @change="handleChange"监听步骤变化事件。
    • 内部的<template v-for="...">循环用于渲染每个步骤的具体内容,但在这个例子中,步骤的具体内容似乎没有在循环中自定义,而是统一使用了<van-step>组件的默认内容(标题被硬编码为"aa")。
  2. 搜索栏和日历 (<uni-search-bar> 和 <van-calendar>):
    • activeIndex === 0时,显示搜索栏(<uni-search-bar>),这是一个uniapp提供的搜索组件,用于搜索患者。
    • 同时显示一个日期选择器(<van-calendar>),类型为范围选择(type="range"),用于选择日期区间。
    • 搜索栏和日历下方是一个复选框组(<van-checkbox-group>),用于选择患者和疾病。
  3. 团队选择 (<van-radio-group>):
    • activeIndex === 1时,显示一个单选按钮组(<van-radio-group>),用于从团队列表中选择一个团队。
    • 每个选项都是一个<van-cell>,内部包含一个<van-radio>
  4. 医生选择 (<van-checkbox-group>):
    • activeIndex === 2时,显示另一个复选框组,用于从医生列表中选择医生。
    • 每个选项显示医生的用户名和职位。
  5. 导航按钮 (<van-button>):
    • 在底部,有两个按钮:“上一步”和“下一步”(或“新建活动”,如果是最后一步)。
    • “上一步”按钮在第一步时被禁用。
    • “下一步”按钮在最后一步时变为“新建活动”按钮。
  6. 对话框 (<van-dialog>):
    • 显示一个对话框,用于输入新建活动的信息。
    • 对话框内有一个输入框(<van-field>),用于输入活动名称。
    • 对话框有取消和确认按钮,分别触发onClose_dialogcreateActivity方法。

搜索框实现:

搜索组件在uni扩展组件当中。ps:uni-app

            <uni-search-bar @confirm="onSearch" :focus="true" v-model="searchText" @blur="blur" @focus="focus" @input="input"
                                @cancel="cancel" @clear="clear">
            </uni-search-bar>


...
			onSearch(searchText) {
				this.getAllPatinet(searchText.value)
			},
			// 获取患者信息
			getAllPatinet(searchText) {
				uni.request({
					url: loginRequest.baseURL + 'getAllPatient',
					method: 'POST',
					data: {
						doctorId: wx.getStorageSync("userInfo").id,
						searchText: searchText
					},
					header: {
						'auth-token': wx.getStorageSync("token")
					},
					success: (res) => {
						if (res.data.code === 200) {
							this.patients = res.data.data
						} else {
							uni.showToast({
								title: res.data.msg,
								duration: 300
							})
						}
					}
				});
			},

实现选择患者功能:

				<view class="uni-list">
					<checkbox-group  @change="checkboxChange">
						<label class="uni-list-cell uni-list-cell-pd" v-for="item in patients" :key="item.id">
							<view>
								<checkbox :value="item.id" :checked="isSelected(item.id)" />
							</view>
							<view>{{item.patientName}}--{{item.disease}}</view>
						</label>
					</checkbox-group>
				</view>


...
		data() {
			return {
				steps: [{
						text: '选择患者',
						description: '请选择您的患者信息',
					},
					{
						text: '选择团队',
						description: '请选择您的团队信息',
					},
					{
						text: '选择专家',
						description: '请选择您的专家信息',
					},
				],
				activeIndex: 0, // 初始步骤索引
				searchText: '',
				patients: [],
				doctors: [],
				// result: [],
				result_doctor: [], //选中的医生
				date: '',
				show: false,
				result_group: [], // 用于存储选中的值  group
				doctorGroups: [],
				memberList: [],
				//用于展示对话框
				meetName: null,

				teamList: [],
				postList: [],
				selectedPatientIds: [], // 存储选中的患者ID
			}
		},

.....
			checkboxChange(e) {
			  // 更新选中的患者ID数组
			  this.selectedPatientIds = e.detail.value;
			},
			    isSelected(id) {
			      // 检查某个患者ID是否被选中
			      return this.selectedPatientIds.includes(id);
			    },

代码说明:

代码片段中,展示了一个Vue组件的模板部分和数据逻辑部分,主要用于处理一个患者选择界面的功能。

模板部分 (<template>)

  • <view class="uni-list">:定义了一个容器,用于包裹整个复选框组。
  • <checkbox-group @change="checkboxChange">:定义了一个复选框组,当组内复选框的选中状态发生变化时,会触发checkboxChange方法。
  • <label>:每个label代表一个患者选项,通过v-for指令遍历patients数组生成。
  • <checkbox :value="item.id" :checked="isSelected(item.id)" />:复选框,其value属性绑定到患者的idchecked属性根据isSelected(item.id)方法的返回值来确定是否选中。
  • <view>{{item.patientName}}--{{item.disease}}</view>:显示患者的姓名和疾病信息。

数据逻辑部分 (data 和 methods)

  • data():定义了组件的数据属性,其中patients数组存储了所有患者的信息,selectedPatientIds数组用于存储当前选中的患者ID。
  • checkboxChange(e):当复选框组的选中状态发生变化时,此方法会被调用。它通过e.detail.value获取到所有被选中的复选框的value值(即患者ID),并将这些ID存储到selectedPatientIds数组中。
  • isSelected(id):此方法用于检查某个特定的患者ID是否已经被选中。它通过判断selectedPatientIds数组是否包含该ID来实现。

工作流程

  1. 用户看到患者列表,每个患者旁边都有一个复选框。
  2. 用户可以通过点击复选框来选择或取消选择患者。
  3. 当用户选择或取消选择患者时,checkboxChange方法被触发,更新selectedPatientIds数组。
  4. isSelected方法用于在模板中动态地显示复选框的选中状态。

注意点

  • 确保patients数组在组件创建或某个适当的时机被正确初始化,并包含所有需要显示的患者信息。
  • selectedPatientIds数组应该是一个响应式属性,以便Vue能够检测到其变化并更新DOM。
  • isSelected方法通过检查selectedPatientIds数组来返回复选框的选中状态,这是Vue中处理这类问题的常见模式。

还没测试,有点担心反复进入的时候,状态是否应该清除的问题,这个要测试。今天晚了 明天把选择团队及医生补充上~~~~  

附:我们全局变量用的下面文章中第一种方式

ps:uniapp:实现全局变量的几种方式  

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

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

相关文章

基于边缘智能网关的机房安全监测应用

随着我国工业互联网的扎实推进&#xff0c;越来越多地区积极建设信息基础设施&#xff0c;以充沛算力支撑产业物联网的可持续发展&#xff0c;数据机房就是其中的典型代表。而且随着机房规模的扩大&#xff0c;对于机房的安全管理难题挑战也日益增加。 面向数据机房安全监测与管…

unity 使用UI上的数字按钮,给text添加数字,并且显示光标,删除光标前数字,

今天有个需求&#xff0c;输入身份证&#xff0c;但是不用键盘&#xff0c;要点击按钮输入数字&#xff0c;并且可以控制光标&#xff0c; 1、数字按钮&#xff1a;点击后text添加数字内容 2、删除按钮&#xff1a;删除光标前的一个字符 3、左箭头&#xff1a;移动光标向左移动…

C++设计模式(单例模式)

一、介绍 1.动机 在软件系统中&#xff0c;经常有这样一些特殊的类&#xff0c;必须保证它们在系统中只存在一个实例&#xff0c;才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器&#xff0c;提供一种机制来保证一个类只有一个实例? 这应该是类设计者的…

Could not locate device support files.

报错信息&#xff1a;Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题&#xff1a;xcode15升级到xcode16之后&#xff0c;13.…

【Webgl_glslThreejs】制作流水效果/毛玻璃效果材质

效果预览 shadertory源码 source&#xff1a; https://www.shadertoy.com/view/lldyDs 材质代码 import { DoubleSide, ShaderChunk, ShaderMaterial, TextureLoader } from "three"; /** * * source https://www.shadertoy.com/view/lldyDs */export default fu…

海康VsionMaster学习笔记(学习工具+思路)

一、前言 VisionMaster算法平台集成机器视觉多种算法组件&#xff0c;适用多种应用场景&#xff0c;可快速组合算法&#xff0c;实现对工件或被测物的查找测量与缺陷检测等。VM算法平台依托海康威视在图像领域多年的技术积淀&#xff0c;自带强大的视觉分析工具库&#xff0c;可…

XML JSON

XML 与 JSON 结构 XML&#xff08;eXtensible Markup Language&#xff09; 1. 定义 XML 是一种标记语言&#xff0c;用于描述数据的结构和内容。主要用于数据存储与交换。 2. 特点 可扩展性&#xff1a;用户可以自定义标签。层次化结构&#xff1a;数据以树形结构组织&…

[VSCode] vscode下载安装及安装中文插件详解(附下载文件)

前言 vscode 链接&#xff1a;https://pan.quark.cn/s/3acbb8aed758 提取码&#xff1a;dSyt VSCode 是一款由微软开发且跨平台的免费源代码编辑器&#xff1b;该软件支持语法高亮、代码自动补全、代码重构、查看定义功能&#xff0c;并且内置了命令行工具和Git版本控制系统。 …

wireshark基础

免责声明&#xff1a; 笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 泷羽sec官网&#xff1a;https://longyusec.com/ 泷羽sec B站地址&#xff1a;https:/…

李宏毅LLM探索(1)

1引入 1.1 提问&#xff1a;请列出你能做的事情&#xff0c;至少三十项&#xff0c;每一项都简单扼要:然后把你能做的事情制成文字云 文心一言生成&#xff1a; 以下是我能做的至少三十项事情&#xff0c;每一项都简单扼要地列出&#xff1a;回答问题 提供信息 生成文本 理解…

磁盘文件系统问题排查

1. ext4磁盘结构 块组&#xff1a;超级块&#xff1a;块位图&#xff1a;inode位图&#xff1a;inode表&#xff1a;空闲inode表&#xff1a;空闲块表&#xff1a;2. 块组结构 Group 0: (Blocks 0-32767) csum 0xfd42 [ITABLE_ZEROED]Primary superblock at 0, Group descript…

百度雪花算法id默认配置过期注意更新配置

百度雪花id项目地址&#xff1a;GitHub - baidu/uid-generator: UniqueID generator 默认配置根据redme看容易看迷糊&#xff0c;图和配置它压根就不是对应的 默认的配置如下 <!-- Specified bits & epoch as your demand. No specified the default value will be us…

(11)(2.2) BLHeli32 and BLHeli_S ESCs(二)

文章目录 前言 1 传递支持 前言 BLHeli 固件和配置应用程序的开发是为了允许配置 ESC 并提供额外功能。带有此固件的 ESC 允许配置定时、电机方向、LED、电机驱动频率等。在尝试使用 BLHeli 之前&#xff0c;请按照 DShot 设置说明进行操作(DShot setup instructions)。 1 传…

【初阶数据结构和算法】初识树与二叉树的概念以及堆和完全二叉树之间的关系

文章目录 一、树的概念与结构1.树的概念2.树的相关术语3.树的表示4.树形结构实际运用举例 二、二叉树的概念及特殊二叉树1.二叉树的概念2.特殊的二叉树满二叉树完全二叉树二叉树的性质(由满二叉树特点推导) 三、二叉树的存储结构1.二叉树的顺序结构2.二叉树的链式结构 四、堆和…

如何在Canvas中添加背景图片、图片元素和文字元素

Canvas是HTML5中一个强大的元素&#xff0c;它允许我们在网页上进行图形绘制。在本文中&#xff0c;我们将学习如何在Canvas中添加背景图片、图片元素以及文字元素。 创建Canvas元素 首先&#xff0c;我们需要在HTML文档中创建一个<canvas>元素。以下是创建一个500x500像…

单点登录深入详解之设计方案总结

基于cookie的单点登录解决方案 概述 用户登录之后 , 将认证信息存储至 Cookie &#xff0c;当再次访问本服务或者访问其他应用服务时&#xff0c;直接从 Cookie 中传递认证信息&#xff0c;进行鉴权处理。 问题 1. 如何保障Cookie内用户认证信息的安全性? 第一, Cookie…

深入探讨 Redis 持久化机制:原理、配置与优化策略

文章目录 一、引言二、Redis持久化概述三、RDB&#xff08;Redis DataBase&#xff09;持久化1、RDB概念与工作原理2、RDB的配置选项3、RDB优化配置项4、RDB的优势与劣势 三、AOF&#xff08;Append-Only File&#xff09;持久化1、AOF概念与工作原理2、AOF的三种写回策略3、Re…

Java图书管理系统(简易保姆级)

前面学习了这么多知识&#xff0c;为了巩固之前的知识&#xff0c;我们就要写一个图书管理系统来帮助大家复习&#xff0c;让大家的知识融会贯通~~~ 话不多说&#xff0c;直接开始今天的内容~ 首先呢&#xff0c;我们要有一个大体的思路&#xff1a; 实现效果思路有两种情况&a…

网络安全在现代企业中的重要作用

网络安全是这个数字时代最令人担忧的事情之一。对技术的依赖性越来越强&#xff0c;使其同时面临多种网络威胁。其声誉和法律后果的大幅下降可能归因于一次妥协。 这使得良好的网络安全成为所有企业的选择和必需品。本文介绍了网络安全的重要性、企业中常见的网络威胁以及公司…

Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录

前言&#xff1a;纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 参考&…