From a3780aba0fc6f62d9fd2093373ca25d25eaba29f Mon Sep 17 00:00:00 2001
From: czm <2192718639@qq.com>
Date: Mon, 23 May 2022 20:31:38 +0800
Subject: [PATCH 1/8] =?UTF-8?q?=E6=94=AF=E4=BB=98=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E5=BC=80=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/checkbox/index.module.scss | 2 +-
src/components/searchInput/index.tsx | 10 +-
.../components/amountShow/index.module.scss | 35 +++++
.../order/components/amountShow/index.tsx | 28 ++++
.../components/estimatedAmount/index.tsx | 17 +--
.../components/offlinePay/index.module.scss | 46 +++++++
.../order/components/offlinePay/index.tsx | 52 ++++++++
.../components/orderState/index.module.scss | 2 +-
.../components/payment/index.module.scss | 126 ++++++++++++++++++
src/pages/order/components/payment/index.tsx | 104 +++++++++++++++
.../components/scanPay/index.module.scss | 54 ++++++++
src/pages/order/components/scanPay/index.tsx | 38 ++++++
.../order/components/submitOrderBtn/index.tsx | 1 +
src/pages/order/index.tsx | 10 +-
14 files changed, 504 insertions(+), 21 deletions(-)
create mode 100644 src/pages/order/components/amountShow/index.module.scss
create mode 100644 src/pages/order/components/amountShow/index.tsx
create mode 100644 src/pages/order/components/offlinePay/index.module.scss
create mode 100644 src/pages/order/components/offlinePay/index.tsx
create mode 100644 src/pages/order/components/payment/index.module.scss
create mode 100644 src/pages/order/components/payment/index.tsx
create mode 100644 src/pages/order/components/scanPay/index.module.scss
create mode 100644 src/pages/order/components/scanPay/index.tsx
diff --git a/src/components/checkbox/index.module.scss b/src/components/checkbox/index.module.scss
index 345ad92..b50f17d 100644
--- a/src/components/checkbox/index.module.scss
+++ b/src/components/checkbox/index.module.scss
@@ -26,6 +26,6 @@
text-align: center;
line-height: 40px;
.miconfont{
- font-size: 26px;
+ font-size: 32px;
}
}
\ No newline at end of file
diff --git a/src/components/searchInput/index.tsx b/src/components/searchInput/index.tsx
index 4be58c4..48c45fc 100644
--- a/src/components/searchInput/index.tsx
+++ b/src/components/searchInput/index.tsx
@@ -12,6 +12,8 @@ type Params = {
changeOnInput?: (string) => void,
clickOnInput?: () => void,
children?: ReactNode
+ height?: number,
+ titleStyle?: Object
}
@@ -24,7 +26,9 @@ export default memo((props: Params) => {
placeholder = '请输入',
showBorder = true,
changeOnInput,
- clickOnInput
+ clickOnInput,
+ height = 80,
+ titleStyle = {}
} = props
let stylen = useMemo(() => {
@@ -34,8 +38,8 @@ export default memo((props: Params) => {
return {}
}, [showBorder])
return (
-
- {showTitle&&{title}}
+
+ {showTitle&&{title}}
{!props.children&& clickOnInput?.()} onInput={(e) => changeOnInput?.(e.detail.value)}/>
||{props.children}
diff --git a/src/pages/order/components/amountShow/index.module.scss b/src/pages/order/components/amountShow/index.module.scss
new file mode 100644
index 0000000..58368a8
--- /dev/null
+++ b/src/pages/order/components/amountShow/index.module.scss
@@ -0,0 +1,35 @@
+.order_price_num{
+ color: $color_main;
+ font-weight: 700;
+ text{
+ &:nth-child(1) {
+ font-size: $font_size_min;
+ }
+ &:nth-child(2) {
+ font-size: 26px;
+ }
+ &:nth-child(3) {
+ font-size: $font_size_medium;
+ }
+ }
+}
+.emphasis_num{
+ .price_text{
+ &:nth-child(2) {
+ font-size: $font_size_big;
+ }
+ }
+}
+.emphasis_num_big{
+ .price_text{
+ &:nth-child(1) {
+ font-size: $font_size_big;
+ }
+ &:nth-child(2) {
+ font-size: 60px;
+ }
+ &:nth-child(1) {
+ font-size: $font_size_big;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/pages/order/components/amountShow/index.tsx b/src/pages/order/components/amountShow/index.tsx
new file mode 100644
index 0000000..877f7df
--- /dev/null
+++ b/src/pages/order/components/amountShow/index.tsx
@@ -0,0 +1,28 @@
+import { Text, View } from "@tarojs/components";
+import { memo, useCallback } from "react";
+import styles from './index.module.scss'
+import classnames from "classnames";
+
+type Param = {
+ number: number, //数字
+ status: 0|1|2 //0 小型,1中型,2大
+}
+export default memo(({number = 0, status = 1}:Param) => {
+ const priceDom = useCallback(() => {
+ let res = number.toFixed(2).split('.')
+ let int_num = parseInt(res[0]) + ''
+ let decimals_num = res[1]
+ return (
+ <>
+ ¥
+ {Number(int_num).toLocaleString()}
+ .{decimals_num}
+ >
+ )
+ }, [number])
+ return (
+
+ {priceDom()}
+
+ )
+})
\ No newline at end of file
diff --git a/src/pages/order/components/estimatedAmount/index.tsx b/src/pages/order/components/estimatedAmount/index.tsx
index 269487e..0292f6b 100644
--- a/src/pages/order/components/estimatedAmount/index.tsx
+++ b/src/pages/order/components/estimatedAmount/index.tsx
@@ -3,6 +3,7 @@ import { memo, useCallback, useEffect, useMemo } from "react"
import {formatKbPrice} from '@/common/common'
import classnames from "classnames";
import styles from './index.module.scss'
+import AmountShow from "../amountShow";
type Param = {
style?: Object,
number?: number,
@@ -10,18 +11,6 @@ type Param = {
status?: true|false, //true 加大加深
}
export default memo(({style, number = 0, status = true, title = ''}:Param) => {
- const priceDom = useCallback(() => {
- let res = number.toFixed(2).split('.')
- let int_num = parseInt(res[0]) + ''
- let decimals_num = res[1]
- return (
- <>
- ¥
- {Number(int_num).toLocaleString()}
- .{decimals_num}
- >
- )
- }, [number])
return (
<>
@@ -32,9 +21,7 @@ export default memo(({style, number = 0, status = true, title = ''}:Param) => {
{/* 123123123121212312312312312 */}
-
- {priceDom()}
-
+
>
)
diff --git a/src/pages/order/components/offlinePay/index.module.scss b/src/pages/order/components/offlinePay/index.module.scss
new file mode 100644
index 0000000..f84e995
--- /dev/null
+++ b/src/pages/order/components/offlinePay/index.module.scss
@@ -0,0 +1,46 @@
+$top:170px;
+.offlinePay_main{
+ .offlinePay_con{
+ padding: 20px;
+ background-color: #F6F6F6;
+ border-radius: 20px;
+ .miconfont_title{
+ transform: rotate(-180deg);
+ position: absolute;
+ left: 20px;
+ top: 27px;
+ font-size: 37px;
+ color: $color_font_three;
+ z-index: 99;
+ }
+ }
+ .title{
+ font-size: $font_size_big;
+ color: #000000;
+ text-align: center;
+ font-weight: 700;
+ position: relative;
+
+ }
+
+ .offlinePay_list{
+ border-radius: 10px;
+ padding: 60px 0;
+ .offlinePay_con_text{
+ font-size: $font_size;
+ font-weight: 700;
+ }
+ }
+ .btns{
+ background: #007aff;
+ border-radius: 40px;
+ width: 668px;
+ height: 82px;
+ text-align: center;
+ line-height: 80px;
+ width: 100%;
+ color: #fff;
+ font-size: 32px;
+ margin-top: 30px;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/order/components/offlinePay/index.tsx b/src/pages/order/components/offlinePay/index.tsx
new file mode 100644
index 0000000..4022374
--- /dev/null
+++ b/src/pages/order/components/offlinePay/index.tsx
@@ -0,0 +1,52 @@
+import { Text, View } from "@tarojs/components";
+import { memo } from "react";
+import AmountShow from "../amountShow";
+import classnames from "classnames";
+import styles from './index.module.scss'
+
+import MCheckbox from "@/components/checkbox";
+import Popup from "@/components/popup";
+import SearchInput from "@/components/searchInput";
+import Taro from "@tarojs/taro";
+
+type Param = {
+ show?: true|false,
+ onClose?: () => void
+}
+export default memo(({show = true, onClose}:Param) => {
+ //复制功能
+ const clipboardData = () => {
+ Taro.setClipboardData({
+ data: '开户名称:佛山市浩川盛世科技有限公司; 开户银行:招商银行汾江支行; 转账汇款账号:62062342120001221231212',
+ success: function (res) {
+ Taro.showToast({
+ icon: 'none',
+ title: '复制成功'
+ })
+ }
+ })
+ }
+ return (
+
+
+
+
+ 线下汇款
+
+
+ 佛山市浩川盛世科技有限公司
+
+
+ 招商银行汾江支行
+
+
+ 62062342120001221231212
+
+
+ 复制信息
+
+
+
+
+ )
+})
\ No newline at end of file
diff --git a/src/pages/order/components/orderState/index.module.scss b/src/pages/order/components/orderState/index.module.scss
index 9101c29..195c10d 100644
--- a/src/pages/order/components/orderState/index.module.scss
+++ b/src/pages/order/components/orderState/index.module.scss
@@ -35,7 +35,7 @@
border-left: 2px solid $color_main;
height: 100%;
top: 10px;
- left: 8px;
+ left: 9px;
position: absolute;
z-index: 1;
}
diff --git a/src/pages/order/components/payment/index.module.scss b/src/pages/order/components/payment/index.module.scss
new file mode 100644
index 0000000..340b0ed
--- /dev/null
+++ b/src/pages/order/components/payment/index.module.scss
@@ -0,0 +1,126 @@
+$top:190px;
+.payment_main{
+ .payment_con{
+ padding: 20px;
+ background-color: #F6F6F6;
+ border-radius: 20px;
+ .miconfont_title{
+ transform: rotate(-180deg);
+ position: absolute;
+ left: 20px;
+ top: 27px;
+ font-size: 37px;
+ color: $color_font_three;
+ z-index: 99;
+ }
+
+ }
+ .title{
+ font-size: $font_size_big;
+ color: #000000;
+ text-align: center;
+ font-weight: 700;
+ position: relative;
+
+ }
+ .amount{
+ text-align: center;
+ padding: 25px 0;
+ }
+
+ .payment_list{
+ background-color: #fff;
+ // box-shadow: 2px 2px 6px 0px rgba(0,0,0,0.16);
+ min-height: 300px;
+ border-radius: 10px;
+ padding-bottom: 100px;
+ position: relative;
+ background: radial-gradient(circle 20px at left $top, transparent 20px, #fff 20px + 3px) left 0px/60% no-repeat ,
+ radial-gradient(circle 20px at right $top, transparent 20px, #fff 20px + 3px) right 0px/60% no-repeat;
+ filter: drop-shadow(2px 2px 6px rgba(0, 0, 0, .16));
+ position: relative;
+ &::before{
+ content: '';
+ position: absolute;
+ border-bottom: 3px dashed #ccc;
+ top: $top;
+ width: calc(100% - 100px);
+ left:0;
+ right: 0;
+ margin: auto;
+
+ }
+ .payment_list_top_border{
+ height: 32px;
+ width: 100%;
+ background: linear-gradient(215deg,#cde5ff 2%, #cde5ff 2%, #68b4ff 72%);
+ border-radius: 10px 10px 0px 0px;
+ }
+ .payment_list_title{
+ text-align: center;
+ padding: 30px 0 50px 0;
+ font-size: $font_size;
+ color: $color_font_three;
+ .payment_list_title_price_item{
+ display: flex;
+ justify-content: space-between;
+ padding: 0 90px;
+ &:nth-child(1) {
+ margin-bottom: 15px;
+ }
+ }
+ text{
+ &:nth-child(2) {
+ color: $color_main;
+ }
+ }
+ }
+ .payment_list_con{
+ padding: 20px 30px 0 30px;
+ .payment_list_item{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 123px;
+ &:nth-last-child(n+2) {
+ border-bottom: 2px solid #F3F3F3;
+ }
+ }
+ .payment_list_item_left{
+ display: flex;
+ flex-direction: column;
+ font-size: $font_size;
+ .payment_list_item_left_name{
+ display: flex;
+ align-items: center;
+ }
+ .miconfont{
+ font-size: 30px;
+ color: #FFC300;
+ padding-right: 10px;
+ }
+ .payment_list_item_left_price{
+ font-size: $font_size_min;
+ color: $color_font_two;
+ padding-left: 35px;
+ padding-top: 5px;
+ }
+ }
+ .miconfont_more{
+ font-size: 20px;
+ }
+ }
+ }
+ .btns{
+ background: #007aff;
+ border-radius: 40px;
+ width: 668px;
+ height: 82px;
+ text-align: center;
+ line-height: 80px;
+ width: 100%;
+ color: #fff;
+ font-size: 32px;
+ margin-top: 30px;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/order/components/payment/index.tsx b/src/pages/order/components/payment/index.tsx
new file mode 100644
index 0000000..4e6e223
--- /dev/null
+++ b/src/pages/order/components/payment/index.tsx
@@ -0,0 +1,104 @@
+import { Text, View } from "@tarojs/components";
+import { memo, useState } from "react";
+import AmountShow from "../amountShow";
+import classnames from "classnames";
+import styles from './index.module.scss'
+
+import MCheckbox from "@/components/checkbox";
+import Popup from "@/components/popup";
+import OfflinePay from "../offlinePay";
+import ScanPay from "../scanPay";
+
+type Param = {
+ show?: true|false,
+ onClose?: () => void
+}
+export default memo(({show = false, onClose}:Param) => {
+
+ //线下付款
+ const [offlinePayShow, setofflinePayShow] = useState(false)
+ const onShowOfflinePay = () => {
+ setofflinePayShow(true)
+ onClose?.()
+ }
+
+ //扫码支付
+ const [scanPayShow, setScanPayShow] = useState(false)
+ const onShowScanPay = () => {
+ setScanPayShow(true)
+ onClose?.()
+ }
+ return (
+
+
+
+
+ 订单支付
+
+
+
+
+
+
+ {/* 向商家发起支付 */}
+
+
+ 订单金额
+ ¥6,001.00
+
+
+ 已付金额
+ ¥1,801.00
+
+
+
+
+
+
+
+
+ 预存款
+
+ 金额不足,剩余 ¥0.00
+
+ console.log()} onClose={() =>console.log()}/>
+
+
+
+
+
+ x天账期
+
+ 可用额度 ¥3,000.00
+
+ console.log()} onClose={() =>console.log()}/>
+
+
+
+
+
+ 线下汇款
+
+
+
+
+
+
+
+
+ 扫码支付
+
+
+
+
+
+
+ 确认交易
+
+
+ setofflinePayShow(false)}/>
+ setScanPayShow(false)}/>
+
+
+ )
+})
\ No newline at end of file
diff --git a/src/pages/order/components/scanPay/index.module.scss b/src/pages/order/components/scanPay/index.module.scss
new file mode 100644
index 0000000..dcb356d
--- /dev/null
+++ b/src/pages/order/components/scanPay/index.module.scss
@@ -0,0 +1,54 @@
+$top:170px;
+.scanPay_main{
+ .scanPay_con{
+ padding: 20px;
+ background-color: #F6F6F6;
+ border-radius: 20px;
+ .miconfont_title{
+ transform: rotate(-180deg);
+ position: absolute;
+ left: 20px;
+ top: 27px;
+ font-size: 37px;
+ color: $color_font_three;
+ z-index: 99;
+
+ }
+ }
+ .title{
+ font-size: $font_size_big;
+ color: #000000;
+ text-align: center;
+ font-weight: 700;
+ position: relative;
+ }
+ .desc{
+ font-size: $font_size_min;
+ color: $color_main;
+ text-align: center;
+ padding: 10px 0;
+ .miconfont{
+ font-size: 25px;
+ }
+ }
+
+ .scanPay_list{
+ border-radius: 10px;
+ height: 900px;
+ image{
+ width: 100%;
+ }
+ }
+ .btns{
+ background: #007aff;
+ border-radius: 40px;
+ width: 668px;
+ height: 82px;
+ text-align: center;
+ line-height: 80px;
+ width: 100%;
+ color: #fff;
+ font-size: 32px;
+ margin-top: 30px;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/order/components/scanPay/index.tsx b/src/pages/order/components/scanPay/index.tsx
new file mode 100644
index 0000000..cd55c85
--- /dev/null
+++ b/src/pages/order/components/scanPay/index.tsx
@@ -0,0 +1,38 @@
+import { Image, ScrollView, Text, View } from "@tarojs/components";
+import { memo } from "react";
+import AmountShow from "../amountShow";
+import classnames from "classnames";
+import styles from './index.module.scss'
+
+import MCheckbox from "@/components/checkbox";
+import Popup from "@/components/popup";
+import SearchInput from "@/components/searchInput";
+import Taro from "@tarojs/taro";
+import { formatImgUrl } from "@/common/fotmat";
+
+type Param = {
+ show?: true|false,
+ onClose?: () => void
+}
+export default memo(({show = true, onClose}:Param) => {
+ //复制功能
+ return (
+
+
+
+
+ 扫码支付
+
+
+ 扫码支付成功后,自动更新状态
+
+
+
+
+ {}}>保存电子确认单
+
+
+
+
+ )
+})
\ No newline at end of file
diff --git a/src/pages/order/components/submitOrderBtn/index.tsx b/src/pages/order/components/submitOrderBtn/index.tsx
index 770d805..db9b432 100644
--- a/src/pages/order/components/submitOrderBtn/index.tsx
+++ b/src/pages/order/components/submitOrderBtn/index.tsx
@@ -33,6 +33,7 @@ export default memo(({style, number = 0}:Param) => {
{priceDom()}
+
>
)
diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx
index 600443e..5a3f8d5 100644
--- a/src/pages/order/index.tsx
+++ b/src/pages/order/index.tsx
@@ -11,6 +11,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import AddressInfo from "./components/addressInfo";
import KindList from "./components/kindList";
import OrderState from "./components/orderState";
+import Payment from "./components/payment";
import Remark from "./components/remark";
import WeightMemo from "./components/weightMemo";
import styles from './index.module.scss'
@@ -135,6 +136,12 @@ import styles from './index.module.scss'
)
goLink('/pages/editOrder/index')
}
+
+ //去付款
+ const [payMentShow, setPayMentShow] = useState(false)
+ const toPay = () => {
+ setPayMentShow(true)
+ }
return (
@@ -172,11 +179,12 @@ import styles from './index.module.scss'
申请退货
查看物流
确认收货
- 再次购买
+ toPay()}>去支付
setShowDesc(false)} >
getRemark(e)}/>
+ setPayMentShow(false)}/>
)
From bbe59568133b5222ffa67347f1b9ece97f42dc04 Mon Sep 17 00:00:00 2001
From: czm <2192718639@qq.com>
Date: Tue, 24 May 2022 20:32:20 +0800
Subject: [PATCH 2/8] =?UTF-8?q?=E6=94=AF=E4=BB=98=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E5=BC=80=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/onlinePay.ts | 12 ++
src/api/order.ts | 4 +-
src/common/constant.js | 3 +-
src/components/searchInput/index.tsx | 2 +-
.../addressInfoDetail/index.module.scss | 111 ++++++++++++++++++
.../components/addressInfoDetail/index.tsx | 87 ++++++++++++++
src/pages/order/components/kindList/index.tsx | 28 ++---
.../components/orderState/index.module.scss | 3 +-
.../order/components/orderState/index.tsx | 49 ++++----
src/pages/order/components/payment/index.tsx | 2 +-
src/pages/order/components/scanPay/index.tsx | 88 ++++++++++++--
src/pages/order/index.tsx | 73 ++++--------
src/styles/iconfont.scss | 22 +++-
src/styles/iconfont.ttf | Bin 10856 -> 12196 bytes
src/use/useCheckAuthorize.tsx | 51 ++++++++
src/use/useHttp.ts | 8 +-
16 files changed, 430 insertions(+), 113 deletions(-)
create mode 100644 src/api/onlinePay.ts
create mode 100644 src/pages/order/components/addressInfoDetail/index.module.scss
create mode 100644 src/pages/order/components/addressInfoDetail/index.tsx
create mode 100644 src/use/useCheckAuthorize.tsx
diff --git a/src/api/onlinePay.ts b/src/api/onlinePay.ts
new file mode 100644
index 0000000..3c23414
--- /dev/null
+++ b/src/api/onlinePay.ts
@@ -0,0 +1,12 @@
+import { useRequest } from "@/use/useHttp"
+
+/**
+ * 获取在线支付二维码
+ */
+ export const GetPayCode = () => {
+ return useRequest({
+ url: `/`,
+ base_url: 'http://192.168.1.127:8081',
+ method: "post",
+ })
+}
\ No newline at end of file
diff --git a/src/api/order.ts b/src/api/order.ts
index 10318d3..a1eb29f 100644
--- a/src/api/order.ts
+++ b/src/api/order.ts
@@ -21,11 +21,11 @@ export const SaleOrderApi = () => {
}
/**
- * 获取销售单详情
+ * 获取商城待配布订单详情
*/
export const GetSaleOrderDetailApi = () => {
return useRequest({
- url: `/v1/mall/saleOrder`,
+ url: `/v1/mall/saleOrder/arranging`,
method: "get",
})
}
diff --git a/src/common/constant.js b/src/common/constant.js
index 734263a..f62112f 100644
--- a/src/common/constant.js
+++ b/src/common/constant.js
@@ -8,8 +8,9 @@
// export const BASE_URL = `http://192.168.1.30:40001/lymarket` // 发
// export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境
// export const BASE_URL = `https://www.zzfzyc.com/lymarket` // 正式环境
-export const BASE_URL = `http://192.168.1.4:40001/lymarket` // 王霞
+// export const BASE_URL = `http://192.168.1.4:40001/lymarket` // 王霞
// export const BASE_URL = `http://192.168.1.224:50002/lymarket` // 添
+export const BASE_URL = `http://192.168.1.15:50001/lymarket` // 杰
// CDN
// 生成密钥
diff --git a/src/components/searchInput/index.tsx b/src/components/searchInput/index.tsx
index 48c45fc..4fe82cd 100644
--- a/src/components/searchInput/index.tsx
+++ b/src/components/searchInput/index.tsx
@@ -38,7 +38,7 @@ export default memo((props: Params) => {
return {}
}, [showBorder])
return (
-
+
{showTitle&&{title}}
{!props.children&& clickOnInput?.()} onInput={(e) => changeOnInput?.(e.detail.value)}/>
diff --git a/src/pages/order/components/addressInfoDetail/index.module.scss b/src/pages/order/components/addressInfoDetail/index.module.scss
new file mode 100644
index 0000000..b4a9f1b
--- /dev/null
+++ b/src/pages/order/components/addressInfoDetail/index.module.scss
@@ -0,0 +1,111 @@
+.order_address{
+ height: 178px;
+ background: #ffffff;
+ border-radius: 20px;
+ display: flex;
+ align-items: center;
+ padding: 30px;
+ box-sizing: border-box;
+ margin-top: 20px;
+ position: relative;
+ .order_address_icon{
+ font-size: 50px;
+ color: $color_main;
+ position: absolute;
+ top: 35px;
+ left: 20px;
+ }
+ .order_address_text_con{
+ flex:1;
+ padding-left: 50px;
+ box-sizing: border-box;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ .order_address_text_title{
+ font-size: $font_size_medium;
+ margin-top: 10px;
+ @include common_ellipsis;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .moreIconfont{
+ font-size: 20px;
+ }
+ }
+ .order_address_text_name{
+
+ align-items: center;
+ text{
+ &:nth-child(1) {
+ color: #000;
+ font-weight: 700;
+ font-size: $color_font_one;
+ margin-right: 40px;
+ }
+ &:nth-child(2) {
+ color: $color_font_one;
+ font-size: $font_size_medium;
+ }
+ }
+ }
+ }
+ .updateBtn{
+ width:200px;
+ font-size: $font_size_min;
+ background-color: #F0F0F0;
+ height: 64px;
+ border-radius: 24px;
+ color: $color_font_two;
+ position: absolute;
+ bottom: 10px;
+ right: 10px;
+ .updateBtn_list{
+ position: absolute;
+ display: flex;
+ z-index: 5;
+ width: 100%;
+ .updateBtn_item_select{
+ color: #fff;
+ }
+ }
+ .updateBtn_item{
+ flex:1;
+ text-align: center;
+ line-height: 64px;
+ }
+ .updateBtn_select{
+ color: #fff;
+ background-color: $color_main;
+ border-radius: 24px;
+ position: absolute;
+ width: 100px;
+ height: 61px;
+ z-index: 1;
+ transition: all 0.3s ease-in-out;
+ }
+
+ }
+ .order_address_text_no{
+ flex: 1;
+ font-size: $font_size;
+ font-weight: 700;
+ margin-left: 30px;
+ }
+ .order_address_more_icon{
+ color: $color_font_three;
+ font-size: $font_size;
+ }
+
+}
+.order_address_list {
+ height: 900px;
+ .order_address_title{
+ font-size: $font_size;
+ font-weight: 700;
+ width: 100%;
+ text-align: center;
+ padding: 20px 0 30px 0;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/order/components/addressInfoDetail/index.tsx b/src/pages/order/components/addressInfoDetail/index.tsx
new file mode 100644
index 0000000..4675aec
--- /dev/null
+++ b/src/pages/order/components/addressInfoDetail/index.tsx
@@ -0,0 +1,87 @@
+import AddressList from "@/components/AddressList";
+import Popup from "@/components/popup";
+import { Text, View } from "@tarojs/components"
+import classnames from "classnames";
+import { memo, useCallback, useEffect, useMemo, useState } from "react";
+import styles from './index.module.scss'
+
+export type AddressInfoParam = {
+ province_name: string,
+ city_name: string,
+ district_name: string,
+ address_detail: string,
+ id?: number,
+ name: string,
+ phone: string
+}
+type Param = {
+ onSelect?: (val:any) => void, //选择
+ defaultValue?: AddressInfoParam|null //默认值
+ disabled?: false|true //true禁用后只用于展示
+ shipment_mode?: 1|2 //1自提 2物流
+}
+
+export default memo(({onSelect, defaultValue = null, disabled = false, shipment_mode = 1}: Param) => {
+ const [showAddressList, setShowAddressList] = useState(false)
+
+ useEffect(() => {
+ setUserInfo(() => defaultValue)
+ }, [defaultValue])
+
+ //选择地址
+ const [userInfo, setUserInfo] = useState()
+ const getAddress = useCallback((val) => {
+ setShowAddressList(() => false)
+ setUserInfo(() => val)
+ onSelect?.(val)
+ }, [])
+
+ //地址格式
+ const formatAddress = useMemo(() => {
+ if(userInfo)
+ return userInfo.province_name + userInfo.city_name + userInfo.district_name + userInfo.address_detail
+ }, [userInfo])
+
+ const changeShow = () => {
+ if(receivingStatus == 2)
+ setShowAddressList(() => true)
+ }
+ //收货方法,1:自提,2物流
+ const [receivingStatus, setReceivingStatus] = useState(1)
+ const onReceivingStatus = (val) => {
+ setReceivingStatus(val)
+ }
+ useEffect(() => {
+ setReceivingStatus(() => shipment_mode)
+ }, [shipment_mode])
+ return (
+
+ changeShow()}>
+
+
+
+ {formatAddress}
+ {(receivingStatus == 2)&&}
+
+
+ {userInfo?.name}
+ {userInfo?.phone}
+
+
+
+
+ onReceivingStatus(1)}>自提
+ onReceivingStatus(2)}>物流
+
+
+
+
+ {!disabled&& setShowAddressList(false)}>
+
+ 请选择收货地址
+ getAddress(item)}/>
+
+ }
+
+ )
+})
\ No newline at end of file
diff --git a/src/pages/order/components/kindList/index.tsx b/src/pages/order/components/kindList/index.tsx
index 1a42f7e..34d9542 100644
--- a/src/pages/order/components/kindList/index.tsx
+++ b/src/pages/order/components/kindList/index.tsx
@@ -6,13 +6,13 @@ import styles from './index.module.scss'
type OrderParam = {
estimate_amount: number,
- estimate_weight: number,
list: any[],
sale_mode: number,
- sale_mode_name: string
+ sale_mode_name: string,
unit: string,
- colo_count: number,
- num_count: number
+ total_colors: number,
+ total_fabrics: number,
+ total_number: number
}
@@ -22,14 +22,14 @@ export default memo(({value}:{value:OrderParam|null}) => {
return value?.sale_mode == 0? item.roll : Number(item.length / 100)
}, [value])
//对应单价
- const standardPrice = useCallback(item => {
- return formatPriceDiv(item.standard_price).toLocaleString() + '/' + (value?.sale_mode == 1?'m':'kg')
+ const standardPrice = useCallback(price => {
+ return formatPriceDiv(price).toLocaleString() + '/' + (value?.sale_mode == 1?'m':'kg')
}, [value])
//数量格式
const numText = useMemo(() => {
if(value)
- return `${value?.list.length}种面料,${value?.colo_count}种颜色,共${value?.num_count }${value?.unit}`
+ return `${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}${value?.unit}`
}, [value])
return (
<>
@@ -39,18 +39,18 @@ export default memo(({value}:{value:OrderParam|null}) => {
value?.list.map(item => {
return
- {item.sale_mode_name}
- {formatHashTag(item.product_code, item.product_name)}
- 共{item.color_list.length}种
+ {value.sale_mode_name}
+ {formatHashTag(item.code, item.name)}
+ 共{item?.product_colors.length}种
- {item.color_list?.map(colorItem => {
- return
+ {item?.product_colors?.map(colorItem => {
+ return
- {colorItem.product_color_code + ' ' + colorItem.product_color_name}
- ¥{standardPrice(colorItem)}
+ {colorItem.code + ' ' + colorItem.name}
+ ¥{standardPrice(colorItem.sale_price)}
×{formatCount(colorItem)}{value.unit}
diff --git a/src/pages/order/components/orderState/index.module.scss b/src/pages/order/components/orderState/index.module.scss
index 195c10d..c1aef8a 100644
--- a/src/pages/order/components/orderState/index.module.scss
+++ b/src/pages/order/components/orderState/index.module.scss
@@ -16,7 +16,6 @@
.order_status_item{
position: relative;
padding-left: 50px;
- min-height: 120px;
.order_status_tail_end, .order_status_tail{
width: 15px;
height: 15px;
@@ -44,7 +43,7 @@
align-items: center;
.order_status_title{
color: $color_font_two;
- font-size: $font_size_big;
+ font-size: $font_size;
font-weight: 700;
}
.order_status_time{
diff --git a/src/pages/order/components/orderState/index.tsx b/src/pages/order/components/orderState/index.tsx
index 7592c74..a3b51bb 100644
--- a/src/pages/order/components/orderState/index.tsx
+++ b/src/pages/order/components/orderState/index.tsx
@@ -4,7 +4,7 @@ import styles from './index.module.scss'
import classnames from "classnames";
import { formatImgUrl } from "@/common/fotmat";
type Param = {
- title: string,
+ status: string,
time: string,
tag: string,
desc: string
@@ -14,33 +14,30 @@ export default memo(({list = []}:{list?:Param[]}) => {
const changeMore = () => {
setShowMore(() => !showMore)
}
- list = [
- {title:'待配布', time:'2022-04-24 09:08', tag:'已接单', desc:'仓库正在为你配布...'},
- {title:'待配布', time:'2022-04-24 09:08', tag:'已接单', desc:'仓库正在为你配布...'},
- {title:'待接单', time:'2022-04-24 09:08', tag:'已提交', desc:''},
- ]
return (
-
-
- {list.map((item, index) =>
- {(list.length > 1)&&}
- {(list.length != (index + 1))&&}
-
- {item.title}
- {item.time}
- {item.tag}
-
- {item.desc}
- )}
-
- {(list.length > 2) && changeMore()}>
- {showMore&&'收起物流详情'||'点击查看更多物流详情'}
-
+ <>
+ {(list.length > 0)&&
+
+ {list.map((item, index) =>
+ {(list.length > 1)&&}
+ {(list.length != (index + 1))&&}
+
+ {item.status}
+ {item.time}
+ {item.tag}
+
+ {item.desc}
+ )}
+
+ {(list.length > 2) && changeMore()}>
+ {showMore&&'收起详情'||'点击查看详情'}
+
+ }
+
+
+
}
-
-
-
-
+ >
)
})
\ No newline at end of file
diff --git a/src/pages/order/components/payment/index.tsx b/src/pages/order/components/payment/index.tsx
index 4e6e223..65e5c71 100644
--- a/src/pages/order/components/payment/index.tsx
+++ b/src/pages/order/components/payment/index.tsx
@@ -82,7 +82,7 @@ export default memo(({show = false, onClose}:Param) => {
-
+
diff --git a/src/pages/order/components/scanPay/index.tsx b/src/pages/order/components/scanPay/index.tsx
index cd55c85..8467da4 100644
--- a/src/pages/order/components/scanPay/index.tsx
+++ b/src/pages/order/components/scanPay/index.tsx
@@ -1,24 +1,96 @@
import { Image, ScrollView, Text, View } from "@tarojs/components";
-import { memo } from "react";
-import AmountShow from "../amountShow";
+import { memo, useEffect } from "react";
import classnames from "classnames";
import styles from './index.module.scss'
-
-import MCheckbox from "@/components/checkbox";
import Popup from "@/components/popup";
-import SearchInput from "@/components/searchInput";
import Taro from "@tarojs/taro";
+import { alert } from "@/common/common";
import { formatImgUrl } from "@/common/fotmat";
+import useCheckAuthorize from "@/use/useCheckAuthorize";
+import { GetPayCode } from "@/api/onlinePay";
+
type Param = {
show?: true|false,
onClose?: () => void
}
export default memo(({show = true, onClose}:Param) => {
+ const base64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQAQMAAAC6caSPAAAABlBMVEX///8AAABVwtN+AAACFElEQVR42uyaMbKzMAyExVC8kiNwFI5GjsZRcgRKCgb9I69sY+Ik7R+8O/OKF/N1Gnklr1AURVEURf2sBnUd+P9PZdxFpFddRaZ4uhEhAiR+euBznM2q+hCRacXpROSuiJ0vjphG1YfVkRXM2lm5ECFSR/QpYn+hw+hBhMgnRCScCxA0JSJE3t1i4XdrTPa5e5gvFx+R9pBseqdN9AnTO6+9Pobjq08m8ttIKUP02ZdT0GcRaQuxDhOKyWvMTK/VmMi8droMBxEiNUw6Xawhaagxm5LipGRe+KUpEWkVifMz2hDOXcHwHqV/IdI6IvH3U41JaEqhV6HGLhiRuyBhRj7yyIMrKXnhNYw7L0t7Is0i0mF7snW5w+xp17/4w8+1wxBpF4G79ZEIhbWn2yqY3ortIdIu0mHhYrcYxuqwhRvwkhi88HULR6R5xBd3mmwPmlIaqdGciBBJyKmQjEeNddH2VGuMyO8jeaGCeyfnlAzxLVwlp0SkUeTsbv0dedxlNh8TN7qVRyEizSJlFg4exn7Oo/Xy9zEJSaQt5KS0hzmnaWuml0jDSJm1LqakwbNw28X0ErkPUuaUxg0F40mV+FooRIjUs9Y4n31S8ljTS40RIYLgW1yoxAQkPMzbtC2RlpF0i0mekrwpESFSn5IUq9vYkJba2pbIfZBT1trfkUNSpc/BNiJEKIqiKIqi/gv9CwAA//9IKiY1VjApygAAAABJRU5ErkJggg=='
+
+
+
+ const {check} = useCheckAuthorize({scope:'scope.writePhotosAlbum', msg:'您没授权,无法保存图片'})
+ const saveImageCheck = async () => {
+ const res = await check()
+ res&&saveImage()
+ }
+ //保存图片
+ const saveImage = () => {
+ const save = Taro.getFileSystemManager()
+ const number = Math.random();
+ const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64) || [];
+ let filePath = Taro.env.USER_DATA_PATH +'/pic.'+ format
+ alert.loading('正在保存图片')
+ save.writeFile({
+ filePath: filePath,
+ data: base64,
+ encoding: 'base64',
+ success: function (res) {
+ console.log('aa::',res)
+ console.log('aa2::',filePath)
+ Taro.saveImageToPhotosAlbum({
+ filePath: filePath,
+ success: function (res) {
+ alert.success('图片保存成功')
+ },
+ fail: function (err) {
+ console.log('err::', err)
+ }
+ })
+ }
+ })
+ }
+ //预览图片
+ const showImage = () => {
+ Taro.previewImage({
+ current: formatImgUrl(''), // 当前显示图片的http链接
+ urls: [formatImgUrl('')] // 需要预览的图片http链接列表
+ })
+ }
+
+ // const {fetchData} = GetPayCode()
+ // useEffect(() => {
+ // fetchData({
+ // title: "面料销售电子确认单",
+ // company: "什么什么公司123",
+ // order_type: "散剪",
+ // sale_user: "小崔",
+ // order_created_time:"2022/02/01 12:32:13",
+ // order_no:"XS-211005888",
+ // department:"嘻嘻嘻",
+ // shipment_mode:"自提",
+ // target_user_name:"大崔",
+ // target_address:"阿斯顿发斯蒂芬",
+ // target_description:"无",
+ // pay_account:"1234567890123450001",
+ // bank_account_name:"佛山市浩川长盛科技有限公司",
+ // bank_name:"招商银行佛山分行禅城支行",
+ // pay_type:"现结",
+ // client:"客户名称",
+ // phone:"15818085802",
+ // order_total_length:"12",
+ // order_total_price:"23000",
+ // qrcode:"www.zzfzyc.com/checkorder/XS-211005888",
+ // order_total_weight:"300.00",
+ // list: [{product_code:'5215',product_name:'26S双纱亲水滑爽棉',product_color_code:'053',product_color_name:'洋红',num:'4',weight:'123.23',sale_price:'43',total_price:'4510.7'}]
+ // })
+ // }, [])
+
+
//复制功能
return (
-
+
扫码支付
@@ -27,9 +99,9 @@ export default memo(({show = true, onClose}:Param) => {
扫码支付成功后,自动更新状态
-
+
- {}}>保存电子确认单
+ 保存电子确认单
diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx
index 5a3f8d5..47259cd 100644
--- a/src/pages/order/index.tsx
+++ b/src/pages/order/index.tsx
@@ -9,6 +9,7 @@ import Taro, { useDidShow, useRouter } from "@tarojs/taro";
import classnames from "classnames";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import AddressInfo from "./components/addressInfo";
+import AddressInfoDetail from "./components/addressInfoDetail";
import KindList from "./components/kindList";
import OrderState from "./components/orderState";
import Payment from "./components/payment";
@@ -46,36 +47,19 @@ import styles from './index.module.scss'
//格式化数据格式
const [formatDetailOrder, setFormatDetailOrder] = useState() //格式化后的数据
const formatData = () => {
- if(orderDetail?.color_list&&orderDetail?.color_list.length > 0) {
- let dataList = {}
- let num_count = 0 //总数量
- orderDetail?.color_list.map(item => {
- dataList[item.product_code] = dataList[item.product_code]||{}
- dataList[item.product_code].product_code = item.product_code
- dataList[item.product_code].product_name = item.product_name
- dataList[item.product_code].sale_mode_name = orderDetail.sale_mode_name
- dataList[item.product_code].color_list = dataList[item.product_code]?.color_list||[]
- dataList[item.product_code].color_list.push(item)
- //大货
- if (orderDetail.sale_mode == 0) num_count += item.roll
- //剪板或散件
- if (orderDetail.sale_mode == 1 || orderDetail.sale_mode == 2) num_count += item.length
- })
- if (orderDetail.sale_mode == 1 || orderDetail.sale_mode == 2) num_count = Number(num_count / 100);
- setFormatDetailOrder({
- estimate_amount: orderDetail.estimate_amount, //预估金额
- estimate_weight: orderDetail.estimate_weight,
- sale_mode: orderDetail.sale_mode,
- sale_mode_name: orderDetail.sale_mode_name,
- colo_count: orderDetail.color_list.length, //颜色数量
- num_count: num_count, //总数量
- unit: orderDetail.sale_mode == 0?'条':'m', //单位
- list: Object.values(dataList)
- })
- }
+ setFormatDetailOrder({
+ estimate_amount: orderDetail.estimate_amount, //预估金额
+ sale_mode: orderDetail.sale_mode,
+ sale_mode_name: orderDetail.sale_mode_name,
+ total_colors: orderDetail.total_colors, //总颜色数量
+ total_number: orderDetail.total_number, //总数量
+ total_fabrics: orderDetail.total_fabrics, //面料数量
+ unit: orderDetail.sale_mode == 0?'条':'m', //单位
+ list: orderDetail.product_list
+ })
}
-
const formatPreViewOrderMemo = useMemo(() => {
+ console.log('formatDetailOrder::',formatDetailOrder)
return formatDetailOrder
}, [formatDetailOrder])
@@ -120,23 +104,6 @@ import styles from './index.module.scss'
setShowDesc(() => false)
}, [])
- //修改地址
- const changeAddress = () => {
- //临时传递数据
- setParam({
- province_name: orderDetail?.province_name,
- city_name: orderDetail?.city_name,
- district_name: orderDetail?.district_name,
- address_detail: orderDetail?.address_detail,
- id: orderId.current,
- name: orderDetail?.target_user_name,
- phone: orderDetail?.target_user_phone,
- shipment_mode: orderDetail?.shipment_mode,
- }
- )
- goLink('/pages/editOrder/index')
- }
-
//去付款
const [payMentShow, setPayMentShow] = useState(false)
const toPay = () => {
@@ -144,26 +111,26 @@ import styles from './index.module.scss'
}
return (
-
+ {/*
-
-
- changeAddress()}>
-
+ */}
+
+
+
订单信息
-
+
{orderDetail?.order_no}
clipboardData()}>复制
-
+
{formatDateTime(orderDetail?.create_time)}
-
+
{formatDateTime(orderDetail?.create_time)}
diff --git a/src/styles/iconfont.scss b/src/styles/iconfont.scss
index 246e5e5..291d27f 100644
--- a/src/styles/iconfont.scss
+++ b/src/styles/iconfont.scss
@@ -1,6 +1,6 @@
@font-face {
font-family: "iconfont"; /* Project id 2987621 */
- src: url('iconfont.ttf?t=1652868058352') format('truetype');
+ src: url('iconfont.ttf?t=1653384789393') format('truetype');
}
.iconfont {
@@ -11,6 +11,26 @@
-moz-osx-font-smoothing: grayscale;
}
+.icon-yucunkuan:before {
+ content: "\e66c";
+}
+
+.icon-xianxiahuikuan:before {
+ content: "\e669";
+}
+
+.icon-xtianzhangqi:before {
+ content: "\e66a";
+}
+
+.icon-saomazhifu:before {
+ content: "\e66b";
+}
+
+.icon-fahuo:before {
+ content: "\e66d";
+}
+
.icon-zhuyi:before {
content: "\e668";
}
diff --git a/src/styles/iconfont.ttf b/src/styles/iconfont.ttf
index 7167c2af488d962281b74576a2c8465a58eaa670..65bed9ce356493a9a3134d4706a948a357404b39 100644
GIT binary patch
delta 2211
zcmZWpU2GIp6h3#hJ2N}mooV;4P+;5c!fvg`4^Ir_zrS#G8tYTAb7T3bBdm*l!2B}Uwd47*
zp^6VXz94FB!8;2_CXRZJ4Oad;OVo4@4%b_kB3*G}hy|)EJY5H@jyvQogM;YTxm`am
zJr@@j?K0+g1-4F#@Zu8d;`1R^!DfogKeJZJH_nxuM4ywRG)mxUAaah%=w*cKayj3|
z$7a4#R%Ca;w~UrkHLakPw2DGhL$y>#0SZ%uf>cGTX$?imq;j&Tf-1>NKJt@?+}Kwq
z7ipv-AqVzn|DswR%65J3IJ
z_eg*V;(H~)3Grtozz*?!65xsWb7YGffimKK5+INGehJV>{D1@qCEhOqYKiA1Kr-=z
z5}=#-fCPvqJ}4oigZQunxoivy5>SZvhy=7EJ}M#Fh(9j@{fHlufRe-yONbug
zV-ir8Zb2FW=uEdDjewB2boJ9U*1|3-+mz27c7x-mvWw1I=Yo1c+oa9u+x72UEv_kJ
z%J{_{a=%%=rTksbO3$li(A;jmXr3{zS%cP>*3F7g#X_a-^?Os^oa}SQka7bYZAKG^
zO~oHllATIA6^q8AzGTp^HnKq5y{BIdN7u7RIGW0=vsqdWSPW*ehP7u9Wif?qJvo@k
z44yoFYM{Nfxp!xoVOd5`wYXPXeoGE|4AV3kJ2cC$XLGvW(mIqInZZ-1r-#JSt@-SZ
z=GNjBgs04anG$PD131Ql8%x)bpbXy`Spkj)tta#;s|&AXnJy+XDrK)pPbuZL
zx@3r{7E{|D$*N#g(66bQ8Wsg-+Qsi77L>P(*IgBQnHJLmrslfiHqB1WV>=yA*FPdN
zR%^)Fs@JmJo8!1PcYlOI0~4d{Lv*n7Zm&;`=~h6~QO-Htw45#!DZOp%rKRQf_lYMT
zW=7O(qlrqD{{ihHl%@>Pn($gB)u|*yN}yDeLo?Yb=C2AS+cWD~DjL(m&Fp__sj)}&
z+W%T$`8(yI^7GaHH#|m@W(KryRts2q-c`M_ec+x(({^`%wzs)eX>Cv=fyupnn%1{>
zG7wR38%;u?x*V$0`;De0iJnw06$VwfCDd80T
zCPGVAP%fy8gl*A;EGg=eQ>qWkQyGYhroC!diBLhPQ!q?R*<)Cy8za*w)FiB8q7X`e
zdsv8IXXJ$2ge&2@`<_^(9K>BAELw_$>S6~G6DqjPqMa!{mz;9DQcx(tT4CZZ6v9UX
zGTF+X_(rZl{f~ix9&ms&&%!Yl4QmXiD%Fl=tzsc&GSqgT8c~0&EgkVa>a!!xN1c%>
zaFDJPj07tEL2!||Z>f$Uw^saG^XuYfX>3EVGr%^e4%JiKx5wl2dBiQ7N^N=2V3oVY
z)Na%3&85@R#o?MpG%K2Z|9MFUD`;$^rWF^&S!Rz1gT-%D%hbhgUa#0PnJQkv2Blp*
zzSi{cgT{}E5F{S8ha!|McL%H+SaDxpU6>&y+{L50v&6UwnJl
z0XR1R&rmjhZPJ~;eH!qmfMjECA~T*Wq!$6y$i5s6fv=u2*GnXon<~tfocdqD{NTQn
zpB~GUm*+nNzE9luPGx3iOb1qY-o$z}}`hjd!G
zyVQ0d1w&s_eNtNTOq`E>aWr(xw-dFbKfD_HlPt3u?d^ege^#*8Cwy@Hndi
zD$E0NRAEMtK83kKjw#F%a$I4)kP`|shZIk8A}j*Zudp1*DTReW1{9VEVdpI@7BZ-?
zY{(gf0zl3xlmc>2p(qgc#zJ`@7nCBEf($8Edl^=!9^|58HIfm9ib6&eY75CIR2gzf
zq27=&g~~(574`r!p|Bf}Nfhk_HU^Sa>|2qXVjsmS<+ZSFSf#uc+a``t)XXhs-1+D!
zcn7_|eL275zwVbnd$2utCs=LhYWNfC4}A!ChTle^>3!9=^-
diff --git a/src/use/useCheckAuthorize.tsx b/src/use/useCheckAuthorize.tsx
new file mode 100644
index 0000000..05ae81f
--- /dev/null
+++ b/src/use/useCheckAuthorize.tsx
@@ -0,0 +1,51 @@
+import { alert } from "@/common/common";
+import Taro from "@tarojs/taro";
+import { memo, useCallback, useState } from "react";
+
+type Scope = 'scope.userLocation'|'scope.userLocation'|'scope.record'|'scope.camera'|'scope.bluetooth'|'scope.writePhotosAlbum'|'scope.addPhoneContact'|'scope.addPhoneCalendar'|'scope.werun'|'scope.address'|'scope.invoiceTitle'|'scope.invoice'|'scope.userInfo'
+type Param = {
+ scope: Scope,
+ msg: string //检查不通过时警告
+}
+export default ({scope, msg}: Param) => {
+ //检查授权
+ const check = useCallback(() => {
+ return new Promise((reslove, reject) => {
+ Taro.getSetting({
+ success: (res) => {
+ if(res.authSetting[scope]) {
+ reslove(true)
+ } else if (res.authSetting[scope] === undefined) {
+ Taro.authorize({
+ scope: scope,
+ success() {
+ reslove(true)
+ },
+ fail() {
+ alert.none(msg)
+ reject(false)
+ }
+ })
+ } else {
+ Taro.openSetting({
+ success(res) {
+ if(res.authSetting[scope]) {
+ reslove(true)
+ } else {
+ alert.none(msg)
+ reject(false)
+ }
+ }
+ })
+ }
+ }
+ })
+ })
+
+ }, [scope])
+
+ return {
+ check,
+ }
+
+}
\ No newline at end of file
diff --git a/src/use/useHttp.ts b/src/use/useHttp.ts
index 05b143b..592321f 100644
--- a/src/use/useHttp.ts
+++ b/src/use/useHttp.ts
@@ -32,7 +32,8 @@ type option = {
data?: any,
page?: number,
pageSize?: number,
- pagination?: true|false
+ pagination?: true|false,
+ base_url?: string
}
/**
@@ -99,9 +100,9 @@ export const useRequest = (options:option = {
page: 1,
pageSize: 24,
pagination: false, // 是否分页
+ base_url: ''
}) => {
-
- options.url = `${BASE_URL}${options.url}`
+ options.url = `${options.base_url||BASE_URL}${options.url}`
let params:Params = {
code: null, // 业务码
success: false, // 请求是否成功
@@ -121,7 +122,6 @@ export const useRequest = (options:option = {
const stateRef = useRef({...params})
const [state, setState] = useState({...stateRef.current})
const {removeToken, removeSessionKey} = useUserInfo()
- const router = useRouter()
// 请求函数
const fetchData = async (sub_options?:any) => {
stateRef.current.loading = true
From 1367c0f65434c5816202c56a5702c8965d43ea94 Mon Sep 17 00:00:00 2001
From: czm <2192718639@qq.com>
Date: Wed, 25 May 2022 20:32:15 +0800
Subject: [PATCH 3/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/onlinePay.ts | 5 +-
src/api/order.ts | 20 +++
.../addressInfoDetail/index.module.scss | 1 +
.../components/addressInfoDetail/index.tsx | 23 +--
src/pages/order/components/kindList/index.tsx | 3 +-
.../order/components/orderState/index.tsx | 6 +-
src/pages/order/components/scanPay/index.tsx | 132 ++++++++++++------
src/pages/order/index.module.scss | 4 +
src/pages/order/index.tsx | 12 +-
.../orderList/components/order/index.tsx | 92 +++++++-----
src/pages/orderList/index.module.scss | 12 +-
src/pages/orderList/index.tsx | 96 +++++++++----
src/use/useHttp.ts | 10 +-
13 files changed, 287 insertions(+), 129 deletions(-)
diff --git a/src/api/onlinePay.ts b/src/api/onlinePay.ts
index 3c23414..b5ce06f 100644
--- a/src/api/onlinePay.ts
+++ b/src/api/onlinePay.ts
@@ -6,7 +6,8 @@ import { useRequest } from "@/use/useHttp"
export const GetPayCode = () => {
return useRequest({
url: `/`,
- base_url: 'http://192.168.1.127:8081',
+ base_url: 'http://192.168.1.127:8081/caphtml',
method: "post",
})
-}
\ No newline at end of file
+}
+
diff --git a/src/api/order.ts b/src/api/order.ts
index a1eb29f..d48b41d 100644
--- a/src/api/order.ts
+++ b/src/api/order.ts
@@ -59,4 +59,24 @@ export const SaleOrderApi = () => {
url: `/v1/mall/saleOrder/shipmentMode`,
method: "put",
})
+}
+
+/**
+ * 获取订单状态枚举
+ */
+ export const GetOrderStatusListApi = () => {
+ return useRequest({
+ url: `/v1/mall/enum/sale/order/status`,
+ method: "get",
+ })
+}
+
+/**
+ * 获取订单列表
+ */
+ export const GetOrderListApi = () => {
+ return useRequest({
+ url: `/v1/mall/saleOrder/list`,
+ method: "get",
+ })
}
\ No newline at end of file
diff --git a/src/pages/order/components/addressInfoDetail/index.module.scss b/src/pages/order/components/addressInfoDetail/index.module.scss
index b4a9f1b..68e6171 100644
--- a/src/pages/order/components/addressInfoDetail/index.module.scss
+++ b/src/pages/order/components/addressInfoDetail/index.module.scss
@@ -61,6 +61,7 @@
position: absolute;
bottom: 10px;
right: 10px;
+ z-index: 999;
.updateBtn_list{
position: absolute;
display: flex;
diff --git a/src/pages/order/components/addressInfoDetail/index.tsx b/src/pages/order/components/addressInfoDetail/index.tsx
index 4675aec..9d774e6 100644
--- a/src/pages/order/components/addressInfoDetail/index.tsx
+++ b/src/pages/order/components/addressInfoDetail/index.tsx
@@ -2,7 +2,7 @@ import AddressList from "@/components/AddressList";
import Popup from "@/components/popup";
import { Text, View } from "@tarojs/components"
import classnames from "classnames";
-import { memo, useCallback, useEffect, useMemo, useState } from "react";
+import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from "react";
import styles from './index.module.scss'
export type AddressInfoParam = {
@@ -21,7 +21,7 @@ type Param = {
shipment_mode?: 1|2 //1自提 2物流
}
-export default memo(({onSelect, defaultValue = null, disabled = false, shipment_mode = 1}: Param) => {
+export default memo(forwardRef(({onSelect, defaultValue = null, disabled = false, shipment_mode = 1}: Param, ref) => {
const [showAddressList, setShowAddressList] = useState(false)
useEffect(() => {
@@ -48,12 +48,19 @@ export default memo(({onSelect, defaultValue = null, disabled = false, shipment_
}
//收货方法,1:自提,2物流
const [receivingStatus, setReceivingStatus] = useState(1)
- const onReceivingStatus = (val) => {
+ const onReceivingStatus = (val, e) => {
+ e.stopPropagation()
setReceivingStatus(val)
+ console.log("e::::", e)
}
useEffect(() => {
setReceivingStatus(() => shipment_mode)
}, [shipment_mode])
+
+ //把内部方法提供给外部
+ useImperativeHandle(ref, () => ({
+ changeShow
+ }))
return (
changeShow()}>
@@ -70,18 +77,18 @@ export default memo(({onSelect, defaultValue = null, disabled = false, shipment_
- onReceivingStatus(1)}>自提
- onReceivingStatus(2)}>物流
+ onReceivingStatus(1,e)}>自提
+ onReceivingStatus(2,e)}>物流
- {!disabled&& setShowAddressList(false)}>
+ setShowAddressList(false)}>
请选择收货地址
getAddress(item)}/>
- }
+
)
-})
\ No newline at end of file
+}))
\ No newline at end of file
diff --git a/src/pages/order/components/kindList/index.tsx b/src/pages/order/components/kindList/index.tsx
index 34d9542..db30c54 100644
--- a/src/pages/order/components/kindList/index.tsx
+++ b/src/pages/order/components/kindList/index.tsx
@@ -15,7 +15,6 @@ type OrderParam = {
total_number: number
}
-
export default memo(({value}:{value:OrderParam|null}) => {
//对应数量
const formatCount = useCallback((item) => {
@@ -36,7 +35,7 @@ export default memo(({value}:{value:OrderParam|null}) => {
{numText}
{
- value?.list.map(item => {
+ value?.list?.map(item => {
return
{value.sale_mode_name}
diff --git a/src/pages/order/components/orderState/index.tsx b/src/pages/order/components/orderState/index.tsx
index a3b51bb..d710730 100644
--- a/src/pages/order/components/orderState/index.tsx
+++ b/src/pages/order/components/orderState/index.tsx
@@ -2,7 +2,7 @@ import { Image, Text, View } from "@tarojs/components"
import { memo, useState } from "react"
import styles from './index.module.scss'
import classnames from "classnames";
-import { formatImgUrl } from "@/common/fotmat";
+import { formatDateTime, formatImgUrl } from "@/common/fotmat";
type Param = {
status: string,
time: string,
@@ -24,7 +24,7 @@ export default memo(({list = []}:{list?:Param[]}) => {
{(list.length != (index + 1))&&}
{item.status}
- {item.time}
+ {formatDateTime(item.time)}
{item.tag}
{item.desc}
@@ -35,7 +35,7 @@ export default memo(({list = []}:{list?:Param[]}) => {
}
-
+ {/* */}
}
>
diff --git a/src/pages/order/components/scanPay/index.tsx b/src/pages/order/components/scanPay/index.tsx
index 8467da4..40ee09a 100644
--- a/src/pages/order/components/scanPay/index.tsx
+++ b/src/pages/order/components/scanPay/index.tsx
@@ -1,5 +1,5 @@
import { Image, ScrollView, Text, View } from "@tarojs/components";
-import { memo, useEffect } from "react";
+import { memo, useEffect, useRef, useState } from "react";
import classnames from "classnames";
import styles from './index.module.scss'
import Popup from "@/components/popup";
@@ -14,32 +14,106 @@ type Param = {
show?: true|false,
onClose?: () => void
}
+
+
+type Item = {
+ product_code: string,
+ product_name: string,
+ product_color_code: string,
+ product_color_name: string,
+ num: string,
+ weight: string,
+ sale_price: string,
+ total_price: string
+}
+type CodeParam = {
+ title: string,
+ company: string,
+ order_type: string,
+ sale_user: string,
+ order_created_time: string,
+ order_no: string,
+ department: string,
+ shipment_mode: string,
+ target_user_name: string,
+ target_address: string,
+ target_description: string,
+ pay_account: string,
+ bank_account_name: string,
+ bank_name: string,
+ pay_type: string,
+ client: string,
+ phone: string,
+ order_total_length: string,
+ order_total_price: string,
+ qrcode: string,
+ order_total_weight: string,
+ list: Item[]
+}
export default memo(({show = true, onClose}:Param) => {
- const base64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQAQMAAAC6caSPAAAABlBMVEX///8AAABVwtN+AAACFElEQVR42uyaMbKzMAyExVC8kiNwFI5GjsZRcgRKCgb9I69sY+Ik7R+8O/OKF/N1Gnklr1AURVEURf2sBnUd+P9PZdxFpFddRaZ4uhEhAiR+euBznM2q+hCRacXpROSuiJ0vjphG1YfVkRXM2lm5ECFSR/QpYn+hw+hBhMgnRCScCxA0JSJE3t1i4XdrTPa5e5gvFx+R9pBseqdN9AnTO6+9Pobjq08m8ttIKUP02ZdT0GcRaQuxDhOKyWvMTK/VmMi8droMBxEiNUw6Xawhaagxm5LipGRe+KUpEWkVifMz2hDOXcHwHqV/IdI6IvH3U41JaEqhV6HGLhiRuyBhRj7yyIMrKXnhNYw7L0t7Is0i0mF7snW5w+xp17/4w8+1wxBpF4G79ZEIhbWn2yqY3ortIdIu0mHhYrcYxuqwhRvwkhi88HULR6R5xBd3mmwPmlIaqdGciBBJyKmQjEeNddH2VGuMyO8jeaGCeyfnlAzxLVwlp0SkUeTsbv0dedxlNh8TN7qVRyEizSJlFg4exn7Oo/Xy9zEJSaQt5KS0hzmnaWuml0jDSJm1LqakwbNw28X0ErkPUuaUxg0F40mV+FooRIjUs9Y4n31S8ljTS40RIYLgW1yoxAQkPMzbtC2RlpF0i0mekrwpESFSn5IUq9vYkJba2pbIfZBT1trfkUNSpc/BNiJEKIqiKIqi/gv9CwAA//9IKiY1VjApygAAAABJRU5ErkJggg=='
-
+ //获取支付二维码
+ const [payCodeImage, setPayCodeImage] = useState('')
+ const fileData = useRef({
+ filePath: '',
+ base64: ''
+ })
+ const {fetchData} = GetPayCode()
+ const getCore = async () => {
+ let res = await fetchData({
+ title: "面料销售电子确认单",
+ company: "什么什么公司123",
+ order_type: "散剪",
+ sale_user: "小崔",
+ order_created_time:"2022/02/01 12:32:13",
+ order_no:"XS-211005888",
+ department:"嘻嘻嘻",
+ shipment_mode:"自提",
+ target_user_name:"大崔",
+ target_address:"阿斯顿发斯蒂芬",
+ target_description:"无",
+ pay_account:"1234567890123450001",
+ bank_account_name:"佛山市浩川长盛科技有限公司",
+ bank_name:"招商银行佛山分行禅城支行",
+ pay_type:"现结",
+ client:"客户名称",
+ phone:"15818085802",
+ order_total_length:"12",
+ order_total_price:"63000",
+ qrcode:"www.zzfzyc.com/checkorder/XS-211005888",
+ order_total_weight:"300.00",
+ list: [{product_code:'5215',product_name:'26S双纱亲水滑爽棉',product_color_code:'053',product_color_name:'洋红',num:'4',weight:'123.23',sale_price:'43',total_price:'4510.7'}]
+ })
+ const base64 = res.data.base64
+ setPayCodeImage(() => base64)
+ const time = new Date().valueOf()
+ const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64) || [];
+ let filePath = Taro.env.USER_DATA_PATH + '/img' + time +'.'+ format
+ fileData.current.filePath = filePath
+ fileData.current.base64 = bodyData
+ }
+ useEffect(() => {
+ getCore()
+ }, [])
+ //检查是否开启保存图片权限
const {check} = useCheckAuthorize({scope:'scope.writePhotosAlbum', msg:'您没授权,无法保存图片'})
const saveImageCheck = async () => {
const res = await check()
res&&saveImage()
}
+
//保存图片
const saveImage = () => {
const save = Taro.getFileSystemManager()
- const number = Math.random();
- const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64) || [];
- let filePath = Taro.env.USER_DATA_PATH +'/pic.'+ format
alert.loading('正在保存图片')
save.writeFile({
- filePath: filePath,
- data: base64,
+ filePath: fileData.current.filePath,
+ data: fileData.current.base64,
encoding: 'base64',
success: function (res) {
- console.log('aa::',res)
- console.log('aa2::',filePath)
Taro.saveImageToPhotosAlbum({
- filePath: filePath,
+ filePath: fileData.current.filePath,
success: function (res) {
alert.success('图片保存成功')
},
@@ -50,42 +124,14 @@ export default memo(({show = true, onClose}:Param) => {
}
})
}
+
//预览图片
const showImage = () => {
Taro.previewImage({
- current: formatImgUrl(''), // 当前显示图片的http链接
- urls: [formatImgUrl('')] // 需要预览的图片http链接列表
+ current: fileData.current.filePath, // 当前显示图片的http链接
+ urls: [fileData.current.filePath] // 需要预览的图片http链接列表
})
}
-
- // const {fetchData} = GetPayCode()
- // useEffect(() => {
- // fetchData({
- // title: "面料销售电子确认单",
- // company: "什么什么公司123",
- // order_type: "散剪",
- // sale_user: "小崔",
- // order_created_time:"2022/02/01 12:32:13",
- // order_no:"XS-211005888",
- // department:"嘻嘻嘻",
- // shipment_mode:"自提",
- // target_user_name:"大崔",
- // target_address:"阿斯顿发斯蒂芬",
- // target_description:"无",
- // pay_account:"1234567890123450001",
- // bank_account_name:"佛山市浩川长盛科技有限公司",
- // bank_name:"招商银行佛山分行禅城支行",
- // pay_type:"现结",
- // client:"客户名称",
- // phone:"15818085802",
- // order_total_length:"12",
- // order_total_price:"23000",
- // qrcode:"www.zzfzyc.com/checkorder/XS-211005888",
- // order_total_weight:"300.00",
- // list: [{product_code:'5215',product_name:'26S双纱亲水滑爽棉',product_color_code:'053',product_color_name:'洋红',num:'4',weight:'123.23',sale_price:'43',total_price:'4510.7'}]
- // })
- // }, [])
-
//复制功能
return (
@@ -99,7 +145,7 @@ export default memo(({show = true, onClose}:Param) => {
扫码支付成功后,自动更新状态
-
+
保存电子确认单
diff --git a/src/pages/order/index.module.scss b/src/pages/order/index.module.scss
index e965350..662cb6e 100644
--- a/src/pages/order/index.module.scss
+++ b/src/pages/order/index.module.scss
@@ -89,6 +89,10 @@
margin-left: 34px;
}
}
+ .order_btn_select{
+ color: $color_main;
+ border: 2px solid $color_main;
+ }
.order_number_desc{
font-size: $font_size_medium;
color: $color_font_two;
diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx
index 47259cd..e306c36 100644
--- a/src/pages/order/index.tsx
+++ b/src/pages/order/index.tsx
@@ -109,6 +109,10 @@ import styles from './index.module.scss'
const toPay = () => {
setPayMentShow(true)
}
+
+ //打开地址修改
+ const addressRef = useRef(null)
+
return (
{/*
@@ -116,7 +120,7 @@ import styles from './index.module.scss'
*/}
-
+
@@ -143,9 +147,9 @@ import styles from './index.module.scss'
- 申请退货
- 查看物流
- 确认收货
+
+ {(orderDetail?.status == 0)&&取消订单}
+ {(orderDetail?.status == 0)&& addressRef.current.changeShow()}>修改地址}
toPay()}>去支付
setShowDesc(false)} >
diff --git a/src/pages/orderList/components/order/index.tsx b/src/pages/orderList/components/order/index.tsx
index 6fe747c..e6fc8d5 100644
--- a/src/pages/orderList/components/order/index.tsx
+++ b/src/pages/orderList/components/order/index.tsx
@@ -1,11 +1,33 @@
-import { formatImgUrl } from "@/common/fotmat";
+import { formatHashTag, formatImgUrl, formatPriceDiv } from "@/common/fotmat";
import { useSelector } from "@/reducers/hooks";
import { Image, Text, View } from "@tarojs/components"
import classnames from "classnames";
-import { memo } from "react";
+import { memo, useCallback } from "react";
import styles from './index.module.scss'
-export default memo(() => {
+
+type Param = {
+ value?: {
+ order_no: string,
+ sale_mode: number,
+ sale_mode_name: string,
+ status_name: string,
+ shipment_mode_name: string,
+ product_list: any[],
+ total_fabrics: number,
+ total_colors: number,
+ total_number: number
+ }
+}
+export default memo(({value}: Param) => {
const userInfo = useSelector(state => state.userInfo)
+ //对应数量
+ const formatCount = useCallback((item, sale_mode) => {
+ return sale_mode == 0? item.roll : Number(item.length / 100)
+ }, [value])
+ //对应单价
+ const standardPrice = useCallback((price, sale_mode) => {
+ return formatPriceDiv(price).toLocaleString() + '/' + (sale_mode == 1?'m':'kg')
+ }, [value])
return (
@@ -14,41 +36,43 @@ export default memo(() => {
{userInfo.adminUserInfo.user_name}
- 订单号:LY2278204399678
+ 订单号:{value?.order_no}
- 自提
+ {value?.shipment_mode_name}
-
- 大货
- 0770# 21S单面平纹(食毛)
- 待接单
+
+
+ {value?.sale_mode_name}
+ {formatHashTag(value?.product_list[0].code, value?.product_list[0].name)}
+ {value?.status_name}
+
+
+
+
+ {value?.product_list[0].product_colors[0].code}
+
+
+ {value?.product_list[0].product_colors.map((itemColor, index) => {
+ return (
+ (index <= 1)&&
+ {formatHashTag(itemColor.code, itemColor.name)}
+ {standardPrice(itemColor.sale_price, value.sale_mode)}
+ ×{formatCount(itemColor, value.sale_mode)}条
+
+ )
+
+ })
+ }
+
+ ……
+ ……
+ ……
+
+
+
+ {`${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}条`}
-
-
-
- 24色
-
-
-
- 1# 薄荷绿
- ¥40/kg
- ×2条
-
-
- 1# 薄荷绿
- ¥40/kg
- ×2条
-
-
- ……
- ……
- ……
-
-
-
-
- 2种面料,3种颜色,共6条
取消订单
修改地址
diff --git a/src/pages/orderList/index.module.scss b/src/pages/orderList/index.module.scss
index 1a68dbc..f7222c8 100644
--- a/src/pages/orderList/index.module.scss
+++ b/src/pages/orderList/index.module.scss
@@ -9,28 +9,30 @@
box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.16);
border-bottom: 2px solid #e2e2e2;
.order_status_list{
- display: flex;
- justify-content: space-between;
font-size: $font_size;
color: #9E9E9E;
margin-top: 20px;
.order_status_item{
- padding: 20px 10px;
+ padding: 20px;
box-sizing: border-box;
}
.selected{
font-weight: 700;
color: #000;
border-bottom: 4px solid #707070;
- // border-radius: 4px;
+ }
+ .order_list_scroll{
+ white-space: nowrap;
+ display: flex;
}
}
}
.order_list{
flex:1;
height: 0;
- .order_item{
+ .order_item_con{
margin-top: 20px;
+ padding: 0 20px;
}
}
}
\ No newline at end of file
diff --git a/src/pages/orderList/index.tsx b/src/pages/orderList/index.tsx
index 010f815..7e446d2 100644
--- a/src/pages/orderList/index.tsx
+++ b/src/pages/orderList/index.tsx
@@ -1,15 +1,16 @@
import Search from "@/components/search"
import useLogin from "@/use/useLogin"
-import { Image, Text, View } from "@tarojs/components"
-import { useDidShow, useRouter } from "@tarojs/taro"
-import { useCallback, useState } from "react"
+import { Image, ScrollView, Text, View } from "@tarojs/components"
+import Taro, { useDidShow, useRouter } from "@tarojs/taro"
+import { useCallback, useEffect, useMemo, useRef, useState } from "react"
import {ORDER_STATUS} from '@/common/enum'
import styles from './index.module.scss'
import classnames from "classnames";
-import { useSelector } from "@/reducers/hooks"
-import { formatImgUrl } from "@/common/fotmat"
import Order from "./components/order"
import InfiniteScroll from "@/components/infiniteScroll"
+import {GetOrderStatusListApi, GetOrderListApi} from '@/api/order'
+import { dataLoadingStatus, getFilterData } from "@/common/util"
+import Tabs from "@/components/tabs"
export default () => {
const {checkLogin} = useLogin()
@@ -17,46 +18,89 @@ export default () => {
await checkLogin()
})
- const router = useRouter()
//搜索参数
const [searchField, setSearchField] = useState({
- shipment_mode:'',
+ status: -1,
page : 1,
size : 10,
- key:''
+ Name:''
})
- //订单状态
- type orderStatusParam = {value:number, label:string}[]
- const order_status: orderStatusParam = [{value:-1, label:'全部'}, ...Object.values(ORDER_STATUS)]
- const [selectStatus, setSelectStatus] = useState(-1)
- const changeStatus = useCallback((e) => {
- setSelectStatus(() => e)
+ //获取订单状态
+ const {fetchData: statusFetchData} = GetOrderStatusListApi()
+ const [statusList, setStatusList] = useState([{id: -1, name: '全部'}])
+ const getOrderStatusList = async () => {
+ let res = await statusFetchData()
+ let list = [...statusList, ...res.data.list||[]]
+ setStatusList(() => list)
+ }
+ useEffect(() => {
+ getOrderStatusList()
}, [])
+ //获取订单列表
+ const {fetchData: listFetchData, state:orderState} = GetOrderListApi()
+ const [orderData, setOrderData] = useState<{list:any[], total:number}>({list:[], total:0})
+ const getOrderList = async () => {
+ let res = await listFetchData(getFilterData(searchField))
+ setOrderData({list: res.data.list, total: res.data.total})
+ Taro.stopPullDownRefresh()
+ }
+
+
+ //监听筛选条件变化
+ useEffect(() => {
+ getOrderList()
+ }, [searchField])
+
+ //上拉加载数据
+ const pageNum = useRef({size: searchField.size, page: searchField.page})
+ const getScrolltolower = useCallback(() => {
+ if(orderData.list.length < orderData.total) {
+ pageNum.current.page++
+ const size = pageNum.current.size * pageNum.current.page
+ setSearchField({...searchField, size })
+ }
+ }, [orderData])
+
+ //状态改变
+ const changeStatus = useCallback((e) => {
+ pageNum.current.page = 1
+ setSearchField((value) => ({...value, status:e, size:10}))
+ setOrderData(() => ({list:[], total:0}))
+ }, [])
+
+
+ //数据加载状态
+ const statusMore = useMemo(() => {
+ return dataLoadingStatus({list:orderData.list, total: orderData.total, status: orderState.loading})
+ }, [orderData, orderState])
+
//输入了搜索关键字
const getSearchData = useCallback((e) => {
- // setMaterialList(() => ({list:[], total:0}))
- setSearchField((val) => ({...val, code_or_name:e, size:10}))
+ pageNum.current.page = 1
+ setOrderData(() => ({list:[], total:0}))
+ setSearchField((val) => ({...val, name:e, size:10}))
}, [])
-
-
return (
-
+
- {order_status.map(item => {
- return changeStatus(item.value)} className={classnames(styles.order_status_item, (selectStatus==item.value)&&styles.selected)}>{item.label}
- })}
+
+
+ {statusList.map(item => {
+ return changeStatus(item.id)} className={classnames(styles.order_status_item, (searchField.status==item.id)&&styles.selected)}>{item.name}
+ })}
+
+
-
- {new Array(10).fill('').map(item => {
- return
-
+
+ {orderData?.list.map(item => {
+ return
})}
diff --git a/src/use/useHttp.ts b/src/use/useHttp.ts
index 592321f..74ee064 100644
--- a/src/use/useHttp.ts
+++ b/src/use/useHttp.ts
@@ -1,7 +1,7 @@
import Taro, { useRouter } from '@tarojs/taro'
-import { useRef, useState } from 'react'
+import { useEffect, useRef, useState } from 'react'
import {BASE_URL, WX_APPID} from '@/common/constant'
import useUserInfo from "./useUserInfo"
import qs from 'qs';
@@ -122,10 +122,15 @@ export const useRequest = (options:option = {
const stateRef = useRef({...params})
const [state, setState] = useState({...stateRef.current})
const {removeToken, removeSessionKey} = useUserInfo()
+
+ useEffect(() => {
+ console.log('变化::', state.loading)
+ }, [state.loading])
// 请求函数
const fetchData = async (sub_options?:any) => {
stateRef.current.loading = true
setState((e) => ({...e, loading:true}))
+ console.log('tf:::', stateRef.current.loading)
stateRef.current.query = {
...sub_options,
...options.pagination && {
@@ -153,6 +158,7 @@ export const useRequest = (options:option = {
}
}
const result = await Taro.request(q as any)
+
const { statusCode } = result
const {
code,
@@ -189,7 +195,7 @@ export const useRequest = (options:option = {
}
stateRef.current.error = false
stateRef.current.loading = false
- setState(() => stateRef.current)
+ setState(() => ({...stateRef.current}))
return stateRef.current
}
From e73bd1bc25eb43f4ce70085ca6f7f4a08f253d52 Mon Sep 17 00:00:00 2001
From: czm <2192718639@qq.com>
Date: Thu, 26 May 2022 17:32:59 +0800
Subject: [PATCH 4/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/order.ts | 10 +++
src/components/orderBtns/index.module.scss | 22 +++++
src/components/orderBtns/index.tsx | 80 +++++++++++++++++++
src/pages/order/comfirm.tsx | 47 +++--------
.../components/addressInfoDetail/index.tsx | 66 ++++++++++-----
src/pages/order/components/scanPay/index.tsx | 47 ++++++-----
src/pages/order/index.tsx | 34 +++++---
.../components/order/index.module.scss | 22 -----
.../orderList/components/order/index.tsx | 61 +++++++++++---
src/pages/orderList/index.tsx | 2 +-
10 files changed, 271 insertions(+), 120 deletions(-)
create mode 100644 src/components/orderBtns/index.module.scss
create mode 100644 src/components/orderBtns/index.tsx
diff --git a/src/api/order.ts b/src/api/order.ts
index d48b41d..45eb243 100644
--- a/src/api/order.ts
+++ b/src/api/order.ts
@@ -79,4 +79,14 @@ export const SaleOrderApi = () => {
url: `/v1/mall/saleOrder/list`,
method: "get",
})
+}
+
+/**
+ * 作废销售单
+ */
+ export const CancelOrderApi = () => {
+ return useRequest({
+ url: `/v1/mall/saleOrder/cancel`,
+ method: "put",
+ })
}
\ No newline at end of file
diff --git a/src/components/orderBtns/index.module.scss b/src/components/orderBtns/index.module.scss
new file mode 100644
index 0000000..28023d0
--- /dev/null
+++ b/src/components/orderBtns/index.module.scss
@@ -0,0 +1,22 @@
+.btns_list{
+ display: flex;
+ justify-content: flex-end;
+ margin-top: 30px;
+ .btns_item{
+ width: 152px;
+ height: 72px;
+ border: 2px solid #dddddd;
+ border-radius: 38px;
+ text-align: center;
+ line-height: 72px;
+ font-size: $font_size;
+ color: $color_font_three;
+ &:nth-child(n+2) {
+ margin-left: 32px;
+ }
+ }
+ .end_btn{
+ border: 2px solid $color_main;
+ color: $color_main;
+ }
+}
\ No newline at end of file
diff --git a/src/components/orderBtns/index.tsx b/src/components/orderBtns/index.tsx
new file mode 100644
index 0000000..53e33a1
--- /dev/null
+++ b/src/components/orderBtns/index.tsx
@@ -0,0 +1,80 @@
+import { CancelOrderApi } from "@/api/order"
+import { alert } from "@/common/common"
+import { View } from "@tarojs/components"
+import Taro from "@tarojs/taro"
+import { useCallback, useRef, memo } from "react"
+import styles from './index.module.scss'
+
+type Param = {
+ status?: number //订单状态
+ orderId?: number //订单id
+}
+export default memo(({status = 0, orderId = 0}:Param) => {
+ //订单按钮按订单状态归类
+ const orderBtnsList = useRef([
+ {
+ value: [0, 1, 2, 9, 3], //取消订单按钮对应: 待接单,待配布,已配布, 待付款, 待发货
+ label: '取消订单'
+ },
+ {
+ value: [3, 9], //去付款按钮对应:待付款, 待发货
+ label: '去付款'
+ },
+ {
+ value: [3], //取消订单按钮对应: 待发货
+ label: '申请退款'
+ },
+ {
+ value: [4, 7, 8, 6], //取消订单按钮对应: 待收货, 已收货, 已完成, 已退款
+ label: '查看物流'
+ },
+ {
+ value: [4, 7, 6], //取消订单按钮对应: 待收货, 已收货, 已退款
+ label: '申请退货'
+ },
+ {
+ value: [4], //取消订单按钮对应: 待收货
+ label: '确认收货'
+ },
+ {
+ value: [4,7,8,6], //取消订单按钮对应: 待收货,已收货,已完成, 已退款
+ label: '再次购买'
+ }
+ ])
+ const orderBtnsShow = useCallback((item, status) => {
+ return item.value.includes(status)
+ },[])
+
+ //点击按钮操作
+ const submitBtns = (val) => {
+ if( val == 0 ) cancelOrder()
+ }
+
+ //取消订单
+ const {fetchData: cancelFetchData} = CancelOrderApi()
+ const cancelOrder = () => {
+ Taro.showModal({
+ title: '要取消该订单吗?',
+ success: async function (res) {
+ if (res.confirm) {
+ let res = await cancelFetchData({id: orderId})
+ if(res.success) {
+ alert.success('取消成功')
+ } else {
+ alert.none(res.msg)
+ }
+ } else if (res.cancel) {
+ console.log('用户点击取消')
+ }
+ }
+ })
+ }
+
+ return (
+
+ {orderBtnsList.current.map((item, index) =>
+ orderBtnsShow(item, status)&& submitBtns(index)}>{item.label}
+ )}
+
+ )
+})
\ No newline at end of file
diff --git a/src/pages/order/comfirm.tsx b/src/pages/order/comfirm.tsx
index 5db9fc2..87a0048 100644
--- a/src/pages/order/comfirm.tsx
+++ b/src/pages/order/comfirm.tsx
@@ -31,7 +31,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
const param = getParam()
const idsAndSaleModel = useRef({shopping_cart_product_color_list:[], sale_mode:0})
useDidShow(async () => {
- await checkLogin()
+ // await checkLogin()
idsAndSaleModel.current.sale_mode = Number(param?.sale_mode)
param?.ids?.split('-')?.map(item => {
return idsAndSaleModel.current.shopping_cart_product_color_list?.push({
@@ -43,8 +43,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
})
//获取销售预览订单
- type preViewOrderParam = {estimate_amount:number, estimate_weight:number, product_color_list:any[], sale_mode:number, sale_mode_name:string, default_address:AddressInfoParam}
- const [preViewOrder, setPreViewOrder] = useState() //获取到的原始数据
+ const [preViewOrder, setPreViewOrder] = useState() //获取到的原始数据
const {fetchData} = SaleOrderPreViewApi()
const getSaleOrderPreView = async () => {
if(idsAndSaleModel.current.shopping_cart_product_color_list?.length > 0) {
@@ -65,36 +64,16 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
//格式化数据格式
const [formatPreViewOrder, setFormatPreViewOrder] = useState() //格式化后的数据
const formatData = () => {
- if(preViewOrder?.product_color_list&&preViewOrder?.product_color_list.length > 0) {
- let dataList = {}
- let num_count = 0 //总数量
- let orderList:{shopping_cart_product_color_id:number}[] = [] //提交订单时的格式
- preViewOrder?.product_color_list.map(item => {
- dataList[item.product_code] = dataList[item.product_code]||{}
- dataList[item.product_code].product_code = item.product_code
- dataList[item.product_code].product_name = item.product_name
- dataList[item.product_code].sale_mode_name = preViewOrder.sale_mode_name
- dataList[item.product_code].color_list = dataList[item.product_code]?.color_list||[]
- dataList[item.product_code].color_list.push(item)
- //大货
- if (preViewOrder.sale_mode == 0) num_count += item.roll
- //剪板或散件
- if (preViewOrder.sale_mode == 1 || preViewOrder.sale_mode == 2) num_count += item.length
- orderList.push({shopping_cart_product_color_id:item.id})
- })
- if (preViewOrder.sale_mode == 1 || preViewOrder.sale_mode == 2) num_count = Number(num_count / 100);
- setFormatPreViewOrder({
- estimate_amount: preViewOrder.estimate_amount, //预估金额
- estimate_weight: preViewOrder.estimate_weight,
- sale_mode: preViewOrder.sale_mode,
- sale_mode_name: preViewOrder.sale_mode_name,
- colo_count: preViewOrder.product_color_list.length, //颜色数量
- num_count: num_count, //总数量
- unit: preViewOrder.sale_mode == 0?'条':'m', //单位
- list: Object.values(dataList)
- })
- setSubmitOrderData({...submitOrderData, list: orderList})
- }
+ setFormatPreViewOrder({
+ estimate_amount: preViewOrder.estimate_amount, //预估金额
+ sale_mode: preViewOrder.sale_mode,
+ sale_mode_name: preViewOrder.sale_mode_name,
+ total_colors: preViewOrder.total_colors, //总颜色数量
+ total_number: preViewOrder.total_number, //总数量
+ total_fabrics: preViewOrder.total_fabrics, //面料数量
+ unit: preViewOrder.sale_mode == 0?'条':'m', //单位
+ list: preViewOrder.product_list
+ })
}
const formatPreViewOrderMemo = useMemo(() => {
console.log('formatPreViewOrder::',formatPreViewOrder)
@@ -185,7 +164,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
- {`${formatPreViewOrder?.list.length}种面料,${formatPreViewOrder?.colo_count}种颜色,共${formatPreViewOrder?.num_count + formatPreViewOrder?.unit}`}
+ {`${formatPreViewOrder?.total_fabrics}种面料,${formatPreViewOrder?.total_colors}种颜色,共${formatPreViewOrder?.total_number + formatPreViewOrder?.unit}`}
submitOrderEven()}>提交订单
diff --git a/src/pages/order/components/addressInfoDetail/index.tsx b/src/pages/order/components/addressInfoDetail/index.tsx
index 9d774e6..fe9b337 100644
--- a/src/pages/order/components/addressInfoDetail/index.tsx
+++ b/src/pages/order/components/addressInfoDetail/index.tsx
@@ -1,3 +1,6 @@
+import { EditSaleOrderAddressApi, EditSaleOrderShipmentModeApi } from "@/api/order";
+import { alert } from "@/common/common";
+import { debounce } from "@/common/util";
import AddressList from "@/components/AddressList";
import Popup from "@/components/popup";
import { Text, View } from "@tarojs/components"
@@ -12,29 +15,25 @@ export type AddressInfoParam = {
address_detail: string,
id?: number,
name: string,
- phone: string
+ phone: string,
}
type Param = {
onSelect?: (val:any) => void, //选择
- defaultValue?: AddressInfoParam|null //默认值
- disabled?: false|true //true禁用后只用于展示
- shipment_mode?: 1|2 //1自提 2物流
+ defaultValue?: AddressInfoParam|null, //默认值
+ disabled?: false|true, //true禁用后只用于展示
+ shipment_mode?: 1|2, //1自提 2物流
+ onChangeShipmentMode?: (val: number) => void, //返回收货方式
+ orderId?: number //订单id
}
-export default memo(forwardRef(({onSelect, defaultValue = null, disabled = false, shipment_mode = 1}: Param, ref) => {
+export default memo(forwardRef(({onSelect, onChangeShipmentMode, defaultValue = null, orderId = 0, shipment_mode = 1}: Param, ref) => {
const [showAddressList, setShowAddressList] = useState(false)
useEffect(() => {
setUserInfo(() => defaultValue)
}, [defaultValue])
- //选择地址
const [userInfo, setUserInfo] = useState()
- const getAddress = useCallback((val) => {
- setShowAddressList(() => false)
- setUserInfo(() => val)
- onSelect?.(val)
- }, [])
//地址格式
const formatAddress = useMemo(() => {
@@ -46,13 +45,7 @@ export default memo(forwardRef(({onSelect, defaultValue = null, disabled = false
if(receivingStatus == 2)
setShowAddressList(() => true)
}
- //收货方法,1:自提,2物流
- const [receivingStatus, setReceivingStatus] = useState(1)
- const onReceivingStatus = (val, e) => {
- e.stopPropagation()
- setReceivingStatus(val)
- console.log("e::::", e)
- }
+
useEffect(() => {
setReceivingStatus(() => shipment_mode)
}, [shipment_mode])
@@ -61,6 +54,41 @@ export default memo(forwardRef(({onSelect, defaultValue = null, disabled = false
useImperativeHandle(ref, () => ({
changeShow
}))
+
+ //收货方法,1:自提,2物流
+ const [receivingStatus, setReceivingStatus] = useState(1)
+ const {fetchData: shipmentModeFetchData} = EditSaleOrderShipmentModeApi()
+ const onReceivingStatus = (value, e) => {
+ e.stopPropagation()
+ changeReceivingStatus(value)
+ }
+ const changeReceivingStatus = debounce(async (value) => {
+ alert.loading('正在修改')
+ const res = await shipmentModeFetchData({id: orderId, shipment_mode:value})
+ if(res.success) {
+ alert.success('修改成功')
+ onChangeShipmentMode?.(value)
+ setReceivingStatus(value)
+ } else {
+ alert.none(res.msg)
+ }
+ }, 10)
+
+ //修改地址
+ const {fetchData: addressFetchData} = EditSaleOrderAddressApi()
+ const getAddress = async (value) => {
+ alert.loading('正在修改')
+ setShowAddressList(() => false)
+ setUserInfo(() => value)
+ const res = await addressFetchData({id: orderId, address_id: value.id})
+ if(res.success) {
+ alert.success('修改成功')
+ onSelect?.(value)
+ } else {
+ alert.none(res.msg)
+ }
+ }
+
return (
changeShow()}>
@@ -86,7 +114,7 @@ export default memo(forwardRef(({onSelect, defaultValue = null, disabled = false
setShowAddressList(false)}>
请选择收货地址
- getAddress(item)}/>
+
diff --git a/src/pages/order/components/scanPay/index.tsx b/src/pages/order/components/scanPay/index.tsx
index 40ee09a..d6fb06e 100644
--- a/src/pages/order/components/scanPay/index.tsx
+++ b/src/pages/order/components/scanPay/index.tsx
@@ -8,6 +8,7 @@ import { alert } from "@/common/common";
import { formatImgUrl } from "@/common/fotmat";
import useCheckAuthorize from "@/use/useCheckAuthorize";
import { GetPayCode } from "@/api/onlinePay";
+import LoadingCard from "@/components/loadingCard";
type Param = {
@@ -58,7 +59,7 @@ export default memo(({show = true, onClose}:Param) => {
filePath: '',
base64: ''
})
- const {fetchData} = GetPayCode()
+ const {fetchData, state} = GetPayCode()
const getCore = async () => {
let res = await fetchData({
title: "面料销售电子确认单",
@@ -80,7 +81,7 @@ export default memo(({show = true, onClose}:Param) => {
phone:"15818085802",
order_total_length:"12",
order_total_price:"63000",
- qrcode:"www.zzfzyc.com/checkorder/XS-211005888",
+ qrcode:"https://www.zzfzyc.com/checkorder/XS-211005888",
order_total_weight:"300.00",
list: [{product_code:'5215',product_name:'26S双纱亲水滑爽棉',product_color_code:'053',product_color_name:'洋红',num:'4',weight:'123.23',sale_price:'43',total_price:'4510.7'}]
})
@@ -91,10 +92,18 @@ export default memo(({show = true, onClose}:Param) => {
let filePath = Taro.env.USER_DATA_PATH + '/img' + time +'.'+ format
fileData.current.filePath = filePath
fileData.current.base64 = bodyData
+ const save = Taro.getFileSystemManager()
+ save.writeFile({
+ filePath: fileData.current.filePath,
+ data: fileData.current.base64,
+ encoding: 'base64',
+ })
+
}
useEffect(() => {
- getCore()
- }, [])
+ if(show)
+ getCore()
+ }, [show])
//检查是否开启保存图片权限
const {check} = useCheckAuthorize({scope:'scope.writePhotosAlbum', msg:'您没授权,无法保存图片'})
@@ -105,30 +114,23 @@ export default memo(({show = true, onClose}:Param) => {
//保存图片
const saveImage = () => {
- const save = Taro.getFileSystemManager()
alert.loading('正在保存图片')
- save.writeFile({
+ Taro.saveImageToPhotosAlbum({
filePath: fileData.current.filePath,
- data: fileData.current.base64,
- encoding: 'base64',
success: function (res) {
- Taro.saveImageToPhotosAlbum({
- filePath: fileData.current.filePath,
- success: function (res) {
- alert.success('图片保存成功')
- },
- fail: function (err) {
- console.log('err::', err)
- }
- })
+ alert.success('图片保存成功')
+ },
+ fail: function (err) {
+ console.log('err::', err)
}
})
}
//预览图片
const showImage = () => {
+ console.log('fileData.current.filePath::', fileData.current.filePath)
Taro.previewImage({
- current: fileData.current.filePath, // 当前显示图片的http链接
+ current: fileData.current.filePath, // 当前显示
urls: [fileData.current.filePath] // 需要预览的图片http链接列表
})
}
@@ -144,9 +146,12 @@ export default memo(({show = true, onClose}:Param) => {
扫码支付成功后,自动更新状态
-
-
-
+
+ {(state.loading)&&||
+
+
+ }
+
保存电子确认单
diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx
index e306c36..cc718f3 100644
--- a/src/pages/order/index.tsx
+++ b/src/pages/order/index.tsx
@@ -1,20 +1,22 @@
-import { GetSaleOrderDetailApi, EditSaleOrderRemarkApi } from "@/api/order";
+import {
+ GetSaleOrderDetailApi,
+ EditSaleOrderRemarkApi,
+ CancelOrderApi
+} from "@/api/order";
import { alert, goLink } from "@/common/common";
import { formatDateTime, formatPriceDiv } from "@/common/fotmat";
-import { setParam } from "@/common/system";
+import OrderBtns from "@/components/orderBtns";
import Popup from "@/components/popup";
import SearchInput from "@/components/searchInput";
import { Text, Textarea, View } from "@tarojs/components"
import Taro, { useDidShow, useRouter } from "@tarojs/taro";
import classnames from "classnames";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
-import AddressInfo from "./components/addressInfo";
import AddressInfoDetail from "./components/addressInfoDetail";
import KindList from "./components/kindList";
import OrderState from "./components/orderState";
import Payment from "./components/payment";
import Remark from "./components/remark";
-import WeightMemo from "./components/weightMemo";
import styles from './index.module.scss'
export default () => {
@@ -59,7 +61,6 @@ import styles from './index.module.scss'
})
}
const formatPreViewOrderMemo = useMemo(() => {
- console.log('formatDetailOrder::',formatDetailOrder)
return formatDetailOrder
}, [formatDetailOrder])
@@ -97,7 +98,8 @@ import styles from './index.module.scss'
setOrderRemark(() => e)
let res = await remarkFetchData({remark:e, id: orderId.current})
if(res.success) {
- alert.success('修改成功')
+ getSaleOrderPreView()
+ alert.success('提交成功')
} else {
alert.error(res.msg)
}
@@ -113,6 +115,18 @@ import styles from './index.module.scss'
//打开地址修改
const addressRef = useRef(null)
+ //修改收货方式
+ const getShipmentMode = useCallback(() => {
+ getSaleOrderPreView()
+ }, [orderDetail])
+
+ //修改地址
+ const getAddress = useCallback(() => {
+ getSaleOrderPreView()
+ }, [orderDetail])
+
+
+
return (
{/*
@@ -120,7 +134,7 @@ import styles from './index.module.scss'
*/}
-
+
@@ -141,15 +155,13 @@ import styles from './index.module.scss'
setShowDesc(true)}>
订单备注
{
- orderRemark&&{orderRemark}||
+ orderRemark&&{orderDetail?.remark}||
填写备注
}
-
- {(orderDetail?.status == 0)&&取消订单}
- {(orderDetail?.status == 0)&& addressRef.current.changeShow()}>修改地址}
+
toPay()}>去支付
setShowDesc(false)} >
diff --git a/src/pages/orderList/components/order/index.module.scss b/src/pages/orderList/components/order/index.module.scss
index 4bba847..e453de3 100644
--- a/src/pages/orderList/components/order/index.module.scss
+++ b/src/pages/orderList/components/order/index.module.scss
@@ -118,26 +118,4 @@
border-radius: 10px;
padding: 10px 22px;
}
- .btns_list{
- display: flex;
- justify-content: flex-end;
- margin-top: 30px;
- .btns_item{
- width: 152px;
- height: 72px;
- border: 2px solid #dddddd;
- border-radius: 38px;
- text-align: center;
- line-height: 72px;
- font-size: $font_size;
- color: $color_font_three;
- &:nth-child(n+2) {
- margin-left: 32px;
- }
- }
- .end_btn{
- border: 2px solid $color_main;
- color: $color_main;
- }
- }
}
\ No newline at end of file
diff --git a/src/pages/orderList/components/order/index.tsx b/src/pages/orderList/components/order/index.tsx
index e6fc8d5..659d18c 100644
--- a/src/pages/orderList/components/order/index.tsx
+++ b/src/pages/orderList/components/order/index.tsx
@@ -1,8 +1,10 @@
+import { goLink } from "@/common/common";
import { formatHashTag, formatImgUrl, formatPriceDiv } from "@/common/fotmat";
+import OrderBtns from "@/components/orderBtns";
import { useSelector } from "@/reducers/hooks";
import { Image, Text, View } from "@tarojs/components"
import classnames from "classnames";
-import { memo, useCallback } from "react";
+import { memo, useCallback, useMemo, useRef } from "react";
import styles from './index.module.scss'
type Param = {
@@ -15,7 +17,9 @@ type Param = {
product_list: any[],
total_fabrics: number,
total_colors: number,
- total_number: number
+ total_number: number,
+ status: 0,
+ id: number
}
}
export default memo(({value}: Param) => {
@@ -28,9 +32,47 @@ export default memo(({value}: Param) => {
const standardPrice = useCallback((price, sale_mode) => {
return formatPriceDiv(price).toLocaleString() + '/' + (sale_mode == 1?'m':'kg')
}, [value])
+
+
+
+ //订单按钮按订单状态归类
+ const orderBtnsList = useRef([
+ {
+ value: [0, 1, 2, 9, 3], //取消订单按钮对应: 待接单,待配布,已配布, 待付款, 待发货
+ label: '取消订单'
+ },
+ {
+ value: [3, 9], //去付款按钮对应:待付款, 待发货
+ label: '去付款'
+ },
+ {
+ value: [3], //取消订单按钮对应: 待发货
+ label: '申请退款'
+ },
+ {
+ value: [4, 7, 8, 6], //取消订单按钮对应: 待收货, 已收货, 已完成, 已退款
+ label: '查看物流'
+ },
+ {
+ value: [4, 7, 6], //取消订单按钮对应: 待收货, 已收货, 已退款
+ label: '申请退货'
+ },
+ {
+ value: [4], //取消订单按钮对应: 待收货
+ label: '确认收货'
+ },
+ {
+ value: [4,7,8,6], //取消订单按钮对应: 待收货,已收货,已完成, 已退款
+ label: '再次购买'
+ }
+ ])
+ const orderBtnsShow = useCallback((item, status) => {
+ return item.value.includes(status)
+ },[])
+
return (
-
+ goLink('/pages/order/index', {id: value?.id})}>
{userInfo.adminUserInfo.user_name}
@@ -41,7 +83,7 @@ export default memo(({value}: Param) => {
{value?.shipment_mode_name}
-
+ goLink('/pages/order/index', {id: value?.id})}>
{value?.sale_mode_name}
{formatHashTag(value?.product_list[0].code, value?.product_list[0].name)}
@@ -61,7 +103,6 @@ export default memo(({value}: Param) => {
×{formatCount(itemColor, value.sale_mode)}条
)
-
})
}
@@ -73,12 +114,8 @@ export default memo(({value}: Param) => {
{`${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}条`}
-
- 取消订单
- 修改地址
- 修改地址
- 去付款
-
+
)
-})
\ No newline at end of file
+})
+
diff --git a/src/pages/orderList/index.tsx b/src/pages/orderList/index.tsx
index 7e446d2..8bceb49 100644
--- a/src/pages/orderList/index.tsx
+++ b/src/pages/orderList/index.tsx
@@ -100,7 +100,7 @@ export default () => {
{orderData?.list.map(item => {
- return
+ return
})}
From b93b59332b18f98abd7b7726641cb230ef6e6a07 Mon Sep 17 00:00:00 2001
From: czm <2192718639@qq.com>
Date: Fri, 27 May 2022 20:34:13 +0800
Subject: [PATCH 5/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/order.ts | 4 +-
src/api/orderPay.ts | 21 ++++++
src/common/common.ts | 15 ++--
src/common/constant.js | 4 +-
.../infiniteScroll/index.module.scss | 3 +
src/components/infiniteScroll/index.tsx | 2 +-
src/components/orderBtns/index.tsx | 35 ++++++---
src/pages/order/comfirm.tsx | 15 +++-
.../components/addressInfoDetail/index.tsx | 8 +-
.../components/amountShow/index.module.scss | 2 +-
.../components/estimatedAmount/index.tsx | 9 ++-
src/pages/order/components/kindList/index.tsx | 25 ++++++-
.../components/orderState/index.module.scss | 3 +
.../order/components/orderState/index.tsx | 17 +++--
src/pages/order/components/payment/index.tsx | 75 ++++++++++++++++---
src/pages/order/index.config.ts | 4 +-
src/pages/order/index.tsx | 36 +++++++--
.../orderList/components/order/index.tsx | 51 +++----------
src/pages/orderList/index.tsx | 18 ++++-
19 files changed, 236 insertions(+), 111 deletions(-)
create mode 100644 src/api/orderPay.ts
diff --git a/src/api/order.ts b/src/api/order.ts
index 45eb243..f723f47 100644
--- a/src/api/order.ts
+++ b/src/api/order.ts
@@ -21,11 +21,11 @@ export const SaleOrderApi = () => {
}
/**
- * 获取商城待配布订单详情
+ * 获取商城订单详情
*/
export const GetSaleOrderDetailApi = () => {
return useRequest({
- url: `/v1/mall/saleOrder/arranging`,
+ url: `/v1/mall/saleOrder/detail`,
method: "get",
})
}
diff --git a/src/api/orderPay.ts b/src/api/orderPay.ts
new file mode 100644
index 0000000..99ba9d9
--- /dev/null
+++ b/src/api/orderPay.ts
@@ -0,0 +1,21 @@
+import { useRequest } from "@/use/useHttp"
+
+/**
+ * 获取订单支付方式信息
+ */
+ export const GetOrderPayApi = () => {
+ return useRequest({
+ url: `/v1/mall/orderPayment/orderPaymentMethodInfo`,
+ method: "get",
+ })
+}
+
+/**
+ * 订单支付提交
+ */
+ export const SubmitOrderPayApi = () => {
+ return useRequest({
+ url: `/v1/mall/orderPayment/orderPaymentSubmission`,
+ method: "put",
+ })
+}
\ No newline at end of file
diff --git a/src/common/common.ts b/src/common/common.ts
index 080373b..0c814aa 100644
--- a/src/common/common.ts
+++ b/src/common/common.ts
@@ -7,20 +7,15 @@ import Qs from 'qs'
* @param params
* @param type false 跳转普通页面,true 跳转tabbar页面
*/
-export const goLink = (path = '', params = {}, type:false|true = false) => {
+type ParamLink = 'navigateTo'|'switchTab'|'reLaunch'|'redirectTo'
+export const goLink = (path = '', params = {}, way: ParamLink = 'navigateTo') => {
if(path) {
let params_str = Qs.stringify(params)
console.log('params_str::',params_str)
path = params_str?path+'?'+params_str:path
- if(!type) {
- Taro.navigateTo({
- url: path
- })
- } else {
- Taro.switchTab({
- url: path
- })
- }
+ console.log('path::', way)
+ Taro[way]({url: path})
+
}
}
diff --git a/src/common/constant.js b/src/common/constant.js
index f62112f..861155e 100644
--- a/src/common/constant.js
+++ b/src/common/constant.js
@@ -8,9 +8,9 @@
// export const BASE_URL = `http://192.168.1.30:40001/lymarket` // 发
// export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境
// export const BASE_URL = `https://www.zzfzyc.com/lymarket` // 正式环境
-// export const BASE_URL = `http://192.168.1.4:40001/lymarket` // 王霞
+export const BASE_URL = `http://192.168.1.4:40001/lymarket` // 王霞
// export const BASE_URL = `http://192.168.1.224:50002/lymarket` // 添
-export const BASE_URL = `http://192.168.1.15:50001/lymarket` // 杰
+// export const BASE_URL = `http://192.168.1.15:50001/lymarket` // 杰
// CDN
// 生成密钥
diff --git a/src/components/infiniteScroll/index.module.scss b/src/components/infiniteScroll/index.module.scss
index c92bd1f..aab1d77 100644
--- a/src/components/infiniteScroll/index.module.scss
+++ b/src/components/infiniteScroll/index.module.scss
@@ -11,6 +11,9 @@
display: flex;
align-items: center;
}
+ .noMore{
+ padding-top: 20px;
+ }
}
.scrollViewCon {
// height: 100%;
diff --git a/src/components/infiniteScroll/index.tsx b/src/components/infiniteScroll/index.tsx
index 26ab828..cb22671 100644
--- a/src/components/infiniteScroll/index.tsx
+++ b/src/components/infiniteScroll/index.tsx
@@ -93,7 +93,7 @@ export default memo(({
{
(statusMore == 2)&&加载中||
- 没有更多数据了
+ 没有更多数据了
}
diff --git a/src/components/orderBtns/index.tsx b/src/components/orderBtns/index.tsx
index 53e33a1..3cc4690 100644
--- a/src/components/orderBtns/index.tsx
+++ b/src/components/orderBtns/index.tsx
@@ -6,38 +6,46 @@ import { useCallback, useRef, memo } from "react"
import styles from './index.module.scss'
type Param = {
- status?: number //订单状态
- orderId?: number //订单id
+ status?: number, //订单状态
+ orderId: number, //订单id
+ onClick?: (val: number) => void //点击后触发的事件,返回订单状态
}
-export default memo(({status = 0, orderId = 0}:Param) => {
+export default memo(({status = 0, orderId = 0, onClick}:Param) => {
//订单按钮按订单状态归类
const orderBtnsList = useRef([
{
- value: [0, 1, 2, 9, 3], //取消订单按钮对应: 待接单,待配布,已配布, 待付款, 待发货
+ id: 1,
+ value: [0, 1, 2, 3, 4], //取消订单按钮对应: 待接单,待配布,已配布, 待付款, 待发货
label: '取消订单'
},
{
- value: [3, 9], //去付款按钮对应:待付款, 待发货
+ id: 2,
+ value: [3, 4], //去付款按钮对应:待付款, 待发货
label: '去付款'
},
{
- value: [3], //取消订单按钮对应: 待发货
+ id: 3,
+ value: [4], //取消订单按钮对应: 待发货
label: '申请退款'
},
{
- value: [4, 7, 8, 6], //取消订单按钮对应: 待收货, 已收货, 已完成, 已退款
+ id: 4,
+ value: [5, 6, 7, 8], //取消订单按钮对应: 待收货, 已收货, 已完成, 已退款
label: '查看物流'
},
{
- value: [4, 7, 6], //取消订单按钮对应: 待收货, 已收货, 已退款
+ id: 5,
+ value: [5, 6, 8], //取消订单按钮对应: 待收货, 已收货, 已退款
label: '申请退货'
},
{
- value: [4], //取消订单按钮对应: 待收货
+ id: 6,
+ value: [5], //取消订单按钮对应: 待收货
label: '确认收货'
},
{
- value: [4,7,8,6], //取消订单按钮对应: 待收货,已收货,已完成, 已退款
+ id: 7,
+ value: [5,6,7,8], //取消订单按钮对应: 待收货,已收货,已完成, 已退款
label: '再次购买'
}
])
@@ -47,7 +55,9 @@ export default memo(({status = 0, orderId = 0}:Param) => {
//点击按钮操作
const submitBtns = (val) => {
- if( val == 0 ) cancelOrder()
+ (val == 1)&&cancelOrder(); //取消订单按钮
+ (val == 2)&&onClick?.(val); //去付款按钮
+
}
//取消订单
@@ -60,6 +70,7 @@ export default memo(({status = 0, orderId = 0}:Param) => {
let res = await cancelFetchData({id: orderId})
if(res.success) {
alert.success('取消成功')
+ onClick?.(1)
} else {
alert.none(res.msg)
}
@@ -73,7 +84,7 @@ export default memo(({status = 0, orderId = 0}:Param) => {
return (
{orderBtnsList.current.map((item, index) =>
- orderBtnsShow(item, status)&& submitBtns(index)}>{item.label}
+ orderBtnsShow(item, status)&& submitBtns(item.id)}>{item.label}
)}
)
diff --git a/src/pages/order/comfirm.tsx b/src/pages/order/comfirm.tsx
index 87a0048..3dd3e12 100644
--- a/src/pages/order/comfirm.tsx
+++ b/src/pages/order/comfirm.tsx
@@ -56,6 +56,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
useEffect(() => {
if(preViewOrder) {
formatData()
+ getDataList()
//当有默认地址时设置默认地址id
preViewOrder.default_address&&setSubmitOrderData((val) => ({...val, address_id:preViewOrder.default_address.id}))
}
@@ -76,7 +77,6 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
})
}
const formatPreViewOrderMemo = useMemo(() => {
- console.log('formatPreViewOrder::',formatPreViewOrder)
return formatPreViewOrder
}, [formatPreViewOrder])
@@ -97,6 +97,17 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
return null
}, [preViewOrder])
+ //获取提交格式数据列表
+ const getDataList = () => {
+ let list:{shopping_cart_product_color_id:number}[] = []
+ preViewOrder.product_list?.map(item => {
+ item.product_colors?.map(colorItem => {
+ list.push({shopping_cart_product_color_id:colorItem.id})
+ })
+ })
+ setSubmitOrderData((val) => ({...val, list}))
+ }
+
//获取地址
const getAddress = (e) => {
setSubmitOrderData((val) => ({...val, address_id:e.id}))
@@ -138,7 +149,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
if (res.confirm) {
const res = await saleOrderFetchData(submitOrderData)
if(res.success) {
- goLink('/pages/order/index',{id: res.data.id})
+ goLink('/pages/order/index',{id: res.data.id}, 'redirectTo')
} else {
alert.none(res.msg)
}
diff --git a/src/pages/order/components/addressInfoDetail/index.tsx b/src/pages/order/components/addressInfoDetail/index.tsx
index fe9b337..7290ae6 100644
--- a/src/pages/order/components/addressInfoDetail/index.tsx
+++ b/src/pages/order/components/addressInfoDetail/index.tsx
@@ -66,7 +66,7 @@ export default memo(forwardRef(({onSelect, onChangeShipmentMode, defaultValue =
alert.loading('正在修改')
const res = await shipmentModeFetchData({id: orderId, shipment_mode:value})
if(res.success) {
- alert.success('修改成功')
+ alert.success('收货方式修改成功')
onChangeShipmentMode?.(value)
setReceivingStatus(value)
} else {
@@ -78,12 +78,12 @@ export default memo(forwardRef(({onSelect, onChangeShipmentMode, defaultValue =
const {fetchData: addressFetchData} = EditSaleOrderAddressApi()
const getAddress = async (value) => {
alert.loading('正在修改')
- setShowAddressList(() => false)
- setUserInfo(() => value)
const res = await addressFetchData({id: orderId, address_id: value.id})
if(res.success) {
- alert.success('修改成功')
+ alert.success('地址修改成功')
onSelect?.(value)
+ setShowAddressList(() => false)
+ setUserInfo(() => value)
} else {
alert.none(res.msg)
}
diff --git a/src/pages/order/components/amountShow/index.module.scss b/src/pages/order/components/amountShow/index.module.scss
index 58368a8..647e203 100644
--- a/src/pages/order/components/amountShow/index.module.scss
+++ b/src/pages/order/components/amountShow/index.module.scss
@@ -6,7 +6,7 @@
font-size: $font_size_min;
}
&:nth-child(2) {
- font-size: 26px;
+ font-size: $font_size;
}
&:nth-child(3) {
font-size: $font_size_medium;
diff --git a/src/pages/order/components/estimatedAmount/index.tsx b/src/pages/order/components/estimatedAmount/index.tsx
index 0292f6b..04bc49a 100644
--- a/src/pages/order/components/estimatedAmount/index.tsx
+++ b/src/pages/order/components/estimatedAmount/index.tsx
@@ -8,20 +8,21 @@ type Param = {
style?: Object,
number?: number,
title?: string,
- status?: true|false, //true 加大加深
+ titleStatus?: true|false, //true 标题加大加深
+ numberStatus?: 0|1|2, //数字尺寸
}
-export default memo(({style, number = 0, status = true, title = ''}:Param) => {
+export default memo(({style, number = 0, titleStatus = true, title = '', numberStatus = 1}:Param) => {
return (
<>
-
+
{title}
{/* 123123123121212312312312312 */}
-
+
>
)
diff --git a/src/pages/order/components/kindList/index.tsx b/src/pages/order/components/kindList/index.tsx
index db30c54..e6ea05a 100644
--- a/src/pages/order/components/kindList/index.tsx
+++ b/src/pages/order/components/kindList/index.tsx
@@ -5,17 +5,22 @@ import EstimatedAmount from "../estimatedAmount"
import styles from './index.module.scss'
type OrderParam = {
- estimate_amount: number,
+ estimate_amount: number, //预估金额
list: any[],
sale_mode: number,
sale_mode_name: string,
unit: string,
total_colors: number,
total_fabrics: number,
- total_number: number
+ total_number: number,
+ status: number, //订单状态
+ total_sale_price: number, //销售金额
+ total_should_collect_money: number, //应收金额
+ total_weight_error_discount: number, //空差优惠
+
}
-export default memo(({value}:{value:OrderParam|null}) => {
+export default memo(({value}:{value?:OrderParam}) => {
//对应数量
const formatCount = useCallback((item) => {
return value?.sale_mode == 0? item.roll : Number(item.length / 100)
@@ -30,6 +35,18 @@ export default memo(({value}:{value:OrderParam|null}) => {
if(value)
return `${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}${value?.unit}`
}, [value])
+
+ const priceConDom = useMemo(() => {
+ return (
+ <>
+ {(value&&value.status < 3)&&}
+ {(value&&value.status >= 3)&&}
+ {(value&&value.status >= 3)&&}
+ {(value&&value.status >= 3)&&}
+ >
+ )
+ }, [value])
+
return (
<>
{numText}
@@ -63,7 +80,7 @@ export default memo(({value}:{value:OrderParam|null}) => {
})
}
-
+ {priceConDom}
>
diff --git a/src/pages/order/components/orderState/index.module.scss b/src/pages/order/components/orderState/index.module.scss
index c1aef8a..90dbcbb 100644
--- a/src/pages/order/components/orderState/index.module.scss
+++ b/src/pages/order/components/orderState/index.module.scss
@@ -16,6 +16,9 @@
.order_status_item{
position: relative;
padding-left: 50px;
+ &:nth-last-child(n+2) {
+ padding-bottom: 30px;
+ }
.order_status_tail_end, .order_status_tail{
width: 15px;
height: 15px;
diff --git a/src/pages/order/components/orderState/index.tsx b/src/pages/order/components/orderState/index.tsx
index d710730..0ba593d 100644
--- a/src/pages/order/components/orderState/index.tsx
+++ b/src/pages/order/components/orderState/index.tsx
@@ -1,5 +1,5 @@
import { Image, Text, View } from "@tarojs/components"
-import { memo, useState } from "react"
+import { memo, useMemo, useState } from "react"
import styles from './index.module.scss'
import classnames from "classnames";
import { formatDateTime, formatImgUrl } from "@/common/fotmat";
@@ -14,23 +14,26 @@ export default memo(({list = []}:{list?:Param[]}) => {
const changeMore = () => {
setShowMore(() => !showMore)
}
+ const dataList = useMemo(() => {
+ return list.reverse()
+ }, [list])
return (
<>
- {(list.length > 0)&&
+ {(dataList.length > 0)&&
- {list.map((item, index) =>
- {(list.length > 1)&&}
- {(list.length != (index + 1))&&}
+ {dataList.map((item, index) =>
+ {(dataList.length > 1)&&}
+ {(dataList.length != (index + 1))&&}
{item.status}
{formatDateTime(item.time)}
- {item.tag}
+ {/* {item.tag} */}
{item.desc}
)}
- {(list.length > 2) && changeMore()}>
+ {(dataList.length > 2) && changeMore()}>
{showMore&&'收起详情'||'点击查看详情'}
}
diff --git a/src/pages/order/components/payment/index.tsx b/src/pages/order/components/payment/index.tsx
index 65e5c71..a354b1f 100644
--- a/src/pages/order/components/payment/index.tsx
+++ b/src/pages/order/components/payment/index.tsx
@@ -1,5 +1,5 @@
import { Text, View } from "@tarojs/components";
-import { memo, useState } from "react";
+import { memo, useEffect, useState } from "react";
import AmountShow from "../amountShow";
import classnames from "classnames";
import styles from './index.module.scss'
@@ -8,12 +8,28 @@ import MCheckbox from "@/components/checkbox";
import Popup from "@/components/popup";
import OfflinePay from "../offlinePay";
import ScanPay from "../scanPay";
+import { GetOrderPayApi, SubmitOrderPayApi } from "@/api/orderPay";
+import { formatPriceDiv } from "@/common/fotmat";
+import {alert} from "@/common/common"
type Param = {
show?: true|false,
- onClose?: () => void
+ onClose?: () => void,
+ orderId?: number //应付单id
}
-export default memo(({show = false, onClose}:Param) => {
+
+type PayInfo = {
+ amount: string
+}
+
+type PayStatus = 0|1|2|3|4|null //0:预存款, 1:账期,2:线下汇款, 3:扫码支付, 4:货到付款
+export default memo(({show = false, onClose, orderId = 0}:Param) => {
+
+ //提交参数
+ const [submitData, setSubmitData] = useState<{id:number, payment_method: PayStatus}>({
+ id:0,
+ payment_method: null
+ })
//线下付款
const [offlinePayShow, setofflinePayShow] = useState(false)
@@ -28,6 +44,45 @@ export default memo(({show = false, onClose}:Param) => {
setScanPayShow(true)
onClose?.()
}
+
+ //获取支付方式数据
+ const [payInfo, setPayInfo] = useState()
+ const {fetchData: orderFetchData} = GetOrderPayApi()
+ const getOrderPay = async () => {
+ let {data} = await orderFetchData({id: orderId})
+ setPayInfo(() => data)
+ }
+ useEffect(() => {
+ if(show&&orderId)
+ setSubmitData((val) => ({...val, id:orderId}))
+ getOrderPay()
+ }, [show, orderId])
+
+ //预存款选择
+ const advanceSelectData = (val) => {
+ setSubmitData((e) => ({...e, payment_method:val}))
+ }
+ //账期选择
+ const periodSelectData = (val) => {
+ setSubmitData((e) => ({...e, payment_method:val}))
+ }
+
+ //提交支付
+ const {fetchData: submitFetchData} = SubmitOrderPayApi()
+ const submitPay = async () => {
+ if(submitData.payment_method === null) {
+ alert.error('请选择支付方式')
+ return false
+ }
+ alert.loading('正在支付')
+ let res = await submitFetchData(submitData)
+ if(res.success) {
+ alert.success('支付成功')
+ } else {
+ alert.none(res.msg)
+ }
+ }
+
return (
@@ -35,7 +90,7 @@ export default memo(({show = false, onClose}:Param) => {
订单支付
-
+
@@ -59,19 +114,19 @@ export default memo(({show = false, onClose}:Param) => {
预存款
- 金额不足,剩余 ¥0.00
+ 金额不足,剩余 ¥{payInfo?.advance_deposit_balance}
- console.log()} onClose={() =>console.log()}/>
+ advanceSelectData(0)} onClose={() => advanceSelectData(null)}/>
- x天账期
+ {payInfo?.account_period}天账期
- 可用额度 ¥3,000.00
+ 可用额度 ¥{payInfo?.account_period_credit_available_line}
- console.log()} onClose={() =>console.log()}/>
+ periodSelectData(1)} onClose={() => periodSelectData(null)}/>
@@ -93,7 +148,7 @@ export default memo(({show = false, onClose}:Param) => {
- 确认交易
+ 确认交易
setofflinePayShow(false)}/>
diff --git a/src/pages/order/index.config.ts b/src/pages/order/index.config.ts
index d88c826..b518f53 100644
--- a/src/pages/order/index.config.ts
+++ b/src/pages/order/index.config.ts
@@ -1,3 +1,5 @@
export default {
- navigationBarTitleText: '订单详情'
+ navigationBarTitleText: '订单详情',
+ enablePullDownRefresh: true,
+ backgroundTextStyle: 'dark'
}
diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx
index cc718f3..5c9d498 100644
--- a/src/pages/order/index.tsx
+++ b/src/pages/order/index.tsx
@@ -3,17 +3,20 @@ import {
EditSaleOrderRemarkApi,
CancelOrderApi
} from "@/api/order";
+import { GetOrderPayApi } from "@/api/orderPay";
import { alert, goLink } from "@/common/common";
import { formatDateTime, formatPriceDiv } from "@/common/fotmat";
import OrderBtns from "@/components/orderBtns";
import Popup from "@/components/popup";
import SearchInput from "@/components/searchInput";
import { Text, Textarea, View } from "@tarojs/components"
-import Taro, { useDidShow, useRouter } from "@tarojs/taro";
+import Taro, { useDidShow, usePullDownRefresh, useRouter } from "@tarojs/taro";
import classnames from "classnames";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
+import order from "../orderList/components/order";
import AddressInfoDetail from "./components/addressInfoDetail";
import KindList from "./components/kindList";
+import orderState from "./components/orderState";
import OrderState from "./components/orderState";
import Payment from "./components/payment";
import Remark from "./components/remark";
@@ -37,7 +40,8 @@ import styles from './index.module.scss'
let res = await getOrderFetchData({id: orderId.current})
setOrderDetail(res.data)
setOrderRemark(res.data.remark)
- }
+ }
+ Taro.stopPullDownRefresh()
}
//监听获取到的数据
@@ -57,7 +61,11 @@ import styles from './index.module.scss'
total_number: orderDetail.total_number, //总数量
total_fabrics: orderDetail.total_fabrics, //面料数量
unit: orderDetail.sale_mode == 0?'条':'m', //单位
- list: orderDetail.product_list
+ list: orderDetail.product_list,
+ status: orderDetail.status, //订单状态
+ total_sale_price: orderDetail.total_sale_price, //销售金额
+ total_should_collect_money: orderDetail.total_should_collect_money, //应收金额
+ total_weight_error_discount: orderDetail.total_weight_error_discount, //空差优惠
})
}
const formatPreViewOrderMemo = useMemo(() => {
@@ -125,7 +133,23 @@ import styles from './index.module.scss'
getSaleOrderPreView()
}, [orderDetail])
+ //获取底部按钮点击, 获取按钮状态
+ const orderStateClick = useCallback((val) => {
+ console.log('val::', val)
+ if(val == 1) {
+ //取消订单
+ getSaleOrderPreView()
+ }
+ if(val == 2) {
+ //待付款
+ toPay()
+ }
+ }, [orderDetail])
+ //页面下拉刷新
+ usePullDownRefresh(() => {
+ getSaleOrderPreView()
+ })
return (
@@ -161,13 +185,13 @@ import styles from './index.module.scss'
-
- toPay()}>去支付
+
+ {/* toPay()}>去支付 */}
setShowDesc(false)} >
getRemark(e)}/>
- setPayMentShow(false)}/>
+ setPayMentShow(false)} orderId={orderDetail?.should_collect_order_id}/>
)
diff --git a/src/pages/orderList/components/order/index.tsx b/src/pages/orderList/components/order/index.tsx
index 659d18c..7ad9512 100644
--- a/src/pages/orderList/components/order/index.tsx
+++ b/src/pages/orderList/components/order/index.tsx
@@ -20,9 +20,10 @@ type Param = {
total_number: number,
status: 0,
id: number
- }
+ },
+ onClickBtn?: (val:number) => void
}
-export default memo(({value}: Param) => {
+export default memo(({value, onClickBtn}: Param) => {
const userInfo = useSelector(state => state.userInfo)
//对应数量
const formatCount = useCallback((item, sale_mode) => {
@@ -33,49 +34,17 @@ export default memo(({value}: Param) => {
return formatPriceDiv(price).toLocaleString() + '/' + (sale_mode == 1?'m':'kg')
}, [value])
-
-
- //订单按钮按订单状态归类
- const orderBtnsList = useRef([
- {
- value: [0, 1, 2, 9, 3], //取消订单按钮对应: 待接单,待配布,已配布, 待付款, 待发货
- label: '取消订单'
- },
- {
- value: [3, 9], //去付款按钮对应:待付款, 待发货
- label: '去付款'
- },
- {
- value: [3], //取消订单按钮对应: 待发货
- label: '申请退款'
- },
- {
- value: [4, 7, 8, 6], //取消订单按钮对应: 待收货, 已收货, 已完成, 已退款
- label: '查看物流'
- },
- {
- value: [4, 7, 6], //取消订单按钮对应: 待收货, 已收货, 已退款
- label: '申请退货'
- },
- {
- value: [4], //取消订单按钮对应: 待收货
- label: '确认收货'
- },
- {
- value: [4,7,8,6], //取消订单按钮对应: 待收货,已收货,已完成, 已退款
- label: '再次购买'
- }
- ])
- const orderBtnsShow = useCallback((item, status) => {
- return item.value.includes(status)
- },[])
+ //点击订单按钮
+ const orderBtnsClick = useCallback((status) => {
+ onClickBtn?.(status)
+ }, [value])
return (
goLink('/pages/order/index', {id: value?.id})}>
-
- {userInfo.adminUserInfo.user_name}
+
+ {userInfo?.adminUserInfo?.user_name}
订单号:{value?.order_no}
@@ -114,7 +83,7 @@ export default memo(({value}: Param) => {
{`${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}条`}
-
+
)
})
diff --git a/src/pages/orderList/index.tsx b/src/pages/orderList/index.tsx
index 8bceb49..04aedfe 100644
--- a/src/pages/orderList/index.tsx
+++ b/src/pages/orderList/index.tsx
@@ -1,7 +1,7 @@
import Search from "@/components/search"
import useLogin from "@/use/useLogin"
import { Image, ScrollView, Text, View } from "@tarojs/components"
-import Taro, { useDidShow, useRouter } from "@tarojs/taro"
+import Taro, { useDidShow, usePullDownRefresh, useRouter } from "@tarojs/taro"
import { useCallback, useEffect, useMemo, useRef, useState } from "react"
import {ORDER_STATUS} from '@/common/enum'
import styles from './index.module.scss'
@@ -44,7 +44,6 @@ export default () => {
const getOrderList = async () => {
let res = await listFetchData(getFilterData(searchField))
setOrderData({list: res.data.list, total: res.data.total})
- Taro.stopPullDownRefresh()
}
@@ -82,6 +81,17 @@ export default () => {
setOrderData(() => ({list:[], total:0}))
setSearchField((val) => ({...val, name:e, size:10}))
}, [])
+
+ const clickOrderBtn = useCallback((state) => {
+ getOrderList()
+ }, [orderData])
+
+ //列表下拉刷新
+ const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false)
+ const getRefresherRefresh = async () => {
+ pageNum.current.size = 1
+ setRefresherTriggeredStatus(true)
+ }
return (
@@ -98,9 +108,9 @@ export default () => {
-
+
{orderData?.list.map(item => {
- return
+ return
})}
From 55cbaac8f5bdca9f50dca9163af83af3684049f9 Mon Sep 17 00:00:00 2001
From: czm <2192718639@qq.com>
Date: Mon, 30 May 2022 20:32:47 +0800
Subject: [PATCH 6/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/orderBtns/index.tsx | 14 ++-
src/pages/details/index.tsx | 4 +-
src/pages/order/components/payment/index.tsx | 23 ++--
src/pages/order/components/remark/index.tsx | 2 +-
src/pages/order/index.module.scss | 1 +
src/pages/order/index.tsx | 13 ++-
.../orderStatusList/index.module.scss | 18 +++
.../components/orderStatusList/index.tsx | 46 ++++++++
src/pages/orderList/index.tsx | 17 +--
src/use/useCheckAuthorize.tsx | 2 +-
src/use/useHttp.ts | 7 +-
src/use/useLogin.ts | 69 +++---------
src/use/useLoginRequest.ts | 106 ++++++++++++++++++
src/use/useManualPullDownRefresh.ts | 24 ----
14 files changed, 239 insertions(+), 107 deletions(-)
create mode 100644 src/pages/orderList/components/orderStatusList/index.module.scss
create mode 100644 src/pages/orderList/components/orderStatusList/index.tsx
create mode 100644 src/use/useLoginRequest.ts
delete mode 100644 src/use/useManualPullDownRefresh.ts
diff --git a/src/components/orderBtns/index.tsx b/src/components/orderBtns/index.tsx
index 3cc4690..efd97b1 100644
--- a/src/components/orderBtns/index.tsx
+++ b/src/components/orderBtns/index.tsx
@@ -8,9 +8,12 @@ import styles from './index.module.scss'
type Param = {
status?: number, //订单状态
orderId: number, //订单id
+ payModel: number, //支付方式
+ realPayPrice: number, //实付金额
+ pendingPayPrice: number, //待付金额
onClick?: (val: number) => void //点击后触发的事件,返回订单状态
}
-export default memo(({status = 0, orderId = 0, onClick}:Param) => {
+export default memo(({status = 0, orderId = 0, onClick, realPayPrice = 0, pendingPayPrice = 0}:Param) => {
//订单按钮按订单状态归类
const orderBtnsList = useRef([
{
@@ -49,15 +52,22 @@ export default memo(({status = 0, orderId = 0, onClick}:Param) => {
label: '再次购买'
}
])
+ //判断是否显示该按钮
const orderBtnsShow = useCallback((item, status) => {
+ if(item.id == 1) {
+ return( realPayPrice == 0 && status <= 4) //在代发货之前没有付过款
+ }
+ if(item.id == 2) {
+ return( pendingPayPrice != 0 && status <= 4) //在代发货之前没有付完款
+ }
return item.value.includes(status)
+
},[])
//点击按钮操作
const submitBtns = (val) => {
(val == 1)&&cancelOrder(); //取消订单按钮
(val == 2)&&onClick?.(val); //去付款按钮
-
}
//取消订单
diff --git a/src/pages/details/index.tsx b/src/pages/details/index.tsx
index 75f1899..c845f9e 100644
--- a/src/pages/details/index.tsx
+++ b/src/pages/details/index.tsx
@@ -8,7 +8,7 @@ import ShopCart from '@/components/shopCart';
import Preview,{colorItem} from './components/preview';
import styles from './index.module.scss'
import { useEffect, useMemo, useState } from 'react';
-import {formatHashTag} from '@/common/fotmat'
+import {formatHashTag, formatImgUrl} from '@/common/fotmat'
import useManualPullDownRefresh from '@/use/useManualPullDownRefresh';
import { goLink } from '@/common/common';
import useUserInfo from '@/use/useUserInfo';
@@ -147,7 +147,7 @@ export default (props:params) => {
{productInfo?.product_color_list?.map(item => {
return getColorItem(item)}>
-
+
{item.code}
diff --git a/src/pages/order/components/payment/index.tsx b/src/pages/order/components/payment/index.tsx
index a354b1f..3d6f42a 100644
--- a/src/pages/order/components/payment/index.tsx
+++ b/src/pages/order/components/payment/index.tsx
@@ -1,5 +1,5 @@
import { Text, View } from "@tarojs/components";
-import { memo, useEffect, useState } from "react";
+import { memo, useEffect, useMemo, useState } from "react";
import AmountShow from "../amountShow";
import classnames from "classnames";
import styles from './index.module.scss'
@@ -15,7 +15,8 @@ import {alert} from "@/common/common"
type Param = {
show?: true|false,
onClose?: () => void,
- orderId?: number //应付单id
+ orderId?: number, //应付单id
+ onSubmitSuccess?: () => void //支付成功
}
type PayInfo = {
@@ -23,7 +24,7 @@ type PayInfo = {
}
type PayStatus = 0|1|2|3|4|null //0:预存款, 1:账期,2:线下汇款, 3:扫码支付, 4:货到付款
-export default memo(({show = false, onClose, orderId = 0}:Param) => {
+export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param) => {
//提交参数
const [submitData, setSubmitData] = useState<{id:number, payment_method: PayStatus}>({
@@ -78,11 +79,19 @@ export default memo(({show = false, onClose, orderId = 0}:Param) => {
let res = await submitFetchData(submitData)
if(res.success) {
alert.success('支付成功')
+ onSubmitSuccess?.()
} else {
alert.none(res.msg)
}
}
+ const advance_payment = useMemo(() => {
+ const price = formatPriceDiv(payInfo?.should_collect_money - payInfo?.amount_paid)
+ return (
+ {(payInfo?.advance_deposit_balance < price)&&'余额不足,' }剩余 ¥{payInfo?.advance_deposit_balance}
+ )
+ }, [payInfo])
+
return (
@@ -90,7 +99,7 @@ export default memo(({show = false, onClose, orderId = 0}:Param) => {
订单支付
-
+
@@ -99,11 +108,11 @@ export default memo(({show = false, onClose, orderId = 0}:Param) => {
订单金额
- ¥6,001.00
+ ¥{formatPriceDiv(payInfo?.should_collect_money)}
已付金额
- ¥1,801.00
+ ¥{formatPriceDiv(payInfo?.amount_paid)}
@@ -114,7 +123,7 @@ export default memo(({show = false, onClose, orderId = 0}:Param) => {
预存款
- 金额不足,剩余 ¥{payInfo?.advance_deposit_balance}
+ {advance_payment}
advanceSelectData(0)} onClose={() => advanceSelectData(null)}/>
diff --git a/src/pages/order/components/remark/index.tsx b/src/pages/order/components/remark/index.tsx
index 67d6bb6..14d981b 100644
--- a/src/pages/order/components/remark/index.tsx
+++ b/src/pages/order/components/remark/index.tsx
@@ -27,7 +27,7 @@ export default ({onBlur, onSave}:Param) => {
}
return (
- 添加备注
+ 编辑备注
{descData.number}/{descData.count}
diff --git a/src/pages/order/index.module.scss b/src/pages/order/index.module.scss
index 662cb6e..a032fbe 100644
--- a/src/pages/order/index.module.scss
+++ b/src/pages/order/index.module.scss
@@ -52,6 +52,7 @@
color: $color_font_two;
margin-right: 10px;
flex:1;
+ word-break:break-all;
}
.order_desc_text_hint{
text-align: right;
diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx
index 5c9d498..c5043d5 100644
--- a/src/pages/order/index.tsx
+++ b/src/pages/order/index.tsx
@@ -151,6 +151,17 @@ import styles from './index.module.scss'
getSaleOrderPreView()
})
+ //支付成功
+ const onPaySuccess = useCallback(() => {
+ getSaleOrderPreView()
+ closePayShow()
+ }, [orderDetail])
+
+ //关闭支付弹窗
+ const closePayShow = useCallback(() => {
+ setPayMentShow(() => false)
+ }, [orderDetail])
+
return (
{/*
@@ -191,7 +202,7 @@ import styles from './index.module.scss'
setShowDesc(false)} >
getRemark(e)}/>
- setPayMentShow(false)} orderId={orderDetail?.should_collect_order_id}/>
+
)
diff --git a/src/pages/orderList/components/orderStatusList/index.module.scss b/src/pages/orderList/components/orderStatusList/index.module.scss
new file mode 100644
index 0000000..47de83d
--- /dev/null
+++ b/src/pages/orderList/components/orderStatusList/index.module.scss
@@ -0,0 +1,18 @@
+.order_status_list{
+ font-size: $font_size;
+ color: #9E9E9E;
+ margin-top: 20px;
+ .order_status_item{
+ padding: 20px;
+ box-sizing: border-box;
+ }
+ .selected{
+ font-weight: 700;
+ color: #000;
+ border-bottom: 4px solid #707070;
+ }
+ .order_list_scroll{
+ white-space: nowrap;
+ display: flex;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/orderList/components/orderStatusList/index.tsx b/src/pages/orderList/components/orderStatusList/index.tsx
new file mode 100644
index 0000000..3e12f6f
--- /dev/null
+++ b/src/pages/orderList/components/orderStatusList/index.tsx
@@ -0,0 +1,46 @@
+import { ScrollView, View } from "@tarojs/components"
+import { memo, useEffect, useState } from "react"
+import styles from './index.module.scss'
+import classnames from "classnames";
+
+type Param = {
+ list: {id: number, name: string}[],
+ defaultId?: number|null,
+ onSelect?: (val: number) => void
+}
+export default memo(({list = [], defaultId = null, onSelect}: Param) => {
+ const [selectInfo, setSelectInfo] = useState({
+ selected: -1, //当前选中的id
+ tabId: '', //需要滚动到的id
+ })
+ useEffect(() => {
+ if(defaultId) {
+ const index = list?.findIndex(item => {
+ console.log(item.id, defaultId)
+ return item.id == defaultId
+ })
+ if(index !== -1) {
+ const num = index > 0?( index - 1) : 0
+ setSelectInfo((e) => ({...e, tabId:list[num].id.toString()}))
+ }
+ }
+ }, [defaultId])
+ const clickEvent = ({item, index}: {item:any, index:number}) => {
+ const num = index > 0?( index - 1) : 0
+ setSelectInfo((e) => ({...e, tabId:list[num].id.toString(), selected: item.id}))
+ onSelect?.(item.id)
+ }
+
+ return (
+
+
+
+ {list.map((item, index) => {
+ return clickEvent({item, index})} className={classnames(styles.order_status_item, (selectInfo.selected==item.id)&&styles.selected)}>{item.name}
+ })}
+
+
+
+ )
+})
+
diff --git a/src/pages/orderList/index.tsx b/src/pages/orderList/index.tsx
index 04aedfe..866597b 100644
--- a/src/pages/orderList/index.tsx
+++ b/src/pages/orderList/index.tsx
@@ -3,14 +3,13 @@ import useLogin from "@/use/useLogin"
import { Image, ScrollView, Text, View } from "@tarojs/components"
import Taro, { useDidShow, usePullDownRefresh, useRouter } from "@tarojs/taro"
import { useCallback, useEffect, useMemo, useRef, useState } from "react"
-import {ORDER_STATUS} from '@/common/enum'
import styles from './index.module.scss'
import classnames from "classnames";
import Order from "./components/order"
import InfiniteScroll from "@/components/infiniteScroll"
import {GetOrderStatusListApi, GetOrderListApi} from '@/api/order'
import { dataLoadingStatus, getFilterData } from "@/common/util"
-import Tabs from "@/components/tabs"
+import OrderStatusList from "./components/orderStatusList"
export default () => {
const {checkLogin} = useLogin()
@@ -44,6 +43,7 @@ export default () => {
const getOrderList = async () => {
let res = await listFetchData(getFilterData(searchField))
setOrderData({list: res.data.list, total: res.data.total})
+ setRefresherTriggeredStatus(() => false)
}
@@ -91,24 +91,17 @@ export default () => {
const getRefresherRefresh = async () => {
pageNum.current.size = 1
setRefresherTriggeredStatus(true)
+ setSearchField((val) => ({...val, size:10}))
}
return (
-
-
-
- {statusList.map(item => {
- return changeStatus(item.id)} className={classnames(styles.order_status_item, (searchField.status==item.id)&&styles.selected)}>{item.name}
- })}
-
-
-
+
-
+
{orderData?.list.map(item => {
return
})}
diff --git a/src/use/useCheckAuthorize.tsx b/src/use/useCheckAuthorize.tsx
index 05ae81f..d0ece73 100644
--- a/src/use/useCheckAuthorize.tsx
+++ b/src/use/useCheckAuthorize.tsx
@@ -8,7 +8,7 @@ type Param = {
msg: string //检查不通过时警告
}
export default ({scope, msg}: Param) => {
- //检查授权
+ //这个hook微信授权检查授权
const check = useCallback(() => {
return new Promise((reslove, reject) => {
Taro.getSetting({
diff --git a/src/use/useHttp.ts b/src/use/useHttp.ts
index 74ee064..ead24a2 100644
--- a/src/use/useHttp.ts
+++ b/src/use/useHttp.ts
@@ -5,6 +5,8 @@ import { useEffect, useRef, useState } from 'react'
import {BASE_URL, WX_APPID} from '@/common/constant'
import useUserInfo from "./useUserInfo"
import qs from 'qs';
+import useLogin from './useLogin';
+import useLoginRequest from './useLoginRequest';
type Params = {
@@ -122,6 +124,7 @@ export const useRequest = (options:option = {
const stateRef = useRef({...params})
const [state, setState] = useState({...stateRef.current})
const {removeToken, removeSessionKey} = useUserInfo()
+ const {login} = useLoginRequest()
useEffect(() => {
console.log('变化::', state.loading)
@@ -176,9 +179,7 @@ export const useRequest = (options:option = {
if (statusCode === 401) {
removeToken()
removeSessionKey()
- // Taro.reLaunch({
- // url: router.path +'?' + qs.stringify(router.params)
- // })
+ login()
} else {
Taro.showToast({
title: `错误:${showStatus(statusCode)}`,
diff --git a/src/use/useLogin.ts b/src/use/useLogin.ts
index 45847ef..aa662d7 100644
--- a/src/use/useLogin.ts
+++ b/src/use/useLogin.ts
@@ -1,69 +1,31 @@
import { useEffect, useState } from "react"
-import { WX_APPID } from "@/common/constant"
+import {BASE_URL, WX_APPID } from "@/common/constant"
import useUserInfo from "./useUserInfo"
import Taro, { useRouter } from "@tarojs/taro"
import { LoginApi } from "@/api/login"
import { GetWxUserInfoApi, GetAdminUserInfoApi, GetPhoneNumberApi } from "@/api/user"
import qs from 'qs';
+import useLoginRequest from "./useLoginRequest"
export default () => {
- const {setToken, setSessionKey, setUserInfo, setAdminUserInfo, userInfo} = useUserInfo()
+ const {setUserInfo, setAdminUserInfo, userInfo} = useUserInfo()
useEffect(() => {
console.log('userInfo::',userInfo.token)
}, [userInfo])
- const router = useRouter()
- //登录请求
- const {fetchData} = LoginApi()
-
- //微信登录
- const wxLogin = () => {
- return new Promise((reslove, reject) => {
- Taro.login({
- success: async (res) => {
- if (res.code) {
- const {data, success, msg} = await fetchData({js_code: res.code})
- if(success) {
- console.log('token::',data.token)
- setToken(data.token)
- setSessionKey(data.session_key)
- reslove(data)
- let params = router.params
- delete params.$taroTimestamp
- console.log('params::',params)
- if(router.path === '/pages/index/index' || router.path === '/pages/user/index') {
- Taro.reLaunch({
- url: router.path +'?' + qs.stringify(params)
- })
- } else {
- Taro.redirectTo({
- url: router.path +'?' + qs.stringify(params)
- })
- }
- getAdminUserInfo()
+ //登录请求 (调用这个就不能再useHttp中使用,当前这个hook, 否则会死循环内存溢出)
+ // const {fetchData} = LoginApi()
- //todo 删除本地授权用户信息,获取最新授权信息
-
- } else {
- Taro.showToast({
- title:'登录失败',
- icon:"none"
- })
- reject(msg)
- }
- } else {
- console.log('登录失败!' + res.errMsg)
- reject(res.errMsg)
- }
- },
- fail: function(e) {
- console.log('登录失败!::',e)
- reject(e)
- }
- })
- })
-
+ //登录请求
+ const {login} = useLoginRequest()
+ const wxLogin = async () => {
+ try {
+ await login()
+ getAdminUserInfo()
+ } catch(e) {
+ console.log('登录失败::',e)
+ }
}
//获取用户信息
@@ -83,6 +45,7 @@ export default () => {
Taro.checkSession({
success: async () => {
reslove(true)
+ if(!userInfo.adminUserInfo) getAdminUserInfo()
},
fail: async () => {
await wxLogin()
@@ -91,8 +54,6 @@ export default () => {
})
}
})
-
-
}
//获取用户头像等信息数据
diff --git a/src/use/useLoginRequest.ts b/src/use/useLoginRequest.ts
new file mode 100644
index 0000000..dc7d55e
--- /dev/null
+++ b/src/use/useLoginRequest.ts
@@ -0,0 +1,106 @@
+import {BASE_URL, WX_APPID } from "@/common/constant"
+import Taro, { useRouter } from "@tarojs/taro"
+import { useRef, useState } from "react"
+import qs from 'qs'
+import useUserInfo from "./useUserInfo"
+
+//开这个hook 主要是为了让useHttp 能够调用
+
+type Param = {success: true|false, data: any, msg: string, code: null|number, loading: false|true}
+export default () => {
+ let initData = {
+ success: false,
+ data: null,
+ msg: '',
+ code: null,
+ loading: false
+ }
+ let loginData = useRef(initData)
+ const {setToken, setSessionKey} = useUserInfo()
+ const router = useRouter()
+ //微信登录请求v2
+ const fetchData = async (login_code) => {
+ const q = {
+ url: BASE_URL + '/v1/mall/login',
+ header: {
+ "Platform": 6,
+ "Appid": WX_APPID,
+ },
+ method: 'post',
+ data:{js_code: login_code}
+ }
+ try{
+ const result = await Taro.request(q as any)
+ const {code, data, msg} = result.data
+ if(result.statusCode === 200) {
+ loginData.current.success = (code === 0 ? true : false)
+ loginData.current.code = code
+ loginData.current.msg = msg
+ loginData.current.data = data
+ } else {
+ Taro.showToast({
+ title: `错误:登录失败`,
+ icon: 'none'
+ })
+ console.log('登录错误:', result.errMsg)
+
+ }
+ }catch(e) {
+ Taro.showToast({
+ title: `错误:登录失败`,
+ icon: 'none'
+ })
+ console.log('登录错误:', e.errMsg)
+ }
+ return loginData.current
+ }
+
+ //微信登录
+ const login = () => {
+ return new Promise((reslove, reject) => {
+ Taro.login({
+ success: async (res) => {
+ if (res.code) {
+ const {data, success, msg} = await fetchData(res.code)
+ if(success) {
+ setToken(data.token)
+ setSessionKey(data.session_key)
+ reslove(data)
+ let params = router.params
+ delete params.$taroTimestamp
+ if(router.path === '/pages/index/index' || router.path === '/pages/user/index') {
+ Taro.reLaunch({
+ url: router.path +'?' + qs.stringify(params)
+ })
+ } else {
+ Taro.redirectTo({
+ url: router.path +'?' + qs.stringify(params)
+ })
+ }
+ } else {
+ Taro.showToast({
+ title:'登录失败',
+ icon:"none"
+ })
+ reject(msg)
+ }
+ } else {
+ console.log('登录失败!' + res.errMsg)
+ reject(res.errMsg)
+ }
+ },
+ fail: function(e) {
+ console.log('登录失败!::',e)
+ reject(e)
+ }
+ })
+ })
+
+ }
+
+ return {
+ login
+ }
+
+}
+
diff --git a/src/use/useManualPullDownRefresh.ts b/src/use/useManualPullDownRefresh.ts
deleted file mode 100644
index 4ff1ff3..0000000
--- a/src/use/useManualPullDownRefresh.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import Taro, { usePullDownRefresh } from "@tarojs/taro"
-import { useCallback, useState } from "react"
-
-type Arg = {[index:string]:any}
-export default (fn?:(val:Arg) => any, arg?:Arg) => {
- const [data, setData] = useState({})
-
- usePullDownRefresh(() => {
- getData()
- })
-
- const getData = useCallback(() => {
- setTimeout(() => {
- const res = fn?.({...arg})
- setData((e) => ({...e, res}))
- Taro.stopPullDownRefresh()
- }, 1000)
- }, [])
-
- return {
- getData,
- data
- }
-}
\ No newline at end of file
From 864f2342b6dfe3003254ce36ca5421504fb113ff Mon Sep 17 00:00:00 2001
From: czm <2192718639@qq.com>
Date: Tue, 31 May 2022 10:16:21 +0800
Subject: [PATCH 7/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/orderBtns/index.tsx | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/components/orderBtns/index.tsx b/src/components/orderBtns/index.tsx
index efd97b1..736fd9d 100644
--- a/src/components/orderBtns/index.tsx
+++ b/src/components/orderBtns/index.tsx
@@ -61,7 +61,6 @@ export default memo(({status = 0, orderId = 0, onClick, realPayPrice = 0, pendin
return( pendingPayPrice != 0 && status <= 4) //在代发货之前没有付完款
}
return item.value.includes(status)
-
},[])
//点击按钮操作
From b5c4500866da14819354ed5d712132670eecfc5f Mon Sep 17 00:00:00 2001
From: czm <2192718639@qq.com>
Date: Tue, 31 May 2022 10:27:07 +0800
Subject: [PATCH 8/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/orderBtns/index.tsx | 20 +++++++++++---------
src/pages/order/index.tsx | 13 ++++++++++++-
2 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/src/components/orderBtns/index.tsx b/src/components/orderBtns/index.tsx
index 736fd9d..4ae23d6 100644
--- a/src/components/orderBtns/index.tsx
+++ b/src/components/orderBtns/index.tsx
@@ -6,14 +6,16 @@ import { useCallback, useRef, memo } from "react"
import styles from './index.module.scss'
type Param = {
- status?: number, //订单状态
- orderId: number, //订单id
- payModel: number, //支付方式
- realPayPrice: number, //实付金额
- pendingPayPrice: number, //待付金额
+ orderInfo: {
+ status?: number, //订单状态
+ orderId: number, //订单id
+ payModel: number, //支付方式
+ realPayPrice: number, //实付金额
+ pendingPayPrice: number, //待付金额
+ },
onClick?: (val: number) => void //点击后触发的事件,返回订单状态
}
-export default memo(({status = 0, orderId = 0, onClick, realPayPrice = 0, pendingPayPrice = 0}:Param) => {
+export default memo(({orderInfo, onClick}:Param) => {
//订单按钮按订单状态归类
const orderBtnsList = useRef([
{
@@ -55,10 +57,10 @@ export default memo(({status = 0, orderId = 0, onClick, realPayPrice = 0, pendin
//判断是否显示该按钮
const orderBtnsShow = useCallback((item, status) => {
if(item.id == 1) {
- return( realPayPrice == 0 && status <= 4) //在代发货之前没有付过款
+ return( orderInfo.realPayPrice == 0 && status <= 4) //在代发货之前没有付过款
}
if(item.id == 2) {
- return( pendingPayPrice != 0 && status <= 4) //在代发货之前没有付完款
+ return( orderInfo.pendingPayPrice != 0 && status <= 4) //在代发货之前没有付完款
}
return item.value.includes(status)
},[])
@@ -76,7 +78,7 @@ export default memo(({status = 0, orderId = 0, onClick, realPayPrice = 0, pendin
title: '要取消该订单吗?',
success: async function (res) {
if (res.confirm) {
- let res = await cancelFetchData({id: orderId})
+ let res = await cancelFetchData({id: orderInfo.orderId})
if(res.success) {
alert.success('取消成功')
onClick?.(1)
diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx
index c5043d5..abeee6e 100644
--- a/src/pages/order/index.tsx
+++ b/src/pages/order/index.tsx
@@ -162,6 +162,17 @@ import styles from './index.module.scss'
setPayMentShow(() => false)
}, [orderDetail])
+ //按钮所需数据
+ const orderInfo = useMemo(() => {
+ return {
+ status: orderDetail?.status,
+ orderId: orderDetail?.id,
+ payModel: orderDetail?.id, //支付方式
+ realPayPrice: orderDetail?.id, //实付金额
+ pendingPayPrice: orderDetail?.id, //待付金额
+ }
+ }, [orderDetail])
+
return (
{/*
@@ -196,7 +207,7 @@ import styles from './index.module.scss'
-
+
{/* toPay()}>去支付 */}
setShowDesc(false)} >