<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
    <th:block th:include="include :: header('修改通知公告')"/>
    <th:block th:include="include :: summernote-css"/>
    <th:block th:include="include :: image-upload-css"/>
    <!-- 自定义 CSS -->
    <style>
        /* 修改文本域的背景颜色和文字颜色 */
        .note-editable {
            background-color: black !important; /* 黑色背景 */
            color: white !important; /* 白色文字 */
        }
    </style>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
    <form class="form-horizontal m" id="form-notice-edit" th:object="${notice}">
        <input id="noticeId" name="noticeId" th:field="*{noticeId}" type="hidden">
        <div class="form-group">
            <label class="col-sm-2 control-label is-required">公告标题：</label>
            <div class="col-sm-10">
                <input id="noticeTitle" name="noticeTitle" th:field="*{noticeTitle}" class="form-control" type="text"
                       required>
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label is-required">排序：</label>
            <div class="col-sm-10">
                <input id="sort" name="sort" th:field="*{sort}" class="form-control" type="text" required>
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label">公告类型：</label>
            <div class="col-sm-10">
                <select name="noticeType" class="form-control m-b" th:with="type=${@dict.getType('sys_notice_type')}">
                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"
                            th:field="*{noticeType}"></option>
                </select>
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label">置顶：</label>
            <div class="col-sm-10">
                <select name="topped" class="form-control m-b" th:with="type=${@dict.getType('sys_yes_no')}">
                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"
                            th:field="*{topped}"></option>
                </select>
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label">公告内容：</label>
            <div class="col-sm-10">
                <input id="noticeContent" name="noticeContent" th:field="*{noticeContent}" type="hidden">
                <div id="editor" class="summernote"></div>
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label">公告状态：</label>
            <div class="col-sm-10">
                <div class="radio-box" th:each="dict : ${@dict.getType('sys_notice_status')}">
                    <input type="radio" th:id="${dict.dictCode}" name="status" th:value="${dict.dictValue}"
                           th:field="*{status}">
                    <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
                </div>
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label">图片：</label>
            <div class="col-sm-10">
                <div id="image-upload-container"></div>
            </div>
        </div>
    </form>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: summernote-js"/>
<th:block th:include="include :: image-upload-js"/>
<script th:inline="javascript">
    var prefix = ctx + "system/notice";

    $(function () {
        $('.summernote').summernote({
            placeholder: '请输入公告内容',
            height: 192,
            lang: 'zh-CN',
            followingToolbar: false,
            dialogsInBody: true,
            callbacks: {
                onChange: function (contents, $edittable) {
                    $("input[name='" + this.id + "']").val(contents);
                },
                onImageUpload: function (files) {
                    var obj = this;
                    var data = new FormData();
                    data.append("file", files[0]);
                    $.ajax({
                        type: "post",
                        url: ctx + "common/upload",
                        data: data,
                        cache: false,
                        contentType: false,
                        processData: false,
                        dataType: 'json',
                        success: function (result) {
                            if (result.code == web_status.SUCCESS) {
                                $('#' + obj.id).summernote('editor.insertImage', result.url);
                            } else {
                                $.modal.alertError(result.msg);
                            }
                        },
                        error: function (error) {
                            $.modal.alertWarning("图片上传失败。");
                        }
                    });
                }
            }
        });
        var content = $("#noticeContent").val();
        $('#editor').summernote('code', content);

        // ============ 修复：初始化图片上传组件并回显已有图片 ============
        // 获取已有的封面图片数据（逗号分隔的字符串）
        var imgStr = [[${notice.noticeImg}]];
        var existingImages = [];

        console.log('原始图片字符串:', imgStr);

        if (imgStr && imgStr.trim() !== '') {
            // 分割逗号分隔的图片字符串
            existingImages = imgStr.split(',').map(function(img) {
                return img.trim();
            }).filter(function(img) {
                // 过滤掉空字符串和无效的URL
                return img !== '' && img !== null && img !== undefined;
            });

            console.log('解析后的图片数组:', existingImages);
            console.log('图片数量:', existingImages.length);
        }

        // 初始化图片上传组件
        var imageUploadConfig = {
            uploadUrl: ctx + "common/upload",
            maxFiles: 1,
            maxSize: 5 * 1024 * 1024,
            allowedTypes: ['image/jpeg', 'image/png'],
            previewWidth: 200,
            previewHeight: 150,
            inputName: 'noticeImg'
        };

        // 只有在有图片时才传递 initialFiles
        if (existingImages.length > 0) {
            imageUploadConfig.initialFiles = existingImages;
        }

        console.log('图片上传配置:', imageUploadConfig);

        $('#image-upload-container').imageUpload(imageUploadConfig);

        // 监听事件（可选）
        $('#image-upload-container').on('upload.success', function(e, data) {
            console.log('上传成功:', data.url);
        });

        $('#image-upload-container').on('upload.error', function(e, data) {
            console.error('上传失败:', data.error);
        });

        $('#image-upload-container').on('files.set', function(e, data) {
            console.log('图片已设置:', data.urls);
        });
        // ============ 修复结束 ============
    });

    $("#form-notice-edit").validate({
        focusCleanup: true,
        rules: {
            sort: {
                digits: true
            },
        },
    });

    function submitHandler() {
        if ($.validate.form()) {
            // 获取上传组件实例
            var uploadInstance = $('#image-upload-container').data('imageUpload');

            // 检查是否有上传的图片
            if (uploadInstance) {
                var uploadedFiles = uploadInstance.getFiles();
                console.log('已上传的图片:', uploadedFiles);

                // 检查封面图片是否上传
                if (uploadedFiles.length === 0) {
                    $.modal.alertWarning("请上传图片");
                    return false;
                }
                // 组件会自动更新隐藏字段，我们不需要额外处理
            } else {
                // 如果没有上传组件实例，检查是否有隐藏字段
                var existingImages = $('#form-competition-edit input[name="noticeImg"]').map(function() {
                    return $(this).val();
                }).get().filter(function(val) {
                    return val && val.trim() !== '';
                });

                if (existingImages.length === 0) {
                    $.modal.alertWarning("请上传图片");
                    return false;
                }
            }


            var sHTML = $('.summernote').summernote('code');
            $("#noticeContent").val(sHTML);
            $.operate.save(prefix + "/edit", $('#form-notice-edit').serialize());
        }
    }
</script>
</body>
</html>
