参考代码
<%@ 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>
效果
