2022-06-30 20:31:51 +08:00

111 lines
3.8 KiB
TypeScript

import Popup from "@/components/popup";
import TextareaEnhance from "@/components/textareaEnhance";
import { ScrollView, Text, View } from "@tarojs/components";
import { memo, useCallback, useEffect, useRef, useState } from "react";
import ReasonPopup from "../reasonPopup";
import styles from './index.module.scss'
import classnames from "classnames";
import { ApplyRefundApi, RefundExplainApi } from "@/api/salesAfterOrder";
import { alert } from "@/common/common";
type Param = {
show?: true|false,
onClose?: () => void,
orderId?: number
}
export default memo(({show, onClose, orderId}:Param) => {
//提交的数据
const submitData = useRef({
return_explain: 0,
sale_order_id: 0,
reason_describe: ''
})
useEffect(() => {
if(orderId) {
submitData.current.sale_order_id = orderId
refundExplain()
}
}, [orderId])
//申请退款
const {fetchData} = ApplyRefundApi()
const getApplyRefund = async () => {
if(!submitData.current.return_explain) return alert.error('请选择说明原因')
let res = await fetchData(submitData.current)
if(res.success) {
alert.error('申请成功')
} else {
alert.error('申请失败')
}
onClose?.()
}
//获取说明数据
const [list, setList] = useState<any[]>([])
const {fetchData: refundExplainFetchdata} = RefundExplainApi()
const refundExplain = async () => {
let res = await refundExplainFetchdata()
setList(res.data.list)
}
const [reason, setReason] = useState({id:0, name:''})
const reasonSelect = useCallback((e) => {
setReason({...reason, name:e.name, id:e.id})
submitData.current.return_explain = e.id
closeReason()
}, [])
//备注
const getOtherReason = useCallback((val) => {
submitData.current.reason_describe = val
}, [])
//显示说明
const [showReason, setShowReason] = useState(false)
const closeReason = useCallback(() => {
setShowReason(false)
}, [])
//提交
const onSubmit = (val) => {
if(val == 2) {
getApplyRefund()
} else {
onClose?.()
submitData.current = {
return_explain: 0,
sale_order_id: 0,
reason_describe: ''
}
}
}
return (
<>
<Popup show={show} title="申请退款" onClose={onClose} >
<View className={styles.apply_after_sales_con}>
<View className={styles.returnSaleInput_item}>
<View className={styles.title}>退</View>
<View className={styles.select} onClick={() => setShowReason(true)}>
<Text>{reason.name||'请选择'}</Text>
<Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text>
</View>
</View>
<TextareaEnhance onChange={getOtherReason} title='备注' placeholder="请输入退款备注"/>
<View className={styles.btns_con}>
<View className={styles.btns_two}>
<View className={styles.rest_btn} onClick={() => onSubmit(1)}></View>
<View className={styles.verify_btn } onClick={() => onSubmit(2)}></View>
</View >
</View>
</View>
</Popup>
<ReasonPopup defaultValue={reason.id} show={showReason} onClose={closeReason} list={list} title="退款说明" onSelect={reasonSelect}/>
</>
)
})