订单列表对接
This commit is contained in:
parent
d05ad47b8d
commit
b921bcaa07
11
src/api/share.ts
Normal file
11
src/api/share.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { useRequest } from "@/use/useHttp"
|
||||
|
||||
/**
|
||||
* 分享短码
|
||||
*/
|
||||
export const GetShortCodeApi = () => {
|
||||
return useRequest({
|
||||
url: `/v1/mall/shortCode/add`,
|
||||
method: "post",
|
||||
})
|
||||
}
|
12
src/app.tsx
12
src/app.tsx
@ -4,9 +4,21 @@ import { Provider } from 'react-redux'
|
||||
import configStore from './store'
|
||||
|
||||
import './app.scss'
|
||||
import { useShareAppMessage } from '@tarojs/taro'
|
||||
import { useSelector } from './reducers/hooks'
|
||||
|
||||
const store = configStore()
|
||||
const App:FC = ({children}) => {
|
||||
//转发分享
|
||||
// const userObj = useSelector(state => state.userInfo)
|
||||
useShareAppMessage(res => {
|
||||
return {
|
||||
title: '电子商城',
|
||||
path: `/pages/details/index`,
|
||||
imageUrl:'',
|
||||
}
|
||||
})
|
||||
|
||||
return (
|
||||
<ContextBlueTooth>
|
||||
<Provider store={store}>
|
||||
|
@ -5,11 +5,11 @@
|
||||
// export const BASE_URL = `http://192.168.0.89:40001/lymarket`
|
||||
// export const BASE_URL = `http://192.168.1.165:40001/lymarket` // 王霞
|
||||
// export const BASE_URL = `https://test.zzfzyc.com/lymarket` // 测试环境
|
||||
export const BASE_URL = `http://192.168.1.30:40001/lymarket` // 发
|
||||
// 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.224:50002/lymarket` // 添
|
||||
export const BASE_URL = `http://192.168.1.224:50001/lymarket` // 添
|
||||
// export const BASE_URL = `http://192.168.1.15:50001/lymarket` // 杰
|
||||
|
||||
// CDN
|
||||
|
@ -12,3 +12,18 @@ export const ORDER_STATUS = {
|
||||
SaleOrderStatusRefund : {value:6, label:'已退款'}, // 已退款
|
||||
SaleOrderStatusCancel : {value:5, label:'已取消'}, // 已取消
|
||||
}
|
||||
|
||||
//支付方式
|
||||
export const PAYMENT_METHOD = {
|
||||
PaymentMethodPreDeposit: {value:1, label:'预存款'},
|
||||
PaymentMethodAccountPeriod : {value:2, label:'账期'},
|
||||
PaymentMethodofflineRemittance: {value:3, label:'线下汇款'},
|
||||
PaymentMethodScanCodeToPay: {value:4, label:'扫码支付'},
|
||||
PaymentMethodCashOnDelivery: {value:5, label:'货到付款'},
|
||||
}
|
||||
|
||||
//分享场景枚举
|
||||
export const SHARE_SCENE = {
|
||||
ShareDetail: {value:1, label:'详情分享'},
|
||||
SharePage : {value:2, label:'页面分享'},
|
||||
}
|
@ -70,7 +70,6 @@ export default memo(({orderInfo, onClick}:Param) => {
|
||||
//判断是否显示该按钮
|
||||
const orderBtnsShow = useCallback((item) => {
|
||||
if(orderInfo) {
|
||||
// console.log('orderInfo::',item.value.includes(orderInfo.status))
|
||||
if(item.id == 1) {
|
||||
//取消订单按钮
|
||||
return( orderInfo.actual_amount == 0 && item.value.includes(orderInfo.status)) //在代发货之前没有付过款
|
||||
|
@ -224,7 +224,7 @@ export default ({show = false, onClose}: param) => {
|
||||
</View>
|
||||
<View className={styles.con}>
|
||||
{loading&&<LoadingCard/>}
|
||||
{!loading&&list?.length > 0&&<InfiniteScroll moreStatus={false} >
|
||||
{!loading&&list?.length > 0&&<InfiniteScroll moreStatus={false} >
|
||||
<View className={styles.product_list}>
|
||||
{list?.map((item, index) => {
|
||||
return <View key={index} className={classnames(styles.product_item, (selectIndex!=-1&&selectIndex!= item.sale_mode)&&styles.no_product_item_select)}>
|
||||
|
@ -2,7 +2,9 @@ export const SET_USERINFO = 'setUserInfo'
|
||||
export const SET_ADMINUSERINFO = 'setAdminUserInfo'
|
||||
export const SET_TOKEN = 'setToken'
|
||||
export const SET_SESSIONKEY = 'setSessionkey'
|
||||
export const SET_SORTCODE = 'setSortCode'
|
||||
export const CLEAR_TOKEN = 'clearToken'
|
||||
export const CLEAR_SESSIONKEY = 'clearSessionkey'
|
||||
export const CLEAR_USERINFO = 'clearUserInfo'
|
||||
export const CLEAR_ADMINUSERINFO = 'clearAdminUserInfo'
|
||||
export const CLEAR_SORTCODE = 'clearSortCode'
|
@ -4,12 +4,11 @@ import { useMemo, useRef, useState } from "react"
|
||||
import styles from './index.module.scss'
|
||||
|
||||
type item = {title:string, img:string, url:string, id:number}
|
||||
|
||||
type params = {
|
||||
list?: item[]
|
||||
}
|
||||
export default ({list = []}: params) => {
|
||||
|
||||
export default ({list = []}: params) => {
|
||||
const [pageIndex, setPageIndex] = useState(1)
|
||||
const pageRef = useRef<any>(null)
|
||||
|
||||
@ -26,13 +25,13 @@ export default ({list = []}: params) => {
|
||||
<Swiper className={styles.swiper_item} circular={true} onAnimationFinish={(e) => swiperChange(e)}>
|
||||
{list.map((item) => {
|
||||
return <SwiperItem key={item.id}>
|
||||
<View className={styles.image_item} >
|
||||
<Image mode="aspectFill" src={formatImgUrl(item)}></Image>
|
||||
</View>
|
||||
<View className={styles.image_item} >
|
||||
<Image mode="aspectFill" src={formatImgUrl(item)}></Image>
|
||||
</View>
|
||||
</SwiperItem>
|
||||
})}
|
||||
</Swiper>
|
||||
<View className={styles.page} ref={pageRef}>{pageIndex+'/'+pageCount}</View>
|
||||
{(list.length > 0)&&<View className={styles.page} ref={pageRef}>{pageIndex+'/'+pageCount}</View>}
|
||||
</View>
|
||||
)
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
export default {
|
||||
navigationBarTitleText: '详情',
|
||||
enablePullDownRefresh: true,
|
||||
backgroundTextStyle: 'dark'
|
||||
backgroundTextStyle: 'dark',
|
||||
enableShareAppMessage: true
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
import { Button, CustomWrapper, Image, RichText, ScrollView, Swiper, SwiperItem, Text, View } from '@tarojs/components'
|
||||
import { Button, CustomWrapper, Image, RichText, Text, View } from '@tarojs/components'
|
||||
import Taro, { useDidShow, usePullDownRefresh, useRouter, useShareAppMessage } from '@tarojs/taro';
|
||||
import classnames from "classnames";
|
||||
import DesSwiper from './components/swiper';
|
||||
@ -7,13 +7,11 @@ import OrderCount from './components/orderCount';
|
||||
import ShopCart from '@/components/shopCart';
|
||||
import Preview,{colorItem} from './components/preview';
|
||||
import styles from './index.module.scss'
|
||||
import { useEffect, useMemo, useState } from 'react';
|
||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import {formatHashTag, formatImgUrl} from '@/common/fotmat'
|
||||
import useManualPullDownRefresh from '@/use/useManualPullDownRefresh';
|
||||
import { goLink } from '@/common/common';
|
||||
import useUserInfo from '@/use/useUserInfo';
|
||||
import {GetProductDetailApi} from '@/api/material'
|
||||
import useLogin from '@/use/useLogin';
|
||||
import { useSelector } from '@/reducers/hooks';
|
||||
|
||||
type item = {title:string, img:string, url:string, id:number}
|
||||
|
||||
@ -49,14 +47,12 @@ export default (props:params) => {
|
||||
},[productInfo])
|
||||
|
||||
const [showCart, setShowCart] = useState(false)
|
||||
|
||||
const [showOrderCount, setShowOrderCount] = useState(false)
|
||||
|
||||
const html = `
|
||||
<img style="width:100%" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic24.nipic.com%2F20121021%2F10910884_100200815001_2.jpg&refer=http%3A%2F%2Fpic24.nipic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1652257920&t=9353dda34f18ae2fe6803f3da35954bb">
|
||||
`
|
||||
|
||||
|
||||
//弹窗提示
|
||||
const [colorInfo, setColorInfo] = useState<colorItem>()
|
||||
const [showPreview, setShowPreview] = useState(false)
|
||||
const getColorItem = (item) => {
|
||||
@ -67,6 +63,7 @@ export default (props:params) => {
|
||||
setShowPreview(true)
|
||||
}
|
||||
|
||||
//收藏功能
|
||||
const [collectStatus, setCollectStatus] = useState(false)
|
||||
const changeCollect = () => {
|
||||
setCollectStatus(!collectStatus)
|
||||
@ -77,19 +74,27 @@ export default (props:params) => {
|
||||
})
|
||||
}
|
||||
|
||||
//转发分享
|
||||
const userObj = useSelector(state => state.userInfo)
|
||||
useShareAppMessage(res => {
|
||||
let path = ''
|
||||
let title = ''
|
||||
let imageUrl = ''
|
||||
if (res.from === 'button') {
|
||||
// 来自页面内转发按钮
|
||||
console.log(res.target)
|
||||
path = `/pages/details/index?id=${userObj.sort_code.shareShortDetail}`
|
||||
title = productName as string
|
||||
// imageUrl =
|
||||
} else {
|
||||
path = `/pages/details/index?id=${userObj.sort_code.shareShortPage}`
|
||||
title = '陆盈电子商城'
|
||||
}
|
||||
return {
|
||||
title: '自定义转发标题',
|
||||
path: '/pages/details/index?id=10',
|
||||
imageUrl: ''
|
||||
title,
|
||||
path,
|
||||
imageUrl,
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
//开始下单
|
||||
const placeOrder = async (e:any) => {
|
||||
try {
|
||||
@ -108,7 +113,6 @@ export default (props:params) => {
|
||||
//页面下拉刷新
|
||||
usePullDownRefresh(() => {
|
||||
getProductDetail()
|
||||
|
||||
})
|
||||
|
||||
|
||||
@ -123,13 +127,11 @@ export default (props:params) => {
|
||||
<View className={styles.share}>
|
||||
<View className={classnames('iconfont icon-fenxiang', styles.miconfont)}></View>
|
||||
<View className={styles.text}>分享</View>
|
||||
|
||||
<Button open-type="share" className={styles.shareBtn}></Button>
|
||||
</View>
|
||||
<View className={styles.collect}>
|
||||
<View className={classnames('iconfont icon-shoucang', styles.miconfont, collectStatus&&styles.collected)} onClick={() => changeCollect()}></View>
|
||||
<View className={styles.text}>收藏</View>
|
||||
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.des_data}>
|
||||
|
@ -96,7 +96,7 @@ export default () => {
|
||||
//数据加载状态
|
||||
const statusMore = useMemo(() => {
|
||||
return dataLoadingStatus({list:productData.list, total: productData.total, status: productState.loading})
|
||||
}, [productData])
|
||||
}, [productData, productState.loading])
|
||||
|
||||
return (
|
||||
<MoveBtn onClick={() => setShowShopCart(!showShopCart)}>
|
||||
|
@ -163,7 +163,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
|
||||
<View className={styles.order_main}>
|
||||
<ShipmentMode onSelect={selectShipmentMode}/>
|
||||
<AddressInfo onSelect={(e) => getAddress(e)} defaultValue={defaultAddress}/>
|
||||
<KindList value={formatPreViewOrderMemo}/>
|
||||
<KindList order={formatPreViewOrderMemo} comfirm={true}/>
|
||||
<View className={styles.order_desc} onClick={() => setShowDesc(true)}>
|
||||
<View className={styles.order_desc_con}>订单备注</View>
|
||||
{
|
||||
|
@ -22,21 +22,26 @@ type OrderParam = {
|
||||
actual_amount: number //实付金额
|
||||
}
|
||||
|
||||
export default memo(({value}:{value:OrderParam}) => {
|
||||
type Param = {
|
||||
order: OrderParam,
|
||||
comfirm?: boolean //是否是确认订单页面使用
|
||||
}
|
||||
|
||||
export default memo(({order, comfirm = false}:Param) => {
|
||||
//对应数量
|
||||
const formatCount = useCallback((item) => {
|
||||
return value?.sale_mode == 0? item.roll : Number(item.length / 100)
|
||||
}, [value])
|
||||
return order?.sale_mode == 0? item.roll : Number(item.length / 100)
|
||||
}, [order])
|
||||
//对应单价
|
||||
const standardPrice = useCallback(price => {
|
||||
return formatPriceDiv(price).toLocaleString() + '/' + (value?.sale_mode == 1?'m':'kg')
|
||||
}, [value])
|
||||
return formatPriceDiv(price).toLocaleString() + '/' + (order?.sale_mode == 1?'m':'kg')
|
||||
}, [order])
|
||||
|
||||
//数量格式
|
||||
const numText = useMemo(() => {
|
||||
if(value)
|
||||
return `${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}${value?.unit}`
|
||||
}, [value])
|
||||
if(order)
|
||||
return `${order?.total_fabrics}种面料,${order?.total_colors}种颜色,共${order?.total_number}${order?.unit}`
|
||||
}, [order])
|
||||
|
||||
const {
|
||||
SaleOrderStatusBooking, // 待接单
|
||||
@ -56,68 +61,79 @@ export default memo(({value}:{value:OrderParam}) => {
|
||||
{
|
||||
id:1,
|
||||
value:[SaleOrderStatusBooking.value, SaleOrderStatusArranging.value],
|
||||
label:'预估金额'
|
||||
label:'预估金额',
|
||||
field: 'estimate_amount'
|
||||
},
|
||||
{
|
||||
id:2,
|
||||
value:[SaleOrderStatusArranged.value, SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value],
|
||||
label:'合计金额'
|
||||
label:'合计金额',
|
||||
field: 'total_sale_price'
|
||||
},
|
||||
{
|
||||
id:3,
|
||||
value:[SaleOrderStatusArranged.value, SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value],
|
||||
label:'空差优惠'
|
||||
value:[SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value],
|
||||
label:'空差优惠',
|
||||
field: 'total_weight_error_discount'
|
||||
},
|
||||
{
|
||||
id:4,
|
||||
value:[ SaleOrderStatusWaitingPayment.value],
|
||||
label:'应付金额'
|
||||
label:'应付金额',
|
||||
field: 'total_should_collect_money'
|
||||
},
|
||||
{
|
||||
id:5,
|
||||
value:[SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value],
|
||||
label:'实付金额'
|
||||
label:'实付金额',
|
||||
field: 'actual_amount'
|
||||
}
|
||||
]
|
||||
|
||||
//是否显示价格
|
||||
const showPrice = useCallback((priceInfo, status) => {
|
||||
return priceInfo.value.includes(status)
|
||||
}, [order])
|
||||
|
||||
const priceConDom = useMemo(() => {
|
||||
if(!value) return
|
||||
console.log('value:::', value)
|
||||
if(!order) return
|
||||
//确认订单
|
||||
if(comfirm == true) {
|
||||
return <EstimatedAmount number={formatPriceDiv(order.estimate_amount)} title="预估金额" />
|
||||
}
|
||||
//订单为取消订单状态
|
||||
if(value?.status == 9) {
|
||||
if(order?.status == SaleOrderStatusCancel.value) {
|
||||
return (
|
||||
<>
|
||||
{(priceList[1].value.includes(value?.the_previous_status))&&<EstimatedAmount number={formatPriceDiv(value?.estimate_amount)} title="预估金额" />}
|
||||
{(priceList[2].value.includes(value?.the_previous_status))&&<EstimatedAmount number={formatPriceDiv(value?.total_sale_price)} titleStatus={false} numberStatus={0} title="合计金额" />}
|
||||
{(priceList[3].value.includes(value?.the_previous_status))&&<EstimatedAmount number={formatPriceDiv(value?.total_weight_error_discount)} titleStatus={false} numberStatus={0} title="空差优惠" />}
|
||||
{(priceList[4].value.includes(value?.the_previous_status))&&<EstimatedAmount number={formatPriceDiv(value?.total_should_collect_money)} title="应付金额" />}
|
||||
{/* {(priceList[5].value.includes(value?.the_previous_status))&&<EstimatedAmount number={formatPriceDiv(value?.actual_amount)} title="实付金额" />} */}
|
||||
{
|
||||
priceList.map(item => {
|
||||
return <>{showPrice(item, order?.the_previous_status)&&<EstimatedAmount key={item.id} number={formatPriceDiv(order[item.field])} title={item.label} />}</>
|
||||
})
|
||||
}
|
||||
</>
|
||||
)
|
||||
} else {
|
||||
return (
|
||||
<>
|
||||
{(priceList[1].value.includes(value?.status))&&<EstimatedAmount number={formatPriceDiv(value?.estimate_amount)} title="预估金额" />}
|
||||
{(priceList[2].value.includes(value?.status))&&<EstimatedAmount number={formatPriceDiv(value?.total_sale_price)} titleStatus={false} numberStatus={0} title="合计金额" />}
|
||||
{(priceList[3].value.includes(value?.status))&&<EstimatedAmount number={formatPriceDiv(value?.total_weight_error_discount)} titleStatus={false} numberStatus={0} title="空差优惠" />}
|
||||
{(priceList[4].value.includes(value?.status))&&<EstimatedAmount number={formatPriceDiv(value?.total_should_collect_money)} title="应付金额" />}
|
||||
{/* {(priceList[5].value.includes(value?.status))&&<EstimatedAmount number={formatPriceDiv(value?.actual_amount)} title="实付金额" />} */}
|
||||
{
|
||||
priceList.map(item => {
|
||||
return <>{showPrice(item, order?.status)&&<EstimatedAmount key={item.id} number={formatPriceDiv(order[item.field])} title={item.label} />}</>
|
||||
})
|
||||
}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
}, [value])
|
||||
}, [order])
|
||||
|
||||
return (
|
||||
<>
|
||||
<View className={styles.orders_list_title}>{numText}</View>
|
||||
<View className={styles.orders_list_con}>
|
||||
{
|
||||
value?.list?.map(item => {
|
||||
order?.list?.map(item => {
|
||||
return <View key={item.product_code} className={styles.order_list}>
|
||||
<View className={styles.order_list_title}>
|
||||
<View className={styles.tag}>{value.sale_mode_name}</View>
|
||||
<View className={styles.tag}>{order.sale_mode_name}</View>
|
||||
<View className={styles.title}>{formatHashTag(item.code, item.name)}</View>
|
||||
<View className={styles.num}>共{item?.product_colors.length}种</View>
|
||||
</View>
|
||||
@ -131,7 +147,7 @@ export default memo(({value}:{value:OrderParam}) => {
|
||||
<View className={styles.order_list_item_price}>¥{standardPrice(colorItem.sale_price)}</View>
|
||||
</View>
|
||||
<View className={styles.order_list_item_count}>
|
||||
<View className={styles.count_num}>×{formatCount(colorItem)}<text>{value.unit}</text></View>
|
||||
<View className={styles.count_num}>×{formatCount(colorItem)}<text>{order.unit}</text></View>
|
||||
<View className={styles.count_price}><text>¥</text>{formatPriceDiv(colorItem.estimate_amount).toLocaleString()}</View>
|
||||
</View>
|
||||
</View>
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Text, View } from "@tarojs/components";
|
||||
import { memo, useEffect, useMemo, useState } from "react";
|
||||
import { memo, useCallback, useEffect, useMemo, useState } from "react";
|
||||
import AmountShow from "../amountShow";
|
||||
import classnames from "classnames";
|
||||
import styles from './index.module.scss'
|
||||
@ -11,6 +11,7 @@ import ScanPay from "../scanPay";
|
||||
import { GetOrderPayApi, SubmitOrderPayApi } from "@/api/orderPay";
|
||||
import { formatPriceDiv } from "@/common/fotmat";
|
||||
import {alert} from "@/common/common"
|
||||
import { PAYMENT_METHOD } from "@/common/enum";
|
||||
|
||||
type Param = {
|
||||
show?: true|false,
|
||||
@ -61,9 +62,10 @@ export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param
|
||||
}, [show, orderId])
|
||||
|
||||
//预存款选择
|
||||
const advanceSelectData = (val) => {
|
||||
const advanceSelectData = useCallback((val) => {
|
||||
setSubmitData((e) => ({...e, payment_method:val}))
|
||||
}
|
||||
}, [])
|
||||
|
||||
//账期选择
|
||||
const periodSelectData = (val) => {
|
||||
setSubmitData((e) => ({...e, payment_method:val}))
|
||||
@ -93,6 +95,9 @@ export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param
|
||||
)
|
||||
}, [payInfo])
|
||||
|
||||
//支付方式枚举
|
||||
const {PaymentMethodPreDeposit, PaymentMethodAccountPeriod} = PAYMENT_METHOD
|
||||
|
||||
return (
|
||||
<View className={styles.payment_main}>
|
||||
<Popup show={show} showTitle={false} onClose={onClose} >
|
||||
@ -126,7 +131,7 @@ export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param
|
||||
</View>
|
||||
{advance_payment}
|
||||
</View>
|
||||
<MCheckbox status={submitData.payment_method == 1} onSelect={() => advanceSelectData(0)} onClose={() => advanceSelectData(null)}/>
|
||||
<MCheckbox status={submitData.payment_method == PaymentMethodPreDeposit.value} onSelect={() => advanceSelectData(PaymentMethodPreDeposit.value)} onClose={() => advanceSelectData(null)}/>
|
||||
</View>
|
||||
<View className={styles.payment_list_item}>
|
||||
<View className={styles.payment_list_item_left}>
|
||||
@ -136,7 +141,7 @@ export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param
|
||||
</View>
|
||||
<View className={styles.payment_list_item_left_price}>可用额度 ¥{payInfo?.account_period_credit_available_line}</View>
|
||||
</View>
|
||||
<MCheckbox status={submitData.payment_method == 2} onSelect={() => periodSelectData(1)} onClose={() => periodSelectData(null)}/>
|
||||
<MCheckbox status={submitData.payment_method == PaymentMethodAccountPeriod.value} onSelect={() => periodSelectData(PaymentMethodAccountPeriod.value)} onClose={() => periodSelectData(null)}/>
|
||||
</View>
|
||||
<View className={styles.payment_list_item} onClick={onShowOfflinePay}>
|
||||
<View className={styles.payment_list_item_left}>
|
||||
|
@ -5,6 +5,7 @@ import {
|
||||
} from "@/api/order";
|
||||
import { GetOrderPayApi } from "@/api/orderPay";
|
||||
import { alert, goLink } from "@/common/common";
|
||||
import { ORDER_STATUS } from "@/common/enum";
|
||||
import { formatDateTime, formatPriceDiv } from "@/common/fotmat";
|
||||
import OrderBtns from "@/components/orderBtns";
|
||||
import Popup from "@/components/popup";
|
||||
@ -23,10 +24,8 @@ import styles from './index.module.scss'
|
||||
|
||||
export default () => {
|
||||
const [showDesc, setShowDesc] = useState(false)
|
||||
|
||||
const router = useRouter()
|
||||
const orderId = useRef<number>(Number(router.params.id))
|
||||
|
||||
useDidShow(() => {
|
||||
getSaleOrderPreView()
|
||||
})
|
||||
@ -169,22 +168,25 @@ import styles from './index.module.scss'
|
||||
return {
|
||||
status: orderDetail?.status, //订单状态
|
||||
orderId: orderDetail?.id,
|
||||
settle_mode: orderDetail?.settle_mode, //支付方式 -1 还没支付 0:全额现结,1:定期付款,2:货到付款
|
||||
settle_mode: orderDetail?.settle_mode,
|
||||
actual_amount: orderDetail?.actual_amount, //实付金额
|
||||
wait_pay_amount: orderDetail?.wait_pay_amount, //待付金额
|
||||
}
|
||||
}, [orderDetail])
|
||||
|
||||
//订单状态枚举
|
||||
const {SaleOrderStatusCancel} = ORDER_STATUS
|
||||
|
||||
return (
|
||||
<View className={styles.order_main}>
|
||||
{/* <View className={styles.weight_memo_con}>
|
||||
<WeightMemo/>
|
||||
</View> */}
|
||||
<OrderState list={orderDetail?.logistics_details}/>
|
||||
<OrderState list={orderDetail?.logistics_details} settle_mode={orderDetail?.settle_mode}/>
|
||||
<View >
|
||||
<AddressInfoDetail orderId={orderDetail?.id} onSelect={getAddress} onChangeShipmentMode={getShipmentMode} ref={addressRef} defaultValue={defaultAddress} shipment_mode={orderDetail?.shipment_mode}/>
|
||||
</View>
|
||||
<KindList value={formatPreViewOrderMemo}/>
|
||||
<KindList order={formatPreViewOrderMemo}/>
|
||||
<View className={styles.order_info} >
|
||||
<View className={styles.order_info_title}>订单信息</View>
|
||||
<SearchInput showBorder={false} title='单号' height={50}>
|
||||
@ -208,7 +210,7 @@ import styles from './index.module.scss'
|
||||
}
|
||||
<View className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></View>
|
||||
</View>
|
||||
{(orderDetail?.status)&&<View className={styles.submit_order}>
|
||||
{(orderDetail?.status != SaleOrderStatusCancel.value)&&<View className={styles.submit_order}>
|
||||
<OrderBtns orderInfo={orderInfo} onClick={orderStateClick}/>
|
||||
</View> }
|
||||
<Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)} >
|
||||
|
@ -64,7 +64,7 @@ export default () => {
|
||||
//数据加载状态
|
||||
const statusMore = useMemo(() => {
|
||||
return dataLoadingStatus({list:materialList.list, total: materialList.total, status: materialState.loading})
|
||||
}, [materialList])
|
||||
}, [materialList, materialState])
|
||||
|
||||
//输入了搜索关键字
|
||||
const getSearchData = useCallback((e) => {
|
||||
|
@ -2,6 +2,7 @@ import { View, Image, Text, Navigator } from "@tarojs/components"
|
||||
import { memo } from "react"
|
||||
import styles from './index.module.scss'
|
||||
import classnames from "classnames";
|
||||
import { goLink } from "@/common/common";
|
||||
|
||||
export default () => {
|
||||
|
||||
@ -12,7 +13,6 @@ export default () => {
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
// 头部 | 订单
|
||||
const Header = memo(() => {
|
||||
let menu = [{ text: "待配布", icon: "icon-daipeibu" }, { text: "待付款", icon: "icon-daifukuan" },
|
||||
@ -45,7 +45,7 @@ const Header = memo(() => {
|
||||
<View className={styles['card-main']}>
|
||||
<View className={styles['card-main-title']}>
|
||||
<View>订单</View>
|
||||
<Text>全部</Text>
|
||||
<Text onClick={() => goLink('/pages/orderList/index')}>全部</Text>
|
||||
</View>
|
||||
<View className={styles['card-main-title-content']}>
|
||||
{
|
||||
|
@ -5,10 +5,12 @@ import {
|
||||
SET_ADMINUSERINFO,
|
||||
SET_TOKEN,
|
||||
SET_SESSIONKEY,
|
||||
SET_SORTCODE,
|
||||
CLEAR_TOKEN,
|
||||
CLEAR_USERINFO,
|
||||
CLEAR_SESSIONKEY,
|
||||
CLEAR_ADMINUSERINFO,
|
||||
CLEAR_SORTCODE
|
||||
} from '../constants/userInfo'
|
||||
|
||||
export type UserParam = {
|
||||
@ -36,14 +38,20 @@ export type UserAdminParam = {
|
||||
user_name?: string,
|
||||
wechat_user_open_id?: number
|
||||
is_authorize_name?: false|true,
|
||||
is_authorize_phone?: false|true
|
||||
is_authorize_phone?: false|true,
|
||||
}
|
||||
|
||||
export type SortCodeParam = {
|
||||
shareShortDetail?: string, //详情分享页面短码
|
||||
shareShortPage?: string, //右上角分享页面短码
|
||||
}
|
||||
|
||||
export type DataParam = {
|
||||
token?: string
|
||||
session_key?: string,
|
||||
userInfo: UserParam,
|
||||
adminUserInfo: UserAdminParam
|
||||
adminUserInfo: UserAdminParam,
|
||||
sort_code: SortCodeParam
|
||||
}
|
||||
|
||||
type Action = {
|
||||
@ -52,14 +60,16 @@ type Action = {
|
||||
}
|
||||
|
||||
|
||||
|
||||
const INIT_USER = {
|
||||
userInfo: Taro.getStorageSync('userInfo')?JSON.parse(Taro.getStorageSync('userInfo')):null,
|
||||
adminUserInfo: Taro.getStorageSync('adminUserInfo')?JSON.parse(Taro.getStorageSync('adminUserInfo')):null,
|
||||
token: Taro.getStorageSync('token')||'',
|
||||
session_key: Taro.getStorageSync('session_key')||'',
|
||||
sort_code: Taro.getStorageSync('sort_code')?JSON.parse(Taro.getStorageSync('sort_code')):null,
|
||||
}
|
||||
|
||||
|
||||
|
||||
export default function counter (state = INIT_USER, action: Action) {
|
||||
const {type, data} = action
|
||||
switch (type) {
|
||||
@ -75,6 +85,9 @@ export default function counter (state = INIT_USER, action: Action) {
|
||||
case SET_SESSIONKEY:
|
||||
Taro.setStorageSync('session_key',data?.session_key)
|
||||
return {...state,...data}
|
||||
case SET_SORTCODE:
|
||||
Taro.setStorageSync('sort_code',JSON.stringify(data?.sort_code))
|
||||
return {...state,...data}
|
||||
case CLEAR_TOKEN:
|
||||
Taro.removeStorageSync('token')
|
||||
return {...state, token:''}
|
||||
@ -87,6 +100,9 @@ export default function counter (state = INIT_USER, action: Action) {
|
||||
case CLEAR_ADMINUSERINFO:
|
||||
Taro.removeStorageSync('adminUserInfo')
|
||||
return {...state, adminUserInfo: null}
|
||||
case CLEAR_SORTCODE:
|
||||
Taro.removeStorageSync('sort_code')
|
||||
return {...state, sortCode: null}
|
||||
default:
|
||||
return state
|
||||
}
|
||||
|
@ -168,7 +168,6 @@ export const useRequest = (options:option = {
|
||||
msg,
|
||||
data
|
||||
} = result.data
|
||||
console.log(code, msg, data, statusCode);
|
||||
if (statusCode === 200) {
|
||||
stateRef.current.success = (code === 0 ? true : false)
|
||||
stateRef.current.code = code
|
||||
|
@ -1,18 +1,12 @@
|
||||
import { useEffect, useState } from "react"
|
||||
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"
|
||||
import { SHARE_SCENE } from "@/common/enum"
|
||||
import { GetShortCodeApi } from "@/api/share"
|
||||
|
||||
export default () => {
|
||||
const {setUserInfo, setAdminUserInfo, userInfo} = useUserInfo()
|
||||
|
||||
useEffect(() => {
|
||||
console.log('userInfo::',userInfo.token)
|
||||
}, [userInfo])
|
||||
const {setUserInfo, setAdminUserInfo, setSortCode, userInfo} = useUserInfo()
|
||||
|
||||
//登录请求 (调用这个就不能再useHttp中使用,当前这个hook, 否则会死循环内存溢出)
|
||||
// const {fetchData} = LoginApi()
|
||||
@ -33,6 +27,7 @@ export default () => {
|
||||
const getAdminUserInfo = async () => {
|
||||
let res = await useFetchData()
|
||||
setAdminUserInfo(res.data)
|
||||
getShortCode(res.data.user_id)
|
||||
}
|
||||
|
||||
//登录加checkLogin检查
|
||||
@ -45,7 +40,7 @@ export default () => {
|
||||
Taro.checkSession({
|
||||
success: async () => {
|
||||
reslove(true)
|
||||
if(!userInfo.adminUserInfo) getAdminUserInfo()
|
||||
if(!userInfo.adminUserInfo) getAdminUserInfo()
|
||||
},
|
||||
fail: async () => {
|
||||
await wxLogin()
|
||||
@ -84,7 +79,6 @@ export default () => {
|
||||
} else {
|
||||
reject(user_res.msg)
|
||||
}
|
||||
|
||||
},
|
||||
fail:(e) => {
|
||||
reject(e)
|
||||
@ -115,6 +109,15 @@ export default () => {
|
||||
})
|
||||
}
|
||||
|
||||
//获取分享转码
|
||||
const {ShareDetail, SharePage} = SHARE_SCENE
|
||||
const {fetchData: fetchDataShortCode} = GetShortCodeApi()
|
||||
const getShortCode = async (user_id) => {
|
||||
const {data: resDetail} = await fetchDataShortCode({"share_user_id": user_id, type:ShareDetail.value})
|
||||
const {data: resPage} = await fetchDataShortCode({"share_user_id": user_id, type:SharePage.value})
|
||||
setSortCode({shareShortDetail: resDetail.md5_key, shareShortPage: resPage.md5_key})
|
||||
}
|
||||
|
||||
return {
|
||||
checkLogin,
|
||||
wxLogin,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { CLEAR_SESSIONKEY, SET_USERINFO, SET_TOKEN, SET_SESSIONKEY, CLEAR_USERINFO, CLEAR_TOKEN, SET_ADMINUSERINFO} from '@/constants/userInfo'
|
||||
import {DataParam, UserParam, UserAdminParam} from '@/reducers/userInfo'
|
||||
import { CLEAR_SESSIONKEY, SET_USERINFO, SET_TOKEN, SET_SESSIONKEY, CLEAR_USERINFO, CLEAR_TOKEN, SET_ADMINUSERINFO, SET_SORTCODE} from '@/constants/userInfo'
|
||||
import {DataParam, UserParam, UserAdminParam, SortCodeParam} from '@/reducers/userInfo'
|
||||
export default () => {
|
||||
const userInfo = useSelector((state:DataParam) => state.userInfo) as DataParam
|
||||
const dispatch = useDispatch()
|
||||
@ -21,6 +21,10 @@ export default () => {
|
||||
dispatch({type:SET_ADMINUSERINFO, data:{adminUserInfo}})
|
||||
}
|
||||
|
||||
const setSortCode = (sortCode:SortCodeParam) => {
|
||||
dispatch({type:SET_SORTCODE, data:{sort_code:sortCode}})
|
||||
}
|
||||
|
||||
const removeUserInfo = () => {
|
||||
dispatch({type:CLEAR_USERINFO})
|
||||
}
|
||||
@ -41,6 +45,7 @@ export default () => {
|
||||
removeUserInfo,
|
||||
removeToken,
|
||||
removeSessionKey,
|
||||
setSortCode,
|
||||
userInfo, //响应式数据返回
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user