<template>
    <div class="container">
        <!-- 顶部信息 -->
        <div class="containertop">
            <div class="topleft">
                <img src="../../../assets/images/detailsicon/1.png" alt="">
                <span>项目备忘录</span>
            </div>
            <div class="topright">
                <el-button type="primary" size="medium" plain
                    style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;"
                    @click="handleEditMemo">
                    <img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑"
                        style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
                    编辑
                </el-button>
                <el-button type="primary" size="medium" plain
                    style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="handleAdd">
                    <img src="../../../assets/images/detailsicon/icon-xz@2x.png" alt="新增"
                        style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
                    新增
                </el-button>
            </div>
        </div>
        <div class="content">
            <div class="descriptionsdiv">
                <el-form :model="form" @submit.native.prevent="onSubmit">
                    <el-form-item>
                        <el-col :span="11">
                            <el-date-picker type="date" placeholder="选择日期" v-model="form.date1"
                                style="width: 21.75rem;"></el-date-picker>
                        </el-col>
                    </el-form-item>
                </el-form>
            </div>
            <div class="descriptionsdivnext">
                <!-- 渲染多个备忘录 -->
                <div v-for="memo in memos" :key="memo.id" class="descriptionditem">
                    <div class="itemone">{{ memo.createTime }}</div>
                    <div class="itemtwo">{{ memo.remark }}</div>
                    <div class="itemthree">{{ memo.createBy }}</div>
                    <div class="itemfour">
                        <el-button type="text" @click="handleEditMemo(memo)">编辑</el-button>
                        <el-button type="text" @click="handleDeleteMemo(memo.id)">删除</el-button>
                    </div>
                </div>
            </div>
        </div>

        <!-- 新增/编辑弹窗表单 -->
        <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px">
            <el-form :model="newMemo" label-width="100px">
                <el-form-item label="备忘录内容">
                    <el-input type="textarea" v-model="newMemo.remark" :rows="4"></el-input>
                </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button @click="dialogVisible = false">取消</el-button>
                <el-button type="primary" @click="handleSubmit">确定</el-button>
            </span>
        </el-dialog>
    </div>
</template>

<script>
import { addxmmmb, deletexmmmb, updatexmmmb, getxmmmbPage } from '@/api/ManageApi/index';

export default {
    props: {
        xmId: {
            type: Number,
            required: true
        }
    },
    data() {
        return {
            form: {
                date1: null,
            },
            dialogVisible: false,
            dialogTitle: '新增备忘录',
            newMemo: {
                id: null,
                remark: '', // 只需要发送 remark
                xmId: this.xmId, // 使用传入的 xmId
            },
            memos: [], // 备忘录列表
        };
    },
    created() {
        this.fetchMemos(); // 页面加载时获取数据
    },
    methods: {
        onSubmit() {
            console.log('submit!');
            console.log(this.form);
        },
        // 获取备忘录数据
        fetchMemos() {
            const params = {
                xmId: this.xmId, // 使用传入的 xmId
            };
            getxmmmbPage(params)
                .then(response => {
                    if (response.code === 200 && response.data) {
                        this.memos = response.data; // 填充数据
                    } else {
                        console.error("获取备忘录失败：数据为空");
                    }
                })
                .catch(error => {
                    console.error("获取备忘录失败:", error);
                });
        },
        // 打开新增弹窗
        handleAdd() {
            this.dialogTitle = '新增备忘录';
            this.dialogVisible = true;
            this.newMemo = {
                id: null,
                remark: '', // 只需要发送 remark
                xmId: this.xmId, // 使用传入的 xmId
            };
        },
        // 打开编辑弹窗
        handleEditMemo(memo) {
            if (memo) {
                this.dialogTitle = '编辑备忘录';
                this.dialogVisible = true;
                this.newMemo = {
                    id: memo.id,
                    remark: memo.remark, // 只需要发送 remark
                    xmId: memo.xmId,
                };
            }
        },
        // 删除备忘录
        handleDeleteMemo(id) {
            this.$confirm('此操作将永久删除该备忘录, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                deletexmmmb([id])
                    .then(response => {
                        if (response.code === 200) {
                            this.$message.success('删除成功!');
                            this.fetchMemos(); // 刷新数据
                        } else {
                            this.$message.error('删除失败!');
                        }
                    })
                    .catch(error => {
                        console.error('删除失败', error);
                        this.$message.error('删除失败!');
                    });
            }).catch(() => {
                this.$message.info('已取消删除');
            });
        },
        // 提交表单（新增/编辑）
        handleSubmit() {
            this.dialogVisible = false;
            if (this.newMemo.id) {
                // 编辑数据
                updatexmmmb(this.newMemo)
                    .then(response => {
                        if (response.code === 200) {
                            this.$message.success('数据编辑成功！');
                            this.fetchMemos(); // 刷新数据
                        } else {
                            this.$message.error('数据编辑失败！');
                        }
                    })
                    .catch(error => {
                        console.error('编辑数据失败', error);
                        this.$message.error('数据编辑失败！');
                    });
            } else {
                // 新增数据
                addxmmmb(this.newMemo)
                    .then(response => {
                        if (response.code === 200) {
                            this.$message.success('数据新增成功！');
                            this.fetchMemos(); // 刷新数据
                        } else {
                            this.$message.error('数据新增失败！');
                        }
                    })
                    .catch(error => {
                        console.error('新增数据失败', error);
                        this.$message.error('数据新增失败！');
                    });
            }
        },
    },
};
</script>

<style scoped>
.container {
    display: flex;
    flex-direction: column;
    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;
    gap: 1rem;
}

.content {
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.containertop {
    height: auto;
    display: flex;
    justify-content: space-between;
    padding: .7rem 0;
    border-bottom: 1px solid #E5E5E5;
    padding: .5rem;
}

.topleft {
    width: 8rem;
    display: flex;
    gap: 0.4rem;
    align-items: center;
}

.topleft img {
    width: 0.81rem;
    height: 0.81rem;
}

.topleft span {
    width: auto;
    height: 0.88rem;
    font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
    font-weight: 500;
    font-size: 0.88rem;
    color: #3D424C;
    line-height: 0.88rem;
    text-align: right;
    font-style: normal;
    text-transform: none;
}

.descriptionsdiv {
    width: 100%;
    margin-left: 0rem;
    height: auto;
}

.el-tag+.el-tag {
    margin-left: 10px;
}

.button-new-tag {
    margin-left: 10px;
    height: 32px;
    line-height: 30px;
    padding-top: 0;
    padding-bottom: 0;
}

.input-new-tag {
    width: 90px;
    margin-left: 10px;
    vertical-align: bottom;
}

.descriptionsdivnext {
    display: flex;
    height: 8rem;
    margin-top: -1rem;
    gap: 1rem;
    flex-wrap: wrap;
}

.descriptionditem {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    width: 21.75rem;
    height: auto;
    background: #FBFCFF;
    border-radius: 0.25rem 0.25rem 0.25rem 0.25rem;
    border: 0.06rem solid #E6E6E6;
    padding: .5rem;
    position: relative;
}

.itemone {
    width: 100%;
    height: 0.88rem;
    font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
    font-weight: 500;
    font-size: 0.88rem;
    color: #3D424C;
    line-height: 0.88rem;
    font-style: normal;
    text-transform: none;
}

.itemtwo {
    width: 100%;
    height: 2rem;
    font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
    font-weight: 400;
    font-size: 0.88rem;
    color: #3D424C;
    line-height: 0.88rem;
    font-style: normal;
    text-transform: none;
}

.itemthree {
    width: 100%;
    height: 0.88rem;
    font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
    font-weight: 400;
    font-size: 0.88rem;
    color: #808080;
    line-height: 0.88rem;
    font-style: normal;
    text-transform: none;
}

.itemfour {
    position: absolute;
    bottom: 0.5rem;
    right: 0.5rem;
}

.el-textarea__inner {
    height: 10rem !important;
    /* 固定高度 */
    resize: none;
    /* 禁止调整大小 */
}
</style>