商城测试版v8

This commit is contained in:
2022-07-28 20:37:43 +08:00
parent 84bc43fbb9
commit d30fdd28a8
19 changed files with 138 additions and 399 deletions
@@ -1,163 +0,0 @@
import { EditSaleOrderAddressApi, EditSaleOrderShipmentModeApi } from "@/api/order";
import { alert } from "@/common/common";
import { ORDER_STATUS } from "@/common/enum";
import { debounce } from "@/common/util";
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 styles from './index.module.scss'
export type AddressInfoParam = {
province_name: string,
city_name: string,
district_name: string,
address_detail: string,
id?: number,
name: string,
phone: string,
}
type Param = {
onSelect?: (val:any) => void, //选择地址
defaultValue?: AddressInfoParam|null, //默认值
disabled?: false|true, //true禁用后只用于展示
onChangeShipmentMode?: (val: number) => void, //返回收货方式
status?: 1|2, //1确认订单时使用, 2订单流程
orderInfo?: {
orderId: number //订单id
shipment_mode: 1|2, //1自提 2物流
status: number //订单状态
}
}
export default memo(forwardRef(({onSelect, onChangeShipmentMode, defaultValue = null, orderInfo, status = 2}: Param, ref) => {
const [showAddressList, setShowAddressList] = useState(false)
useEffect(() => {
setUserInfo(() => defaultValue)
}, [defaultValue])
const [userInfo, setUserInfo] = useState<any>()
//地址格式
const formatAddress = useMemo(() => {
if(userInfo)
return userInfo.province_name + userInfo.city_name + userInfo.district_name + userInfo.address_detail
}, [userInfo])
const changeShow = () => {
if(receivingStatus == 2 && !logisticsShow)
setShowAddressList(() => true)
}
useEffect(() => {
if(orderInfo)
setReceivingStatus(() => orderInfo.shipment_mode||2)
}, [orderInfo])
//把内部方法提供给外部
useImperativeHandle(ref, () => ({
changeShow
}))
//收货方法,1:自提,2物流
const [receivingStatus, setReceivingStatus] = useState(2)
const {fetchData: shipmentModeFetchData} = EditSaleOrderShipmentModeApi()
const onReceivingStatus = (value, e) => {
e.stopPropagation()
changeReceivingStatus(value)
}
const changeReceivingStatus = debounce(async (value) => {
if(!orderInfo) return false
if(status == 1) {
onChangeShipmentMode?.(value)
setReceivingStatus(value)
return false
}
alert.loading('正在修改')
const res = await shipmentModeFetchData({id: orderInfo.orderId, shipment_mode:value})
if(res.success) {
alert.success('收货方式修改成功')
onChangeShipmentMode?.(value)
setReceivingStatus(value)
} else {
alert.none(res.msg)
}
}, 10)
//修改地址
const [addressId, setAddressId] = useState(0)
const {fetchData: addressFetchData} = EditSaleOrderAddressApi()
const getAddress = async (value) => {
if(!orderInfo) return false
if(status == 1) {
setShowAddressList(() => false)
setAddressId(value.id)
setUserInfo(() => value)
return false
}
alert.loading('正在修改')
const res = await addressFetchData({id: orderInfo.orderId, address_id: value.id})
if(res.success) {
alert.success('地址修改成功')
onSelect?.(value)
setShowAddressList(() => false)
setAddressId(value.id)
setUserInfo(() => value)
} else {
alert.none(res.msg)
}
}
//订单状态
const {
SaleOrderStatusWaitingReceipt,
SaleOrderStatusAlreadyReceipt,
SaleOrderStatusComplete,
SaleOrderStatusRefund,
SaleOrderStatusCancel
} = ORDER_STATUS
//根据订单状态判断是否显示物流
const logisticsShowList = [SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value]
const logisticsShow = useMemo(() => {
return logisticsShowList.includes(orderInfo?.status as number)
}, [orderInfo])
return (
<View>
<View className={styles.order_address} onClick={() => changeShow()}>
<View className={classnames(styles.order_address_icon, 'iconfont', receivingStatus == 2?'icon-daohang':'icon-fahuo')}></View>
<View className={styles.order_address_text_con}>
<View className={styles.order_address_text_title}>
<Text className={styles.address_text}>{formatAddress}</Text>
{(receivingStatus == 2 && !logisticsShow)&&<Text className={classnames(styles.moreIconfont,'iconfont icon-a-moreback')}></Text>}
</View>
<View className={styles.order_address_text_name}>
<Text>{userInfo?.name}</Text>
<Text>{userInfo?.phone}</Text>
</View>
</View>
{!logisticsShow&&<View className={styles.updateBtn}>
<View className={styles.updateBtn_list}>
<View className={classnames(styles.updateBtn_item, receivingStatus==1&&styles.updateBtn_item_select)} onClick={(e) => onReceivingStatus(1,e)}>自提</View>
<View className={classnames(styles.updateBtn_item, receivingStatus==2&&styles.updateBtn_item_select)} onClick={(e) => onReceivingStatus(2,e)}>物流</View>
</View>
<View style={{transform: receivingStatus==1?'translateX(0)':'translateX(100%)'}} className={classnames(styles.updateBtn_select)}></View>
</View>||
<View className={styles.logisticsBtn}>
查看物流
</View>}
</View>
<Popup show={showAddressList} showTitle={false} onClose={() => setShowAddressList(false)}>
<View className={styles.order_address_list}>
<View className={styles.order_address_title}>请选择收货地址</View>
<View className={styles.addressList_con}>
<AddressList onSelect={getAddress} id={addressId}/>
</View>
</View>
</Popup>
</View>
)
}))
@@ -98,16 +98,17 @@
width: 152px;
height: 72px;
background: #ffffff;
border: 2px solid #dddddd;
border: 2px solid #007AFF;
border-radius: 38px;
position: absolute;
bottom: 10px;
right: 10px;
z-index: 999;
font-size: 28px;
color: #707070;
color: #007AFF;
text-align: center;
line-height: 72px;
}
.order_address_text_no{
flex: 1;
+2 -1
View File
@@ -119,7 +119,7 @@ export default memo(({show = false, onClose, orderInfo, onSubmitSuccess}:Param)
if((submitData.payment_method == PaymentMethodAccountPeriod.value || orderInfo?.status == SaleorderstatusWaitingPrePayment.value)&& orderInfo?.sale_mode != 1) {
await openSubscriptionMessage({orderId: orderInfo?.id, scenes: ToPay.value})
}
alert.loading('正在支付')
alert.showLoading('正在支付')
let res:any = null
if(orderInfo?.should_collect_order_id) {
res = await submitFetchData(submitData)
@@ -132,6 +132,7 @@ export default memo(({show = false, onClose, orderInfo, onSubmitSuccess}:Param)
} else {
alert.none(res.msg)
}
alert.hideLoading()
}, 800)
//预付款
@@ -27,7 +27,8 @@ type ListParam = {
weight: string,
length: string,
sale_price: string,
total_price: string
total_price: string,
weight_error: string
}
export default memo(({show = true, onClose, company, orderInfo}:Param) => {
const [detail, setDetail] = useState<any>()
@@ -53,6 +54,7 @@ export default memo(({show = true, onClose, company, orderInfo}:Param) => {
weight: formatWeightDiv(citem.actual_weight||citem.estimate_weight).toString(),
sale_price: formatPriceDiv(citem.sale_price).toString(),
total_price: formatPriceDiv(citem.total_sale_price||citem.estimate_amount).toString(),
weight_error: formatWeightDiv(citem.weight_error).toString()
})
})
})
@@ -90,7 +92,7 @@ export default memo(({show = true, onClose, company, orderInfo}:Param) => {
show_actual_amount: orderInfo.actual_amount > 0,
wait_pay_amount: formatPriceDiv(orderInfo.wait_pay_amount).toString(),
show_wait_pay_amount: orderInfo.wait_pay_amount > 0,
show_barcode: true
show_barcode: true,
}))
}
}, [orderInfo])
+1
View File
@@ -230,6 +230,7 @@ import styles from './index.module.scss'
const list = orderDetail?.delivery_appendix_url?.map(item => {
return formatImgUrl(item, '!w800')
})
if(list?.length <= 0) return alert.error('暂无图片')
Taro.previewImage({
current: list[0], // 当前显示
urls: list // 需要预览的图片http链接列表
@@ -62,15 +62,17 @@ export default memo(({show, onClose, onSubmit, id}:Param) => {
const formatCount = useCallback((item) => {
return formatDetailOrder?.sale_mode == 0? item.roll : Number(item.length / 100)
}, [formatDetailOrder])
//对应单价
const standardPrice = useCallback(price => {
return formatPriceDiv(price).toLocaleString() + '/' + (formatDetailOrder?.sale_mode == 1?'m':'kg')
}, [formatDetailOrder])
//数量格式
const numText = useMemo(() => {
if(formatDetailOrder) {
let tatal_number = formatDetailOrder?.sale_mode == 0?formatDetailOrder?.total_number:formatDetailOrder?.total_number/100
return `${formatDetailOrder?.total_fabrics}种面料,${formatDetailOrder?.total_colors}种颜色,共${tatal_number}${formatDetailOrder?.unit}`
return `${formatDetailOrder?.total_fabrics} 种面料,${formatDetailOrder?.total_colors} 种颜色,共 ${tatal_number}${formatDetailOrder?.unit}`
}
}, [formatDetailOrder])
@@ -81,7 +81,8 @@ export default memo(({value, onClickBtn}: Param) => {
//获取面料数组
const list = useMemo(() => {
return value?.is_quality_check?value?.quality_check_pass_product:value?.product_list
let res = value?.is_quality_check? value?.quality_check_pass_product : value?.product_list
return res || []
}, [value])
@@ -140,7 +141,7 @@ export default memo(({value, onClickBtn}: Param) => {
<Text>订单号:{value?.order_no}</Text>
</View>
</View>}
{(list?.length <= 0 && value?.is_quality_check) && <View className={styles.inspection}>
{(list?.length <= 0 && value?.is_quality_check) && <View className={styles.inspection} onClick={() => goLink('/pages/salesAfter/index', {id: value?.id})}>
<Text className={classnames('iconfont icon-zhuyi', styles.miconfont)}></Text>
没有质检通过的商品,无法退款
</View>}
+18 -3
View File
@@ -139,13 +139,15 @@
padding: 0 5px 15px;
box-sizing: border-box;
.card_main_title_order{
flex:1
flex:1;
font-size: 28px;
font-weight: 700;
}
.order_more{
display: flex;
justify-content: flex-end;
align-items: center;
font-size: 26px;
font-size: 25px;
color: #707070;
text{
width: auto;
@@ -254,6 +256,7 @@
align-items: center;
justify-content: space-between;
height: 90px;
position: relative;
}
.card-main-list-content-item-left {
@@ -263,8 +266,14 @@
color: #707070;
display: flex;
align-items: center;
min-width: 260px;
}
.card-main-list-content-item .label {
width: 100%;
text-align: right;
padding-right: 10px;
font-size: 26px;
}
.card-main-list-content-item-left text {
margin-right: 35px;
font-size: 56px;
@@ -273,6 +282,12 @@
.card-main-list-content-item-right text {
font-size: 30px;
}
.card-main-list-content-item .customer {
position: absolute;
opacity: 0;
width: 100%;
height: 100%;
}
.auth {
+28 -14
View File
@@ -6,7 +6,7 @@ import { useSelector } from "@/reducers/hooks";
import { alert, goLink } from "@/common/common";
import useLogin from '@/use/useLogin'
import { BASE_URL } from '@/common/constant'
import Taro from "@tarojs/taro";
import Taro, { useShareAppMessage } from "@tarojs/taro";
import { userassets, userorderStatistics } from "@/api/mine"
import { formatPriceDiv } from "@/common/fotmat"
import { useDidShow, } from '@tarojs/taro'
@@ -23,11 +23,18 @@ export default () => {
const [current_githash,setCurrent_githash] = useState(CURRENT_GITHASH)
const [current_env,setCurrent_env] = useState(CURRENT_ENV)
useEffect(() => {
// getSelfUserInfo().then().catch(() => {
// alert.none("授权失败,请授权后再使用");
// });
}, []);
//分享
useShareAppMessage(res => {
if (res.from !== 'button') {
// 来自页面内转发按钮
console.log('点击个德')
}
return {
title: '转发啦',
path: '/page/user?id=123'
}
})
const handleAuth = async () => {
console.log('授权面版')
getSelfUserInfo().then().catch(() => {
@@ -121,7 +128,8 @@ const Header = memo((props: any) => {
}
const navTo = () => {
Taro.navigateTo({
url: '/pages/certification/index'
// url: '/pages/certification/index'
url: '/pages/userEdit/index'
})
}
return (
@@ -321,28 +329,34 @@ const Assets = (props: any) => {
// 功能
const Main = memo(() => {
let menu = [
{ text: "地址管理", icon: "icon-daohang", url: "/pages/addressManager/index" },
{ text: "码单管理", icon: "icon-a-yuanmadanmadanguanli", url: "/pages/weightList/index" },
{ text: "我的收藏", icon: "icon-shoucang", url: "/pages/collection/index" },
{ text: "颜色对比", icon: "icon-yanseduibi", url: "/pages/sampleComparison/index" },
{ text: "我的客服", icon: "icon-wodekefu", type: 'customer', label:'(0757) 8270 6695'},
{ text: "地址管理", icon: "icon-daohang", url: "/pages/addressManager/index", type: 'url' },
{ text: "码单管理", icon: "icon-a-yuanmadanmadanguanli", url: "/pages/weightList/index", type: 'url' },
{ text: "我的收藏", icon: "icon-shoucang", url: "/pages/collection/index", type: 'url' },
{ text: "颜色对比", icon: "icon-yanseduibi", url: "/pages/sampleComparison/index", type: 'url' },
// { text: "分享推广", icon: "icon-fenxiang" },
{ text: "邀请码", icon: "icon-yaoqingtuandui", url: "/pages/bindSalesman/index" }
{ text: "邀请码", icon: "icon-yaoqingma", url: "/pages/bindSalesman/index", type: 'url' },
]
const navigation = (item) => {
if(item.type === 'url') goLink(item.url)
}
return (
<View className={`${styles.crad} ${styles['card-main']} ${styles['card-feature']}`}>
<View className={styles['card-main-list-content']}>
{
menu.map((item, index) => {
return (
<Navigator hoverClass="none" url={item.url} key={index} className={styles['card-main-list-content-item']}>
<View hoverClass="none" onClick={() => navigation(item)} key={index} className={styles['card-main-list-content-item']}>
<View className={styles['card-main-list-content-item-left']}>
<Text className={`iconfont ${item.icon}`}></Text>
<View>{item.text}</View>
</View>
<View className={styles.label}>{item.label}</View>
<View className={styles['card-main-list-content-item-right']}>
<Text className="iconfont icon-a-moreback"></Text>
</View>
</Navigator>
{item.type === 'customer' && <Button openType="contact" className={styles.customer}></Button>}
</View>
)
})
}
+3 -3
View File
@@ -180,13 +180,13 @@ export default () => {
</View>
<View className="user-edit-content">
<View className="user-edit-content-title"><Text /> 组织资料</View>
<UserEditList onClick={() => (ModifyCompanyNameEl.current as any).setModalShow(true)} data={(formData as any)?.company_name} label="名称" placeholder="待绑定" icon="" />
<UserEditList label="类型" placeholder="完善公司/组织信息" icon="">
<UserEditList onClick={() => (ModifyCompanyNameEl.current as any).setModalShow(true)} data={(formData as any)?.company_name} label="组织名称" placeholder="待绑定" icon="" />
<UserEditList label="组织类型" placeholder="完善公司/组织信息" icon="">
<Picker mode="selector" range={comanyTypeDataFormat as any} rangeKey="name" value={(formData as any)?.purchaser_type} onChange={handleCompanyType}>
{formData?.purchaser_type_name}
</Picker>
</UserEditList>
<UserEditList onClick={() => onNavigate("/pages/certification/index")} label="我的认证" placeholder="待绑定" icon="">
<UserEditList label="我的认证" placeholder="待绑定" icon="" useIcon="true">
<View className={`user-edit-content-company ${(formData as any)?.authentication_status == 4 && "user-edit-content-company-adopt"}`}>
<Text className="iconfont " /> {(formData as any)?.authentication_status == 4 ? "已认证" : "未认证"}
</View>