作家后台完善

This commit is contained in:
xiongxiaoyang
2020-11-17 10:25:31 +08:00
parent 2c3e346ea7
commit f625ee38e1
12 changed files with 1016 additions and 99 deletions

View File

@ -0,0 +1,16 @@
//格式化时间函数
Date.prototype.Format = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
};

View File

@ -109,16 +109,24 @@
<script src="/layui/layui.all.js" type="text/javascript"></script>
<script src="/javascript/header.js" type="text/javascript"></script>
<script src="/javascript/user.js" type="text/javascript"></script>
<script src="/javascript/common.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var bookId = getSearchString("bookId");
search(1, 10);
function search(curr, limit) {
var data = {'curr':curr,'limit':limit};
if(bookId){
data.bookId = bookId;
}
$.ajax({
type: "POST",
url: "/author/listIncomeDailyByPage",
data: {'curr':curr,'limit':limit},
data: data,
dataType: "json",
success: function (data) {
if (data.code == 200) {

View File

@ -60,7 +60,11 @@
<li><input type="text" id="bookIndex" name="bookIndex" class="s_input" ></li>
<b>章节内容:</b><li id="contentLi">
<textarea name="bookContent" rows="30" cols="80" id="bookContent"
class="textarea"></textarea></li>
class="textarea"></textarea></li><br/>
<b>是否收费:</b>
<li><input type="radio" name="isVip" value="0" checked >免费
<input type="radio" name="isVip" value="1" >收费</li>
<li style="margin-top: 10px"><input type="button" onclick="addBookContent()" name="btnRegister" value="提交"
@ -118,13 +122,6 @@
<script language="javascript" type="text/javascript">
var bookStatus = getSearchString("bookStatus");
if(bookStatus == 1){
$("#contentLi").after("<b>是否收费</b>\n" +
" <li><input type=\"radio\" name=\"isVip\" value=\"0\" checked >免费\n" +
" <input type=\"radio\" name=\"isVip\" value=\"1\" >收费</li><br/>");
}
var lock = false;
function addBookContent() {
@ -153,11 +150,7 @@
}
var isVip = 0;
if(bookStatus == 1){
isVip = $("input:checked[name=isVip]").val();
}
var isVip = $("input:checked[name=isVip]").val();
@ -170,7 +163,7 @@
success: function (data) {
if (data.code == 200) {
window.location.href = '/author/index.html';
window.location.href = '/author/index_list.html?bookId='+bookId;
} else {

View File

@ -0,0 +1,220 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>作家管理系统-小说精品屋</title>
<link rel="stylesheet" href="/css/base.css?v=1"/>
<link rel="stylesheet" href="/css/user.css"/>
</head>
</head>
<body class="">
<div class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋作家管理
</div>
</div>
</div>
<div class="main box_center cf">
<div class="userBox cf">
<div class="my_l">
<ul class="log_list">
<li><a class="link_4 on" href="/author/index.html">作品管理</a></li>
<li><a class="link_2 " href="/author/author_income_detail.html">稿费收入</a></li>
</ul>
</div>
<div class="my_r">
<div class="my_bookshelf">
<div class="userBox cf">
<form method="post" action="./register.html" id="form2">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKLTIzNjMxNDQxNw9kFgJmD2QWAmYPFgIeBFRleHQFqAE8YSBocmVmPSIvc2VhcmNoLmFzcHg/c2VhcmNoS2V5PeWWu+Wuiembr++8jOeLhOazve+8jOeBteW8gu+8jOWJjeS4luS7iueUn++8jOWGpeeOi+msvOWkqyIgdGFyZ2V0PSJfYmxhbmsiPuWWu+Wuiembr++8jOeLhOazve+8jOeBteW8gu+8jOWJjeS4luS7iueUn++8jOWGpeeOi+msvOWkqzwvYT5kZOquoASBvnvPbc/TYIQiLhSPJ8GKnYQrmk7jGhb5AC5Q">
</div>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="23AA6834">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"
value="/wEdAAVece19BIZ9HiByRfHz3pfnqKSXUE1UN51mNFrIuw38c3Y2+Mc6SrnAqio3oCKbxYZZ1lS+gZUZKpbsAea8j7ASAv40DHFcQ/NE7tJUnABeyQ3d9sFDIcFCYNqlVtprfLoh4JFy0U+R/CcMuyAiWTz7">
</div>
<div class="user_l">
<div></div>
<h3>小说章节内容填写</h3>
<ul class="log_list">
<li><span id="LabErr"></span></li>
<b>章节名:</b>
<li><input type="text" id="bookIndex" name="bookIndex" class="s_input" ></li>
<b>章节内容:</b>
<li id="contentLi">
<textarea name="bookContent" rows="30" cols="80" id="bookContent"
class="textarea"></textarea>
</li>
<li style="margin-top: 10px"><input type="button" onclick="addBookContent()" name="btnRegister" value="提交"
id="btnRegister" class="btn_red">
</li>
</ul>
</div>
</form>
</div>
<!--<div id="divData" class="updateTable">
<table cellpadding="0" cellspacing="0">
<thead>
<tr>
<th class="name">
爬虫源(已开启的爬虫源)
</th>
<th class="chapter">
成功爬取数量websocket实现
</th>
<th class="time">
目标爬取数量
</th>
<th class="goread">
状态(正在运行,已停止)(一次只能运行一个爬虫源)
</th>
<th class="goread">
操作(启动,停止)
</th>
</tr>
</thead>
<tbody id="bookShelfList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
</div>
</div>-->
</div>
</div>
</div>
</div>
</body>
<script src="/javascript/jquery-1.8.0.min.js" type="text/javascript"></script>
<script src="/layui/layui.all.js" type="text/javascript"></script>
<script src="/javascript/header.js" type="text/javascript"></script>
<script src="/javascript/user.js" type="text/javascript"></script>
<script src="/javascript/common.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var bookId = getSearchString("bookId");
var indexId = getSearchString("indexId");
var indexName = decodeURI(decodeURI(getSearchString("indexName")));
var isVip = getSearchString("isVip");
$("#bookIndex").val(indexName);
if(isVip == 1){
$("#contentLi").after("<b>是否收费</b>\n" +
" <li><input type=\"radio\" disabled name=\"isVip\" value=\"0\" >免费\n" +
" <input type=\"radio\" disabled name=\"isVip\" value=\"1\" checked >收费</li><br/>");
}else{
$("#contentLi").after("<b>是否收费:</b>\n" +
" <li><input type=\"radio\" disabled name=\"isVip\" value=\"0\" checked >免费\n" +
" <input type=\"radio\" disabled name=\"isVip\" value=\"1\" >收费</li><br/>");
}
$.ajax({
type: "POST",
url: "/author/queryIndexContent",
data: {'indexId':indexId},
dataType: "json",
success: function (data) {
if (data.code == 200) {
$("#bookContent").html(data.data);
} else {
layer.alert(data.msg);
}
},
error: function () {
lock = false;
layer.alert('网络异常');
}
})
var lock = false;
function addBookContent() {
if(lock){
return;
}
lock = true;
var indexName = $("#bookIndex").val();
if(!indexName){
$("#LabErr").html("章节名不能为空!");
lock = false;
return;
}
var content = $("#bookContent").val();
if(!content){
$("#LabErr").html("章节内容不能为空!");
lock = false;
return;
}
$.ajax({
type: "POST",
url: "/author/updateBookContent",
data: {'indexId':indexId,'indexName':indexName,'content':content},
dataType: "json",
success: function (data) {
if (data.code == 200) {
window.location.href = '/author/index_list.html?bookId='+bookId;
} else {
lock = false;
$("#LabErr").html(data.msg);
}
},
error: function () {
lock = false;
layer.alert('网络异常');
}
})
}
</script>
</html>

View File

@ -8,6 +8,19 @@
<title>作家管理系统-小说精品屋</title>
<link rel="stylesheet" href="/css/base.css?v=1"/>
<link rel="stylesheet" href="/css/user.css" />
<style type="text/css">
.redBtn{
padding: 5px;
border-radius: 20px;
border: 1px solid #f80;
background: #f80;
color: #fff;
}
a.redBtn:hover{
color: #fff;
}
</style>
</head>
</head>
<body class="">
@ -35,7 +48,11 @@
</div>
<div class="my_r">
<div class="my_bookshelf">
<div id="noContentDiv" >
<div class="tc" style="margin-top: 200px"><a href="/author/book_add.html" class="btn_red">创建作品</a></div>
</div>
<div class="my_bookshelf" id="hasContentDiv" style="display: none">
<div class="title cf">
<h2 class="fl">小说列表</h2>
<div class="fr"><a href="/author/book_add.html" class="btn_red">发布小说</a></div>
@ -45,23 +62,23 @@
<table cellpadding="0" cellspacing="0">
<thead>
<tr>
<th class="style">
序号
<th class="goread">
书名
</th>
<th class="name">
小说名
<th class="goread">
分类
</th>
<th class="goread">
点击量
</th>
<th class="goread">
昨日订阅
</th>
<th class="name">
最新章节
昨日订阅
</th>
<th class="goread">
状态
更新时间
</th>
<th class="goread">
总字数
</th>
<th class="goread">
操作
@ -119,6 +136,7 @@
<script src="/layui/layui.all.js" type="text/javascript"></script>
<script src="/javascript/header.js" type="text/javascript"></script>
<script src="/javascript/user.js" type="text/javascript"></script>
<script src="/javascript/date.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
search(1, 5);
@ -134,28 +152,41 @@
if (data.code == 200) {
var bookList = data.data.list;
if (bookList.length > 0) {
$("#hasContentDiv").css("display","block");
$("#noContentDiv").css("display","none");
var bookListHtml = "";
for(var i=0;i<bookList.length;i++){
var book = bookList[i];
bookListHtml+=(" <tr class=\"book_list\" vals=\"291\">\n" +
" <td class=\"style bookclass\">\n" +
" ["+(i+1)+"]\n" +
" </td>\n" +
" <td class=\"name\">\n" +
/* " <td class=\"style bookclass\">\n" +
" ["+(i+1)+"]\n" +
" </td>\n" +*/
" <td class=\"goread\">\n" +
"<img width='50' height='70' src='"+book.picUrl+"'/><br/>" +
" "+book.bookName+"</td>\n" +
" <td class=\"goread\" >"
+book.catName+"</td>\n" +
" <td class=\"goread\" valsc=\"291|2037554|1\">"
+book.visitCount+"</td>\n" +
" <td class=\"goread\" valsc=\"291|2037554|1\">"
+book.yesterdayBuy+"</td>\n" +
" <td class=\"name\">\n" +
" "+book.lastIndexName+"\n" +
" </td>\n" +
" <td class=\"goread\" id='bookStatus"+book.id+"'>"+(book.status==0?'免费':'上架')+
" <td class=\"goread\">\n" +
" "+new Date(Date.parse(book.lastIndexUpdateTime?book.lastIndexUpdateTime:book.updateTime)).Format("yyyy-MM-dd hh:mm")+"更新\n" +
" </td>\n" +
" <td class=\"goread\" valsc=\"291|2037554|1\">"
+book.wordCount+"</td>\n" +
" <td class=\"goread\" id='opt"+book.id+"'>" +
"<a href='javascript:updateBookStatus(\""+book.id+"\","+book.status+")'>"+(book.status==0?'上架':'下架')+" </a><br/>" +
"<a href='/author/content_add.html?bookStatus="+book.status+"&bookId="+book.id+"'>发布章节 </a>" +
"<a target='_blank' class='redBtn' href='/author/index_list.html?bookId="+book.id+"'>章节管理 </a><br/>" +
"<a target='_blank' href='/author/author_income_detail.html?bookId="+book.id+"'>薪酬查询 </a><br/>"+
"<a target='_blank' href='/book/"+book.id+".html'>作品信息</a>"+
"</td> </tr>");
}
$("#bookList").html(bookListHtml);

View File

@ -0,0 +1,330 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>作家管理系统-小说精品屋</title>
<link rel="stylesheet" href="/css/base.css?v=1"/>
<link rel="stylesheet" href="/css/user.css"/>
<style type="text/css">
.redBtn {
padding: 5px;
border-radius: 20px;
border: 1px solid #f80;
background: #f80;
color: #fff;
}
a.redBtn:hover {
color: #fff;
}
</style>
</head>
</head>
<body class="">
<div class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋作家管理
</div>
</div>
</div>
<div class="main box_center cf">
<div class="userBox cf">
<div class="my_l">
<ul class="log_list">
<li><a class="link_4 on" href="/author/index.html">作品管理</a></li>
<li><a class="link_2 " href="/author/author_income_detail.html">稿费收入</a></li>
</ul>
</div>
<div class="my_r">
<div id="noContentDiv">
<div class="tc" style="margin-top: 200px"><a href="javascript:addContent()" class="btn_red">新建章节</a>
</div>
</div>
<div class="my_bookshelf" id="hasContentDiv" style="display: none">
<div class="title cf">
<h2 class="fl">章节列表</h2>
<div class="fr"><a href="javascript:addContent()" class="btn_red">新建章节</a></div>
</div>
<div id="divData" class="updateTable">
<table cellpadding="0" cellspacing="0">
<thead>
<tr>
<!-- <th class="style">
序号
</th>-->
<th class="name">
章节名
</th>
<th class="goread">
更新时间
</th>
<th class="goread">
是否收费
</th>
<th class="goread">
操作
</th>
</tr>
</thead>
<tbody id="bookList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
</div>
</div>
<!--<div id="divData" class="updateTable">
<table cellpadding="0" cellspacing="0">
<thead>
<tr>
<th class="name">
爬虫源(已开启的爬虫源)
</th>
<th class="chapter">
成功爬取数量websocket实现
</th>
<th class="time">
目标爬取数量
</th>
<th class="goread">
状态(正在运行,已停止)(一次只能运行一个爬虫源)
</th>
<th class="goread">
操作(启动,停止)
</th>
</tr>
</thead>
<tbody id="bookShelfList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
</div>
</div>-->
</div>
</div>
</div>
</div>
</body>
<script src="/javascript/jquery-1.8.0.min.js" type="text/javascript"></script>
<script src="/layui/layui.all.js" type="text/javascript"></script>
<script src="/javascript/header.js" type="text/javascript"></script>
<script src="/javascript/user.js" type="text/javascript"></script>
<script src="/javascript/date.js" type="text/javascript"></script>
<script src="/javascript/common.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var bookId = getSearchString("bookId");
var indexCount = 0;
search(1, 5);
function search(curr, limit) {
$.ajax({
type: "POST",
url: "/book/queryIndexList",
data: {'bookId': bookId, 'curr': curr, 'limit': limit, 'orderBy': 'index_num desc'},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookList = data.data.list;
if (bookList.length > 0) {
indexCount = bookList.length;
$("#hasContentDiv").css("display", "block");
$("#noContentDiv").css("display", "none");
var bookListHtml = "";
for (var i = 0; i < bookList.length; i++) {
var book = bookList[i];
bookListHtml += (" <tr class=\"book_list\" vals=\"291\">\n" +
/* " <td class=\"style bookclass\">\n" +
" ["+(i+1)+"]\n" +
" </td>\n" +*/
" <td id='name" + book.id + "' class=\"name\">\n" +
" " + book.indexName + "</td>\n" +
" <td class=\"goread\">\n" +
" " + new Date(Date.parse(book.updateTime)).Format("yyyy-MM-dd hh:mm") + "<br/>更新\n" +
" </td>\n" +
" <td class=\"goread\" valsc=\"291|2037554|1\">"
+ (book.isVip == 1 ? '收费' : '免费') + "</td>\n" +
" <td class=\"goread\" id='opt" + book.id + "'>" +
"<a class='redBtn' href='javascript:updateIndex(\"" + book.id + "\"," + book.isVip + ")'>修改 </a><br/>" +
"<a href='javascript:deleteIndex(\"" + book.id + "\")'>删除 </a><br/>" +
"</td> </tr>");
}
$("#bookList").html(bookListHtml);
layui.use('laypage', function () {
var laypage = layui.laypage;
//执行一个laypage实例
laypage.render({
elem: 'shellPage' //注意,这里的 test1 是 ID不用加 # 号
, count: data.data.total //数据总数,从服务端得到,
, curr: data.data.pageNum
, limit: data.data.pageSize
, jump: function (obj, first) {
//obj包含了当前分页的所有参数比如
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
console.log(obj.limit); //得到每页显示的条数
//首次不执行
if (!first) {
search(obj.curr, obj.limit);
} else {
}
}
});
});
}
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
} else {
layer.alert(data.msg);
}
},
error: function () {
layer.alert('网络异常');
}
})
}
function addContent() {
location.href = "/author/content_add.html?indexCount=" + indexCount + "&bookId=" + bookId;
}
function updateIndex(indexId, isVip) {
var indexName = $.trim($("#name" + indexId).text());
location.href = "/author/content_update.html?bookId=" + bookId
+ "&indexId=" + indexId
+ "&indexName=" + encodeURI(encodeURI(indexName))
+ "&isVip=" + isVip;
/*
var indexName = $("#name"+indexId).text();
var htmlStr = "<input type=\"text\" value=\""+$.trim(indexName)+"\">";
$("#name"+indexId).html(htmlStr);
$("#name"+indexId).find("input").focus();
$("#name"+indexId).find("input").select();
$("#name"+indexId).find("input").keyup(function(event){
if(event.keyCode ==13){
$(this).blur();
}
});
$("#name"+indexId).find("input").blur(function () {
var indexName = $(this).val();
$.ajax({
type: "POST",
url: "/author/updateIndexName",
data: {'indexId':indexId,'indexName':indexName},
dataType: "json",
success: function (data) {
if (data.code == 200) {
$("#name"+indexId).html(indexName);
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
}else {
layer.alert(data.msg);
}
},
error: function () {
layer.alert('网络异常');
}
})
});*/
}
function deleteIndex(indexId) {
layer.confirm('确认要删除吗删除后数据无法找回', {
btn: ['确定', '取消']//按钮
}, function (index) {
layer.close(index);
$.ajax({
type: "POST",
url: "/author/deleteIndex",
data: {'indexId': indexId},
dataType: "json",
success: function (data) {
if (data.code == 200) {
location.reload();
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
} else {
layer.alert(data.msg);
}
},
error: function () {
layer.alert('网络异常');
}
})
});
}
</script>
</html>

View File

@ -45,7 +45,7 @@
<a class="icon_hide" href="javascript:void(0)" onclick=""><i></i>收起</a>
<a class="icon_show" href="javascript:void(0)" onclick=""><i></i>展开</a>
</div>
<div class="btns">
<div class="btns" id="optBtn">
<a th:href="'/book/'+${book.id}+'/'+${firstBookIndexId}+'.html'" class="btn_ora">点击阅读</a>
<span id="cFavs"><a href="javascript:void(0);" class="btn_ora_white btn_addsj"
onclick="javascript:BookDetail.AddFavorites(37,0,0);">加入书架</a>
@ -196,27 +196,32 @@
var pathname = window.location.pathname;
var bookId = pathname.substring(pathname.lastIndexOf("/") + 1, pathname.lastIndexOf("."))
//查询章节信息
$.ajax({
type: "POST",
url: "/book/queryBookIndexAbout",
data: {'bookId': bookId, 'lastBookIndexId': $("#lastBookIndexId").val()},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookIndexData = data.data;
$("#bookIndexCount").html("(" + bookIndexData.bookIndexCount + ")");
$("#lastBookContent").html(bookIndexData.lastBookContent + "...");
var lastBookIndexId = $("#lastBookIndexId").val();
if(lastBookIndexId){
$.ajax({
type: "POST",
url: "/book/queryBookIndexAbout",
data: {'bookId': bookId, 'lastBookIndexId': lastBookIndexId},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookIndexData = data.data;
$("#bookIndexCount").html("(" + bookIndexData.bookIndexCount + ")");
$("#lastBookContent").html(bookIndexData.lastBookContent + "...");
} else {
layer.alert(data.msg);
} else {
layer.alert(data.msg);
}
},
error: function () {
layer.alert('网络异常');
}
},
error: function () {
layer.alert('网络异常');
}
})
})
}else{
$("#optBtn").remove();
}
</script>
<script language="javascript" type="text/javascript">
//查询是否在书架