✨ feat(ID1000749):【Bug转需求】新版内部商城销售订单“待付款”及以后的状态都需要显示销售码单
This commit is contained in:
@@ -17,9 +17,11 @@ interface prosObj {
|
||||
showTuiGoods?: boolean
|
||||
handApplyGoods?: () => void
|
||||
handApplyMoney?: () => void
|
||||
handShowCodeList?: () => void
|
||||
showDetail?: boolean
|
||||
goodsObj?: any
|
||||
}
|
||||
|
||||
const BottomBtns = (props: prosObj, ref) => {
|
||||
const {
|
||||
obj = {
|
||||
@@ -36,6 +38,7 @@ const BottomBtns = (props: prosObj, ref) => {
|
||||
handSureGoods,
|
||||
handApplyGoods,
|
||||
handApplyMoney,
|
||||
handShowCodeList,
|
||||
showDetail = false,
|
||||
goodsObj = {},
|
||||
} = props
|
||||
@@ -142,6 +145,15 @@ const BottomBtns = (props: prosObj, ref) => {
|
||||
else { return false }
|
||||
}, [obj])
|
||||
|
||||
// 判断是否显示码单
|
||||
// 订单状态:待付款、待发货、待提货、待收货、已收货、已完成
|
||||
const showCodeList = useMemo(() => {
|
||||
if (obj.status == 3 || obj.status == 8 || obj.status == 11 || obj.status == 9 || obj.status == 4) {
|
||||
return true
|
||||
}
|
||||
else { return false }
|
||||
}, [obj])
|
||||
|
||||
// 多的不显示别的按钮
|
||||
// const currentNums = useRef<any>({ nums: 0 })
|
||||
const itemNums = useMemo(() => {
|
||||
@@ -158,6 +170,7 @@ const BottomBtns = (props: prosObj, ref) => {
|
||||
if (showBuy) {
|
||||
nums = nums + 1
|
||||
}
|
||||
|
||||
return nums
|
||||
}, [obj])
|
||||
|
||||
@@ -176,6 +189,9 @@ const BottomBtns = (props: prosObj, ref) => {
|
||||
(showTuikuan && showDetail && itemNums < 4) && <View className={style.nextBuy} onClick={() => handApplyMoney?.()}>申请退款</View>
|
||||
|
||||
}
|
||||
{
|
||||
(showCodeList && showDetail) && <View className={style.cancle} onClick={() => handShowCodeList?.()}>销售码单</View>
|
||||
}
|
||||
{
|
||||
showTake && showTuiGoods && <View className={style.cancle} onClick={() => handSureGoods?.()}>确认收货</View>
|
||||
}
|
||||
@@ -188,7 +204,6 @@ const BottomBtns = (props: prosObj, ref) => {
|
||||
{
|
||||
canBuy && <View className={style.toBuy} onClick={e => toPay?.(e)}>去付款</View>
|
||||
}
|
||||
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
.popupBox {
|
||||
.scroStyle {
|
||||
height: 900px;
|
||||
}
|
||||
|
||||
.sure {
|
||||
// margin-top: 35px;
|
||||
margin-left: 40px;
|
||||
margin-right: 40px;
|
||||
// width: 670px;
|
||||
height: 80px;
|
||||
background: #337FFF;
|
||||
border-radius: 44px;
|
||||
font-size: 28px;
|
||||
font-family: PingFangSC-Medium, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
line-height: 80px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
import { ScrollView, View, Image } from '@tarojs/components'
|
||||
import { memo, useCallback, useEffect, useMemo, useState, useRef } from 'react'
|
||||
import styles from './index.module.scss'
|
||||
import classnames from 'classnames'
|
||||
// import BottomBtns from '@/components/BottomBtns'
|
||||
import { formatPriceDiv } from '@/common/format'
|
||||
import Taro from '@tarojs/taro'
|
||||
import Popup from '@/components/popup'
|
||||
import useCheckAuthorize from '@/use/useCheckAuthorize'
|
||||
import { alert } from '@/common/common'
|
||||
import { GetPayCode } from "@/api/order"
|
||||
import { formatWeightDiv, formatDateTime } from '@/common/format'
|
||||
import { PAY_H5_CODE_URL } from '@/common/constant'
|
||||
interface Props {
|
||||
obj: any,
|
||||
// picUrl?: string,
|
||||
showPopup: boolean,
|
||||
popupClose: () => void
|
||||
}
|
||||
|
||||
export default memo((props: Props) => {
|
||||
|
||||
const { fetchData: payFetch } = GetPayCode()
|
||||
const [PicUrl, setPicUrl] = useState<string>('')
|
||||
useEffect(() => {
|
||||
//判断进来的是否是空对象,减少性能问题
|
||||
var length = Object.keys(props.obj);
|
||||
if (length.length > 0) getPic()
|
||||
}, [props.obj])
|
||||
|
||||
const getPic = async () => {
|
||||
Taro.showLoading({
|
||||
title: '请稍等...',
|
||||
mask: true
|
||||
})
|
||||
const list: any = [];
|
||||
props.obj.product_list?.forEach((item) => {
|
||||
item.product_colors.forEach((it) => {
|
||||
list.push({
|
||||
product_code: item.code,
|
||||
product_name: item.name,
|
||||
product_color_code: it.code,
|
||||
product_color_name: it.name,
|
||||
num: it.roll.toString(),
|
||||
weight: formatWeightDiv(it.label_weight).toString(),
|
||||
deduction_weight: formatWeightDiv(it.deductions_weight).toString(),
|
||||
settle_weight: formatWeightDiv(it.settle_weight).toString(),
|
||||
deduction_amount: (it.deductions_amount / 100).toString(),
|
||||
sale_price: (it.sale_price / 100).toString(),
|
||||
total_price: (it.estimate_amount / 100).toString(),
|
||||
length: (it.length / 100).toString(),
|
||||
weight_error: formatWeightDiv(it.settle_weight_error).toString(),
|
||||
});
|
||||
});
|
||||
});
|
||||
const query = {
|
||||
list: list,
|
||||
title: "面料销售电子确认单",
|
||||
show_qrcode: true,
|
||||
show_barcode: true,
|
||||
show_wait_pay_amount: true,
|
||||
order_type: props.obj.sale_mode_name,
|
||||
shipment_mode: props.obj.shipment_mode_name,
|
||||
company: props.obj.title_purchaser_name,
|
||||
sale_user: props.obj.sale_user_name,
|
||||
order_created_time: formatDateTime(props.obj.create_time),
|
||||
order_no: props.obj.order_no,
|
||||
target_user_name: props.obj.target_user_name,
|
||||
target_address: props.obj.address_detail,
|
||||
target_description: props.obj.remark,
|
||||
pay_account: props.obj.transfer_remittance_account,
|
||||
bank_account_name: props.obj.account_name,
|
||||
bank_name: props.obj.bank_of_deposit,
|
||||
pay_type: props.obj.settle_mode_name,
|
||||
client: props.obj.purchaser_name,
|
||||
phone: props.obj.target_user_phone,
|
||||
order_total_length: (props.obj.total_number / 100).toString(),
|
||||
order_total_price: (
|
||||
props.obj.bill_total_sale_price / 100
|
||||
).toString(),
|
||||
total_weight_error_discount: (
|
||||
props.obj.total_weight_error_discount / 100
|
||||
).toString(),
|
||||
order_total_num: props.obj.total_number.toString(),
|
||||
qrcode: `${PAY_H5_CODE_URL}?sale_order_no=${props.obj.order_no}`,
|
||||
order_total_weight: (props.obj.total_weight / 1000).toString(),
|
||||
estimate_amount: (props.obj.estimate_amount / 100).toString(),
|
||||
total_sale_price: (props.obj.total_sale_price / 100).toString(),
|
||||
show_total_sale_price: true,
|
||||
show_total_weight_error_discount: true,
|
||||
actual_amount: (props.obj.actual_amount / 100).toString(),
|
||||
wait_pay_amount: (props.obj.wait_pay_amount / 100).toString(),
|
||||
order_total_weight_error: (
|
||||
props.obj.total_weight_error / 1000
|
||||
).toString(),
|
||||
};
|
||||
const res = await payFetch(query)
|
||||
if (res.data) {
|
||||
setPicUrl(res.data.base64)
|
||||
Taro.hideLoading()
|
||||
}
|
||||
}
|
||||
|
||||
const fileData = useRef({
|
||||
filePath: '',
|
||||
base64: '',
|
||||
})
|
||||
|
||||
//预览图片
|
||||
const showImage = () => {
|
||||
const time = new Date().valueOf()
|
||||
const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(PicUrl) || []
|
||||
let filePath = Taro.env.USER_DATA_PATH + '/img' + time + '.' + format
|
||||
fileData.current.filePath = filePath
|
||||
fileData.current.base64 = bodyData
|
||||
const save = Taro.getFileSystemManager()
|
||||
save.writeFile({
|
||||
filePath: fileData.current.filePath,
|
||||
data: fileData.current.base64,
|
||||
encoding: 'base64',
|
||||
})
|
||||
Taro.previewImage({
|
||||
current: fileData.current.filePath, // 当前显示
|
||||
urls: [fileData.current.filePath], // 需要预览的图片http链接列表
|
||||
})
|
||||
}
|
||||
|
||||
//检查是否开启保存图片权限
|
||||
const { check } = useCheckAuthorize({ scope: 'scope.writePhotosAlbum', msg: '您没授权,无法保存图片' })
|
||||
const saveImageCheck = async () => {
|
||||
const res = await check()
|
||||
res && saveImage()
|
||||
}
|
||||
|
||||
//保存图片
|
||||
const saveImage = () => {
|
||||
const time = new Date().valueOf()
|
||||
const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(PicUrl) || []
|
||||
let filePath = Taro.env.USER_DATA_PATH + '/img' + time + '.' + format
|
||||
fileData.current.filePath = filePath
|
||||
fileData.current.base64 = bodyData
|
||||
const save = Taro.getFileSystemManager()
|
||||
save.writeFile({
|
||||
filePath: fileData.current.filePath,
|
||||
data: fileData.current.base64,
|
||||
encoding: 'base64',
|
||||
})
|
||||
alert.loading('正在保存图片')
|
||||
Taro.saveImageToPhotosAlbum({
|
||||
filePath: fileData.current.filePath,
|
||||
success: function () {
|
||||
alert.success('图片保存成功')
|
||||
},
|
||||
fail: function (err) {
|
||||
console.log('err::', err)
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<Popup show={props.showPopup} title={'销售码单'} onClose={() => props.popupClose?.()}>
|
||||
<View className={styles.popupBox}>
|
||||
<ScrollView enhanced scrollY className={styles.scroStyle}>
|
||||
<View className={styles.pic}>
|
||||
<Image lazyLoad mode='widthFix' style={{ width: '100%', height: '100%' }} src={PicUrl} onClick={() => showImage()}></Image>
|
||||
</View>
|
||||
</ScrollView>
|
||||
<View className={styles.sure} onClick={() => saveImageCheck()}>保存图片</View>
|
||||
</View>
|
||||
</Popup>
|
||||
)
|
||||
})
|
||||
Reference in New Issue
Block a user