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}/> 
        </>
    )
})