KevinTseng

参考代码

<%@ Page Title="" Language="C#" MasterPageFile="~/super/topfoot.Master" AutoEventWireup="true" CodeBehind="news_text.aspx.cs" Inherits="Tcofficial.Web.super.news_text" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script  type="text/javascript" charset="utf-8" src="lib/ueditor/ueditor.config.js"></script>
    <script  type="text/javascript" charset="utf-8" src="lib/ueditor/ueditor.all.min.js"></script>
    <script  type="text/javascript" charset="utf-8" src="lib/ueditor/lang/zh-cn/zh-cn.js"></script>

    <style>
        .list_text_btn {
            margin-top: 0px;
        }

        #txtContent img {
            width: 100%;
        }

        .car-pic {
            position: relative;
            width: 100%;
            height: 200px;
            overflow: hidden;
            border-radius: 4px;
            border: 1px solid #ccc;
            display: flex;
            justify-content: center;
            align-items: center;
        }

            .car-pic:hover .car-pic-change {
                display: block;
            }

        .car-pic-change {
            display: none;
            cursor: pointer;
            position: absolute;
            width: 100%;
            height: 35px;
            line-height: 35px;
            text-align: center;
            color: #fff;
            background: rgba(0,0,0,0.2);
        }
    </style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div id="page" class="main_box" v-cloak>
        <div>
            <h2 class="sub-header">新闻编辑</h2>
        </div>

        <form id="uploadForm">
            <div class="row">
                <input type="hidden" class="form-control" name="PID" placeholder="" v-if="PID" v-model="list_data.PID">
                <div class="col-md-3">
                    <div class="form-group">
                        <label for="exampleInputName2">标题</label>
                        <input type="text" class="form-control" name="FTitle" placeholder="" v-model="list_data.FTitle" onkeyup="this.value=this.value.replace(/\s+/g,\'\')">
                    </div>
                    <div class="form-group">
                        <label for="exampleInputName2">新闻类型</label>
                        <select class="form-control" name="KNewsType" v-model="list_data.KNewsType">
                          <option v-for="(item,index) in cate_data" :value="item.PID" >{{item.FName}}</option>
                        </select>
                    </div>
                     <div class="form-group">
                        <label for="exampleInputName2">发布人</label>
                        <input type="text" class="form-control" name="FAuthor" placeholder="" v-model="list_data.FAuthor">
                    </div>
                    <div class="form-group">
                        <label for="exampleInputName2">排序 (数值越大显示靠前,数值相同按发布时间排序)</label>
                        <input type="number" class="form-control" name="FSort" placeholder="" v-model="list_data.FSort">
                    </div>
                    <div class="form-group">
                        <label for="exampleInputName2">其他选项</label>
                        <div class="form-control">
                            <input type="checkbox" name="FIsShow" placeholder="" checked v-model="list_data.FIsShow"> 是否显示
                            <input type="checkbox" name="FState" placeholder="" checked v-model="list_data.FState" hidden>
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="exampleInputName2">封面</label>
                        <div onclick="FImgInput.click()">
                            <div v-if="list_data.FImg==\'\'"><a href="javascript:void(0)">点击上传</a></div>
                            <div v-else class="car-pic">
                                <img id="car-img" v-bind:src="list_data.FImg"  style="width:100%" />
                                <div class="car-pic-change">点击更换图片</div>
                            </div>
                        </div>
                        <input type="file" id="FImgInput" name="FImgInput" accept="image/*"   v-on:change="changeImg" style="display:none;">
                        <input type="text" name="FImg" v-model="list_data.FImg" style="display:none;"/>
                    </div>
                    <div class="form-group">
                        <label for="exampleInputName2">简介</label>
                        <textarea class="form-control" name="FInTroduce" style="height:84px; overflow:hidden;" placeholder="不填则由系统自动截取" v-model="list_data.FInTroduce"></textarea>
                    </div>
                    <div class="list_text_btn">
                        <input value="保存" type="button" class="btn btn-primary btn-long"  v-on:click="submit" v-bind:disabled="editorLoading"/>
                        <input value="返回" type="button" class="btn btn-default btn-long"  v-on:click="cancel"/>
                    </div>
                </div>
                <div class="col-md-9">
                    <div style="position:relative;">
                        <div id="txtContent" style="width:90%; margin:0 auto;"></div>
                        <div style="width:90%; margin:10px auto 0;">* 建议单张图片≤500kb 支持格式.jpeg/.jpg/.png;统一使用字号:微软雅黑 16px 纯黑 行距1.5倍</div>
                        <div style="width:90%; margin:10px auto 0;">* 若编辑器加载异常,请点击返回重新进入,或Ctrl+F5强制刷新</div>
                    </div>
                </div>
            </div>
        </form>
        
    </div>

</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentJS" runat="server">
    <script type="text/javascript">
        var pageManage = new Vue({
            el: "#page",
            data: {
                list_data: {
                    PID: \'\',
                    FImg: \'\',
                    FTitle: \'\',
                    FInTroduce: \'\',
                    FAuthor: \'admin\',
                    FIsShow: \'1\',
                    FSort: \'1\',
                    KNewsType: \'1\',
                    FState: \'1\'
                },
                cate_data: \'\',
                PID: \'\',
                editor: \'\',
                editorLoading: true
            },
            mounted: function () {
                var self = this;
                //初始化编辑器
                //初始化编辑器
                var toolbar = [
                        [
                            \'source\', //源代码
                            \'undo\', //撤销
                            \'redo\', //重做
                            \'fontfamily\', //字体
                            \'fontsize\', //字号
                            \'blockquote\', //引用
                            \'link\', //超链接
                            \'unlink\', //取消链接
                            \'emotion\', //表情
                            \'anchor\', //锚点
                            \'bold\', //加粗
                            \'italic\', //斜体
                            \'underline\', //下划线
                            \'horizontal\', //分隔线
                            \'strikethrough\', //删除线
                            \'forecolor\', //字体颜色
                            \'backcolor\', //背景色
                            \'cleardoc\', //清空文档
                            \'selectall\', //全选
                            \'removeformat\', //清除格式
                            \'formatmatch\', //格式刷
                            \'autotypeset\', //自动排版

                        ],
                        [
                            \'justifyleft\', //居左对齐
                            \'justifyright\', //居右对齐
                            \'justifycenter\', //居中对齐
                            \'justifyjustify\', //两端对齐
                            \'indent\', //首行缩进
                            \'rowspacingtop\', //段前距
                            \'rowspacingbottom\', //段后距
                            \'lineheight\', //行间距
                            \'customstyle\', //自定义标题
                            \'paragraph\', //段落格式
                            \'insertorderedlist\', //有序列表
                            \'insertunorderedlist\', //无序列表
                           \'imagenone\', //默认
                            \'imageleft\', //左浮动
                            \'imageright\', //右浮动
                            \'imagecenter\', //居中
                            \'simpleupload\', //单图上传
                            \'insertimage\', //多图上传
                            \'insertvideo\', //视频
                        ]
                ];

                //先删除之前实例的对象
                
                UE.delEditor(\'txtContent\');
                //加载编辑器
                var editor = UE.getEditor(\'txtContent\', {
                    toolbars: toolbar,
                    initialFrameWidth: \'100%\',
                    initialFrameHeight: \'610\',
                    scaleEnabled: false
                });

                editor.addListener("ready", function () {
                    self.editor = editor;
                    //获取地址栏PID
                    var PID = PublicTool.getUrlParam(\'PID\');
                    if (PID == null) {
                        //添加模式
                        self.editorLoading = false;
                    } else {
                        //编辑模式
                        self.PID = PID;
                        //获取图文数据
                        var params = { "PID": PID };
                        var url = \'/handler/newslist/newslist_select.ashx\';
                        PublicTool.sendPostRequest(url, params, function (data) {
                            var res = JSON.parse(data);
                            if (res.status == 1 && res.data.length > 0) {
                                self.setListData(res.data[0]);
                        		self.editorLoading = false;
                            } else if (res.status == 0) {
                                alert(res.info)
                            }
                        }, function (jqXHR, textStatus, errorThrown) {
                            alert(\'数据加载失败请刷新重试\');
                        });
                    }
                });
				
				//获取所有分类
                var params_cate = {};
                var url_cate = \'/handler/newstype/newstype_select.ashx\';
                PublicTool.sendPostRequest(url_cate, params_cate, function (data) {
                    var res = JSON.parse(data);
                    if (res.status == 1) {
                        self.setListCateData(res.data);
                    } else {
                        alert(res.info)
                    }
                }, function (jqXHR, textStatus, errorThrown) {
                    alert(\'数据加载失败请刷新重试\');
                });
                
            },
            methods: {
                cancel: function () {
                    //删除编辑器
                    var self = this;
                    try {
                        if (typeof (UE.getEditor("txtContent")) != \'undefined\') {
                            UE.getEditor("txtContent").destroy();
                        }
                        setTimeout(function () {
                            location.href = "news_list.aspx";
                        }, 100);
                    } catch (e) {
                        console.log(e)
                        location.href = "news_list.aspx";
                    }
                },
                checkInputs: function () {
                    //检查输入完整
                    var self = this;
                    if (self.list_data.FTitle.trim() == \'\') {
                        alert(\'请输入新闻标题\');
                        return false;
                    }
                    return true;
                },
                changeImg: function (event) {
                    //更换图片
                    var self = this;
                    var file = event.target.files[0];
                    var imgSize = file.size / 1024;
                    if (imgSize > 500) {
                        alert(\'请上传大小不要超过500KB的图片\');
                    } else {
                        var reads = new FileReader();
                        reads.readAsDataURL(file);
                        reads.onload = function (e) {
                            self.list_data.FImg = this.result;
                        };
                    }
                },
                setListData: function (data) {
                    //设置列表显示数据
                    var self = this;
                    self.list_data = data;
                    self.editor.setContent(data.FDetail);
                },
                setListCateData: function (data) {
                    //设置分类列表显示数据
                    var self = this;
                    self.cate_data = data;
                },
                submit: function () {
                    //更新图文
                    var self = this;
                    if (!self.checkInputs()) {
                        return;
                    }
                    if (self.editorLoading) {
                        alert("编辑器加载异常,请点击返回重新进入,或Ctrl+F5强制刷新");
                        return;
                    }


                    try {
                        var url = \'\';
                        var formData = new FormData($("#uploadForm")[0]);
                        var eHtml = self.editor.getContent();
                        var eTxt = self.editor.getContentTxt();
                        formData.set("FDetail", eHtml);
                        if (self.list_data.FInTroduce == "") {
                            var str = eTxt.substring(0, 46) + "...";
                            formData.set("FInTroduce", str);
                        }
                        if (self.PID != \'\') {
                            url = \'/handler/newslist/newslist_update.ashx\';
                        } else {
                            url = \'/handler/newslist/newslist_insert.ashx\';
                        };
                        PublicTool.sendFormdataPostRequest(url, formData, function (data) {
                            var res = JSON.parse(data)
                            if (res.status == "1") {
                                location.href = "news_list.aspx";
                            } else {
                                alert(res.info);
                            }
                        }, function () {
                            alert(\'数据加载失败请刷新重试\');
                        });
                    } catch (e) {
                        alert("提交更新异常,请重新打开编辑页")
                    }
                }
            }
        })
    </script>
</asp:Content>

效果

分类:

技术点:

相关文章:

  • 2021-11-28
  • 2022-12-23
  • 2021-11-02
  • 2021-08-03
  • 2021-08-11
  • 2021-05-02
猜你喜欢
  • 2022-12-23
  • 2022-01-10
  • 2021-06-16
  • 2021-08-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案