2024年2月7日10:00:57
parent
c4bd2da74f
commit
64e3524d5c
|
|
@ -0,0 +1,12 @@
|
|||
### 1. 小说首页
|
||||
|
||||

|
||||
|
||||
### 2. 小说章节页
|
||||
|
||||

|
||||
|
||||
|
||||
### 3. 小说详情页
|
||||
|
||||

|
||||
Binary file not shown.
|
After Width: | Height: | Size: 426 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 123 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
|
|
@ -0,0 +1,97 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>小说集合添加</title>
|
||||
<link rel="stylesheet" href="${springMacroRequestContext.contextPath}/system/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form" action="">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小说名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="小说名称" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小说href</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="href" lay-verify="title" autocomplete="off" placeholder="小说href" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小说来源</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="sources" id="sources" lay-verify="required" lay-search>
|
||||
<option value=""></option>
|
||||
<#list sources_list as soureces>
|
||||
<option value="${soureces.name}">${soureces.desc}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小说分类</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="category" id="category" lay-verify="required" lay-search>
|
||||
<option value=""></option>
|
||||
<#list category_list as category>
|
||||
<option value="${category.id}">${category.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="pear-btn pear-btn-primary pear-btn-sm" lay-submit="" lay-filter="fiction-save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
提交
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-sm">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="${springMacroRequestContext.contextPath}/system/component/layui/layui.js"></script>
|
||||
<script src="${springMacroRequestContext.contextPath}/system/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
form.on('submit(fiction-save)', function(data){
|
||||
var obj = data.field;
|
||||
obj['token'] = localStorage.getItem("token");
|
||||
$.ajax({
|
||||
url:'/fiction/save',
|
||||
data:obj,
|
||||
type:'post',
|
||||
success:function(result){
|
||||
if(result.flag){
|
||||
layer.msg(result.message,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("category-table");
|
||||
});
|
||||
}else{
|
||||
layer.msg(result.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<script>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>小说集合编辑</title>
|
||||
<link rel="stylesheet" href="${springMacroRequestContext.contextPath}/system/component/pear/css/pear.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form" action="">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小说名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="title" value="${obj.title!}" lay-verify="title" autocomplete="off"
|
||||
placeholder="小说名称" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小说href</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="href" value="${obj.href}" lay-verify="title" autocomplete="off"
|
||||
placeholder="小说href" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小说来源</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="sources" id="sources" lay-verify="required" lay-search>
|
||||
<option value=""></option>
|
||||
<#list sources_list as soureces>
|
||||
<#if obj.sources == soureces.name>
|
||||
<option value="${soureces.name}" selected>${soureces.desc}</option>
|
||||
<#else >
|
||||
<option value="${soureces.name}">${soureces.desc}</option>
|
||||
</#if>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小说分类</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="category" id="category" lay-verify="required" lay-search>
|
||||
<option value=""></option>
|
||||
<#list category_list as category>
|
||||
<#if obj.category_name == category.title>
|
||||
<option value="${category.id}" selected>${category.title}</option>
|
||||
<#else >
|
||||
<option value="${category.id}">${category.title}</option>
|
||||
</#if>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="pear-btn pear-btn-primary pear-btn-sm" lay-submit="" lay-filter="fiction-save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
提交
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-sm">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="${springMacroRequestContext.contextPath}/system/component/layui/layui.js"></script>
|
||||
<script src="${springMacroRequestContext.contextPath}/system/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form', 'jquery'], function () {
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
form.on('submit(fiction-save)', function (data) {
|
||||
var obj = data.field;
|
||||
obj['token'] = localStorage.getItem("token");
|
||||
$.ajax({
|
||||
url: '/fiction/save',
|
||||
data: obj,
|
||||
type: 'post',
|
||||
success: function (result) {
|
||||
if (result.flag) {
|
||||
layer.msg(result.message, {icon: 1, time: 1000}, function () {
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("category-table");
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {icon: 2, time: 1000});
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<script>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,362 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>小说集合</title>
|
||||
<link rel="stylesheet" href="${springMacroRequestContext.contextPath}/system/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form" action="">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">小说名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="title" placeholder="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="fiction-list-query">
|
||||
<i class="layui-icon layui-icon-search"></i>
|
||||
查询
|
||||
</button>
|
||||
|
||||
<button type="reset" class="pear-btn pear-btn-md">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="fiction-list-table" lay-filter="fiction-list-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="fiction-list-toolbar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
|
||||
<i class="layui-icon layui-icon-add-1"></i>
|
||||
新增
|
||||
</button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
|
||||
<i class="layui-icon layui-icon-delete"></i>
|
||||
删除
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="fiction-list-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="gen"><i class="layui-icon layui-icon-release"></i></button>
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="update"><i class="layui-icon layui-icon-refresh"></i></button>
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="fiction-list-enable">
|
||||
<input type="checkbox" name="enable" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="category-enable" checked = "{{ d.enable == 0 ? 'true' : 'false' }}">
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="fiction-list-addTime">
|
||||
{{layui.util.toDateString(d.addTime, 'yyyy-MM-dd HH:mm:ss')}}
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="sources">
|
||||
{{#if (d.sources == "tian_yu_xiao_shuo") { }}
|
||||
<span>天域小说网</span>
|
||||
{{# }else if(d.sources == "bi_qu_ge"){ }}
|
||||
<span>笔趣阁</span>
|
||||
{{# }else if(d.sources == "ling_dian_kan_shu"){ }}
|
||||
<span>零点看书</span>
|
||||
{{# }else if(d.sources == "bi_qu_fu"){ }}
|
||||
<span>笔趣富</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script src="${springMacroRequestContext.contextPath}/system/component/layui/layui.js"></script>
|
||||
<script src="${springMacroRequestContext.contextPath}/system/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common','laypage'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
var laypage = layui.laypage;
|
||||
let common = layui.common;
|
||||
let token = localStorage.getItem("token");
|
||||
let cols = [
|
||||
[{
|
||||
type: 'checkbox'
|
||||
},
|
||||
{
|
||||
title: '添加时间',
|
||||
field: 'addTime',
|
||||
align: 'center',
|
||||
templet: '#fiction-list-addTime',
|
||||
width: 200
|
||||
},
|
||||
|
||||
{
|
||||
title: '小说名称',
|
||||
field: 'title',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: 'href',
|
||||
field: 'href',
|
||||
align: 'center'
|
||||
},
|
||||
|
||||
{
|
||||
title: '是否生成',
|
||||
field: 'genStatus',
|
||||
align: 'center'
|
||||
},
|
||||
|
||||
{
|
||||
title: '来源',
|
||||
field: 'sources',
|
||||
align: 'center',
|
||||
templet: '#sources',
|
||||
width: 200
|
||||
},
|
||||
|
||||
{
|
||||
title: '操作',
|
||||
toolbar: '#fiction-list-bar',
|
||||
align: 'center',
|
||||
width: 300
|
||||
}
|
||||
]
|
||||
];
|
||||
|
||||
table.render({
|
||||
elem: '#fiction-list-table',
|
||||
url: '/fictionCollection/list',
|
||||
headers: {token: localStorage.getItem("token")},
|
||||
page: true,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#fiction-list-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'filter', 'print', 'exports']
|
||||
,request: {
|
||||
pageName: 'pageNum' //页码的参数名称,默认:page
|
||||
,limitName: 'pageSize' //每页数据量的参数名,默认:limit
|
||||
}
|
||||
,response: {
|
||||
statusName: 'code' //规定数据状态的字段名称,默认:code
|
||||
,statusCode: 2001 //规定成功的状态码,默认:0
|
||||
,msgName: 'message' //规定状态信息的字段名称,默认:msg
|
||||
,countName: 'count' //规定数据总数的字段名称,默认:count
|
||||
,dataName: 'data' //规定数据列表的字段名称,默认:data
|
||||
}
|
||||
,parseData: function(res){ //将原始数据解析成 table 组件所规定的数据
|
||||
return {
|
||||
"code": res.code, //解析接口状态
|
||||
"msg": res.message, //解析提示文本
|
||||
"count": res.total, //解析数据长度
|
||||
"data": res.data //解析数据列表
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
table.on('tool(fiction-list-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
} else if (obj.event === 'edit') {
|
||||
window.edit(obj);
|
||||
} else if (obj.event === 'gen'){
|
||||
window.gen(obj);
|
||||
} else if (obj.event === 'update'){
|
||||
window.update(obj);
|
||||
}
|
||||
});
|
||||
|
||||
window.gen = function (obj){
|
||||
$.ajax({
|
||||
type:'get',
|
||||
url:'/fictionCollection/genFiction',
|
||||
data:{
|
||||
token:token,
|
||||
url:obj.data.href,
|
||||
id:obj.data.id
|
||||
},
|
||||
success:function (result) {
|
||||
if (result.flag) {
|
||||
layer.msg(result.message, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.message, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
window.update = function (obj){
|
||||
$.ajax({
|
||||
type:'get',
|
||||
url:'/fiction/fictionName',
|
||||
data:{
|
||||
token:token,
|
||||
fictionName:obj.data.title
|
||||
},
|
||||
success:function (result) {
|
||||
if (result.flag) {
|
||||
layer.msg(result.message, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.message, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
table.on('toolbar(fiction-list-table)', function(obj) {
|
||||
if (obj.event === 'add') {
|
||||
window.add(obj);
|
||||
} else if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
} else if (obj.event === 'batchRemove') {
|
||||
window.batchRemove(obj);
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(fiction-list-query)', function(data) {
|
||||
table.reload('fiction-list-table', {
|
||||
where: data.field
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
form.on('switch(fiction-list-enable)', function(obj) {
|
||||
layer.tips(this.value + ' ' + this.name + ':' + obj.elem.checked, obj.othis);
|
||||
});
|
||||
|
||||
window.add = function(obj) {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '新增',
|
||||
shade: 0.1,
|
||||
area: [common.isModile()?'100%':'900px', common.isModile()?'100%':'600px'],
|
||||
content: '/fiction/add?token=' + token
|
||||
});
|
||||
};
|
||||
|
||||
window.edit = function(obj) {
|
||||
console.log(obj);
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '修改',
|
||||
shade: 0.1,
|
||||
area: ['900px', '600px'],
|
||||
content: '/fiction/edit?token=' + token + '&id=' + obj.data.id
|
||||
});
|
||||
};
|
||||
|
||||
window.remove = function(obj) {
|
||||
|
||||
layer.confirm('确定要删除该小说', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "/fictionCollection/delete",
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("token:"+ localStorage.getItem("token"));
|
||||
},
|
||||
data:{
|
||||
id:obj.data['id'],
|
||||
token:localStorage.getItem("token")
|
||||
},
|
||||
type: 'post',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.flag) {
|
||||
layer.msg(result.message, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.message, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
};
|
||||
|
||||
window.batchRemove = function(obj) {
|
||||
|
||||
var checkIds = common.checkField(obj,'categoryId');
|
||||
|
||||
if (checkIds === "") {
|
||||
layer.msg("未选中数据", {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
layer.confirm('确定要删除这些用户', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url:"batchRemove/" + ids,
|
||||
dataType: 'json',
|
||||
type: 'delete',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.success) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
table.reload('category-table');
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('fiction-list-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue