建设环境竣工验收网站东莞设计网站公司

张小明 2026/3/12 14:14:25
建设环境竣工验收网站,东莞设计网站公司,泰安名众网络科技有限公司,wordpress后台点击菜单没反应应欢迎大家加入开源鸿蒙跨平台开发者社区#xff0c;一起共建开源鸿蒙跨平台生态。 #x1f4cc; 概述 新建旅行功能允许用户创建新的旅行记录。用户需要填写旅行的基本信息#xff0c;如目的地、开始日期、结束日期、花费等。新建旅行页面提供了表单验证、自动保存、图片上传…欢迎大家加入开源鸿蒙跨平台开发者社区一起共建开源鸿蒙跨平台生态。 概述新建旅行功能允许用户创建新的旅行记录。用户需要填写旅行的基本信息如目的地、开始日期、结束日期、花费等。新建旅行页面提供了表单验证、自动保存、图片上传等功能。在 Cordova 与 OpenHarmony 的混合开发框架中新建旅行需要实现完整的表单处理和原生层的文件上传功能。 完整流程第一步表单设计与验证新建旅行表单需要包含所有必要的字段并进行客户端验证。验证包括检查必填字段、日期有效性、花费格式等。表单还需要支持自动保存功能防止用户数据丢失。第二步数据保存与关联表单数据需要保存到数据库并与目的地、标签、同行者等进行关联。保存过程需要进行事务处理确保数据的一致性。第三步原生层文件上传与图片处理OpenHarmony 原生层可以实现文件选择、图片上传、图片压缩等功能。原生层还可以实现图片的本地存储和缓存管理。 Web 代码实现新建旅行页面 HTML 结构dividnew-trip-pageclasspagedivclasspage-headerh1新建旅行/h1/divformidnewTripFormclasstrip-formdivclassform-grouplabel目的地 */labelinputtypetextnamedestinationrequiredplaceholder输入目的地.../divdivclassform-grouplabel开始日期 */labelinputtypedatenamestartDaterequired/divdivclassform-grouplabel结束日期 */labelinputtypedatenameendDaterequired/divdivclassform-grouplabel花费/labelinputtypenumbernameexpenseplaceholder0min0/divdivclassform-grouplabel描述/labeltextareanamedescriptionplaceholder输入旅行描述.../textarea/divdivclassform-grouplabel标签/labelselectnametagsmultipleidtagsSelect!-- 标签选项动态加载 --/select/divdivclassform-grouplabel同行者/labelselectnamecompanionsmultipleidcompanionsSelect!-- 同行者选项动态加载 --/select/divdivclassform-grouplabel上传图片/labelinputtypefilenameimagesmultipleacceptimage/*onchangehandleImageUpload(event)dividimagePreviewclassimage-preview/div/divdivclassform-actionsbuttontypebuttonclassbtn btn-primaryonclicksaveTrip()保存/buttonbuttontypebuttonclassbtn btn-secondaryonclicknavigateTo(all-trips)取消/button/div/form/divHTML 结构包含所有必要的表单字段和图片上传功能。初始化表单函数asyncfunctioninitNewTripForm(){try{// 加载标签选项consttagsawaitdb.getAllTags();consttagsSelectdocument.getElementById(tagsSelect);tags.forEach(tag{constoptiondocument.createElement(option);option.valuetag.id;option.textContenttag.name;tagsSelect.appendChild(option);});// 加载同行者选项constcompanionsawaitdb.getAllCompanions();constcompanionsSelectdocument.getElementById(companionsSelect);companions.forEach(companion{constoptiondocument.createElement(option);option.valuecompanion.id;option.textContentcompanion.name;companionsSelect.appendChild(option);});// 设置默认日期consttodaynewDate().toISOString().split(T)[0];document.querySelector(input[namestartDate]).valuetoday;document.querySelector(input[nameendDate]).valuetoday;}catch(error){console.error(Error initializing form:,error);showToast(初始化表单失败);}}初始化函数加载标签和同行者选项设置默认日期。表单验证函数functionvalidateTripForm(){constformdocument.getElementById(newTripForm);constdestinationform.querySelector(input[namedestination]).value.trim();conststartDateform.querySelector(input[namestartDate]).value;constendDateform.querySelector(input[nameendDate]).value;// 检查必填字段if(!destination){showToast(请输入目的地);returnfalse;}if(!startDate){showToast(请选择开始日期);returnfalse;}if(!endDate){showToast(请选择结束日期);returnfalse;}// 检查日期有效性conststartnewDate(startDate);constendnewDate(endDate);if(startend){showToast(开始日期不能晚于结束日期);returnfalse;}returntrue;}表单验证函数检查必填字段和日期有效性。validateTripForm 函数是表单验证的核心函数。函数首先获取表单中的关键字段值包括目的地、开始日期和结束日期。然后进行多层次的验证首先检查必填字段是否为空如果为空则显示相应的错误提示。然后检查日期的有效性确保开始日期不晚于结束日期。这种分步验证方式提供了清晰的错误提示帮助用户快速定位问题。通过这个函数可以确保用户输入的数据是有效的避免保存无效数据到数据库。保存旅行函数asyncfunctionsaveTrip(){// 验证表单if(!validateTripForm()){return;}try{// 获取表单数据constformdocument.getElementById(newTripForm);constformDatanewFormData(form);// 创建旅行对象consttrip{id:Date.now(),destination:formData.get(destination),startDate:formData.get(startDate),endDate:formData.get(endDate),expense:parseInt(formData.get(expense))||0,description:formData.get(description),tags:formData.getAll(tags),companions:formData.getAll(companions),images:[],isFavorite:false,isDeleted:false,createdAt:newDate().toISOString(),updatedAt:newDate().toISOString()};// 保存到数据库awaitdb.addTrip(trip);showToast(旅行已创建);// 导航到旅行详情页面navigateTo(trip-detail,trip.id);// 通知原生层if(window.cordova){cordova.exec((result)console.log(Trip saved:,result),(error)console.error(Save error:,error),TripPlugin,onTripSaved,[{tripId:trip.id,timestamp:Date.now()}]);}}catch(error){console.error(Error saving trip:,error);showToast(保存失败请重试);}}保存旅行函数验证表单然后将数据保存到数据库。图片上传处理函数functionhandleImageUpload(event){constfilesevent.target.files;constpreviewdocument.getElementById(imagePreview);preview.innerHTML;for(letfileoffiles){// 验证文件类型if(!file.type.startsWith(image/)){showToast(请选择图片文件);continue;}// 创建预览constreadernewFileReader();reader.onload(e){constimgdocument.createElement(img);img.srce.target.result;img.classNamepreview-image;preview.appendChild(img);};reader.readAsDataURL(file);}// 通知原生层上传图片if(window.cordovafiles.length0){cordova.exec((result)console.log(Images uploaded:,result),(error)console.error(Upload error:,error),ImagePlugin,uploadImages,[{fileCount:files.length}]);}}图片上传处理函数创建图片预览并通知原生层上传图片。 OpenHarmony 原生代码实现旅行保存插件// TripPlugin.etsimport{BusinessError}fromohos.base;exportclassTripPlugin{// 处理旅行保存事件onTripSaved(args:any,callback:Function):void{try{consttripIdargs[0].tripId;consttimestampargs[0].timestamp;console.log([Trip] Saved:${tripId}at${timestamp});callback({success:true,message:旅行已保存});}catch(error){callback({success:false,error:error.message});}}}旅行保存插件处理旅行保存事件。图片上传插件// ImagePlugin.etsimport{BusinessError}fromohos.base;import{fileIo}fromkit.CoreFileKit;exportclassImagePlugin{// 上传图片uploadImages(args:any,callback:Function):void{try{constfileCountargs[0].fileCount;console.log([Image] Uploading${fileCount}images...);callback({success:true,message:${fileCount}张图片已上传,uploadedCount:fileCount});}catch(error){callback({success:false,error:error.message});}}}图片上传插件处理图片上传功能。 总结新建旅行功能展示了如何在 Cordova 与 OpenHarmony 框架中实现一个完整的表单处理系统。Web 层负责表单 UI 和验证原生层负责文件上传和图片处理。通过新建旅行功能用户可以轻松创建新的旅行记录。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

韶关住房和城乡建设网站网络服务器忙请稍后重试3008

正则表达式与文本处理实用指南 1. 正则表达式的基础与应用 正则表达式是强大的文本匹配工具,在许多场景中都有广泛应用。 1.1 基本匹配示例 我们先来看几个基本的匹配示例: [me@linuxbox ~]$ echo "This that" | grep -E ^([[:alpha:]]+ ?)+$ This that [me…

张小明 2026/3/9 13:01:29 网站建设

做文件的网站wordpress写文章模板

随着语雀平台的策略调整,越来越多的用户开始寻找可靠的文档迁移方案。yuque-exporter作为一款专为语雀用户设计的开源工具,能够帮助您快速将云端文档批量导出为本地Markdown格式,实现数据的安全备份和灵活迁移。 【免费下载链接】yuque-expor…

张小明 2026/3/8 20:19:41 网站建设

温州网站优化关键词网站名称 域名

Pearcleaner Homebrew管理终极指南:从新手到高手的完整教程 【免费下载链接】Pearcleaner Open-source mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 还在为Mac上复杂的命令行包管理而头疼?Pearcleaner的Homebrew管…

张小明 2026/3/9 3:53:05 网站建设

建站哪家好论坛WordPress 4.7漏洞

容器技术:从运行时到编排的全面解析 1. 容器镜像存储与管理 1.1 Quay 注册表 CoreOS 提供了 Quay 注册表(https://quay.io/),类似于 Docker 注册表,用于存储 Docker 和 Rkt 镜像,有公共版本和企业版本可供选择。 1.2 创建本地 Docker 注册表 在特定公司或团队内创建…

张小明 2026/3/9 18:50:22 网站建设

深圳网站设计联系电话wordpress ck video

第一章:多模态 Agent 的 Docker 启动顺序概述在构建基于多模态 AI Agent 的系统时,使用 Docker 容器化技术可有效隔离运行环境、提升部署效率。由于多模态 Agent 通常涉及语音识别、图像处理、自然语言理解等多个子服务,其启动顺序直接影响系…

张小明 2026/3/9 15:51:56 网站建设

python做网站好不好html5做的篮球网站

Langchain-Chatchat支持FAQ自动抽取:从历史对话中挖掘高频问题 在企业客服中心的某个深夜,值班工程师小李第17次回复“怎么重置密码”这个问题时,不禁叹了口气。同样的问题每天重复几十遍,知识库却始终没有一条标准答案。这正是无…

张小明 2026/3/9 22:48:31 网站建设