import {
    apiMyClassifyList,
    apiPublicClassifyList,
    apiAddClassify,
    apiEidtClassify,
    apiDeleteClassify,
    apiShareClassify,
    apiClassifyCopy
} from '@/api/myETA.js'
import {reactive} from 'vue'
import { showToast,showDialog,Dialog } from 'vant';

export function useClassify(){

    const classifyTypeOpt=[
        {
            name:"我的图库",
            type:1
        },
        {
            name:"公共图库",
            type:2
        }
    ]

    const classifyState=reactive({
        classifyTypeAct:1,//当前选中的类型
        myClassifyList:[],//我的图库分类
        pubClassifyList:[],//公共图库分类
        classifyAct:0,//当前选中的分类id

        showEidtClassifyName:false,//显示新增/编辑分类弹窗
        isAddClassifyName:false,//是否为新增分类 false为编辑分类
        classifyNameVal:'',//当前分类名称
        showClassifyOpt:false,//显示分类操作弹窗
        activeClassifyVal:null,//当前选中的分类数据
    })

    // 获取我的图库分类
    const getMyClassify=async()=>{
        const res=await apiMyClassifyList()
        if(res.Ret===200){
            classifyState.myClassifyList=res.Data.List||[]
        }
    }

    // 获取公共图库分类
    const getPubClassify=async()=>{
        const res=await apiPublicClassifyList()
        if(res.Ret===200){
            classifyState.pubClassifyList=res.Data.List||[]
        }
    }

    // 切换图库分类类型
    const classifyTypeChange=(e)=>{
        classifyState.classifyTypeAct=e.type
    }

    // 显示新增分类弹窗
    const handleAddClassify=(item)=>{
        console.log('item',item);
        classifyState.isAddClassifyName=item?false:true
        classifyState.classifyNameVal=item.MyChartClassifyName||''
        classifyState.showEidtClassifyName=true
    }
    // 确认编辑分类
    const handleConfirmEditClassify=async ()=>{
        if(!classifyState.classifyNameVal){
            showToast('请填写分类名称！')
            return
        }
        // 新增
        let res
        if(classifyState.isAddClassifyName){
            res=await apiAddClassify({MyChartClassifyName:classifyState.classifyNameVal})
        }else{
            res=await apiEidtClassify({
                MyChartClassifyName:classifyState.classifyNameVal,
                MyChartClassifyId:classifyState.activeClassifyVal.MyChartClassifyId
            })
        }
        if(res.Ret===200){
            getMyClassify()
            classifyState.showEidtClassifyName=false
        }
    }

    // 显示分类操作弹窗
    const handleShowOpt=(item)=>{
        classifyState.activeClassifyVal=item
        classifyState.showClassifyOpt=true
    }

    // 设置分类是否为公共
    const handleClassifyShare=async ()=>{
        const params={
            IsPublic:classifyState.activeClassifyVal.IsPublic?0:1,
            MyChartClassifyId:classifyState.activeClassifyVal.MyChartClassifyId
        }
        const res=await apiShareClassify(params)
        if(res.Ret===200){
            classifyState.activeClassifyVal.IsPublic=params.IsPublic
            getMyClassify()
            showToast('设置成功')
        }
    }

    // 复制公共图表分类到我的分类中
    const handleCopyClassify=async (item)=>{
        const res=await apiClassifyCopy({
            MyChartClassifyId:item.MyChartClassifyId
        })
        if(res.Ret===200){
            setTimeout(() => {
                showToast('复制成功')
            }, 100);

            getMyClassify()
        }
    }

    // 删除分类
    const handleClassifyDel=(item)=>{
        showDialog({
            title: '提示',
            message: '若删除分类，则分类下关联的所有图表将被全部删除，是否确认删除？',
            showCancelButton:true
        }).then(() => {
            // on close
            apiDeleteClassify({MyChartClassifyId:item.MyChartClassifyId}).then(res=>{
                if(res.Ret===200){
                    getMyClassify()
                    classifyState.showClassifyOpt=false
                    setTimeout(() => {
                        showToast('删除成功')
                    }, 100);
                }
            })
        }).catch(()=>{})
    }

    const handleAddClassifyBeforeClose=(action)=>{
        if(action==='confirm'&&classifyState.isAddClassifyName){
            return false
        }else{
            return true
        }
    }

    return {
        classifyTypeOpt,
        classifyState,
        getMyClassify,
        getPubClassify,
        classifyTypeChange,
        handleAddClassify,
        handleConfirmEditClassify,
        handleShowOpt,
        handleClassifyShare,
        handleCopyClassify,
        handleClassifyDel,
        handleAddClassifyBeforeClose
    }
}