From 7a2dc0006f15f723e1e661b9cc797189cd8bc6d1 Mon Sep 17 00:00:00 2001 From: czm <2192718639@qq.com> Date: Tue, 5 Jul 2022 20:32:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E5=AD=90=E5=95=86=E5=9F=8E=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=89=88v4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/constant.js | 4 +- src/common/enum.ts | 8 + src/common/util.ts | 2 +- .../afterOrderBtns/index.module.scss | 37 ++ src/components/afterOrderBtns/index.tsx | 53 ++- src/components/moveBtn/index.module.scss | 16 +- src/components/moveBtn/index.tsx | 15 + src/components/shopCart/index copy.tsx | 352 ++++++++++++++++++ src/components/shopCart/index.tsx | 58 ++- .../collectionClass/index.module.scss | 11 +- .../collection/collectionClass/index.tsx | 68 ++-- .../collection/components/product/index.tsx | 63 +++- src/pages/collection/index.tsx | 2 +- src/pages/order/index.tsx | 1 + .../addressInfoDetail/index.module.scss | 4 +- .../salesAfter/components/kindList/index.tsx | 101 ++--- src/pages/salesAfter/index.tsx | 13 +- .../salesAfterList/components/order/index.tsx | 6 +- src/use/useCommonData.ts | 3 +- 19 files changed, 649 insertions(+), 168 deletions(-) create mode 100644 src/components/shopCart/index copy.tsx diff --git a/src/common/constant.js b/src/common/constant.js index 9eb3a66..3dc9ec4 100644 --- a/src/common/constant.js +++ b/src/common/constant.js @@ -10,8 +10,8 @@ // 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.42:50001/lymarket` // 杰 +// export const BASE_URL = `http://192.168.1.7:50002/lymarket` // 添 +export const BASE_URL = `http://192.168.1.42:50001/lymarket` // 杰 // CDN // 生成密钥 diff --git a/src/common/enum.ts b/src/common/enum.ts index a3a8877..0016360 100644 --- a/src/common/enum.ts +++ b/src/common/enum.ts @@ -56,4 +56,12 @@ export const SUBSCRIPTION_MESSAGE_SCENE = { SubmitOrder: {value:1, label:'确认下单'}, ToPay : {value:2, label:'去付款'}, ApplyGoods: {value:3, label: '申请退款'} +} + +//退款状态枚举 +export const REFUND_STATUS = { + ShouldCollectOrderRefundTypeUnknown: {value:0, label:'未知退款'}, + ShouldCollectOrderRefundTypeAdvanceReceiptRefund: {value:1, label:'预收退款'}, + ShouldCollectOrderRefundTypeReturnForRefund: {value:2, label:'退货退款'}, + ShouldCollectOrderRefundTypeSalesRefund: {value:3, label:'销售退款'}, } \ No newline at end of file diff --git a/src/common/util.ts b/src/common/util.ts index e136a9a..bd14ea0 100644 --- a/src/common/util.ts +++ b/src/common/util.ts @@ -39,7 +39,7 @@ export const throttle = (fn, delay) => { * @param {Array} arr 排除过滤的属性 * @returns */ - export const getFilterData = (val = {}, arr = []) => { + export const getFilterData = (val = {}, arr: string[] = []) => { let res = {} for(let key in val) { if(val[key]!==undefined&&val[key]!==null&&val[key]!==''&&(!arr.includes(key))){ diff --git a/src/components/afterOrderBtns/index.module.scss b/src/components/afterOrderBtns/index.module.scss index 252b22e..d57e7b0 100644 --- a/src/components/afterOrderBtns/index.module.scss +++ b/src/components/afterOrderBtns/index.module.scss @@ -1,3 +1,40 @@ +.submit_order{ + display: flex; + position: fixed; + bottom: 0; + left: 0; + justify-content: flex-end; + width: 100%; + height: 175px; + align-items: center; + background-color: #fff; + box-shadow: 6px 0px 12px 0px rgba(0,0,0,0.16); + padding: 20px 20px; + box-sizing: border-box; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + .order_btn { + width: 152px; + height: 72px; + border: 2px solid #dddddd; + border-radius: 46px; + display: flex; + justify-content: center; + align-items: center; + color: $color_font_three; + &:nth-child(n+2) { + margin-left: 34px; + } + } + .order_btn_select{ + color: $color_main; + border: 2px solid $color_main; + } + .order_number_desc{ + font-size: $font_size_medium; + color: $color_font_two; + } +} .btns_list{ width: 100%; // margin-top: 30px; diff --git a/src/components/afterOrderBtns/index.tsx b/src/components/afterOrderBtns/index.tsx index 5d0bec8..7519615 100644 --- a/src/components/afterOrderBtns/index.tsx +++ b/src/components/afterOrderBtns/index.tsx @@ -17,10 +17,11 @@ type Param = { return_apply_order_id: number //售后申请单 }, onClick?: (val: number) => void, //点击后触发的事件,返回订单状态 - onBtnNull?: () => void //所有按钮都为空 + fixedBottom?: true|false, //是否固定在底部 + } -export default memo(({orderInfo, onClick, onBtnNull}:Param) => { +export default memo(({orderInfo, onClick, fixedBottom = true}:Param) => { //售后订单状态 const { ReturnStageApplying, @@ -53,13 +54,6 @@ export default memo(({orderInfo, onClick, onBtnNull}:Param) => { model_value: [], label: '取消退货' }, - { - id: 2, - big_value: [ReturnStageWaitCheck.value], - cut_value: [], - model_value: [], - label: '退货物流' - }, { id: 4, big_value: [ReturnStageQualityCheckPendingRefund.value, ReturnStageServiceOrderPendingRefund.value, ReturnStageReturned.value], @@ -143,25 +137,28 @@ export default memo(({orderInfo, onClick, onBtnNull}:Param) => { }, [orderBtnsShowList]) return ( - - {(orderBtnsShowList.length > 3)&& - setShowMore(true)}>更多 - {showMore&& - - {orderBtnsShowList.map((item, index) => { - return ((index >= 3) && submitBtns(item.id, index)}>{item.label}) - })} - - setShowMore(false)}> - } - } + <> + {(orderBtnsShowList.length > 0)&& + + {(orderBtnsShowList.length > 3)&& + setShowMore(true)}>更多 + {showMore&& + + {orderBtnsShowList.map((item, index) => { + return ((index >= 3) && submitBtns(item.id, index)}>{item.label}) + })} + + setShowMore(false)}> + } + } - - {orderBtnsShowList.map((item, index) => - (index < 3)&& submitBtns(item.id, index)}>{item.label} - )} - - - + + {orderBtnsShowList.map((item, index) => + (index < 3)&& submitBtns(item.id, index)}>{item.label} + )} + + + } + ) }) \ No newline at end of file diff --git a/src/components/moveBtn/index.module.scss b/src/components/moveBtn/index.module.scss index f04d5be..d7f4fe7 100644 --- a/src/components/moveBtn/index.module.scss +++ b/src/components/moveBtn/index.module.scss @@ -14,7 +14,21 @@ align-items: center; z-index:999; .shop_icon{ - font-size: 50px; + font-size: 70px; color: $color_main; } + .product_num{ + position: absolute; + font-size: 23px; + background-color: red; + color: #fff; + height: 36px; + line-height: 36px; + padding: 0 6px; + border-radius: 72px; + min-width: 25px; + text-align: center; + top: 0; + right: 0; + } } \ No newline at end of file diff --git a/src/components/moveBtn/index.tsx b/src/components/moveBtn/index.tsx index e30e888..23e5b53 100644 --- a/src/components/moveBtn/index.tsx +++ b/src/components/moveBtn/index.tsx @@ -3,6 +3,7 @@ import Taro, { useReady } from "@tarojs/taro" import { ReactElement, useEffect, useRef, useState } from "react" import classnames from "classnames"; import styles from './index.module.scss' +import { GetShoppingCartApi } from "@/api/shopCart"; type param = { children?: ReactElement|null, @@ -22,6 +23,19 @@ export default ({children = null, onClick}:param) => { setShowMoveBtn(true) }) + //获取数据 + const [list, setList] = useState([]) + const {fetchData} = GetShoppingCartApi() + const getShoppingCart = async () => { + const {data} = await fetchData() + let color_list = data.color_list||[] + setList(color_list) + } + + useEffect(() => { + getShoppingCart() + }, []) + const dragEnd = (e) => { } @@ -31,6 +45,7 @@ export default ({children = null, onClick}:param) => { {children} {showMoveBtn&& dragEnd(e)}> + {(list.length > 0)&&{list.length > 99?'99+':list.length}} } ) diff --git a/src/components/shopCart/index copy.tsx b/src/components/shopCart/index copy.tsx new file mode 100644 index 0000000..9297d36 --- /dev/null +++ b/src/components/shopCart/index copy.tsx @@ -0,0 +1,352 @@ +import {Image, ScrollView, View } from "@tarojs/components" +import Popup from "@/components/popup" +import classnames from "classnames"; +import MCheckbox from "@/components/checkbox"; +import LoadingCard from "@/components/loadingCard"; +import InfiniteScroll from "@/components/infiniteScroll"; +import styles from "./index.module.scss" +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import Taro from "@tarojs/taro"; +import { alert, goLink } from "@/common/common"; +import {GetShoppingCartApi, DelShoppingCartApi, UpdateShoppingCartApi} from "@/api/shopCart" +import { formatHashTag, formatImgUrl, formatPriceDiv } from "@/common/fotmat"; +import { setParam } from "@/common/system"; +import { debounce } from "@/common/util"; +import Counter from "../counter"; +import { ApplyOrderAccessApi, GetAdminUserInfoApi, SubscriptionMessageApi } from "@/api/user"; + +type param = { + show?: true|false, + onClose?: () => void +} +export default ({show = false, onClose}: param) => { + const selectList = [ + {value:0, title:'大货', unit:'条', eunit:'kg', step:1, digits:0, minNum:1, maxNum:100000, defaultNum:1}, + {value:1,title:'剪板', unit:'米', eunit:'m', step:1, digits:2, minNum:0.5, maxNum:9.99, defaultNum:1}, + {value:2,title:'散剪', unit:'米', eunit:'kg', step:1, digits:2, minNum:5, maxNum:100000, defaultNum:10}, + ] + + const [selectIndex, setSelectIndex] = useState(0) + const selectProduct = (index:number) => { + setSelectIndex(index) + } + + useEffect(() => { + resetList() + setSelectStatus(true) + }, [selectIndex]) + + + + //重置勾选数据 + const resetList = () => { + list?.map(item => { + if(selectIndex == item.sale_mode || selectIndex == -1) { + item.select = true + } else { + item.select = false + } + }) + setList([...list]) + } + + //获取数据 + const [list, setList] = useState([]) + const [loading, setLoading] = useState(false) + const {fetchData} = GetShoppingCartApi() + const getShoppingCart = async () => { + const {data} = await fetchData() + let color_list = data.color_list||[] + initList(color_list) + setLoading(false) + } + + //初始化勾选数据 + const [selectData, setSelectData] = useState<{id: number, checked: true|false}[]>([]) + const initSelectData = (data:{id:number}[] = []) => { + let res = data?.map(item => { + return {id: item.id, checked: true} + }) + setSelectData(() => res) + } + + //初始化全部数据 + const initList = (color_list) => { + color_list?.map(item => { + if(selectIndex == item.sale_mode) item.select = true + item.count = formatCount(item) + }) + setList(color_list) + } + + //显示是展示数据 + useEffect(() => { + if(!show) { + setList([]) + setSelectIndex(0) + } else { + setLoading(true) + getShoppingCart() + } + }, [show]) + + useEffect(() => { + return () => { + setList([]) + } + }, []) + + const [showPopup, setShowPopup] = useState(false) + useEffect(() => { + setShowPopup(show) + }, [show]) + + //全选反选 + const [selectStatus, setSelectStatus] = useState(false) + const selectAll = () => { + list.map(item => { + if(selectIndex == item.sale_mode || selectIndex == -1) + item.select = !selectStatus + }) + setSelectStatus(!selectStatus) + setList([...list]) + } + + //checkbox选中回调 + const selectCallBack = (item) => { + item.select = true + checkSelect() + setList([...list]) + } + + //checkbox选中判断是否全部选中,全部选中后是全选,否则反选 + const checkSelect = () => { + let list_count = 0 + let select_count = 0 + list?.map(item => { + if(selectIndex == -1 || selectIndex == item.sale_mode) { + list_count ++ + if(item.select) select_count++ + } + }) + setSelectStatus(select_count == list_count) + } + + //checkbox关闭回调 + const colseCallBack = (item) => { + item.select = false + checkSelect() + setList([...list]) + } + + //popup关闭 + const closePopup = () => { + onClose?.() + setShowPopup(false) + } + + //删除购物车内容 + const {fetchData:delShopFetchData} = DelShoppingCartApi() + const delSelect = () => { + getSelectId() + if(selectIds.current.length <= 0) return alert.none('请选择要删除的面料!') + Taro.showModal({ + content: '删除所选商品?', + success: async function (res) { + if (res.confirm) { + + const res = await delShopFetchData({id:selectIds.current}) + if(res.success) { + getShoppingCart() + Taro.showToast({ + title: '成功', + icon: 'success', + }) + } else { + Taro.showToast({ + title: res.msg, + icon: 'none', + }) + } + + } else if (res.cancel) { + console.log('用户点击取消') + } + } + }) + } + + //获取面料选中的id + const selectIds = useRef([]) + const getSelectId = () => { + selectIds.current = [] + list?.map(item => { + if(selectIndex == -1 || selectIndex == item.sale_mode) { + item.select&&selectIds.current.push(item.id) + } + }) + } + + //格式化金额 + const formatPirce = useCallback((price) => { + return Number(formatPriceDiv(price)) + }, []) + + //格式化数量 + const formatCount = useCallback((item) => { + console.log('item:::',item) + return item.sale_mode == 0? item.roll : (item.length/100) + }, []) + + //格式化单位 + const formatUnit = useCallback((item) => { + return item.sale_mode == 0? '条':'米' + }, []) + + //预估金额和总条数 + const estimatePrice = useMemo(() => { + let estimate_amount = 0 + let product_list = new Set() //面料 + let color_count = 0 //颜色数量 + let all_count = 0 //总数量 + list.map(item => { + if(item.select) { + estimate_amount += item.estimate_amount + product_list.add(item.product_id) + color_count++ + all_count += item.sale_mode == 0?item.roll: (item.length) + } + }) + let all_count_text = selectIndex == 0?all_count + '条': (all_count/100) + '米' + return {price: Number(formatPriceDiv(estimate_amount)).toFixed(2), countText: `已选${product_list.size}种面料,${color_count}个颜色,共${all_count_text}`, color_count} + },[list]) + + + //去结算 + const {fetchData: useFetchData} = GetAdminUserInfoApi() + const {fetchData: applyOrderAccessFetchData} = ApplyOrderAccessApi() + const orderDetail = debounce( async () => { + let res = await useFetchData() + if(res.data.order_access_status !== 3) { + if(res.data.order_access_status == 1) applyOrderAccessFetchData() + Taro.showModal({ + title: '提示', + content: '暂未开通下单权限功能,稍后有客服联系您,请注意接受电话。', + cancelText: '联系客服', + confirmText: '我知道', + success: function (res) { + if (res.confirm) { + } else if (res.cancel) { + console.log('用户点击取消') + } + } + }) + return false + } + getSelectId() + if(selectIds.current.length == 0) { + alert.error('请选择面料') + } else { + let ids = selectIds.current.join('-') + setParam({ids, sale_mode:selectIndex}) //临时存储 + closePopup() + goLink('/pages/order/comfirm') + } + }, 500) + + + //计数组件-当后端修改完成才修改前端显示 + const {fetchData: fetchDataUpdateShoppingCart} = UpdateShoppingCartApi() + const [UpdateShoppingCartLoading, setUpdateShoppingCartLoading] = useState(false) + const getInputValue = debounce(async (num, item) => { + let roll = item.sale_mode == 0?parseFloat(num):0 + let length = item.sale_mode != 0?(parseFloat(num)*100):0 + setUpdateShoppingCartLoading(() => true) + let res = await fetchDataUpdateShoppingCart({id: item.id, roll, length}) + setUpdateShoppingCartLoading(() => false) + if(res.success) { + getShoppingCart() + } + }, 300) + + return ( + + closePopup()} > + + + {!selectStatus?'全选':'反选'} + + + 删除所选 + + + {estimatePrice.countText} + + {selectList.map((item) => { + return selectProduct(item.value)} className={classnames(styles.search_item, (selectIndex==item.value)&&styles.search_item_select)}>{item.title} + })} + + + {loading&&} + {!loading&&list?.length > 0&& + + {list?.map((item, index) => { + return + + selectCallBack(item)} onClose={() => colseCallBack(item)}/> + + + + + + {formatHashTag(item.product_code, item.product_name)} + {item.product_color_code +' ' + item.product_color_name} + {item.sale_mode_name} + + + {formatPirce(item.sale_price)}/{selectList[selectIndex].eunit} + {/* ×{formatCount(item)}{selectList[selectIndex].unit} */} + + getInputValue(e, item)} + defaultNum={item.count} + step={selectList[selectIndex].step} + digits={selectList[selectIndex].digits} + onClickBtn={(e) => getInputValue(e, item)} + unit={formatUnit(item)} + minNum={selectList[selectIndex].minNum} + maxNum={selectList[selectIndex].maxNum} + disable={UpdateShoppingCartLoading} + /> + + + + })} + + } + {!loading&&list?.length == 0 && + 暂未选择商品 + 去选购 + } + + + + + + + + + {estimatePrice.price} + 预估金额 + + orderDetail()}> + 去结算({estimatePrice.color_count}) + + + + + + + ) +} + diff --git a/src/components/shopCart/index.tsx b/src/components/shopCart/index.tsx index 9297d36..e58684f 100644 --- a/src/components/shopCart/index.tsx +++ b/src/components/shopCart/index.tsx @@ -26,6 +26,7 @@ export default ({show = false, onClose}: param) => { {value:2,title:'散剪', unit:'米', eunit:'kg', step:1, digits:2, minNum:5, maxNum:100000, defaultNum:10}, ] + //切换面料类型 const [selectIndex, setSelectIndex] = useState(0) const selectProduct = (index:number) => { setSelectIndex(index) @@ -42,12 +43,12 @@ export default ({show = false, onClose}: param) => { const resetList = () => { list?.map(item => { if(selectIndex == item.sale_mode || selectIndex == -1) { - item.select = true + checkboxData[item.id] = true } else { - item.select = false + checkboxData[item.id] = false } }) - setList([...list]) + setCheckboxData(() => ({...checkboxData})) } //获取数据 @@ -58,25 +59,21 @@ export default ({show = false, onClose}: param) => { const {data} = await fetchData() let color_list = data.color_list||[] initList(color_list) + setList(color_list) setLoading(false) } - //初始化勾选数据 - const [selectData, setSelectData] = useState<{id: number, checked: true|false}[]>([]) - const initSelectData = (data:{id:number}[] = []) => { - let res = data?.map(item => { - return {id: item.id, checked: true} - }) - setSelectData(() => res) - } - - //初始化全部数据 + //初始化全部数据默认勾选 + const [checkboxData, setCheckboxData] = useState<{[index:number]:true|false}>({}) + const initStatus = useRef(false) const initList = (color_list) => { - color_list?.map(item => { - if(selectIndex == item.sale_mode) item.select = true - item.count = formatCount(item) - }) - setList(color_list) + if(initStatus.current) { + color_list?.map(item => { + if(selectIndex == item.sale_mode) checkboxData[item.id] = true + }) + initStatus.current = false + } + setCheckboxData(() => checkboxData) } //显示是展示数据 @@ -86,6 +83,7 @@ export default ({show = false, onClose}: param) => { setSelectIndex(0) } else { setLoading(true) + initStatus.current = true getShoppingCart() } }, [show]) @@ -106,17 +104,17 @@ export default ({show = false, onClose}: param) => { const selectAll = () => { list.map(item => { if(selectIndex == item.sale_mode || selectIndex == -1) - item.select = !selectStatus + checkboxData[item.id] = !selectStatus }) setSelectStatus(!selectStatus) - setList([...list]) + setCheckboxData(() => ({...checkboxData})) } //checkbox选中回调 const selectCallBack = (item) => { - item.select = true + checkboxData[item.id] = true checkSelect() - setList([...list]) + setCheckboxData(() => ({...checkboxData})) } //checkbox选中判断是否全部选中,全部选中后是全选,否则反选 @@ -126,7 +124,7 @@ export default ({show = false, onClose}: param) => { list?.map(item => { if(selectIndex == -1 || selectIndex == item.sale_mode) { list_count ++ - if(item.select) select_count++ + if(checkboxData[item.id]) select_count++ } }) setSelectStatus(select_count == list_count) @@ -134,9 +132,9 @@ export default ({show = false, onClose}: param) => { //checkbox关闭回调 const colseCallBack = (item) => { - item.select = false + checkboxData[item.id] = false checkSelect() - setList([...list]) + setCheckboxData(() => ({...checkboxData})) } //popup关闭 @@ -182,7 +180,7 @@ export default ({show = false, onClose}: param) => { selectIds.current = [] list?.map(item => { if(selectIndex == -1 || selectIndex == item.sale_mode) { - item.select&&selectIds.current.push(item.id) + checkboxData[item.id]&&selectIds.current.push(item.id) } }) } @@ -210,7 +208,7 @@ export default ({show = false, onClose}: param) => { let color_count = 0 //颜色数量 let all_count = 0 //总数量 list.map(item => { - if(item.select) { + if(checkboxData[item.id]) { estimate_amount += item.estimate_amount product_list.add(item.product_id) color_count++ @@ -219,7 +217,7 @@ export default ({show = false, onClose}: param) => { }) let all_count_text = selectIndex == 0?all_count + '条': (all_count/100) + '米' return {price: Number(formatPriceDiv(estimate_amount)).toFixed(2), countText: `已选${product_list.size}种面料,${color_count}个颜色,共${all_count_text}`, color_count} - },[list]) + },[list, checkboxData]) //去结算 @@ -293,7 +291,7 @@ export default ({show = false, onClose}: param) => { {list?.map((item, index) => { return - selectCallBack(item)} onClose={() => colseCallBack(item)}/> + selectCallBack(item)} onClose={() => colseCallBack(item)}/> @@ -309,7 +307,7 @@ export default ({show = false, onClose}: param) => { getInputValue(e, item)} - defaultNum={item.count} + defaultNum={formatCount(item)} step={selectList[selectIndex].step} digits={selectList[selectIndex].digits} onClickBtn={(e) => getInputValue(e, item)} diff --git a/src/pages/collection/collectionClass/index.module.scss b/src/pages/collection/collectionClass/index.module.scss index 7762701..51ba4ab 100644 --- a/src/pages/collection/collectionClass/index.module.scss +++ b/src/pages/collection/collectionClass/index.module.scss @@ -20,7 +20,7 @@ display: flex; justify-content: space-between; align-items: center; - padding: 20px 20px 0 20px; + padding: 20px 30px 0 30px; font-size: 26px; color: #707070; .operation_check{ @@ -35,9 +35,12 @@ } } .operation_check_right{ - Text{ - color: #CCCCCC; - margin-right: 20px; + .operation_check_move{ + color: #707070; + margin-right: 30px; + } + .operation_check_cancel{ + color: #007AFF; } } .class_list{ diff --git a/src/pages/collection/collectionClass/index.tsx b/src/pages/collection/collectionClass/index.tsx index b19f63d..c097b2f 100644 --- a/src/pages/collection/collectionClass/index.tsx +++ b/src/pages/collection/collectionClass/index.tsx @@ -11,6 +11,7 @@ import CreatePopup from "../components/createPopup"; import UpdatePopup from "../components/updatePopup"; import styles from './index.module.scss' import MCheckbox from "@/components/checkbox"; +import AddCollection from "@/components/addCollection"; export default () => { @@ -20,7 +21,7 @@ export default () => { const getFavoriteInfo = () => { let arr:any[] = [] new Array(10).fill("").map((item, index) => { - arr.push({code: index}) + arr.push({id:index, code: index}) }) setList(arr) } @@ -34,32 +35,53 @@ export default () => { getFavoriteInfo() }, [searchData]) + + //获取选中的id + const [ids, setIds] = useState([]) + const getSelectIds = useCallback((val) => { + setIds(() => val) + }, []) + + //全选反选 + const [selectStatus, setSelectStatus] = useState(false) const selectCallBack = useCallback(() => { - + setSelectStatus(() => true) }, []) - const colseCallBack = useCallback(() => { - + setSelectStatus(() => false) + }, []) + // useEffect(() => { + // if(list.length) + // setSelectStatus(ids.length == list.length) + // }, [ids, list]) + const [collectionShow, setCollectionShow] = useState(false) + const closeCollection = useCallback(() => { + setCollectionShow(false) }, []) - return ( - - - - - - - selectCallBack()} onClose={() => colseCallBack()}/> - 全选 - - - 移动到 - 取消收藏 - - - - - + const onAdd = () => { + + } + + return ( + + + - ) + + + selectCallBack()} onClose={() => colseCallBack()}/> + 全选 + + + setCollectionShow(true)}>移动到 + 取消收藏 + + + + + + + + ) } \ No newline at end of file diff --git a/src/pages/collection/components/product/index.tsx b/src/pages/collection/components/product/index.tsx index bca82bd..cfab59b 100644 --- a/src/pages/collection/components/product/index.tsx +++ b/src/pages/collection/components/product/index.tsx @@ -5,54 +5,77 @@ import styles from './index.module.scss' import { formatHashTag, formatImgUrl } from "@/common/fotmat" import LabAndImg from "@/components/LabAndImg" import MCheckbox from "@/components/checkbox"; -import { useCallback, useEffect, useState } from "react" +import { useCallback, useEffect, useRef, useState } from "react" type Params = { - desStatus?: true|false, - productList?: any[] + productList?: any[], + onSelectIds?: (val: number[]) => void + selectStatus?: false|true } -export default ({desStatus = true, productList = []}:Params) => { +export default ({productList = [], onSelectIds, selectStatus = false}:Params) => { const [list, setList] = useState([]) useEffect(() => { - console.log('productList::', productList) setList(() => [...productList]) },[productList]) - + useEffect(() => { + if(list.length) { + list.map(item => { + item.check = selectStatus + }) + } + setList(() => [...list]) + }, [selectStatus]) - const onSelect = (item, e) => { - console.log('e:::', e) + const onChangeSelect = (item) => { + if(item.check) { + onClose(item) + } else { + onSelect(item) + } + } + + //选中和取消选中 + const onSelect = (item) => { item.check = true setList(() => ([...list])) } - - const onClose = (item, e) => { + const onClose = (item) => { item.check = false setList(() => ([...list])) } + //监听数据变化 + useEffect(() => { + let ids: number[] = [] + list.map(item => { + if(item.check) ids.push(item.id) + }) + onSelectIds?.(ids) + }, [list]) + return ( {list?.map(item => { - return goLink(`/pages/details/index?id=${item.id}`)}> - - onSelect(item, e)} onClose={() => onClose(item, e)}/> + return onChangeSelect(item)}> + e.stopPropagation()}> + onSelect(item)} onClose={() => onClose(item)}/> {item.product_color_count}色 - {formatHashTag(item.product_code, '')} {item.product_name} - - {item.width} - {item.weight_density} - - {item.component} - {desStatus&&{item.describe}} + {formatHashTag(item.product_code, '')} {item.product_name} + + {item.width} + {item.weight_density} + + {item.component} })} + ) } diff --git a/src/pages/collection/index.tsx b/src/pages/collection/index.tsx index 88ad54e..08e5e49 100644 --- a/src/pages/collection/index.tsx +++ b/src/pages/collection/index.tsx @@ -143,7 +143,7 @@ export default () => { moreUpdate(item,e)}>更多 - + )} diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx index fb72266..c75665b 100644 --- a/src/pages/order/index.tsx +++ b/src/pages/order/index.tsx @@ -53,6 +53,7 @@ import styles from './index.module.scss' let res = await getOrderFetchData({id: orderId.current}) setOrderDetail(res.data) setOrderRemark(res.data.remark) + if(res.data.status == SaleorderstatusWaitingPrePayment.value) toPay() } Taro.stopPullDownRefresh() Taro.hideToast() diff --git a/src/pages/salesAfter/components/addressInfoDetail/index.module.scss b/src/pages/salesAfter/components/addressInfoDetail/index.module.scss index 82159da..907e73f 100644 --- a/src/pages/salesAfter/components/addressInfoDetail/index.module.scss +++ b/src/pages/salesAfter/components/addressInfoDetail/index.module.scss @@ -78,9 +78,9 @@ width:152px; font-size: 28px; height: 60px; - color: $color_font_two; + color:#007AFF; z-index: 999; - border: 2px solid #dddddd; + border: 2px solid #007AFF; border-radius: 36px; text-align: center; line-height: 60px; diff --git a/src/pages/salesAfter/components/kindList/index.tsx b/src/pages/salesAfter/components/kindList/index.tsx index 16d4321..7a2dd69 100644 --- a/src/pages/salesAfter/components/kindList/index.tsx +++ b/src/pages/salesAfter/components/kindList/index.tsx @@ -1,4 +1,4 @@ -import { AFTER_ORDER_STATUS, ORDER_STATUS } from "@/common/enum" +import { AFTER_ORDER_STATUS, ORDER_STATUS, REFUND_STATUS } from "@/common/enum" import { formatHashTag, formatPriceDiv, formatWeightDiv } from "@/common/fotmat" import LabAndImg from "@/components/LabAndImg" import { Text, View } from "@tarojs/components" @@ -17,6 +17,7 @@ type OrderParam = { total_number: number, stage: number, //订单状态 type: 1|2, //1退货, 2退款 + refund_type: number, //退款状态 total_sale_price: number, //销售金额 total_should_collect_money: number, //应收金额 total_weight_error_discount: number, //空差优惠 @@ -57,76 +58,80 @@ export default memo(({order, comfirm = false}:Param) => { ReturnStageRejected, // 已拒绝 } = AFTER_ORDER_STATUS + //退款状态枚举 + const { + ShouldCollectOrderRefundTypeUnknown, + ShouldCollectOrderRefundTypeAdvanceReceiptRefund, + ShouldCollectOrderRefundTypeReturnForRefund, + ShouldCollectOrderRefundTypeSalesRefund, + } = REFUND_STATUS //金额列表枚举 const priceList = [ - + { + id:5, + big_value:[ + ReturnStageQualityCheckPendingRefund.value, + ReturnStageServiceOrderPendingRefund.value, + ReturnStageReturned.value, + ], + cut_value: [ReturnStageRejected.value, + ReturnStageApplying.value, + ReturnStageWaitCheck.value, + ReturnStageChecked.value, + ReturnStageQualityCheckPendingRefund.value, + ReturnStageServiceOrderPendingRefund.value, + ReturnStageReturned.value, + ReturnStageCancel.value + ], + model_value: [ + ReturnStageApplying.value, + ReturnStageWaitCheck.value, + ReturnStageChecked.value, + ReturnStageQualityCheckPendingRefund.value, + ReturnStageServiceOrderPendingRefund.value, + ReturnStageReturned.value, + ReturnStageCancel.value + ], + label:'合计金额', + field: 'total_refund_amount' + }, { id:1, - big_value:[ - ReturnStageServiceOrderPendingRefund.value, - ReturnStageReturned.value - ], + big_value:[ReturnStageReturned.value], cut_value: [ReturnStageServiceOrderPendingRefund.value, ReturnStageReturned.value], model_value: [], label:'扣款金额', - field: 'total_sale_price' - }, - { - id:2, - big_value:[ - ReturnStageServiceOrderPendingRefund.value, - ReturnStageReturned.value - ], - cut_value: [], - model_value: [], - label:'其他扣款', - field: 'total_weight_error_discount' + field: 'other_deduction_amount' }, { id:3, - big_value:[ - ReturnStageServiceOrderPendingRefund.value, - ReturnStageReturned.value - ], - cut_value: [ReturnStageServiceOrderPendingRefund.value], - model_value: [ - ReturnStageQualityCheckPendingRefund.value, - ReturnStageServiceOrderPendingRefund.value - ], - label:'应退金额', - field: 'total_should_collect_money' + big_value:[ReturnStageReturned.value], + cut_value: [ReturnStageReturned.value], + model_value: [ReturnStageReturned.value], + label:'退款金额', + field: 'refund_amount' }, { id:4, big_value:[ReturnStageReturned.value], cut_value: [ReturnStageReturned.value], model_value: [ReturnStageReturned.value], - label:'退款金额', - field: 'total_should_collect_money' - }, - { - id:5, - big_value:[ReturnStageReturned.value], - cut_value: [ReturnStageReturned.value], - model_value: [ReturnStageReturned.value], label:'退款去向', field: 'actual_amount' }, - { - id:6, - big_value:[ReturnStageQualityCheckPendingRefund.value], - cut_value: [ReturnStageRejected.value, ReturnStageApplying.value, ReturnStageWaitCheck.value, ReturnStageChecked.value, ReturnStageQualityCheckPendingRefund.value, ReturnStageServiceOrderPendingRefund.value, ReturnStageReturned.value], - model_value: [ReturnStageApplying.value], - label:'合计金额', - field: 'actual_amount' - }, - ] + + ] //是否显示价格 const showPrice = useCallback((priceInfo) => { let key = ['big_value', 'model_value', 'cut_value'] - return priceInfo[key[order?.sale_mode]].includes(order?.stage) + if(priceInfo.id == 5) { + return priceInfo[key[order?.sale_mode]].includes(order?.stage)||(order.refund_type == ShouldCollectOrderRefundTypeSalesRefund.value) + } else { + return priceInfo[key[order?.sale_mode]].includes(order?.stage) + } + }, [order]) const priceConDom = useMemo(() => { @@ -175,7 +180,7 @@ export default memo(({order, comfirm = false}:Param) => { {colorItem.code + ' ' + colorItem.name} {sale_price_show&&¥{standardPrice(colorItem.sale_price)}} - 总重{formatWeightDiv(colorItem.estimate_weight)}kg + {(order?.stage == ReturnStageReturned.value)&&总重{formatWeightDiv(colorItem.estimate_weight)}kg} diff --git a/src/pages/salesAfter/index.tsx b/src/pages/salesAfter/index.tsx index 0a41aca..90cb0e7 100644 --- a/src/pages/salesAfter/index.tsx +++ b/src/pages/salesAfter/index.tsx @@ -60,6 +60,11 @@ import styles from './index.module.scss' total_weight_error_discount: orderDetail.total_weight_error_discount, //空差优惠 actual_amount: orderDetail.actual_amount, //实付金额 the_previous_status: orderDetail.the_previous_status, //取消订单时的订单状态 + other_deduction_amount: orderDetail.other_deduction_amount, //其他扣除金额 + total_refund_amount: orderDetail.total_refund_amount, //合计金额 + refund_amount: orderDetail.refund_amount, //退款金额 + refund_type: orderDetail.refund_type //退款状态 + }) } const formatPreViewOrderMemo = useMemo(() => { @@ -104,7 +109,7 @@ import styles from './index.module.scss' if(val == 1) { setLogisticsShow(true) } else { - const list = orderDetail?.fabric_piece_accessory_url.map(item => { + const list = orderDetail?.accessory_url.map(item => { return formatImgUrl(item) }) Taro.previewImage({ @@ -132,9 +137,7 @@ import styles from './index.module.scss' - - - + setApplyRecord(false)}/> @@ -194,7 +197,7 @@ import styles from './index.module.scss' const showList = useMemo(() => { let res = urls.map(item => { - return formatImgUrl(item) + return formatImgUrl(item, "!w800") }) return res }, [urls]) diff --git a/src/pages/salesAfterList/components/order/index.tsx b/src/pages/salesAfterList/components/order/index.tsx index 8170c64..9be4b5d 100644 --- a/src/pages/salesAfterList/components/order/index.tsx +++ b/src/pages/salesAfterList/components/order/index.tsx @@ -27,6 +27,7 @@ type Param = { rgb: {r:number, g:number, b:number}, texturl_url: string, type: number //1 退货 2退款 + return_apply_order_id: number //退款申请单 }, onClickBtn?: (val:{status:number, orderInfo:Param['value']}) => void } @@ -52,7 +53,8 @@ export default memo(({value, onClickBtn}: Param) => { stage: value?.stage, //订单状态 orderId: value?.id, sale_mode: value?.sale_mode, //订单类型 - type: value?.type //退货or退款 + type: value?.type, //退货or退款 + return_apply_order_id: value?.return_apply_order_id //退款申请单 } }, [value]) @@ -109,7 +111,7 @@ export default memo(({value, onClickBtn}: Param) => { 订单号:{value?.order_no} - + ) }) diff --git a/src/use/useCommonData.ts b/src/use/useCommonData.ts index a0efae5..0b6c366 100644 --- a/src/use/useCommonData.ts +++ b/src/use/useCommonData.ts @@ -15,6 +15,7 @@ export const useTimeCountDown = () => { const timeObj:any = useRef() const endTime = useRef('') const onStart = (val = '') => { + console.log('time:::', val) endTime.current = val if(endTime.current) { clearInterval(timeObj.current) @@ -51,7 +52,7 @@ export const useTimeCountDown = () => { 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}`) + console.log('endTime::', `${DD}-${HH}-${MM}-${SS}`) setShowTime((e) => ({...e, DD, HH, MM, SS})) } return {