Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
projecttwo
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangtao
projecttwo
Commits
f7bce4d9
Commit
f7bce4d9
authored
Apr 27, 2025
by
wangtao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加后台文章管理
parent
8e245f63
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1420 additions
and
195 deletions
+1420
-195
Article.php
app/admin/controller/Article.php
+64
-24
ArticleCategory.php
app/admin/controller/ArticleCategory.php
+106
-0
ArticleValidate.php
app/admin/validate/ArticleValidate.php
+23
-0
edit.html
app/admin/view/article/edit.html
+12
-10
index.html
app/admin/view/article/index.html
+81
-80
edit.html
app/admin/view/article_category/edit.html
+83
-0
index.html
app/admin/view/article_category/index.html
+138
-0
header.html
app/admin/view/base/header.html
+3
-1
main.html
app/admin/view/index/main.html
+33
-32
common.php
app/common.php
+1
-1
ArticleCategoryModel.php
app/model/ArticleCategoryModel.php
+55
-0
buildItems.js
public/static/admin/module/buildItems/buildItems.js
+82
-47
buildItems11.js
public/static/admin/module/buildItems/buildItems11.js
+739
-0
No files found.
app/admin/controller/Article.php
View file @
f7bce4d9
...
@@ -10,13 +10,13 @@
...
@@ -10,13 +10,13 @@
namespace
app\admin\controller
;
namespace
app\admin\controller
;
use
app\model\system\SystemDict
as
Dict
;
use
app\model\system\SystemMenus
as
Menus
;
use
app\model\ArticleCategoryModel
;
use
app\model\system\SystemCategory
as
Category
;
use
think\App
;
use
think\App
;
use
think\facade\Db
;
use
think\facade\Db
;
use
app\model\ArticleModel
;
use
app\model\ArticleModel
;
use
tool\Tree
;
use
app\admin\validate\ArticleValidate
;
/**
/**
* 后台主控制器
* 后台主控制器
*/
*/
...
@@ -34,49 +34,89 @@ class Article extends AdminBase
...
@@ -34,49 +34,89 @@ class Article extends AdminBase
}
}
//文章列表
//文章列表
public
function
index
(
string
$do
=
''
)
public
function
index
(
string
$do
=
''
)
{
{
$limit
=
10
;
$limit
=
10
;
if
(
$do
==
'json'
)
{
if
(
$do
==
'json'
)
{
$post
=
input
();
$post
=
input
();
$post
[
'page'
]
=
isset
(
$post
[
'page'
])
?
$post
[
'page'
]
:
1
;
$post
[
'limit'
]
=
isset
(
$post
[
'limit'
])
?
$post
[
'limit'
]
:
$limit
;
$post
[
'limit'
]
=
isset
(
$post
[
'limit'
])
?
$post
[
'limit'
]
:
$limit
;
$map
[]
=
[
'is_del'
,
'='
,
0
];
$map
[]
=
[
'is_del'
,
'='
,
0
];
$list
=
$this
->
article
->
where
(
$map
)
->
page
(
$post
[
'page'
],
$post
[
'limit'
])
->
select
()
->
append
([
'cate_name'
,
'adminname'
])
->
toArray
();
if
(
isset
(
$post
[
'kw'
])
&&
!
empty
(
$post
[
'kw'
]))
{
$map
[]
=
[
'title'
,
'like'
,
'%'
.
$post
[
'kw'
]
.
'%'
];
}
if
(
isset
(
$post
[
'cate_id'
])
&&
!
empty
(
$post
[
'cate_id'
]))
{
$map
[]
=
[
'cate_id'
,
'='
,
$post
[
'cate_id'
]];
}
$list
=
$this
->
article
->
where
(
$map
)
->
append
([
'cate_name'
,
'adminname'
])
->
paginate
(
$post
[
'limit'
]);
return
$this
->
returnMsg
(
''
,
0
,
$list
);
return
$this
->
returnMsg
(
$list
);
}
}
$category
=
Db
::
name
(
'article_category'
)
->
field
(
'*,pid as parentid'
)
->
order
(
'sort desc'
)
->
select
()
->
toArray
();
$category
=
ArticleCategoryModel
::
field
(
'*,pid as parentid'
)
->
order
(
'sort desc'
)
->
select
()
->
toArray
();
$this
->
assign
(
'category'
,
json_encode
(
$category
));
$this
->
assign
(
'category'
,
json_encode
(
$category
));
$this
->
assign
(
'limit'
,
$limit
);
$this
->
assign
(
'limit'
,
$limit
);
return
$this
->
fetch
(
''
,
''
,
false
);
return
$this
->
fetch
(
''
,
''
,
false
);
}
}
//快速编辑
public
function
editup
()
{
$post
=
input
();
$this
->
article
->
update
([
$post
[
'af'
]
=>
$post
[
'av'
]],
[[
'id'
,
'='
,
$post
[
'id'
]]]);
return
$this
->
returnMsg
(
'修改成功'
);
}
//编辑新增文章
//编辑新增文章
public
function
edit
()
public
function
edit
()
{
{
$post
=
input
();
if
(
$this
->
request
->
isPost
())
{
if
(
$this
->
request
->
isPost
()){
$check
=
(
new
ArticleValidate
())
->
goCheck
();
if
(
$check
!==
true
)
{
return
$check
;
}
$post
=
input
();
try
{
print_r
(
$post
);
exit
;
$post
[
'admin_id'
]
=
session
(
VT_MANAGER
)[
'userid'
];
$post
[
'createtime'
]
=
time
();
$post
[
'updatetime'
]
=
time
();
if
(
$post
[
'id'
]
>
0
)
{
$msg
=
'更新成功'
;
$this
->
article
->
update
(
$post
,
[
'id'
=>
$post
[
'id'
]]);
}
else
{
unset
(
$post
[
'id'
]);
$msg
=
'添加成功'
;
$this
->
article
->
save
(
$post
);
}
}
$category
=
Db
::
name
(
'article_category'
)
->
order
(
'sort desc'
)
->
select
()
->
toArray
();
}
catch
(
\Exception
$e
)
{
$tree
=
new
Tree
();
$tree
->
icon
=
[
' │ '
,
' ├─ '
,
' └─ '
];
return
$this
->
returnMsg
(
$e
->
getMessage
(),
0
);
$tree
->
nbsp
=
' '
;
}
$str
=
"<option value=@id @selected @disabled>@spacer @title</option>"
;
$tree
->
init
(
$category
);
return
$this
->
returnMsg
(
$msg
,
1
);
$categorydata
=
$tree
->
getTree
(
0
,
$str
,
0
);
}
$data
=
$this
->
article
->
find
(
$post
[
'id'
]);
$catemodel
=
new
ArticleCategoryModel
();
$categorydata
=
$catemodel
->
catetree
(
isset
(
$data
[
'cate_id'
])
?
$data
[
'cate_id'
]
:
0
);
$this
->
assign
(
'categorydata'
,
$categorydata
);
$this
->
assign
(
'categorydata'
,
$categorydata
);
$this
->
assign
(
'data'
,
$data
);
return
$this
->
fetch
(
''
,
''
,
false
);
return
$this
->
fetch
(
''
,
''
,
false
);
}
}
public
function
maind
()
public
function
del
()
{
{
$post
=
input
();
return
$this
->
fetch
(
''
,
''
,
false
);
$ids
=
is_array
(
$post
[
'id'
])
?
implode
(
','
,
$post
[
'id'
])
:
$post
[
'id'
];
if
(
$this
->
article
->
where
(
"id IN("
.
$ids
.
")"
)
->
update
([
'is_del'
=>
1
]))
{
return
$this
->
returnMsg
(
"删除成功"
,
1
);
}
else
{
return
$this
->
returnMsg
(
"删除失败"
);
}
}
}
...
...
app/admin/controller/ArticleCategory.php
0 → 100644
View file @
f7bce4d9
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace
app\admin\controller
;
use
app\model\ArticleCategoryModel
;
use
think\App
;
use
think\facade\Db
;
use
think\facade\Validate
;
/**
* 后台主控制器
*/
class
ArticleCategory
extends
AdminBase
{
protected
$articlecategory
;
public
function
__construct
(
App
$app
)
{
parent
::
__construct
(
$app
);
$this
->
articlecategory
=
new
ArticleCategoryModel
();
}
//分类列表
public
function
index
(
string
$do
=
''
)
{
if
(
$do
==
'json'
)
{
$list
=
$this
->
articlecategory
->
list
();
return
$this
->
returnMsg
(
''
,
0
,
$list
);
}
return
$this
->
fetch
(
''
,
''
,
false
);
}
//快速编辑
public
function
editup
()
{
$post
=
input
();
$this
->
articlecategory
->
update
([
$post
[
'af'
]
=>
$post
[
'av'
]],
[[
'id'
,
'='
,
$post
[
'id'
]]]);
return
$this
->
returnMsg
(
'修改成功'
);
}
//编辑新增分类
public
function
edit
()
{
$post
=
input
();
if
(
$this
->
request
->
isPost
())
{
$validate
=
Validate
::
rule
([
'title'
=>
'require'
])
->
message
([
'title.require'
=>
'分类名称不能为空'
,
]);
if
(
!
$validate
->
check
(
$post
))
{
return
$this
->
returnMsg
(
$validate
->
getError
(),
0
);
}
try
{
$post
[
'createtime'
]
=
time
();
if
(
$post
[
'id'
]
>
0
)
{
$msg
=
'更新成功'
;
$this
->
articlecategory
->
update
(
$post
,
[
'id'
=>
$post
[
'id'
]]);
}
else
{
unset
(
$post
[
'id'
]);
$msg
=
'添加成功'
;
$this
->
articlecategory
->
save
(
$post
);
}
}
catch
(
\Exception
$e
)
{
return
$this
->
returnMsg
(
$e
->
getMessage
(),
0
);
}
return
$this
->
returnMsg
(
$msg
,
1
);
}
$data
=
Db
::
name
(
'article_category'
)
->
where
(
'id'
,
$post
[
'id'
])
->
find
();
$categorydata
=
$this
->
articlecategory
->
catetree
(
isset
(
$data
[
'pid'
])
?
$data
[
'pid'
]
:
0
);
$this
->
assign
(
'categorydata'
,
$categorydata
);
$this
->
assign
(
'data'
,
$data
);
return
$this
->
fetch
(
''
,
''
,
false
);
}
public
function
del
()
{
$post
=
input
();
$ids
=
is_array
(
$post
[
'id'
])
?
implode
(
','
,
$post
[
'id'
])
:
$post
[
'id'
];
if
(
$this
->
articlecategory
->
where
(
"id IN("
.
$ids
.
")"
)
->
update
([
'is_del'
=>
1
]))
{
return
$this
->
returnMsg
(
"删除成功"
,
1
);
}
else
{
return
$this
->
returnMsg
(
"删除失败"
);
}
}
}
\ No newline at end of file
app/admin/validate/ArticleValidate.php
0 → 100644
View file @
f7bce4d9
<?php
namespace
app\admin\validate
;
use
think\Validate
;
use
app\api\validate\BaseValidate
;
class
ArticleValidate
extends
BaseValidate
{
protected
$rule
=
[
'title'
=>
'require'
,
'cate_id'
=>
'require'
,
'thumb'
=>
'require'
,
];
protected
$message
=
[
'title.require'
=>
'文章标题不能为空'
,
'cate_id.require'
=>
'请选择分类'
,
'thumb.require'
=>
'请上传图片'
,
];
}
\ No newline at end of file
app/admin/view/article/edit.html
View file @
f7bce4d9
{extend name="base/header" /}
{extend name="base/header" /}
{block name="body"}
{block name="body"}
<div
style=
"margin: 0px 10px"
>
<div
style=
"margin: 0px 10px"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
id=
"fjfrom"
>
<div
class=
"layui-form-item"
>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
选择分类
</label>
<label
class=
"layui-form-label"
>
选择分类
</label>
<div
class=
"layui-input-block"
>
<div
class=
"layui-input-block"
>
<select
name=
"cate_id"
>
<select
name=
"cate_id"
>
<option
value=
"
0
"
>
请选择分类
</option>
<option
value=
""
>
请选择分类
</option>
{:$categorydata}
{:$categorydata}
</select>
</select>
</div>
</div>
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
<div
class=
"layui-form-item"
>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
文章标题
</label>
<label
class=
"layui-form-label"
>
文章标题
</label>
<div
class=
"layui-input-block"
>
<div
class=
"layui-input-block"
>
<input
type=
"text"
name=
"title"
placeholder=
"请输入标题"
autocomplete=
"off"
class=
"layui-input"
>
<input
type=
"text"
name=
"title"
placeholder=
"请输入标题"
autocomplete=
"off"
class=
"layui-input"
value=
"{$data.title|default=''}"
>
</div>
</div>
</div>
</div>
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
<label
class=
"layui-form-label"
>
文章简介
</label>
<label
class=
"layui-form-label"
>
文章简介
</label>
<div
class=
"layui-input-block"
>
<div
class=
"layui-input-block"
>
<textarea
placeholder=
"请输入文章简介"
name=
"description"
class=
"layui-textarea"
></textarea>
<textarea
placeholder=
"请输入文章简介"
name=
"description"
class=
"layui-textarea"
>
{$data.description|default=''}
</textarea>
</div>
</div>
</div>
</div>
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
<label
class=
"layui-form-label"
>
阅读量
</label>
<label
class=
"layui-form-label"
>
阅读量
</label>
<div
class=
"layui-input-block"
>
<div
class=
"layui-input-block"
>
<input
type=
"text"
name=
"click"
placeholder=
"请输入阅读量"
autocomplete=
"off"
class=
"layui-input"
<input
type=
"text"
name=
"click"
placeholder=
"请输入阅读量"
autocomplete=
"off"
class=
"layui-input"
value=
"
0
"
>
value=
"
{$data.click|default=''}
"
>
</div>
</div>
</div>
</div>
...
@@ -49,21 +49,23 @@
...
@@ -49,21 +49,23 @@
</div>
</div>
<input
type=
"hidden"
name=
"id"
value=
"{$data.id|default=0}"
>
</form>
</form>
</div>
</div>
{/block}
{/block}
{block name="script"}
{block name="script"}
<script
type=
"text/javascript"
>
<script
type=
"text/javascript"
>
layui
.
use
([
'buildItems'
,
'form'
,
'laydate'
,
'util'
],
function
()
{
layui
.
use
([
'buildItems'
,
'form'
,
'laydate'
,
'util'
],
function
()
{
var
form
=
layui
.
form
;
/*解析顶部分组选项*/
/*解析顶部分组选项*/
var
str
=
[{
var
str
=
[{
"name"
:
"thumb"
,
"name"
:
"thumb"
,
"title"
:
"上传图片"
,
"title"
:
"上传图片"
,
"value"
:
""
,
"value"
:
"
{$data.thumb|default=''}
"
,
"type"
:
"imagewt"
"type"
:
"imagewt"
}];
}];
layui
.
buildItems
.
build
({
layui
.
buildItems
.
build
({
fjbid
:
'fjfrom'
,
bid
:
'thumbup'
,
bid
:
'thumbup'
,
url
:
''
,
url
:
''
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
...
@@ -74,11 +76,12 @@
...
@@ -74,11 +76,12 @@
var
str
=
[{
var
str
=
[{
"name"
:
"content"
,
"name"
:
"content"
,
"title"
:
"文章内容"
,
"title"
:
"文章内容"
,
"value"
:
""
,
"value"
:
"
{$data.content|default=''}
"
,
"type"
:
"ueditor"
,
"type"
:
"ueditor"
,
"style"
:
"height:500px"
,
"style"
:
"height:500px"
,
}];
}];
layui
.
buildItems
.
build
({
layui
.
buildItems
.
build
({
fjbid
:
'fjfrom'
,
bid
:
'contentup'
,
bid
:
'contentup'
,
url
:
''
,
url
:
''
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
...
@@ -86,7 +89,7 @@
...
@@ -86,7 +89,7 @@
data
:
str
data
:
str
});
});
var
form
=
layui
.
form
;
layui
.
buildItems
.
init
()
;
form
.
render
();
form
.
render
();
...
@@ -94,7 +97,6 @@
...
@@ -94,7 +97,6 @@
var
callbackdata
=
function
()
{
var
callbackdata
=
function
()
{
var
data
=
$
(
".layui-form"
).
serialize
();
var
data
=
$
(
".layui-form"
).
serialize
();
return
data
;
return
data
;
};
};
...
...
app/admin/view/article/index.html
View file @
f7bce4d9
<style>
#organizationTreeBar
{
padding
:
10px
15px
;
border
:
1px
solid
#e6e6e6
;
background-color
:
#f2f2f2
}
<div
class=
"layui-fluid"
>
#organizationTree
{
border
:
1px
solid
#e6e6e6
;
border-top
:
none
;
padding
:
10px
5px
;
overflow
:
auto
;
height
:
-webkit-calc
(
100vh
-
260px
);
height
:
-moz-calc
(
100vh
-
260px
);
height
:
calc
(
100vh
-
260px
)}
<style>
#articlecategoryTreeBar
{
padding
:
10px
15px
;
border
:
1px
solid
#e6e6e6
;
background-color
:
#f2f2f2
}
#articlecategoryTree
{
border
:
1px
solid
#e6e6e6
;
border-top
:
none
;
padding
:
10px
5px
;
overflow
:
auto
;
height
:
-webkit-calc
(
100vh
-
260px
);
height
:
-moz-calc
(
100vh
-
260px
);
height
:
calc
(
100vh
-
260px
)}
.layui-tree-entry
.layui-tree-txt
{
padding
:
0
5px
;
border
:
1px
transparent
solid
;
text-decoration
:
none
!important
}
.layui-tree-entry
.layui-tree-txt
{
padding
:
0
5px
;
border
:
1px
transparent
solid
;
text-decoration
:
none
!important
}
.layui-tree-entry.organ-tree-click
.layui-tree-txt
{
background-color
:
#fff3e0
;
border
:
1px
#ffe6b0
solid
}
.layui-tree-entry.organ-tree-click
.layui-tree-txt
{
background-color
:
#fff3e0
;
border
:
1px
#ffe6b0
solid
}
.files_item
{
width
:
30px
;
height
:
30px
;
line-height
:
30px
;
cursor
:
pointer
;
padding
:
1px
;
border
:
1px
solid
#ddd
;
background
:
#fff
;
display
:
-webkit-box
;
-moz-box-align
:
center
;
-webkit-box-align
:
center
;
-moz-box-pack
:
center
;
-webkit-box-pack
:
center
;}
.files_itemw
{
width
:
30px
;
height
:
30px
;
line-height
:
30px
;
cursor
:
pointer
;
padding
:
1px
;
background
:
#fff
;
display
:
-webkit-box
;
-moz-box-align
:
center
;
-webkit-box-align
:
center
;
-moz-box-pack
:
center
;
-webkit-box-pack
:
center
;}
.files_item
img
{
max-width
:
28px
;
max-height
:
28px
;
border
:
0
}
.files_itemw
img
{
max-width
:
28px
;
max-height
:
28px
;
border
:
0
}
</style>
</style>
<div
class=
"layui-fluid"
>
<div
class=
"layui-row layui-col-space15"
>
<div
class=
"layui-row layui-col-space15"
>
<div
class=
"layui-col-md2"
>
<div
class=
"layui-col-md2"
>
<div
class=
"layui-card"
>
<div
class=
"layui-card"
>
...
@@ -14,7 +16,7 @@
...
@@ -14,7 +16,7 @@
<!-- 树工具栏 -->
<!-- 树工具栏 -->
<!-- 左树 -->
<!-- 左树 -->
<div
id=
"
organization
Tree"
></div>
<div
id=
"
articlecategory
Tree"
></div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -22,40 +24,35 @@
...
@@ -22,40 +24,35 @@
<div
class=
"layui-card"
>
<div
class=
"layui-card"
>
<div
class=
"layui-card-header"
>
<div
class=
"layui-card-header"
>
<form
class=
"layui-form render"
>
<form
class=
"layui-form render"
>
<input
type=
"hidden"
name=
"groupid"
id=
"
manager
-groupid"
value=
""
/>
<input
type=
"hidden"
name=
"groupid"
id=
"
article
-groupid"
value=
""
/>
<div
class=
"layui-form-item"
>
<div
class=
"layui-form-item"
>
<div
class=
"layui-inline"
style=
"width:72px;"
>
<select
name=
"fields"
>
<div
class=
"layui-inline"
style=
"width:250px;"
><input
type=
"text"
name=
"kw"
placeholder=
"文章标题关键词"
autocomplete=
"off"
class=
"layui-input"
lay-affix=
"clear"
/></div>
<option
value=
""
>
属性
</option>
<option
value=
"0"
>
帐号
</option>
<option
value=
"1"
>
姓名
</option>
<option
value=
"2"
>
电话
</option>
<option
value=
"3"
>
IP
</option>
</select>
</div>
<div
class=
"layui-inline"
style=
"width:150px;"
><input
type=
"text"
name=
"kw"
placeholder=
"关键词"
autocomplete=
"off"
class=
"layui-input"
lay-affix=
"clear"
/></div>
<div
class=
"layui-inline"
style=
"width:200px;"
><input
type=
"text"
name=
"sotime"
date-render
placeholder=
"登录时间"
class=
"layui-input"
lay-affix=
"clear"
/></div>
<div
class=
"layui-inline"
style=
"width:110px;"
><select
name=
"roleid"
id=
"search_roles_select"
></select></div>
<div
class=
"layui-inline"
>
<div
class=
"layui-inline"
>
<div
class=
"layui-btn-group"
>
<div
class=
"layui-btn-group"
>
<button
class=
"layui-btn"
lay-submit
lay-filter=
"search-manager"
><i
class=
"layui-icon layui-icon-search"
></i>
搜索
</button>
<button
class=
"layui-btn"
lay-submit
lay-filter=
"search-article"
><i
class=
"layui-icon layui-icon-search"
></i>
搜索
</button>
<a
class=
"layui-btn"
lay-submit
lay-filter=
"search-manager-all"
onclick=
"$('#manager-groupid').val('')"
><i
class=
"layui-icon layui-icon-light"
></i>
全部
</a>
<a
class=
"layui-btn"
lay-submit
lay-filter=
"search-article-all"
onclick=
"$('#article-groupid').val('')"
><i
class=
"layui-icon layui-icon-light"
></i>
全部
</a>
<a
class=
"layui-btn"
id=
"article-add"
><i
class=
"layui-icon layui-icon-add-circle"
></i>
添加
</a>
<a
class=
"layui-btn"
id=
"article-del"
><i
class=
"layui-icon layui-icon-delete"
></i>
删除
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</form>
</div>
</div>
<div
class=
"layui-card-body"
>
<div
class=
"layui-card-body"
>
<div
class=
"layui-card-box"
>
<!-- <div class="layui-card-box">--
>
<div
class=
"layui-btn-group"
>
<!-- <div class="layui-btn-group">--
>
<a
class=
"layui-btn"
id=
"manager-add"
v-show=
"@system.manager/add"
><i
class=
"layui-icon layui-icon-add-circle"
></i>
添加
</a
>
<!-- <a class="layui-btn" id="article-add" ><i class="layui-icon layui-icon-add-circle"></i> 添加</a>--
>
<a
class=
"layui-btn"
id=
"manager-del"
v-show=
"@system.manager/del"
><i
class=
"layui-icon layui-icon-delete"
></i>
删除
</a
>
<!-- <a class="layui-btn" id="article-del"><i class="layui-icon layui-icon-delete"></i> 删除</a>--
>
</div
>
<!-- </div>--
>
</div
>
<!-- </div>--
>
<div
class=
"layui-card-body"
>
<div
class=
"layui-card-body"
>
<table
lay-filter=
"
manager"
id=
"manager
"
></table>
<table
lay-filter=
"
article"
id=
"article
"
></table>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -78,18 +75,18 @@
...
@@ -78,18 +75,18 @@
function
doTree
(
data
,
load
){
function
doTree
(
data
,
load
){
layui
.
tree
.
render
({
layui
.
tree
.
render
({
id
:
'organTree'
,
id
:
'organTree'
,
elem
:
'#
organization
Tree'
,
elem
:
'#
articlecategory
Tree'
,
data
:
data
,
data
:
data
,
onlyIconControl
:
true
,
onlyIconControl
:
true
,
click
:
function
(
obj
){
click
:
function
(
obj
){
$
(
'#
organization
Tree'
).
find
(
'.organ-tree-click'
).
removeClass
(
'organ-tree-click'
);
$
(
'#
articlecategory
Tree'
).
find
(
'.organ-tree-click'
).
removeClass
(
'organ-tree-click'
);
$
(
obj
.
elem
).
children
(
'.layui-tree-entry'
).
addClass
(
'organ-tree-click'
);
$
(
obj
.
elem
).
children
(
'.layui-tree-entry'
).
addClass
(
'organ-tree-click'
);
organObj
=
obj
.
data
;
organObj
=
obj
.
data
;
$
(
'#
manager
-groupid'
).
val
(
obj
.
data
.
id
);
$
(
'#
article
-groupid'
).
val
(
obj
.
data
.
id
);
table
.
reloadData
(
'
manager'
,{
where
:{
group
id
:
obj
.
data
.
id
},
page
:{
curr
:
1
}});
table
.
reloadData
(
'
article'
,{
where
:{
cate_
id
:
obj
.
data
.
id
},
page
:{
curr
:
1
}});
}
}
});
});
var
item
=
$
(
'#
organization
Tree .layui-tree-entry:first'
);
var
item
=
$
(
'#
articlecategory
Tree .layui-tree-entry:first'
);
load
?
item
.
find
(
'.layui-tree-main>.layui-tree-txt'
).
trigger
(
'click'
)
:
item
.
addClass
(
'organ-tree-click'
);
load
?
item
.
find
(
'.layui-tree-main>.layui-tree-txt'
).
trigger
(
'click'
)
:
item
.
addClass
(
'organ-tree-click'
);
}
}
/*初始渲染*/
/*初始渲染*/
...
@@ -98,48 +95,40 @@
...
@@ -98,48 +95,40 @@
/*渲染数据*/
/*渲染数据*/
table
.
render
({
table
.
render
({
elem
:
'#
manager
'
,
elem
:
'#
article
'
,
page
:
true
,
page
:
true
,
limit
:{
$limit
},
limit
:{
$limit
},
url
:
app_root
+
"index?&do=json"
,
url
:
app_root
+
"index?&do=json"
,
cols
:
[[
cols
:
[[
{
type
:
'checkbox'
,
fixed
:
'left'
},
{
type
:
'checkbox'
,
fixed
:
'left'
},
{
field
:
'id'
,
width
:
50
,
unresize
:
true
,
align
:
'center'
,
title
:
'ID'
,
sort
:
!
0
},
{
field
:
'id'
,
width
:
50
,
unresize
:
true
,
align
:
'center'
,
title
:
'ID'
,
sort
:
!
0
},
{
field
:
'thumb'
,
width
:
80
,
height
:
80
,
align
:
'center'
,
title
:
'缩略图'
,
templet
:
'<div class="files_item"><img src="{{d.thumb}}" lay-event="article-event-image" /></div>'
},
{
field
:
'thumb'
,
width
:
80
,
height
:
80
,
align
:
'center'
,
title
:
'缩略图'
,
templet
:
'<div class="files_item
w
"><img src="{{d.thumb}}" lay-event="article-event-image" /></div>'
},
{
field
:
'title'
,
align
:
'center'
,
title
:
'标题'
,
edit
:
'text'
},
{
field
:
'title'
,
align
:
'center'
,
title
:
'标题'
,
edit
:
'text'
},
{
field
:
'cate_name'
,
width
:
1
0
0
,
align
:
'center'
,
title
:
'类别'
},
{
field
:
'cate_name'
,
width
:
1
2
0
,
align
:
'center'
,
title
:
'类别'
},
{
field
:
'createtime'
,
width
:
1
0
0
,
align
:
'center'
,
title
:
'发布时间'
},
{
field
:
'createtime'
,
width
:
1
2
0
,
align
:
'center'
,
title
:
'发布时间'
},
{
field
:
'click'
,
width
:
50
,
align
:
'center'
,
title
:
'阅读'
},
{
field
:
'click'
,
width
:
50
,
align
:
'center'
,
title
:
'阅读'
,
edit
:
'text'
},
{
field
:
'sort'
,
width
:
50
,
align
:
'center'
,
title
:
'排序'
},
{
field
:
'sort'
,
width
:
50
,
align
:
'center'
,
title
:
'排序'
,
edit
:
'text'
},
{
field
:
"adminname"
,
width
:
68
,
align
:
'center'
,
title
:
"编辑"
},
{
field
:
"adminname"
,
width
:
80
,
align
:
'center'
,
title
:
"编辑"
},
{
fixed
:
'right'
,
width
:
130
,
align
:
'center'
,
toolbar
:
'<div><a class="layui-btn layui-btn-xs"
v-show="@system.manager/edit" lay-event="edit">编辑</a><a class="layui-btn layui-btn-xs layui-btn-danger" v-show="@system.manager/del"
lay-event="del">删除</a></div>'
,
title
:
'操作'
}
{
fixed
:
'right'
,
width
:
130
,
align
:
'center'
,
toolbar
:
'<div><a class="layui-btn layui-btn-xs"
lay-event="edit">编辑</a><a class="layui-btn layui-btn-xs layui-btn-danger"
lay-event="del">删除</a></div>'
,
title
:
'操作'
}
]],
]],
done
:
function
(){
admin
.
vShow
(
$
(
'[lay-table-id="
manager
"]'
));
}
done
:
function
(){
admin
.
vShow
(
$
(
'[lay-table-id="
article
"]'
));
}
});
});
/*快编监听*/
/*快编监听*/
table
.
on
(
'edit(
manager
)'
,
function
(
obj
){
table
.
on
(
'edit(
article
)'
,
function
(
obj
){
admin
.
req
(
app_root
+
"edit
?do=up"
,{
userid
:
obj
.
data
.
user
id
,
av
:
obj
.
value
,
af
:
obj
.
field
},
function
(
res
){
admin
.
req
(
app_root
+
"edit
up"
,{
id
:
obj
.
data
.
id
,
av
:
obj
.
value
,
af
:
obj
.
field
},
function
(
res
){
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
500
});
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
500
});
},
'post'
,{
headersToken
:
true
});
},
'post'
,{
headersToken
:
true
});
});
/**/
});
/**/
/*状态*/
form
.
on
(
'switch(manager-chang)'
,
function
(
obj
){
var
json
=
JSON
.
parse
(
decodeURIComponent
(
$
(
this
).
data
(
'json'
)));
var
av
=
obj
.
elem
.
checked
?
1
:
0
;
admin
.
req
(
app_root
+
"edit?do=up"
,{
userid
:
json
.
userid
,
av
:
av
,
af
:
obj
.
elem
.
name
},
function
(
res
){
layer
.
tips
(
res
.
msg
,
obj
.
othis
,{
time
:
1000
});
if
(
res
.
code
===
0
)
obj
.
elem
.
checked
=
parseInt
(
obj
.
value
);
},
'post'
,{
headersToken
:
true
});
});
/**/
/*工具条监听*/
/*工具条监听*/
table
.
on
(
'tool(
manager
)'
,
function
(
obj
){
table
.
on
(
'tool(
article
)'
,
function
(
obj
){
var
data
=
obj
.
data
;
var
data
=
obj
.
data
;
var
userid
=
data
.
user
id
;
var
id
=
data
.
id
;
if
(
obj
.
event
===
'edit'
){
if
(
obj
.
event
===
'edit'
){
managerOpen
(
data
);
articleOpen
(
data
.
id
);
}
else
if
(
obj
.
event
===
'del'
){
}
else
if
(
obj
.
event
===
'del'
){
del
(
user
id
);
del
(
id
);
}
else
if
(
obj
.
event
===
'article-event-image'
){
}
else
if
(
obj
.
event
===
'article-event-image'
){
var
src
=
$
(
this
).
attr
(
'src'
),
alt
=
$
(
this
).
attr
(
'alt'
);
var
src
=
$
(
this
).
attr
(
'src'
),
alt
=
$
(
this
).
attr
(
'alt'
);
layer
.
photos
({
photos
:{
data
:[{
alt
:
alt
,
src
:
src
}],
start
:
'0'
},
anim
:
5
,
shade
:[
0.4
,
'#000'
]});
layer
.
photos
({
photos
:{
data
:[{
alt
:
alt
,
src
:
src
}],
start
:
'0'
},
anim
:
5
,
shade
:[
0.4
,
'#000'
]});
...
@@ -148,48 +137,60 @@
...
@@ -148,48 +137,60 @@
/*删除*/
/*删除*/
function
del
(
ids
){
function
del
(
ids
){
layer
.
confirm
(
'确定要删除所选文章吗?'
,
function
(){
layer
.
confirm
(
'确定要删除所选文章吗?'
,
function
(){
admin
.
req
(
app_root
+
"del"
,{
user
id
:
ids
},
function
(
res
){
admin
.
req
(
app_root
+
"del"
,{
id
:
ids
},
function
(
res
){
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
if
(
res
.
code
==
1
)
table
.
reloadData
(
'
manager
'
);
if
(
res
.
code
==
1
)
table
.
reloadData
(
'
article
'
);
});
});
},
'post'
,{
headersToken
:
true
});
},
'post'
,{
headersToken
:
true
});
});
});
}
/**/
}
/**/
$
(
'#manager-add'
).
on
(
'click'
,
function
(){
managerOpen
();});
/**/
/*顶部删除按钮*/
$
(
'#article-del'
).
on
(
'click'
,
function
(){
var
checkRows
=
table
.
checkStatus
(
'article'
).
data
;
if
(
checkRows
.
length
===
0
){
return
layer
.
msg
(
'请选择需删除的文章'
);}
var
ids
=
checkRows
.
map
(
function
(
d
){
return
d
.
id
;});
console
.
log
(
ids
);
del
(
ids
);
});
/**/
$
(
'#article-add'
).
on
(
'click'
,
function
(){
articleOpen
();});
/**/
/*弹出窗*/
/*弹出窗*/
function
managerOpen
(){
function
articleOpen
(
id
=
''
){
if
(
id
>
0
){
var
title
=
'编辑文章'
;
}
else
{
var
title
=
'添加文章'
;
}
layer
.
open
({
layer
.
open
({
type
:
2
,
type
:
2
,
area
:
[
'900px'
,
'900px'
],
area
:
[
'900px'
,
'900px'
],
title
:
'添加文章'
,
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
fixed
:
false
,
//不固定
content
:
'/admin/article/edit
'
,
content
:
'/admin/article/edit
?id='
+
id
,
yes
:
function
(
index
,
layero
){
yes
:
function
(
index
,
layero
){
// var data = window["layui-layer-iframe" + index].callbackdata();
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
var
data
=
window
[
"layui-layer-iframe"
+
index
];
var
form
=
data
.
find
(
".layui-form"
);
var
formData
=
new
FormData
(
form
[
0
]);
$
.
ajax
({
$
.
ajax
({
method
:
"post"
,
method
:
"post"
,
url
:
layui
.
cache
.
maps
+
'/article/edit'
,
url
:
layui
.
cache
.
maps
+
'/article/edit'
,
data
:
formData
,
data
:
data
,
processData
:
false
,
contentType
:
false
,
dataType
:
"json"
,
dataType
:
"json"
,
success
:
function
(
res
){
success
:
function
(
res
){
if
(
res
.
code
==
1
)
{
if
(
res
.
code
===
1
)
{
layer
.
msg
(
res
.
msg
,{
icon
:
1
,
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
layer
.
close
(
index
);
table
.
reloadData
(
'article'
);
});
}
else
{
}
else
{
// layer.msg(res.msg,{icon:2,shade:[0.4,'#000'],time:1500});
layer
.
msg
(
res
.
msg
,{
icon
:
2
,
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
});
}
}
layer
.
close
(
loadIndex
);
// layer.closeAll();
}
}
});
});
},
},
});
});
}
/**/
}
/**/
...
...
app/admin/view/article_category/edit.html
0 → 100644
View file @
f7bce4d9
{extend name="base/header" /}
{block name="body"}
<div
style=
"margin: 0px 10px"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
id=
"fjfrom"
>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
上级分类
</label>
<div
class=
"layui-input-block"
>
<select
name=
"pid"
>
<option
value=
""
>
请选择分类
</option>
{:$categorydata}
</select>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
分类名称
</label>
<div
class=
"layui-input-block"
>
<input
type=
"text"
name=
"title"
placeholder=
"请输入分类名称"
autocomplete=
"off"
class=
"layui-input"
value=
"{$data.title|default=''}"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
类型
</label>
<div
class=
"layui-input-block"
>
<select
name=
"type"
>
<option
value=
""
>
请选择类型
</option>
<option
value=
"list"
{
eq
name=
"data.type|default=''"
value=
"list"
}
selected
{/
eq
}
>
列表
</option>
<option
value=
"page"
{
eq
name=
"data.type|default=''"
value=
"page"
}
selected
{/
eq
}
>
单页
</option>
</select>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
分类图片
</label>
<div
class=
"layui-input-block"
id=
"thumbup"
>
</div>
</div>
<input
type=
"hidden"
name=
"id"
value=
"{$data.id|default=0}"
>
</form>
</div>
{/block}
{block name="script"}
<script
type=
"text/javascript"
>
layui
.
use
([
'buildItems'
,
'form'
,
'laydate'
,
'util'
],
function
()
{
var
form
=
layui
.
form
;
/*解析顶部分组选项*/
var
str
=
[{
"name"
:
"thumb"
,
"title"
:
"上传图片"
,
"value"
:
"{$data.thumb|default=''}"
,
"type"
:
"imagewt"
}];
layui
.
buildItems
.
build
({
fjbid
:
'fjfrom'
,
bid
:
'thumbup'
,
url
:
''
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
gid
:
1
,
data
:
str
});
layui
.
buildItems
.
init
();
form
.
render
();
});
var
callbackdata
=
function
()
{
var
data
=
$
(
".layui-form"
).
serialize
();
return
data
;
};
</script>
{/block}
\ No newline at end of file
app/admin/view/article_category/index.html
0 → 100644
View file @
f7bce4d9
<div
class=
"layui-fluid"
>
<style>
.files_itemw
{
width
:
30px
;
height
:
30px
;
line-height
:
30px
;
cursor
:
pointer
;
padding
:
1px
;
background
:
#fff
;
display
:
-webkit-box
;
-moz-box-align
:
center
;
-webkit-box-align
:
center
;
-moz-box-pack
:
center
;
-webkit-box-pack
:
center
;}
.files_itemw
img
{
max-width
:
28px
;
max-height
:
28px
;
border
:
0
}
</style>
<div
class=
"layui-card"
>
<div
class=
"layui-card-header"
>
<form
class=
"layui-form render"
>
<input
type=
"hidden"
name=
"groupid"
id=
"articlecategory-groupid"
value=
""
/>
<div
class=
"layui-form-item"
>
<div
class=
"layui-inline"
>
<div
class=
"layui-btn-group"
>
<a
class=
"layui-btn"
id=
"articlecategory-add"
><i
class=
"layui-icon layui-icon-add-circle"
></i>
添加
</a>
</div>
</div>
</div>
</form>
</div>
<div
class=
"layui-card-body"
>
<div
class=
"layui-card-body"
>
<table
lay-filter=
"articlecategory"
id=
"articlecategory"
></table>
</div>
</div>
</div>
</div>
<!--JS部分-->
<script>
layui
.
use
([
'vinfo'
,
'buildItems'
],
function
(){
var
map_root
=
layui
.
cache
.
maps
;
var
app_root
=
map_root
+
'article_category/'
;
var
layer
=
layui
.
layer
,
table
=
layui
.
table
,
form
=
layui
.
form
,
admin
=
layui
.
admin
;
/*渲染数据*/
table
.
render
({
elem
:
'#articlecategory'
,
url
:
app_root
+
"index?&do=json"
,
cols
:
[[
{
field
:
'id'
,
width
:
50
,
unresize
:
true
,
align
:
'center'
,
title
:
'ID'
},
{
field
:
'thumb'
,
width
:
80
,
height
:
80
,
align
:
'center'
,
title
:
'缩略图'
,
templet
:
'<div class="files_itemw"><img src="{{d.thumb}}" lay-event="article-event-image" /></div>'
},
{
field
:
'title'
,
align
:
'left'
,
title
:
'分类'
,},
{
field
:
'typetxt'
,
width
:
100
,
align
:
'center'
,
title
:
'类型'
},
{
field
:
'sort'
,
width
:
100
,
align
:
'center'
,
title
:
'排序'
,
edit
:
'text'
},
{
fixed
:
'right'
,
width
:
130
,
align
:
'center'
,
toolbar
:
'<div><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a></div>'
,
title
:
'操作'
}
]],
done
:
function
(){
admin
.
vShow
(
$
(
'[lay-table-id="articlecategory"]'
));
}
});
/*快编监听*/
table
.
on
(
'edit(articlecategory)'
,
function
(
obj
){
admin
.
req
(
app_root
+
"editup"
,{
id
:
obj
.
data
.
id
,
av
:
obj
.
value
,
af
:
obj
.
field
},
function
(
res
){
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
500
});
},
'post'
,{
headersToken
:
true
});
});
/**/
/*工具条监听*/
table
.
on
(
'tool(articlecategory)'
,
function
(
obj
){
var
data
=
obj
.
data
;
var
id
=
data
.
id
;
if
(
obj
.
event
===
'edit'
){
articlecategoryOpen
(
data
.
id
);
}
else
if
(
obj
.
event
===
'del'
){
del
(
id
);
}
else
if
(
obj
.
event
===
'article-event-image'
){
var
src
=
$
(
this
).
attr
(
'src'
),
alt
=
$
(
this
).
attr
(
'alt'
);
layer
.
photos
({
photos
:{
data
:[{
alt
:
alt
,
src
:
src
}],
start
:
'0'
},
anim
:
5
,
shade
:[
0.4
,
'#000'
]});
}
});
/**/
/*删除*/
function
del
(
ids
){
layer
.
confirm
(
'确定要删除所选文章吗?'
,
function
(){
admin
.
req
(
app_root
+
"del"
,{
id
:
ids
},
function
(
res
){
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
if
(
res
.
code
==
1
)
table
.
reloadData
(
'articlecategory'
);
});
},
'post'
,{
headersToken
:
true
});
});
}
/**/
/*顶部删除按钮*/
$
(
'#articlecategory-del'
).
on
(
'click'
,
function
(){
var
checkRows
=
table
.
checkStatus
(
'articlecategory'
).
data
;
if
(
checkRows
.
length
===
0
){
return
layer
.
msg
(
'请选择需删除的文章'
);}
var
ids
=
checkRows
.
map
(
function
(
d
){
return
d
.
id
;});
console
.
log
(
ids
);
del
(
ids
);
});
/**/
$
(
'#articlecategory-add'
).
on
(
'click'
,
function
(){
articlecategoryOpen
();});
/**/
/*弹出窗*/
function
articlecategoryOpen
(
id
=
''
){
if
(
id
>
0
){
var
title
=
'编辑分类'
;
}
else
{
var
title
=
'添加分类'
;
}
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'900px'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
app_root
+
'edit?id='
+
id
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
$
.
ajax
({
method
:
"post"
,
url
:
app_root
+
'/edit'
,
data
:
data
,
dataType
:
"json"
,
success
:
function
(
res
){
if
(
res
.
code
===
1
)
{
layer
.
msg
(
res
.
msg
,{
icon
:
1
,
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
layer
.
close
(
index
);
table
.
reloadData
(
'articlecategory'
);
});
}
else
{
layer
.
msg
(
res
.
msg
,{
icon
:
2
,
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
});
}
// layer.closeAll();
}
});
},
});
}
/**/
});
</script>
\ No newline at end of file
app/admin/view/base/header.html
View file @
f7bce4d9
...
@@ -43,7 +43,9 @@
...
@@ -43,7 +43,9 @@
cascader
:
"cascader/cascader"
,
//无限级联 地区
cascader
:
"cascader/cascader"
,
//无限级联 地区
orgCharts
:
'orgCharts/orgCharts'
,
//组织结构图
orgCharts
:
'orgCharts/orgCharts'
,
//组织结构图
zTree
:
'zTree/zTree'
//树形结构
zTree
:
'zTree/zTree'
//树形结构
})
}).
use
([
"index"
,
"admin"
],
function
(){
});
</script>
</script>
{block name="script"}{/block}
{block name="script"}{/block}
...
...
app/admin/view/index/main.html
View file @
f7bce4d9
<tpl>
<tpl>
<form
class=
"layui-form "
action=
"admin/Index/main"
>
<form
class=
"layui-form "
action=
"admin/Index/main"
id=
"fjfrom"
>
<div
class=
"layui-form-item"
>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
输入框
</label>
<label
class=
"layui-form-label"
>
输入框
</label>
<div
class=
"layui-input-block"
>
<div
class=
"layui-input-block"
>
...
@@ -106,7 +106,7 @@
...
@@ -106,7 +106,7 @@
}];
}];
layui
.
buildItems
.
build
({
layui
.
buildItems
.
build
({
bid
:
'imgboxheadimg'
,
bid
:
'imgboxheadimg'
,
url
:
'
'
,
fjbid
:
'fjfrom
'
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
gid
:
1
,
gid
:
1
,
data
:
str
data
:
str
...
@@ -120,40 +120,41 @@
...
@@ -120,40 +120,41 @@
}];
}];
layui
.
buildItems
.
build
({
layui
.
buildItems
.
build
({
bid
:
'imgboxheadimg2'
,
bid
:
'imgboxheadimg2'
,
url
:
''
,
fjbid
:
'fjfrom'
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
gid
:
1
,
data
:
str
});
var
str
=
[{
"name"
:
"{$data3.name}"
,
"title"
:
"多图图片"
,
"value"
:
"{$data3.value}"
,
"type"
:
"{$data3.type}"
}];
layui
.
buildItems
.
build
({
bid
:
'imgboxheadimg3'
,
url
:
''
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
gid
:
1
,
data
:
str
});
var
str
=
[{
"name"
:
"{$data4.name}"
,
"title"
:
"文件上传"
,
"value"
:
"{$data4.value}"
,
"type"
:
"{$data4.type}"
}];
layui
.
buildItems
.
build
({
bid
:
'imgboxheadimg4'
,
url
:
''
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
gid
:
1
,
gid
:
1
,
data
:
str
data
:
str
});
});
layui
.
buildItems
.
init
();
//
// var str = [{
// "name": "{$data3.name}",
// "title": "多图图片",
// "value": "{$data3.value}",
// "type": "{$data3.type}"
// }];
// layui.buildItems.build({
// bid: 'imgboxheadimg3',
// url: '',
// map: layui.cache.maps + 'system.upload/',
// gid: 1,
// data:str
// });
//
//
// var str = [{
// "name": "{$data4.name}",
// "title": "文件上传",
// "value": "{$data4.value}",
// "type": "{$data4.type}"
// }];
// layui.buildItems.build({
// bid: 'imgboxheadimg4',
// url: '',
// map: layui.cache.maps + 'system.upload/',
// gid: 1,
// data:str
// });
form
=
layui
.
form
;
form
=
layui
.
form
;
form
.
render
();
form
.
render
();
...
...
app/common.php
View file @
f7bce4d9
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
*/
*/
// 版本信息
// 版本信息
define
(
'VT_VERSION'
,
'2.2.
7
'
);
define
(
'VT_VERSION'
,
'2.2.
4
'
);
// 后台管理员 session 标识
// 后台管理员 session 标识
define
(
'VT_MANAGER'
,
'V_MANAGER'
);
define
(
'VT_MANAGER'
,
'V_MANAGER'
);
// 前台会员 session 标识
// 前台会员 session 标识
...
...
app/model/ArticleCategoryModel.php
0 → 100644
View file @
f7bce4d9
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace
app\model
;
use
think\facade\Db
;
use
think\Model
;
use
tool\Tree
;
/**
* 模型公用类
*/
class
ArticleCategoryModel
extends
Model
{
protected
$name
=
'article_category'
;
public
function
catetree
(
$cate_id
=
0
)
{
$map
[]
=
[
'is_del'
,
'='
,
0
];
$category
=
$this
->
where
(
$map
)
->
order
(
'sort desc'
)
->
select
()
->
toArray
();
$tree
=
new
Tree
();
$tree
->
icon
=
[
' │ '
,
' ├─ '
,
' └─ '
];
$tree
->
nbsp
=
' '
;
$str
=
"<option value=@id @selected @disabled>@spacer @title</option>"
;
$tree
->
init
(
$category
);
$categorydata
=
$tree
->
getTree
(
0
,
$str
,
$cate_id
);
return
$categorydata
;
}
public
function
list
(){
$map
[]
=
[
'is_del'
,
'='
,
0
];
$category
=
$this
->
order
(
'sort desc'
)
->
where
(
$map
)
->
select
()
->
append
([
'typetxt'
])
->
toArray
();
$tree
=
new
Tree
();
$tree
->
icon
=
[
' │ '
,
' ├─ '
,
' └─ '
];
$tree
->
nbsp
=
' '
;
$tree
->
init
(
$category
);
$categorydata
=
$tree
->
getTreeList
(
$tree
->
getTreeArray
(
0
),
'title'
);
return
$categorydata
;
}
public
function
getTypetxtAttr
(
$value
,
$data
)
{
return
$data
[
'type'
]
==
'page'
?
'单页'
:
'文章'
;
}
}
\ No newline at end of file
public/static/admin/module/buildItems/buildItems.js
View file @
f7bce4d9
...
@@ -10,6 +10,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -10,6 +10,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
var
f
=
[];
//方法组
var
f
=
[];
//方法组
var
c
=
[];
//配置组
var
c
=
[];
//配置组
var
$h
;
//构建的容器
var
$h
;
//构建的容器
var
$hw
;
//构建的容器
//基础模板
//基础模板
c
.
label_html
=
'<label class="layui-form-label{{# if(d.must){ }} layui-form-required{{# } }}">{{- d.title }}</label>'
;
c
.
label_html
=
'<label class="layui-form-label{{# if(d.must){ }} layui-form-required{{# } }}">{{- d.title }}</label>'
;
c
.
block_html
=
'<div class="layui-input-block"'
;
c
.
block_html
=
'<div class="layui-input-block"'
;
...
@@ -135,13 +136,20 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -135,13 +136,20 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
},
},
render
:
function
(
d
){
render
:
function
(
d
){
$h
=
$
(
"#"
+
d
.
bid
);
//绑定ID
$h
=
$
(
"#"
+
d
.
bid
);
//绑定ID
$hw
=
d
.
fjbid
?
$
(
"#"
+
d
.
fjbid
)
:
$h
;
c
.
gid
=
d
.
gid
||
-
1
;
//上传资源分组ID
c
.
gid
=
d
.
gid
||
-
1
;
//上传资源分组ID
c
.
map
=
d
.
map
||
'admin/system.upload/'
;
//上传接口
c
.
map
=
d
.
map
||
'admin/system.upload/'
;
//上传接口
if
(
!
d
.
fjbid
){
b
.
init
();
b
.
init
();
}
// b.init();
},
},
build
:
function
(
d
){
build
:
function
(
d
){
c
.
relation
=
[];
//关联项清空
c
.
relation
=
[];
//关联项清空
c
.
bid
=
d
.
bid
||
''
;
//绑定ID
c
.
bid
=
d
.
bid
||
''
;
//绑定ID
c
.
fjbid
=
d
.
fjbid
||
''
;
//绑定ID
c
.
gid
=
d
.
gid
||
-
1
;
//上传资源分组ID
c
.
gid
=
d
.
gid
||
-
1
;
//上传资源分组ID
c
.
map
=
d
.
map
||
'admin/system.upload/'
;
//上传接口
c
.
map
=
d
.
map
||
'admin/system.upload/'
;
//上传接口
c
.
url
=
d
.
url
||
''
;
//构建项json数据接口
c
.
url
=
d
.
url
||
''
;
//构建项json数据接口
...
@@ -166,7 +174,11 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -166,7 +174,11 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
},
},
sett
:
function
(
data
){
//data: 二维数组[{name:标识,title:标题,group:分组,type:类型,value:值,options:选项},{}]
sett
:
function
(
data
){
//data: 二维数组[{name:标识,title:标题,group:分组,type:类型,value:值,options:选项},{}]
var
html
=
''
,
str
=
''
,
tab_t
=
''
,
tab_c
=
''
;
var
html
=
''
,
str
=
''
,
tab_t
=
''
,
tab_c
=
''
;
$h
=
$
(
"#"
+
c
.
bid
);
f
=
[];
//清空方法组
$h
=
$
(
"#"
+
c
.
bid
);
$hw
=
c
.
fjbid
?
$
(
"#"
+
c
.
fjbid
)
:
$h
;
f
=
[];
//清空方法组
for
(
var
i
in
data
){
for
(
var
i
in
data
){
var
d
=
data
[
i
];
var
d
=
data
[
i
];
if
(
d
.
type
==
'layui_tab'
){
if
(
d
.
type
==
'layui_tab'
){
...
@@ -195,7 +207,10 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -195,7 +207,10 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
let
ra
=
$h
.
find
(
'input[name="'
+
v
.
name
+
'"]:checked'
).
val
();
let
ra
=
$h
.
find
(
'input[name="'
+
v
.
name
+
'"]:checked'
).
val
();
$
(
"[id^='item-"
+
v
.
obj
+
"_"
+
ra
+
"']"
).
show
();
$
(
"[id^='item-"
+
v
.
obj
+
"_"
+
ra
+
"']"
).
show
();
});
});
if
(
!
c
.
fjbid
){
b
.
init
();
b
.
init
();
}
// b.init();
//回调并监听输入框变化
//回调并监听输入框变化
if
(
typeof
c
.
success
===
'function'
){
if
(
typeof
c
.
success
===
'function'
){
c
.
success
(
null
,
'_init_'
);
c
.
success
(
null
,
'_init_'
);
...
@@ -205,7 +220,10 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -205,7 +220,10 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
settwt
:
function
(
data
){
//data: 二维数组[{name:标识,title:标题,group:分组,type:类型,value:值,options:选项},{}]
settwt
:
function
(
data
){
//data: 二维数组[{name:标识,title:标题,group:分组,type:类型,value:值,options:选项},{}]
var
html
=
''
,
str
=
''
,
tab_t
=
''
,
tab_c
=
''
;
var
html
=
''
,
str
=
''
,
tab_t
=
''
,
tab_c
=
''
;
$h
=
$
(
"#"
+
c
.
bid
);
f
=
[];
//清空方法组
$h
=
$
(
"#"
+
c
.
bid
);
$hw
=
c
.
fjbid
?
$
(
"#"
+
c
.
fjbid
)
:
$h
;
f
=
[];
//清空方法组
for
(
var
i
in
data
){
for
(
var
i
in
data
){
var
d
=
data
[
i
];
var
d
=
data
[
i
];
...
@@ -218,7 +236,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -218,7 +236,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
$h
.
html
(
html
);
$h
.
html
(
html
);
// form.render(null,c.bid+'_form');
// form.render(null,c.bid+'_form');
b
.
init
();
//
b.init();
},
},
init
:
function
(){
init
:
function
(){
...
@@ -283,13 +301,13 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -283,13 +301,13 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
});
});
},
},
Photos
:
function
(){
Photos
:
function
(){
$h
.
find
(
"[id^='image-show-']"
).
each
(
function
(){
$h
w
.
find
(
"[id^='image-show-']"
).
each
(
function
(){
var
id
=
'#'
+
$
(
this
).
attr
(
'id'
);
var
id
=
'#'
+
$
(
this
).
attr
(
'id'
);
layer
.
photos
({
photos
:
id
,
anim
:
1
,
shade
:[
0.4
,
'#000'
]});
layer
.
photos
({
photos
:
id
,
anim
:
1
,
shade
:[
0.4
,
'#000'
]});
});
});
},
},
regUpFile
:
function
(){
regUpFile
:
function
(){
$h
.
find
(
"[id^='upfile-btn-']"
).
each
(
function
(){
$h
w
.
find
(
"[id^='upfile-btn-']"
).
each
(
function
(){
var
id
=
'#'
+
$
(
this
).
attr
(
'id'
),
type
=
$
(
this
).
data
(
'type'
)
||
'file'
;
var
id
=
'#'
+
$
(
this
).
attr
(
'id'
),
type
=
$
(
this
).
data
(
'type'
)
||
'file'
;
var
name
=
id
.
split
(
'-'
)[
2
];
var
name
=
id
.
split
(
'-'
)[
2
];
layui
.
upload
.
render
({
layui
.
upload
.
render
({
...
@@ -343,10 +361,11 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -343,10 +361,11 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
}
}
},
},
regAction
:
function
(){
regAction
:
function
(){
$h
.
find
(
"[id^='image-show-']"
).
on
(
'click'
,
'.image_item .item-edit'
,
function
(){
$h
w
.
find
(
"[id^='image-show-']"
).
on
(
'click'
,
'.image_item .item-edit'
,
function
(){
var
$this
=
$
(
this
);
var
$this
=
$
(
this
);
var
$img
=
$this
.
parent
().
children
(
'img'
);
var
$img
=
$this
.
parent
().
children
(
'img'
);
var
$input
=
$this
.
parent
().
children
(
'input'
);
var
$input
=
$this
.
parent
().
children
(
'input'
);
console
.
log
(
$input
);
layui
.
admin
.
cropImg
({
layui
.
admin
.
cropImg
({
title
:
'编辑图像'
,
title
:
'编辑图像'
,
imgSrc
:
$img
.
attr
(
'src'
),
imgSrc
:
$img
.
attr
(
'src'
),
...
@@ -377,7 +396,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -377,7 +396,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
}
}
});
});
});
});
$h
.
find
(
"[id^='image-show-']"
).
on
(
'click'
,
'.image_item .item-delete'
,
function
(){
$h
w
.
find
(
"[id^='image-show-']"
).
on
(
'click'
,
'.image_item .item-delete'
,
function
(){
var
$this
=
$
(
this
),
noClick
=
$this
.
data
(
'noClick'
),
name
=
$this
.
data
(
'name'
);
var
$this
=
$
(
this
),
noClick
=
$this
.
data
(
'noClick'
),
name
=
$this
.
data
(
'name'
);
if
(
noClick
)
{
return
false
;}
if
(
noClick
)
{
return
false
;}
layer
.
confirm
(
'您确定要删除该'
+
(
name
?
name
:
'图片'
)
+
'吗?'
,
{
layer
.
confirm
(
'您确定要删除该'
+
(
name
?
name
:
'图片'
)
+
'吗?'
,
{
...
@@ -392,38 +411,54 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -392,38 +411,54 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
layer
.
close
(
index
);
layer
.
close
(
index
);
});
});
});
});
$h
.
find
(
"[id^='keyval-add-']"
).
on
(
'click'
,
function
(){
$h
w
.
find
(
"[id^='keyval-add-']"
).
on
(
'click'
,
function
(){
var
id
=
$
(
this
).
attr
(
'id'
);
var
id
=
$
(
this
).
attr
(
'id'
);
var
name
=
id
.
split
(
'-'
)[
2
];
var
name
=
id
.
split
(
'-'
)[
2
];
var
str
=
b
.
tpl
(
c
.
keyval_html
,{
value
:{
''
:
''
}});
var
str
=
b
.
tpl
(
c
.
keyval_html
,{
value
:{
''
:
''
}});
$
(
"#keyval-show-"
+
name
).
append
(
str
);
$
(
"#keyval-show-"
+
name
).
append
(
str
);
});
});
$h
.
find
(
"[id^='keyval-show-']"
).
on
(
'click'
,
'.keyval_item .del'
,
function
(){
$h
w
.
find
(
"[id^='keyval-show-']"
).
on
(
'click'
,
'.keyval_item .del'
,
function
(){
var
name
=
$
(
this
).
parent
().
parent
().
data
(
'name'
);
var
name
=
$
(
this
).
parent
().
parent
().
data
(
'name'
);
$
(
this
).
parent
().
remove
();
$
(
this
).
parent
().
remove
();
b
.
setArr
(
name
);
b
.
setArr
(
name
);
});
});
$h
.
find
(
"[id^='keyval-show-']"
).
on
(
'blur'
,
'.keyval_item input'
,
function
(){
$h
w
.
find
(
"[id^='keyval-show-']"
).
on
(
'blur'
,
'.keyval_item input'
,
function
(){
b
.
setArr
(
$
(
this
).
parent
().
parent
().
parent
().
data
(
'name'
));
b
.
setArr
(
$
(
this
).
parent
().
parent
().
parent
().
data
(
'name'
));
});
});
},
},
regUpload
:
function
(){
regUpload
:
function
(){
$h
.
find
(
"[id^='up-image-btn-']"
).
on
(
'click'
,
function
(){
$hw
.
find
(
"[id^='up-image-btn-']"
).
on
(
'click'
,
function
(){
console
.
log
(
$hw
);
var
$this
=
$
(
this
);
var
$this
=
$
(
this
);
var
type
=
$this
.
data
(
'type'
);
var
type
=
$this
.
data
(
'type'
);
var
name
=
$this
.
data
(
'name'
);
var
name
=
$this
.
data
(
'name'
);
var
thum
=
$this
.
data
(
'thum'
);
var
thum
=
$this
.
data
(
'thum'
);
fileLibrary
.
open
({
title
:
'图片管理'
,
thum
:
thum
,
groupid
:
c
.
gid
,
url
:
c
.
map
},
function
(
res
){
fileLibrary
.
open
({
title
:
'图片管理'
,
thum
:
thum
,
groupid
:
c
.
gid
,
url
:
c
.
map
},
function
(
res
){
if
(
res
.
length
==
0
)
return
;
if
(
res
.
length
==
0
)
return
;
var
$pbox
=
$h
.
find
(
"#image-show-"
+
name
);
var
$pbox
=
$hw
.
find
(
"#image-show-"
+
name
);
// var $pbox = $(this).find("#image-show-" + name);
if
(
type
==
'image'
){
if
(
type
==
'image'
){
$pbox
.
html
(
'<div class="image_item"><img src="'
+
res
[
0
].
file_path
+
'" /><input type="hidden" name="'
+
name
+
'" value="'
+
res
[
0
].
file_path
+
'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
);
$pbox
.
html
(
'<div class="image_item"><img src="'
+
res
[
0
].
file_path
+
'" /><input type="hidden" name="'
+
name
+
'" value="'
+
res
[
0
].
file_path
+
'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
);
// $htmls = '<div class="image_item"><img src="'+ res[0].file_path +'" /><input type="hidden" name="'+ name +'" value="'+ res[0].file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
// $("#image-show-" + name).html($htmls);
}
else
{
}
else
{
if
(
$pbox
.
children
(
'input'
).
length
>
0
)
$pbox
.
html
(
''
);
if
(
$pbox
.
children
(
'input'
).
length
>
0
)
$pbox
.
html
(
''
);
for
(
var
i
in
res
){
for
(
var
i
in
res
){
var
v
=
res
[
i
];
var
v
=
res
[
i
];
$pbox
.
append
(
'<div class="image_item"><img src="'
+
v
.
file_path
+
'" /><input type="hidden" name="'
+
name
+
'[]" value="'
+
v
.
file_path
+
'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
);
$pbox
.
append
(
'<div class="image_item"><img src="'
+
v
.
file_path
+
'" /><input type="hidden" name="'
+
name
+
'[]" value="'
+
v
.
file_path
+
'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
);
}
}
// if( $("#image-show-" + name).children('input').length>0) $("#image-show-" + name).html('');
// for(var i in res){
// var v = res[i];
// $("#image-show-" + name).append('<div class="image_item"><img src="'+ v.file_path +'" /><input type="hidden" name="'+ name +'[]" value="'+ v.file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>');
// }
}
}
b
.
Photos
();
b
.
Photos
();
});
});
...
@@ -431,7 +466,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -431,7 +466,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
},
},
uEditor
:
function
(){
uEditor
:
function
(){
var
ids
=
[];
var
ids
=
[];
$h
.
find
(
"[id^='ueditor-']"
).
each
(
function
(){
$h
w
.
find
(
"[id^='ueditor-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
});
if
(
ids
.
length
>
0
){
if
(
ids
.
length
>
0
){
...
@@ -485,7 +520,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -485,7 +520,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
},
},
cherryMd
:
function
(){
cherryMd
:
function
(){
var
ids
=
[],
obj
=
[];
var
ids
=
[],
obj
=
[];
$h
.
find
(
"[id^='cherrymd-']"
).
each
(
function
(){
$h
w
.
find
(
"[id^='cherrymd-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
});
if
(
ids
.
length
>
0
){
if
(
ids
.
length
>
0
){
...
@@ -526,7 +561,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -526,7 +561,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
},
},
editorMd
:
function
(){
editorMd
:
function
(){
var
ids
=
[];
var
ids
=
[];
$h
.
find
(
"[id^='editormd-']"
).
each
(
function
(){
$h
w
.
find
(
"[id^='editormd-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
});
if
(
ids
.
length
>
0
){
if
(
ids
.
length
>
0
){
...
@@ -568,7 +603,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -568,7 +603,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
},
},
TinyMCE
:
function
(){
TinyMCE
:
function
(){
var
ids
=
[];
var
ids
=
[];
$h
.
find
(
"[id^='tinymce-']"
).
each
(
function
(){
$h
w
.
find
(
"[id^='tinymce-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
});
if
(
ids
.
length
>
0
){
if
(
ids
.
length
>
0
){
...
@@ -688,7 +723,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
...
@@ -688,7 +723,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
},
},
setArr
:
function
(
name
){
setArr
:
function
(
name
){
var
obj
=
{},
val
;
var
obj
=
{},
val
;
$h
.
find
(
"#keyval-show-"
+
name
+
" .keyval_item"
).
each
(
function
(){
$h
w
.
find
(
"#keyval-show-"
+
name
+
" .keyval_item"
).
each
(
function
(){
let
key
=
$
(
this
).
find
(
"input:eq(0)"
).
val
();
let
key
=
$
(
this
).
find
(
"input:eq(0)"
).
val
();
if
(
key
)
obj
[
key
]
=
$
(
this
).
find
(
"input:eq(1)"
).
val
();
if
(
key
)
obj
[
key
]
=
$
(
this
).
find
(
"input:eq(1)"
).
val
();
});
});
...
...
public/static/admin/module/buildItems/buildItems11.js
0 → 100644
View file @
f7bce4d9
/*
* Veitool 1.0.3 构建表单项 2023-08-12
* Website:www.veitool.com
* Author:niaho (QQ:26843818)
*/
layui
.
define
([
'tagsInput'
,
'fileLibrary'
,
'cascader'
],
function
(
e
){
layui
.
link
(
layui
.
cache
.
base
+
"buildItems/buildItems.css"
);
var
$
=
layui
.
$
,
layer
=
layui
.
layer
,
form
=
layui
.
form
,
tagsInput
=
layui
.
tagsInput
,
fileLibrary
=
layui
.
fileLibrary
;
var
static
=
layui
.
cache
.
static
;
var
f
=
[];
//方法组
var
c
=
[];
//配置组
var
$h
;
//构建的容器
var
$hw
;
//构建的容器
//基础模板
c
.
label_html
=
'<label class="layui-form-label{{# if(d.must){ }} layui-form-required{{# } }}">{{- d.title }}</label>'
;
c
.
block_html
=
'<div class="layui-input-block"'
;
c
.
inline_html
=
'<div class="layui-input-inline"'
;
c
.
item_html
=
'<div class="layui-form-item" id="item-{{ d.relation ? d.relation + "-" : "" }}{{ d.name }}" style="{{# if(d.itemStyle){ }}{{ d.itemStyle }}{{# } }}{{# if(d.hide || (d.relation && d.relation.indexOf("_")!=-1)){ }}display:none;{{# } }}">'
+
c
.
label_html
;
c
.
tips_html
=
'{{# if(d.tips){ }}<div class="layui-form-mid{{# if(d.type ==
\'
switch
\'
|| d.type ==
\'
captcha
\'
|| d.type ==
\'
keyval
\'
|| d.type ==
\'
colorpicker
\'
){ }} tipx{{# } }}"><i class="layui-icon"></i> {{ d.tips }}</div>{{# } }}'
;
c
.
vers_html
=
'{{# if(d.verify){ }}lay-verify="{{ d.verify }}" lay-vertype="{{ d.vertype ||
\'\'
}}" lay-reqtext="{{ d.reqtext || d.placeholder ||
\'\'
}}" {{# } }}'
;
c
.
plac_html
=
'{{# if(d.placeholder){ }}placeholder="{{ d.placeholder }}" {{# } }}{{# if(d.readonly){ }}readonly {{# } }}'
;
c
.
affix_html
=
'{{# if(d.affix){ }}lay-affix="{{ d.affix }}" {{# } }}'
;
c
.
item_style
=
'{{# if(d.style){ }}style="{{ d.style }}" {{# } }}'
;
//表单元素
c
.
text_html
=
'<input type="text" name="{{ d.name }}" lay-filter="{{ d.name }}" value="{{ d.value }}" '
+
c
.
item_style
+
c
.
vers_html
+
'{{# if(d.maxlength){ }}maxlength="{{ d.maxlength }}"{{# } }} '
+
c
.
plac_html
+
c
.
affix_html
;
c
.
number_html
=
'<input type="number" name="{{ d.name }}" lay-filter="{{ d.name }}" value="{{ d.value }}" '
+
c
.
item_style
+
c
.
vers_html
+
c
.
plac_html
+
'{{# if(d.id){ }}id="{{ d.id }}"{{# } }} class="layui-input" lay-affix="number">'
;
c
.
switch_html
=
'{{# layui.buildItems.on(d.name,d.relation || "","switch"); }}<input type="checkbox" name="{{ d.name }}" lay-skin="switch" lay-text="ON|OFF" lay-filter="{{ d.name }}" value="1" {{ d.value ==1 ? "checked" : "" }}/>'
;
c
.
radio_html
=
'{{# layui.buildItems.on(d.name,d.relation || "","radio"); layui.each(d.options, function(key, txt){ }}<input type="radio" name="{{ d.name }}" lay-filter="{{ d.name }}" value="{{ key }}" title="{{ txt }}" {{ d.value == key ? "checked" : "" }} />{{# }); }}'
;
c
.
checkbox_html
=
'{{# layui.buildItems.on(d.name,"","checkbox"); layui.each(d.options, function(key, txt){ }}<input type="checkbox" name="{{ d.name }}[]" lay-filter="{{ d.name }}" lay-skin="{{ d.skin }}" value="{{ key }}" title="{{ txt }}" {{ (d.value).split(",").indexOf(String(key))>-1 ? "checked" : "" }}/>{{# }); }}'
;
c
.
password_html
=
'<input type="password" name="{{ d.name }}" value="{{ d.value }}" '
+
c
.
item_style
+
c
.
vers_html
+
'autocomplete="off" '
+
c
.
plac_html
+
c
.
affix_html
;
c
.
textarea_html
=
'<textarea name="{{ d.name }}" '
+
c
.
item_style
;
c
.
select_html
=
'<select name="{{ d.name }}" lay-filter="{{ d.name }}" '
+
c
.
item_style
+
c
.
vers_html
+
'{{# layui.buildItems.on(d.name,"","select"); if(d.search){ }}lay-search{{# } }}>{{# if(d.optiontip || d.reqtext){ }}<option value="">{{ d.optiontip || d.reqtext }}</option>{{# } }}{{# layui.each(d.options, function(key, txt){ }}<option value="{{ key }}" {{ d.value == key ? "selected" : "" }}>{{ txt }}</option>{{# }); }}</select>'
;
//隐藏域
c
.
hidden
=
'<input type="hidden" name="{{ d.name }}" value="{{ d.value ||
\'\'
}}"/>'
;
//静态代码
c
.
html
=
c
.
item_html
+
c
.
block_html
+
'>'
+
'{{- d.html }}'
+
c
.
tips_html
+
'</div></div>'
;
//单行文本、数组
c
.
text
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
text_html
+
'{{# if(d.id){ }}id="{{ d.id }}"{{# } }} class="layui-input"/>'
+
c
.
tips_html
+
'</div></div>'
;
//多行文本
c
.
textarea
=
c
.
array
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
textarea_html
+
'class="layui-textarea" {{# if(d.id){ }}id="{{ d.id }}" {{# } }}'
+
c
.
vers_html
+
c
.
plac_html
+
'>{{ d.value }}</textarea>'
+
c
.
tips_html
+
'</div></div>'
;
//键值对组
c
.
keyval_html
=
'{{# d.value = d.value || "{}"; layui.each(typeof d.value === "string" ? JSON.parse(d.value) : d.value, function(k, v){ }}<div class="keyval_item"><div class="layui-input-inline"><input type="text" value="{{ k }}" class="layui-input" placeholder="key"></div>'
+
'<div class="layui-form-mid">:</div><div class="layui-input-inline"><input type="text" value="{{ v }}" class="layui-input" placeholder="value"></div>'
+
'<a class="layui-btn layui-bg-red del"><i class="layui-icon layui-icon-delete"></i></a></div>{{# }); }}'
;
c
.
keyval
=
c
.
item_html
+
c
.
block_html
+
'><div id="keyval-show-{{ d.name }}" data-name="{{ d.name }}"><input type="hidden" name="{{ d.name }}" id="keyval-input-{{ d.name }}" value="" '
+
'lay-verify="{{ d.verify ||
\'\'
}}" lay-reqtext="{{ d.reqtext ||
\'\'
}}"/>'
+
c
.
keyval_html
+
'</div><a class="layui-btn keyval-add" id="keyval-add-{{ d.name }}"><i class="layui-icon layui-icon-add-circle"></i> 追加</a>'
+
c
.
tips_html
+
'</div></div>'
;
//静态文本
c
.
static
=
c
.
item_html
+
c
.
block_html
+
'>'
+
'<div class="layui-form-mid">{{ d.value }}</div></div></div>'
;
//密码
c
.
password
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
password_html
+
'{{# if(d.id){ }}id="{{ d.id }}"{{# } }} class="layui-input" lay-affix="eye"/>'
+
c
.
tips_html
+
'</div></div>'
;
//复选
c
.
checkbox
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
checkbox_html
+
'</div>'
+
c
.
tips_html
+
'</div>'
;
//单选
c
.
radio
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
radio_html
+
'</div>'
+
c
.
tips_html
+
'</div>'
;
//日期、时间、日期时间
c
.
year
=
c
.
month
=
c
.
date
=
c
.
time
=
c
.
datetime
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
text_html
+
'class="layui-input" placeholder="yyyy-MM-dd" id="show-date-{{ d.name }}" data-type="{{ d.type}}" data-range="{{ d.range ? true : false }}"/>'
+
c
.
tips_html
+
'</div></div>'
;
//开关
c
.
switch
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
inline_html
+
' style="width:62px;">'
+
c
.
switch_html
+
'</div>'
+
c
.
tips_html
+
'</div></div>'
;
//下拉
c
.
select
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
select_html
+
c
.
tips_html
+
'</div></div>'
;
//标签
c
.
tags
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
text_html
+
'class="layui-hide" id="show-tags-{{ d.name }}"/>'
+
c
.
tips_html
+
'</div></div>'
;
//数字
c
.
number
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
number_html
+
c
.
tips_html
+
'</div></div>'
;
//级联地区
c
.
areas
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
text_html
+
'id="areas-{{ d.name }}" class="layui-input"/>'
+
c
.
tips_html
+
'</div></div>'
;
//取色器
c
.
colorpicker
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
inline_html
+
' style="width:120px;">'
+
c
.
text_html
+
'id="show-colorpicker-{{ d.name }}" placeholder="请选择颜色" class="layui-input"/></div>'
+
c
.
inline_html
+
' style="left:-11px;width:40px;"><div id="colorpicker-{{ d.name }}"></div></div>'
+
c
.
tips_html
+
'</div></div>'
;
//百度编辑器
c
.
ueditor
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
textarea_html
+
' id="ueditor-{{ d.id ? d.id : d.name }}" style="border:0;padding:0;">{{- d.value }}</textarea>'
+
c
.
tips_html
+
'</div></div>'
;
//Md编辑器
c
.
cherrymd
=
c
.
item_html
+
c
.
block_html
+
'><div '
+
c
.
item_style
+
'id="cherrymd-{{ d.id ? d.id : d.name }}"></div><textarea id="temp-{{ d.id ? d.id : d.name }}" style="display:none;">{{- d.value }}</textarea>'
+
c
.
tips_html
+
'</div></div>'
;
//Md编辑器
c
.
editormd
=
c
.
item_html
+
c
.
block_html
+
'><style>.editormd-preview li{list-style:inherit!important}.editormd-code-toolbar>select{display:initial}</style><div id="editormd-{{ d.id ? d.id : d.name }}" style="z-index:1000;">'
+
c
.
textarea_html
+
' style="display:none;">{{- d.value }}</textarea></div>'
+
c
.
tips_html
+
'</div></div>'
;
//TinyMCE编辑器
c
.
tinymce
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
textarea_html
+
' id="tinymce-{{ d.id ? d.id : d.name }}">{{- d.value }}</textarea>'
+
c
.
tips_html
+
'</div></div>'
;
//上传单图
c
.
image
=
c
.
item_html
+
c
.
block_html
+
'><div id="image-show-{{ d.name }}" data-type="image" data-verify="{{ d.verify ||
\'\'
}}" data-reqtext="{{ d.reqtext ||
\'\'
}}">{{# if (d.value) { }}'
+
'<div class="image_item"><img src="{{ d.value }}"/><input type="hidden" name="{{ d.name }}" value="{{ d.value }}"/>'
+
'<i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>{{# }else{ }}<input type="hidden" name="{{ d.name }}" lay-verify="{{ d.verify ||
\'\'
}}" lay-reqtext="{{ d.reqtext ||
\'\'
}}"/>{{# } }}</div>'
+
'<div class="image_item layui-upload-drag" style="background:#efefef;" id="up-image-btn-{{ d.name }}" data-type="image" data-name="{{ d.name }}" data-thum="{{ d.thum || 0 }}"><i class="layui-icon"></i><br/>上传图片</div>'
+
'<div style="clear:both"></div>'
+
c
.
tips_html
+
'</div></div>'
;
//上传多图
c
.
images
=
c
.
item_html
+
c
.
block_html
+
'><div id="image-show-{{ d.name }}" data-type="images" data-verify="{{ d.verify ||
\'\'
}}" data-reqtext="{{ d.reqtext ||
\'\'
}}">{{# var i = 0;layui.each(d.value, function(key, url){ i=1; }}'
+
'<div class="image_item"><img src="{{ url }}"/><input type="hidden" name="{{ d.name }}[]" value="{{ url }}"/>'
+
'<i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>{{# }); }}{{# if (i == 0) { }}<input type="hidden" name="{{ d.name }}" lay-verify="{{ d.verify ||
\'\'
}}" lay-reqtext="{{ d.reqtext ||
\'\'
}}"/>{{# } }}</div>'
+
'<div class="image_item layui-upload-drag" style="background:#efefef;" id="up-image-btn-{{ d.name }}" data-type="images" data-name="{{ d.name }}" data-thum="{{ d.thum || 0 }}"><i class="layui-icon"></i><br/>上传图片</div>'
+
'<div style="clear:both"></div>'
+
c
.
tips_html
+
'</div></div>'
;
//上传文件
c
.
upfile
=
c
.
item_html
+
c
.
block_html
+
'>'
+
c
.
inline_html
+
' style="width:85px;float:right;"><button type="button" class="layui-btn" data-type="{{ d.filetype }}" id="{{ d.id ? d.id :
\'
upfile-btn-
\'
+ d.name }}">上传文件</button></div>'
+
c
.
block_html
+
' style="margin-right:105px;margin-left:0;">'
+
c
.
text_html
+
'id="upfile-{{ d.name }}" class="layui-input"/></div>'
+
c
.
tips_html
+
'</div></div>'
;
//验证码
c
.
captcha
=
c
.
item_html
+
c
.
block_html
+
' >'
+
c
.
text_html
+
'id ="{{ d.name }}" class="layui-input" style="width:150px;float:left;margin-right:10px;"/><div class="box-{{ d.name }}" style="float:left;margin-right:10px;"><a class="layui-btn layui-btn-primary">点击获取验证码</a></div>'
+
c
.
tips_html
+
'</div></div>'
;
//关联项
c
.
relation
=
[];
//上传单图
c
.
imagewt
=
'<div id="image-show-{{ d.name }}" data-type="image" data-verify="{{ d.verify ||
\'\'
}}" data-reqtext="{{ d.reqtext ||
\'\'
}}">{{# if (d.value) { }}'
+
'<div class="image_item"><img src="{{ d.value }}"/><input type="hidden" name="{{ d.name }}" value="{{ d.value }}"/>'
+
'<i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>{{# }else{ }}<input type="hidden" name="{{ d.name }}" lay-verify="{{ d.verify ||
\'\'
}}" lay-reqtext="{{ d.reqtext ||
\'\'
}}"/>{{# } }}</div>'
+
'<div class="image_item layui-upload-drag" style="background:#efefef;" id="up-image-btn-{{ d.name }}" data-type="image" data-name="{{ d.name }}" data-thum="{{ d.thum || 0 }}"><i class="layui-icon"></i><br/>上传图片</div>'
+
'</div>'
;
//上传多图
c
.
imageswt
=
'<div id="image-show-{{ d.name }}" data-type="images" data-verify="{{ d.verify ||
\'\'
}}" data-reqtext="{{ d.reqtext ||
\'\'
}}">{{# var i = 0;layui.each(d.value, function(key, url){ i=1; }}'
+
'<div class="image_item"><img src="{{ url }}"/><input type="hidden" name="{{ d.name }}[]" value="{{ url }}"/>'
+
'<i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>{{# }); }}{{# if (i == 0) { }}<input type="hidden" name="{{ d.name }}" lay-verify="{{ d.verify ||
\'\'
}}" lay-reqtext="{{ d.reqtext ||
\'\'
}}"/>{{# } }}</div>'
+
'<div class="image_item layui-upload-drag" style="background:#efefef;" id="up-image-btn-{{ d.name }}" data-type="images" data-name="{{ d.name }}" data-thum="{{ d.thum || 0 }}"><i class="layui-icon"></i><br/>上传图片</div>'
+
'</div>'
;
//上传文件
c
.
upfilewt
=
c
.
inline_html
+
' style="width:85px;float:right;"><button type="button" class="layui-btn" data-type="{{ d.filetype }}" id="{{ d.id ? d.id :
\'
upfile-btn-
\'
+ d.name }}">上传文件</button></div>'
+
c
.
block_html
+
' style="margin-right:105px;margin-left:0;">'
+
c
.
text_html
+
'id="upfile-{{ d.name }}" class="layui-input"/></div>'
+
c
.
tips_html
+
'</div></div>'
;
var
b
=
{
on
:
function
(
o
,
m
,
t
){
// 记录关联项,用于渲染完成后显示选中的关联项
if
(
m
&&
(
t
==
'switch'
||
t
==
'radio'
))
c
.
relation
.
push
({
name
:
o
,
obj
:
m
});
// 监听变化并回调
form
.
on
(
t
+
'('
+
o
+
')'
,
function
(
data
){
if
(
t
==
'switch'
&&
m
){
var
obj
=
$
(
"[id^='item-"
+
m
+
'_'
+
data
.
value
+
"']"
);
data
.
elem
.
checked
?
obj
.
show
()
:
obj
.
hide
();
}
else
if
(
t
==
'radio'
&&
m
){
$
(
"[id^='item-"
+
m
+
"_']"
).
hide
();
$
(
"[id^='item-"
+
m
+
'_'
+
data
.
value
+
"']"
).
show
();
}
typeof
c
.
success
===
'function'
&&
c
.
success
(
data
,
o
);
});
},
render
:
function
(
d
){
// $h = $("#"+ d.bid); //绑定ID
if
(
c
.
fjbid
){
$h
=
$
(
"#"
+
d
.
fjbid
).
find
(
"#"
+
d
.
bid
);
}
else
{
$h
=
$
(
"#"
+
d
.
bid
);
}
c
.
gid
=
d
.
gid
||
-
1
;
//上传资源分组ID
c
.
map
=
d
.
map
||
'admin/system.upload/'
;
//上传接口
b
.
init
();
},
build
:
function
(
d
){
c
.
relation
=
[];
//关联项清空
c
.
bid
=
d
.
bid
||
''
;
//绑定ID
c
.
fjbid
=
d
.
fjbid
||
''
;
//绑定ID
c
.
gid
=
d
.
gid
||
-
1
;
//上传资源分组ID
c
.
map
=
d
.
map
||
'admin/system.upload/'
;
//上传接口
c
.
url
=
d
.
url
||
''
;
//构建项json数据接口
c
.
data
=
d
.
data
||
[];
//构建项json数据
c
.
space
=
d
.
space
?
' '
+
d
.
space
:
''
;
//栅格间隙 layui-col-space[n]
c
.
style
=
d
.
style
?
'<style>'
+
d
.
style
+
'</style>'
:
''
;
//追加自定义样式
c
.
success
=
d
.
success
||
''
;
if
(
c
.
data
.
length
>
0
||
c
.
data
.
constructor
===
Object
){
b
.
settwt
(
c
.
data
);
}
else
{
var
load
=
layer
.
load
(
2
);
$
.
getJSON
(
c
.
url
,
function
(
res
){
layer
.
close
(
load
);
if
(
res
.
code
===
1
){
b
.
sett
(
res
.
data
);
}
else
{
layer
.
msg
(
res
.
msg
,{
anim
:
6
});
}
});
}
},
sett
:
function
(
data
){
//data: 二维数组[{name:标识,title:标题,group:分组,type:类型,value:值,options:选项},{}]
var
html
=
''
,
str
=
''
,
tab_t
=
''
,
tab_c
=
''
;
if
(
c
.
fjbid
){
$h
=
$
(
"#"
+
c
.
fjbid
).
find
(
"#"
+
c
.
bid
);
}
else
{
$h
=
$
(
"#"
+
c
.
bid
);
}
f
=
[];
//清空方法组
for
(
var
i
in
data
){
var
d
=
data
[
i
];
if
(
d
.
type
==
'layui_tab'
){
tab_t
+=
'<li'
+
(
d
.
showTab
?
' class="layui-this"'
:
''
)
+
'>'
+
d
.
title
+
'</li>'
;
tab_c
+=
'<div class="layui-tab-item'
+
(
d
.
showTab
?
' layui-show'
:
''
)
+
c
.
space
+
'">'
;
for
(
var
j
in
d
.
data
){
var
dd
=
d
.
data
[
j
];
if
(
c
[
dd
.
type
]){
str
=
b
.
tpl
(
c
[
dd
.
type
],
dd
);
if
(
dd
.
callBack
&&
typeof
dd
.
callBack
===
'function'
)
f
[
dd
.
name
]
=
dd
.
callBack
;
tab_c
+=
(
dd
.
itemCol
?
'<div class="'
+
dd
.
itemCol
+
'">'
+
str
+
'</div>'
:
str
);
}
}
tab_c
+=
'</div>'
;
}
else
if
(
c
[
d
.
type
]){
str
=
b
.
tpl
(
c
[
d
.
type
],
d
);
if
(
d
.
callBack
&&
typeof
d
.
callBack
===
'function'
)
f
[
d
.
name
]
=
d
.
callBack
;
html
+=
(
d
.
itemCol
?
'<div class="'
+
d
.
itemCol
+
'">'
+
str
+
'</div>'
:
str
);
}
}
html
+=
tab_t
?
'<div class="layui-tab layui-tab-brief"><ul class="layui-tab-title">'
+
tab_t
+
'</ul><div class="layui-tab-content">'
+
tab_c
+
'</div></div>'
:
!
$h
.
addClass
(
c
.
space
)
||
''
;
$h
.
html
(
c
.
style
+
html
);
form
.
render
(
null
,
c
.
bid
+
'_form'
);
//显示选中的关联项
$
.
each
(
c
.
relation
,
function
(
i
,
v
){
let
ra
=
$h
.
find
(
'input[name="'
+
v
.
name
+
'"]:checked'
).
val
();
$
(
"[id^='item-"
+
v
.
obj
+
"_"
+
ra
+
"']"
).
show
();
});
b
.
init
();
//回调并监听输入框变化
if
(
typeof
c
.
success
===
'function'
){
c
.
success
(
null
,
'_init_'
);
$h
.
find
(
'input, textarea'
).
on
(
'input'
,
function
()
{
c
.
success
({
value
:
this
.
value
},
this
.
name
);
});
}
},
settwt
:
function
(
data
){
//data: 二维数组[{name:标识,title:标题,group:分组,type:类型,value:值,options:选项},{}]
var
html
=
''
,
str
=
''
,
tab_t
=
''
,
tab_c
=
''
;
// $h = $("#"+ c.bid);
if
(
c
.
fjbid
){
$h
=
$
(
"#"
+
c
.
fjbid
).
find
(
"#"
+
c
.
bid
);
}
else
{
$h
=
$
(
"#"
+
c
.
bid
);
}
f
=
[];
//清空方法组
for
(
var
i
in
data
){
var
d
=
data
[
i
];
str
=
b
.
tpl
(
c
[
d
.
type
],
d
);
// if(d.callBack && typeof d.callBack === 'function') f[d.name] = d.callBack;
html
+=
str
;
}
// html += tab_t ? '<div class="layui-tab layui-tab-brief"><ul class="layui-tab-title">'+tab_t+'</ul><div class="layui-tab-content">'+tab_c+'</div></div>' : !$h.addClass(c.space) || '';
$h
.
html
(
html
);
// form.render(null,c.bid+'_form');
b
.
init
();
},
init
:
function
(){
//渲染时间
b
.
rendTime
();
//渲染标签
b
.
rendTags
();
//渲染地区
b
.
rendAreas
();
//渲染取色器
b
.
rendColorpicker
();
//注册相册
b
.
Photos
();
//注册拖动
b
.
ddSort
();
//注册编图
b
.
regAction
();
//注册图库
b
.
regUpload
();
//注册上传文件
b
.
regUpFile
();
//百度编辑器
b
.
uEditor
();
//MD编辑器
b
.
cherryMd
();
//MD编辑器
b
.
editorMd
();
//TinyMCE编辑器
b
.
TinyMCE
();
},
rendTime
:
function
(){
$h
.
find
(
"[id^='show-date-']"
).
each
(
function
(){
layui
.
laydate
.
render
({
elem
:
'#'
+
$
(
this
).
attr
(
'id'
),
type
:
$
(
this
).
data
(
'type'
),
range
:
$
(
this
).
data
(
'range'
)});
});
},
rendTags
:
function
(){
$h
.
find
(
"[id^='show-tags-']"
).
each
(
function
(){
$
(
'#'
+
$
(
this
).
attr
(
'id'
)).
tagsInput
();
});
},
rendAreas
:
function
(){
if
(
$h
.
find
(
"[id^='areas-']"
).
length
>
0
){
b
.
getCT
(
function
(){
$h
.
find
(
"[id^='areas-']"
).
each
(
function
(){
var
id
=
$
(
this
).
attr
(
'id'
),
name
=
$
(
this
).
attr
(
'name'
);
layui
.
cascader
.
render
({
elem
:
"#"
+
id
,
data
:
cityData
,
itemHeight
:
'260px'
,
filterable
:
true
,
//开启搜索
changeOnSelect
:
true
,
//选择即改变
onChange
:
f
[
name
]
});
});
});
}
},
rendColorpicker
:
function
(){
$h
.
find
(
"[id^='colorpicker-']"
).
each
(
function
(){
var
id
=
$
(
this
).
attr
(
'id'
);
layui
.
colorpicker
.
render
({
elem
:
'#'
+
id
,
color
:
$
(
'#show-'
+
id
).
val
(),
done
:
function
(
color
){
$
(
'#show-'
+
id
).
val
(
color
);}});
});
},
Photos
:
function
(){
$h
.
find
(
"[id^='image-show-']"
).
each
(
function
(){
var
id
=
'#'
+
$
(
this
).
attr
(
'id'
);
layer
.
photos
({
photos
:
id
,
anim
:
1
,
shade
:[
0.4
,
'#000'
]});
});
},
regUpFile
:
function
(){
$h
.
find
(
"[id^='upfile-btn-']"
).
each
(
function
(){
var
id
=
'#'
+
$
(
this
).
attr
(
'id'
),
type
=
$
(
this
).
data
(
'type'
)
||
'file'
;
var
name
=
id
.
split
(
'-'
)[
2
];
layui
.
upload
.
render
({
elem
:
id
,
url
:
c
.
map
+
"upfile?action="
+
type
,
accept
:
"file"
,
done
:
function
(
res
){
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
2000
},
function
(){
if
(
res
.
code
==
1
){
$
(
"#upfile-"
+
name
).
val
(
res
.
data
.
fileurl
);
$
(
"#size-"
+
name
).
val
(
res
.
data
.
filesize
+
'KB'
);
}
});
}
});
layer
.
photos
({
photos
:
id
,
anim
:
1
,
shade
:[
0.4
,
'#000'
]});
});
},
ddSort
:
function
(){
var
ids
=
[];
$h
.
find
(
"[id^='image-show-']"
).
each
(
function
(){
if
(
$
(
this
).
data
(
'type'
)
==
'images'
)
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
$h
.
find
(
"[id^='keyval-show-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
b
.
setArr
(
$
(
this
).
data
(
'name'
));
// 初始赋值到隐藏域
});
if
(
ids
.
length
>
0
){
layui
.
define
(
function
(
e
){
$
=
layui
.
$
;
window
.
jQuery
=
layui
.
$
;
jQuery
.
getScript
(
static
+
"script/ddsort/ddsort.js"
).
done
(
function
(){
e
(
'DDSort'
,
jQuery
);
if
(
ids
.
length
>
0
){
for
(
var
i
in
ids
){
let
rs
=
ids
[
i
].
split
(
"-"
);
$
(
"#"
+
ids
[
i
]).
DDSort
({
target
:
'.'
+
rs
[
0
]
+
'_item'
,
delay
:
100
,
// 延时处理,默认为 50 ms,防止手抖点击 A 链接无效
floatStyle
:{
'border'
:
'1px solid #ccc'
,
'background-color'
:
'#fff'
},
up
:
function
(){
if
(
rs
[
0
]
==
'keyval'
)
b
.
setArr
(
rs
[
2
]);}
});
}
}
}).
fail
(
function
(){
layui
.
hint
().
error
(
'加载DDSort.js失败'
);
});
});
}
},
regAction
:
function
(){
$h
.
find
(
"[id^='image-show-']"
).
on
(
'click'
,
'.image_item .item-edit'
,
function
(){
var
$this
=
$
(
this
);
var
$img
=
$this
.
parent
().
children
(
'img'
);
var
$input
=
$this
.
parent
().
children
(
'input'
);
layui
.
admin
.
cropImg
({
title
:
'编辑图像'
,
imgSrc
:
$img
.
attr
(
'src'
),
aspectRatio
:
0
,
acceptMime
:
'image/*'
,
onCrop
:
function
(
base64
){
var
formData
=
new
FormData
();
var
timestamp
=
Date
.
parse
(
new
Date
());
formData
.
append
(
'file'
,
layui
.
admin
.
util
.
toBlob
(
base64
),
timestamp
+
'.jpg'
);
var
loadIndex
=
layer
.
load
(
2
);
$
.
ajax
({
method
:
"post"
,
url
:
c
.
map
+
"upfile?action=image&groupid="
+
c
.
gid
,
data
:
formData
,
processData
:
false
,
contentType
:
false
,
dataType
:
"json"
,
success
:
function
(
res
){
if
(
res
.
code
==
1
)
{
$img
.
attr
(
'src'
,
base64
);
$input
.
val
(
res
.
data
.
fileurl
);
}
else
{
layer
.
msg
(
res
.
msg
,{
icon
:
2
,
shade
:[
0.4
,
'#000'
],
time
:
1500
});
}
layer
.
close
(
loadIndex
);
}
});
}
});
});
$h
.
find
(
"[id^='image-show-']"
).
on
(
'click'
,
'.image_item .item-delete'
,
function
(){
var
$this
=
$
(
this
),
noClick
=
$this
.
data
(
'noClick'
),
name
=
$this
.
data
(
'name'
);
if
(
noClick
)
{
return
false
;}
layer
.
confirm
(
'您确定要删除该'
+
(
name
?
name
:
'图片'
)
+
'吗?'
,
{
title
:
'友情提示'
},
function
(
index
){
var
pparent
=
$this
.
parent
().
parent
();
$this
.
parent
().
remove
();
if
(
pparent
.
children
().
length
==
0
){
let
name
=
pparent
.
attr
(
'id'
).
replace
(
"image-show-"
,
""
);
pparent
.
html
(
'<input type="hidden" name="'
+
name
+
'" lay-verify="'
+
pparent
.
data
(
'verify'
)
+
'" lay-reqtext="'
+
pparent
.
data
(
'reqtext'
)
+
'"/>'
);
}
layer
.
close
(
index
);
});
});
$h
.
find
(
"[id^='keyval-add-']"
).
on
(
'click'
,
function
(){
var
id
=
$
(
this
).
attr
(
'id'
);
var
name
=
id
.
split
(
'-'
)[
2
];
var
str
=
b
.
tpl
(
c
.
keyval_html
,{
value
:{
''
:
''
}});
$
(
"#keyval-show-"
+
name
).
append
(
str
);
});
$h
.
find
(
"[id^='keyval-show-']"
).
on
(
'click'
,
'.keyval_item .del'
,
function
(){
var
name
=
$
(
this
).
parent
().
parent
().
data
(
'name'
);
$
(
this
).
parent
().
remove
();
b
.
setArr
(
name
);
});
$h
.
find
(
"[id^='keyval-show-']"
).
on
(
'blur'
,
'.keyval_item input'
,
function
(){
b
.
setArr
(
$
(
this
).
parent
().
parent
().
parent
().
data
(
'name'
));
});
},
regUpload
:
function
(){
$h
.
find
(
"[id^='up-image-btn-']"
).
on
(
'click'
,
function
(){
console
.
log
(
$h
);
var
$this
=
$
(
this
);
var
type
=
$this
.
data
(
'type'
);
var
name
=
$this
.
data
(
'name'
);
var
thum
=
$this
.
data
(
'thum'
);
fileLibrary
.
open
({
title
:
'图片管理'
,
thum
:
thum
,
groupid
:
c
.
gid
,
url
:
c
.
map
},
function
(
res
){
if
(
res
.
length
==
0
)
return
;
// var $pbox = $h.find("#image-show-" + name);
var
$pbox
=
$
(
this
).
find
(
"#image-show-"
+
name
);
if
(
type
==
'image'
){
$pbox
.
html
(
'<div class="image_item"><img src="'
+
res
[
0
].
file_path
+
'" /><input type="hidden" name="'
+
name
+
'" value="'
+
res
[
0
].
file_path
+
'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
);
// $htmls = '<div class="image_item"><img src="'+ res[0].file_path +'" /><input type="hidden" name="'+ name +'" value="'+ res[0].file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
// $("#image-show-" + name).html($htmls);
}
else
{
if
(
$pbox
.
children
(
'input'
).
length
>
0
)
$pbox
.
html
(
''
);
for
(
var
i
in
res
){
var
v
=
res
[
i
];
$pbox
.
append
(
'<div class="image_item"><img src="'
+
v
.
file_path
+
'" /><input type="hidden" name="'
+
name
+
'[]" value="'
+
v
.
file_path
+
'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
);
}
// if( $("#image-show-" + name).children('input').length>0) $("#image-show-" + name).html('');
// for(var i in res){
// var v = res[i];
// $("#image-show-" + name).append('<div class="image_item"><img src="'+ v.file_path +'" /><input type="hidden" name="'+ name +'[]" value="'+ v.file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>');
// }
}
b
.
Photos
();
});
});
},
uEditor
:
function
(){
var
ids
=
[];
$h
.
find
(
"[id^='ueditor-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
if
(
ids
.
length
>
0
){
b
.
getUE
(
function
(){
for
(
var
i
in
ids
){
let
eid
=
ids
[
i
],
isOpen
=
$
(
"#"
+
eid
).
parents
(
'.layui-layer-content'
).
length
,
height
=
$
(
"#"
+
eid
).
parent
().
parent
().
height
()
-
110
;
height
=
height
>
200
?
height
:
200
;
UE
.
delEditor
(
eid
);
//先销毁 实现每次重新加载
UE
.
getEditor
(
eid
,{
initialFrameHeight
:
height
,
toolbars
:
[[
'fullscreen'
,
'source'
,
'|'
,
'undo'
,
'redo'
,
'|'
,
'bold'
,
'italic'
,
'underline'
,
'fontborder'
,
'strikethrough'
,
'superscript'
,
'subscript'
,
'removeformat'
,
'pasteplain'
,
'|'
,
'forecolor'
,
'backcolor'
,
'insertorderedlist'
,
'insertunorderedlist'
,
'selectall'
,
'|'
,
'justifyleft'
,
'justifycenter'
,
'justifyright'
,
'justifyjustify'
,
'|'
,
'rowspacingtop'
,
'rowspacingbottom'
,
'lineheight'
,
'|'
,
'fontfamily'
,
'fontsize'
,
'insertcode'
,
'|'
,
'link'
,
'unlink'
,
'|'
,
'imagenone'
,
'imageleft'
,
'imageright'
,
'imagecenter'
,
'|'
,
'insertvideo'
,
'attachment'
,
'map'
,
'|'
,
'inserttable'
,
'deletetable'
,
'insertparagraphbeforetable'
,
'insertrow'
,
'deleterow'
,
'insertcol'
,
'deletecol'
,
'mergecells'
,
'mergeright'
,
'mergedown'
,
'splittocells'
,
'splittorows'
,
'splittocols'
,
'charts'
,
'|'
,
'horizontal'
,
'emotion'
,
'print'
,
'preview'
]],
wordCount
:
false
,
autoFloatEnabled
:
false
,
autosave
:
false
,
//saveInterval: 5000,
zIndex
:
isOpen
?
19991000
:
999
,
cpos
:
isOpen
?
'fixed'
:
''
,
//isOpen来判断是否为弹窗 弹出窗口中编辑器兼容可全屏
UEDITOR_HOME_URL
:
static
+
'ueditor/'
,
serverUrl
:
c
.
map
+
'ueditor?groupid='
+
c
.
gid
});
UE
.
registerUI
(
'插入图片'
,
function
(
editor
,
uiName
){
var
btn
=
new
UE
.
ui
.
Button
({
name
:
uiName
,
title
:
uiName
,
cssRules
:
'background-position:-380px 0;'
,
onclick
:
function
(){
fileLibrary
.
open
({
title
:
'图片管理'
,
groupid
:
c
.
gid
,
url
:
c
.
map
},
function
(
res
){
if
(
res
.
length
==
0
)
return
;
var
html
=
''
;
for
(
var
i
in
res
){
var
v
=
res
[
i
];
html
=
html
+
'<p><img src="'
+
v
.
file_path
+
'" /></p>'
;
}
editor
.
execCommand
(
'insertHtml'
,
html
);
});
}
});
editor
.
addListener
(
'selectionchange'
,
function
(){
//源码模式时按钮变灰切换
var
state
=
editor
.
queryCommandState
(
uiName
);
if
(
state
==
-
1
){
btn
.
setDisabled
(
true
);
btn
.
setChecked
(
false
);}
else
{
btn
.
setDisabled
(
false
);
btn
.
setChecked
(
state
);}
});
return
btn
;
},
43
);
};
});
}
},
cherryMd
:
function
(){
var
ids
=
[],
obj
=
[];
$h
.
find
(
"[id^='cherrymd-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
if
(
ids
.
length
>
0
){
b
.
getCM
(
function
(){
for
(
var
i
in
ids
){
let
eid
=
ids
[
i
],
heg
=
$
(
"#"
+
eid
).
parent
().
parent
().
height
()
-
10
;
heg
=
heg
>
400
?
heg
:
400
;
let
name
=
eid
.
split
(
"-"
)[
1
],
k
=
i
;
obj
[
i
]
=
new
Cherry
({
id
:
eid
,
engine
:{
syntax
:{
codeBlock
:{
wrap
:
false
}}},
editor
:{
height
:
heg
+
'px'
,
id
:
name
,
name
:
name
,
value
:
$
(
'#temp-'
+
name
).
val
(),
autoSave2Textarea
:
true
,
codemirror
:{
autofocus
:
false
}},
callback
:{
afterInit
:
function
(){
$
(
"textarea[name='"
+
name
+
"']"
)[
0
].
value
=
$
(
'#temp-'
+
name
).
val
();}},
toolbars
:{
toolbar
:
[
'bold'
,
'italic'
,
'strikethrough'
,
'justify'
,
'|'
,
'header'
,
'list'
,
'panel'
,
'graph'
,
'|'
,
'vimg'
,{
insert
:[
'vado'
,
'vido'
,
'br'
,
'code'
,
'table'
,
'line-table'
,
'bar-table'
,
'link'
,
'linkOut'
,
'hr'
,
'detail'
]},
'export'
,
'settings'
],
toolbarRight
:
[
'fullScreen'
],
sidebar
:
[
'mobilePreview'
,
'copy'
,
'theme'
],
customMenu
:{
vimg
:
Cherry
.
createMenuHook
(
'图库'
,{
onClick
:
function
(){
fileLibrary
.
open
({
title
:
'图片管理'
,
groupid
:
c
.
gid
,
url
:
c
.
map
},
function
(
res
){
if
(
res
.
length
==
0
)
return
;
var
html
=
''
,
v
=
''
;
for
(
var
n
in
res
){
v
=
res
[
n
];
html
=
html
+
'
\
n'
;
}
obj
[
k
].
insert
(
html
);
});
}}),
vido
:
Cherry
.
createMenuHook
(
'视频'
,{
iconName
:
'video'
,
onClick
:
function
(){
return
'!video[描述](url){poster=封面}'
;}}),
vado
:
Cherry
.
createMenuHook
(
'音频'
,{
iconName
:
'video'
,
onClick
:
function
(){
return
'!audio[描述](url)'
;}}),
linkOut
:
Cherry
.
createMenuHook
(
'外链接'
,{
iconName
:
'link'
,
onClick
:
function
(){
return
'[https://www.veitool.com](https://www.veitool.com){target=_blank}'
;}})
}
}
});
}
});
}
},
editorMd
:
function
(){
var
ids
=
[];
$h
.
find
(
"[id^='editormd-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
if
(
ids
.
length
>
0
){
b
.
getEM
(
function
(){
for
(
var
i
in
ids
){
let
heg
=
$
(
"#"
+
ids
[
i
]).
parent
().
parent
().
height
()
-
10
;
heg
=
heg
>
400
?
heg
:
400
;
editormd
(
ids
[
i
],{
width
:
"100%"
,
height
:
heg
,
emoji
:
true
,
tex
:
true
,
codeFold
:
true
,
flowChart
:
true
,
htmlDecode
:
true
,
sequenceDiagram
:
true
,
//saveHTMLToTextarea : true,
path
:
static
+
"editormd/lib/"
,
toolbarIcons
:
function
(){
return
[
"undo"
,
"redo"
,
"|"
,
"bold"
,
"del"
,
"italic"
,
"quote"
,
"ucwords"
,
"uppercase"
,
"lowercase"
,
"|"
,
"h1"
,
"h2"
,
"h3"
,
"h4"
,
"h5"
,
"h6"
,
"|"
,
"list-ul"
,
"list-ol"
,
"hr"
,
"link"
,
"reference-link"
,
"file"
,
"|"
,
"code"
,
"preformatted-text"
,
"code-block"
,
"table"
,
"html-entities"
,
"watch"
,
"preview"
,
"clear"
,
"fullscreen"
,
"help"
]
},
toolbarIconsClass
:{
file
:
"fa-picture-o"
},
toolbarHandlers
:{
file
:
function
(
cm
){
fileLibrary
.
open
({
title
:
'图片管理'
,
groupid
:
c
.
gid
,
url
:
c
.
map
},
function
(
res
){
if
(
res
.
length
==
0
)
return
;
var
html
=
''
,
v
=
''
;
for
(
var
i
in
res
){
v
=
res
[
i
];
html
=
html
+
'<p><img src="'
+
v
.
file_path
+
'" /></p>'
;
}
cm
.
replaceSelection
(
"[](https://www.veitool.com
\"
说明
\"
)"
);
});
}
}
});
}
});
}
},
TinyMCE
:
function
(){
var
ids
=
[];
$h
.
find
(
"[id^='tinymce-']"
).
each
(
function
(){
ids
.
push
(
$
(
this
).
attr
(
'id'
));
});
if
(
ids
.
length
>
0
){
b
.
getTE
(
function
(){
tinymce
.
remove
();
for
(
var
i
in
ids
){
let
heg
=
$
(
"#"
+
ids
[
i
]).
height
();
heg
=
heg
>
400
?
heg
:
400
;
tinymce
.
init
({
selector
:
'#'
+
ids
[
i
],
min_height
:
heg
,
suffix
:
'.min'
,
branding
:
false
,
language
:
'zh_CN'
,
base_url
:
static
+
'tinymce'
,
relative_urls
:
false
,
plugins
:
'preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media template code codesample charmap pagebreak nonbreaking anchor insertdatetime table advlist lists wordcount help emoticons autosave autoresize vimgs'
,
toolbar
:
'code undo redo forecolor backcolor bold italic underline strikethrough removeformat image vimgs media link | alignleft aligncenter alignright alignjustify lineheight fullscreen |
\
styles blocks fontfamily fontsize | outdent indent bullist numlist blockquote'
,
font_size_formats
:
'12px 14px 16px 18px 24px 36px 48px 56px 72px'
,
font_family_formats
:
'微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif;仿宋体=FangSong,serif;黑体=SimHei,sans-serif;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;'
,
file_picker_callback
:
function
(
callback
,
value
,
meta
){
var
upurl
=
c
.
map
+
"upfile?action=image&groupid="
+
c
.
gid
;
var
filetype
=
'.jpg, .jpeg, .png, .gif'
;
if
(
meta
.
filetype
===
'file'
){
upurl
=
c
.
map
+
"upfile?action=file&groupid="
+
c
.
gid
;
filetype
=
'.pdf, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .ppt, .pptx'
;
}
else
if
(
meta
.
filetype
===
'media'
){
upurl
=
c
.
map
+
"upfile?action=video&groupid="
+
c
.
gid
;
filetype
=
'.mp3, .mp4'
;
}
var
input
=
document
.
createElement
(
'input'
);
input
.
setAttribute
(
'type'
,
'file'
);
input
.
setAttribute
(
'accept'
,
filetype
);
input
.
click
();
/*模拟出一个input用于添加本地文件*/
input
.
onchange
=
function
(){
var
xhr
=
new
XMLHttpRequest
(),
formData
=
new
FormData
(),
file
=
this
.
files
[
0
];
xhr
.
withCredentials
=
false
;
xhr
.
open
(
'POST'
,
upurl
);
xhr
.
onload
=
function
(){
if
(
xhr
.
status
!=
200
){
alert
(
'HTTP Error: '
+
xhr
.
status
);
return
;
}
var
res
=
JSON
.
parse
(
xhr
.
responseText
);
if
(
!
res
||
typeof
res
.
data
.
fileurl
!=
'string'
){
alert
(
'Invalid JSON: '
+
xhr
.
responseText
);
return
;
}
callback
(
res
.
data
.
fileurl
,{
title
:
file
.
name
});
};
formData
.
append
(
'file'
,
file
,
file
.
name
);
xhr
.
send
(
formData
);
};
},
vimgs_upload_hander
:
function
(
editor
){
fileLibrary
.
open
({
title
:
'图片管理'
,
groupid
:
c
.
gid
,
url
:
c
.
map
},
function
(
res
){
if
(
res
.
length
==
0
)
return
;
var
html
=
''
;
for
(
var
i
in
res
){
var
v
=
res
[
i
];
html
=
html
+
'<p><img src="'
+
v
.
file_path
+
'" /></p>'
;
}
editor
.
insertContent
(
html
);
});
},
setup
:
function
(
editor
){
editor
.
on
(
'change'
,
function
(){
editor
.
save
();})}
});
}
});
}
},
getCT
:
function
(
success
){
if
(
window
.
cityData
){
typeof
success
===
'function'
&&
success
();
}
else
{
$
.
getScript
(
static
+
"script/cityData.js"
,
function
(){
window
.
cityData
=
cityData
;
typeof
success
===
'function'
&&
success
();
});
}
},
getUE
:
function
(
success
){
if
(
window
.
UE
){
typeof
success
===
'function'
&&
setTimeout
(
function
(){
success
()},
100
);
}
else
{
$
.
getScript
(
static
+
"ueditor/ueditor.all.min.js"
,
function
(){
window
.
UE
=
UE
;
typeof
success
===
'function'
&&
success
();
});
}
},
getCM
:
function
(
success
){
if
(
window
.
Cherry
){
typeof
success
===
'function'
&&
setTimeout
(
function
(){
success
()},
500
);
/*延迟:解决存在于OPEN窗口中时编辑区的渲染尺寸问题*/
}
else
{
layui
.
link
(
static
+
"cherrymd/cherry-markdown.min.css"
);
$
.
getScript
(
static
+
"cherrymd/cherry-markdown.min.js"
,
function
(){
window
.
Cherry
=
Cherry
;
typeof
success
===
'function'
&&
success
();
});
}
},
getEM
:
function
(
success
){
if
(
window
.
editormd
){
typeof
success
===
'function'
&&
setTimeout
(
function
(){
success
()},
100
);
}
else
{
layui
.
link
(
static
+
"editormd/css/editormd.min.css"
);
$
.
getScript
(
static
+
"editormd/editormd.min.js"
,
function
(){
window
.
editormd
=
editormd
;
typeof
success
===
'function'
&&
success
();
});
}
},
getTE
:
function
(
success
){
if
(
window
.
tinymce
){
typeof
success
===
'function'
&&
success
();
}
else
{
$
.
getScript
(
static
+
"tinymce/tinymce.min.js"
,
function
(){
window
.
tinymce
=
tinymce
;
typeof
success
===
'function'
&&
success
();
});
}
},
setArr
:
function
(
name
){
var
obj
=
{},
val
;
$h
.
find
(
"#keyval-show-"
+
name
+
" .keyval_item"
).
each
(
function
(){
let
key
=
$
(
this
).
find
(
"input:eq(0)"
).
val
();
if
(
key
)
obj
[
key
]
=
$
(
this
).
find
(
"input:eq(1)"
).
val
();
});
val
=
JSON
.
stringify
(
obj
);
$
(
"#keyval-input-"
+
name
).
val
(
val
===
'{}'
?
''
:
val
);
},
tpl
:
function
(
t
,
d
){
var
h
=
''
;
layui
.
laytpl
(
t
).
render
(
d
,
function
(
r
){
h
=
r
;});
return
h
;}
};
e
(
"buildItems"
,
b
);
});
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment