feat(订单模块):提交订单对接

This commit is contained in:
Haiyi 2022-09-27 17:14:52 +08:00
parent 6c0ecd5ea1
commit 9377ea964f
12 changed files with 230 additions and 133 deletions

View File

@ -107,13 +107,6 @@
"launchMode": "default", "launchMode": "default",
"scene": null "scene": null
}, },
{
"name": "",
"pathName": "pages/submitOrder/index",
"query": "",
"launchMode": "default",
"scene": null
},
{ {
"name": "", "name": "",
"pathName": "pages/refundPage/index", "pathName": "pages/refundPage/index",

View File

@ -179,3 +179,18 @@ export const mpenumrefundExplainone = () => {
method: "get", method: "get",
}) })
} }
//提交订单
export const mpsaleOrderpost = () => {
return useRequest({
url: `/v1/mp/saleOrder`,
method: "post",
})
}
//修改销售单物流方式
export const mpsaleOrdershipmentMode = () => {
return useRequest({
url: `/v1/mp/saleOrder/shipmentMode`,
method: "put",
})
}

View File

@ -1,4 +1,4 @@
export const BASE_URL = CURRENT_BASE_URL // export const BASE_URL = CURRENT_BASE_URL
// export const BASE_URL = `http://192.168.0.75:50001/lymarket` // export const BASE_URL = `http://192.168.0.75:50001/lymarket`
// export const BASE_URL = `http://192.168.0.89:50001/lymarket` // export const BASE_URL = `http://192.168.0.89:50001/lymarket`
// export const BASE_URL = `http://10.0.0.5:50001/lymarket` // export const BASE_URL = `http://10.0.0.5:50001/lymarket`
@ -12,7 +12,7 @@ export const BASE_URL = CURRENT_BASE_URL
// export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境 // export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境
// export const BASE_URL = `https://www.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.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.42:50001/lymarket` // 杰 // export const BASE_URL = `http://192.168.1.42:50001/lymarket` // 杰
// export const BASE_URL = `http://192.168.1.95:40001/lymarket` // 华 // export const BASE_URL = `http://192.168.1.95:40001/lymarket` // 华

View File

@ -5,6 +5,7 @@ import "./index.scss"
import { mppurchaseraddresslist } from "@/api/addressList" import { mppurchaseraddresslist } from "@/api/addressList"
import { alert } from "@/common/common" import { alert } from "@/common/common"
import Taro, { showModal, useDidShow, useRouter } from "@tarojs/taro" import Taro, { showModal, useDidShow, useRouter } from "@tarojs/taro"
import IconFont from '@/components/iconfont/iconfont'
import { mpsaleOrderaddress } from '@/api/order' import { mpsaleOrderaddress } from '@/api/order'
interface Params { interface Params {
refresherEnabled?: boolean,//是否开启刷新 refresherEnabled?: boolean,//是否开启刷新
@ -58,7 +59,8 @@ const AddressList = memo((props: Params) => {
// 列表选择 // 列表选择
const { fetchData: selectFetch } = mpsaleOrderaddress() const { fetchData: selectFetch } = mpsaleOrderaddress()
const handleSelect = async (item: any, index: number) => { const handleSelect = async (item: any, index: number) => {
if (router.params.orderId) { if (router.params.orderId && router.params.orderId != '-100') {
console.log(typeof (router.params.orderId) != 'undefined', 'router.params.orderId')
Taro.showLoading({ Taro.showLoading({
title: '请稍等...', title: '请稍等...',
mask: true mask: true
@ -80,6 +82,15 @@ const AddressList = memo((props: Params) => {
icon: 'error' icon: 'error'
}) })
} }
} else {
let pages = Taro.getCurrentPages(); // 获取当前的页面栈
let prevPage = pages[pages.length - 2];
prevPage.setData({ //设置上一个页面的值
addressObj: item
});
Taro.navigateBack({
delta: 1
})
} }
@ -117,7 +128,8 @@ const AddressList = memo((props: Params) => {
} }
</View> </View>
<Navigator onClick={e => e.stopPropagation()} url={`/pages/addAddress/index?type=edit&id=${item.id}&&purchaser_id=${Number(router.params.purchaser_id)}`} hoverClass="none" className="address-edit"> <Navigator onClick={e => e.stopPropagation()} url={`/pages/addAddress/index?type=edit&id=${item.id}&&purchaser_id=${Number(router.params.purchaser_id)}`} hoverClass="none" className="address-edit">
<Text className="iconfont icon-bianji"></Text> {/* <Text className="iconfont icon-bianji"></Text> */}
<IconFont name={'icon-bianji'} size={40} ></IconFont>
</Navigator> </Navigator>
</View> </View>
</View> </View>

View File

@ -111,7 +111,7 @@ export default memo(
handScan?.() handScan?.()
}}> }}>
<IconFont <IconFont
name={'icon-saomiao'} size={40} name={'icon-saomiao'} size={40} color={'#337FFF'}
></IconFont> ></IconFont>
</View> </View>
} }

View File

@ -14,6 +14,7 @@ import {
} from "@/api/newCollection" } from "@/api/newCollection"
import TimePicker from "@/components/timePicker" import TimePicker from "@/components/timePicker"
import dayjs from 'dayjs' import dayjs from 'dayjs'
import IconFont from '@/components/iconfont/iconfont'
export default () => { export default () => {
let myDate = new Date(); let myDate = new Date();
@ -231,7 +232,8 @@ export default () => {
<View style={{ background: '#FFFFFF', paddingLeft: '20rpx', paddingBottom: '20rpx', position: 'sticky', top: '0', zIndex: '99' }}> <View style={{ background: '#FFFFFF', paddingLeft: '20rpx', paddingBottom: '20rpx', position: 'sticky', top: '0', zIndex: '99' }}>
<Search placeholder='请输入客户或客户跟进人' showBtn={false} changeOnSearch={getSearchData} debounceTime={300} > <Search placeholder='请输入客户或客户跟进人' showBtn={false} changeOnSearch={getSearchData} debounceTime={300} >
<View className={styles.flexBox} onClick={() => { setSelectPopup(true) }}> <View className={styles.flexBox} onClick={() => { setSelectPopup(true) }}>
<View className={classnames('iconfont', 'icon-shaixuan', !isDisabled ? styles.icon_shaixuan : styles.activeshaixuan)}></View> <IconFont name='icon-shaixuan' size={35} color={!isDisabled ? '#0D7CFF' : ''} customClassName={styles['activeshaixuan']} />
{/* <View className={classnames('iconfont', 'icon-shaixuan', !isDisabled ? styles.icon_shaixuan : styles.activeshaixuan)}></View> */}
<View className={classnames(isDisabled ? styles.shaixuan : styles.activeshai)}></View> <View className={classnames(isDisabled ? styles.shaixuan : styles.activeshai)}></View>
</View> </View>
</Search> </Search>
@ -275,9 +277,15 @@ export default () => {
} }
</View> </View>
<View className={classnames(timeArea == '自定义起始时间' ? styles.timeBox2 : styles.activetimeBox2)} onClick={() => { setShowTime(true) }}>{timeArea} <View className={classnames(timeArea == '自定义起始时间' ? styles.timeBox2 : styles.activetimeBox2)} onClick={() => { setShowTime(true) }}>{timeArea}
{ <View className={styles.more}>
{
timeArea == '自定义起始时间' &&
<IconFont name={'icon-chakanquanbukehu'} color={'#000000'} size={40} customClassName={styles['more']}></IconFont>
}
</View>
{/* {
timeArea == '自定义起始时间' && <View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.more)}></View> timeArea == '自定义起始时间' && <View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.more)}></View>
} } */}
</View> </View>
<View style={{ height: '100rpx' }}></View> <View style={{ height: '100rpx' }}></View>
<View className={styles.bottomBox}> <View className={styles.bottomBox}>

View File

@ -22,6 +22,7 @@ import {
} from '@/api/order' } from '@/api/order'
import PayPopup from './components/PayPopup' import PayPopup from './components/PayPopup'
import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format'
import IconFont from '@/components/iconfont/iconfont'
interface filterObj { interface filterObj {
purchaser_id?: string | number, purchaser_id?: string | number,
clientName?: string, clientName?: string,
@ -597,7 +598,8 @@ export default () => {
<View style={{ background: '#FFFFFF', paddingLeft: '20rpx', paddingBottom: '20rpx', position: 'sticky', top: '0', zIndex: '99' }}> <View style={{ background: '#FFFFFF', paddingLeft: '20rpx', paddingBottom: '20rpx', position: 'sticky', top: '0', zIndex: '99' }}>
<Search handScan={() => handScan()} showScan placeholder='搜索商品/名称/颜色/订单号' showBtn={false} changeOnSearch={getSearchData} debounceTime={300}> <Search handScan={() => handScan()} showScan placeholder='搜索商品/名称/颜色/订单号' showBtn={false} changeOnSearch={getSearchData} debounceTime={300}>
<View className={styles.flexBox} onClick={() => showSelctPopup()}> <View className={styles.flexBox} onClick={() => showSelctPopup()}>
<View className={classnames('iconfont', 'icon-shaixuan', !isDisabled ? styles.icon_shaixuan : styles.activeshaixuan)}></View> <IconFont name='icon-shaixuan' size={35} color={!isDisabled ? '#0D7CFF' : ''} customClassName={styles['activeshaixuan']} />
{/* <View className={classnames('iconfont', 'icon-shaixuan', !isDisabled ? styles.icon_shaixuan : styles.activeshaixuan)}></View> */}
<View className={classnames(isDisabled ? styles.shaixuan : styles.activeshai)}></View> <View className={classnames(isDisabled ? styles.shaixuan : styles.activeshai)}></View>
</View> </View>
</Search> </Search>

View File

@ -2,7 +2,7 @@ import { Image, Text, View } from "@tarojs/components";
import { memo, useEffect, useMemo, useRef, useState } from "react"; 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 IconFont from '@/components/iconfont/iconfont'
interface propsObj { interface propsObj {
receivingStatus: Number | null, receivingStatus: Number | null,
onReceivingStatus?: (any, Number) => void, onReceivingStatus?: (any, Number) => void,
@ -45,11 +45,14 @@ export default memo((props: propsObj) => {
<View className={styles.addressBox}> <View className={styles.addressBox}>
<View className={styles.topBox} onClick={() => navSelect?.(obj)}> <View className={styles.topBox} onClick={() => navSelect?.(obj)}>
<View className={styles.cirle}> <View className={styles.cirle}>
<View className={classnames('iconfont', 'icon-dingwei', styles.dingwei)}></View> <IconFont name={'icon-dingwei'} size={26} color={'#ffffff'}></IconFont>
{/* <View className={classnames('iconfont', 'icon-dingwei', styles.dingwei)}></View> */}
</View> </View>
<View className={styles.address}>{addressInfo}</View> <View className={styles.address}>{addressInfo}</View>
{ {
receivingStatus !== 1 && <View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.icon_more)}></View> receivingStatus !== 1 &&
<IconFont name={'icon-chakanquanbukehu'} size={50} ></IconFont>
// <View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.icon_more)}></View>
} }
</View> </View>
<View className={styles.line}></View> <View className={styles.line}></View>

View File

@ -23,12 +23,13 @@ import {
mpsaleOrdercancel, mpsaleOrdercancel,
GetPayCode, GetPayCode,
mpsaleOrderaddress, mpsaleOrderaddress,
mpsaleOrdershipmentMode,
mpsaleOrderreceive mpsaleOrderreceive
} from '@/api/order' } from '@/api/order'
import { alert, goLink } from '@/common/common' import { alert, goLink } from '@/common/common'
import { formatPriceDiv, formatDateTime, formatWeightDiv } from '@/common/format' import { formatPriceDiv, formatDateTime, formatWeightDiv } from '@/common/format'
import PayPopup from '../order/components/PayPopup' import PayPopup from '../order/components/PayPopup'
import IconFont from '@/components/iconfont/iconfont'
export default () => { export default () => {
const router = useRouter() const router = useRouter()
// useEffect(() => { // useEffect(() => {
@ -46,7 +47,7 @@ export default () => {
//收货方法,1:自提2物流 //收货方法,1:自提2物流
const [receivingStatus, setReceivingStatus] = useState(null) const [receivingStatus, setReceivingStatus] = useState(null)
//切换自提或者物流 //切换自提或者物流
const { fetchData: selectFetch } = mpsaleOrderaddress() const { fetchData: selectFetch } = mpsaleOrdershipmentMode()
const onReceivingStatus = debounce(async (e, value) => { const onReceivingStatus = debounce(async (e, value) => {
if (infoObj.status === 8 || infoObj.status === 9 || infoObj.status === 4 || infoObj.status === 5) { if (infoObj.status === 8 || infoObj.status === 9 || infoObj.status === 4 || infoObj.status === 5) {
alert.error('不允许更改') alert.error('不允许更改')
@ -69,10 +70,11 @@ export default () => {
icon: 'success' icon: 'success'
}) })
setReceivingStatus(value) setReceivingStatus(value)
getDetail()
} else { } else {
Taro.hideLoading() Taro.hideLoading()
Taro.showToast({ Taro.showToast({
title: res.msg, title: '请先去新增地址',
icon: 'error' icon: 'error'
}) })
} }
@ -595,21 +597,22 @@ export default () => {
<View className={styles.flexMoney}> <View className={styles.flexMoney}>
<View className={styles.flexTotalBox}> <View className={styles.flexTotalBox}>
<View className={styles.totalFont}></View> <View className={styles.totalFont}></View>
<View className={classnames('iconfont', 'icon-tishi', styles.tishi)}></View> <IconFont name={'icon-tishi'} size={28} ></IconFont>
</View> </View>
<View className={styles.shoudPay}>{formatPriceDiv(infoObj.total_should_collect_money)}</View> <View className={styles.shoudPay}>{formatPriceDiv(infoObj.total_should_collect_money)}</View>
</View> </View>
<View className={styles.flexMoney}> <View className={styles.flexMoney}>
<View className={styles.flexTotalBox}> <View className={styles.flexTotalBox}>
<View className={styles.totalFont}></View> <View className={styles.totalFont}></View>
<View className={classnames('iconfont', 'icon-tishi', styles.tishi)}></View> <IconFont name={'icon-tishi'} size={28} ></IconFont>
</View> </View>
<View className={styles.shoudPay}>{formatPriceDiv(infoObj.actual_amount)}</View> <View className={styles.shoudPay}>{formatPriceDiv(infoObj.actual_amount)}</View>
</View> </View>
<View className={styles.flexMoney}> <View className={styles.flexMoney}>
<View className={styles.flexTotalBox}> <View className={styles.flexTotalBox}>
<View className={styles.totalFont}></View> <View className={styles.totalFont}></View>
<View className={classnames('iconfont', 'icon-tishi', styles.tishi)}></View> {/* <View className={classnames('iconfont', 'icon-tishi', styles.tishi)}></View> */}
<IconFont name={'icon-tishi'} size={28} ></IconFont>
</View> </View>
<View className={styles.shoudPay}>{formatPriceDiv(infoObj.wait_pay_amount)}</View> <View className={styles.shoudPay}>{formatPriceDiv(infoObj.wait_pay_amount)}</View>
</View> </View>

View File

@ -17,9 +17,38 @@ import {
import Tabs from "./components/tabs" import Tabs from "./components/tabs"
import TimePicker from "@/components/timePicker" import TimePicker from "@/components/timePicker"
import dayjs from 'dayjs' import dayjs from 'dayjs'
import IconFont from '@/components/iconfont/iconfont'
export default () => { export default () => {
//页码和页数
const [searchField, setSearchField] = useState<
{
status: number | unknown;
page: number;
size: number;
name: string;
sale_mode: number | string;
stage: number | string;
return_type: number | string;
sale_start_time: number | string;
sale_end_time: number | string;
}>({
status: 1,
page: 1,
size: 10,
name: '',
sale_mode: '不限',
stage: '不限',
return_type: '不限',
sale_start_time: '',
sale_end_time: ''
})
const pageNum = useRef({ size: searchField.size, page: searchField.page })
//监听筛选条件变化
useEffect(() => {
getOrderList()
}, [searchField.size, searchField.name])
//获取订单列表 //获取订单列表
const { fetchData: listFetchData, state: orderState } = mpreturnApplyOrderlist() const { fetchData: listFetchData, state: orderState } = mpreturnApplyOrderlist()
@ -35,36 +64,9 @@ export default () => {
setRefresherTriggeredStatus(() => false) setRefresherTriggeredStatus(() => false)
} }
//页码和页数
const [searchField, setSearchField] = useState<
{
status: number | unknown;
page: number;
size: number;
name: string;
sale_mode: number | string;
stage: number | string;
return_type: number | string;
saleStartTime: number | string;
saleEndTime: number | string;
}>({
status: 1,
page: 1,
size: 10,
name: '',
sale_mode: '不限',
stage: '不限',
return_type: '不限',
saleStartTime: '',
saleEndTime: ''
})
const pageNum = useRef({ size: searchField.size, page: searchField.page })
//监听筛选条件变化
useEffect(() => {
getOrderList()
}, [searchField])
//输入了搜索关键字 //输入了搜索关键字
const getSearchData = useCallback((e) => { const getSearchData = useCallback((e) => {
@ -136,7 +138,7 @@ export default () => {
return it return it
}) })
setModeList([...modeList]) setModeList([...modeList])
setSearchField((e) => ({ ...e, sale_mode: item.id })) setSearchField((e) => ({ ...e, sale_mode: item.id, }))
} }
useEffect(() => { useEffect(() => {
getStagelist() getStagelist()
@ -172,7 +174,7 @@ export default () => {
return it return it
}) })
setStageList([...stageList]) setStageList([...stageList])
setSearchField((val) => ({ ...val, size: 10, stage: item.id })) setSearchField((val) => ({ ...val, stage: item.id }))
} }
@ -203,7 +205,7 @@ export default () => {
return it return it
}) })
setTypeList([...typeList]) setTypeList([...typeList])
setSearchField((val) => ({ ...val, size: 10, return_type: item.id })) setSearchField((val) => ({ ...val, return_type: item.id }))
} }
//是否不允许确认筛选 //是否不允许确认筛选
@ -211,8 +213,8 @@ export default () => {
if (searchField.stage !== '不限' || if (searchField.stage !== '不限' ||
searchField.sale_mode !== '不限' || searchField.sale_mode !== '不限' ||
searchField.return_type !== '不限' || searchField.return_type !== '不限' ||
searchField.saleStartTime !== '' || searchField.sale_start_time !== '' ||
searchField.saleEndTime !== '' searchField.sale_end_time !== ''
) { ) {
return false return false
} else { } else {
@ -234,10 +236,11 @@ export default () => {
sale_mode: '不限', sale_mode: '不限',
stage: '不限', stage: '不限',
return_type: '不限', return_type: '不限',
saleStartTime: '', sale_start_time: '',
saleEndTime: '', sale_end_time: '',
})) }))
setStart(myDate.toLocaleDateString()) setStart(myDate.toLocaleDateString())
getOrderList()
setEnd('') setEnd('')
} }
@ -267,11 +270,11 @@ export default () => {
start: '', start: '',
end: '' end: ''
} }
obj.start = myDate?.toLocaleDateString() + ' ' + '00:00:00' obj.start = `${dayjs(new Date(myDate?.toLocaleDateString() + ' ' + '00:00:00',)).format('YYYY-MM-DD')} 00:00:00`,
obj.end = `${dayjs(new Date(obj?.start)).add(1, 'day').format('YYYY-MM-DD')} 00:00:00` obj.end = `${dayjs(new Date(obj?.start)).add(1, 'day').format('YYYY-MM-DD')} 00:00:00`
eq.value = obj eq.value = obj
} }
setSearchField((val) => ({ ...val, saleStartTime: eq?.value?.start, saleEndTime: eq?.value?.end })) setSearchField((val) => ({ ...val, sale_start_time: eq?.value?.start, sale_end_time: eq?.value?.end, size: 10 }))
setStart(eq?.value?.start) setStart(eq?.value?.start)
setEnd(eq?.value?.end) setEnd(eq?.value?.end)
setShowTime(false) setShowTime(false)
@ -285,17 +288,26 @@ export default () => {
} }
}, [end]) }, [end])
const handSure = () => {
pageNum.current.page = 1
setSearchField((val) => ({ ...val, size: 10 }))
setshowPopup?.(false)
getOrderList()
}
useEffect(() => { useEffect(() => {
setSearchField(searchField) setSearchField(searchField)
console.log(searchField, 9999)
}, [searchField]) }, [searchField])
return ( return (
<> <>
<View style={{ background: '#FFFFFF', paddingLeft: '20rpx', paddingBottom: '20rpx', position: 'sticky', top: '0', zIndex: '99' }}> <View style={{ background: '#FFFFFF', paddingLeft: '20rpx', paddingBottom: '20rpx', position: 'sticky', top: '0', zIndex: '99' }}>
<Search placeholder='搜索商品/名称/颜色/订单号' showBtn={false} changeOnSearch={getSearchData} debounceTime={300} > <Search placeholder='搜索商品/名称/颜色/订单号' showBtn={false} changeOnSearch={getSearchData} debounceTime={300} >
<View className={styles.flexBox} onClick={() => showSelctPopup()}> <View className={styles.flexBox} onClick={() => showSelctPopup()}>
<View className={classnames('iconfont', 'icon-shaixuan', !isDisabled ? styles.icon_shaixuan : styles.activeshaixuan)}></View> <IconFont name='icon-shaixuan' size={35} color={!isDisabled ? '#0D7CFF' : ''} customClassName={styles['activeshaixuan']} />
{/* <View className={classnames('iconfont', 'icon-shaixuan', !isDisabled ? styles.icon_shaixuan : styles.activeshaixuan)}></View> */}
<View className={classnames(isDisabled ? styles.shaixuan : styles.activeshai)}></View> <View className={classnames(isDisabled ? styles.shaixuan : styles.activeshai)}></View>
</View> </View>
</Search> </Search>
@ -362,9 +374,12 @@ export default () => {
<View className={styles.thirdBox}> <View className={styles.thirdBox}>
<View className={styles.thirdTopfont}></View> <View className={styles.thirdTopfont}></View>
<View className={styles.timeBox2} onClick={() => { setShowTime(true) }}>{timeArea} <View className={styles.timeBox2} onClick={() => { setShowTime(true) }}>{timeArea}
{ <View className={styles.more}>
timeArea == '自定义起始时间' && <View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.more)}></View> {
} timeArea == '自定义起始时间' &&
<IconFont name={'icon-chakanquanbukehu'} color={'#000000'} size={40} customClassName={styles['more']}></IconFont>
}
</View>
</View> </View>
</View> </View>
<View style={{ height: '100rpx' }}></View> <View style={{ height: '100rpx' }}></View>
@ -372,7 +387,7 @@ export default () => {
<View className={styles.bottomBox}> <View className={styles.bottomBox}>
<Button className={styles.resetBox} onClick={() => { handReset() }}> </Button > <Button className={styles.resetBox} onClick={() => { handReset() }}> </Button >
<Button className={classnames(isDisabled ? styles.button : styles.activeButton)} disabled={isDisabled} onClick={() => { setshowPopup?.(false) }}> </Button > <Button className={classnames(isDisabled ? styles.button : styles.activeButton)} disabled={isDisabled} onClick={() => handSure()}> </Button >
</View> </View>
{/* <View className={styles.areaBox}></View> */} {/* <View className={styles.areaBox}></View> */}

View File

@ -45,7 +45,7 @@ export const Shopping: FC = memo(() => {
) )
}) })
interface InternalContainer {} interface InternalContainer { }
const ShoppingCartContainer: FC<InternalContainer> = () => { const ShoppingCartContainer: FC<InternalContainer> = () => {
const { isManageStatus, setManageStatus, selectedAmount, currentCheckedPurchaserId, currentCheckedSaleMode, colorStore, setColorStore } = useShoppingContext() const { isManageStatus, setManageStatus, selectedAmount, currentCheckedPurchaserId, currentCheckedSaleMode, colorStore, setColorStore } = useShoppingContext()
@ -75,7 +75,7 @@ const ShoppingCartContainer: FC<InternalContainer> = () => {
}, [shoppingCartData, state]) }, [shoppingCartData, state])
useDidShow(() => { useDidShow(() => {
;(async () => { ; (async () => {
await fetchData() await fetchData()
let query = Taro.createSelectorQuery() let query = Taro.createSelectorQuery()
console.log('query', query) console.log('query', query)
@ -104,11 +104,11 @@ const ShoppingCartContainer: FC<InternalContainer> = () => {
goLink('/pages/submitOrder/index', { goLink('/pages/submitOrder/index', {
purchaser_id: currentCheckedPurchaserId, purchaser_id: currentCheckedPurchaserId,
sale_mode: currentCheckedSaleMode, sale_mode: currentCheckedSaleMode,
shopping_cart_product_color_list: Object.values(targetGoodsKind).map((item: Goods) => { shopping_cart_product_color_list: JSON.stringify(Object.values(targetGoodsKind).map((item: Goods) => {
if (item.checked) { if (item.checked) {
return item.id return item.id
} }
}), }))
}) })
} }
@ -139,7 +139,7 @@ const ShoppingCartContainer: FC<InternalContainer> = () => {
const handleSelectAllCheckbox = (isSelectAll: boolean) => { const handleSelectAllCheckbox = (isSelectAll: boolean) => {
console.log('handleSelectAllCheckbox', isSelectAll) console.log('handleSelectAllCheckbox', isSelectAll)
const tempObject = colorStore const tempObject = colorStore
Object.entries(colorStore).forEach(([key,value])=>{ Object.entries(colorStore).forEach(([key, value]) => {
tempObject[key] = { tempObject[key] = {
...value, ...value,
checked: isSelectAll, checked: isSelectAll,

View File

@ -9,35 +9,45 @@ import Popup from '@/components/popup'
import { debounce } from '@/common/util' import { debounce } from '@/common/util'
import { import {
mpsaleOrderpreView, mpsaleOrderpreView,
mpsaleOrderput, mpsaleOrderpost,
mpsaleOrderaddress
} from '@/api/order' } from '@/api/order'
import { alert } from '@/common/common' import { alert } from '@/common/common'
import { formatPriceDiv, formatDateTime, formatWeightDiv } from '@/common/format' import { formatPriceDiv, formatDateTime, formatWeightDiv } from '@/common/format'
import IconFont from '@/components/iconfont/iconfont'
export default () => { export default () => {
const router: any = useRouter() const router: any = useRouter()
const [infoObj, setInfoObj] = useState<any>({})
useDidShow(() => { useDidShow(() => {
getDetail()
})
//页面下拉刷新
usePullDownRefresh(() => {
getDetail()
})
//获取选择的客户
let pages = Taro.getCurrentPages();
let currPage = pages[pages.length - 1]; // 获取当前页面
setInfoObj({
...infoObj,
province_name: currPage.data.addressObj.province_name,
address_id: currPage.data.addressObj.id,
city_name: currPage.data.addressObj.city_name,
district_name: currPage.data.addressObj.district_name,
target_user_name: currPage.data.addressObj.name,
purchaser_phone: currPage.data.addressObj.phone,
})
})
useEffect(() => {
getDetail()
}, [])
useEffect(() => {
setInfoObj(infoObj)
console.log(infoObj, 66666)
}, [infoObj])
//收货方法,1:自提2物流 //收货方法,1:自提2物流
const [receivingStatus, setReceivingStatus] = useState(null) const [receivingStatus, setReceivingStatus] = useState<any>(null)
//切换自提或者物流 //切换自提或者物流
const { fetchData: selectFetch } = mpsaleOrderaddress()
const onReceivingStatus = debounce(async (e, value) => { const onReceivingStatus = debounce(async (e, value) => {
if (infoObj.status === 8 || infoObj.status === 9 || infoObj.status === 4 || infoObj.status === 5) {
alert.error('不允许更改')
return false
}
e.stopPropagation() e.stopPropagation()
if (receivingStatus === value) { if (receivingStatus == value) {
alert.error('不能选择相同的方式') alert.error('不能选择相同的方式')
return false return false
} }
@ -45,57 +55,37 @@ export default () => {
title: '请稍等...', title: '请稍等...',
mask: true mask: true
}) })
const res = await selectFetch({ id: Number(infoObj.id), shipment_mode: value }) setReceivingStatus(value)
if (res.msg === 'success') { Taro.hideLoading()
Taro.hideLoading()
Taro.showToast({
title: '成功',
icon: 'success'
})
setReceivingStatus(value)
} else {
Taro.hideLoading()
Taro.showToast({
title: res.msg,
icon: 'error'
})
}
}, 300) }, 300)
const { fetchData: infoFetch } = mpsaleOrderpreView() const { fetchData: infoFetch } = mpsaleOrderpreView()
const [infoObj, setInfoObj] = useState<any>({})
//获取订单详情 //获取订单详情
const getDetail = async () => { const getDetail = async () => {
let arr: any[] = []
arr = JSON.parse(decodeURIComponent(router.params.shopping_cart_product_color_list))
let list: any[] = [] let list: any[] = []
router.params?.shopping_cart_product_color_list?.forEach(item => { arr?.forEach(item => {
list.push({ list.push({
shopping_cart_product_color_id: item.shopping_cart_product_color_id, shopping_cart_product_color_id: item,
sale_price: 0 sale_price: 0
}) })
}) })
const query = { const query = {
purchaser_id: router.params.purchaser_id, purchaser_id: Number(router.params.purchaser_id),
sale_mode: router.params.sale_mode, sale_mode: Number(router.params.sale_mode),
shopping_cart_product_color_list: list shopping_cart_product_color_list: list
} }
const res = await infoFetch(query) const res = await infoFetch(query)
setInfoObj(res.data) setInfoObj(res.data)
setReceivingStatus(res.data.shipment_mode) setReceivingStatus(1)
} }
//备注操作 //备注操作
const [showDesc, setShowDesc] = useState(false) const [showDesc, setShowDesc] = useState(false)
const { fetchData: remarkFetch } = mpsaleOrderput()
const getRemark = useCallback(async (e) => { const getRemark = useCallback(async (e) => {
const res = await remarkFetch({ remark: e, id: Number(router.params.id) }) setShowDesc(false)
if (res.msg === 'success') { setInfoObj((val) => ({ ...val, remark: e }))
Taro.showToast({
title: '成功',
icon: 'success'
})
setShowDesc(false)
getDetail()
}
}, []) }, [])
@ -103,10 +93,65 @@ export default () => {
const handSelect = (obj) => { const handSelect = (obj) => {
Taro.navigateTo({ Taro.navigateTo({
url: '/pages/addressManager/index?orderId=' + obj.id + '&purchaser_id=' + obj.purchaser_id url: '/pages/addressManager/index?orderId=' + '-100' + '&purchaser_id=' + router.params.purchaser_id
}) })
} }
//提交订单
const { fetchData: postFetch } = mpsaleOrderpost()
const handSure = () => {
if (receivingStatus == 2 && !infoObj.address_id) {
return alert.error('请选择地址')
}
let list: any[] = []
infoObj.product_list.forEach(item => {
item.product_colors.forEach(it => {
list.push({
sale_price: it.sale_price,
shopping_cart_product_color_id: Number(it.id)
})
})
})
let query = {
address_id: Number(infoObj.address_id) ? Number(infoObj.address_id) : 0,
list: list,
physical_warehouse: infoObj.physical_warehouse,
purchaser_id: Number(router.params.purchaser_id),
remark: infoObj.remark,
sale_mode: infoObj.sale_mode,
shipment_mode: receivingStatus
}
Taro.showModal({
content: "确认提交吗?",
confirmText: "确认",
cancelText: "取消",
success: async function (res) {
if (res.confirm) {
Taro.showLoading({
title: '请稍等...',
mask: true
})
const res = await postFetch(query)
if (res?.msg === 'success') {
Taro.showToast({
title: '成功'
})
Taro.hideLoading()
Taro.redirectTo({
url: '/pages/orderDetails/index?id=' + res.data.id
})
} else {
Taro.hideLoading()
Taro.showToast({
title: res?.msg,
icon: 'error'
})
}
}
}
})
}
return ( return (
<View className={styles.mainBox}> <View className={styles.mainBox}>
<AddressDetailBox <AddressDetailBox
@ -121,19 +166,20 @@ export default () => {
modeName={infoObj.sale_mode_name} modeName={infoObj.sale_mode_name}
> >
<View className={styles.pussBox}> <View className={styles.pussBox}>
<View className={styles.pussName}>{infoObj.purchaser_name}</View> <View className={styles.pussName}>{router.params.purchaser_name}</View>
<View className={styles.pussPhone}>{infoObj.purchaser_phone}</View> {/* <View className={styles.pussPhone}>{infoObj.purchaser_phone}</View> */}
</View> </View>
</DefaultBox> </DefaultBox>
<View className={styles.total}> {infoObj.total_fabrics} {infoObj.total_colors} {infoObj.sale_mode === 0 ? infoObj.total_number : infoObj.total_number / 100} {infoObj.sale_mode === 0 ? '条' : 'm'}</View> {/* <View className={styles.total}> {infoObj.product_list?.length} 种面料,{infoObj.total_colors} 个颜色,共 {infoObj.sale_mode === 0 ? infoObj.total_number : infoObj.total_number / 100} {infoObj.sale_mode === 0 ? '条' : 'm'}</View> */}
<View className={styles.productBox}> <View className={styles.productBox}>
<GoodsItem list={infoObj?.product_list} obj={infoObj}></GoodsItem> <GoodsItem list={infoObj?.product_list} obj={infoObj}></GoodsItem>
<View className={styles.flexMoney}> <View className={styles.flexMoney}>
<View className={styles.flexTotalBox}> <View className={styles.flexTotalBox}>
<View className={styles.totalFont}></View> <View className={styles.totalFont}></View>
<View className={classnames('iconfont', 'icon-tishi', styles.tishi)}></View> <IconFont name={'icon-tishi'} size={28} ></IconFont>
{/* <View className={classnames('iconfont', 'icon-tishi', styles.tishi)}></View> */}
</View> </View>
<View className={styles.shoudPay}>{formatPriceDiv(infoObj.total_should_collect_money)}</View> <View className={styles.shoudPay}>{formatPriceDiv(infoObj.estimate_amount)}</View>
</View> </View>
</View> </View>
<DefaultBox title={'备注信息'} showMode={true} modeName={`${'填写/修改备注'} >`} clickNode={() => setShowDesc(true)}> <DefaultBox title={'备注信息'} showMode={true} modeName={`${'填写/修改备注'} >`} clickNode={() => setShowDesc(true)}>
@ -147,11 +193,11 @@ export default () => {
<View className={styles.leftBottom}> <View className={styles.leftBottom}>
<View className={styles.topFlex}> <View className={styles.topFlex}>
<View className={styles.topFont}>:</View> <View className={styles.topFont}>:</View>
<View className={styles.topTotal}>¥3564.00</View> <View className={styles.topTotal}>¥{formatPriceDiv(infoObj.estimate_amount)}</View>
</View> </View>
<View className={styles.bottomFlex}>3 3 3 M</View> <View className={styles.bottomFlex}>{infoObj.product_list?.length} {infoObj.total_colors} {infoObj.sale_mode === 0 ? infoObj.total_number : infoObj.total_number / 100} {infoObj.sale_mode === 0 ? '条' : 'm'}</View>
</View> </View>
<View className={styles.rightBottom}></View> <View className={styles.rightBottom} onClick={() => handSure()}></View>
</View> </View>
</View> </View>
) )
@ -219,12 +265,12 @@ const GoodsItem = memo((porps: PropGoods) => {
<View className={styles.itemPic} style={{ backgroundColor: `rgb(${it?.rgb?.r} ${it?.rgb?.g} ${it?.rgb?.b})` }}></View> <View className={styles.itemPic} style={{ backgroundColor: `rgb(${it?.rgb?.r} ${it?.rgb?.g} ${it?.rgb?.b})` }}></View>
<View className={styles.itemRight}> <View className={styles.itemRight}>
<View className={styles.item_right_top}> <View className={styles.item_right_top}>
<View className={styles.itemName}>{it.code}# {it.name}</View> <View className={styles.itemName}>{it.code} {it.name}</View>
<View className={styles.itemNums}>x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'}</View> <View className={styles.itemNums}>x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'}</View>
</View> </View>
<View className={styles.item_right_Bottom}> <View className={styles.item_right_Bottom}>
<View className={styles.itemMoney}>¥{it.sale_price / 100}/{obj?.sale_mode === 0 ? '条' : 'm'}</View> <View className={styles.itemMoney}>¥{it.sale_price / 100}/{obj?.sale_mode === 0 ? '条' : 'm'}</View>
<View className={styles.itemMoneyOne}>¥{formatPriceDiv(it.total_sale_price)}</View> <View className={styles.itemMoneyOne}>¥{formatPriceDiv(it.estimate_amount)}</View>
</View> </View>
</View> </View>
</View> </View>