<template>
    <div class="bigone">
        <!-- 标题 -->
        <div class="containerheadone" id="listtop">
            <Title :id="projectId"></Title>
            <el-button type="primary" size="medium" plain
                style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="goBack">
                返回
            </el-button>
        </div>
        <div style="display: flex;justify-content: center;">
            <el-button type="primary" v-if="isSubmitted" disabled>已提交</el-button>
        </div>
        <div class="containerbody" v-if="isContainerVisible">
            <!-- 目录 -->
            <div class="containerhead">
                <el-menu :default-active="activeSection" mode="horizontal" @select="scrollToSection"
                    class="custom-menu">
                    <el-menu-item v-for="(item, index) in sections" :key="index" :index="item.id"
                        class="custom-menu-item">
                        {{ item.label }}
                    </el-menu-item>
                </el-menu>
            </div>
            <!-- 基本信息 -->
            <div id="basic">
                <Basic :action="action" :basicInfo="basicInformation"
                    @update-data="handleDataUpdate('basicInformation', $event)">
                </Basic>
            </div>
            <!-- 规划信息 -->
            <div id="programme">
                <Programme 
                :action="action"
                :planInfo="planInformation" @update-data="handleDataUpdate('planInformation', $event)">
                </Programme>
            </div>
            <!-- 建筑信息 -->
            <div id="buildings">
                <Buildings 
                :action="action"
                :xmId="projectId"></Buildings>
            </div>
            <!-- 要素模型信息 -->
            <div id="models">
                <Models 
                :action="action"
                :wysmxInfo="wysmxInformations" @updata-data="handleDataUpdate('wysmxInformations', $event)">
                </Models>
            </div>
            <!-- 月度进展信息 -->
            <div id="months">
                <Months 
                :action="action"></Months>
            </div>
            <!-- 企业入驻信息 -->
            <div id="companyenter">
                <Companyenter
                :id="projectId"
                :action="action"
                 :qyrzInfo="qyrzInformation" @update-data="handleDataUpdate('qyrzInformation', $event)">
                </Companyenter>
            </div>
            <!-- 项目画像 -->
            <div id="projectpicture">
                <Projectpicture
                :action="action" :id="projectId"></Projectpicture>
            </div>
            <!-- 项目图例 -->
            <div id="projectpicturetwo">
                <Projectpicturetwo22
                :action="action"
                 :xmId="projectId"> </Projectpicturetwo22>
            </div>
            <!-- 项目巡礼 -->
            <div id="projectgift">
                <Projectgift 
                :action="action"
                :xmId="projectId"></Projectgift>
            </div>
            <!-- 现场实况 -->
            <div id="liver">
                <Liver
                :action="action"
                ></Liver>
            </div>
            <!-- 项目备忘录 -->
            <div id="memo">
                <Memo 
                :action="action"
                :xmId="projectId"></Memo>
            </div>
            <!-- 其他信息 -->
            <div class="bottombox" id="others">
                <Others 
                :action="action"
                :anotherInfo="projectOtherInfos" @update-data="handleDataUpdate('projectOtherInfos', $event)">
                </Others>
            </div>
            <div class="footer">
                <el-button type="primary" v-if="checkRole(['admin', 'common'])" @click="aduitAll">审核通过</el-button>
                <el-button type="primary"
                    v-if="(checkRole(['company']) && !isSubmitted && action === 'fill') || action === 'fill'"
                    @click="submitAll">提交审核</el-button>
            </div>
        </div>
        <!-- 返回顶部按钮 -->
        <el-button icon="el-icon-caret-top" circle id="back-to-top" @click="scrollToTop" plain></el-button>
    </div>
</template>

<script>
import Title from '@/views/components/ProjectDetails/Title.vue';
import Basic from '@/views/components/ProjectDetails/Basic.vue';
import Buildings from '@/views/components/ProjectDetails/Buildings.vue';
import Companyenter from '@/views/components/ProjectDetails/Companyenter.vue';
import Liver from '@/views/components/ProjectDetails/Liver.vue';
import Memo from '@/views/components/ProjectDetails/Memo.vue';
import Models from '@/views/components/ProjectDetails/Models.vue';
import Months from '@/views/components/ProjectDetails/Months.vue';
import Programme from '@/views/components/ProjectDetails/Programme.vue';
import Projectgift from '@/views/components/ProjectDetails/Projectgift.vue';
import Projectpicture from '@/views/components/ProjectDetails/Projectpicture.vue';
import Projectpicturetwo22 from '@/views/components/ProjectDetails/Projectpicturetwo22.vue';
import Others from '@/views/components/ProjectDetails/Others.vue';
import { checkPermi, checkRole } from "@/utils/permission";
import { getBasicInformationById, fillBasicInformation, auditBasicInformation } from '@/api/ManageApi/index';

export default {
    components: {
        Title,
        Basic,
        Buildings,
        Companyenter,
        Liver,
        Memo,
        Models,
        Months,
        Programme,
        Projectgift,
        Projectpicture,
        Projectpicturetwo22,
        Others,
    },
    data() {
        return {
            activeSection: 'basic',
            sections: [
                { id: 'basic', label: '基本信息' },
                { id: 'programme', label: '规划信息' },
                { id: 'buildings', label: '建筑信息' },
                { id: 'models', label: '要素模型信息' },
                { id: 'months', label: '月度进展信息' },
                { id: 'companyenter', label: '企业入驻信息' },
                { id: 'projectpicture', label: '项目画像' },
                { id: 'projectpicturetwo', label: '项目图例' },
                { id: 'projectgift', label: '项目巡礼' },
                { id: 'liver', label: '现场实况' },
                { id: 'memo', label: '项目备忘录' },
                { id: 'others', label: '其他信息' }
            ],
            projectId: null,
            isContainerVisible: true,
            isSubmitted: false,
            basicInformation: {
                acceptanceTime: "",
                begainTime: "",
                endTime: "",
                fj: "",
                introduction: "",
                issuingTime: "",
                jsdd: "",
                jsjd: "",
                jsms: 0,
                label: "",
                latitude: "",
                longitude: "",
                name: "",
                nature: 0,
                id: 0,
                phone: "",
                prioritize: "",
                projectLeader: "",
                sgdw: "",
                sjdw: "",
                ssgnq: 0,
                status: 0,
                tyshxydm: "",
                unitIntroduction: "",
                xmfrdwxz: "",
                xzfl: 0,
                zjzmj: 0,
                ztze: 0,
                zydmj: 0
            },
            planInformation: {
                bzcjzmj: 0,
                dsjzmj: 0,
                dxjzmj: 0,
                fhdj: "",
                fjdctcw: 0,
                ghwj: "",
                jdctcw: 0,
                jrjljzmj: 0,
                jzds: 0,
                jzmd: 0,
                ldl: 0,
                id: 0,
                rjl: 0,
                xmId: 0,
                zgjzcs: 0,
                zgjzgd: 0,
                zjzmj: 0,
                zydmj: 0
            },
            projectOtherInfos: [],
            wysmxInformations: [],
            qyrzInformation: {
                gycfpjwyf: 0,
                gycfpjzj: 0,
                kzczmj: 0,
                params: {},
                remark: "",
                rysl: 0,
                id: 0,
                rzl: 0,
                rzqyhylx: "",
                rzqys: 0,
                xmId: 0,
                yczmj: 0
            },
            // buildingInformation: [],
            projectRemarks: []
        };
    },
    created() {
        // 从路由参数中获取 projectId
        this.projectId = Number(this.$route.params.id);
        this.loadData();
        this.action = this.$route.query.action;
    },
    methods: {
        checkPermi,
        checkRole,
        loadData() {
            console.log('Loading data for project ID:', this.projectId);
            getBasicInformationById(this.projectId).then(response => {
                const data = response.data;
                this.basicInformation = data.basicInformation;
                this.planInformation = data.planInformation;
                // this.buildingInformation = data.buildingInformation;
                this.projectOtherInfos = data.projectOtherInfos;
                this.wysmxInformations = data.wysmxResponses;
                this.qyrzInformation = data.qyrzInformation;
                this.projectRemarks = data.projectRemarks
                console.log(data);
            });
        },
        scrollToSection(id) {
            this.activeSection = id;
            const element = document.getElementById(id);
            if (element) {
                element.scrollIntoView({ behavior: 'smooth' });
            }
        },
        scrollToTop() {
            const basicSection = document.getElementById('listtop');
            if (basicSection) {
                basicSection.scrollIntoView({ behavior: 'smooth' });
            }
        },
        goBack() {
            this.$router.go(-1); // 返回上一个页面
        },
        // 处理来自子组件的数据更新
        handleDataUpdate(dataKey, updatedData) {
            if (dataKey === 'projectOtherInfos' || dataKey === 'wysmxInformations') {
                if (Array.isArray(updatedData)) {
                    this[dataKey] = updatedData;
                } else {
                    this[dataKey].push(updatedData);
                }
            } else {
                this[dataKey] = updatedData;
            }
            console.log(`接收到 ${dataKey} 更新:`, updatedData);
        },
        // 提交数据
        submitAll() {
            const submitData = this.prepareSubmitData();

            // 打印更详细的结构（方便调试）
            console.log('提交的数据结构:', JSON.stringify(submitData, null, 2));

            // 调用 fillBasicInformation 并处理结果
            fillBasicInformation(submitData)
                .then(response => {
                    console.log('提交成功:', response);
                    this.$message.success('数据提交成功');
                    this.isContainerVisible = false;
                    this.isSubmitted = true;
                })
                .catch(error => {
                    console.error('提交失败:', error);
                    this.$message.error('数据提交失败');
                });
        },

        // 审核通过的提交数据
        aduitAll() {
            const submitData = this.prepareSubmitData();

            // 打印更详细的结构（方便调试）
            console.log('提交的数据结构:', JSON.stringify(submitData, null, 2));

            auditBasicInformation(submitData)
                .then(response => {
                    console.log('提交成功:', response);
                    this.$message.success('审核通过');
                    this.isContainerVisible = false;
                    this.isSubmitted = true;
                })
                .catch(error => {
                    console.error('提交失败:', error);
                    this.$message.error('数据提交失败');
                });
        },

        // 准备提交的数据
        prepareSubmitData() {
            const submitData = {
                basicInformation: this.basicInformation,
                planInformation: this.planInformation,
                projectOtherInfos: this.projectOtherInfos,
                qyrzInformation: this.qyrzInformation
            };

            // 处理 wysmxInformations 数据，使其符合后端期望的格式
            const formattedWysmxInformations = [];
            this.wysmxInformations.forEach(item => {
                item.list.forEach(listItem => {
                    formattedWysmxInformations.push({
                        createBy: "",
                        createId: 0,
                        createTime: this.formatDate(new Date()), // 设置当前时间
                        id: 0, // 设置为 0 让数据库自动生成
                        updateBy: "",
                        updateId: 0,
                        updateTime: this.formatDate(new Date()), // 设置当前时间
                        xmId: item.xmId,
                        ysmc: item.ysmc,
                        zdinfor: listItem.zdinfor,
                        zdname: listItem.zdname
                    });
                });
            });

            // 将处理后的数据添加到 submitData 中
            submitData.wysmxInformations = formattedWysmxInformations;

            return submitData;
        },

        // 日期格式化方法
        formatDate(date) {
            const year = date.getFullYear();
            const month = String(date.getMonth() + 1).padStart(2, '0');
            const day = String(date.getDate()).padStart(2, '0');
            const hours = String(date.getHours()).padStart(2, '0');
            const minutes = String(date.getMinutes()).padStart(2, '0');
            const seconds = String(date.getSeconds()).padStart(2, '0');
            return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
        },

    }
};
</script>

<style scoped>
.containerbody {
    height: auto;
    padding: .3rem .5rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    position: relative;
    overflow: auto;
}

.containerheadone {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
    padding: 0 1rem 0 .7rem;
}

.containerhead {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    background-color: #FFFFFF;
    box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
    border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
}

.custom-menu {
    margin: 1rem;
    display: flex;
    gap: 1rem;
    border: none;
}

.custom-menu-item {
    color: #3D424C;
    width: 7.25rem;
    height: 2rem;
    background: #F4F7FE;
    border-radius: 0.25rem 0.25rem 0.25rem 0.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 高亮 */
.custom-menu-item.is-active {
    background-color: #2B62F1;
    color: #fff !important;
}

/* 悬停 */
.custom-menu-item:hover {
    background-color: #2B62F1;
    color: #fff !important;
}

/* 默认的下划线 */
.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,
.el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
    background-color: #2B62F1;
    border-bottom: none;
}

.bottombox {
    margin-bottom: 2rem;
}

.bigone {
    position: relative;
}

#back-to-top {
    position: fixed;
    bottom: 5px;
    right: 5px;
    z-index: 99;
    font-size: 18px;
}

.footer {
    display: flex;
    padding: 0 0 2rem 0;
    justify-content: center;
}
</style>