diff --git a/src/api/favorite.ts b/src/api/favorite.ts
new file mode 100644
index 0000000..b621784
--- /dev/null
+++ b/src/api/favorite.ts
@@ -0,0 +1,24 @@
+import { useRequest } from "@/use/useHttp"
+
+/**
+ * 获取收藏夹列表
+ * @returns
+*/
+export const FavoriteListApi = () => {
+ return useRequest({
+ url: `/v1/mall/favorite/list`,
+ method: "get",
+ })
+}
+
+
+/**
+ * 创建收藏夹列表
+ * @returns
+*/
+export const CreateFavoriteApi = () => {
+ return useRequest({
+ url: `/v1/mall/favorite`,
+ method: "post",
+ })
+}
diff --git a/src/common/constant.js b/src/common/constant.js
index d044f8e..8e37364 100644
--- a/src/common/constant.js
+++ b/src/common/constant.js
@@ -4,13 +4,13 @@
// export const BASE_URL = `http://10.0.0.5:50001/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 = `https://test.zzfzyc.com/lymarket` // 测试环境
-// export const BASE_URL = `http://192.168.1.30:40001/lymarket` // 发
+// export const BASE_URL = `https://test.zzfzyc.com/lymarket` // 测试环境
+// export const BASE_URL = `http://192.168.1.9:40001/lymarket` // 发
// export const BASE_URL = `http://192.168.1.30:50001/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.5:40001/lymarket` // 王霞
-// export const BASE_URL = `http://192.168.1.7:50002/lymarket` // 添
+export const BASE_URL = `http://192.168.1.7:50002/lymarket` // 添
// export const BASE_URL = `http://192.168.1.15:50001/lymarket` // 杰
// CDN
diff --git a/src/pages/collection/components/createPopup/index.module.scss b/src/pages/collection/components/createPopup/index.module.scss
new file mode 100644
index 0000000..82a58c3
--- /dev/null
+++ b/src/pages/collection/components/createPopup/index.module.scss
@@ -0,0 +1,66 @@
+
+.collection_con{
+ padding: 20px;
+ .title_item{
+ display: flex;
+ align-items: center;
+ padding-bottom: 20px;
+ flex-wrap: wrap;
+ .title{
+ font-size: $font_size;
+ font-weight: 700;
+ width: 60px;
+ }
+ .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;
+ .input{
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+ .desc_item{
+ display: flex;
+ .title{
+ font-size: $font_size;
+ font-weight: 700;
+ width: 60px;
+ padding-top: 20px;
+ }
+ .desc{
+ margin-left: 20px;
+ flex:1;
+ }
+ }
+ .btns_con{
+ width: 100%;
+ bottom:0;
+ box-sizing: border-box;
+ margin-top: 50px;
+ .btns_two{
+ display: flex;
+ height: 82px;
+ font-size: $font_size_big;
+ border-radius: 40px;
+ margin-bottom: 20px;
+ .verify_btn{
+ flex:1;
+ border-radius: 40px;
+ background: #007aff;
+ text-align: center;
+ line-height: 82px;
+ color: #fff;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/pages/collection/components/createPopup/index.tsx b/src/pages/collection/components/createPopup/index.tsx
new file mode 100644
index 0000000..340df98
--- /dev/null
+++ b/src/pages/collection/components/createPopup/index.tsx
@@ -0,0 +1,61 @@
+import Popup from "@/components/popup";
+import { Input, ScrollView, Text, View } from "@tarojs/components";
+import { memo, useCallback, useMemo, useRef } from "react";
+import classnames from "classnames";
+import styles from './index.module.scss'
+import TextareaEnhance from "@/components/textareaEnhance";
+import { CreateFavoriteApi } from "@/api/favorite";
+import { alert } from "@/common/common";
+
+//原因选择
+type ReasonInfoParam = {
+ show?: boolean, //显示
+ onClose?: () => void, //关闭
+}
+export default memo(({show = false, onClose}: ReasonInfoParam) => {
+
+
+ const submitData = useRef({
+ "name": '',
+ "remark": ''
+ })
+
+ const getOtherReason = useCallback((val) => {
+ submitData.current.remark = val
+ }, [])
+
+ const changeInput = useCallback((val) => {
+ submitData.current.remark = val.detail.value
+ }, [])
+
+ //创建
+ const {fetchData} = CreateFavoriteApi()
+ const onSubmit = async () => {
+ if(submitData.current.name) return alert.error('请输入收藏夹名称')
+ let res = await fetchData(submitData.current)
+ }
+ return (
+
+
+
+ 名称
+
+
+
+
+
+ 简介
+
+
+
+
+
+
+
+ onSubmit()}>确认
+
+
+
+
+ )
+})
\ No newline at end of file
diff --git a/src/pages/collection/index.module.scss b/src/pages/collection/index.module.scss
index e69de29..73573d6 100644
--- a/src/pages/collection/index.module.scss
+++ b/src/pages/collection/index.module.scss
@@ -0,0 +1,47 @@
+
+.collection_main {
+ padding: 0 20px;
+ min-height: 100%;
+ background-color: #F8F8F8;
+ .class_list{
+ margin-top: 30px;
+ .class_item{
+ margin: 20px 0;
+ }
+ .class_title{
+ display: flex;
+ margin-bottom: 20px;
+ .title{
+ flex: 1;
+ color: #000;
+ font-weight: 700;
+ font-size: 28px;
+ padding: 0 20px;
+ }
+ .fg{
+ padding: 0 10px;
+ }
+ .num, .fg{
+ color: #707070;
+ font-weight: normal;
+ }
+ .miconfont_left{
+ font-size: 30px;
+ color: #707070;
+ }
+ .miconfont_open{
+ transform: rotate(-90deg);
+ }
+ .miconfont_close {
+ transform: rotate(90deg);
+ }
+ .more{font-size: 26px;}
+
+ }
+ .class_con{
+ overflow: hidden;
+ transition: all 0.5s ease-in-out;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/pages/collection/index.tsx b/src/pages/collection/index.tsx
index 67a9d9f..8544bf1 100644
--- a/src/pages/collection/index.tsx
+++ b/src/pages/collection/index.tsx
@@ -1,12 +1,72 @@
+import { FavoriteListApi } from "@/api/favorite";
+import Product from "@/components/product";
import Search from "@/components/search"
-import { View } from "@tarojs/components"
+import { Text, View } from "@tarojs/components"
+import classnames from "classnames";
+import { useCallback, useEffect, useState } from "react";
+import CreatePopup from "./components/createPopup";
import styles from './index.module.scss'
export default () => {
+ const changeOpenCon = (item) => {
+ item.openStatus = !item.openStatus
+ setList((e) => [...e])
+ }
+
+ //获取列表
+ const [list, setList] = useState([])
+ const {fetchData: fetchDataList} = FavoriteListApi()
+ const getFavoriteList = async () => {
+ let res = await fetchDataList()
+ console.log('res::', res)
+ }
+ useEffect(() => {
+ getFavoriteList()
+ let res:any = []
+ new Array(10).fill('').map(item => {
+ res.push(
+ {
+ "create_time": "string",
+ "create_user_name": "string",
+ "creator_id": 0,
+ "id": 0,
+ "name": `${item}- 收藏夹`,
+ "product_color_list": [
+ {
+ "product_code": "string",
+ "product_id": 0,
+ "product_name": "string"
+ }
+ ],
+ "remark": "string",
+ "update_time": "string",
+ "update_user_name": "string",
+ "updater_id": 0
+ }
+ )
+ })
+ console.log('res33::', res)
+ setList(res)
+ }, [])
+
+
return (
-
+
console.log(e)} placeholder="请输入面料关键词" placeIcon="out" showBtn={true} />
+
+ {list?.map((item:any) =>
+ changeOpenCon(item)}>
+
+ 默认收藏夹·11
+ 更多
+
+
+
+
+ )}
+
+
)
}
\ No newline at end of file
diff --git a/src/pages/order/components/advanceOrderState/index.module.scss b/src/pages/order/components/advanceOrderState/index.module.scss
index 86e995e..9f2a56a 100644
--- a/src/pages/order/components/advanceOrderState/index.module.scss
+++ b/src/pages/order/components/advanceOrderState/index.module.scss
@@ -45,4 +45,20 @@
height: 100%;
}
}
+ .refresh{
+ position: absolute;
+ top: 23px;
+ right: 20px;
+ display: flex;
+ color: #dddddd;
+ display: flex;
+ align-items: center;
+
+ .mconfont{
+ font-size: 36px;
+ }
+ .refresh_text{
+ font-size: 25px;
+ }
+ }
}
\ No newline at end of file
diff --git a/src/pages/order/components/advanceOrderState/index.tsx b/src/pages/order/components/advanceOrderState/index.tsx
index 45faaf1..922e013 100644
--- a/src/pages/order/components/advanceOrderState/index.tsx
+++ b/src/pages/order/components/advanceOrderState/index.tsx
@@ -1,25 +1,74 @@
import { formatImgUrl } from "@/common/fotmat";
import { Image, Text, View } from "@tarojs/components";
-import { memo } from "react";
+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 { ORDER_STATUS, PAYMENT_METHOD, PAYMENT_METHOD_PARAM } from "@/common/enum";
+
+type List = {
+ status: string,
+ time: string,
+ tag: string,
+ desc: string,
+ expire_time: string
+}
+
+type Param = {
+ onRefresh?: () => void,
+ orderInfo?: {
+ logistics_details:List[], //订单状态列表
+ payment_method: 0|PAYMENT_METHOD_PARAM, //支付方式
+ status: number, //订单状态
+ }
+}
+
+
+export default memo(({orderInfo, onRefresh}:Param) => {
+
+ const {showTime, onStart, timeStatus} = useTimeCountDown()
+
+ //订单状态枚举
+ const {SaleorderstatusWaitingPrePayment} = ORDER_STATUS
+
+ //获取预付款最后时间
+ const endTime = useMemo(() => {
+ if(orderInfo?.status == SaleorderstatusWaitingPrePayment.value && orderInfo.logistics_details.length > 0) {
+ return orderInfo.logistics_details[0].expire_time
+ }
+ return ''
+ }, [orderInfo])
+
+ useEffect(() => {
+ if(endTime) onStart(endTime)
+ }, [endTime])
+
+ useEffect(() => {
+ if(timeStatus == 2) onRefresh?.()
+ }, [timeStatus])
+
-export default memo(() => {
return (
剩
- 23
+ {showTime.HH}
:
- 58
+ {showTime.MM}
:
- 55
+ {showTime.SS}
支付关闭,订单自动取消
+ onRefresh?.()}>
+
+ 刷新
+
)
})
\ No newline at end of file
diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx
index d76edd3..022c164 100644
--- a/src/pages/order/index.tsx
+++ b/src/pages/order/index.tsx
@@ -15,6 +15,7 @@ import ShopCart from "@/components/shopCart";
import { Text, Textarea, View } from "@tarojs/components"
import Taro, { useDidShow, usePullDownRefresh, useRouter } from "@tarojs/taro";
import classnames from "classnames";
+import dayjs from "dayjs";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import AddressInfoDetail from "./components/addressInfoDetail";
import AdvanceOrderState from "./components/advanceOrderState";
@@ -191,7 +192,7 @@ import styles from './index.module.scss'
}, [orderDetail])
//订单状态枚举
- const {SaleOrderStatusCancel} = ORDER_STATUS
+ const {SaleOrderStatusCancel, SaleorderstatusWaitingPrePayment} = ORDER_STATUS
//刷新页面
const refresh = useCallback(() => {
@@ -250,8 +251,8 @@ import styles from './index.module.scss'
return (
-
- {/* */}
+ {(orderDetail?.status != SaleorderstatusWaitingPrePayment.value)&&||
+ }
diff --git a/src/pages/user/index.tsx b/src/pages/user/index.tsx
index 9c24437..7c748b5 100644
--- a/src/pages/user/index.tsx
+++ b/src/pages/user/index.tsx
@@ -249,13 +249,13 @@ const Assets = (props: any) => {
预存款
-
+ {/*
{props.data.data.coupon_count || 0}
张
优惠券
-
+ */}
props.checkShow()}>
¥
diff --git a/src/use/useCommonData.ts b/src/use/useCommonData.ts
index eebefef..ee36c61 100644
--- a/src/use/useCommonData.ts
+++ b/src/use/useCommonData.ts
@@ -1,23 +1,60 @@
-import { useDispatch } from 'react-redux'
-import {SET_COMMON, CLEAR_COMMON} from '@/constants/common'
-import {useSelector} from '@/reducers/hooks'
-/**
- * 这个hook 用来临时存储数据用
- */
-export default () => {
- const {common: commonData} = useSelector(state => state.commonData)
- const dispatch = useDispatch()
- const setCommonData = (val:any) => {
- dispatch({type:SET_COMMON, data:val})
- }
+import dayjs from "dayjs"
+import { useEffect, useRef, useState } from "react"
- const removeCommonData = () => {
- dispatch({type:CLEAR_COMMON})
+//倒计时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 = '') => {
+ 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 {
- setCommonData,
- removeCommonData,
- commonData
+ showTime,
+ onStart,
+ timeStatus
}
-}
\ No newline at end of file
+}
diff --git a/src/use/useHttp.ts b/src/use/useHttp.ts
index 07312f4..79a544f 100644
--- a/src/use/useHttp.ts
+++ b/src/use/useHttp.ts
@@ -86,7 +86,7 @@ const showStatus = (status) => {
}
//登录状态
-const loginStatus: false|true = false // true:登录中
+let loginStatus: false|true = false // true:登录中
/**
* axios 请求状态封装,返回响应式数据 fetch(), loading, error, code, msg 等常用方法/状态
@@ -176,9 +176,13 @@ export const useRequest = (options:option = {
stateRef.current.total = data?.list ? data?.total : 0
}else{
if (statusCode === 401) {
- removeToken()
- removeSessionKey()
- login()
+ if(!loginStatus) {
+ removeToken()
+ removeSessionKey()
+ login()
+ loginStatus = true
+ }
+ //todo 登录数据刷新次数问题
} else {
Taro.showToast({
title: `错误:${showStatus(statusCode)}`,