<template>
    <div class="demo-wrap min-flex-right">
        <div class="flex-between">
            <h2>总利润 - 年排行</h2>
            <CustomDropdown :placeholder="text" width="280px">
                <DateSelect slot="normal" :view="view" v-model="selectedDate" @update-count="handleUpdateView" @change="handleDateChange" />
            </CustomDropdown>
        </div>
        <div class=" flex-common" id="">
            <el-form>
                <el-table :data="tableData" style="width: 100%" @sort-change="handleSortChange"
                    @cell-mouse-enter="handleRowHover">
                    <el-table-column prop="sort" label="排序" width="100">
                    </el-table-column>
                    <!-- 其他列 -->
                    <el-table-column prop="value_1" label="年份" sortable="custom">
                    </el-table-column>
                    <el-table-column prop="value_2" label="总利润/元" sortable="custom">
                    </el-table-column>

                    <el-table-column label="代理商排行">
                        <template v-slot="{ row, $index }">
                            <el-popover v-model="row.id_popover" placement="top" trigger="manual"
                                :ref="`popover-${$index}`" @show="popshow">
                                <div class="pop-wrap">
                                    <div class="flex-between flex pop-top">
                                        <h3>{{ row.id }} <span @click="goLookMoreData">查看更多</span></h3>
                                        <span class="flex point" @click="closePop(row,'id')">关闭 <img src="@/assets/register/close.svg" alt=""></span>
                                    </div>
                                    <el-table :data="tableData1" style="width: 100%" @sort-change="handleSortChange"
                                        @cell-mouse-enter="handleRowHover">
                                        <el-table-column prop="value_1" width="208" label="日期/月"></el-table-column>
                                        <el-table-column prop="value_2" width="348" label="毛利润/元"
                                            sortable="custom"></el-table-column>
                                    </el-table>
                                </div>
                                <!-- 触发弹框的按钮 -->
                                <span v-if="profit_top_list[row.id]['name']" slot="reference"
                                    @click="handleClick(row, $index, 'id')">
                                    No.1 {{ profit_top_list[row.id]['name'] }} <img v-if="show_detail_index == row.sort"
                                        class="detail_icon" src="@/assets/super/list-detail.svg" alt="">
                                </span>
                            </el-popover>
                        </template>
                    </el-table-column>
                </el-table>
                <el-pagination background @size-change='handleSizeChange' @current-change='handleCurrentChange'
                    :current-page="currentPage" :page-size=pageSize layout="prev, pager, next,jumper"
                    :total="tableData.length">
                </el-pagination>
            </el-form>
        </div>
    </div>
</template>
<script>
// import GuipForm from '@/components/GuipForm.vue'
import DateSelect from '@/components/super/DateSelect.vue';
import CustomDropdown from '@/components/CustomDropdown.vue';

export default {
    // 站点设置
    name: '',
    props: [''],
    components: {
        DateSelect,
        CustomDropdown
    },
    data() {
        return {
            viewDesc:{
                'month':'月份',
                'monthTwo':'月份',
                'year':'年份',
            },
            view:'month',
            currentPage: 1,    //当前页
            pageSize: 20,   //每页的容量
            total: 0,   //列表总数
            text:'',//下拉框显示具体文案
            selectedDate:new Date(),//默认当天日期
            options_payword: [
                {
                    label: '按篇', value: '0'
                },
                {
                    label: '按字符', value: '1'
                },
            ],
            options: [
                { label: '选项1', value: '1' },
                { label: '选项2', value: '2' },
                { label: '选项3', value: '3' },
                // 更多选项...
            ],
            filteredOptions: this.options,
            tableData: [
            ],
            tableData1: [],
            profit_top_list: {
            },
            show_detail_index: 0,
            form: {
                payword: '0',
            }
        }
    },
    mounted() {
        this.text = this.getNowDate()//初始赋值
        this.getRankingData()
    },
    computed: {
    },
    methods: {
        handleUpdateView(newView) {
            this.view = newView;
        },
        getNowDate(){
            const now = new Date();
            const year = now.getFullYear();
            const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,补零
            const currentYearMonth = `(${this.viewDesc[this.view]})${year}年${month}月`;
            return `${currentYearMonth}`
        },
        getDate(dateStr){
            const date = new Date(dateStr);
            const year = date.getFullYear(); // 2025
            const month = date.getMonth() + 1; // 3 (表示3月)
            if(this.view == 'year'){
                return `(${this.viewDesc[this.view]})${year}年`
            }else{
                return `(${this.viewDesc[this.view]})${year}年${month}月`
            }
        },
        handleDateChange(date) {
            this.text = this.getDate(date)
            this.selectedDate = date;
            localStorage.setItem('date',JSON.stringify(date))
            // 更新数据
            // this.getRankingData()
            console.log('日期已更改:', date);
        },
        goLookMoreData() {
            this.$router.push('/')
        },
        closePop(row,type){
            row[type + '_popover'] = false; // 关闭弹框

        },
        handleClick(row, index, type) {
            // 关闭其他行的弹框
            this.tableData.forEach((item, i) => {
                if (i !== index) {
                    item[type + '_popover'] = false;
                }
            });
            // 打开当前行的弹框
            row[type + '_popover'] = true;
            console.log(this.tableData,'this.tableData');
        },
        popshow() {
            var ariaEls = document.querySelectorAll('.el-popover')
            ariaEls.forEach((item) => {
                item.removeAttribute('aria-hidden')
            })

            ariaEls = document.querySelectorAll('.el-radio__original')
            ariaEls.forEach((item) => {
                item.removeAttribute('aria-hidden')
            })
        },
        handleSortChange({ prop, order }) {
            this.currentPage = 1;

            let sortBy = 0;
            let sortOrder = 0;
            if (order == 'ascending') {
                sortBy = prop;
                sortOrder = 1;
            }
            if (order == 'descending') {
                sortBy = prop;
                sortOrder = 2;
            }
            this.getRankingData({ sortBy: sortBy, sortOrder: sortOrder })
        },
        handleRowHover(row) {
            this.show_detail_index = row.sort
        },
        getRankingData(obj) {
            const that = this
            this.$http('POST', this.reqUri + '/super/ajax_get_rank_detail', {
                rank_type: 1,
                cur_page: that.currentPage,
                page_size: that.pageSize,
                ...obj
            }).then(response => {
                this.$nextTick(() => {
                    that.tableData = response.data.list
                    that.profit_top_list = response.data.top_list
                    that.total = response.data.total
                })
            })
                .catch(error => {
                    console.error(error, 'error')
                })
        },
        // 列筛选
        filterHandler(value, row, column) {
            //  console.log(value, row, column,'======');
            const property = column['property'];
            if (value == 0) {
                return row[property] != value
            }
            return row[property] === value;
        },
        // 自定义搜索筛选
        customFilter(keyword, options) {
            if (!keyword) return options
            return options.filter(item => {
                // 自定义筛选逻辑
                return item.label.includes(keyword) || item.value.includes(keyword)
            })
        },
        handleSizeChange(val) {
            this.pageSize = val
        },
        handleCurrentChange(val) {
            this.currentPage = val
        },
    }
}
</script>
<style scoped lang="scss">
.demo-wrap {
    width: 100%;
    letter-spacing: 0.08em;
}

.detail_icon {
    vertical-align: text-top;
}

::v-deep .el-popover.el-popper {
    padding: 20px;
}
.pop-wrap {
    // width: 596px;
    // height: 320px;
    /* 自动布局 */
    display: flex;
    flex-direction: column;
    // padding: 20px;
    gap: 20px;
    box-sizing: border-box;

    // background: #FFFFFF;
    /* 阴影/常规阴影 */
    // box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.16);
    .pop-top {
        h3 {
            /* body/body 1_bold */
            font-family: Microsoft YaHei UI;
            font-size: 16px;
            font-weight: bold;
            line-height: 18px;
            letter-spacing: 0.08em;
            color: #1D2129;
            margin: 0;

            span {
                display: inline-block;
                margin-left: 12px;
                font-size: 14px;
                line-height: 18px;
                color: #006AFF;
            }
        }
        img{
            width: 20px;
            height: 20px;
        }
    }
}
</style>