《仿盒馬》app開發技術分享-- 訂單詳情頁(端云一體)

開發準備

在之前的章節中我們實現了訂單的提交,以及提交之后跳轉到確認訂單頁面,在確認訂單頁面我們添加了一個入口,這個入口是查詢訂單,當我們點擊入口時,我們需要跳轉到一個新的界面,這個界面通過接收上個界面的訂單id或者訂單code 等信息,進行訂單的詳細內容展示

功能分析

要想實現訂單內容的展示,首先我們要解決訂單查詢的問題,之前的訂單提交頁面,因為我們做了一張關聯表,把提交的商品放置到了一張單獨的表中,通過order_product_id去做關聯查詢,所以我們還需要根據id 把對應的商品列表查出來,然后我們再查出對應order_code 對應的訂單,展示到頁面上,同時展示出更多的信息給到用戶

代碼實現

首先在確認訂單頁面實現數據的傳遞

  Text("查看訂單").fontSize(16).fontColor(Color.Black).padding(10).borderRadius(10).border({width:1,color:Color.Grey}).onClick(()=>{router.pushUrl({url:'pages/view/OrderDetailsPage',params:{code:this.orderInfo!.order_code}})})

然后我們回到訂單詳情頁面進行傳遞數據的接收

@State orderCode:string=''let params = (this.getUIContext().getRouter().getParams() as Record<string, string>)['code']if (params!=undefined&& params!=''){this.orderCode=params}

接收到數據之后我們首先根據ordercode進行表數據的查詢

let databaseZone = cloudDatabase.zone('default');let condition = new cloudDatabase.DatabaseQuery(order_list);condition.equalTo("order_code",this.orderCode!)let listData = await databaseZone.query(condition);let json = JSON.stringify(listData)let data1:OrderList[]= JSON.parse(json)this.orderInfo=data1[0]

查詢出來數據之后,我們拿到返回值中的order_product_id字段,根據它再次進行查詢,拿到對應的商品列表

  @State orderInfo:OrderList|null=nulllet condition1 = new cloudDatabase.DatabaseQuery(order_product_list);condition1.equalTo("order_product_id",data1[0].order_product_id)let listData1 = await databaseZone.query(condition1);let json1 = JSON.stringify(listData1)this.productList=JSON.parse(json1)

都查詢出來之后我們開始進行頁面數據的繪制和數據的填充

build() {if (this.flag){Column(){CommonTopBar({ title: "訂單詳情", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})Scroll(){Column({space:10}) {Column({space:15}){Text("買家已付款").fontSize(20).width('100%').textAlign(TextAlign.Center).fontColor(Color.Black).fontWeight(FontWeight.Bold)Text("您買的商品已經安排了,商家即將發貨").fontSize(16).fontColor(Color.Black).width('100%').textAlign(TextAlign.Center)}.width('100%').padding(15).backgroundColor("#fff3574a")Divider().width('100%').height(5).color("#e6e6e6")Column(){Row({space:20}){Image($r('app.media.order_location')).height(20).width(20)Column(){Row(){Text(this.orderInfo?.nickname).fontColor(Color.Black).fontSize(16).fontWeight(FontWeight.Bold)Text(this.orderInfo?.phone).fontColor(Color.Black).fontSize(16).fontWeight(FontWeight.Bold).margin({left:20})}Text(this.orderInfo?.address).fontColor(Color.Black).fontSize(16).margin({top:10})}.padding(10).alignItems(HorizontalAlign.Start).width('100%')}}.padding(10).alignItems(HorizontalAlign.Start).width('100%')Divider().width('100%').height(0.8).color("#e6e6e6")List({scroller:this.scroller}){ForEach(this.productList,(item:OrderProductList,index:number)=>{ListItem(){Column(){Row() {Row({ space: 10 }) {Image(item.img).height(70).width(70).margin({ left: 10 }).borderRadius(10)Column({ space: 5 }) {Text(item.name).fontColor(Color.Black).fontSize(14)Text(item.spec).fontColor(Color.Grey).fontSize(14)Row() {Text() {Span("¥ ").fontSize(14).fontColor(Color.Red)Span(item.price + "").fontSize(16).fontColor(Color.Red)}Text("¥" + item.originalPrice + "").fontColor('#999').decoration({type: TextDecorationType.LineThrough,color: Color.Gray}).fontSize(14).margin({ left: 10 })}.alignItems(VerticalAlign.Bottom)Text("已選:" + item.buyAmount).fontColor(Color.Black).fontColor(Color.Gray).fontSize(12)}.alignItems(HorizontalAlign.Start)}.justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Top)Blank()Text("¥ " + item.price*item.buyAmount).fontColor(Color.Black).fontSize(14)}.padding(10).width('100%').alignItems(VerticalAlign.Top).justifyContent(FlexAlign.SpaceBetween)Divider().width('100%').height(1).backgroundColor("#f7f7f7")}}})}.height('auto')Row(){Text()Blank()Text() {Span("合計:").fontSize(16).fontColor(Color.Black)Span("¥ ").fontSize(10).fontColor(Color.Red)Span(this.price()+"").fontSize(16).fontColor(Color.Red)}}.padding(10).width('100%').justifyContent(FlexAlign.SpaceBetween)Divider().width('100%').height(5).color("#e6e6e6")Text("訂單信息").fontSize(18).fontColor(Color.Black).fontWeight(FontWeight.Bold).margin({left:15})Divider().width('100%').height(5).color("#e6e6e6")Row(){Text("訂單編號:").fontSize(16).fontColor(Color.Black)Blank()Text(this.orderInfo?.order_code).fontColor(Color.Black).fontSize(14)}.justifyContent(FlexAlign.SpaceBetween).width('100%').padding(10)Divider().width('100%').height(0.8).color("#e6e6e6")Row(){Text("訂單備注:").fontSize(16).fontColor(Color.Black)Blank()Text(this.orderInfo?.order_remark!=''&&this.orderInfo?.order_remark!=null?this.orderInfo?.order_remark:"無").fontColor(Color.Black).fontSize(14)}.justifyContent(FlexAlign.SpaceBetween).width('100%').padding(10)Divider().width('100%').height(0.8).color("#e6e6e6")Row(){Text("付款方式:").fontSize(16).fontColor(Color.Black)Blank()Text("線上支付").fontSize(16).fontColor(Color.Black)}.justifyContent(FlexAlign.SpaceBetween).width('100%').padding(10)Divider().width('100%').height(0.8).color("#e6e6e6")Row(){Text("創建時間:").fontSize(16).fontColor(Color.Black)Blank()Text(this.orderInfo?.order_create_time).fontColor(Color.Black).fontSize(14)}.justifyContent(FlexAlign.SpaceBetween).width('100%').padding(10)Divider().width('100%').height(0.8).color("#e6e6e6")Row(){Text("付款時間:").fontSize(16).fontColor(Color.Black)Blank()Text(this.orderInfo?.order_pay_time).fontColor(Color.Black).fontSize(14)}.justifyContent(FlexAlign.SpaceBetween).width('100%').padding(10)Divider().width('100%').height(0.8).color("#e6e6e6").visibility(this.orderInfo?.order_over_time!=''?Visibility.Visible:Visibility.None)Row(){Text("完成時間:").fontSize(16).fontColor(Color.Black)Blank()Text(this.orderInfo?.order_over_time).fontColor(Color.Black).fontSize(14)}.visibility(this.orderInfo?.order_over_time!=null&&this.orderInfo.order_over_time!=''?Visibility.Visible:Visibility.None).justifyContent(FlexAlign.SpaceBetween).width('100%').padding(10)}.margin({bottom:50}).backgroundColor(Color.White).alignItems(HorizontalAlign.Start)}.height('100%').width('100%')}}}price():number{let  number=0for (let i = 0; i <this.productList.length ; i++) {number+=this.productList[i].buyAmount*this.productList[i].price}return  number}

我們執行一下代碼看看效果
在這里插入圖片描述
在這里插入圖片描述
到這里我們就實現了訂單詳情的展示

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907377.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907377.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

傳統項目管理總拖延?Scrum敏捷全流程拆解

在互聯網高速發展的時代&#xff0c;企業競爭的核心要素正逐漸向 "速度" 傾斜。市場環境瞬息萬變&#xff0c;用戶需求呈現出多元化、動態化的顯著特征&#xff0c;而傳統管理模式固有的滯后性與僵化性&#xff0c;已難以匹配快速迭代的市場需求。在此背景下&#xf…

GelSight Mini觸覺傳感器:7μm精度+3D 映射,賦能具身智能精密操作

GelSight Mini 高分辨率視觸覺傳感器采用先進的光學成像與觸覺感知技術&#xff0c;賦予機器人接近人類的觸覺能力。該設備可捕捉物體表面微觀細節&#xff0c;并生成高精度的2D/3D數字映射&#xff0c;幫助機器人識別形狀、紋理及接觸力&#xff0c;從而執行更復雜、精準的操作…

【電路筆記 TMS320F28335DSP】McBSP 從源時鐘得到 生成時鐘 CLKG 幀同步信號 FSG

對應于原文 Multichannel Buffered Serial Port (McBSP)的 2.5.3 Data Clock Generation。 CLKG Figure 2-4. Sample Rate Generator Block Diagram CLKG 是采樣率發生器輸出的數據位時鐘&#xff08;Data Bit Clock&#xff09;&#xff0c;它被用來控制&#xff1a; 數據發…

(25年5.28)ChatGPT Plus充值教程與實用指南:附國內外使用案例與模型排行

更多具體來源&#xff1a;查看原文 ChatGPT Plus 充值教程 由于國內卡無法直接充值 chatgpt&#xff0c;通常需要借助虛擬卡。目前咱們常用的方式是通過虛擬卡平臺獲取。因平臺審核要求這里不細說&#xff0c;具體看原文。 ChatGPT Plus主要使用方向 ChatGPT Plus 提供了更…

38. 自動化測試異步開發之編寫客戶端異步webdriver接口類

Selenium異步瀏覽器操作實現原理深度解析 一、AsyncBrowser類核心結構 1.1 類定義與啟動方法 class AsyncBrowser(Command):@classmethodasync def start(cls, remote_driver_server: str

國芯思辰| 霍爾電流傳感器AH811為蓄電池負載檢測系統安全護航

在電動車、儲能電站、不間斷電源&#xff08;UPS&#xff09;等設備中&#xff0c;蓄電池作為關鍵的儲能單元&#xff0c;其運行狀態直接關系到設備的穩定性和使用壽命。而準確監測蓄電池的負載情況&#xff0c;是保障其安全、高效運行的關鍵。霍爾電流傳感器 AH811憑借獨特的技…

[Java惡補day8] 3. 無重復字符的最長子串

給定一個字符串 s &#xff0c;請你找出其中不含有重復字符的 最長 子串 的長度。 示例 1: 輸入: s “abcabcbb” 輸出: 3 解釋: 因為無重復字符的最長子串是 “abc”&#xff0c;所以其長度為 3。 示例 2: 輸入: s “bbbbb” 輸出: 1 解釋: 因為無重復字符的最長子串是 “…

kafka學習筆記(三、消費者Consumer使用教程——從指定位置消費)

1.簡介 Kafka的poll()方法消費無法精準的掌握其消費的起始位置&#xff0c;auto.offset.reset參數也只能在比較粗粒度的指定消費方式。更細粒度的消費方式kafka提供了seek()方法可以指定位移消費允許消費者從特定位置&#xff08;如固定偏移量、時間戳或分區首尾&#xff09;開…

【JS進階】JavaScript 中 this 值的確定規則

JavaScript 中 this 值的確定規則 1. 默認綁定&#xff08;獨立函數調用&#xff09; 當函數作為普通函數調用時&#xff0c;this 指向全局對象&#xff08;瀏覽器中是 window&#xff0c;Node.js 中是 global&#xff09;&#xff0c;嚴格模式下是 undefined。 function sh…

【凌智視覺模塊】rv1106 部署 pp-humseg 模型

人像分割簡介 ? 凌智視覺模塊 是一款基于rv1106芯片開發的視覺模塊&#xff0c;專注于視覺模型部署與開發。 人像分割是一種基于計算機視覺的技術&#xff0c;通過深度學習算法精準識別圖像或視頻中的人物主體&#xff0c;將其與背景進行像素級分離。該技術可實時運行于移動端…

wangeditor富文本編輯器+vue3粘貼內容樣式處理

又是一個風格和日立的上午&#xff0c;某只菜鳥高高興興的騎著小電驢去上班&#xff0c;本著上班只要不遲到的理念飛速前行&#xff08;遲到扣錢啊~&#xff09;&#xff0c;高高興興的行走在路上。來到工位剛拴上我的繩子組長就開始滴滴俺&#xff0c;頓時我心中大感不妙&…

實測,大模型誰更懂數據可視化?

大家好&#xff0c;我是 Ai 學習的老章 看論文時&#xff0c;經常看到漂亮的圖表&#xff0c;很多不知道是用什么工具繪制的&#xff0c;或者很想復刻類似圖表。 實測&#xff0c;大模型 LaTeX 公式識別&#xff0c;出乎預料 前文&#xff0c;我用 Kimi、Qwen-3-235B-A22B、…

深度學習-梯度消失和梯度爆炸

梯度消失 在某些神經網絡中&#xff0c;隨著網絡深度的增加&#xff0c;梯度在隱藏層反向傳播時傾向于變小&#xff0c;這就意味著&#xff0c;前面隱藏層中的神經元要比后面的學習起來更慢&#xff0c;這種現象就叫做“梯度消失”&#xff1b; 梯度爆炸 如果我們進行一些特殊…

Go 語言基礎 2 Func,流程控制

更多個人筆記見&#xff1a; github個人筆記倉庫 gitee 個人筆記倉庫 個人學習&#xff0c;學習過程中還會不斷補充&#xff5e; &#xff08;后續會更新在github上&#xff09; 文章目錄 Func 函數函數棧概念 函數表示類型 Anonymous func 匿名函數closure 閉包基礎示例http利…

【Linux 學習計劃】-- 倒計時、進度條小程序

目錄 \r 、\n、fflush 倒計時 進度條 進度條進階版 結語 \r 、\n、fflush 首先我們先來認識這三個東西&#xff0c;這將會是我們接下來兩個小程序的重點之一 首先是我們的老演員\n&#xff0c;也就是回車加換行 這里面其實包含了兩個操作&#xff0c;一個叫做回車&…

從零實現wss通信示例(WebSocket SSL)

客戶端和服務端代碼框架跟上一篇一致,僅增加了ssl的證書部分用于加密通信,明文通信(ws協議)見上一篇【https://blog.csdn.net/suoxd123/article/details/148093934】 1. 證書創建 1. 安裝openssl 【官網地址】:https://slproweb.com/products/Win32OpenSSL.html 1.2 …

mysql 索引失效有哪些

InnoDB存儲引擎根據索引類型不同&#xff0c;分為聚簇索引和二級索引 聚簇索引&#xff1a;葉子節點存放的是實際數據 二級索引&#xff1a;存放的是主鍵值&#xff0c;不是實際數據 1.對索引使用左或者左右模糊匹配 select * from t_user where name like %林‘&#xff1b…

LabVIEW通用測控平臺設計

基于 LabVIEW 圖形化編程環境&#xff0c;設計了一套適用于工業自動化、科研測試領域的通用測控平臺。通過整合研華、NI等品牌硬件&#xff0c;實現多類型數據采集、實時控制及可視化管理。平臺采用模塊化架構&#xff0c;支持硬件靈活擴展&#xff0c;解決了傳統測控系統開發周…

華為OD機試真題——智能駕駛(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

2025 A卷 200分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

速賣通,國際站測評補單,如何平衡效率和安全

測評能夠幫助賣家讓平臺更喜歡自己的產品&#xff0c;給予更好排名的同時也讓后續進入店鋪的買家更容易認可自己的產品。這是進行真實交易后形成的評價&#xff0c;而不是通過機器軟件生成&#xff0c;形成虛擬數據后&#xff0c;那種刷評形式產生的評論。它符合任何電商平臺的…