<template>
    <el-row :gutter="12">
        <el-col :span="6">
            <div class="flex items-center gap-2">
                <el-select
                    v-model="filterVariable.customer"
                    placeholder="选择客户"
                    size="large"
                    multiple
                    filterable
                    collapse-tags
                    collapse-tags-tooltip
                    @change="startFilter"
                     :disabled="disabled"
                >
                    <el-option v-for="customer in customer_list" :label="customer_name(customer)" :value="customer.id" :key="customer.id" />
                </el-select>
                <el-input v-model.trim="filterVariable.code" placeholder="订单包含件号" size="large" @change="startFilter" :disabled="disabled" />
            </div>
        </el-col>
        <el-col :span="3">
            <div class="flex items-center gap-2">
                <el-select
                    v-if="userStore.userArray.length > 1"
                    v-model="filterVariable.operator"
                    placeholder="业务主办"
                    size="large"
                    multiple
                    collapse-tags
                    collapse-tags-tooltip
                    @change="startFilter"
                    :disabled="disabled"
                >
                    <el-option v-for="item in userStore.userArray" :label="userStore.shopMember[item]" :value="item" :key="item" />
                </el-select>
                <el-select v-model="filterVariable.status" placeholder="状态节点" size="large" @change="startFilter" :disabled="disabled">
                    <el-option label="所有询盘单" :value="0"/>
                    <el-option label="待处理" :value="1"/>
                    <el-option label="已建询函" :value="2"/>
                    <el-option label="询函已检" :value="3"/>
                    <el-option label="已建报价" :value="4"/>
                    <el-option label="报价已批" :value="5"/>
                    <el-option label="待付款" :value="6"/>
                </el-select>
            </div>
        </el-col>
        <el-col :span="4">
            <div class="flex items-center gap-2">
                <el-date-picker
                    v-model="filterVariable.date"
                    type="daterange"
                    unlink-panels
                    range-separator="到"
                    start-placeholder="开始日期"
                    end-placeholder="终到日期"
                    size="large"
                    value-format="YYYY-MM-DD"
                    @change="startFilter"
                    :disabled="disabled"
                />
                <el-button @click="resetFilter" type="success" class="hover:(bg-red-400 text-white)"><i class="fa fa-eraser pr-2"></i>重置筛选</el-button>
                <el-button @click="handleCurrentChange" type="primary" class="ml-2"><i class="fa fa-bolt pr-2"></i>列表刷新</el-button>
            </div>
        </el-col>
        <el-col :span="4" :offset="1" class="flex items-center">
            <el-button @click="router.push({path:'/inquiry/create'})" type="danger"><i class="fa fa-plus pr-2"></i>手动建单</el-button>
            <el-button color="#00828a" @click="handleMerge" :disabled="selectionRows.length<2" class="ml-2 pr-2"><i class="fa fa-chain"></i>合并询单</el-button>
        </el-col>
    </el-row>

    <el-table
        ref="orderTableRef"
        v-loading="loading"
        :data="order_list"
        :height="tableHeight"
        stripe
        style="width: 100%;"
        size="large"
        row-class-name="no-expand-icon"
        row-key="id"
        @expand-change="expandChange"
        class="mt-2"
        :expand-row-keys="expandRowKeys"
        :select-on-indeterminate="false"
        :default-expand-all="false"
        @selection-change="handleTableSelectionChange"
    >
        <el-table-column type="selection" width="40"></el-table-column>
        <el-table-column
            label="建单时间"
            width="120"
            header-align="center"
            align="center"
        >
            <template #default="{row}">
                <el-tooltip
                    class="cursor-pointer"
                    effect="dark"
                    :content="`${row.id}`"
                    placement="top-start"
                >
                    <el-text size="small">{{ dayjs(row.created_at).format('YY-MM-DD HH:mm') }}</el-text>
                </el-tooltip>
            </template>
        </el-table-column>
        <el-table-column prop="order_no" label="尾号" header-align="center" align="center" width="86px">
            <template #default="{row,$index}">
                <el-button
                    text
                    @click="row.creator==userStore.userId||userStore.partner.find(id=>id==row.creator)?router.push({path:`/inquiry/edit/${row.id}`}):handleInquiryResult(row,$index,$event)"
                    :disabled="row.is_del != 0"
                >
                    <el-text size="small" tag="b" class="hover:(bg-transparent text-red-900)">{{ row.order_no.slice(12) }}</el-text>
                </el-button>
            </template>
        </el-table-column>
        <el-table-column label="客户名称" :show-overflow-tooltip="true" width="180px" header-align="center">
            <template #default="{row}">
                <el-popover
                    placement="right"
                    title="客户联系"
                    :width="240"
                    trigger="hover"
                >
                    <template #default>
                        <hr>
                        <div class="mt-2" v-if="row.mobile2 || row.email">
                            <div class="pl-2" v-if="row.mobile2">
                                <el-text size="small" tag="b">手机：</el-text>
                                <el-text size="small" tag="span">{{ row.mobile2 }}</el-text>
                            </div>
                            <div class="pl-2" v-if="row.email">
                                <el-text size="small" tag="b">邮箱：</el-text>
                                <el-text size="small" tag="span" v-if="row.email">{{ row.email }}</el-text>
                            </div>
                        </div>
                        <el-text size="small" tag="span" v-else>无联系方式</el-text>
                    </template>
                    <template #reference>
                        <el-text size="small">{{ row.true_name ? row.true_name : row.user_name }}</el-text>
                    </template>
                </el-popover>
            </template>
        </el-table-column>
        <el-table-column label="订单摘要" header-align="center" width="200px" show-overflow-tooltip>
            <template #default="{row}">
                <el-text v-if="userStore.isAdmin || userStore.userId==row.creator || userStore.partner.find(id=>id==row.creator)" size="small" type="warning" class="mx-2 cursor-pointer" @click="handleSubject(row)"><i class="fa fa-pencil"></i></el-text>
                <el-text size="small" type="info" tag="b">{{ row.subject }}</el-text>
            </template>
        </el-table-column>
        <el-table-column label="订单商品" header-align="center" width="90px" align="center">
            <template #default="{row,$index}">
                <el-button
                    size="small"
                    circle
                    @click="editable(row) ? handleBaseInfo(row,$index,$event) : () => {}"
                    :type="editable(row) ? 'primary' : 'warning'"
                >
                    {{ row.products.length }}
                </el-button>
            </template>
        </el-table-column>
        <el-table-column prop="note" label="订单备注" show-overflow-tooltip width="200px" header-align="center">
            <template #default="{row}">
                <el-text size="small" tag="b" type="danger">{{ row.note }}</el-text>
            </template>
        </el-table-column>
        <el-table-column prop="creator" label="主办" width="160" show-overflow-tooltip header-align="center" align="center" v-if="userStore.userArray.length > 1">
            <template #default="{row}">
                {{ userStore.shopMember[row.creator] || `ID-${row.creator}` }}
            </template>
        </el-table-column>
        <el-table-column label="工作节点" align="center" header-align="center" width="140px">
            <template #default="{row}">
                <el-popover
                     v-if="row.is_del==2 || row.is_del==3"
                    :content="row.reason"
                    placement="right-end"
                >
                    <template #reference>
                        <el-tag effect="dark" color="#b23b2f" size="large" v-if="row.is_del==2 || row.is_del==3">
                            {{ row.is_del == 2 ? '业务中止' : '客户中止'}}
                        </el-tag>
                    </template>
                </el-popover>
                <el-tag effect="dark" :type="row.status==0 ? 'danger' : row.status==5 ? 'success' : 'primary'" size="large" v-else>
                    {{ row.status==0 ? (row.products.length == 0 ? '添加商品' : (row.inquiry_status.total == 0 ? '制询价函' : (row.inquiry_status.checked > 0 ? '等待报价' : '回函处理'))) : orderStatus(row.status,row.is_del) }}
                </el-tag>
            </template>
        </el-table-column>
        <el-table-column label="询价状态" align="center" header-align="center" width="100px">
            <template #default="{row,$index}">
                <el-tag
                    size="large"
                    effect="dark"
                    :type="row.inquiry_status.checked > 0 ? 'success' : row.inquiry_status.receice > 0 ? 'primary' : 'warning'"
                    @click="editable(row) ? handleCheckSupply(row,$index,$event) : () => {}"
                    :class="editable(row) ? 'cursor-pointer' : ''"
                >
                    {{ `${row.inquiry_status.checked}/${row.inquiry_status.receive}` }}
                </el-tag>
            </template>
        </el-table-column>
        <el-table-column label="询盘报价" align="right" header-align="center" prop="total_price" width="160">
            <template #default="{row}">
                <el-text :type="row.total_price==0?'danger':'primary'">{{`￥${row.total_price.toFixed(2)}`}}</el-text>
            </template>
        </el-table-column>
        <el-table-column label="" header-align="center">
            <template #default="scope">
                <el-button
                    size="default"
                    type="default"
                    @click="handleWorkflow(scope.row)"
                >
                    <i class="fa fa-history pr-2"></i>工作流
                </el-button>
                <el-button
                    type="primary"
                    @click="handleBaseInfo(scope.row,scope.$index,$event)"
                    :disabled="!editable(scope.row)"
                    class="px-2"
                >
                    品
                </el-button>
                <el-button
                    type="primary"
                    @click="handleCheckSupply(scope.row,scope.$index,$event)"
                    :disabled="!editable(scope.row)"
                    class="px-2"
                >
                    询
                </el-button>
                <!-- <el-button
                    type="primary"
                    @click="handleOfferEdit(scope.row,scope.$index,$event)"
                    :disabled="+scope.row.inquiry_status.checked <= 0 || !editable(scope.row) || +scope.row.is_del != 0"
                    class="px-2"
                >
                    报
                </el-button> -->
                <el-popconfirm
                    width="220"
                    confirm-button-text="删除"
                    cancel-button-text="取消"
                    :icon="InfoFilled"
                    icon-color="#626AEF"
                    title="确定要删除这个订单?"
                    @confirm="handleDelete(scope.$index, scope.row)"
                    @cancel="() => {}"
                >
                    <template #reference>
                        <el-button
                            size="default"
                            type="danger"
                            :disabled="scope.row.status!='0' || scope.row.is_del == 2 || scope.row.is_del == 3"
                            :icon="Delete"
                        />
                    </template>
                </el-popconfirm>
            </template>
        </el-table-column>
    </el-table>

    <div class="pages">
        <el-pagination
            v-model:current-page="currentPage"
            v-model:page-size="pageSize"
            :page-sizes="[20,30,40,50]"
            :disabled="false"
            size="small"
            :background="background"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total"
            @update:current-page="handleCurrentChange"
            @update:page-size="handleSizeChange"
        />
    </div>

    <el-dialog
        v-model="workflowDialogVisible"
        title="订单工作流"
        width="30%"
        destroy-on-close
        center
        :draggable="true"
    >
        <div style="max-height: 50vh;overflow: auto;">
            <el-card class="box-card-edit">
                <el-timeline>
                    <el-timeline-item
                        v-for="(activity, index) in workflow"
                        :key="index"
                        :timestamp="activity.addtime"
                        placement="top"
                    >
                        <el-card>
                            <h4>{{ activity.action }}</h4>
                            <p>{{ activity.user }}在{{ activity.addtime }}提交</p>
                        </el-card>
                    </el-timeline-item>
                </el-timeline>
            </el-card>
        </div>
            <template #footer>
                <span class="dialog-footer">
                    <el-button type="primary" @click="workflowDialogVisible=false" :icon="Share">知道了!</el-button>
                </span>
                </template>
    </el-dialog>

    <el-drawer v-model="showInquiryDrawer" :direction="direction" size="49%">
        <template #header>
            <el-text tag="b" type="primary" size="large">询盘详情</el-text>
        </template>
        <template #default>
            <div class="w-full p-2 flex overflow-auto justify-center">
                <el-table
                    size="small"
                    fit
                    :data="inquiry_result"
                    class="text-xs w-auto"
                    style="border: 1px solid black;"
                    :header-cell-style="{background: '#e0f2fe', color: 'black',borderColor: 'black'}"
                    :cell-style="{borderColor: 'black'}"
                    :max-height="subTableHeight - 40"
                    border
                >
                    <el-table-column type="index" label="#" width="50" align="center" header-align="center"/>
                    <el-table-column prop="b_name" label="品牌" show-overflow-tooltip width="100" align="left" header-align="center"/>
                    <el-table-column prop="code" label="件号" show-overflow-tooltip width="120" align="left" header-align="center"/>
                    <el-table-column prop="new_code" label="更新件号" show-overflow-tooltip width="100" align="left" header-align="center"/>
                    <el-table-column prop="name" label="品名" show-overflow-tooltip width="120" align="left" header-align="center"/>
                    <el-table-column prop="price" label="面价" show-overflow-tooltip width="100" align="right" header-align="center">
                        <template #default="{row}">
                            {{ (Math.round(row.price * 100) / 100.00).toFixed(2) }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="sell_price" label="预计售价" show-overflow-tooltip width="100" align="right" header-align="center">
                        <template #default="{row}">
                            {{ (Math.round(row.sell_price * 100) / 100.00).toFixed(2) }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="goods" label="商城状况" show-overflow-tooltip width="120" header-align="center" align="center">
                        <template #default="{row}">
                            <el-tag v-if="row.goods?.length>0" type="danger">有货({{ row.goods?.length }})</el-tag>
                            <el-tag v-else type="primary">无货</el-tag>
                        </template>
                    </el-table-column>
                    <el-table-column label="客户采购" header-align="center">
                        <el-table-column prop="amount" label="采购数" show-overflow-tooltip width="80" align="right" header-align="center"/>
                        <el-table-column prop="note" label="客户备注" show-overflow-tooltip width="120" align="left" header-align="center"/>
                    </el-table-column>
                    <el-table-column label="销售报价" width="120" align="center" header-align="center" v-if="inquiry_result_status == 3">
                        <el-table-column label="供应品牌" show-overflow-tooltip width="100" align="left" header-align="center">
                            <template #default="{row}">
                                {{ row.g_bname }}
                            </template>
                        </el-table-column>
                        <el-table-column label="商品品相" show-overflow-tooltip width="80" align="left" header-align="center">
                            <template #default="{row}">
                                {{ row.g_quality }}
                            </template>
                        </el-table-column>
                        <el-table-column label="销售价" width="100" align="right" header-align="center">
                            <template #default="{row}">
                                {{ (+row.g_sell_price).toFixed(2) }}
                            </template>
                        </el-table-column>
                        <el-table-column label="加急服务" width="100" align="right" header-align="center">
                            <template #default="{row}">
                                {{ (+row.g_sell_price2).toFixed(2) }}
                            </template>
                        </el-table-column>
                        <el-table-column label="销售数" width="80" align="right" header-align="center">
                            <template #default="{row}">
                                {{ row.g_nums }}
                            </template>
                        </el-table-column>
                        <el-table-column label="销售备注" show-overflow-tooltip width="120" align="left" header-align="center">
                            <template #default="{row}">
                                {{ row.g_note }}
                            </template>
                        </el-table-column>
                    </el-table-column>
                </el-table>
            </div>
        </template>
        <template #footer>
            <div style="flex: auto">
            </div>
        </template>
    </el-drawer>

    <el-drawer v-model="toggleEditDrawer" :direction="direction" size="49%">
        <template #header>
            <el-text tag="b" type="primary" size="large">{{edit_tabs[editDrawer]?.label}}</el-text>
        </template>
        <template #default>
            <Suspense>
                <component
                    @status-change="handleStatusChange"
                    :is="edit_tabs[editDrawer]?.component"
                    :order-id="+editRow.id"
				    :order-status="+editRow.status"
                    :key="editRow.id"
                >
                    <!-- <template #nogo>
                        <el-button color="#b23b2f" @click="nogo" size="large" class="ml-4"><i class="fa fa-stop pr-2"></i>业务中止</el-button>
                    </template>
                    <template #rollback>
                        <span v-if="editRow?.id && editRow?.status!=0 && editDrawer != 'inquiry'">
                            <el-button
                                type="warning"
                                @click="rollback"
                                size="large"
                                class="ml-4"
                            >
                                <i class="fa fa-reply pr-2"></i>流程回滚
                            </el-button>
                        </span>
                    </template> -->
                </component>
                <!-- <template #fallback>
                    功能加载中，请稍候...
                </template> -->
            </Suspense>
        </template>
        <template #footer>
            <div style="flex: auto">
                <span v-if="editRow?.id && editRow?.status!=0 && editDrawer != 'inquiry'">
                    <el-button
                        type="warning"
                        @click="rollback"
                        size="large"
                        class="mx-6"
                    >
                        <i class="fa fa-reply pr-2"></i>流程回滚
                    </el-button>
                </span>
                <el-button color="#b23b2f" @click="nogo" size="large" class="mx-6"><i class="fa fa-stop pr-2"></i>业务中止</el-button>
            </div>
        </template>
    </el-drawer>
</template>

<script setup>
    import { ref,onMounted,computed, onUnmounted,defineAsyncComponent,markRaw,reactive,toRaw,toRefs } from 'vue'
    import { useRouter } from 'vue-router'
    import dayjs from 'dayjs'
    import { ElMessage, ElMessageBox } from 'element-plus'
    import { customerList,supplierList,sellerList,addLog,getLog }  from '@/api'
    import { inquiryList,inquiryStatus,createInquiry,addInquiryGoods,removeInquiry,update,inquiry,removeSupplyInquiry}  from '@/api/inquiry'
    import { status_name }  from '@/utils'
    import { storeToRefs } from 'pinia'
    import { useUserStore,useInquiryListStore } from '@/store'
    import { Share,Delete,InfoFilled,HomeFilled,Search,EditPen,Flag } from '@element-plus/icons-vue'
    // import EditInquiry from '@/components/Base.vue'
    // import EditSupply from '@/components/Inquiry.vue'
    // import EditOffer from '@/components/Offer.vue'

    const timer = ref(null)
    onMounted(async () => {
        tableHeight.value = window.innerHeight - 180
        const { data:customer } = await customerList()
        if(customer.error == 0) {
            customer_list.value = customer.data
        }
        await get_order_list()
        timer.value = setInterval(async() => {
            await get_inquiry_status()
        },60000)
        const {data:supplier} = await supplierList()
        supplier_list.value = supplier.data.map(item => ({id:item.sid,name:item.sname,mobile:item.mobile}))
        const {data:seller} = await sellerList()
        seller_list2.value = seller.data.map(item => ({id:`G${item.id}`,name:`*商城*${item.seller_name}`,mobile:item.mobile}))
    })

    onUnmounted(() => {
        if(timer.value)
            clearInterval(timer.value)
    })

    const userStore = useUserStore()
    const router = useRouter()
    const inquiryStore = useInquiryListStore()
    const { currentPage,pageSize,keys: filterVariable } = storeToRefs(inquiryStore)

    const order_list = ref([])
    const total = ref(0)
    const orderTableRef = ref()
    const orderIds = ref([])
    const customer_list = ref([])

    const seller_list2 = ref([])
    const supplier_list = ref([])

    const background = ref(false)
    const workflowDialogVisible = ref(false)
    const tableHeight = ref(0)
    const subTableHeight = ref(480)
    const loading = ref(false)

    const orderStatus = computed(() => (status,isdel) => status_name(status,isdel))
    const editable = computed(() => (row) => row.creator == userStore.userId || userStore.partner.includes(row.creator))

    const get_order_list = async () => {
        loading.value = true
        const { data:res } = await inquiryList(userStore.userArray,filterVariable.value,currentPage.value,pageSize.value)
        order_list.value = res.data
        total.value = res.total
        orderIds.value = []
        order_list.value.forEach(async (item) => {
            item.expand = +item.status <= 1 ? true : false
            item.result = item.products
            let total = 0
            item.offer.forEach(g => total += g.amount * parseFloat(g.sell_price))
            item['total_price'] = total
            orderIds.value.push(item.id)
        })
        loading.value = false
    }

    const loadInquiryRow = async (id) => {
        const {data:res} = await inquiry(id)
        if(res.error == 0 && res.data.id && +res.data.id == id) {
            let row = order_list.value.find(item => item.id == id)
            if(row) {
                let item = res.data
                item.expand = +item.status <= 1 ? true : false
                item.result = item.products
                let total = 0
                item.offer.forEach(g => total += g.amount * parseFloat(g.sell_price))
                item['total_price'] = total
                Object.assign(row,item)
            }
        }
    }
    const get_inquiry_status = async () => {
        let ids = order_list.value.map(item => item.id)
        const {data:status} = await inquiryStatus(ids)
        if(status.error == 0) {
            order_list.value.forEach(item => {
                let status_item = status.data.find(s => s.id == item.id)
                if(status_item) {
                    item.inquiry_status = status_item.inquiry
                    item.status = status_item.status
                    item.is_del = status_item.is_del
                }
            })
        }
    }

    const workflow = ref([])
    const handleWorkflow = async (row) => {
        workflow.value = []
        const {data:res} = await getLog(row.id)
        workflow.value = res.data
        workflowDialogVisible.value = true
    }
    const handleDelete = async (index,row) => {
        const data = await removeInquiry([row.id])
        await get_order_list()
    }

    const supplierName = computed(() => (id) => {
        if(`${id}`.startsWith('G')) {
            let ids = `${id}`.split('-')
            let idx = seller_list2.value.findIndex(item => item.id == ids[0])
            if(idx != -1) {
                return seller_list2.value[idx].name
            }
        } else {
            let idx = supplier_list.value.findIndex(item => item.id == id)
            if(idx != -1) {
                return supplier_list.value[idx].name
            }
        }
        return 'unknown'
    })

    const customer_name = computed(() => (item) => {
        let val = `${item.true_name}`
        if(item.username != item.true_name) {
            val += ` ${item.username}`
        }
        if(item.mobile != null && item.mobile != '') {
            val += ` ${item.mobile}`
        }
        return val
    })

    const expandRowKeys = ref([])
    const expandChange = async (row,rows) => expandRowKeys.value = rows.map(item => item.id)

    const disabled = ref(false)
    const startFilter = async () => {
        currentPage.value = 1
        disabled.value = true
        await get_order_list()
        disabled.value = false
    }

    const resetFilter = async () => {
        inquiryStore.reset()
        await get_order_list()
    }

    const handleSizeChange = async (val) => {
        currentPage.value = 1
        await get_order_list()
    }

    const handleCurrentChange = async (val) => {
        await get_order_list()
    }

    const selectionRows = ref([])
    const handleTableSelectionChange = (rows) => selectionRows.value = rows
    const handleMerge = async () => {
        let rows = selectionRows.value
        let isSame = true
        let user_id = rows[0].user_id
        for(let i=1;i<rows.length;i++) {
            if(rows[i].user_id != user_id || rows[i].status != 0) {
                isSame = false
                break
            }
        }
        if(!isSame) {
            ElMessage({
                message: '无法合并不同用户或者已进行中的询单！',
                type: 'error',
            })
            return
        }
        let goods = []
        rows.forEach(row => {
            row.products.forEach(g => {
                let idx = goods.findIndex(gr => gr.id == g.id && gr.brand == g.brand)
                if(idx != -1) {
                    goods[idx].amount = +goods[idx].amount + +g.amount
                } else {
                    goods.push(g)
                }
            })
        })
        const {data:res} = await createInquiry(user_id,'合并询单')
        if(res.data.order_id) {
            await addInquiryGoods(res.data.order_id,goods)
            let orders = rows.map(order => order.id)
            await removeInquiry(orders)
            await addLog(res.data.order_id,`${userStore.userName}(${userStore.userId})`,'合并订单',JSON.stringify(orders))
            ElMessage({
                message: '订单合并成功！',
                type: 'success',
            })
        }
        currentPage.value = 1
        await get_order_list()
    }

    const toggleEditDrawer = ref(false)
    const editDrawer = ref('inquiry')
    const direction = ref('ttb')
    const editRow = ref(null)
    const editRowIndex = ref(0)

	const EditInquiry = defineAsyncComponent(() => import('@/components/Base.vue'))
	const EditSupply = defineAsyncComponent(() => import('@/components/Inquiry.vue'))
	const EditOffer = defineAsyncComponent(() => import('@/components/Offer.vue'))

	const edit_tabs = reactive({
		inquiry: {
			label: '询盘单及商品信息',
			icon: markRaw(HomeFilled),
			disabled: false,
			component: markRaw(EditInquiry)
		},
		supply: {
			label: '供应商询件',
			icon: markRaw(Search),
			disabled: true,
			component: markRaw(EditSupply)
		},
		offer: {
			label: '优选报价',
			icon: markRaw(EditPen),
			disabled: true,
			component: markRaw(EditOffer)
		},
		// result: {
		// 	label: '4.询盘结果',
		// 	icon: markRaw(Flag),
		// 	disabled: true,
		// 	component: markRaw(Result)
		// },
    })

    const showInquiryDrawer = ref(false)
    const inquiry_result = ref([])
    const inquiry_result_status = ref(0)
    const handleInquiryResult = async (row,index,evt) => {
        if(window.innerHeight >= evt.y * 2) {
            direction.value = 'btt'
        } else {
            direction.value = 'ttb'
        }
        if(!row.expand) {
            row.result = []
            row.offer.forEach(item => {
                item.offer.forEach(g => {
                    row.result.push(Object.assign({}, item, {
                        g_id: g.id,
                        g_brand: `${g.id}`.startsWith('G') ? g.brand : item.brand,
                        g_bname: `${g.id}`.startsWith('G') ? g.b_name : item.b_name,
                        g_name: g.name,
                        g_sell_price: g.sell_price,
                        g_sell_price2: g.sell_price2,
                        g_quality: `${item.id}`.startsWith('G') ? item.quality : '原装全新',
                        g_nums: g.nums,
                        g_note: g.note,
                    }))
                })
            })
            row.expand = true
        }
        inquiry_result.value = row.result
        inquiry_result_status.value = +row.status
        showInquiryDrawer.value = true
    }

    const checkBaseInfoDrawer = ref(false)
    const handleBaseInfo = async (row,index,evt) => {
        if(window.innerHeight >= evt.y * 2) {
            direction.value = 'btt'
        } else {
            direction.value = 'ttb'
        }
        editRow.value = row
        editRowIndex.value = index
        editDrawer.value = 'inquiry'
        toggleEditDrawer.value = true
    }

    const handleCheckSupply = async (row,index,evt) => {
        if(window.innerHeight >= evt.y * 2) {
            direction.value = 'btt'
        } else {
            direction.value = 'ttb'
        }
        editRow.value = row
        editRowIndex.value = index
        editDrawer.value = 'supply'
        toggleEditDrawer.value = true
    }

    const handleSubject = async (row) => {
        ElMessageBox.prompt('编辑摘要', '', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            inputValue: row.subject,
            inputPlaceholder: '请输入摘要'
        }).then(async ({ value }) => {
            await update(row.id,{subject:value})
            row.subject = value
            await addLog(row.id,userStore.logName,'修改订单摘要',value)
            ElMessage({
                message: '成功修改订单摘要!',
                type: 'success',
            })
        }).catch(() => {
            ElMessage({
                type: 'warning',
                message: '取消编辑'
            });
        });
    }

    const handleStatusChange = async (id,state) => {
		if(!id) {
			return
		}
		switch(state) {
			case 'create-inquiry':
			case 'subject-change':
			case 'note-change':
			case 'customer-change':
				break
			case 'save-goods':
                await loadInquiryRow(id)
                toggleEditDrawer.value = false
				break
			case 'make-offer':
                await loadInquiryRow(id)
                toggleEditDrawer.value = false
				break
			case 'share-offer':
			case 'user-cancel':
				break;
			case 'remove-supply-inquiry':
				break
		}
    }

	const nogo = () => {
		if(!editRow.value.id) {
			return
		}
		ElMessageBox.prompt('请填写提前业务中止理由：', '客服中断', {
			type: 'warning',
			showCancelButton: true,
			cancelButtonText: '取消',
			confirmButtonText: '确定'
		}).then(async (val) => {
			await update(editRow.value.id, {is_del: 2,reason: val.value})
			router.push('/inquiry/list')
			await addLog(editRow.value.id,userStore.logName,'客服中断',val.value)
			ElMessage.success('询盘业务已提前中止！')
		}).catch(() => {
			ElMessage.error('无法种植业务！')
		})
	}

	const rollback = async () => {
		switch(editDrawer.value) {
			case 'inquiry':
				return
			case 'supply':
				ElMessageBox.confirm('确定要回滚到询盘基础节点吗？', '流程回滚', {
					type: 'warning',
					showCancelButton: true,
					cancelButtonText: '取消',
					confirmButtonText: '回滚'
				}).then(async () => {
					await removeSupplyInquiry(editRow.value.id)
					await update(editRow.value.id,{status: 0})
					await addLog(editRow.value.id,userStore.logName,'流程回滚','回滚到询盘基础节点')
					ElMessage.success('已回退到询盘基础！')
					editDrawer.value = 'inquiry'
				}).catch(() => {
					ElMessage.error('无法回滚流程！')
				})
				break
			case 'offer':
				ElMessageBox.confirm('确定要新建报价吗？', '新建报价', {
					type: 'warning',
					showCancelButton: true,
					cancelButtonText: '取消',
					confirmButtonText: '确定'
				}).then(async () => {
					await update(editRow.value.id,{status: 1,o_time: null,offer: null})
					await addLog(editRow.value.id,userStore.logName,'流程回滚','新建报价')
					ElMessage.success('已回退到询盘基础！')
					editDrawer.value = 'supply'
				}).catch(() => {
					ElMessage.error('无法重建报价！')
				})
				break
			case 'result':
				break
			case 'result':
				break
		}
	}
</script>

<style scoped>
    .el-table .cell {
        white-space: pre-wrap;
    }
    .pages {
        padding-top: 20px;
    }
    :deep(.no-expand-icon .el-table__expand-icon) {
        display: none;
    }
</style>