订单列表对接

This commit is contained in:
czm 2022-06-01 20:33:36 +08:00
parent d05ad47b8d
commit b921bcaa07
21 changed files with 183 additions and 96 deletions

11
src/api/share.ts Normal file
View File

@ -0,0 +1,11 @@
import { useRequest } from "@/use/useHttp"
/**
*
*/
export const GetShortCodeApi = () => {
return useRequest({
url: `/v1/mall/shortCode/add`,
method: "post",
})
}

View File

@ -4,9 +4,21 @@ import { Provider } from 'react-redux'
import configStore from './store' import configStore from './store'
import './app.scss' import './app.scss'
import { useShareAppMessage } from '@tarojs/taro'
import { useSelector } from './reducers/hooks'
const store = configStore() const store = configStore()
const App:FC = ({children}) => { const App:FC = ({children}) => {
//转发分享
// const userObj = useSelector(state => state.userInfo)
useShareAppMessage(res => {
return {
title: '电子商城',
path: `/pages/details/index`,
imageUrl:'',
}
})
return ( return (
<ContextBlueTooth> <ContextBlueTooth>
<Provider store={store}> <Provider store={store}>

View File

@ -5,11 +5,11 @@
// export const BASE_URL = `http://192.168.0.89:40001/lymarket` // 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 = `http://192.168.1.165:40001/lymarket` // 王霞
// export const BASE_URL = `https://test.zzfzyc.com/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://dev.zzfzyc.com/lymarket` // 开发环境
// export const BASE_URL = `https://www.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.224:50001/lymarket` // 添
// export const BASE_URL = `http://192.168.1.15:50001/lymarket` // 杰 // export const BASE_URL = `http://192.168.1.15:50001/lymarket` // 杰
// CDN // CDN

View File

@ -12,3 +12,18 @@ export const ORDER_STATUS = {
SaleOrderStatusRefund : {value:6, label:'已退款'}, // 已退款 SaleOrderStatusRefund : {value:6, label:'已退款'}, // 已退款
SaleOrderStatusCancel : {value:5, 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:'页面分享'},
}

View File

@ -70,7 +70,6 @@ export default memo(({orderInfo, onClick}:Param) => {
//判断是否显示该按钮 //判断是否显示该按钮
const orderBtnsShow = useCallback((item) => { const orderBtnsShow = useCallback((item) => {
if(orderInfo) { if(orderInfo) {
// console.log('orderInfo::',item.value.includes(orderInfo.status))
if(item.id == 1) { if(item.id == 1) {
//取消订单按钮 //取消订单按钮
return( orderInfo.actual_amount == 0 && item.value.includes(orderInfo.status)) //在代发货之前没有付过款 return( orderInfo.actual_amount == 0 && item.value.includes(orderInfo.status)) //在代发货之前没有付过款

View File

@ -2,7 +2,9 @@ export const SET_USERINFO = 'setUserInfo'
export const SET_ADMINUSERINFO = 'setAdminUserInfo' export const SET_ADMINUSERINFO = 'setAdminUserInfo'
export const SET_TOKEN = 'setToken' export const SET_TOKEN = 'setToken'
export const SET_SESSIONKEY = 'setSessionkey' export const SET_SESSIONKEY = 'setSessionkey'
export const SET_SORTCODE = 'setSortCode'
export const CLEAR_TOKEN = 'clearToken' export const CLEAR_TOKEN = 'clearToken'
export const CLEAR_SESSIONKEY = 'clearSessionkey' export const CLEAR_SESSIONKEY = 'clearSessionkey'
export const CLEAR_USERINFO = 'clearUserInfo' export const CLEAR_USERINFO = 'clearUserInfo'
export const CLEAR_ADMINUSERINFO = 'clearAdminUserInfo' export const CLEAR_ADMINUSERINFO = 'clearAdminUserInfo'
export const CLEAR_SORTCODE = 'clearSortCode'

View File

@ -4,12 +4,11 @@ import { useMemo, useRef, useState } from "react"
import styles from './index.module.scss' import styles from './index.module.scss'
type item = {title:string, img:string, url:string, id:number} type item = {title:string, img:string, url:string, id:number}
type params = { type params = {
list?: item[] list?: item[]
} }
export default ({list = []}: params) => {
export default ({list = []}: params) => {
const [pageIndex, setPageIndex] = useState(1) const [pageIndex, setPageIndex] = useState(1)
const pageRef = useRef<any>(null) const pageRef = useRef<any>(null)
@ -32,7 +31,7 @@ export default ({list = []}: params) => {
</SwiperItem> </SwiperItem>
})} })}
</Swiper> </Swiper>
<View className={styles.page} ref={pageRef}>{pageIndex+'/'+pageCount}</View> {(list.length > 0)&&<View className={styles.page} ref={pageRef}>{pageIndex+'/'+pageCount}</View>}
</View> </View>
) )
} }

View File

@ -1,5 +1,6 @@
export default { export default {
navigationBarTitleText: '详情', navigationBarTitleText: '详情',
enablePullDownRefresh: true, enablePullDownRefresh: true,
backgroundTextStyle: 'dark' backgroundTextStyle: 'dark',
enableShareAppMessage: true
} }

View File

@ -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 Taro, { useDidShow, usePullDownRefresh, useRouter, useShareAppMessage } from '@tarojs/taro';
import classnames from "classnames"; import classnames from "classnames";
import DesSwiper from './components/swiper'; import DesSwiper from './components/swiper';
@ -7,13 +7,11 @@ import OrderCount from './components/orderCount';
import ShopCart from '@/components/shopCart'; import ShopCart from '@/components/shopCart';
import Preview,{colorItem} from './components/preview'; import Preview,{colorItem} from './components/preview';
import styles from './index.module.scss' 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 {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 {GetProductDetailApi} from '@/api/material'
import useLogin from '@/use/useLogin'; import useLogin from '@/use/useLogin';
import { useSelector } from '@/reducers/hooks';
type item = {title:string, img:string, url:string, id:number} type item = {title:string, img:string, url:string, id:number}
@ -49,14 +47,12 @@ export default (props:params) => {
},[productInfo]) },[productInfo])
const [showCart, setShowCart] = useState(false) const [showCart, setShowCart] = useState(false)
const [showOrderCount, setShowOrderCount] = useState(false) const [showOrderCount, setShowOrderCount] = useState(false)
const html = ` 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"> <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 [colorInfo, setColorInfo] = useState<colorItem>()
const [showPreview, setShowPreview] = useState(false) const [showPreview, setShowPreview] = useState(false)
const getColorItem = (item) => { const getColorItem = (item) => {
@ -67,6 +63,7 @@ export default (props:params) => {
setShowPreview(true) setShowPreview(true)
} }
//收藏功能
const [collectStatus, setCollectStatus] = useState(false) const [collectStatus, setCollectStatus] = useState(false)
const changeCollect = () => { const changeCollect = () => {
setCollectStatus(!collectStatus) setCollectStatus(!collectStatus)
@ -77,19 +74,27 @@ export default (props:params) => {
}) })
} }
//转发分享
const userObj = useSelector(state => state.userInfo)
useShareAppMessage(res => { useShareAppMessage(res => {
let path = ''
let title = ''
let imageUrl = ''
if (res.from === 'button') { if (res.from === 'button') {
// 来自页面内转发按钮 path = `/pages/details/index?id=${userObj.sort_code.shareShortDetail}`
console.log(res.target) title = productName as string
// imageUrl =
} else {
path = `/pages/details/index?id=${userObj.sort_code.shareShortPage}`
title = '陆盈电子商城'
} }
return { return {
title: '自定义转发标题', title,
path: '/pages/details/index?id=10', path,
imageUrl: '' imageUrl,
} }
}) })
//开始下单 //开始下单
const placeOrder = async (e:any) => { const placeOrder = async (e:any) => {
try { try {
@ -108,7 +113,6 @@ export default (props:params) => {
//页面下拉刷新 //页面下拉刷新
usePullDownRefresh(() => { usePullDownRefresh(() => {
getProductDetail() getProductDetail()
}) })
@ -123,13 +127,11 @@ export default (props:params) => {
<View className={styles.share}> <View className={styles.share}>
<View className={classnames('iconfont icon-fenxiang', styles.miconfont)}></View> <View className={classnames('iconfont icon-fenxiang', styles.miconfont)}></View>
<View className={styles.text}></View> <View className={styles.text}></View>
<Button open-type="share" className={styles.shareBtn}></Button> <Button open-type="share" className={styles.shareBtn}></Button>
</View> </View>
<View className={styles.collect}> <View className={styles.collect}>
<View className={classnames('iconfont icon-shoucang', styles.miconfont, collectStatus&&styles.collected)} onClick={() => changeCollect()}></View> <View className={classnames('iconfont icon-shoucang', styles.miconfont, collectStatus&&styles.collected)} onClick={() => changeCollect()}></View>
<View className={styles.text}></View> <View className={styles.text}></View>
</View> </View>
</View> </View>
<View className={styles.des_data}> <View className={styles.des_data}>

View File

@ -96,7 +96,7 @@ export default () => {
//数据加载状态 //数据加载状态
const statusMore = useMemo(() => { const statusMore = useMemo(() => {
return dataLoadingStatus({list:productData.list, total: productData.total, status: productState.loading}) return dataLoadingStatus({list:productData.list, total: productData.total, status: productState.loading})
}, [productData]) }, [productData, productState.loading])
return ( return (
<MoveBtn onClick={() => setShowShopCart(!showShopCart)}> <MoveBtn onClick={() => setShowShopCart(!showShopCart)}>

View File

@ -163,7 +163,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
<View className={styles.order_main}> <View className={styles.order_main}>
<ShipmentMode onSelect={selectShipmentMode}/> <ShipmentMode onSelect={selectShipmentMode}/>
<AddressInfo onSelect={(e) => getAddress(e)} defaultValue={defaultAddress}/> <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} onClick={() => setShowDesc(true)}>
<View className={styles.order_desc_con}></View> <View className={styles.order_desc_con}></View>
{ {

View File

@ -22,21 +22,26 @@ type OrderParam = {
actual_amount: number //实付金额 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) => { const formatCount = useCallback((item) => {
return value?.sale_mode == 0? item.roll : Number(item.length / 100) return order?.sale_mode == 0? item.roll : Number(item.length / 100)
}, [value]) }, [order])
//对应单价 //对应单价
const standardPrice = useCallback(price => { const standardPrice = useCallback(price => {
return formatPriceDiv(price).toLocaleString() + '/' + (value?.sale_mode == 1?'m':'kg') return formatPriceDiv(price).toLocaleString() + '/' + (order?.sale_mode == 1?'m':'kg')
}, [value]) }, [order])
//数量格式 //数量格式
const numText = useMemo(() => { const numText = useMemo(() => {
if(value) if(order)
return `${value?.total_fabrics}种面料,${value?.total_colors}种颜色,共${value?.total_number}${value?.unit}` return `${order?.total_fabrics}种面料,${order?.total_colors}种颜色,共${order?.total_number}${order?.unit}`
}, [value]) }, [order])
const { const {
SaleOrderStatusBooking, // 待接单 SaleOrderStatusBooking, // 待接单
@ -56,68 +61,79 @@ export default memo(({value}:{value:OrderParam}) => {
{ {
id:1, id:1,
value:[SaleOrderStatusBooking.value, SaleOrderStatusArranging.value], value:[SaleOrderStatusBooking.value, SaleOrderStatusArranging.value],
label:'预估金额' label:'预估金额',
field: 'estimate_amount'
}, },
{ {
id:2, id:2,
value:[SaleOrderStatusArranged.value, SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value], 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, id:3,
value:[SaleOrderStatusArranged.value, SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value], value:[SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value],
label:'空差优惠' label:'空差优惠',
field: 'total_weight_error_discount'
}, },
{ {
id:4, id:4,
value:[ SaleOrderStatusWaitingPayment.value], value:[ SaleOrderStatusWaitingPayment.value],
label:'应付金额' label:'应付金额',
field: 'total_should_collect_money'
}, },
{ {
id:5, id:5,
value:[SaleOrderStatusWaitingDelivery.value, SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value], 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(() => { const priceConDom = useMemo(() => {
if(!value) return if(!order) return
console.log('value:::', value) //确认订单
if(comfirm == true) {
return <EstimatedAmount number={formatPriceDiv(order.estimate_amount)} title="预估金额" />
}
//订单为取消订单状态 //订单为取消订单状态
if(value?.status == 9) { if(order?.status == SaleOrderStatusCancel.value) {
return ( 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.map(item => {
{(priceList[3].value.includes(value?.the_previous_status))&&<EstimatedAmount number={formatPriceDiv(value?.total_weight_error_discount)} titleStatus={false} numberStatus={0} title="空差优惠" />} return <>{showPrice(item, order?.the_previous_status)&&<EstimatedAmount key={item.id} number={formatPriceDiv(order[item.field])} title={item.label} />}</>
{(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="实付金额" />} */} }
</> </>
) )
} else { } else {
return ( 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.map(item => {
{(priceList[3].value.includes(value?.status))&&<EstimatedAmount number={formatPriceDiv(value?.total_weight_error_discount)} titleStatus={false} numberStatus={0} title="空差优惠" />} return <>{showPrice(item, order?.status)&&<EstimatedAmount key={item.id} number={formatPriceDiv(order[item.field])} title={item.label} />}</>
{(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="实付金额" />} */} }
</> </>
) )
} }
}, [order])
}, [value])
return ( return (
<> <>
<View className={styles.orders_list_title}>{numText}</View> <View className={styles.orders_list_title}>{numText}</View>
<View className={styles.orders_list_con}> <View className={styles.orders_list_con}>
{ {
value?.list?.map(item => { order?.list?.map(item => {
return <View key={item.product_code} className={styles.order_list}> return <View key={item.product_code} className={styles.order_list}>
<View className={styles.order_list_title}> <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.title}>{formatHashTag(item.code, item.name)}</View>
<View className={styles.num}>{item?.product_colors.length}</View> <View className={styles.num}>{item?.product_colors.length}</View>
</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 className={styles.order_list_item_price}>¥{standardPrice(colorItem.sale_price)}</View>
</View> </View>
<View className={styles.order_list_item_count}> <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 className={styles.count_price}><text>¥</text>{formatPriceDiv(colorItem.estimate_amount).toLocaleString()}</View>
</View> </View>
</View> </View>

View File

@ -1,5 +1,5 @@
import { Text, View } from "@tarojs/components"; 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 AmountShow from "../amountShow";
import classnames from "classnames"; import classnames from "classnames";
import styles from './index.module.scss' import styles from './index.module.scss'
@ -11,6 +11,7 @@ import ScanPay from "../scanPay";
import { GetOrderPayApi, SubmitOrderPayApi } from "@/api/orderPay"; import { GetOrderPayApi, SubmitOrderPayApi } from "@/api/orderPay";
import { formatPriceDiv } from "@/common/fotmat"; import { formatPriceDiv } from "@/common/fotmat";
import {alert} from "@/common/common" import {alert} from "@/common/common"
import { PAYMENT_METHOD } from "@/common/enum";
type Param = { type Param = {
show?: true|false, show?: true|false,
@ -61,9 +62,10 @@ export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param
}, [show, orderId]) }, [show, orderId])
//预存款选择 //预存款选择
const advanceSelectData = (val) => { const advanceSelectData = useCallback((val) => {
setSubmitData((e) => ({...e, payment_method:val})) setSubmitData((e) => ({...e, payment_method:val}))
} }, [])
//账期选择 //账期选择
const periodSelectData = (val) => { const periodSelectData = (val) => {
setSubmitData((e) => ({...e, payment_method:val})) setSubmitData((e) => ({...e, payment_method:val}))
@ -93,6 +95,9 @@ export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param
) )
}, [payInfo]) }, [payInfo])
//支付方式枚举
const {PaymentMethodPreDeposit, PaymentMethodAccountPeriod} = PAYMENT_METHOD
return ( return (
<View className={styles.payment_main}> <View className={styles.payment_main}>
<Popup show={show} showTitle={false} onClose={onClose} > <Popup show={show} showTitle={false} onClose={onClose} >
@ -126,7 +131,7 @@ export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param
</View> </View>
{advance_payment} {advance_payment}
</View> </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>
<View className={styles.payment_list_item}> <View className={styles.payment_list_item}>
<View className={styles.payment_list_item_left}> <View className={styles.payment_list_item_left}>
@ -136,7 +141,7 @@ export default memo(({show = false, onClose, orderId = 0, onSubmitSuccess}:Param
</View> </View>
<View className={styles.payment_list_item_left_price}> ¥{payInfo?.account_period_credit_available_line}</View> <View className={styles.payment_list_item_left_price}> ¥{payInfo?.account_period_credit_available_line}</View>
</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>
<View className={styles.payment_list_item} onClick={onShowOfflinePay}> <View className={styles.payment_list_item} onClick={onShowOfflinePay}>
<View className={styles.payment_list_item_left}> <View className={styles.payment_list_item_left}>

View File

@ -5,6 +5,7 @@ import {
} from "@/api/order"; } from "@/api/order";
import { GetOrderPayApi } from "@/api/orderPay"; import { GetOrderPayApi } from "@/api/orderPay";
import { alert, goLink } from "@/common/common"; import { alert, goLink } from "@/common/common";
import { ORDER_STATUS } from "@/common/enum";
import { formatDateTime, formatPriceDiv } from "@/common/fotmat"; import { formatDateTime, formatPriceDiv } from "@/common/fotmat";
import OrderBtns from "@/components/orderBtns"; import OrderBtns from "@/components/orderBtns";
import Popup from "@/components/popup"; import Popup from "@/components/popup";
@ -23,10 +24,8 @@ import styles from './index.module.scss'
export default () => { export default () => {
const [showDesc, setShowDesc] = useState(false) const [showDesc, setShowDesc] = useState(false)
const router = useRouter() const router = useRouter()
const orderId = useRef<number>(Number(router.params.id)) const orderId = useRef<number>(Number(router.params.id))
useDidShow(() => { useDidShow(() => {
getSaleOrderPreView() getSaleOrderPreView()
}) })
@ -169,22 +168,25 @@ import styles from './index.module.scss'
return { return {
status: orderDetail?.status, //订单状态 status: orderDetail?.status, //订单状态
orderId: orderDetail?.id, orderId: orderDetail?.id,
settle_mode: orderDetail?.settle_mode, //支付方式 -1 还没支付 0全额现结1定期付款2货到付款 settle_mode: orderDetail?.settle_mode,
actual_amount: orderDetail?.actual_amount, //实付金额 actual_amount: orderDetail?.actual_amount, //实付金额
wait_pay_amount: orderDetail?.wait_pay_amount, //待付金额 wait_pay_amount: orderDetail?.wait_pay_amount, //待付金额
} }
}, [orderDetail]) }, [orderDetail])
//订单状态枚举
const {SaleOrderStatusCancel} = ORDER_STATUS
return ( return (
<View className={styles.order_main}> <View className={styles.order_main}>
{/* <View className={styles.weight_memo_con}> {/* <View className={styles.weight_memo_con}>
<WeightMemo/> <WeightMemo/>
</View> */} </View> */}
<OrderState list={orderDetail?.logistics_details}/> <OrderState list={orderDetail?.logistics_details} settle_mode={orderDetail?.settle_mode}/>
<View > <View >
<AddressInfoDetail orderId={orderDetail?.id} onSelect={getAddress} onChangeShipmentMode={getShipmentMode} ref={addressRef} defaultValue={defaultAddress} shipment_mode={orderDetail?.shipment_mode}/> <AddressInfoDetail orderId={orderDetail?.id} onSelect={getAddress} onChangeShipmentMode={getShipmentMode} ref={addressRef} defaultValue={defaultAddress} shipment_mode={orderDetail?.shipment_mode}/>
</View> </View>
<KindList value={formatPreViewOrderMemo}/> <KindList order={formatPreViewOrderMemo}/>
<View className={styles.order_info} > <View className={styles.order_info} >
<View className={styles.order_info_title}></View> <View className={styles.order_info_title}></View>
<SearchInput showBorder={false} title='单号' height={50}> <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 className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></View>
</View> </View>
{(orderDetail?.status)&&<View className={styles.submit_order}> {(orderDetail?.status != SaleOrderStatusCancel.value)&&<View className={styles.submit_order}>
<OrderBtns orderInfo={orderInfo} onClick={orderStateClick}/> <OrderBtns orderInfo={orderInfo} onClick={orderStateClick}/>
</View> } </View> }
<Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)} > <Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)} >

View File

@ -64,7 +64,7 @@ export default () => {
//数据加载状态 //数据加载状态
const statusMore = useMemo(() => { const statusMore = useMemo(() => {
return dataLoadingStatus({list:materialList.list, total: materialList.total, status: materialState.loading}) return dataLoadingStatus({list:materialList.list, total: materialList.total, status: materialState.loading})
}, [materialList]) }, [materialList, materialState])
//输入了搜索关键字 //输入了搜索关键字
const getSearchData = useCallback((e) => { const getSearchData = useCallback((e) => {

View File

@ -2,6 +2,7 @@ import { View, Image, Text, Navigator } from "@tarojs/components"
import { memo } from "react" import { memo } from "react"
import styles from './index.module.scss' import styles from './index.module.scss'
import classnames from "classnames"; import classnames from "classnames";
import { goLink } from "@/common/common";
export default () => { export default () => {
@ -12,7 +13,6 @@ export default () => {
</View> </View>
) )
} }
// 头部 | 订单 // 头部 | 订单
const Header = memo(() => { const Header = memo(() => {
let menu = [{ text: "待配布", icon: "icon-daipeibu" }, { text: "待付款", icon: "icon-daifukuan" }, 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']}>
<View className={styles['card-main-title']}> <View className={styles['card-main-title']}>
<View></View> <View></View>
<Text></Text> <Text onClick={() => goLink('/pages/orderList/index')}></Text>
</View> </View>
<View className={styles['card-main-title-content']}> <View className={styles['card-main-title-content']}>
{ {

View File

@ -5,10 +5,12 @@ import {
SET_ADMINUSERINFO, SET_ADMINUSERINFO,
SET_TOKEN, SET_TOKEN,
SET_SESSIONKEY, SET_SESSIONKEY,
SET_SORTCODE,
CLEAR_TOKEN, CLEAR_TOKEN,
CLEAR_USERINFO, CLEAR_USERINFO,
CLEAR_SESSIONKEY, CLEAR_SESSIONKEY,
CLEAR_ADMINUSERINFO, CLEAR_ADMINUSERINFO,
CLEAR_SORTCODE
} from '../constants/userInfo' } from '../constants/userInfo'
export type UserParam = { export type UserParam = {
@ -36,14 +38,20 @@ export type UserAdminParam = {
user_name?: string, user_name?: string,
wechat_user_open_id?: number wechat_user_open_id?: number
is_authorize_name?: false|true, 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 = { export type DataParam = {
token?: string token?: string
session_key?: string, session_key?: string,
userInfo: UserParam, userInfo: UserParam,
adminUserInfo: UserAdminParam adminUserInfo: UserAdminParam,
sort_code: SortCodeParam
} }
type Action = { type Action = {
@ -52,14 +60,16 @@ type Action = {
} }
const INIT_USER = { const INIT_USER = {
userInfo: Taro.getStorageSync('userInfo')?JSON.parse(Taro.getStorageSync('userInfo')):null, userInfo: Taro.getStorageSync('userInfo')?JSON.parse(Taro.getStorageSync('userInfo')):null,
adminUserInfo: Taro.getStorageSync('adminUserInfo')?JSON.parse(Taro.getStorageSync('adminUserInfo')):null, adminUserInfo: Taro.getStorageSync('adminUserInfo')?JSON.parse(Taro.getStorageSync('adminUserInfo')):null,
token: Taro.getStorageSync('token')||'', token: Taro.getStorageSync('token')||'',
session_key: Taro.getStorageSync('session_key')||'', 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) { export default function counter (state = INIT_USER, action: Action) {
const {type, data} = action const {type, data} = action
switch (type) { switch (type) {
@ -75,6 +85,9 @@ export default function counter (state = INIT_USER, action: Action) {
case SET_SESSIONKEY: case SET_SESSIONKEY:
Taro.setStorageSync('session_key',data?.session_key) Taro.setStorageSync('session_key',data?.session_key)
return {...state,...data} return {...state,...data}
case SET_SORTCODE:
Taro.setStorageSync('sort_code',JSON.stringify(data?.sort_code))
return {...state,...data}
case CLEAR_TOKEN: case CLEAR_TOKEN:
Taro.removeStorageSync('token') Taro.removeStorageSync('token')
return {...state, token:''} return {...state, token:''}
@ -87,6 +100,9 @@ export default function counter (state = INIT_USER, action: Action) {
case CLEAR_ADMINUSERINFO: case CLEAR_ADMINUSERINFO:
Taro.removeStorageSync('adminUserInfo') Taro.removeStorageSync('adminUserInfo')
return {...state, adminUserInfo: null} return {...state, adminUserInfo: null}
case CLEAR_SORTCODE:
Taro.removeStorageSync('sort_code')
return {...state, sortCode: null}
default: default:
return state return state
} }

View File

@ -168,7 +168,6 @@ export const useRequest = (options:option = {
msg, msg,
data data
} = result.data } = result.data
console.log(code, msg, data, statusCode);
if (statusCode === 200) { if (statusCode === 200) {
stateRef.current.success = (code === 0 ? true : false) stateRef.current.success = (code === 0 ? true : false)
stateRef.current.code = code stateRef.current.code = code

View File

@ -1,18 +1,12 @@
import { useEffect, useState } from "react"
import {BASE_URL, WX_APPID } from "@/common/constant"
import useUserInfo from "./useUserInfo" import useUserInfo from "./useUserInfo"
import Taro, { useRouter } from "@tarojs/taro" import Taro, { useRouter } from "@tarojs/taro"
import { LoginApi } from "@/api/login"
import { GetWxUserInfoApi, GetAdminUserInfoApi, GetPhoneNumberApi } from "@/api/user" import { GetWxUserInfoApi, GetAdminUserInfoApi, GetPhoneNumberApi } from "@/api/user"
import qs from 'qs';
import useLoginRequest from "./useLoginRequest" import useLoginRequest from "./useLoginRequest"
import { SHARE_SCENE } from "@/common/enum"
import { GetShortCodeApi } from "@/api/share"
export default () => { export default () => {
const {setUserInfo, setAdminUserInfo, userInfo} = useUserInfo() const {setUserInfo, setAdminUserInfo, setSortCode, userInfo} = useUserInfo()
useEffect(() => {
console.log('userInfo::',userInfo.token)
}, [userInfo])
//登录请求 (调用这个就不能再useHttp中使用当前这个hook, 否则会死循环内存溢出) //登录请求 (调用这个就不能再useHttp中使用当前这个hook, 否则会死循环内存溢出)
// const {fetchData} = LoginApi() // const {fetchData} = LoginApi()
@ -33,6 +27,7 @@ export default () => {
const getAdminUserInfo = async () => { const getAdminUserInfo = async () => {
let res = await useFetchData() let res = await useFetchData()
setAdminUserInfo(res.data) setAdminUserInfo(res.data)
getShortCode(res.data.user_id)
} }
//登录加checkLogin检查 //登录加checkLogin检查
@ -84,7 +79,6 @@ export default () => {
} else { } else {
reject(user_res.msg) reject(user_res.msg)
} }
}, },
fail:(e) => { fail:(e) => {
reject(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 { return {
checkLogin, checkLogin,
wxLogin, wxLogin,

View File

@ -1,6 +1,6 @@
import { useDispatch, useSelector } from 'react-redux' 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 { CLEAR_SESSIONKEY, SET_USERINFO, SET_TOKEN, SET_SESSIONKEY, CLEAR_USERINFO, CLEAR_TOKEN, SET_ADMINUSERINFO, SET_SORTCODE} from '@/constants/userInfo'
import {DataParam, UserParam, UserAdminParam} from '@/reducers/userInfo' import {DataParam, UserParam, UserAdminParam, SortCodeParam} from '@/reducers/userInfo'
export default () => { export default () => {
const userInfo = useSelector((state:DataParam) => state.userInfo) as DataParam const userInfo = useSelector((state:DataParam) => state.userInfo) as DataParam
const dispatch = useDispatch() const dispatch = useDispatch()
@ -21,6 +21,10 @@ export default () => {
dispatch({type:SET_ADMINUSERINFO, data:{adminUserInfo}}) dispatch({type:SET_ADMINUSERINFO, data:{adminUserInfo}})
} }
const setSortCode = (sortCode:SortCodeParam) => {
dispatch({type:SET_SORTCODE, data:{sort_code:sortCode}})
}
const removeUserInfo = () => { const removeUserInfo = () => {
dispatch({type:CLEAR_USERINFO}) dispatch({type:CLEAR_USERINFO})
} }
@ -41,6 +45,7 @@ export default () => {
removeUserInfo, removeUserInfo,
removeToken, removeToken,
removeSessionKey, removeSessionKey,
setSortCode,
userInfo, //响应式数据返回 userInfo, //响应式数据返回
} }
} }