订单列表对接

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 './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}>

View File

@ -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

View File

@ -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:'页面分享'},
}

View File

@ -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)) //在代发货之前没有付过款

View File

@ -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)}>

View File

@ -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'

View File

@ -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>
)
}

View File

@ -1,5 +1,6 @@
export default {
navigationBarTitleText: '详情',
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 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}>

View File

@ -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)}>

View File

@ -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>
{

View File

@ -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>

View File

@ -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}>

View File

@ -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)} >

View File

@ -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) => {

View File

@ -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']}>
{

View File

@ -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
}

View File

@ -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

View File

@ -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,

View File

@ -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, //响应式数据返回
}
}