363 lines
24 KiB
HTML
363 lines
24 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport"
|
|
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
<title>书籍中心</title>
|
|
<link href="sdk/antd.css" rel="stylesheet"/>
|
|
<link href="sdk/helper.css" rel="stylesheet"/>
|
|
<link href="sdk/iconfont.css" rel="stylesheet"/>
|
|
<style>
|
|
html, body, #root {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
textarea {
|
|
resize: none !important;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
</body>
|
|
<script src="sdk/sdk.js"></script>
|
|
<script src="components/helper.js"></script>
|
|
<script src="components/book.js"></script>
|
|
<script src="components/chapter.js"></script>
|
|
<script>
|
|
(function () {
|
|
let debug = false
|
|
let amis = amisRequire('amis/embed')
|
|
let amisJSON = {
|
|
type: 'page',
|
|
title: '书籍中心',
|
|
subTitle: '网络书籍精排版工具',
|
|
body: [
|
|
{
|
|
type: 'crud',
|
|
api: {
|
|
method: 'get',
|
|
url: '${base}/book/list',
|
|
data: {
|
|
page: '${page|default:1}',
|
|
size: '${size|default:10}'
|
|
}
|
|
},
|
|
...crudCommonOptions(),
|
|
headerToolbar: [
|
|
'reload',
|
|
{
|
|
label: '',
|
|
icon: 'fa fa-add',
|
|
...bookAddDialog(),
|
|
},
|
|
],
|
|
footerToolbar: [
|
|
paginationOption(),
|
|
],
|
|
columns: [
|
|
{
|
|
name: 'name',
|
|
label: '名称',
|
|
width: 150,
|
|
},
|
|
{
|
|
name: 'description',
|
|
label: '描述',
|
|
},
|
|
{
|
|
type: 'operation',
|
|
label: '操作',
|
|
fixed: 'right',
|
|
className: 'nowrap',
|
|
width: 250,
|
|
buttons: [
|
|
{
|
|
type: 'action',
|
|
label: '跳转',
|
|
actionType: 'url',
|
|
url: '${source}',
|
|
blank: true,
|
|
},
|
|
{
|
|
type: 'action',
|
|
label: '编辑',
|
|
...bookDetailDialog(),
|
|
},
|
|
{
|
|
type: 'action',
|
|
label: '编辑章节',
|
|
actionType: 'dialog',
|
|
dialog: {
|
|
title: '章节',
|
|
size: 'lg',
|
|
actions: [],
|
|
body: [
|
|
{
|
|
type: 'crud',
|
|
...crudCommonOptions(),
|
|
api: {
|
|
method: 'get',
|
|
url: '${base}/chapter/list/${bookId}',
|
|
data: {
|
|
page: '${page|default:1}',
|
|
size: '${size|default:10}'
|
|
}
|
|
},
|
|
headerToolbar: [
|
|
'reload',
|
|
{
|
|
label: '',
|
|
icon: 'fa fa-add',
|
|
...chapterAddDialog(),
|
|
},
|
|
],
|
|
footerToolbar: [
|
|
paginationOption(),
|
|
],
|
|
columns: [
|
|
{
|
|
name: 'sequence',
|
|
label: '章节数',
|
|
width: 50,
|
|
},
|
|
{
|
|
name: 'name',
|
|
label: '名称',
|
|
width: 150,
|
|
},
|
|
{
|
|
name: 'description',
|
|
label: '简介',
|
|
},
|
|
{
|
|
type: 'operation',
|
|
label: '操作',
|
|
fixed: 'right',
|
|
className: 'nowrap',
|
|
width: 200,
|
|
buttons: [
|
|
{
|
|
type: 'action',
|
|
label: '编辑',
|
|
...chapterDetailDialog(),
|
|
},
|
|
{
|
|
type: 'action',
|
|
label: '阅读',
|
|
actionType: 'dialog',
|
|
dialog: {
|
|
title: '阅读',
|
|
size: 'lg',
|
|
actions: [],
|
|
body: {
|
|
type: 'service',
|
|
className: 'p-10',
|
|
api: '${base}/chapter/show/${chapterId}',
|
|
silentPolling: true,
|
|
body: {
|
|
type: 'tpl',
|
|
className: 'font-serif',
|
|
tpl: '${item|raw}'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type: 'action',
|
|
label: '导入',
|
|
actionType: 'dialog',
|
|
dialog: {
|
|
title: '导入正文',
|
|
size: 'lg',
|
|
body: {
|
|
debug: '${debug}',
|
|
type: 'form',
|
|
api: '${base}/chapter/import/${chapterId}',
|
|
mode: 'normal',
|
|
body: [
|
|
{
|
|
type: 'switch',
|
|
name: 'override',
|
|
label: '覆盖导入',
|
|
},
|
|
{
|
|
type: 'textarea',
|
|
name: 'text',
|
|
label: '正文',
|
|
required: true,
|
|
...formInputClearable(),
|
|
showCounter: true,
|
|
trimContents: true,
|
|
minRows: 10,
|
|
maxRows: 10,
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
type: 'action',
|
|
label: '编辑正文',
|
|
actionType: 'dialog',
|
|
dialog: {
|
|
title: '编辑正文',
|
|
size: 'lg',
|
|
actions: [],
|
|
body: {
|
|
type: 'crud',
|
|
...crudCommonOptions(),
|
|
api: {
|
|
method: 'get',
|
|
url: '${base}/line/list/${chapterId}',
|
|
data: {
|
|
page: '${page|default:1}',
|
|
size: '${size|default:10}'
|
|
}
|
|
},
|
|
quickSaveItemApi: '${base}/line/update/${lineId}',
|
|
headerToolbar: [
|
|
'reload',
|
|
],
|
|
footerToolbar: [
|
|
paginationOption(),
|
|
],
|
|
columns: [
|
|
{
|
|
name: 'sequence',
|
|
label: '行号',
|
|
width: 50,
|
|
},
|
|
{
|
|
name: 'text',
|
|
label: '内容',
|
|
quickEdit: {
|
|
saveImmediately: true,
|
|
resetOnFailed: true,
|
|
type: 'textarea',
|
|
showCounter: true,
|
|
trimContents: true,
|
|
minRows: 10,
|
|
maxRows: 10,
|
|
},
|
|
},
|
|
{
|
|
type: 'operation',
|
|
label: '操作',
|
|
fixed: 'right',
|
|
className: 'nowrap',
|
|
width: 100,
|
|
buttons: [
|
|
{
|
|
type: 'action',
|
|
label: '处理',
|
|
actionType: 'dialog',
|
|
dialog: {
|
|
title: '文本处理',
|
|
size: 'lg',
|
|
body: {
|
|
debug: true,
|
|
type: 'form',
|
|
canAccessSuperData: false,
|
|
initApi: '${base}/line/detail/${lineId}',
|
|
api: '${base}/line/save/${chapterId}',
|
|
body: [
|
|
{
|
|
type: 'hidden',
|
|
name: 'lineId',
|
|
},
|
|
{
|
|
type: 'textarea',
|
|
name: 'text',
|
|
label: '正文',
|
|
...formInputClearable(),
|
|
showCounter: true,
|
|
trimContents: true,
|
|
minRows: 5,
|
|
maxRows: 5,
|
|
},
|
|
{
|
|
type: 'textarea',
|
|
name: 'newText',
|
|
label: '优化后正文',
|
|
...formInputClearable(),
|
|
showCounter: true,
|
|
trimContents: true,
|
|
minRows: 5,
|
|
maxRows: 5,
|
|
},
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
type: 'action',
|
|
label: '删除',
|
|
level: 'danger',
|
|
confirmTitle: '确认删除',
|
|
confirmText: '确认删除当前行吗?',
|
|
actionType: 'ajax',
|
|
api: 'get:${base}/line/remove/${lineId}',
|
|
},
|
|
]
|
|
}
|
|
],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
type: 'action',
|
|
label: '删除',
|
|
level: 'danger',
|
|
confirmTitle: '确认删除',
|
|
confirmText: '确认删除名称为「${name}」的章节吗?',
|
|
actionType: 'ajax',
|
|
api: 'get:${base}/chapter/remove/${chapterId}',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
},
|
|
{
|
|
type: 'action',
|
|
label: '删除',
|
|
level: 'danger',
|
|
confirmTitle: '确认删除',
|
|
confirmText: '确认删除名称为「${name}」的书籍吗?',
|
|
actionType: 'ajax',
|
|
api: 'get:${base}/book/remove/${bookId}',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|
|
amis.embed(
|
|
'#root',
|
|
amisJSON,
|
|
{
|
|
data: {
|
|
base: 'http://127.0.0.1:23890',
|
|
},
|
|
},
|
|
{
|
|
theme: 'antd',
|
|
enableAMISDebug: debug,
|
|
},
|
|
);
|
|
if (debug) {
|
|
console.log('Source', amisJSON)
|
|
}
|
|
})()
|
|
</script>
|
|
</html> |