修复部分bug

This commit is contained in:
czm 2022-07-07 20:32:59 +08:00
parent d3a7fd9913
commit 3637447ab6
22 changed files with 262 additions and 318 deletions

View File

@ -66,4 +66,26 @@ export const DelFavoriteProductApi = () => {
url: `/v1/mall/favorite/product`, url: `/v1/mall/favorite/product`,
method: "delete", method: "delete",
}) })
}
/**
*
* @returns
*/
export const DetailFavoriteProductApi = () => {
return useRequest({
url: `/v1/mall/favorite`,
method: "get",
})
}
/**
*
* @returns
*/
export const MoveFavoriteProductApi = () => {
return useRequest({
url: `/v1/mall/favorite/product`,
method: "put",
})
} }

View File

@ -1,3 +1,4 @@
import { CAP_HTML_TO_IMAGE_BASE_URL } from "@/common/constant"
import { useRequest } from "@/use/useHttp" import { useRequest } from "@/use/useHttp"
/** /**
@ -5,8 +6,8 @@ import { useRequest } from "@/use/useHttp"
*/ */
export const GetPayCode = () => { export const GetPayCode = () => {
return useRequest({ return useRequest({
url: `/`, url: `/xima-caphtml/caphtml`,
base_url: 'http://192.168.1.127:8081/caphtml', base_url: CAP_HTML_TO_IMAGE_BASE_URL,
method: "post", method: "post",
}) })
} }

View File

@ -22,6 +22,10 @@ export const UPLOAD_CDN_URL = `https://v0.api.upyun.com/`
// cdn // cdn
export const IMG_CND_Prefix = CURRENT_ENV.includes('development')? "https://test.cdn.zzfzyc.com":"https://cdn.zzfzyc.com" export const IMG_CND_Prefix = CURRENT_ENV.includes('development')? "https://test.cdn.zzfzyc.com":"https://cdn.zzfzyc.com"
//在线支付图片baseUrl
export const CAP_HTML_TO_IMAGE_BASE_URL = CURRENT_ENV.includes('development')? "https://test.zzfzyc.com":"https://www.zzfzyc.com"
// 上传图片视频 // 上传图片视频
export const CDN_UPLOAD_IMG = `${UPLOAD_CDN_URL || ''}`; export const CDN_UPLOAD_IMG = `${UPLOAD_CDN_URL || ''}`;

View File

@ -8,7 +8,7 @@ import classnames from "classnames";
import styles from './index.module.scss' import styles from './index.module.scss'
import { AddShoppingCartApi } from "@/api/shopCart" import { AddShoppingCartApi } from "@/api/shopCart"
import { ApplyRefundApi } from "@/api/salesAfterOrder" import { ApplyRefundApi } from "@/api/salesAfterOrder"
import { UseSubscriptionMessage } from "@/use/useCommonData" import { UseSubscriptionMessage } from "@/use/useCommon"
import { throttle } from "@/common/util" import { throttle } from "@/common/util"
type Param = { type Param = {
@ -52,7 +52,9 @@ export default memo(({orderInfo, onClick}:Param) => {
{ {
id: 1, id: 1,
value: [SaleOrderStatusBooking.value, value: [
SaleorderstatusWaitingPrePayment.value,
SaleOrderStatusBooking.value,
SaleOrderStatusArranging.value, SaleOrderStatusArranging.value,
SaleOrderStatusArranged.value, SaleOrderStatusArranged.value,
SaleOrderStatusWaitingPayment.value, SaleOrderStatusWaitingPayment.value,
@ -96,7 +98,6 @@ export default memo(({orderInfo, onClick}:Param) => {
}, },
]) ])
//判断是否显示该按钮 //判断是否显示该按钮
const orderBtnsShow = (item) => { const orderBtnsShow = (item) => {
if(orderInfo) { if(orderInfo) {
@ -104,7 +105,7 @@ export default memo(({orderInfo, onClick}:Param) => {
//取消订单按钮 //取消订单按钮
return( orderInfo.actual_amount == 0 && item.value.includes(orderInfo.status)) //在待发货之前没有付过款 return( orderInfo.actual_amount == 0 && item.value.includes(orderInfo.status)) //在待发货之前没有付过款
} else if (item.id == 2) { } else if (item.id == 2) {
//去付款按钮 //去付款按钮(这里后端偷偷改了逻辑)
return( orderInfo.wait_pay_amount != 0 && item.value.includes(orderInfo.status)) //只要没有付完款就显示 return( orderInfo.wait_pay_amount != 0 && item.value.includes(orderInfo.status)) //只要没有付完款就显示
} else if(item.id == 3 ) { } else if(item.id == 3 ) {
//申请退款, 只有大货才有 //申请退款, 只有大货才有

View File

@ -41,7 +41,7 @@ const PictureItem:FC<ImageParam> = memo(({onChange, defaultList, onlyRead = fals
//预览图片 //预览图片
const showImage = () => { const showImage = () => {
let list = imageList.map(item => { let list = imageList?.map(item => {
return formatImgUrl(item, '!w800') return formatImgUrl(item, '!w800')
}) })
Taro.previewImage({ Taro.previewImage({
@ -52,7 +52,7 @@ const PictureItem:FC<ImageParam> = memo(({onChange, defaultList, onlyRead = fals
return ( return (
<View className={styles.image_main}> <View className={styles.image_main}>
{imageList.map((item, index) => {imageList?.map((item, index) =>
<View className={styles.ImgItem}> <View className={styles.ImgItem}>
<Image mode="aspectFill" src={formatImgUrl(item)} onClick={showImage}></Image> <Image mode="aspectFill" src={formatImgUrl(item)} onClick={showImage}></Image>
{!onlyRead && <View onClick={() => delImage(index)} className={classnames(styles.miconfont_close, 'iconfont icon-qingkong')}></View>} {!onlyRead && <View onClick={() => delImage(index)} className={classnames(styles.miconfont_close, 'iconfont icon-qingkong')}></View>}

View File

@ -1,2 +1,2 @@
export const SET_COMMON = 'setCommon' export const SET_SHOPCOUNT = 'set_shopCount'
export const CLEAR_COMMON = 'clearCommon' export const CLEAR_SHOPCOUNT = 'clear_shopCount'

View File

@ -1,4 +1,4 @@
import { CreateFavoriteApi, DelFavoriteApi, FavoriteListApi, UpdateFavoriteApi } from "@/api/favorite"; import { CreateFavoriteApi, DelFavoriteApi, DelFavoriteProductApi, DetailFavoriteProductApi, FavoriteListApi, MoveFavoriteProductApi, UpdateFavoriteApi } from "@/api/favorite";
import { alert } from "@/common/common"; import { alert } from "@/common/common";
import { getFilterData } from "@/common/util"; import { getFilterData } from "@/common/util";
import Product from "../components/product"; import Product from "../components/product";
@ -6,7 +6,7 @@ import Search from "@/components/search"
import { Text, View } from "@tarojs/components" import { Text, View } from "@tarojs/components"
import Taro, { useRouter } from "@tarojs/taro"; import Taro, { useRouter } from "@tarojs/taro";
import classnames from "classnames"; import classnames from "classnames";
import { useCallback, useEffect, useRef, useState } from "react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import CreatePopup from "../components/createPopup"; import CreatePopup from "../components/createPopup";
import UpdatePopup from "../components/updatePopup"; import UpdatePopup from "../components/updatePopup";
import styles from './index.module.scss' import styles from './index.module.scss'
@ -19,24 +19,33 @@ export default () => {
const router = useRouter() const router = useRouter()
//获取收藏夹面料 //获取收藏夹面料
const [list, setList] = useState<any[]>([]) const {fetchData: fetchDataDetailFavoriteProduct} = DetailFavoriteProductApi()
const getFavoriteInfo = () => { const [colorInfo, setColorInfo] = useState<any>({})
let arr:any[] = [] const getFavoriteInfo = async () => {
new Array(10).fill("").map((item, index) => { let res = await fetchDataDetailFavoriteProduct(searchData)
arr.push({id:index, code: index}) if(res.success) {
}) setColorInfo(res.data)
setList(arr) }
} }
//获取搜索数据 //获取搜索数据
const [searchData, setSearchData] = useState('') const [searchData, setSearchData] = useState({id:0, key: ''})
const onSearch = useCallback((e) => { const onSearch = useCallback((e) => {
setSearchData(() => e) setSearchData(() => e)
}, []) }, [])
useEffect(() => { useEffect(() => {
getFavoriteInfo() let id = router.params.id || 0
if(id) setSearchData((e) => ({...e, id: parseInt(id as string)}))
}, [])
useEffect(() => {
if(searchData.id) getFavoriteInfo()
}, [searchData]) }, [searchData])
const productList = useMemo(() => {
return colorInfo.product_color_list
}, [colorInfo])
//获取选中的id //获取选中的id
const [ids, setIds] = useState<number[]>([]) const [ids, setIds] = useState<number[]>([])
@ -57,11 +66,11 @@ export default () => {
const [selectStatus, setSelectStatus] = useState<1|2|3>(3) const [selectStatus, setSelectStatus] = useState<1|2|3>(3)
useEffect(() => { useEffect(() => {
if(list.length) { if(colorInfo.product_color_list?.length) {
if(ids.length == list.length) { if(ids.length == colorInfo.product_color_list.length) {
setSelectStatus(1) setSelectStatus(1)
setAllSelectStatus(true) setAllSelectStatus(true)
} else if ( 0 < ids.length && ids.length < list.length){ } else if ( 0 < ids.length && ids.length < colorInfo.product_color_list.length){
setSelectStatus(2) setSelectStatus(2)
setAllSelectStatus(false) setAllSelectStatus(false)
} else { } else {
@ -69,7 +78,7 @@ export default () => {
setAllSelectStatus(false) setAllSelectStatus(false)
} }
} }
}, [ids, list]) }, [ids, colorInfo])
const [collectionShow, setCollectionShow] = useState(false) const [collectionShow, setCollectionShow] = useState(false)
@ -77,8 +86,25 @@ export default () => {
setCollectionShow(false) setCollectionShow(false)
}, []) }, [])
const onAdd = () => { //移动面料
const {fetchData: fetchDataMoveFavoriteProduct} = MoveFavoriteProductApi()
const onAdd = async () => {
let res = await fetchDataMoveFavoriteProduct({favorite_id: searchData.id, product_id:ids})
if(res.success) {
getFavoriteInfo()
alert.success('修改成功')
}
}
//取消收藏
const {fetchData: delFavoriteProductFetchData} = DelFavoriteProductApi()
const delCollectioin = async () => {
if(ids.length == 0) return alert.none('请选择要取消面料')
let res = await delFavoriteProductFetchData({favorite_id: searchData.id, product_id:ids})
if(res.success) {
getFavoriteInfo()
alert.none('已取消收藏')
}
} }
return ( return (
@ -93,11 +119,11 @@ export default () => {
</View> </View>
<View className={styles.operation_check_right}> <View className={styles.operation_check_right}>
<Text className={styles.operation_check_move} onClick={() => setCollectionShow(true)}></Text> <Text className={styles.operation_check_move} onClick={() => setCollectionShow(true)}></Text>
<Text className={styles.operation_check_cancel}></Text> <Text className={styles.operation_check_cancel} onClick={delCollectioin}></Text>
</View> </View>
</View> </View>
<View className={styles.class_list}> <View className={styles.class_list}>
<Product productList={list} onSelectIds={getSelectIds} selectStatus={selectStatus} openCheckBox={true}/> <Product productList={productList} onSelectIds={getSelectIds} selectStatus={selectStatus} openCheckBox={true}/>
</View> </View>
<AddCollection show={collectionShow} onAdd={onAdd} onClose={closeCollection}/> <AddCollection show={collectionShow} onAdd={onAdd} onClose={closeCollection}/>
</View> </View>

View File

@ -13,11 +13,12 @@ type Params = {
selectStatus?: 1|2|3, //1全选2不做处理3全清空 selectStatus?: 1|2|3, //1全选2不做处理3全清空
openCheckBox?: true|false //是否开启选择 openCheckBox?: true|false //是否开启选择
} }
export default ({productList = [], onSelectIds, selectStatus = 2, openCheckBox = false}:Params) => { export default ({productList, onSelectIds, selectStatus = 2, openCheckBox = false}:Params) => {
const [list, setList] = useState<any[]>([]) const [list, setList] = useState<any[]>([])
useEffect(() => { useEffect(() => {
setList(() => [...productList]) setList(() => productList||[])
},[productList]) },[productList])
useEffect(() => { useEffect(() => {
if(list.length && selectStatus != 2) { if(list.length && selectStatus != 2) {
@ -51,7 +52,7 @@ export default ({productList = [], onSelectIds, selectStatus = 2, openCheckBox =
useEffect(() => { useEffect(() => {
let ids: number[] = [] let ids: number[] = []
list.map(item => { list.map(item => {
if(item.check) ids.push(item.id) if(item.check) ids.push(item.product_id)
}) })
onSelectIds?.(ids) onSelectIds?.(ids)
}, [list]) }, [list])

View File

@ -113,14 +113,16 @@ export default () => {
if(res.success) { if(res.success) {
alert.success('编辑成功') alert.success('编辑成功')
getFavoriteList() getFavoriteList()
closeUpdate()
} else { } else {
alert.error('编辑失败') alert.error('编辑失败')
} }
} }
const onBatchManagement = useCallback(() => { const onBatchManagement = useCallback(() => {
// goLink('pages/collection/collectionClass/index', {id: }) goLink('/pages/collection/collectionClass/index', {id: initData.id})
}, []) closeUpdate()
}, [initData])
//操作文件夹 //操作文件夹
const onCreatSuccess = (submitData) => { const onCreatSuccess = (submitData) => {

View File

@ -14,7 +14,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn";
import AddressInfoDetail from "./components/addressInfoDetail"; import AddressInfoDetail from "./components/addressInfoDetail";
import { SubscriptionMessageApi } from "@/api/user"; import { SubscriptionMessageApi } from "@/api/user";
import { SUBSCRIPTION_MESSAGE_SCENE } from "@/common/enum"; import { SUBSCRIPTION_MESSAGE_SCENE } from "@/common/enum";
import { UseSubscriptionMessage } from "@/use/useCommonData"; import { UseSubscriptionMessage } from "@/use/useCommon";
export default () => { export default () => {

View File

@ -6,7 +6,7 @@ import AddressList from "@/components/AddressList";
import Popup from "@/components/popup"; import Popup from "@/components/popup";
import { Text, View } from "@tarojs/components" import { Text, View } from "@tarojs/components"
import classnames from "classnames"; import classnames from "classnames";
import { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useState } from "react"; import { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
import styles from './index.module.scss' import styles from './index.module.scss'
export type AddressInfoParam = { export type AddressInfoParam = {
@ -62,8 +62,6 @@ export default memo(forwardRef(({onSelect, onChangeShipmentMode, orderInfo, stat
}, [orderInfo]) }, [orderInfo])
//打开地址列表 //打开地址列表
const [showAddressList, setShowAddressList] = useState(false) const [showAddressList, setShowAddressList] = useState(false)
const changeShow = () => { const changeShow = () => {
@ -84,8 +82,9 @@ export default memo(forwardRef(({onSelect, onChangeShipmentMode, orderInfo, stat
if(limitEdit()) changeReceivingStatus(value) if(limitEdit()) changeReceivingStatus(value)
} }
const changeReceivingStatus = debounce(async (value) => { const changeReceivingStatus = debounce(async (value) => {
if(!orderInfo) return false if(!orderInfo || value == receivingStatus) return false
if(status == 1) { if(status == 1) {
onChangeShipmentMode?.(value) onChangeShipmentMode?.(value)
setReceivingStatus(value) setReceivingStatus(value)
@ -142,9 +141,8 @@ export default memo(forwardRef(({onSelect, onChangeShipmentMode, orderInfo, stat
//根据订单状态判断是否显示物流 //根据订单状态判断是否显示物流
const logisticsShowList = [SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value] const logisticsShowList = [SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value]
const logisticsShow = useMemo(() => { const logisticsShow = useMemo(() => {
console.log('aa:',orderInfo?.status)
return logisticsShowList.includes(orderInfo?.status as number) return logisticsShowList.includes(orderInfo?.status as number)
}, [orderInfo]) }, [orderInfo])

View File

@ -4,7 +4,7 @@ import { memo, useEffect, useMemo, useRef, useState } from "react";
import classnames from "classnames"; import classnames from "classnames";
import styles from './index.module.scss' import styles from './index.module.scss'
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useTimeCountDown } from "@/use/useCommonData"; import { useTimeCountDown } from "@/use/useCommon";
import { ORDER_STATUS, PAYMENT_METHOD, PAYMENT_METHOD_PARAM } from "@/common/enum"; import { ORDER_STATUS, PAYMENT_METHOD, PAYMENT_METHOD_PARAM } from "@/common/enum";
type List = { type List = {

View File

@ -23,12 +23,12 @@ export default memo(({show, onClose, orderId}:Param) => {
}) })
useEffect(() => { useEffect(() => {
if(orderId) { console.log('show&&orderId::', show)
if(show&&orderId) {
submitData.current.sale_order_id = orderId submitData.current.sale_order_id = orderId
refundExplain() refundExplain()
} }
}, [orderId, show])
}, [orderId])
//申请退款 //申请退款
const {fetchData} = ApplyRefundApi() const {fetchData} = ApplyRefundApi()
@ -48,7 +48,7 @@ export default memo(({show, onClose, orderId}:Param) => {
const {fetchData: refundExplainFetchdata} = RefundExplainApi() const {fetchData: refundExplainFetchdata} = RefundExplainApi()
const refundExplain = async () => { const refundExplain = async () => {
let res = await refundExplainFetchdata() let res = await refundExplainFetchdata()
setList(res.data.list) setList(() => res.data.list)
} }
const [reason, setReason] = useState({id:0, name:''}) const [reason, setReason] = useState({id:0, name:''})
const reasonSelect = useCallback((e) => { const reasonSelect = useCallback((e) => {
@ -87,7 +87,7 @@ export default memo(({show, onClose, orderId}:Param) => {
return ( return (
<> <>
<Popup show={show} title="申请退款" onClose={onClose} > <Popup show={show} title="申请退款33" onClose={onClose} >
<View className={styles.apply_after_sales_con}> <View className={styles.apply_after_sales_con}>
<View className={styles.returnSaleInput_item}> <View className={styles.returnSaleInput_item}>
<View className={styles.title}>退</View> <View className={styles.title}>退</View>

View File

@ -102,7 +102,7 @@ export default memo(({order, comfirm = false}:Param) => {
return (item.value.includes(order.status)|| order.sale_mode == 1) return (item.value.includes(order.status)|| order.sale_mode == 1)
} else if (item.id == 3) { } else if (item.id == 3) {
//空差优惠只有大货才有 //空差优惠只有大货才有
return (item.value.includes(order.status) && order.sale_mode == 1 ) return (item.value.includes(order.status) && order.sale_mode == 0 )
} else { } else {
return (item.value.includes(order.status) && order.sale_mode != 1 ) return (item.value.includes(order.status) && order.sale_mode != 1 )
} }

View File

@ -12,7 +12,7 @@ import { GetOrderPayApi, SubmitOrderPayApi, GetPrepayOrderPayApi, SubmitPrepayOr
import { formatPriceDiv } from "@/common/fotmat"; import { formatPriceDiv } from "@/common/fotmat";
import {alert} from "@/common/common" import {alert} from "@/common/common"
import { ORDER_STATUS, PAYMENT_METHOD, PAYMENT_METHOD_PARAM, SUBSCRIPTION_MESSAGE_SCENE } from "@/common/enum"; import { ORDER_STATUS, PAYMENT_METHOD, PAYMENT_METHOD_PARAM, SUBSCRIPTION_MESSAGE_SCENE } from "@/common/enum";
import { UseSubscriptionMessage } from "@/use/useCommonData"; import { UseSubscriptionMessage } from "@/use/useCommon";
type Param = { type Param = {
show?: true|false, show?: true|false,

View File

@ -242,13 +242,16 @@ import styles from './index.module.scss'
//查看物流 //查看物流
const getLogistics = useCallback(() => { const getLogistics = useCallback(() => {
const list = orderDetail?.delivery_appendix_url.map(item => { if (orderDetail?.delivery_appendix_url) {
return formatImgUrl(item) const list = orderDetail?.delivery_appendix_url?.map(item => {
}) return formatImgUrl(item)
Taro.previewImage({ })
current: list[0], // 当前显示 Taro.previewImage({
urls: list // 需要预览的图片http链接列表 current: list[0], // 当前显示
}) urls: list // 需要预览的图片http链接列表
})
}
}, [orderDetail]) }, [orderDetail])
//添加购物车 //添加购物车

View File

@ -1,66 +0,0 @@
.apply_after_sales_con{
padding: 20px;
.returnSaleInput_item{
display: flex;
align-items: center;
padding-bottom: 50px;
flex-wrap: wrap;
.title{
font-size: $font_size;
font-weight: 700;
width: 119px;
}
.select{
flex:1;
height: 60px;
border: 2px solid #e6e6e6;
border-radius: 10px;
margin-left: 20px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
font-size: 26px;
color: $color_font_two;
.miconfont{
font-size: 30px;
}
}
.upload_image{
flex:1;
}
}
.btns_con{
width: 100%;
bottom:0;
box-sizing: border-box;
margin-top: 50px;
.btns_two{
display: flex;
height: 82px;
// border: 1PX solid #007aff;
font-size: $font_size_big;
border-radius: 40px;
margin-bottom: 20px;
.rest_btn{
flex:1;
border: 1PX solid #007aff;
border-radius: 40px 0 0 40px;
text-align: center;
line-height: 82px;
color: $color_main;
background-color: #fff;
}
.verify_btn{
flex:1;
border-radius: 0 40px 40px 0;
background: #007aff;
text-align: center;
line-height: 82px;
color: #fff;
}
}
}
}

View File

@ -1,99 +0,0 @@
import Popup from "@/components/popup";
import TextareaEnhance from "@/components/textareaEnhance";
import { ScrollView, Text, View } from "@tarojs/components";
import { memo, useCallback, useEffect, useRef, useState } from "react";
import styles from './index.module.scss'
import classnames from "classnames";
import { ApplyRefundApi } from "@/api/salesAfterOrder";
import { alert } from "@/common/common";
import ReasonPopup from "@/pages/order/components/reasonPopup";
type Param = {
show?: true|false,
onClose?: () => void,
orderId?: number
}
export default memo(({show, onClose, orderId}:Param) => {
//提交的数据
const submitData = useRef({
return_explain: 1,
sale_order_id: 0,
reason_describe: ''
})
useEffect(() => {
if(orderId)
submitData.current.sale_order_id = orderId
}, [orderId])
//申请退款
const {fetchData} = ApplyRefundApi()
const getApplyRefund = async () => {
let res = await fetchData(submitData.current)
if(!submitData.current.return_explain) return alert.error('请选择说明原因')
if(res.success) {
alert.error('申请成功')
} else {
alert.error('申请失败')
}
onClose?.()
}
//获取说明数据
const [list, setList] = useState<any[]>([])
//备注
const getOtherReason = useCallback((val) => {
submitData.current.reason_describe = val
}, [])
//显示说明
const [showReason, setShowReason] = useState(false)
const closeReason = useCallback(() => {
setShowReason(false)
}, [])
//提交
const onSubmit = (val) => {
if(val == 2) {
getApplyRefund()
} else {
onClose?.()
submitData.current = {
return_explain: 0,
sale_order_id: 0,
reason_describe: ''
}
}
}
return (
<>
<Popup show={show} title="申请退款" onClose={onClose} >
<View className={styles.apply_after_sales_con}>
<View className={styles.returnSaleInput_item}>
<View className={styles.title}>退</View>
<View className={styles.select} onClick={() => setShowReason(true)}>
<Text></Text>
<Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text>
</View>
</View>
<TextareaEnhance onChange={getOtherReason} title='备注' placeholder="请输入退款备注"/>
<View className={styles.btns_con}>
<View className={styles.btns_two}>
<View className={styles.rest_btn} onClick={() => onSubmit(1)}></View>
<View className={styles.verify_btn } onClick={() => onSubmit(2)}></View>
</View >
</View>
</View>
</Popup>
<ReasonPopup show={showReason} onClose={closeReason} list={list} title="退款说明"/>
</>
)
})

View File

@ -12,9 +12,9 @@ import OrderStatusList from "./components/orderStatusList"
import Payment from "../order/components/payment" import Payment from "../order/components/payment"
import { AddShoppingCartApi } from "@/api/shopCart" import { AddShoppingCartApi } from "@/api/shopCart"
import ShopCart from "@/components/shopCart" import ShopCart from "@/components/shopCart"
import ApplyRefund from "./components/applyRefund"
import { alert } from "@/common/common" import { alert } from "@/common/common"
import { useRouter } from "@tarojs/runtime" import { useRouter } from "@tarojs/runtime"
import ApplyRefund from "../order/components/applyRefund"
export default () => { export default () => {
const {checkLogin} = useLogin() const {checkLogin} = useLogin()

View File

@ -1,12 +1,12 @@
//公共数据,什么都可往里面传,可用于临时传参 //公共数据,什么都可往里面传,可用于临时传参
import Taro from '@tarojs/taro' import Taro from '@tarojs/taro'
import { import {
SET_COMMON, SET_SHOPCOUNT,
CLEAR_COMMON CLEAR_SHOPCOUNT
} from '../constants/common' } from '../constants/common'
export type DataParam = { export type DataParam = {
common: any shopCount: number
} }
type Action = { type Action = {
@ -17,18 +17,18 @@ type Action = {
const INIT = { const INIT = {
common: Taro.getStorageSync('common')?JSON.parse(Taro.getStorageSync('common')):null, shopCount: Taro.getStorageSync('shopCount')?JSON.parse(Taro.getStorageSync('shopCount')):null,
} }
export default function counter (state = INIT, action: Action) { export default function counter (state = INIT, action: Action) {
const {type, data} = action const {type, data} = action
switch (type) { switch (type) {
case SET_COMMON: case SET_SHOPCOUNT:
Taro.setStorageSync('common',JSON.stringify(data)) Taro.setStorageSync('shopCount',JSON.stringify(data))
return {...state,...data} return {...state,...data}
case CLEAR_COMMON: case CLEAR_SHOPCOUNT:
Taro.removeStorageSync('common') Taro.removeStorageSync('shopCount')
return {...state, common: null} return {...state, shopCount: null}
default: default:
return state return state
} }

92
src/use/useCommon.ts Normal file
View File

@ -0,0 +1,92 @@
import { SubscriptionMessageApi } from "@/api/user"
import Taro from "@tarojs/taro"
import dayjs from "dayjs"
import { useEffect, useRef, useState } from "react"
//倒计时hook
export const useTimeCountDown = () => {
const [showTime, setShowTime] = useState({
DD: '',
HH: '',
MM: '',
SS: ''
})
const [timeStatus, setTimeStatus] = useState<0|1|2>(0) //倒计时状体 0:倒计时未开始 1:倒计时中, 2倒计时已结束
const timeObj:any = useRef()
const endTime = useRef('')
const onStart = (val = '') => {
console.log('time:::', val)
endTime.current = val
if(endTime.current) {
clearInterval(timeObj.current)
timeObj.current = setInterval(() => {
count_down()
}, 1000)
}
}
useEffect(() => {
return () => {
clearInterval(timeObj.current)
}
}, [])
const count_down = () => {
var startData = dayjs();
var endDate = dayjs(endTime.current);
setTimeStatus(() => 1)
if(startData >= endDate) {
clearInterval(timeObj.current)
setShowTime((e) => ({...e, DD:'00', HH:'00', MM:'00', SS:'00'}))
setTimeStatus(() => 2)
return false
}
var _dd = endDate.diff(startData,'day');
var _hh = endDate.diff(startData,'hour');
var _mm = endDate.diff(startData,'minute');
var _ss = endDate.diff(startData,'second');
// 转换
var hh = _hh - (_dd*24);
var mm = _mm - (_hh*60);
var ss = _ss - (_mm*60);
// 格式化
var DD = ('00'+_dd).slice(-2);
var HH = ('00'+hh).slice(-2);
var MM = ('00'+mm).slice(-2);
var SS = ('00'+ss).slice(-2);
console.log('endTime::', `${DD}-${HH}-${MM}-${SS}`)
setShowTime((e) => ({...e, DD, HH, MM, SS}))
}
return {
showTime,
onStart,
timeStatus
}
}
//订阅消息hook
export const UseSubscriptionMessage = () => {
const {fetchData: fetchDataMessage} = SubscriptionMessageApi()
const openSubscriptionMessage = ({orderId = 0, scenes = 0}:{orderId?: number, scenes: number}) => {
return new Promise(async (resolve) => {
let params:{sale_order_id?: number, scenes?: number} = {}
orderId&&(params.sale_order_id = orderId)
params.scenes = scenes
let res = await fetchDataMessage(params)
if(res.success&&res.data.TemplateID&&res.data.TemplateID.length > 0) {
Taro.requestSubscribeMessage({
tmplIds: res.data.TemplateID,
complete: function (res) {
resolve(res)
}
})
} else {
resolve(true)
}
})
}
return {
openSubscriptionMessage
}
}

View File

@ -1,92 +1,51 @@
import { SubscriptionMessageApi } from "@/api/user" import { useDispatch, useSelector } from 'react-redux'
import Taro from "@tarojs/taro" import {SET_SHOPCOUNT, CLEAR_SHOPCOUNT} from '@/constants/common'
import dayjs from "dayjs" import {DataParam} from '@/reducers/commonData'
import { useEffect, useRef, useState } from "react" export default () => {
const commonObj = useSelector((state:DataParam) => state) as DataParam
const dispatch = useDispatch()
// const setToken = (shopCount: number) => {
// dispatch({type:SET_SHOPCOUNT, data:{shopCount}})
// }
//倒计时hook // const setSessionKey = (sessionkey: string) => {
export const useTimeCountDown = () => { // dispatch({type:SET_SESSIONKEY, data:{session_key: sessionkey}})
const [showTime, setShowTime] = useState({ // }
DD: '',
HH: '',
MM: '',
SS: ''
})
const [timeStatus, setTimeStatus] = useState<0|1|2>(0) //倒计时状体 0:倒计时未开始 1:倒计时中, 2倒计时已结束
const timeObj:any = useRef()
const endTime = useRef('')
const onStart = (val = '') => {
console.log('time:::', val)
endTime.current = val
if(endTime.current) {
clearInterval(timeObj.current)
timeObj.current = setInterval(() => {
count_down()
}, 1000)
}
}
useEffect(() => {
return () => {
clearInterval(timeObj.current)
}
}, [])
const count_down = () => {
var startData = dayjs();
var endDate = dayjs(endTime.current);
setTimeStatus(() => 1)
if(startData >= endDate) {
clearInterval(timeObj.current)
setShowTime((e) => ({...e, DD:'00', HH:'00', MM:'00', SS:'00'}))
setTimeStatus(() => 2)
return false
}
var _dd = endDate.diff(startData,'day');
var _hh = endDate.diff(startData,'hour');
var _mm = endDate.diff(startData,'minute');
var _ss = endDate.diff(startData,'second');
// 转换
var hh = _hh - (_dd*24);
var mm = _mm - (_hh*60);
var ss = _ss - (_mm*60);
// 格式化
var DD = ('00'+_dd).slice(-2);
var HH = ('00'+hh).slice(-2);
var MM = ('00'+mm).slice(-2);
var SS = ('00'+ss).slice(-2);
console.log('endTime::', `${DD}-${HH}-${MM}-${SS}`)
setShowTime((e) => ({...e, DD, HH, MM, SS}))
}
return {
showTime,
onStart,
timeStatus
}
}
// const setUserInfo = (userInfo: UserParam) => {
// dispatch({type:SET_USERINFO, data:{userInfo}})
// }
//订阅消息hook // const setAdminUserInfo = (adminUserInfo: UserAdminParam) => {
export const UseSubscriptionMessage = () => { // dispatch({type:SET_ADMINUSERINFO, data:{adminUserInfo}})
const {fetchData: fetchDataMessage} = SubscriptionMessageApi() // }
const openSubscriptionMessage = ({orderId = 0, scenes = 0}:{orderId?: number, scenes: number}) => {
return new Promise(async (resolve) => {
let params:{sale_order_id?: number, scenes?: number} = {}
orderId&&(params.sale_order_id = orderId)
params.scenes = scenes
let res = await fetchDataMessage(params)
if(res.success&&res.data.TemplateID&&res.data.TemplateID.length > 0) {
Taro.requestSubscribeMessage({
tmplIds: res.data.TemplateID,
complete: function (res) {
resolve(res)
}
})
} else {
resolve(true)
}
})
}
return { // const setSortCode = (sortCode:SortCodeParam) => {
openSubscriptionMessage // dispatch({type:SET_SORTCODE, data:{sort_code:sortCode}})
} // }
} // const removeUserInfo = () => {
// dispatch({type:CLEAR_USERINFO})
// }
// const removeToken = () => {
// dispatch({type:CLEAR_TOKEN})
// }
// const removeSessionKey = () => {
// dispatch({type:CLEAR_SESSIONKEY})
// }
// return {
// setToken,
// setUserInfo,
// setAdminUserInfo,
// setSessionKey,
// removeUserInfo,
// removeToken,
// removeSessionKey,
// setSortCode,
// userInfo, //响应式数据返回
// }
}