diff --git a/src/api/favorite.ts b/src/api/favorite.ts index 768ecc9..334cf3a 100644 --- a/src/api/favorite.ts +++ b/src/api/favorite.ts @@ -66,4 +66,26 @@ export const DelFavoriteProductApi = () => { url: `/v1/mall/favorite/product`, 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", + }) } \ No newline at end of file diff --git a/src/api/onlinePay.ts b/src/api/onlinePay.ts index b5ce06f..8b847d2 100644 --- a/src/api/onlinePay.ts +++ b/src/api/onlinePay.ts @@ -1,3 +1,4 @@ +import { CAP_HTML_TO_IMAGE_BASE_URL } from "@/common/constant" import { useRequest } from "@/use/useHttp" /** @@ -5,8 +6,8 @@ import { useRequest } from "@/use/useHttp" */ export const GetPayCode = () => { return useRequest({ - url: `/`, - base_url: 'http://192.168.1.127:8081/caphtml', + url: `/xima-caphtml/caphtml`, + base_url: CAP_HTML_TO_IMAGE_BASE_URL, method: "post", }) } diff --git a/src/common/constant.js b/src/common/constant.js index 6d6ce4d..346a828 100644 --- a/src/common/constant.js +++ b/src/common/constant.js @@ -22,6 +22,10 @@ export const UPLOAD_CDN_URL = `https://v0.api.upyun.com/` // cdn 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 || ''}`; diff --git a/src/components/orderBtns/index.tsx b/src/components/orderBtns/index.tsx index aaef418..d54411d 100644 --- a/src/components/orderBtns/index.tsx +++ b/src/components/orderBtns/index.tsx @@ -8,7 +8,7 @@ import classnames from "classnames"; import styles from './index.module.scss' import { AddShoppingCartApi } from "@/api/shopCart" import { ApplyRefundApi } from "@/api/salesAfterOrder" -import { UseSubscriptionMessage } from "@/use/useCommonData" +import { UseSubscriptionMessage } from "@/use/useCommon" import { throttle } from "@/common/util" type Param = { @@ -52,7 +52,9 @@ export default memo(({orderInfo, onClick}:Param) => { { id: 1, - value: [SaleOrderStatusBooking.value, + value: [ + SaleorderstatusWaitingPrePayment.value, + SaleOrderStatusBooking.value, SaleOrderStatusArranging.value, SaleOrderStatusArranged.value, SaleOrderStatusWaitingPayment.value, @@ -96,7 +98,6 @@ export default memo(({orderInfo, onClick}:Param) => { }, ]) - //判断是否显示该按钮 const orderBtnsShow = (item) => { if(orderInfo) { @@ -104,7 +105,7 @@ export default memo(({orderInfo, onClick}:Param) => { //取消订单按钮 return( orderInfo.actual_amount == 0 && item.value.includes(orderInfo.status)) //在待发货之前没有付过款 } else if (item.id == 2) { - //去付款按钮 + //去付款按钮(这里后端偷偷改了逻辑) return( orderInfo.wait_pay_amount != 0 && item.value.includes(orderInfo.status)) //只要没有付完款就显示 } else if(item.id == 3 ) { //申请退款, 只有大货才有 diff --git a/src/components/uploadImage/index.tsx b/src/components/uploadImage/index.tsx index 016da80..204d5dc 100644 --- a/src/components/uploadImage/index.tsx +++ b/src/components/uploadImage/index.tsx @@ -41,7 +41,7 @@ const PictureItem:FC = memo(({onChange, defaultList, onlyRead = fals //预览图片 const showImage = () => { - let list = imageList.map(item => { + let list = imageList?.map(item => { return formatImgUrl(item, '!w800') }) Taro.previewImage({ @@ -52,7 +52,7 @@ const PictureItem:FC = memo(({onChange, defaultList, onlyRead = fals return ( - {imageList.map((item, index) => + {imageList?.map((item, index) => {!onlyRead && delImage(index)} className={classnames(styles.miconfont_close, 'iconfont icon-qingkong')}>} diff --git a/src/constants/common.ts b/src/constants/common.ts index 65b352f..ee41e26 100644 --- a/src/constants/common.ts +++ b/src/constants/common.ts @@ -1,2 +1,2 @@ -export const SET_COMMON = 'setCommon' -export const CLEAR_COMMON = 'clearCommon' \ No newline at end of file +export const SET_SHOPCOUNT = 'set_shopCount' +export const CLEAR_SHOPCOUNT = 'clear_shopCount' \ No newline at end of file diff --git a/src/pages/collection/collectionClass/index.tsx b/src/pages/collection/collectionClass/index.tsx index 16a0447..5c0f18f 100644 --- a/src/pages/collection/collectionClass/index.tsx +++ b/src/pages/collection/collectionClass/index.tsx @@ -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 { getFilterData } from "@/common/util"; import Product from "../components/product"; @@ -6,7 +6,7 @@ import Search from "@/components/search" import { Text, View } from "@tarojs/components" import Taro, { useRouter } from "@tarojs/taro"; 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 UpdatePopup from "../components/updatePopup"; import styles from './index.module.scss' @@ -19,24 +19,33 @@ export default () => { const router = useRouter() //获取收藏夹面料 - const [list, setList] = useState([]) - const getFavoriteInfo = () => { - let arr:any[] = [] - new Array(10).fill("").map((item, index) => { - arr.push({id:index, code: index}) - }) - setList(arr) + const {fetchData: fetchDataDetailFavoriteProduct} = DetailFavoriteProductApi() + const [colorInfo, setColorInfo] = useState({}) + const getFavoriteInfo = async () => { + let res = await fetchDataDetailFavoriteProduct(searchData) + if(res.success) { + setColorInfo(res.data) + } } //获取搜索数据 - const [searchData, setSearchData] = useState('') + const [searchData, setSearchData] = useState({id:0, key: ''}) const onSearch = useCallback((e) => { setSearchData(() => e) }, []) useEffect(() => { - getFavoriteInfo() + let id = router.params.id || 0 + if(id) setSearchData((e) => ({...e, id: parseInt(id as string)})) + }, []) + + useEffect(() => { + if(searchData.id) getFavoriteInfo() }, [searchData]) + const productList = useMemo(() => { + return colorInfo.product_color_list + }, [colorInfo]) + //获取选中的id const [ids, setIds] = useState([]) @@ -57,11 +66,11 @@ export default () => { const [selectStatus, setSelectStatus] = useState<1|2|3>(3) useEffect(() => { - if(list.length) { - if(ids.length == list.length) { + if(colorInfo.product_color_list?.length) { + if(ids.length == colorInfo.product_color_list.length) { setSelectStatus(1) 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) setAllSelectStatus(false) } else { @@ -69,7 +78,7 @@ export default () => { setAllSelectStatus(false) } } - }, [ids, list]) + }, [ids, colorInfo]) const [collectionShow, setCollectionShow] = useState(false) @@ -77,8 +86,25 @@ export default () => { 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 ( @@ -93,11 +119,11 @@ export default () => { setCollectionShow(true)}>移动到 - 取消收藏 + 取消收藏 - + diff --git a/src/pages/collection/components/product/index.tsx b/src/pages/collection/components/product/index.tsx index 1e48ba7..1af96e5 100644 --- a/src/pages/collection/components/product/index.tsx +++ b/src/pages/collection/components/product/index.tsx @@ -13,11 +13,12 @@ type Params = { selectStatus?: 1|2|3, //1全选,2不做处理,3全清空 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([]) useEffect(() => { - setList(() => [...productList]) + setList(() => productList||[]) },[productList]) + useEffect(() => { if(list.length && selectStatus != 2) { @@ -51,7 +52,7 @@ export default ({productList = [], onSelectIds, selectStatus = 2, openCheckBox = useEffect(() => { let ids: number[] = [] list.map(item => { - if(item.check) ids.push(item.id) + if(item.check) ids.push(item.product_id) }) onSelectIds?.(ids) }, [list]) diff --git a/src/pages/collection/index.tsx b/src/pages/collection/index.tsx index c78a1ac..827cbd5 100644 --- a/src/pages/collection/index.tsx +++ b/src/pages/collection/index.tsx @@ -113,14 +113,16 @@ export default () => { if(res.success) { alert.success('编辑成功') getFavoriteList() + closeUpdate() } else { alert.error('编辑失败') } } const onBatchManagement = useCallback(() => { - // goLink('pages/collection/collectionClass/index', {id: }) - }, []) + goLink('/pages/collection/collectionClass/index', {id: initData.id}) + closeUpdate() + }, [initData]) //操作文件夹 const onCreatSuccess = (submitData) => { diff --git a/src/pages/order/comfirm.tsx b/src/pages/order/comfirm.tsx index 586b157..30a62b5 100644 --- a/src/pages/order/comfirm.tsx +++ b/src/pages/order/comfirm.tsx @@ -14,7 +14,7 @@ import SubmitOrderBtn from "./components/submitOrderBtn"; import AddressInfoDetail from "./components/addressInfoDetail"; import { SubscriptionMessageApi } from "@/api/user"; import { SUBSCRIPTION_MESSAGE_SCENE } from "@/common/enum"; -import { UseSubscriptionMessage } from "@/use/useCommonData"; +import { UseSubscriptionMessage } from "@/use/useCommon"; export default () => { diff --git a/src/pages/order/components/addressInfoDetail/index.tsx b/src/pages/order/components/addressInfoDetail/index.tsx index 8ec72ac..6b9c3dd 100644 --- a/src/pages/order/components/addressInfoDetail/index.tsx +++ b/src/pages/order/components/addressInfoDetail/index.tsx @@ -6,7 +6,7 @@ import AddressList from "@/components/AddressList"; import Popup from "@/components/popup"; import { Text, View } from "@tarojs/components" 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' export type AddressInfoParam = { @@ -62,8 +62,6 @@ export default memo(forwardRef(({onSelect, onChangeShipmentMode, orderInfo, stat }, [orderInfo]) - - //打开地址列表 const [showAddressList, setShowAddressList] = useState(false) const changeShow = () => { @@ -84,8 +82,9 @@ export default memo(forwardRef(({onSelect, onChangeShipmentMode, orderInfo, stat if(limitEdit()) changeReceivingStatus(value) } + const changeReceivingStatus = debounce(async (value) => { - if(!orderInfo) return false + if(!orderInfo || value == receivingStatus) return false if(status == 1) { onChangeShipmentMode?.(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(() => { - console.log('aa:',orderInfo?.status) return logisticsShowList.includes(orderInfo?.status as number) }, [orderInfo]) diff --git a/src/pages/order/components/advanceOrderState/index.tsx b/src/pages/order/components/advanceOrderState/index.tsx index 43467f2..01d21a2 100644 --- a/src/pages/order/components/advanceOrderState/index.tsx +++ b/src/pages/order/components/advanceOrderState/index.tsx @@ -4,7 +4,7 @@ import { memo, useEffect, useMemo, useRef, useState } from "react"; import classnames from "classnames"; import styles from './index.module.scss' 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"; type List = { diff --git a/src/pages/order/components/applyRefund/index.tsx b/src/pages/order/components/applyRefund/index.tsx index b64db9d..769e66d 100644 --- a/src/pages/order/components/applyRefund/index.tsx +++ b/src/pages/order/components/applyRefund/index.tsx @@ -23,12 +23,12 @@ export default memo(({show, onClose, orderId}:Param) => { }) useEffect(() => { - if(orderId) { + console.log('show&&orderId::', show) + if(show&&orderId) { submitData.current.sale_order_id = orderId refundExplain() } - - }, [orderId]) + }, [orderId, show]) //申请退款 const {fetchData} = ApplyRefundApi() @@ -48,7 +48,7 @@ export default memo(({show, onClose, orderId}:Param) => { const {fetchData: refundExplainFetchdata} = RefundExplainApi() const refundExplain = async () => { let res = await refundExplainFetchdata() - setList(res.data.list) + setList(() => res.data.list) } const [reason, setReason] = useState({id:0, name:''}) const reasonSelect = useCallback((e) => { @@ -87,7 +87,7 @@ export default memo(({show, onClose, orderId}:Param) => { return ( <> - + 退款说明 diff --git a/src/pages/order/components/kindList/index.tsx b/src/pages/order/components/kindList/index.tsx index fc32cc1..1e33a09 100644 --- a/src/pages/order/components/kindList/index.tsx +++ b/src/pages/order/components/kindList/index.tsx @@ -102,7 +102,7 @@ export default memo(({order, comfirm = false}:Param) => { return (item.value.includes(order.status)|| order.sale_mode == 1) } 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 { return (item.value.includes(order.status) && order.sale_mode != 1 ) } diff --git a/src/pages/order/components/payment/index.tsx b/src/pages/order/components/payment/index.tsx index acb049f..7864f44 100644 --- a/src/pages/order/components/payment/index.tsx +++ b/src/pages/order/components/payment/index.tsx @@ -12,7 +12,7 @@ import { GetOrderPayApi, SubmitOrderPayApi, GetPrepayOrderPayApi, SubmitPrepayOr import { formatPriceDiv } from "@/common/fotmat"; import {alert} from "@/common/common" 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 = { show?: true|false, diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx index 2d3f438..55dc75e 100644 --- a/src/pages/order/index.tsx +++ b/src/pages/order/index.tsx @@ -242,13 +242,16 @@ import styles from './index.module.scss' //查看物流 const getLogistics = useCallback(() => { - const list = orderDetail?.delivery_appendix_url.map(item => { - return formatImgUrl(item) - }) - Taro.previewImage({ - current: list[0], // 当前显示 - urls: list // 需要预览的图片http链接列表 - }) + if (orderDetail?.delivery_appendix_url) { + const list = orderDetail?.delivery_appendix_url?.map(item => { + return formatImgUrl(item) + }) + Taro.previewImage({ + current: list[0], // 当前显示 + urls: list // 需要预览的图片http链接列表 + }) + } + }, [orderDetail]) //添加购物车 diff --git a/src/pages/orderList/components/applyRefund/index.module.scss b/src/pages/orderList/components/applyRefund/index.module.scss deleted file mode 100644 index ec17129..0000000 --- a/src/pages/orderList/components/applyRefund/index.module.scss +++ /dev/null @@ -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; - } - } - } -} \ No newline at end of file diff --git a/src/pages/orderList/components/applyRefund/index.tsx b/src/pages/orderList/components/applyRefund/index.tsx deleted file mode 100644 index 8b81cd4..0000000 --- a/src/pages/orderList/components/applyRefund/index.tsx +++ /dev/null @@ -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([]) - - - //备注 - 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 ( - <> - - - - 退款说明 - setShowReason(true)}> - 请选择 - - - - - - - onSubmit(1)}>取消 - onSubmit(2)}>确认 - - - - - - - ) -}) \ No newline at end of file diff --git a/src/pages/orderList/index.tsx b/src/pages/orderList/index.tsx index 42adcc6..1ec9815 100644 --- a/src/pages/orderList/index.tsx +++ b/src/pages/orderList/index.tsx @@ -12,9 +12,9 @@ import OrderStatusList from "./components/orderStatusList" import Payment from "../order/components/payment" import { AddShoppingCartApi } from "@/api/shopCart" import ShopCart from "@/components/shopCart" -import ApplyRefund from "./components/applyRefund" import { alert } from "@/common/common" import { useRouter } from "@tarojs/runtime" +import ApplyRefund from "../order/components/applyRefund" export default () => { const {checkLogin} = useLogin() diff --git a/src/reducers/commonData.ts b/src/reducers/commonData.ts index 17968fc..ecbf481 100644 --- a/src/reducers/commonData.ts +++ b/src/reducers/commonData.ts @@ -1,12 +1,12 @@ //公共数据,什么都可往里面传,可用于临时传参 import Taro from '@tarojs/taro' import { - SET_COMMON, - CLEAR_COMMON + SET_SHOPCOUNT, + CLEAR_SHOPCOUNT } from '../constants/common' export type DataParam = { - common: any + shopCount: number } type Action = { @@ -17,18 +17,18 @@ type Action = { 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) { const {type, data} = action switch (type) { - case SET_COMMON: - Taro.setStorageSync('common',JSON.stringify(data)) + case SET_SHOPCOUNT: + Taro.setStorageSync('shopCount',JSON.stringify(data)) return {...state,...data} - case CLEAR_COMMON: - Taro.removeStorageSync('common') - return {...state, common: null} + case CLEAR_SHOPCOUNT: + Taro.removeStorageSync('shopCount') + return {...state, shopCount: null} default: return state } diff --git a/src/use/useCommon.ts b/src/use/useCommon.ts new file mode 100644 index 0000000..0b6c366 --- /dev/null +++ b/src/use/useCommon.ts @@ -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 + } + +} diff --git a/src/use/useCommonData.ts b/src/use/useCommonData.ts index 0b6c366..520a6d0 100644 --- a/src/use/useCommonData.ts +++ b/src/use/useCommonData.ts @@ -1,92 +1,51 @@ -import { SubscriptionMessageApi } from "@/api/user" -import Taro from "@tarojs/taro" -import dayjs from "dayjs" -import { useEffect, useRef, useState } from "react" +import { useDispatch, useSelector } from 'react-redux' +import {SET_SHOPCOUNT, CLEAR_SHOPCOUNT} from '@/constants/common' +import {DataParam} from '@/reducers/commonData' +export default () => { + const commonObj = useSelector((state:DataParam) => state) as DataParam + const dispatch = useDispatch() + +// const setToken = (shopCount: number) => { +// dispatch({type:SET_SHOPCOUNT, data:{shopCount}}) +// } -//倒计时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 - } -} +// const setSessionKey = (sessionkey: string) => { +// dispatch({type:SET_SESSIONKEY, data:{session_key: sessionkey}}) +// } +// const setUserInfo = (userInfo: UserParam) => { +// dispatch({type:SET_USERINFO, data:{userInfo}}) +// } -//订阅消息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) - } - }) - } +// const setAdminUserInfo = (adminUserInfo: UserAdminParam) => { +// dispatch({type:SET_ADMINUSERINFO, data:{adminUserInfo}}) +// } - return { - openSubscriptionMessage - } - -} +// const setSortCode = (sortCode:SortCodeParam) => { +// 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, //响应式数据返回 +// } +} \ No newline at end of file