rabin 10 months ago
commit
903ef1e6f3
100 changed files with 8567 additions and 0 deletions
  1. 2 0
      app/boot.php
  2. 490 0
      app/content/database/album.php
  3. 489 0
      app/content/database/article.php
  4. 152 0
      app/content/database/author.php
  5. 205 0
      app/content/database/cate.php
  6. 483 0
      app/content/database/person.php
  7. 204 0
      app/content/database/search.php
  8. 153 0
      app/content/database/source.php
  9. 500 0
      app/content/database/video.php
  10. 8 0
      app/content/index.php
  11. 148 0
      app/content/lib/Album.php
  12. 245 0
      app/content/lib/Article.php
  13. 76 0
      app/content/lib/Author.php
  14. 15 0
      app/content/lib/Cate.php
  15. 30 0
      app/content/lib/Common.php
  16. 60 0
      app/content/lib/Manage.php
  17. 97 0
      app/content/lib/Person.php
  18. 79 0
      app/content/lib/Search.php
  19. 76 0
      app/content/lib/Source.php
  20. 130 0
      app/content/lib/Video.php
  21. 8 0
      boot.php
  22. 2 0
      common.php
  23. 87 0
      config/base.php
  24. 162 0
      config/env/localhost/default.php
  25. 6 0
      config/route.php
  26. 90 0
      data/compile/news/main/default/blog.cmp.php
  27. 192 0
      data/compile/news/main/default/blog_info.cmp.php
  28. 206 0
      data/compile/news/main/default/index.cmp.php
  29. 125 0
      data/compile/news/main/default/search_list.cmp.php
  30. 321 0
      data/compile/news/manage/layadmin/console.cmp.php
  31. 66 0
      data/compile/news/manage/layadmin/home.cmp.php
  32. 33 0
      data/compile/news/manage/layadmin/inc/head.cmp.php
  33. 13 0
      data/compile/news/manage/layadmin/inc/menu.cmp.php
  34. 71 0
      data/compile/news/manage/layadmin/inc/nav.cmp.php
  35. 44 0
      data/compile/news/manage/layadmin/inc/script.cmp.php
  36. 79 0
      data/compile/news/manage/layadmin/login.cmp.php
  37. 262 0
      data/compile/news/manage/layadmin/project/database/list.cmp.php
  38. 239 0
      data/compile/news/manage/layadmin/project/database/update.cmp.php
  39. 396 0
      data/compile/news/upload/manage.cmp.php
  40. 102 0
      data/compile/news/upload/show.cmp.php
  41. 36 0
      data/database/news/news_content_album.php
  42. 34 0
      data/database/news/news_content_article.php
  43. 17 0
      data/database/news/news_content_author.php
  44. 18 0
      data/database/news/news_content_cate.php
  45. 34 0
      data/database/news/news_content_person.php
  46. 18 0
      data/database/news/news_content_search.php
  47. 17 0
      data/database/news/news_content_source.php
  48. 37 0
      data/database/news/news_content_video.php
  49. 24 0
      data/database/news/news_main_config.php
  50. 14 0
      data/database/news/news_main_page.php
  51. 23 0
      data/database/news/news_manage_admin.php
  52. 12 0
      data/database/news/news_manage_admin_role.php
  53. 16 0
      data/database/news/news_manage_api.php
  54. 17 0
      data/database/news/news_manage_auth.php
  55. 15 0
      data/database/news/news_manage_company.php
  56. 19 0
      data/database/news/news_manage_config.php
  57. 16 0
      data/database/news/news_manage_cron.php
  58. 16 0
      data/database/news/news_manage_group.php
  59. 21 0
      data/database/news/news_manage_log.php
  60. 22 0
      data/database/news/news_manage_menu.php
  61. 15 0
      data/database/news/news_manage_menu_func.php
  62. 15 0
      data/database/news/news_manage_menu_group.php
  63. 15 0
      data/database/news/news_manage_notice.php
  64. 20 0
      data/database/news/news_manage_opt.php
  65. 26 0
      data/database/news/news_manage_role.php
  66. 19 0
      data/database/news/news_push_col.php
  67. 16 0
      data/database/news/news_push_data.php
  68. 16 0
      data/database/news/news_push_func.php
  69. 18 0
      data/database/news/news_push_info.php
  70. 16 0
      data/database/news/news_tag_info.php
  71. 13 0
      data/database/news/news_upload_cate.php
  72. 34 0
      data/database/news/news_upload_file.php
  73. 25 0
      data/database/news/news_upload_upload.php
  74. 20 0
      data/database/news/news_upload_yun.php
  75. 66 0
      data/project/news.php
  76. 1 0
      data/readme
  77. 156 0
      data/upload.php
  78. BIN
      favicon.ico
  79. 2 0
      index.php
  80. 126 0
      main/assets/default/about.html
  81. 226 0
      main/assets/default/all_list.html
  82. 237 0
      main/assets/default/blog.html
  83. 223 0
      main/assets/default/blog_info.html
  84. 489 0
      main/assets/default/css/base.css
  85. 0 0
      main/assets/default/css/jquery.fancybox.css
  86. 201 0
      main/assets/default/css/m.css
  87. BIN
      main/assets/default/images/01.jpg
  88. BIN
      main/assets/default/images/02.jpg
  89. BIN
      main/assets/default/images/03.jpg
  90. BIN
      main/assets/default/images/04.jpg
  91. BIN
      main/assets/default/images/05.jpg
  92. BIN
      main/assets/default/images/06.jpg
  93. BIN
      main/assets/default/images/ad01.jpg
  94. BIN
      main/assets/default/images/ad3.jpg
  95. BIN
      main/assets/default/images/ads.png
  96. BIN
      main/assets/default/images/ads2.png
  97. BIN
      main/assets/default/images/avatar.png
  98. BIN
      main/assets/default/images/fire.png
  99. BIN
      main/assets/default/images/ga.png
  100. BIN
      main/assets/default/images/icon_clock.png

+ 2 - 0
app/boot.php

@@ -0,0 +1,2 @@
+<?php
+include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '../boot.php');

+ 490 - 0
app/content/database/album.php

@@ -0,0 +1,490 @@
+<?php
+
+$status = Dever::config('base')->status;
+
+# 每页的数据量
+$page = 10;
+
+$cate = function()
+{
+	$array = array();
+	$info = Dever::db('content/cate')->select(array('type' => 2));
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+
+$author = function()
+{
+	$array = array();
+	$info = Dever::db('content/author')->state();
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+
+$yes = array
+(
+    1 => '是',
+    2 => '否',
+);
+
+# 常用的col
+$col = 'id,cate_id,name,pic_cover,pic,num_add_view+num_view as num_view,num_add_up+num_up as num_up,author_id,`desc`,pdate,cdate,tag';
+
+return array
+(
+	# 表名
+	'name' => 'album',
+	# 显示给用户看的名称
+	'lang' => '相册管理',
+	'order' => 99,
+
+	# 同步更新另外一个或多个表的数据
+	'syncone' => array
+	(
+		'content/search' => array
+		(
+			# 更新另外一个表的字段 => 本表的字段
+			'where' => array('data_id' => 'id', 'type' => 2),
+			# 要更新的数据
+			'update' => array('data_id' => 'id', 'type' => 2, 'pdate' => 'pdate', 'reorder' => 'reorder', 'name' => 'name', 'status' => 'status', 'cate_id' => 'cate_id', 'state' => 'state'),
+		)
+	),
+
+	'end' => array
+	(
+		'insert' => array('content/lib/author.data?source_table=content/album','tag/lib/core.data?source_table=content/album'),
+		'update' => array('content/lib/author.data?source_table=content/album','tag/lib/core.data?source_table=content/album'),
+	),
+
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-80',
+			'name' 		=> '标题',
+			'default' 	=> '',
+			'desc' 		=> '标题',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'list'		=> true,
+			'search'	=> 'fulltext',
+			//增加预览
+			'preview'	=> true,
+		),
+
+		'desc'		=> array
+		(
+			'type' 		=> 'varchar-500',
+			'name' 		=> '摘要',
+			'default' 	=> '',
+			'desc' 		=> '摘要',
+			'match' 	=> 'is_string',
+			'update'	=> 'textarea',
+		),
+
+		'cate_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '所属栏目',
+			'default' 	=> '1',
+			'desc' 		=> '所属栏目',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'option'	=> $cate,
+			'search'	=> 'select',
+			'list'		=> 'Dever::load("content/cate-one#name", {cate_id})',
+		),
+
+		'author_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '作者',
+			'default' 	=> '1',
+			'desc' 		=> '作者',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			//'option'	=> $author,
+			'search'	=> 'select',
+			'update_search'	=> 'content/lib/author.search',
+		),
+
+  		'pic_cover'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '封面图',
+			'default' 	=> '',
+			'desc' 		=> '封面图',
+			'match' 	=> 'option',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '345*200',
+		),
+
+		'pic'		=> array
+		(
+			'type' 		=> 'text-255',
+			'name' 		=> '多张图片',
+			'default' 	=> '',
+			'desc' 		=> '多张图片',
+			'match' 	=> 'option',
+			'update'	=> 'images',
+			'key' 		=> '1',
+			//'place'		=> '345*200',
+		),
+
+		'tag'		=> array
+		(
+			'type' 		=> 'text-255',
+			'name' 		=> '标签',
+			'default' 	=> '',
+			'desc' 		=> '标签',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'selects',
+			//'search'	=> 'fulltext',
+			'update_search'	=> 'tag/lib/core.search',
+		),
+
+		'num_add_view'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '浏览量基数',
+			'default' 	=> '0',
+			'desc' 		=> '浏览量基数',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'num_view'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '浏览量',
+			'default' 	=> '0',
+			'desc' 		=> '请填写浏览量',
+			'match' 	=> 'option',
+			'search'	=> 'order',
+			'list'		=> '{num_view}+{num_add_view}',
+		),
+
+		'num_add_up'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '点赞量基数',
+			'default' 	=> '0',
+			'desc' 		=> '点赞量基数',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'num_up'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '点赞量',
+			'default' 	=> '0',
+			'desc' 		=> '请填写点赞量',
+			'match' 	=> 'option',
+			'search'	=> 'order',
+			'list'		=> '{num_up}+{num_add_up}',
+		),
+
+		'top'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '是否精选推荐',
+            'default'   => '2',
+            'desc'      => '是否精选推荐',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $yes,
+        ),
+
+		'pdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布时间',
+			'match' 	=> array('is_numeric', time()),
+			'default'	=> '',
+			'desc' 		=> '',
+			'update'	=> 'date',
+			'callback'	=> 'maketime',
+			'insert'	=> true,
+			//'list'		=> 'date("Y-m-d H:i:s", {pdate})',
+			'auth'		=> '"{pdate}" > 0',
+		),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'udate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '更新时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+		),
+
+		'status'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布状态',
+			'default' 	=> '1',
+			'desc' 		=> '发布状态',
+			'match' 	=> 'is_numeric',
+			//'update'	=> 'select',
+			'option'	=> $status,
+			'search'	=> 'select',
+			'list'		=> true,
+			'edit'		=> true,
+		),
+
+		'spider_data_id'=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '采集数据id',
+			'default' 	=> '0',
+			'desc' 		=> '采集数据id',
+			'match' 	=> 'is_numeric',
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+
+		'admin_founder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '创建人',
+			'default' 	=> '1',
+			'desc' 		=> '创建人',
+			'match' 	=> 'is_numeric',
+		),
+
+		'admin_editor'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '操作人',
+			'default' 	=> '1',
+			'desc' 		=> '操作人',
+			'match' 	=> 'is_numeric',
+		),
+
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+		),
+	),
+
+	# 索引
+	'index' => array
+	(
+		'version' => 1,
+		
+		1 => array
+		(
+			'i1' => 'cate_id,reorder',
+		)
+	),
+	
+	# 管理功能
+	'manage' => array
+	(
+		//'insert' => false,
+		# 列表
+		'list_button' => array
+		(
+			//'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=1'))),
+		),
+	),
+
+	# request 请求接口定义
+	'request' => array
+	(
+		'search' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'ids' => array('yes-id', 'in'),
+				'cate_id' => 'yes',
+				'name' => array('yes', 'like'),
+				'id' => 'yes',
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'pdate' => 'desc'),
+			'limit' => '0,1000',
+			'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+		),
+
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'cate_ids' => array('yes-cate_id', 'in'),
+				'id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'page' => array($page, 'list'),
+			'col' => $col,
+		),
+
+		'getList' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('pdate' => 'desc'),
+			'limit' => '0,5',
+			'col' => $col,
+		),
+
+		# 获取首页推荐
+		'getTop' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('top' => 'asc', 'reorder' => 'desc','pdate' => 'desc'),
+			'limit' => '0,4',
+			'col' => $col,
+		),
+
+		'getRelation' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'cate_ids' => array('yes-cate_id', 'in'),
+				'noid' => array('yes-id', '!='),
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'limit' => '0,2',
+			'col' => $col,
+		),
+
+		'getOne' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'type' => 'one',
+			'col' => $col,
+		),
+		
+		# 更新浏览量
+		'addView' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_view' => array('1', '+='),
+			),
+		),
+
+		# 更新点赞量
+		'addUp' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_up' => array('1', '+='),
+			),
+		),
+
+		'findPrev' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'cate_id' => 'yes',
+				'id' => array('yes', '<'),
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'one',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'col' => $col,
+		),
+
+		'findNext' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'cate_id' => 'yes',
+				'id' => array('yes', '>'),
+				'status' => 1,
+				'state' => 1,
+			),
+			'order' => array('reorder' => 'asc','pdate' => 'asc'),
+			'type' => 'one',
+			'col' => $col,
+		),
+	),
+);

+ 489 - 0
app/content/database/article.php

@@ -0,0 +1,489 @@
+<?php
+
+$status = Dever::config('base')->status;
+
+# 每页的数据量
+$page = 15;
+
+$cate = function()
+{
+	$array = array();
+	$info = Dever::db('content/cate')->select(array('type' => 1));
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+
+$author = function()
+{
+	$array = array();
+	$info = Dever::db('content/author')->state();
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+
+$yes = array
+(
+    1 => '是',
+    2 => '否',
+);
+
+# 常用的col
+$col = 'id,cate_id,name,pic_cover,num_add_view+num_view as num_view,content,author_id,`desc`,pdate,cdate,tag';
+
+return array
+(
+	# 表名
+	'name' => 'article',
+	# 显示给用户看的名称
+	'lang' => '文章管理',
+	'order' => 100,
+
+	# 同步更新另外一个或多个表的数据
+	'syncone' => array
+	(
+		'content/search' => array
+		(
+			# 更新另外一个表的字段 => 本表的字段
+			'where' => array('data_id' => 'id', 'type' => 1),
+			# 要更新的数据
+			'update' => array('data_id' => 'id', 'type' => 1, 'pdate' => 'pdate', 'reorder' => 'reorder', 'name' => 'name', 'status' => 'status', 'cate_id' => 'cate_id', 'state' => 'state'),
+		)
+	),
+
+	'end' => array
+	(
+		'insert' => array('content/lib/author.data?source_table=content/article','tag/lib/core.data?source_table=content/article'),
+		'update' => array('content/lib/author.data?source_table=content/article','tag/lib/core.data?source_table=content/article'),
+	),
+
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-80',
+			'name' 		=> '标题',
+			'default' 	=> '',
+			'desc' 		=> '标题',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'list'		=> true,
+			'search'	=> 'fulltext',
+			//增加预览
+			'preview'	=> true,
+		),
+
+		'desc'		=> array
+		(
+			'type' 		=> 'varchar-500',
+			'name' 		=> '摘要',
+			'default' 	=> '',
+			'desc' 		=> '摘要',
+			'match' 	=> 'is_string',
+			'update'	=> 'textarea',
+		),
+		
+		'cate_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '所属栏目',
+			'default' 	=> '1',
+			'desc' 		=> '所属栏目',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'option'	=> $cate,
+			'search'	=> 'select',
+			'list'		=> 'Dever::load("content/cate-one#name", {cate_id})',
+		),
+
+		'author_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '作者',
+			'default' 	=> '1',
+			'desc' 		=> '作者',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			//'option'	=> $author,
+			'search'	=> 'select',
+			'update_search'	=> 'content/lib/author.search',
+		),
+
+  		'pic_cover'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '封面图',
+			'default' 	=> '',
+			'desc' 		=> '封面图',
+			'match' 	=> 'option',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '210*158',
+		),
+
+		'tag'		=> array
+		(
+			'type' 		=> 'text-255',
+			'name' 		=> '标签',
+			'default' 	=> '',
+			'desc' 		=> '标签',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'selects',
+			//'search'	=> 'fulltext',
+			'update_search'	=> 'tag/lib/core.search',
+		),
+
+		'num_add_view'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '浏览量基数',
+			'default' 	=> '0',
+			'desc' 		=> '浏览量基数',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'num_view'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '浏览量',
+			'default' 	=> '0',
+			'desc' 		=> '请填写浏览量',
+			'match' 	=> 'option',
+			'search'	=> 'order',
+			'list'		=> '{num_view}+{num_add_view}',
+		),
+
+		'top'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '是否精选推荐',
+            'default'   => '2',
+            'desc'      => '是否精选推荐',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $yes,
+        ),
+
+		'pdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布时间',
+			'match' 	=> array('is_numeric', time()),
+			'default'	=> '',
+			'desc' 		=> '',
+			'update'	=> 'date',
+			'callback'	=> 'maketime',
+			'insert'	=> true,
+			//'list'		=> 'date("Y-m-d H:i:s", {pdate})',
+			'auth'		=> '"{pdate}" > 0',
+		),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'udate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '更新时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+		),
+
+		'content'		=> array
+		(
+			'type' 		=> 'text-255',
+			'name' 		=> '内容',
+			'default' 	=> '',
+			'desc' 		=> '请输入内容',
+			'match' 	=> 'is_string',
+			'update'	=> 'editor',
+			'key'		=> '1',
+			//自定义编辑器右侧按钮
+			'editors'	=> array
+			(
+				'name' => '选择插入模块',
+				'button' => array
+				(
+					array
+					(
+						'name' => '视频',
+						'key' => 'content/lib/video.get',
+					),
+				),
+			),
+		),
+
+		'status'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布状态',
+			'default' 	=> '1',
+			'desc' 		=> '发布状态',
+			'match' 	=> 'is_numeric',
+			//'update'	=> 'select',
+			'option'	=> $status,
+			'search'	=> 'select',
+			'list'		=> true,
+			'edit'		=> true,
+		),
+
+		'spider_data_id'=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '采集数据id',
+			'default' 	=> '0',
+			'desc' 		=> '采集数据id',
+			'match' 	=> 'is_numeric',
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+
+		'admin_founder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '创建人',
+			'default' 	=> '1',
+			'desc' 		=> '创建人',
+			'match' 	=> 'is_numeric',
+		),
+
+		'admin_editor'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '操作人',
+			'default' 	=> '1',
+			'desc' 		=> '操作人',
+			'match' 	=> 'is_numeric',
+		),
+
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+		),
+	),
+
+	# 索引
+	'index' => array
+	(
+		'version' => 1,
+		
+		1 => array
+		(
+			'i1' => 'cate_id,reorder',
+		)
+	),
+	
+	# 管理功能
+	'manage' => array
+	(
+		'button' => array
+        (
+        	//'栏目管理' => array('list', 'cate&oper_parent=article'),
+        ),
+		//'insert' => false,
+		# 列表
+		'list_button' => array
+		(
+			//'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=1'))),
+		),
+	),
+
+	# request 请求接口定义
+	'request' => array
+	(
+		'search' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'ids' => array('yes-id', 'in'),
+				'cate_id' => 'yes',
+				'name' => array('yes', 'like'),
+				'id' => 'yes',
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'pdate' => 'desc'),
+			'limit' => '0,1000',
+			'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+		),
+
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'cate_ids' => array('yes-cate_id', 'in'),
+				'id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'page' => array($page, 'list'),
+			'col' => $col,
+		),
+
+		'findPrev' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'cate_id' => 'yes',
+				'id' => array('yes', '<'),
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'one',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'col' => $col,
+		),
+
+		'findNext' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'cate_id' => 'yes',
+				'id' => array('yes', '>'),
+				'status' => 1,
+				'state' => 1,
+			),
+			'order' => array('reorder' => 'asc','pdate' => 'asc'),
+			'type' => 'one',
+			'col' => $col,
+		),
+
+		'getDataByNum' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'cate_ids' => array('yes-cate_id', 'in'),
+				'id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('num_view`+`num_add_view' => 'desc','reorder' => 'desc','pdate' => 'desc'),
+			'limit' => '0,10',
+			'col' => $col,
+		),
+
+		'getList' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('pdate' => 'desc'),
+			'limit' => '0,12',
+			'col' => $col,
+		),
+
+		# 获取首页推荐
+		'getTop' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('top' => 'asc', 'reorder' => 'desc','pdate' => 'desc'),
+			'limit' => '0,4',
+			'col' => $col,
+		),
+
+		'getRelation' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'cate_ids' => array('yes-cate_id', 'in'),
+				'noid' => array('yes-id', '!='),
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'limit' => '0,6',
+			'col' => $col,
+		),
+
+		'getOne' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'id' => 'yes',
+				'state' => 1,
+			),
+			'type' => 'one',
+			'col' => $col,
+		),
+		
+		# 更新浏览量
+		'addView' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_view' => array('1', '+='),
+			),
+		),
+	),
+);

+ 152 - 0
app/content/database/author.php

@@ -0,0 +1,152 @@
+<?php
+
+return array
+(
+	# 表名
+	'name' => 'author',
+	# 显示给用户看的名称
+	'lang' => '作者管理',
+	# 后台菜单排序
+	'order' => 8,
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-32',
+			'name' 		=> '作者名称-长度不能超过16个汉字',
+			'default' 	=> '',
+			'desc' 		=> '请输入作者名称,长度不能超过16个汉字',
+			'match' 	=> Dever::rule('name', '/u', '1,16'),
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'desc'		=> array
+		(
+			'type' 		=> 'varchar-500',
+			'name' 		=> '介绍',
+			'default' 	=> '',
+			'desc' 		=> '介绍',
+			'match' 	=> 'is_string',
+			'update'	=> 'textarea',
+		),
+
+		'avatar'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '作者头像-图片尺寸150*150px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+            'default'   => '',
+            'desc'      => '作者头像',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '150*150',
+        ),
+
+        'link'      => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '链接',
+            'default'   => '',
+            'desc'      => '链接',
+            'match'     => 'option',
+            'update'    => 'text',
+            //'search'  => 'fulltext',
+            //'list'        => true,
+        ),
+		
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+
+	# 默认值
+	'default' => array
+	(
+		'col' => 'name,state,cdate',
+		'value' => array
+		(
+			'"默认作者",1,' . time(),
+		),
+	),
+
+	'manage' => array
+	(
+		'insert' => false,
+		'edit' => false,
+
+		# 自定义快捷新增和编辑
+		'button' => array
+		(
+			'新增' => array('fast'),
+		),
+		# 快捷更新
+		'list_button' => array
+		(
+			'edit' => array('编辑'),
+		),
+	),
+
+	'request' => array
+	(
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'ids' => array('yes-id', 'in'),
+				'name' => array('yes', 'like'),
+				'id' => 'yes',
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'id' => 'desc'),
+			'limit' => '0,1000',
+			'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+		),
+	),
+);

+ 205 - 0
app/content/database/cate.php

@@ -0,0 +1,205 @@
+<?php
+
+$cate = function()
+{
+    $array = array(-1 => array('name' => '父级栏目'));
+    $cate = Dever::load('content/cate-get');
+    if($cate)
+    {
+        $array += $cate;
+    }
+    return $array;
+};
+
+$type = array
+(
+    1 => '文章',
+    2 => '相册',
+    3 => '视频',
+);
+
+$menu = array
+(
+    1 => '是',
+    2 => '否',
+);
+
+return array
+(
+    # 表名
+    'name' => 'cate',
+    # 显示给用户看的名称
+    'lang' => '栏目设置',
+    # 后台菜单排序
+    'order' => 9,
+
+    # 数据结构
+    'struct' => array
+    (
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'desc',
+        ),
+        
+        'name'      => array
+        (
+            'type'      => 'varchar-32',
+            'name'      => '栏目名称',
+            'default'   => '',
+            'desc'      => '请输入名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'cate_id'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '上级栏目',
+            'default'   => '-1',
+            'desc'      => '请选择上级栏目',
+            'match'     => 'is_numeric',
+            'update'    => 'select',
+            'search'    => 'select',
+            'value'     => Dever::input('add_cate', -1),
+            'list'      => '{cate_id} > 0 ? Dever::load("content/cate-one#name", {cate_id}) : "父级菜单"',
+            'option'    => $cate,
+            //'edit'        => true,
+        ),
+
+        'type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '栏目分类',
+            'default'   => '1',
+            'desc'      => '栏目分类',
+            'match'     => 'is_numeric',
+            'update'    => 'select',
+            'option'    => $type,
+            'search'    => 'select',
+            'list'      => true,
+        ),
+
+        'menu'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '是否显示在菜单',
+            'default'   => '1',
+            'desc'      => '是否显示在菜单',
+            'match'     => 'is_numeric',
+            'update'    => 'select',
+            'option'    => $menu,
+        ),
+
+        'link'      => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '链接-填写链接则跳转至该链接,为空则自动生成站内链接',
+            'default'   => '',
+            'desc'      => '链接',
+            'match'     => 'option',
+            'update'    => 'text',
+            //'search'  => 'fulltext',
+            //'list'        => true,
+        ),
+        
+        'reorder'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '排序(数值越大越靠前)',
+            'default'   => '1',
+            'desc'      => '请输入排序',
+            'match'     => 'option',
+            'update'    => 'text',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'desc',
+            'edit'      => true,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '录入时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    # 默认值
+    'default' => array
+    (
+        'col' => 'name,reorder,cdate',
+        'value' => array
+        (
+            '"默认栏目",100,' . time(),
+        ),
+    ),
+
+    'manage' => array
+    (
+        'list_type' => 'tree',
+        'insert' => false,
+        'edit' => false,
+
+        # 自定义快捷新增和编辑
+        'button' => array
+        (
+            '新增' => array('fast'),
+        ),
+        # 快捷更新
+        'list_button' => array
+        (
+            'edit' => array('编辑'),
+            'fast_add' => array('新增子菜单', '"cate&add_cate={id}"', '"{cate_id}" == -1'),
+        ),
+    ),
+
+    'request' => array
+    (
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc','id' => 'desc'),
+            'col' => '*',
+        ),
+
+        'get' => array
+        (
+            'option' => array
+            (
+                'cate_id' => 'yes',
+                'menu' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc','id' => 'desc'),
+            'col' => '*',
+        ),
+    ),
+);

+ 483 - 0
app/content/database/person.php

@@ -0,0 +1,483 @@
+<?php
+
+$status = Dever::config('base')->status;
+
+# 每页的数据量
+$page = 10;
+
+# 常用的col
+$col = '*';
+
+$yes = array
+(
+    1 => '是',
+    2 => '否',
+);
+
+return array
+(
+	# 表名
+	'name' => 'person',
+	# 显示给用户看的名称
+	'lang' => '虚拟角色',
+	'order' => 90,
+	'end' => array
+	(
+		'insert' => array('content/lib/source.data?source_table=content/person'),
+		'update' => array('content/lib/source.data?source_table=content/person'),
+	),
+
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-80',
+			'name' 		=> '姓名',
+			'default' 	=> '',
+			'desc' 		=> '姓名',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'list'		=> true,
+			'search'	=> 'fulltext',
+			//增加预览
+			'preview'	=> true,
+		),
+
+		'desc'		=> array
+		(
+			'type' 		=> 'varchar-800',
+			'name' 		=> '介绍',
+			'default' 	=> '',
+			'desc' 		=> '介绍',
+			'match' 	=> 'is_string',
+			'update'	=> 'textarea',
+		),
+
+		'source_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '来源',
+			'default' 	=> '1',
+			'desc' 		=> '来源',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			//'option'	=> $author,
+			'search'	=> 'select',
+			'update_search'	=> 'content/lib/source.search',
+		),
+
+		'top'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '是否推荐',
+            'default'   => '2',
+            'desc'      => '是否推荐',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $yes,
+        ),
+
+  		'avatar'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '头像',
+			'default' 	=> '',
+			'desc' 		=> '头像',
+			'match' 	=> 'option',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '150*150',
+		),
+
+		'pic_cover'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '封面图',
+			'default' 	=> '',
+			'desc' 		=> '封面图',
+			'match' 	=> 'option',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '260*205',
+		),
+
+		'pic'		=> array
+		(
+			'type' 		=> 'text-255',
+			'name' 		=> '多张图片',
+			'default' 	=> '',
+			'desc' 		=> '多张图片',
+			'match' 	=> 'option',
+			'update'	=> 'images',
+			'key' 		=> '1',
+			//'place'		=> '345*200',
+		),
+
+		'profession'		=> array
+		(
+			'type' 		=> 'varchar-200',
+			'name' 		=> '职业-多个用逗号隔开',
+			'default' 	=> '',
+			'desc' 		=> '职业',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+		),
+
+		'ability'		=> array
+		(
+			'type' 		=> 'varchar-800',
+			'name' 		=> '能力标签-多个用逗号隔开',
+			'default' 	=> '',
+			'desc' 		=> '能力标签',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+		),
+
+		'education'		=> array
+		(
+			'type' 		=> 'varchar-100',
+			'name' 		=> '学历',
+			'default' 	=> '',
+			'desc' 		=> '学历',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+		),
+
+		'bdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '生日',
+			'match' 	=> 'is_numeric',
+			'default'	=> '',
+			'desc' 		=> '',
+			'update'	=> 'date',
+			'callback'	=> 'maketime',
+		),
+
+		'phone'		=> array
+		(
+			'type' 		=> 'varchar-20',
+			'name' 		=> '联系电话',
+			'default' 	=> '',
+			'desc' 		=> '联系电话',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+		),
+
+		'email'		=> array
+		(
+			'type' 		=> 'varchar-220',
+			'name' 		=> '联系邮箱',
+			'default' 	=> '',
+			'desc' 		=> '联系邮箱',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+		),
+
+		'address'		=> array
+		(
+			'type' 		=> 'varchar-520',
+			'name' 		=> '地址',
+			'default' 	=> '',
+			'desc' 		=> '地址',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+		),
+
+		'skill'       => array
+        (
+            'type'      => 'text-1000',
+            'name'      => '技能配置',
+            'default'   => '',
+            'desc'      => '技能配置',
+            'match'     => 'is_string',
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'name',
+                    'name'      => '技能名称',
+                    'default'   => '',
+                    'desc'      => '技能名称',
+                    'match'     => 'option',
+                    'update'    => 'text',
+                ),
+
+                array
+                (
+                    'col'       => 'level',
+                    'name'      => '技能等级-满级为100',
+                    'default'   => '80',
+                    'desc'      => '技能等级',
+                    'match'     => 'is_string',
+                    'update'    => 'text',
+                ),
+            ),
+        ),
+
+        'learn'       => array
+        (
+            'type'      => 'text-1000',
+            'name'      => '学习经历',
+            'default'   => '',
+            'desc'      => '学习经历',
+            'match'     => 'is_string',
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'name',
+                    'name'      => '名称',
+                    'default'   => '',
+                    'desc'      => '名称',
+                    'match'     => 'option',
+                    'update'    => 'text',
+                ),
+
+                array
+                (
+                    'col'       => 'desc',
+                    'name'      => '描述-多个换行隔开',
+                    'default'   => '',
+                    'desc'      => '描述',
+                    'match'     => 'is_string',
+                    'update'    => 'textarea',
+                ),
+            ),
+        ),
+
+        'life'       => array
+        (
+            'type'      => 'text-1000',
+            'name'      => '生活经历',
+            'default'   => '',
+            'desc'      => '生活经历',
+            'match'     => 'is_string',
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'name',
+                    'name'      => '名称',
+                    'default'   => '',
+                    'desc'      => '名称',
+                    'match'     => 'option',
+                    'update'    => 'text',
+                ),
+
+                array
+                (
+                    'col'       => 'desc',
+                    'name'      => '描述-多个换行隔开',
+                    'default'   => '',
+                    'desc'      => '描述',
+                    'match'     => 'is_string',
+                    'update'    => 'textarea',
+                ),
+            ),
+        ),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'udate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '更新时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+		),
+
+		'status'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布状态',
+			'default' 	=> '1',
+			'desc' 		=> '发布状态',
+			'match' 	=> 'is_numeric',
+			//'update'	=> 'select',
+			'option'	=> $status,
+			'search'	=> 'select',
+			'list'		=> true,
+			'edit'		=> true,
+		),
+
+		'spider_data_id'=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '采集数据id',
+			'default' 	=> '0',
+			'desc' 		=> '采集数据id',
+			'match' 	=> 'is_numeric',
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+
+		'admin_founder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '创建人',
+			'default' 	=> '1',
+			'desc' 		=> '创建人',
+			'match' 	=> 'is_numeric',
+		),
+
+		'admin_editor'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '操作人',
+			'default' 	=> '1',
+			'desc' 		=> '操作人',
+			'match' 	=> 'is_numeric',
+		),
+
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'list'      => 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+	
+	# 管理功能
+	'manage' => array
+	(
+		'button' => array
+        (
+        	'来源管理' => array('list', 'source&oper_parent=person'),
+        ),
+		//'insert' => false,
+		# 列表
+		'list_button' => array
+		(
+			//'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=1'))),
+		),
+	),
+
+	# request 请求接口定义
+	'request' => array
+	(
+		'search' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'ids' => array('yes-id', 'in'),
+				'source_id' => 'yes',
+				'name' => array('yes', 'like'),
+				'id' => 'yes',
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'id' => 'desc'),
+			'limit' => '0,1000',
+			'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+		),
+
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'source_id' => 'yes',
+				'id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','id' => 'desc'),
+			'page' => array($page, 'list'),
+			'col' => $col,
+		),
+
+		# 获取首页推荐
+		'getTop' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('top' => 'asc', 'reorder' => 'desc','id' => 'desc'),
+			'limit' => '0,1',
+			'col' => $col,
+		),
+
+		'getList' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'source_id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','id' => 'desc'),
+			'limit' => '0,10',
+			'col' => $col,
+		),
+
+		'getRelation' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'source_id' => 'yes',
+				'noid' => array('yes-id', '!='),
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','id' => 'desc'),
+			'limit' => '0,2',
+			'col' => $col,
+		),
+
+		'getOne' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'type' => 'one',
+			'col' => $col,
+		),
+	),
+);

+ 204 - 0
app/content/database/search.php

@@ -0,0 +1,204 @@
+<?php
+$status = Dever::config('base')->status;
+
+$cate = function()
+{
+	$array = array();
+	$info = Dever::db('content/cate')->select();
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+$type = array
+(
+    1 => '文章',
+    2 => '相册',
+    3 => '视频',
+);
+
+return array
+(
+	# 表名
+	'name' => 'search',
+	# 显示给用户看的名称
+	'lang' => '搜索数据',
+	# 后台菜单排序
+	'order' => 7,
+	'menu'	=> false,
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'search'	=> 'order',
+			//'list'		=> true,
+			'order'		=> 'desc',
+		),
+
+		'cate_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '所属栏目',
+			'default' 	=> '1',
+			'desc' 		=> '所属栏目',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'option'	=> $cate,
+			'search'	=> 'select',
+			'list'		=> true,
+		),
+
+		'type'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '类型',
+			'default' 	=> '1',
+			'desc' 		=> '类型',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'radio',
+			'option'	=> $type,
+			'search'	=> 'select',
+			'list'		=> true,
+			//'edit'		=> true,
+		),
+
+		'data_id'		=> array
+		(
+			'type' 		=> 'varchar-80',
+			'name' 		=> '数据ID',
+			'default' 	=> '',
+			'desc' 		=> '数据id',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			//'search'	=> 'fulltext',
+			//'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-80',
+			'name' 		=> '标题',
+			'default' 	=> '',
+			'desc' 		=> '标题',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'status'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布状态',
+			'default' 	=> '1',
+			'desc' 		=> '发布状态',
+			'match' 	=> 'is_numeric',
+			//'update'	=> 'select',
+			'option'	=> $status,
+			'search'	=> 'select',
+			'list'		=> true,
+			'edit'		=> true,
+		),
+		
+		'pdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布时间',
+			'match' 	=> 'is_numeric',
+			'default'	=> '',
+			'desc' 		=> '',
+			'update'	=> 'date',
+			'callback'	=> 'maketime',
+			'list'		=> 'date("Y-m-d H:i:s", {pdate})',
+		),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+			'search'	=> 'order',
+			//'list'		=> true,
+			'order'		=> 'desc',
+			//'edit'		=> true,
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+			'edit'		=> false,
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			//'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+
+	'manage' => array
+	(
+		'delete' => false,
+		'edit' => false,
+		'insert' => false,
+		'mul' => true,
+
+		'list_button' => array
+		(
+			'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?audit=1'))),
+		),
+	),
+
+	# request 请求接口定义
+	'request' => array
+	(
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'name' => array('yes', 'like'),
+				'cate_id' => 'yes',
+				'type' => 'yes',
+				'type_no' => array('yes-type', '!='),
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'page' => array(12, 'list'),
+			'col' => '*',
+		),
+
+		'getIn' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'id' => array('yes', 'in'),
+			),
+			'type' => 'all',
+			'order' => array('id' => 'desc'),
+			'col' => '*',
+		),
+	)
+);

+ 153 - 0
app/content/database/source.php

@@ -0,0 +1,153 @@
+<?php
+
+return array
+(
+	# 表名
+	'name' => 'source',
+	# 显示给用户看的名称
+	'lang' => '来源管理',
+	# 后台菜单排序
+	'order' => 8,
+	'menu' => false,
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-32',
+			'name' 		=> '来源名称-长度不能超过16个汉字',
+			'default' 	=> '',
+			'desc' 		=> '请输入来源名称,长度不能超过16个汉字',
+			'match' 	=> Dever::rule('name', '/u', '1,16'),
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'desc'		=> array
+		(
+			'type' 		=> 'varchar-500',
+			'name' 		=> '介绍',
+			'default' 	=> '',
+			'desc' 		=> '介绍',
+			'match' 	=> 'is_string',
+			'update'	=> 'textarea',
+		),
+
+		'logo'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '来源LOGO-图片尺寸150*150px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+            'default'   => '',
+            'desc'      => '来源LOGO',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '150*150',
+        ),
+
+        'link'      => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '链接',
+            'default'   => '',
+            'desc'      => '链接',
+            'match'     => 'option',
+            'update'    => 'text',
+            //'search'  => 'fulltext',
+            //'list'        => true,
+        ),
+		
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+
+	# 默认值
+	'default' => array
+	(
+		'col' => 'name,state,cdate',
+		'value' => array
+		(
+			'"默认来源",1,' . time(),
+		),
+	),
+
+	'manage' => array
+	(
+		'insert' => false,
+		'edit' => false,
+
+		# 自定义快捷新增和编辑
+		'button' => array
+		(
+			'新增' => array('fast'),
+		),
+		# 快捷更新
+		'list_button' => array
+		(
+			'edit' => array('编辑'),
+		),
+	),
+
+	'request' => array
+	(
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'ids' => array('yes-id', 'in'),
+				'name' => array('yes', 'like'),
+				'id' => 'yes',
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'id' => 'desc'),
+			'limit' => '0,1000',
+			'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+		),
+	),
+);

+ 500 - 0
app/content/database/video.php

@@ -0,0 +1,500 @@
+<?php
+
+$status = Dever::config('base')->status;
+
+# 每页的数据量
+$page = 12;
+
+$cate = function()
+{
+	$array = array();
+	$info = Dever::db('content/cate')->select(array('type' => 3));
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+
+$author = function()
+{
+	$array = array();
+	$info = Dever::db('content/author')->state();
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+
+$yes = array
+(
+    1 => '是',
+    2 => '否',
+);
+
+# 常用的col
+$col = 'id,cate_id,name,pic_cover,video,num_add_view+num_view as num_view,num_add_up+num_up as num_up,author_id,`desc`,pdate,cdate,tag';
+
+return array
+(
+	# 表名
+	'name' => 'video',
+	# 显示给用户看的名称
+	'lang' => '视频管理',
+	'order' => 98,
+	# 同步更新另外一个或多个表的数据
+	'syncone' => array
+	(
+		'content/search' => array
+		(
+			# 更新另外一个表的字段 => 本表的字段
+			'where' => array('data_id' => 'id', 'type' => 3),
+			# 要更新的数据
+			'update' => array('data_id' => 'id', 'type' => 3, 'pdate' => 'pdate', 'reorder' => 'reorder', 'name' => 'name', 'status' => 'status', 'cate_id' => 'cate_id', 'state' => 'state'),
+		)
+	),
+	'end' => array
+	(
+		'insert' => array('content/lib/author.data?source_table=content/video','tag/lib/core.data?source_table=content/video'),
+		'update' => array('content/lib/author.data?source_table=content/video','tag/lib/core.data?source_table=content/video'),
+	),
+
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-80',
+			'name' 		=> '标题',
+			'default' 	=> '',
+			'desc' 		=> '标题',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'list'		=> true,
+			'search'	=> 'fulltext',
+			//增加预览
+			'preview'	=> true,
+		),
+
+		'desc'		=> array
+		(
+			'type' 		=> 'varchar-500',
+			'name' 		=> '摘要',
+			'default' 	=> '',
+			'desc' 		=> '摘要',
+			'match' 	=> 'is_string',
+			'update'	=> 'textarea',
+		),
+
+		'cate_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '所属栏目',
+			'default' 	=> '1',
+			'desc' 		=> '所属栏目',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'option'	=> $cate,
+			'search'	=> 'select',
+			'list'		=> 'Dever::load("content/cate-one#name", {cate_id})',
+		),
+
+		'author_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '作者',
+			'default' 	=> '1',
+			'desc' 		=> '作者',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			//'option'	=> $author,
+			'search'	=> 'select',
+			'update_search'	=> 'content/lib/author.search',
+		),
+
+		'video'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '上传视频-视频格式mp4,上传大小不能超过4G',
+            'default'   => '',
+            'desc'      => '上传视频',
+            'match'     => 'is_string',
+            'update'    => 'video',
+            'key'       => '3',
+            'place'     => '150',
+            'upload'    => 'yun',
+            'large'     => true,
+            'cover'     => 'pic_cover',//封面图字段名
+        ),
+
+        'video_info'        => array
+        (
+            'type'      => 'text-255',
+            'name'      => '视频信息',
+            'default'   => '',
+            'desc'      => '视频信息',
+            'match'     => 'is_string',
+        ),
+
+  		'pic_cover'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '封面图',
+			'default' 	=> '',
+			'desc' 		=> '封面图',
+			'match' 	=> 'option',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '345*200',
+		),
+
+		'tag'		=> array
+		(
+			'type' 		=> 'text-255',
+			'name' 		=> '标签',
+			'default' 	=> '',
+			'desc' 		=> '标签',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'selects',
+			//'search'	=> 'fulltext',
+			'update_search'	=> 'tag/lib/core.search',
+		),
+
+		'num_add_view'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '浏览量基数',
+			'default' 	=> '0',
+			'desc' 		=> '浏览量基数',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'num_view'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '浏览量',
+			'default' 	=> '0',
+			'desc' 		=> '请填写浏览量',
+			'match' 	=> 'option',
+			'search'	=> 'order',
+			'list'		=> '{num_view}+{num_add_view}',
+		),
+
+		'num_add_up'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '点赞量基数',
+			'default' 	=> '0',
+			'desc' 		=> '点赞量基数',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'num_up'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '点赞量',
+			'default' 	=> '0',
+			'desc' 		=> '请填写点赞量',
+			'match' 	=> 'option',
+			'search'	=> 'order',
+			'list'		=> '{num_up}+{num_add_up}',
+		),
+
+		'top'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '是否精选推荐',
+            'default'   => '2',
+            'desc'      => '是否精选推荐',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $yes,
+        ),
+
+		'pdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布时间',
+			'match' 	=> array('is_numeric', time()),
+			'default'	=> '',
+			'desc' 		=> '',
+			'update'	=> 'date',
+			'callback'	=> 'maketime',
+			'insert'	=> true,
+			//'list'		=> 'date("Y-m-d H:i:s", {pdate})',
+			'auth'		=> '"{pdate}" > 0',
+		),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'udate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '更新时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+		),
+
+		'status'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布状态',
+			'default' 	=> '1',
+			'desc' 		=> '发布状态',
+			'match' 	=> 'is_numeric',
+			//'update'	=> 'select',
+			'option'	=> $status,
+			'search'	=> 'select',
+			'list'		=> true,
+			'edit'		=> true,
+		),
+
+		'spider_data_id'=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '采集数据id',
+			'default' 	=> '0',
+			'desc' 		=> '采集数据id',
+			'match' 	=> 'is_numeric',
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+
+		'admin_founder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '创建人',
+			'default' 	=> '1',
+			'desc' 		=> '创建人',
+			'match' 	=> 'is_numeric',
+		),
+
+		'admin_editor'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '操作人',
+			'default' 	=> '1',
+			'desc' 		=> '操作人',
+			'match' 	=> 'is_numeric',
+		),
+
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+		),
+	),
+
+	# 索引
+	'index' => array
+	(
+		'version' => 1,
+		
+		1 => array
+		(
+			'i1' => 'cate_id,reorder',
+		)
+	),
+	
+	# 管理功能
+	'manage' => array
+	(
+		//'insert' => false,
+		# 列表
+		'list_button' => array
+		(
+			//'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=1'))),
+		),
+	),
+
+	# request 请求接口定义
+	'request' => array
+	(
+		'search' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'ids' => array('yes-id', 'in'),
+				'cate_id' => 'yes',
+				'name' => array('yes', 'like'),
+				'id' => 'yes',
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'pdate' => 'desc'),
+			'limit' => '0,1000',
+			'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+		),
+
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'cate_ids' => array('yes-cate_id', 'in'),
+				'id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'page' => array($page, 'list'),
+			'col' => $col,
+		),
+
+		# 获取首页推荐
+		'getTop' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('top' => 'asc', 'reorder' => 'desc','pdate' => 'desc'),
+			'limit' => '0,4',
+			'col' => $col,
+		),
+
+		'getList' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'limit' => '0,10',
+			'col' => $col,
+		),
+
+		'getRelation' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'cate_ids' => array('yes-cate_id', 'in'),
+				'noid' => array('yes-id', '!='),
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'limit' => '0,2',
+			'col' => $col,
+		),
+
+		'getOne' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'type' => 'one',
+			'col' => $col,
+		),
+		
+		# 更新浏览量
+		'addView' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_view' => array('1', '+='),
+			),
+		),
+
+		# 更新点赞量
+		'addUp' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_up' => array('1', '+='),
+			),
+		),
+
+		'findPrev' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'cate_id' => 'yes',
+				'id' => array('yes', '<'),
+				'status' => 1,
+				'state' => 1,
+			),
+			'type' => 'one',
+			'order' => array('reorder' => 'desc','pdate' => 'desc'),
+			'col' => $col,
+		),
+
+		'findNext' => array
+		(
+			# 匹配的正则或函数 选填项
+			'where' => array
+			(
+				'cate_id' => 'yes',
+				'id' => array('yes', '>'),
+				'status' => 1,
+				'state' => 1,
+			),
+			'order' => array('reorder' => 'asc','pdate' => 'asc'),
+			'type' => 'one',
+			'col' => $col,
+		),
+	),
+);

+ 8 - 0
app/content/index.php

@@ -0,0 +1,8 @@
+<?php
+
+define('DEVER_APP_NAME', 'content');
+define('DEVER_APP_LANG', '内容管理');
+define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+define('DEVER_MANAGE_ORDER', 200);
+define('DEVER_MANAGE_ICON', 'glyphicon glyphicon-tower layui-icon-tabs');
+include(DEVER_APP_PATH . '../boot.php');

+ 148 - 0
app/content/lib/Album.php

@@ -0,0 +1,148 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Album
+{
+    # 获取文章信息
+    public function getInfo()
+    {
+        $id = Dever::input('id');
+        $data = Dever::db('content/album')->getOne($id);
+
+        if (!$data) {
+            Dever::alert('错误的图片信息');
+        }
+
+        if ($data['author_id']) {
+            $data['author'] = Dever::db('content/author')->one($data['author_id']);
+        }
+
+        $data['cdate'] = date('Y年m月d日创建', $data['pdate']);
+        $data['tag_html'] = '';
+        if ($data['tag']) {
+            $tag_data = Dever::load('tag/api')->tag_content($data['author_id']);
+            if ($tag_data) {
+                $data['tag_html'] = '标签:';
+                foreach ($tag_data as $k => $v) {
+                    $link = Dever::url('search_list?tid=' . $v['id'], 'main');
+                    $data['tag_html'] .= '<a href="'.$link.'" target="_blank">'.$v['name'].'</a>';
+                }
+            }
+        }
+
+        $data['pic'] = explode(',', $data['pic']);
+
+        $data['pic_html'] = '';
+        if ($data['pic']) {
+            foreach ($data['pic'] as $k => $v) {
+                $data['pic_html'] .= '<li><a href="'.$v.'" data-fancybox="group" data-caption=""><i><img src="'.$v.'" alt=""></i></a></li>';
+            }
+        }
+        $data['pic_num'] = count($data['pic']);
+
+        # 获取上一篇和下一篇
+        $where['id'] = $id;
+        $where['cate_id'] = $data['cate_id'];
+        $data['prev'] = Dever::db('content/album')->findPrev($where);
+        if ($data['prev']) {
+            $data['prev']['link'] = Dever::load('content/lib/common')->getInfoLink(2, $data['prev']['id']);
+            $data['prev']['cdate'] = date('Y年m月d日创建', $data['prev']['pdate']);
+        }
+        $data['next'] = Dever::db('content/album')->findNext($where);
+        if ($data['next']) {
+            $data['next']['link'] = Dever::load('content/lib/common')->getInfoLink(2, $data['next']['id']);
+            $data['next']['cdate'] = date('Y年m月d日创建', $data['next']['pdate']);
+        }
+        //print_r($data);die;
+
+        $data['up_url'] = Dever::url('content/lib/album.addUp?id=' . $data['id']);
+
+        $this->addView($id);
+
+        return $data;
+    }
+
+    # 获取最新列表
+    public function getList()
+    {
+        $data = Dever::db('content/album')->getList();
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(2, $v['id']);
+                $data[$k]['pic_num'] = count(explode(',', $v['pic']));
+            }
+        }
+
+        return $data;
+    }
+
+    # 获取最新列表
+    public function getAll()
+    {
+        $where = array();
+
+        $cate_id = Dever::input('cid');
+        if ($cate_id > 0) {
+            $where['cate_id'] = $cate_id;
+        }
+        $data = Dever::db('content/album')->getAll($where);
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(2, $v['id']);
+                $data[$k]['cdate'] = date('Y-m-d', $v['pdate']);
+                $data[$k]['pic_num'] = count(explode(',', $v['pic']));
+            }
+        }
+
+        return $data;
+    }
+
+    # 获取相关推荐
+    public function getRelation($info)
+    {
+        $where['noid'] = $info['id'];
+        $where['cate_id'] = $info['cate_id'];
+        return Dever::db('content/album')->getRelation($where);
+    }
+
+    # 增加浏览量
+    public function addView($id)
+    {
+        Dever::db('content/album')->addView(array('where_id' => $id, 'set_num_view' => 1));
+    }
+
+    # 点赞
+    public function addUp_api()
+    {
+        $id = Dever::input('id');
+        Dever::db('content/album')->addUp(array('where_id' => $id, 'set_num_up' => 1));
+    }
+
+    # 获取精彩推荐
+    public function getTop($cate_id = false)
+    {
+        $where = array();
+
+        if ($cate_id) {
+            $where['cate_id'] = $cate_id;
+        }
+        
+        $data = Dever::db('content/album')->getTop($where);
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $cate = Dever::db('content/cate')->one($v['cate_id']);
+                $data[$k]['cate_name'] = $cate['name'];
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(2, $v['id']);
+                $data[$k]['cdate'] = date('Y-m-d', $v['pdate']);
+            }
+        }
+
+        return $data;
+    }
+}

+ 245 - 0
app/content/lib/Article.php

@@ -0,0 +1,245 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Article
+{
+    # 同步信息接口
+    public function up_api()
+    {
+        $name = Dever::input('name');
+        $desc = Dever::input('desc');
+        $pic_cover = Dever::input('pic_cover');
+        $pic_index = Dever::input('pic_index');
+        $content = Dever::input('content');
+        $template = Dever::input('template');
+        if ($template == 2) {
+            $video = Dever::input('video');
+        }
+        $cate_id = Dever::input('cate_id');
+        $cate_id = $this->getCate($cate_id);
+        $pdate = Dever::input('pdate');
+        $source_id = Dever::input('source_id');
+
+        $update['template'] = $template;
+        $update['source_id'] = $source_id;
+        $info = Dever::db('content/article')->one($update);
+
+        //$parse = $this->parseContent($content);
+        //print_r($parse);die;
+        if ($content) {
+            $content = Dever::json_decode($content);
+            $content = $this->getContentHtml($content);
+        }
+
+        $update['name'] = $name;
+        $update['desc'] = $desc;
+        $update['pic_cover'] = $pic_cover;
+        $update['pic_index'] = $pic_index;
+        $update['content'] = $content;
+        $update['cate_id'] = $cate_id;
+        if (isset($video) && $video) {
+            $update['video'] = $video;
+        }
+
+        if (!$info) {
+            $update['pdate'] = $pdate;
+            Dever::db('content/article')->insert($update);
+        } else {
+            $update['where_id'] = $info['id'];
+            Dever::db('content/article')->update($update);
+        }
+
+        return 'ok';
+    }
+
+    public function getCate($id)
+    {
+        $config = array
+        (
+            1 => 6,
+            2 => 4,
+            3 => 1,
+            4 => 2,
+            5 => 3,
+            6 => 6,
+            7 => 6,
+            9 => 5,
+            12 => 6,
+        );
+
+        if (isset($config[$id])) {
+            return $config[$id];
+        }
+        return $id;
+    }
+
+    public function vod_api()
+    {
+        $data['name'] = '视频';
+        $where = array();
+        $name = Dever::input('search_name');
+        $cate = Dever::input('search_cate');
+        if ($name) {
+            $where['name'] = $name;
+        }
+        if ($cate > 0) {
+            $where['cate_id'] = $cate;
+        }
+        $where['template'] = 2;
+        $data['file'] = Dever::db('content/article')->list($where);
+        $data['cate'] = Dever::db('content/cate')->state();
+
+
+        if ($data['file']) {
+            foreach ($data['file'] as $k => $v) {
+                $data['file'][$k]['source_name'] = $v['name'];
+                $data['file'][$k]['file'] = $v['pic_cover'];
+                $data['file'][$k]['pic'] = $v['pic_cover'];
+            }
+        }
+
+        return $data;
+    }
+
+    # 获取人气点击列表
+    public function getDataByNum()
+    {
+        $data = Dever::db('content/article')->getDataByNum();
+
+        return $data;
+    }
+
+    # 获取最新列表
+    public function getList()
+    {
+        $data = Dever::db('content/article')->getList();
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $cate = Dever::db('content/cate')->one($v['cate_id']);
+                $data[$k]['cate_name'] = $cate['name'];
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(1, $v['id']);
+                $data[$k]['cdate'] = date('Y-m-d', $v['pdate']);
+            }
+        }
+
+        return $data;
+    }
+
+    # 获取最新列表
+    public function getAll()
+    {
+        $where = array();
+
+        $cate_id = Dever::input('cid');
+        if ($cate_id > 0) {
+            $where['cate_id'] = $cate_id;
+        }
+        $data = Dever::db('content/article')->getAll($where);
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $cate = Dever::db('content/cate')->one($v['cate_id']);
+                $data[$k]['cate_name'] = $cate['name'];
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(1, $v['id']);
+                $data[$k]['cdate'] = date('Y-m-d', $v['pdate']);
+            }
+        }
+
+        return $data;
+    }
+
+    # 获取文章信息
+    public function getInfo()
+    {
+        $id = Dever::input('id');
+        $data = Dever::db('content/article')->getOne($id);
+
+        if (!$data) {
+            Dever::alert('错误的文章信息');
+        }
+
+        if ($data['author_id']) {
+            $data['author'] = Dever::db('content/author')->one($data['author_id']);
+        }
+
+        $data['cdate'] = date('Y-m-d', $data['pdate']);
+        $data['tag_html'] = '';
+        if ($data['tag']) {
+            $tag_data = Dever::load('tag/api')->tag_content($data['author_id']);
+            if ($tag_data) {
+                $data['tag_html'] = '标签:';
+                foreach ($tag_data as $k => $v) {
+                    $link = Dever::url('search_list?tid=' . $v['id']);
+                    $data['tag_html'] .= '<a href="'.$link.'" target="_blank">'.$v['name'].'</a>';
+                }
+            }
+        }
+
+        # 获取上一篇和下一篇
+        $where['id'] = $id;
+        $where['cate_id'] = $data['cate_id'];
+        $data['prev'] = Dever::db('content/article')->findPrev($where);
+        if ($data['prev']) {
+            $data['prev']['link'] = Dever::load('content/lib/common')->getInfoLink(1, $data['prev']['id']);
+        }
+        $data['next'] = Dever::db('content/article')->findNext($where);
+        if ($data['next']) {
+            $data['next']['link'] = Dever::load('content/lib/common')->getInfoLink(1, $data['next']['id']);
+        }
+        //print_r($data);die;
+
+        $this->addView($id);
+
+        return $data;
+    }
+
+    # 获取相关推荐
+    public function getRelation()
+    {
+        $where['noid'] = Dever::input('id');
+        $data = Dever::db('content/article')->getOne($where['noid']);
+        $where['cate_id'] = $data['cate_id'];
+        $data = Dever::db('content/article')->getRelation($where);
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(1, $v['id']);
+                $data[$k]['cdate'] = date('Y-m-d', $v['pdate']);
+            }
+        }
+
+        return $data;
+    }
+
+    # 增加浏览量
+    public function addView($id)
+    {
+        Dever::db('content/article')->addView(array('where_id' => $id, 'set_num_view' => 1));
+    }
+
+    # 获取精彩推荐
+    public function getTop($cate_id = false)
+    {
+        $where = array();
+
+        if ($cate_id) {
+            $where['cate_id'] = $cate_id;
+        }
+        
+        $data = Dever::db('content/article')->getTop($where);
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $cate = Dever::db('content/cate')->one($v['cate_id']);
+                $data[$k]['cate_name'] = $cate['name'];
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(1, $v['id']);
+                $data[$k]['cdate'] = date('Y-m-d', $v['pdate']);
+            }
+        }
+
+        return $data;
+    }
+}

+ 76 - 0
app/content/lib/Author.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Author
+{
+    # 更新数据
+    public function data($id, $name, $data)
+    {
+        $source_table = Dever::input('source_table');
+
+        $author = Dever::param('author_id', $data);
+
+        if ($author && $id > 0 && $source_table) {
+            $info = Dever::db('content/author')->one($author);
+            if (!$info) {
+                $insert['name'] = $author;
+                $author = Dever::db('content/author')->insert($insert);
+            }
+
+            Dever::db($source_table)->update(array('where_id' => $id, 'author_id' => $author));
+        }
+    }
+
+    # 搜索
+    public function search_api()
+    {
+        $keyword = Dever::input('keyword');
+
+        $yes = Dever::input('yes');
+
+        $where = array();
+
+        if ($yes) {
+            $yes = Dever::db('content/author')->getAll(array('ids' => $yes));
+        }
+        if (!$keyword) {
+            $where['limit'] = '0,50';
+            $data = Dever::db('content/author')->getAll($where);
+        } else {
+            $where['name'] = $keyword;
+            $data = Dever::db('content/author')->getAll($where);
+        }
+
+        $insert = array();
+        if (!$data && $keyword) {
+            $insert[0]['name'] = $keyword . '[新增]';
+            $insert[0]['value'] = $keyword;
+        }
+
+        $result = array();
+        if ($yes) {
+            foreach ($yes as $k => $v) {
+                if (isset($data[$k])) {
+                    unset($data[$k]);
+                }
+                $yes[$k]['selected'] = 'selected';
+            }
+            $data = $insert + $yes + $data;
+
+            $data = array_merge($data, array());
+        } else {
+            $data = $insert + $data;
+
+            $data = array_merge($data, array());
+        }
+
+        if (!$data) {
+            Dever::alert('暂无数据');
+        }
+
+        return $data;
+    }
+}

+ 15 - 0
app/content/lib/Cate.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Cate
+{
+    # 获取信息
+    public function getInfo()
+    {
+        $id = Dever::input('cid');
+        return Dever::db('content/cate')->find($id);
+    }
+}

+ 30 - 0
app/content/lib/Common.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Common
+{
+    public function getInfoLink($type, $id)
+    {
+        if ($type == 'content/article' || $type == 1) {
+            return Dever::url('blog_info?id=' . $id, 'main');
+        } elseif ($type == 'content/album' || $type == 2) {
+            return Dever::url('photos_info?id=' . $id, 'main');
+        } elseif ($type == 'content/video' || $type == 3) {
+            return Dever::url('videos_info?id=' . $id, 'main');
+        }
+    }
+
+    public function getCateLink($type, $id)
+    {
+        if ($type == 'content/article' || $type == 1) {
+            return Dever::url('blog?id=' . $id, 'main');
+        } elseif ($type == 'content/album' || $type == 2) {
+            return Dever::url('photos?id=' . $id, 'main');
+        } elseif ($type == 'content/video' || $type == 3) {
+            return Dever::url('videos?id=' . $id, 'main');
+        }
+    }
+}

+ 60 - 0
app/content/lib/Manage.php

@@ -0,0 +1,60 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Manage
+{
+    private function search($table = 'content/article')
+    {
+        $keyword = Dever::input('keyword');
+
+        $yes = Dever::input('yes');
+
+        $where = array();
+
+        $cate = Dever::input('cate');
+        if ($cate) {
+            $where['cate_id'] = $cate;
+        }
+
+        if ($yes) {
+            $yes = Dever::db($table)->search(array('ids' => $yes));
+        }
+        if (!$keyword) {
+            $where['limit'] = '0,50';
+            $data = Dever::db($table)->search($where);
+        } else {
+            $where['name'] = $keyword;
+            $data = Dever::db($table)->search($where);
+        }
+
+        $result = array();
+        if ($yes) {
+            foreach ($yes as $k => $v) {
+                if (isset($data[$k])) {
+                    unset($data[$k]);
+                }
+                $yes[$k]['selected'] = 'selected';
+            }
+            $data = $yes + $data;
+
+            $data = array_merge($data, array());
+        } else {
+            $data = array_merge($data, array());
+        }
+
+        if (!$data) {
+            Dever::alert('暂无数据');
+        }
+
+        return $data;
+    }
+
+    # 搜索文章
+    public function search_article_api()
+    {
+        return $this->search('content/article');
+    }
+}

+ 97 - 0
app/content/lib/Person.php

@@ -0,0 +1,97 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Person
+{
+    # 获取文章信息
+    public function getInfo()
+    {
+        $id = Dever::input('id');
+        $data = Dever::db('content/person')->getOne($id);
+
+        if (!$data) {
+            Dever::alert('错误的信息');
+        }
+
+        if ($data['source_id']) {
+            $data['source'] = Dever::db('content/source')->one($data['source_id']);
+        }
+
+        $data['bdate'] = date('Y年m月d日', $data['bdate']);
+
+        $data['skill'] = Dever::array_decode($data['skill']);
+        $data['learn'] = Dever::array_decode($data['learn']);
+        $data['life'] = Dever::array_decode($data['life']);
+
+        $data['ability_array'] = array($data['ability']);
+        if (strstr($data['ability'], ',')) {
+            $data['ability_array'] = explode(',', $data['ability']);
+        }
+        if (strstr($data['ability'], ',')) {
+            $data['ability_array'] = explode(',', $data['ability']);
+        }
+
+        $data['ability_html'] = '';
+        if ($data['ability_array']) {
+            foreach ($data['ability_array'] as $v) {
+                $data['ability_html'] .= '<span>'.$v.'</span>';
+            }
+        }
+
+        $data['skill_html'] = '';
+        if ($data['skill']) {
+            foreach ($data['skill'] as $v) {
+                $data['skill_html'] .= '<li class="tec'.$v['level'].'">'.$v['name'].'<span></span></li>';
+            }
+        }
+
+        $data['content'] = '';
+        if ($data['desc']) {
+            $data['content'] = '<h2>人物简介</h2><p>'.$data['desc'].'</p>';
+        }
+
+        if ($data['learn']) {
+            $data['content'] .= '<h2>学习经历</h2>';
+            foreach ($data['learn'] as $v) {
+                $data['content'] .= '<p><span style="color:#808080;">'.$v['name'].'</span></p>';
+                $desc = Dever::split($v['desc']);
+                foreach ($desc as $v1) {
+                    $data['content'] .= '<p>'.$v1.'</p>';
+                }
+            }
+        }
+
+        if ($data['life']) {
+            $data['content'] .= '<h2>生活经历</h2>';
+            foreach ($data['life'] as $v) {
+                $data['content'] .= '<p><span style="color:#808080;">'.$v['name'].'</span></p>';
+                $desc = Dever::split($v['desc']);
+                foreach ($desc as $v1) {
+                    $data['content'] .= '<p>'.$v1.'</p>';
+                }
+            }
+        }
+
+        return $data;
+    }
+
+    # 获取精彩推荐
+    public function getTop()
+    {
+        $where = array();
+        
+        $data = Dever::db('content/person')->getTop($where);
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['link'] = Dever::url('about?id=' . $v['id'], 'main');
+                $data[$k]['bdate'] = date('Y-m-d', $v['bdate']);
+            }
+        }
+
+        return $data;
+    }
+}

+ 79 - 0
app/content/lib/Search.php

@@ -0,0 +1,79 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Search
+{
+    # 获取搜索信息
+    public function getInfo()
+    {
+        $info = array();
+
+        $tid = Dever::input('tid');
+        if ($tid) {
+            $info = Dever::db('tag/info')->find($tid);
+            if (!$info) {
+                Dever::alert('标签已失效或者不存在');
+            }
+        }
+
+        $t = Dever::input('keyboard');
+        if ($t) {
+            $info['name'] = $t;
+        }
+
+        if (!$info) {
+            Dever::alert('检索出现问题,请重试');
+        }
+
+        return $info;
+    }
+
+    # 获取检索的数据列表
+    public function getAll()
+    {
+        $data = array();
+        $tid = Dever::input('tid');
+        if ($tid) {
+            $data = Dever::load('tag/api')->getData($tid);
+
+            if ($data) {
+                foreach ($data as $k => $v) {
+                	$data[$k]['info'] = Dever::db($v['type'])->one($v['type_id']);
+                	$data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink($v['type'], $v['type_id']);
+                	$data[$k]['cdate'] = date('Y-m-d', $data[$k]['info']['pdate']);
+
+                	$cate = Dever::db('content/cate')->one($data[$k]['info']['cate_id']);
+                	$data[$k]['cate_name'] = $cate['name'];
+                	$data[$k]['cate_link'] = Dever::load('content/lib/common')->getCateLink(1, $cate['id']);
+                }
+            }
+        } else {
+            $t = Dever::input('keyboard');
+            if ($t) {
+                $where['name'] = $t;
+                $data = Dever::db('content/search')->getAll($where);
+                foreach ($data as $k => $v) {
+                	if ($v['type'] == 1) {
+                		$v['type'] = 'content/article';
+                	} elseif ($v['type'] == 2) {
+                		$v['type'] = 'content/album';
+                	} elseif ($v['type'] == 3) {
+                		$v['type'] = 'content/video';
+                	}
+                	$data[$k]['info'] = Dever::db($v['type'])->one($v['data_id']);
+                	$data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink($v['type'], $v['data_id']);
+                	$data[$k]['cdate'] = date('Y-m-d', $data[$k]['info']['pdate']);
+
+                	$cate = Dever::db('content/cate')->one($data[$k]['info']['cate_id']);
+                	$data[$k]['cate_name'] = $cate['name'];
+                	$data[$k]['cate_link'] = Dever::load('content/lib/common')->getCateLink(1, $cate['id']);
+                }
+            }
+        }
+
+        return $data;
+    }
+}

+ 76 - 0
app/content/lib/Source.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Source
+{
+    # 更新数据
+    public function data($id, $name, $data)
+    {
+        $source_table = Dever::input('source_table');
+
+        $source = Dever::param('source_id', $data);
+
+        if ($source && $id > 0 && $source_table) {
+            $info = Dever::db('content/source')->one($source);
+            if (!$info) {
+                $insert['name'] = $source;
+                $source = Dever::db('content/source')->insert($insert);
+            }
+
+            Dever::db($source_table)->update(array('where_id' => $id, 'source_id' => $source));
+        }
+    }
+
+    # 搜索
+    public function search_api()
+    {
+        $keyword = Dever::input('keyword');
+
+        $yes = Dever::input('yes');
+
+        $where = array();
+
+        if ($yes) {
+            $yes = Dever::db('content/source')->getAll(array('ids' => $yes));
+        }
+        if (!$keyword) {
+            $where['limit'] = '0,50';
+            $data = Dever::db('content/source')->getAll($where);
+        } else {
+            $where['name'] = $keyword;
+            $data = Dever::db('content/source')->getAll($where);
+        }
+
+        $insert = array();
+        if (!$data && $keyword) {
+            $insert[0]['name'] = $keyword . '[新增]';
+            $insert[0]['value'] = $keyword;
+        }
+
+        $result = array();
+        if ($yes) {
+            foreach ($yes as $k => $v) {
+                if (isset($data[$k])) {
+                    unset($data[$k]);
+                }
+                $yes[$k]['selected'] = 'selected';
+            }
+            $data = $insert + $yes + $data;
+
+            $data = array_merge($data, array());
+        } else {
+            $data = $insert + $data;
+
+            $data = array_merge($data, array());
+        }
+
+        if (!$data) {
+            Dever::alert('暂无数据');
+        }
+
+        return $data;
+    }
+}

+ 130 - 0
app/content/lib/Video.php

@@ -0,0 +1,130 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Video
+{
+    # 获取文章信息
+    public function getInfo()
+    {
+        $id = Dever::input('id');
+        $data = Dever::db('content/video')->getOne($id);
+
+        if (!$data) {
+            Dever::alert('错误的视频信息');
+        }
+
+        if ($data['author_id']) {
+            $data['author'] = Dever::db('content/author')->one($data['author_id']);
+        }
+
+        $data['cdate'] = date('Y年m月d日', $data['pdate']);
+        $data['tag_html'] = '';
+        if ($data['tag']) {
+            $tag_data = Dever::load('tag/api')->tag_content($data['author_id']);
+            if ($tag_data) {
+                $data['tag_html'] = '标签:';
+                foreach ($tag_data as $k => $v) {
+                    $link = Dever::url('search_list?tid=' . $v['id'], 'main');
+                    $data['tag_html'] .= '<a href="'.$link.'" target="_blank">'.$v['name'].'</a>';
+                }
+            }
+        }
+
+        # 获取上一篇和下一篇
+        $where['id'] = $id;
+        $where['cate_id'] = $data['cate_id'];
+        $data['prev'] = Dever::db('content/video')->findPrev($where);
+        if ($data['prev']) {
+            $data['prev']['link'] = Dever::load('content/lib/common')->getInfoLink(3, $data['prev']['id']);
+            $data['prev']['cdate'] = date('Y年m月d日', $data['prev']['pdate']);
+        }
+        $data['next'] = Dever::db('content/video')->findNext($where);
+        if ($data['next']) {
+            $data['next']['link'] = Dever::load('content/lib/common')->getInfoLink(3, $data['next']['id']);
+            $data['next']['cdate'] = date('Y年m月d日', $data['next']['pdate']);
+        }
+        //print_r($data);die;
+
+        $data['up_url'] = Dever::url('content/lib/video.addUp?id=' . $data['id']);
+
+        $this->addView($id);
+
+        return $data;
+    }
+
+    # 获取最新列表
+    public function getAll()
+    {
+        $where = array();
+
+        $cate_id = Dever::input('cid');
+        if ($cate_id > 0) {
+            $where['cate_id'] = $cate_id;
+        }
+        $data = Dever::db('content/video')->getAll($where);
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(3, $v['id']);
+                $data[$k]['cdate'] = date('Y-m-d', $v['pdate']);
+            }
+        }
+
+        return $data;
+    }
+
+    # 获取相关推荐
+    public function getRelation($info)
+    {
+        $where['noid'] = Dever::input('id');
+        $data = Dever::db('content/video')->getOne($where['noid']);
+        $where['cate_id'] = $data['cate_id'];
+        $data = Dever::db('content/video')->getRelation($where);
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(3, $v['id']);
+            }
+        }
+
+        return $data;
+    }
+
+    # 增加浏览量
+    public function addView($id)
+    {
+        Dever::db('content/video')->addView(array('where_id' => $id, 'set_num_view' => 1));
+    }
+
+    # 点赞
+    public function addUp_api()
+    {
+        $id = Dever::input('id');
+        Dever::db('content/video')->addUp(array('where_id' => $id, 'set_num_up' => 1));
+    }
+
+    # 获取精彩推荐
+    public function getTop($cate_id = false)
+    {
+        $where = array();
+
+        if ($cate_id) {
+            $where['cate_id'] = $cate_id;
+        }
+        
+        $data = Dever::db('content/video')->getTop($where);
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $cate = Dever::db('content/cate')->one($v['cate_id']);
+                $data[$k]['cate_name'] = $cate['name'];
+                $data[$k]['link'] = Dever::load('content/lib/common')->getInfoLink(3, $v['id']);
+                $data[$k]['cdate'] = date('Y-m-d', $v['pdate']);
+            }
+        }
+
+        return $data;
+    }
+}

+ 8 - 0
boot.php

@@ -0,0 +1,8 @@
+<?php
+define('DEVER_PROJECT', 'news');
+define('DEVER_PROJECT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+if (defined('DEVER_PACKAGE')) {
+	include('dever_package/'.DEVER_PACKAGE.'/index.php');
+} else {
+	include('dever/boot.php');
+}

+ 2 - 0
common.php

@@ -0,0 +1,2 @@
+<?php
+

+ 87 - 0
config/base.php

@@ -0,0 +1,87 @@
+<?php
+$config['base'] = array
+(
+	'name' => '神秘城信息部',
+    'name' => '橙猫资讯',
+	'version' => '1.0.0 Beta',
+
+    'audit' => array
+    (
+        1 => '已审核',
+        2 => '未审核',
+        3 => '审核未通过',
+    ),
+
+    # 上线状态
+    'status' => array
+    (
+        1 => '上线发布',
+        2 => '下架',
+    ),
+
+    # 加密key
+    'encode_key' => 'dreamland1985',
+
+    # 站点使用邮箱还是手机作为主账号
+    'account' => 'mobile',
+
+    # 日志系统
+    'log' => array
+    (
+        'cron' => array
+        (
+            'ad/lib/cron.run'
+        ),
+    ),
+
+    # 积分配置
+    'score' => array
+    (
+        # 实时增加积分开启,关闭则需要把lib/core.cron放到计划任务中
+        'sync' => true,
+    ),
+
+    # 启用全站图片压缩
+    'pic' => 'yun_t1',
+
+    # 队列
+    'queue' => array
+    (
+        'method' => 'redis',
+        'host' => 'server-redis',
+        'port' => '6379',
+        'password' => 'dm_redis_123',
+    ),
+);
+
+
+# 前台通用配置
+$config['template'] = array
+(
+    # 静态页面目录
+    'assets' => 'default',
+
+    # 模板编译器目录
+    'template' => 'default',
+
+    # 模板html文件的所在目录,默认为html
+    'path' => '',
+
+    'replace' => array
+    (
+        'css' => 'css/',
+        'js' => 'js/',
+        'images' => 'images/',
+        'script' => 'script/',
+        'static' => './static/',
+    ),
+
+    # 编译器与模板对应关系目录,定义之后,代表可以完全不改动前端的代码,可以为空,为空则一一对应,参考manage
+    'relation' => array
+    (
+        # 首页启动屏幕
+        'home' => 'index',
+    ),
+    
+);
+return $config;

+ 162 - 0
config/env/localhost/default.php

@@ -0,0 +1,162 @@
+<?php
+
+# 验证dc是否存在,一般在share目录下
+$dc = array();
+$dc_file = '/share/dc/config.php';
+if (is_file($dc_file)) {
+    $dc = include($dc_file);
+}
+# 基本配置
+$config['base'] = array
+(
+    # api文档生成是否开启,开启后,将会根据访问来生成文档。生产环境建议禁止
+    'apiDoc' => false,
+    # api日志是否开启,开启后,将会记录所有带有_api后缀方法的请求参数和响应参数
+    'apiLog' => false,
+
+    # 定义自动转为api的目录,可以将该目录下的所有类的公共方法,都转为可以访问的api,开启该功能可能有安全性问题。
+    'apiOpenPath' => 'src',
+
+    # 启用后,将会根据api目录下的配置文件自动定位api
+    'apiConfig' => false,
+);
+
+if (isset($dc['data'])) {
+    $config['base']['data'] = $dc['data'];
+}
+
+$create = -1;
+if (isset($dc['mysql']['create'])) {
+    $create = -1;
+}
+$ip = isset($dc['host']) ? $dc['host'] : '192.168.33.10';
+
+$local = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $ip;
+
+
+# 数据库配置
+$config['database'] = array
+(
+    # 是否开启mysql自助优化功能,开启后,会记录所有where条件和order的字段,可以方便的在后台进行分析、增加索引,必须安装manage组件
+    //'opt' => true,
+
+    # 是否开启sql自动优化,将sql中的select * 转换为 select a,b形式,将sql中的where条件按照索引从左到右自动排序,必须打开上述的opt选项,数据量大时建议打开。
+    //'sqlOp' => true,
+    'create' => $create,
+	# 默认数据库配置
+	'default' => array
+	(
+		'type' => 'pdo',
+		'host' => array
+		(
+			'read' => isset($dc['mysql']) ? $dc['mysql']['host'] : 'web-mysql:3306',
+			'update' => isset($dc['mysql']) ? $dc['mysql']['host'] : 'web-mysql:3306',
+            'create' => isset($dc['mysql']) ? $dc['mysql']['host_create'] : 'web-mysql:3306',
+		),
+		'database' => 'shemic_news',
+		'username' => isset($dc['mysql']) ? $dc['mysql']['username'] : 'root',
+		'password' => isset($dc['mysql']) ? $dc['mysql']['password'] : '123456',
+		'charset' => 'utf8mb4',
+	),
+);
+
+# 缓存配置
+$config['cache'] = array
+(
+    # 启用mysql数据库缓存,这个缓存是根据表名自动生成,dever::load形式和service的all、one形式均自动支持,无需手动添加
+    'mysql' => 0,
+    # 启用页面缓存 会根据当前的url来生成缓存,相当于页面静态化。
+    'html' => 0,
+    # 启用数据级别缓存 这个缓存是程序员自定义的:Dever::cache('name', 'value', 3600);
+    'data' => 0,
+    # 启用load加载器缓存,一般不加载
+    'load' => 0,
+    # 启用load加载器的远程加载缓存
+    'curl' => 0,
+    # 启用路由缓存
+    'route' => 0,
+
+    # 缓存精细控制,根据uri来控制,0则无需缓存
+    'routeKey' => array
+    (
+        
+    ),
+
+    # 哪些路由中的参数不参与生成缓存的key
+    'routeNoParam' => array
+    (
+        'uid' => array
+        (
+            
+        ),
+    ),
+    
+    # 缓存清理的参数名,请通过shell=clearcache执行
+    'shell' => 'clearcache',
+
+    # 是否启用key失效时间记录,启用之后,将会记录每个key的失效时间
+    'expire' => true,
+
+    # 缓存类型
+    'type' => 'redis',//memcache、redis
+
+    # 缓存保存方式,支持多个数据源、多台缓存服务器
+    'store' => array
+    (
+        array
+        (
+            'host' => 'server-redis',
+            'port' => '6379',
+            'weight' => 100,
+            'password' => 'dm_redis_123',
+        ),
+    ),
+);
+
+$config['debug'] = array
+(
+	'log' => false
+);
+
+/*
+if (DEVER_APP_NAME == 'source') {
+    $config['debug']['log'] = array('type' => 'file'); 
+}
+*/
+
+
+$host = 'http://'.$local . '/';
+
+$upload = $host . 'package/';
+$uploadcdn = $host . 'data/';
+
+$config['host'] = array
+(
+    'upload'=> $upload . 'upload/?save',
+    'uploadRes'     => isset($dc['res']) && $dc['res'] ? $dc['res'] : $uploadcdn . 'upload/',
+
+    # 定义接口
+    'project' => array
+    (
+        'uploads' => array
+        (
+            'path' => $host. 'news/package/upload/?',
+        ),
+        'pays' => array
+        (
+            'path' => $host. 'news/package/pay/?',
+        ),
+        'goodss' => array
+        (
+            'path' => $host. 'news/package/goods/?',
+        ),
+    ),
+);
+
+/*
+if (!strstr($_SERVER['DOCUMENT_URI'], 'goods')) {
+    //$config['host']['project']['goods'] = $config['host']['project']['goodss'];
+}
+*/
+
+return $config;

+ 6 - 0
config/route.php

@@ -0,0 +1,6 @@
+<?php
+return array
+(
+	'home' => 'home',
+	'c=v(.*?)_(.*?)' => 'view.get?type=$1&id=$2',
+);

File diff suppressed because it is too large
+ 90 - 0
data/compile/news/main/default/blog.cmp.php


+ 192 - 0
data/compile/news/main/default/blog_info.cmp.php

@@ -0,0 +1,192 @@
+<?php $name='blog_info' ?>
+<?php $title=Dever::load('content/lib/article.getInfo#name') ?>
+<?php $data['main/api.config']=Dever::load('main/api.config') ?>
+<?php $data['main/api.ad|key=ad_top&name=头部广告']=Dever::load('main/api.ad', array (
+  'key' => 'ad_top',
+  'name' => '头部广告',
+)) ?>
+<?php $data['main/api.ad?key=ad_top&name=头部广告']=Dever::load('main/api.ad?key=ad_top&name=头部广告') ?>
+<?php $data['main/api.menu']=Dever::load('main/api.menu') ?>
+<?php $data['content/lib/article.getInfo']=Dever::load('content/lib/article.getInfo') ?>
+<?php $data['content/lib/article.getRelation']=Dever::load('content/lib/article.getRelation') ?>
+<?php $data['main/api.ad|key=ad_foot&name=底部广告']=Dever::load('main/api.ad', array (
+  'key' => 'ad_foot',
+  'name' => '底部广告',
+)) ?>
+<?php $data['main/api.ad?key=ad_foot&name=底部广告']=Dever::load('main/api.ad?key=ad_foot&name=底部广告') ?>
+<?php $data['main/api.push|key=home_tuijian&name=推荐阅读']=Dever::load('main/api.push', array (
+  'key' => 'home_tuijian',
+  'name' => '推荐阅读',
+)) ?>
+<?php $data['main/api.push?key=home_tuijian&name=推荐阅读']=Dever::load('main/api.push?key=home_tuijian&name=推荐阅读') ?>
+<?php $data['content/lib/article.getDataByNum']=Dever::load('content/lib/article.getDataByNum') ?>
+<?php $data['main/api.getTagList']=Dever::load('main/api.getTagList') ?>
+<?php $data['main/api.ad|key=ad_right_1&name=右侧广告1']=Dever::load('main/api.ad', array (
+  'key' => 'ad_right_1',
+  'name' => '右侧广告1',
+)) ?>
+<?php $data['main/api.ad?key=ad_right_1&name=右侧广告1']=Dever::load('main/api.ad?key=ad_right_1&name=右侧广告1') ?>
+<?php $data['main/api.ad|key=ad_right_2&name=右侧广告2']=Dever::load('main/api.ad', array (
+  'key' => 'ad_right_2',
+  'name' => '右侧广告2',
+)) ?>
+<?php $data['main/api.ad?key=ad_right_2&name=右侧广告2']=Dever::load('main/api.ad?key=ad_right_2&name=右侧广告2') ?>
+<?php $data['main/api.push|key=foot_link&name=底部链接']=Dever::load('main/api.push', array (
+  'key' => 'foot_link',
+  'name' => '底部链接',
+)) ?>
+<?php $data['main/api.push?key=foot_link&name=底部链接']=Dever::load('main/api.push?key=foot_link&name=底部链接') ?>
+<!doctype html>
+<!--power by dever--><html>
+<head>
+<meta charset="utf-8">
+<title><?php  echo isset($title) ? $title . "_" . Dever::load("main/api.config#name") : Dever::load("main/api.config#name") ?></title>
+<meta name="keywords" content="<?php  echo Dever::load("main/api.config#keywords") ?>" />
+<meta name="description" content="<?php  echo Dever::load("main/api.config#info") ?>" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<link href="<?php echo Dever::config("host")->css ?>base.css" rel="stylesheet">
+<link href="<?php echo Dever::config("host")->css ?>m.css" rel="stylesheet">
+<script src="<?php echo Dever::config("host")->js ?>jquery-3.6.0.min.js" ></script>
+<script src="<?php echo Dever::config("host")->js ?>comm.js"></script>
+<script><?php  echo Dever::script() ?></script></head>
+<body>
+<header>
+  <div class="box">
+    <div class="logo"><a href="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['home_link']) ? $data['main/api.config']['home_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>"><img src="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['logo']) ? $data['main/api.config']['logo'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" alt="logo"></a></div>
+    <div class="ad_top" style="<?php if(!(Dever::load('main/api.ad?key=ad_top&name=头部广告'))): ?>display:none;<?php endif; ?>"><?php if(isset($data['main/api.ad|key=ad_top&name=头部广告']) && is_array($data['main/api.ad|key=ad_top&name=头部广告'])): ?><?php $t=count($data['main/api.ad|key=ad_top&name=头部广告'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.ad|key=ad_top&name=头部广告'] as $k => $v): ?><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>" target="_blank"><img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php  echo $v,name ?>"></a><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.ad|key=ad_top&name=头部广告'] ?><?php endif; ?></div>
+    <div class="contact_icon">
+      <ul>
+        <li><a href="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['qq_link']) ? $data['main/api.config']['qq_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>"><i class="icon_qq"></i></a></li>
+        <li><a href="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['phone_link']) ? $data['main/api.config']['phone_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>"><i class="icon_tel"></i></a></li>
+        <li><a href="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['email_link']) ? $data['main/api.config']['email_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" target="_blank"><i class="icon_email"></i></a></li>
+        <li><i class="icon_weixin"><img src="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['wechat']) ? $data['main/api.config']['wechat'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" alt="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['name']) ? $data['main/api.config']['name'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" style="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?>width:140px<?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>"></i></li>
+      </ul>
+    </div>
+    <div class="clear"></div>
+    <nav>
+      <ul id="starlist"><?php echo $data['main/api.menu'] ?></ul><h2 id="mnavh"><span class="navicon"></span></h2>
+      <div class="is-search"> <i></i> </div>
+      <div class="search-page">
+        <div class="search_box">
+          <div class="go-left"></div>
+          <div class="search">
+            <form action="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['search_link']) ? $data['main/api.config']['search_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" method="post" name="searchform" id="searchform">
+              <input name="keyboard" id="keyboard" class="input_text" value="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['search_value']) ? $data['main/api.config']['search_value'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" style="color: rgb(153, 153, 153);" onfocus="if(value=='请输入关键字词'){this.style.color='#000';value=''}" onblur="if(value==''){this.style.color='#999';value='请输入关键字词'}" type="text">
+              <input name="show" value="title" type="hidden">
+              <input name="tempid" value="1" type="hidden">
+              <input name="tbname" value="news" type="hidden">
+              <input name="Submit" class="input_submit" value="搜索" type="submit">
+            </form>
+          </div>
+        </div>
+      </div>
+       
+    </nav>
+  </div>
+</header>
+<div class="ph_margin"></div>
+<div class="box">
+  <div class="blogs_info_page">
+    <div class="weizhi" style="display: none">您当前的位置:<a href="">首页</a>&nbsp;&gt;&nbsp;<a href="/">博文日记</a></div>
+    <article>
+      <h1><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['name']) ? $data['content/lib/article.getInfo']['name'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?></h1>
+      <div class="wz_info"> <span><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?>作者:<?php echo isset($data['content/lib/article.getInfo']['author']['name']) ? $data['content/lib/article.getInfo']['author']['name'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php echo isset($v['author']['name']) ? $v['author']['name'] : "" ?><?php endif; ?></span><span><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?>时间:<?php echo isset($data['content/lib/article.getInfo']['cdate']) ? $data['content/lib/article.getInfo']['cdate'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php echo isset($v['cdate']) ? $v['cdate'] : "" ?><?php endif; ?></span> <span><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?>阅读:<?php echo isset($data['content/lib/article.getInfo']['num_view']) ? $data['content/lib/article.getInfo']['num_view'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php echo isset($v['num_view']) ? $v['num_view'] : "" ?><?php endif; ?></span></div>
+      <div class="content"><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['content']) ? $data['content/lib/article.getInfo']['content'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?></div>
+      <div class="diggit" style="<?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?>display:none<?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?>"> <a href="JavaScript:makeRequest('/','EchoReturnedText','GET','');"> 很赞哦! (<b id="diggnum">3</b>)</a> </div>
+      <div class="share" style="<?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?>display:none<?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?>"><span>分享到:</span>
+        <div class="bdsharebuttonbox bdshare-button-style0-16" data-bd-bind="1620626498424"> <a title="分享到QQ好友" href="#" class="bds_sqq" data-cmd="sqq"></a> <a title="分享到微信" href="#" class="bds_weixin" data-cmd="weixin"></a> <a title="分享到QQ空间" href="#" class="bds_qzone" data-cmd="qzone"></a> <a title="分享到新浪微博" href="#" class="bds_tsina" data-cmd="tsina"></a> <a href="#" class="bds_more" data-cmd="more"></a> </div>
+      </div>
+      <div class="wz_zhuanzai">
+        <p>本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。</p>
+        <p>如果侵犯了你的权益请来信告知我们删除。邮箱:<a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&amp;email=dacesmiling@qq.com" target="_blank">dacesmiling@qq.com</a></p>
+      </div>
+      <div class="tags"><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['tag_html']) ? $data['content/lib/article.getInfo']['tag_html'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?></div>
+      <div class="info-pre-next">
+        <p style="<?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php  echo $data['content/lib/article.getInfo']['prev'] ? "" : "display:none" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?>">上一篇:<a href="<?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['prev']['link']) ? $data['content/lib/article.getInfo']['prev']['link'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?>"><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['prev']['name']) ? $data['content/lib/article.getInfo']['prev']['name'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?></a> </p>
+        <p style="<?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php  echo $data['content/lib/article.getInfo']['next'] ? "" : "display:none" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?>">下一篇:<a href="<?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['next']['link']) ? $data['content/lib/article.getInfo']['next']['link'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?>"><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['next']['name']) ? $data['content/lib/article.getInfo']['next']['name'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?></a> </p>
+      </div>
+    </article>
+    <div class="designer">
+      <section><i><img src="<?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['author']['avatar']) ? $data['content/lib/article.getInfo']['author']['avatar'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?>"></i>
+        <h3><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['author']['name']) ? $data['content/lib/article.getInfo']['author']['name'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?></h3>
+        <p><?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?><?php echo isset($data['content/lib/article.getInfo']['author']['desc']) ? $data['content/lib/article.getInfo']['author']['desc'] : "" ?><?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?></p>
+      </section>
+      <span><img src="<?php echo Dever::config("host")->images ?>wx.png" style="<?php if($data['content/lib/article.getInfo'] && is_array($data['content/lib/article.getInfo'])): ?>display:none<?php else: ?><?php echo $data['content/lib/article.getInfo'] ?><?php endif; ?>"></span></div>
+    <div class="ad" style="<?php if(!(Dever::load('main/api.ad?key=ad_foot&name=底部广告'))): ?>display:none;<?php endif; ?>"><?php if(isset($data['main/api.ad|key=ad_foot&name=底部广告']) && is_array($data['main/api.ad|key=ad_foot&name=底部广告'])): ?><?php $t=count($data['main/api.ad|key=ad_foot&name=底部广告'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.ad|key=ad_foot&name=底部广告'] as $k => $v): ?><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" target="_blank" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>"><img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php  echo $v,name ?>"></a><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.ad|key=ad_foot&name=底部广告'] ?><?php endif; ?></div>
+    <div class="wz_love" style="<?php if(!(Dever::load('content/lib/article.getRelation'))): ?>display:none;<?php endif; ?>">
+      <h2 class="h_title">猜你喜欢</h2>
+      <ul>
+        <?php if(isset($data['content/lib/article.getRelation']) && is_array($data['content/lib/article.getRelation'])): ?><?php $t=count($data['content/lib/article.getRelation'])-1 ?><?php $i=0 ?><?php foreach($data['content/lib/article.getRelation'] as $k => $v): ?><li><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" target="" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>"> <i><img src="<?php echo isset($v['pic_cover']) ? $v['pic_cover'] : "" ?>" alt="<?php echo isset($v['name']) ? $v['name'] : "" ?>"></i>
+          <h2><?php echo isset($v['name']) ? $v['name'] : "" ?></h2>
+          <span><?php echo isset($v['cdate']) ? $v['cdate'] : "" ?></span> </a></li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['content/lib/article.getRelation'] ?><?php endif; ?>
+        
+        
+        
+        
+        
+      </ul>
+    </div>
+  </div>
+  <aside class="rbox">
+    <div class="isgood_news" style="<?php if(!(Dever::load('main/api.push?key=home_tuijian&name=推荐阅读'))): ?>display:none;<?php endif; ?>">
+      <h2 class="h_title">推荐阅读</h2>
+      <ul>
+        <?php if(isset($data['main/api.push|key=home_tuijian&name=推荐阅读']) && is_array($data['main/api.push|key=home_tuijian&name=推荐阅读'])): ?><?php $t=count($data['main/api.push|key=home_tuijian&name=推荐阅读'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.push|key=home_tuijian&name=推荐阅读'] as $k => $v): ?><li><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>" target=""> <i><img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php echo isset($v['name']) ? $v['name'] : "" ?>"></i><em><?php  echo $k+1 ?></em>
+          <p><?php echo isset($v['name']) ? $v['name'] : "" ?></p>
+          <span class="star5"></span> </a></li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.push|key=home_tuijian&name=推荐阅读'] ?><?php endif; ?>
+        
+        
+        
+        
+        
+      </ul>
+    </div>
+    <div class="ad_r" style="<?php if(!(Dever::load('main/api.ad?key=ad_right_1&name=右侧广告1'))): ?>display:none;<?php endif; ?>"><?php if(isset($data['main/api.ad|key=ad_right_1&name=右侧广告1']) && is_array($data['main/api.ad|key=ad_right_1&name=右侧广告1'])): ?><?php $t=count($data['main/api.ad|key=ad_right_1&name=右侧广告1'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.ad|key=ad_right_1&name=右侧广告1'] as $k => $v): ?><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>" target="_blank"><img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php  echo $v,name ?>"></a><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.ad|key=ad_right_1&name=右侧广告1'] ?><?php endif; ?></div>
+    <div class="hot_news" style="<?php if(!(Dever::load('content/lib/article.getDataByNum'))): ?>display:none;<?php endif; ?>">
+      <h2 class="h_title">人气点击</h2>
+      <ol start="1">
+        <?php if(isset($data['content/lib/article.getDataByNum']) && is_array($data['content/lib/article.getDataByNum'])): ?><?php $t=count($data['content/lib/article.getDataByNum'])-1 ?><?php $i=0 ?><?php foreach($data['content/lib/article.getDataByNum'] as $k => $v): ?><li><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>" target="">
+          <p><?php echo isset($v['name']) ? $v['name'] : "" ?></p>
+          </a><span><?php echo isset($v['num_view']) ? $v['num_view'] : "" ?></span></li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['content/lib/article.getDataByNum'] ?><?php endif; ?>
+        
+        
+        
+        
+        
+        
+        
+        
+        
+      </ol>
+    </div>
+    <div class="ad_r" style="<?php if(!(Dever::load('main/api.ad?key=ad_right_2&name=右侧广告2'))): ?>display:none;<?php endif; ?>"><?php if(isset($data['main/api.ad|key=ad_right_2&name=右侧广告2']) && is_array($data['main/api.ad|key=ad_right_2&name=右侧广告2'])): ?><?php $t=count($data['main/api.ad|key=ad_right_2&name=右侧广告2'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.ad|key=ad_right_2&name=右侧广告2'] as $k => $v): ?><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>" target="_blank"><img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php  echo $v,name ?>"></a><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.ad|key=ad_right_2&name=右侧广告2'] ?><?php endif; ?></div>
+    <div class="tagsclous" style="<?php if(!(Dever::load('main/api.getTagList'))): ?>display:none;<?php endif; ?>">
+      <h2 class="h_title">标签云</h2>
+      <ul>
+        <?php if(isset($data['main/api.getTagList']) && is_array($data['main/api.getTagList'])): ?><?php $t=count($data['main/api.getTagList'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.getTagList'] as $k => $v): ?><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" target="" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>"><?php echo isset($v['name']) ? $v['name'] : "" ?></a><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.getTagList'] ?><?php endif; ?>              
+      </ul>
+    </div>
+    <div class="emial_box">
+      <p>您可以通过以下方式联系我们</p>
+      <p>(<b>提议</b>、<b>投诉</b>、<b>合作</b>推荐此方式)</p>
+      <p>发送邮件Email到</p>
+      <p><a href="<?php echo $data['main/api.config']['email_link'] ?>" target="_blank"><?php echo $data['main/api.config']['email'] ?></a></p>
+    </div>
+  </aside>
+  <div class="clear"></div>
+</div>
+<footer>
+  <div class="box">
+    <ul class="footer_nav" style="<?php if(!(Dever::load('main/api.push?key=foot_link&name=底部链接'))): ?>display:none;<?php endif; ?>">
+      <?php if(isset($data['main/api.push|key=foot_link&name=底部链接']) && is_array($data['main/api.push|key=foot_link&name=底部链接'])): ?><?php $t=count($data['main/api.push|key=foot_link&name=底部链接'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.push|key=foot_link&name=底部链接'] as $k => $v): ?><li><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" target="_blank" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>">网站地图</a></li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.push|key=foot_link&name=底部链接'] ?><?php endif; ?>
+      
+      
+      
+    </ul>
+    <div class="guanzhu_img"><i><img src="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['wechat']) ? $data['main/api.config']['wechat'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" alt="微信:4768447113">微信号</i> <i><img src="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['wechat_service']) ? $data['main/api.config']['wechat_service'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" alt="微信:4768447113">微信公众号</i></div>
+    <div class="copyright"><?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['foot']) ? $data['main/api.config']['foot'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?></div>
+  </div>
+</footer>
+<a href="#" title="返回顶部" class="icon-top"></a>
+</body>
+</html>

File diff suppressed because it is too large
+ 206 - 0
data/compile/news/main/default/index.cmp.php


+ 125 - 0
data/compile/news/main/default/search_list.cmp.php

@@ -0,0 +1,125 @@
+<?php $name='search' ?>
+<?php $title=Dever::load('content/lib/search.getInfo#name') ?>
+<?php $data['main/api.config']=Dever::load('main/api.config') ?>
+<?php $data['main/api.ad|key=ad_top&name=头部广告']=Dever::load('main/api.ad', array (
+  'key' => 'ad_top',
+  'name' => '头部广告',
+)) ?>
+<?php $data['main/api.ad?key=ad_top&name=头部广告']=Dever::load('main/api.ad?key=ad_top&name=头部广告') ?>
+<?php $data['main/api.menu']=Dever::load('main/api.menu') ?>
+<?php $data['content/lib/search.getInfo']=Dever::load('content/lib/search.getInfo') ?>
+<?php $data['content/lib/search.getAll']=Dever::load('content/lib/search.getAll') ?>
+<?php $data['main/api.push|key=home_tuijian&name=推荐阅读']=Dever::load('main/api.push', array (
+  'key' => 'home_tuijian',
+  'name' => '推荐阅读',
+)) ?>
+<?php $data['main/api.push?key=home_tuijian&name=推荐阅读']=Dever::load('main/api.push?key=home_tuijian&name=推荐阅读') ?>
+<?php $data['main/api.push|key=foot_link&name=底部链接']=Dever::load('main/api.push', array (
+  'key' => 'foot_link',
+  'name' => '底部链接',
+)) ?>
+<?php $data['main/api.push?key=foot_link&name=底部链接']=Dever::load('main/api.push?key=foot_link&name=底部链接') ?>
+<!doctype html>
+<!--power by dever--><html>
+<head>
+<meta charset="utf-8">
+<title><?php  echo isset($title) ? $title . "_" . Dever::load("main/api.config#name") : Dever::load("main/api.config#name") ?></title>
+<meta name="keywords" content="<?php  echo Dever::load("main/api.config#keywords") ?>" />
+<meta name="description" content="<?php  echo Dever::load("main/api.config#info") ?>" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<link href="<?php echo Dever::config("host")->css ?>base.css" rel="stylesheet">
+<link href="<?php echo Dever::config("host")->css ?>m.css" rel="stylesheet">
+<script src="<?php echo Dever::config("host")->js ?>jquery-3.6.0.min.js" ></script>
+<script src="<?php echo Dever::config("host")->js ?>comm.js"></script>
+<script><?php  echo Dever::script() ?></script></head>
+<body>
+<header>
+  <div class="box">
+    <div class="logo"><a href="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['home_link']) ? $data['main/api.config']['home_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>"><img src="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['logo']) ? $data['main/api.config']['logo'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" alt="logo"></a></div>
+    <div class="ad_top" style="<?php if(!(Dever::load('main/api.ad?key=ad_top&name=头部广告'))): ?>display:none;<?php endif; ?>"><?php if(isset($data['main/api.ad|key=ad_top&name=头部广告']) && is_array($data['main/api.ad|key=ad_top&name=头部广告'])): ?><?php $t=count($data['main/api.ad|key=ad_top&name=头部广告'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.ad|key=ad_top&name=头部广告'] as $k => $v): ?><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>" target="_blank"><img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php  echo $v,name ?>"></a><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.ad|key=ad_top&name=头部广告'] ?><?php endif; ?></div>
+    <div class="contact_icon">
+      <ul>
+        <li><a href="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['qq_link']) ? $data['main/api.config']['qq_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>"><i class="icon_qq"></i></a></li>
+        <li><a href="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['phone_link']) ? $data['main/api.config']['phone_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>"><i class="icon_tel"></i></a></li>
+        <li><a href="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['email_link']) ? $data['main/api.config']['email_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" target="_blank"><i class="icon_email"></i></a></li>
+        <li><i class="icon_weixin"><img src="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['wechat']) ? $data['main/api.config']['wechat'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" alt="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['name']) ? $data['main/api.config']['name'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" style="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?>width:140px<?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>"></i></li>
+      </ul>
+    </div>
+    <div class="clear"></div>
+    <nav>
+      <ul id="starlist"><?php echo $data['main/api.menu'] ?></ul><h2 id="mnavh"><span class="navicon"></span></h2>
+      <div class="is-search"> <i></i> </div>
+      <div class="search-page">
+        <div class="search_box">
+          <div class="go-left"></div>
+          <div class="search">
+            <form action="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['search_link']) ? $data['main/api.config']['search_link'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" method="post" name="searchform" id="searchform">
+              <input name="keyboard" id="keyboard" class="input_text" value="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['search_value']) ? $data['main/api.config']['search_value'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" style="color: rgb(153, 153, 153);" onfocus="if(value=='请输入关键字词'){this.style.color='#000';value=''}" onblur="if(value==''){this.style.color='#999';value='请输入关键字词'}" type="text">
+              <input name="show" value="title" type="hidden">
+              <input name="tempid" value="1" type="hidden">
+              <input name="tbname" value="news" type="hidden">
+              <input name="Submit" class="input_submit" value="搜索" type="submit">
+            </form>
+          </div>
+        </div>
+      </div>
+       
+    </nav>
+  </div>
+</header>
+<div class="ph_margin"></div>
+<div class="box">
+  <div class="blogs_search">
+    <div class="weizhi" style="display: none;">您当前的位置:<a href="">首页</a>&nbsp;&gt;&nbsp;<a href="/">博文日记</a></div>
+    <div class="xt_search">系统搜索到以下文章符合<strong><?php echo $data['content/lib/search.getInfo']['name'] ?></strong>的查询结果</div>
+    <ul>
+      <?php if(isset($data['content/lib/search.getAll']) && is_array($data['content/lib/search.getAll'])): ?><?php $t=count($data['content/lib/search.getAll'])-1 ?><?php $i=0 ?><?php foreach($data['content/lib/search.getAll'] as $k => $v): ?><li>
+        <h2><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" target="" title="<?php echo isset($v['info']['name']) ? $v['info']['name'] : "" ?>"><?php echo isset($v['info']['name']) ? $v['info']['name'] : "" ?></a></h2>
+        <p><?php echo isset($v['info']['desc']) ? $v['info']['desc'] : "" ?></p>
+        <span class="color_green"><?php echo isset($v['link']) ? $v['link'] : "" ?> - <?php echo isset($v['cdate']) ? $v['cdate'] : "" ?></span> - <a class="color_purple" href="<?php echo isset($v['cate_link']) ? $v['cate_link'] : "" ?>" target="" title="<?php echo isset($v['cate_name']) ? $v['cate_name'] : "" ?>"><?php echo isset($v['cate_name']) ? $v['cate_name'] : "" ?></a></li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><li><?php echo $data['content/lib/search.getAll'] ?><h2><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" target="" title="<?php echo isset($v['info']['name']) ? $v['info']['name'] : "" ?>"><?php echo isset($v['info']['name']) ? $v['info']['name'] : "" ?></a></h2><?php echo $data['content/lib/search.getAll'] ?><p><?php echo isset($v['info']['desc']) ? $v['info']['desc'] : "" ?></p><?php echo $data['content/lib/search.getAll'] ?><span class="color_green"><?php echo isset($v['link']) ? $v['link'] : "" ?> - <?php echo isset($v['cdate']) ? $v['cdate'] : "" ?></span> - <a class="color_purple" href="<?php echo isset($v['cate_link']) ? $v['cate_link'] : "" ?>" target="" title="<?php echo isset($v['cate_name']) ? $v['cate_name'] : "" ?>"><?php echo isset($v['cate_name']) ? $v['cate_name'] : "" ?></a></li><?php endif; ?>
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+    </ul>
+    <div class="epages"><?php  echo Dever::page("current") ?></div>
+  </div>
+  <aside class="rbox">
+    <div class="isgood_news" style="<?php if(!(Dever::load('main/api.push?key=home_tuijian&name=推荐阅读'))): ?>display:none;<?php endif; ?>">
+      <h2 class="h_title">推荐阅读</h2>
+      <ul>
+        <?php if(isset($data['main/api.push|key=home_tuijian&name=推荐阅读']) && is_array($data['main/api.push|key=home_tuijian&name=推荐阅读'])): ?><?php $t=count($data['main/api.push|key=home_tuijian&name=推荐阅读'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.push|key=home_tuijian&name=推荐阅读'] as $k => $v): ?><li><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>" target=""> <i><img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php echo isset($v['name']) ? $v['name'] : "" ?>"></i><em><?php  echo $k+1 ?></em>
+          <p><?php echo isset($v['name']) ? $v['name'] : "" ?></p>
+          <span class="star5"></span> </a></li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.push|key=home_tuijian&name=推荐阅读'] ?><?php endif; ?>
+        
+        
+        
+        
+        
+      </ul>
+    </div>
+  </aside>
+  <div class="clear"></div>
+</div>
+<footer>
+  <div class="box">
+    <ul class="footer_nav" style="<?php if(!(Dever::load('main/api.push?key=foot_link&name=底部链接'))): ?>display:none;<?php endif; ?>">
+      <?php if(isset($data['main/api.push|key=foot_link&name=底部链接']) && is_array($data['main/api.push|key=foot_link&name=底部链接'])): ?><?php $t=count($data['main/api.push|key=foot_link&name=底部链接'])-1 ?><?php $i=0 ?><?php foreach($data['main/api.push|key=foot_link&name=底部链接'] as $k => $v): ?><li><a href="<?php echo isset($v['link']) ? $v['link'] : "" ?>" target="_blank" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>">网站地图</a></li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['main/api.push|key=foot_link&name=底部链接'] ?><?php endif; ?>
+      
+      
+      
+    </ul>
+    <div class="guanzhu_img"><i><img src="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['wechat']) ? $data['main/api.config']['wechat'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" alt="微信:4768447113">微信号</i> <i><img src="<?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['wechat_service']) ? $data['main/api.config']['wechat_service'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?>" alt="微信:4768447113">微信公众号</i></div>
+    <div class="copyright"><?php if($data['main/api.config'] && is_array($data['main/api.config'])): ?><?php echo isset($data['main/api.config']['foot']) ? $data['main/api.config']['foot'] : "" ?><?php else: ?><?php echo $data['main/api.config'] ?><?php endif; ?></div>
+  </div>
+</footer>
+<a href="#" title="返回顶部" class="icon-top"></a>
+</body>
+</html>

+ 321 - 0
data/compile/news/manage/layadmin/console.cmp.php

@@ -0,0 +1,321 @@
+<?php $data['manage/auth.notice']=Dever::load('manage/auth.notice') ?>
+<?php $data['manage/console.data']=Dever::load('manage/console.data') ?>
+<?php $data['manage/console.system']=Dever::load('manage/console.system') ?>
+<?php $data['manage/auth.config']=Dever::load('manage/auth.config') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/head.cmp.php' ?>
+</head>
+<body>
+  
+  <div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+    
+    </div>
+    <div class="layui-row layui-col-space15">
+      <div class="layui-col-md8">
+        <div class="layui-row layui-col-space15">
+          <div class="layui-col-md6" style="display: none;">
+            <div class="layui-card">
+              <div class="layui-card-header">快捷方式</div>
+              <div class="layui-card-body">
+                
+                <div class="layui-carousel layadmin-carousel layadmin-shortcut">
+                  <div carousel-item>
+                    <ul class="layui-row layui-col-space10">
+                      <li class="layui-col-xs3">
+                        <a lay-href="home/homepage1.html">
+                          <i class="layui-icon layui-icon-console"></i>
+                          <cite>主页一</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="home/homepage2.html">
+                          <i class="layui-icon layui-icon-chart"></i>
+                          <cite>主页二</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="component/layer/list.html">
+                          <i class="layui-icon layui-icon-template-1"></i>
+                          <cite>弹层</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a layadmin-event="im">
+                          <i class="layui-icon layui-icon-chat"></i>
+                          <cite>聊天</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="component/progress/index.html">
+                          <i class="layui-icon layui-icon-find-fill"></i>
+                          <cite>进度条</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="app/workorder/list.html">
+                          <i class="layui-icon layui-icon-survey"></i>
+                          <cite>工单</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="user/user/list.html">
+                          <i class="layui-icon layui-icon-user"></i>
+                          <cite>用户</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/system/website.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>设置</cite>
+                        </a>
+                      </li>
+                    </ul>
+                    <ul class="layui-row layui-col-space10">
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/user/info.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>我的资料</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/user/info.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>我的资料</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/user/info.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>我的资料</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/user/info.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>我的资料</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/user/info.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>我的资料</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/user/info.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>我的资料</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/user/info.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>我的资料</cite>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs3">
+                        <a lay-href="set/user/info.html">
+                          <i class="layui-icon layui-icon-set"></i>
+                          <cite>我的资料</cite>
+                        </a>
+                      </li>
+                    </ul>
+                    
+                  </div>
+                </div>
+                
+              </div>
+            </div>
+          </div>
+          <div class="layui-col-md12" id="console_data" style="<?php if(!(Dever::load('manage/console.data'))): ?>display:none;<?php endif; ?>">
+            <div class="layui-card">
+              <div class="layui-card-header">数据概览</div>
+              <div class="layui-card-body">
+
+                <div class="layui-carousel layadmin-carousel layadmin-backlog">
+                  <div carousel-item>
+                    <ul class="layui-row layui-col-space10">
+                      <?php if(isset($data['manage/console.data']) && is_array($data['manage/console.data'])): ?><?php $t=count($data['manage/console.data'])-1 ?><?php $i=0 ?><?php foreach($data['manage/console.data'] as $k => $v): ?><li class="layui-col-xs3">
+                        <a class="layadmin-backlog-body">
+                          <h3><?php echo isset($v['name']) ? $v['name'] : "" ?></h3>
+                          <p><cite><?php echo isset($v['num']) ? $v['num'] : "" ?></cite></p>
+                        </a>
+                      </li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/console.data'] ?><?php endif; ?>
+                      
+                      
+                      
+                      
+                      
+                    </ul>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="layui-col-md12" id="console_system_data">
+            <div class="layui-card">
+              <div class="layui-card-header">系统概览</div>
+              <div class="layui-card-body">
+
+                <div class="layui-carousel layadmin-carousel layadmin-backlog">
+                  <div carousel-item>
+                    <ul class="layui-row layui-col-space10">
+                      <?php if(isset($data['manage/console.system']) && is_array($data['manage/console.system'])): ?><?php $t=count($data['manage/console.system'])-1 ?><?php $i=0 ?><?php foreach($data['manage/console.system'] as $k => $v): ?><li class="layui-col-xs3">
+                        <a class="layadmin-backlog-body">
+                          <h3><?php echo isset($v['name']) ? $v['name'] : "" ?></h3>
+                          <p><cite><?php echo isset($v['num']) ? $v['num'] : "" ?></cite></p>
+                        </a>
+                      </li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/console.system'] ?><?php endif; ?>
+                      
+                      
+                      
+                      
+                      
+                    </ul>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="layui-col-md12" style="display: none;">
+            <div class="layui-card">
+              <div class="layui-card-header">图表走势</div>
+              <div class="layui-card-body">
+                
+                <div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-dataview">
+                  <div carousel-item id="LAY-index-dataview">
+                    <div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
+                    <div></div>
+                    <div></div>
+                  </div>
+                </div>
+                
+              </div>
+            </div>
+            <div class="layui-card" style="display: none;">
+              <div class="layui-tab layui-tab-brief layadmin-latestData">
+                <ul class="layui-tab-title">
+                  <li class="layui-this">今日热搜</li>
+                  <li>今日热帖</li>
+                </ul>
+                <div class="layui-tab-content">
+                  <div class="layui-tab-item layui-show">
+                    <table id="LAY-index-topSearch"></table>
+                  </div>
+                  <div class="layui-tab-item">
+                    <table id="LAY-index-topCard"></table>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      
+      <div class="layui-col-md4">
+
+        <div class="layui-card dever-notice" style="<?php if(!(Dever::load('manage/auth.notice'))): ?>display:none;<?php endif; ?>">
+          <div class="layui-card-header">系统公告</div>
+          <div class="layui-card-body">
+            <div class="layui-carousel layadmin-carousel layadmin-news" data-autoplay="true" data-anim="fade" lay-filter="news">
+              <div carousel-item id="dever-notice">
+                <?php if(isset($data['manage/auth.notice']) && is_array($data['manage/auth.notice'])): ?><?php $t=count($data['manage/auth.notice'])-1 ?><?php $i=0 ?><?php foreach($data['manage/auth.notice'] as $k => $v): ?><div><a href="#" target="_self" class="layui-bg-red" hrefs="<?php  echo Dever::url("notice?where_id=".$v['id']."&where_config=".$v['config']) ?>" title="<?php echo isset($v['name']) ? $v['name'] : "" ?>" style="background-color: #FF5722!important;"><?php echo isset($v['name']) ? $v['name'] : "" ?></a></div><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/auth.notice'] ?><?php endif; ?>
+                 
+                
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <div class="layui-card">
+          <div class="layui-card-header">
+            系统说明
+            <i class="layui-icon layui-icon-tips" id="system_title" lay-tips="<?php echo $data['manage/auth.config']['title'] ?>" lay-offset="5"></i>
+          </div>
+          <div class="layui-card-body layui-text layadmin-text" id="system_info"><?php echo $data['manage/auth.config']['content'] ?></div>
+        </div>
+
+        <div class="layui-card">
+          <div class="layui-card-header">系统信息</div>
+          <div class="layui-card-body layui-text">
+            <table class="layui-table">
+              <colgroup>
+                <col width="100">
+                <col>
+              </colgroup>
+              <tbody>
+                <tr>
+                  <td>系统名称</td>
+                  <td id="system_name"><?php  echo Dever::config("base")->name ?>V<?php  echo Dever::config("base")->version ?></td>
+                </tr>
+                <tr>
+                  <td>内核驱动</td>
+                  <td id="framework_name"><?php  echo Dever::config("base")->framework_name ?></td>
+                </tr>
+                <tr>
+                  <td>主要特色</td>
+                  <td id="desc"><?php  echo Dever::config("base")->desc ?></td>
+                </tr>
+                <tr>
+                  <td>联系我们</td>
+                  <td style="padding-bottom: 0;" id="contact">
+                    <div class="layui-btn-container">
+                      <a href="<?php  echo Dever::config("base")->web ?>" target="_blank" class="layui-btn layui-btn-danger">官方社区</a>
+                      <a href="<?php  echo Dever::config("base")->github ?>" target="_blank" class="layui-btn">下载框架</a>
+                    </div>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+        </div>
+
+        
+        <div class="layui-card" style="display: none">
+          <div class="layui-card-header">效果报告</div>
+          <div class="layui-card-body layadmin-takerates">
+            <div class="layui-progress" lay-showpercent="yes">
+              <h3>转化率(日同比 28% <span class="layui-edge layui-edge-top" lay-tips="增长" lay-offset="-15"></span>)</h3>
+              <div class="layui-progress-bar" lay-percent="65%"></div>
+            </div>
+            <div class="layui-progress" lay-showpercent="yes">
+              <h3>签到率(日同比 11% <span class="layui-edge layui-edge-bottom" lay-tips="下降" lay-offset="-15"></span>)</h3>
+              <div class="layui-progress-bar" lay-percent="32%"></div>
+            </div>
+          </div>
+        </div>
+        
+        <div class="layui-card" style="display: none;">
+          <div class="layui-card-header">实时监控</div>
+          <div class="layui-card-body layadmin-takerates">
+            <div class="layui-progress" lay-showpercent="yes">
+              <h3>CPU使用率</h3>
+              <div class="layui-progress-bar" lay-percent="58%"></div>
+            </div>
+            <div class="layui-progress" lay-showpercent="yes">
+              <h3>内存占用率</h3>
+              <div class="layui-progress-bar layui-bg-red" lay-percent="90%"></div>
+            </div>
+          </div>
+        </div>
+        
+      </div>
+      
+    </div>
+  </div>
+
+  <?php require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/script.cmp.php' ?>
+  <script>
+    layui.config({
+        base: '<?php echo Dever::config("host")->script ?>lib/layui/admin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index' //主入口模块
+    }).use(['index', 'console']);
+</script>
+</body>
+</html>

+ 66 - 0
data/compile/news/manage/layadmin/home.cmp.php

@@ -0,0 +1,66 @@
+<?php $data['manage/database.cookie']=Dever::load('manage/database.cookie') ?>
+<?php $data['manage/menu.link']=Dever::load('manage/menu.link') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php if(!isset($fast) || (isset($fast) && $fast != 1)){require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/head.cmp.php';} ?>
+  <style>
+    .layui-layout-admin .layui-body{top: 50px}
+  </style>
+</head>
+<body class="theme-<?php  echo Dever::load("manage/auth.config#template") ?>" test="公告">
+
+  <div id="LAY_app" class="<?php echo $data['manage/database.cookie']['wrapper'] ?>">
+    <div class="layui-layout layui-layout-admin">
+
+      <?php if(!isset($fast) || (isset($fast) && $fast != 1)){require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/nav.cmp.php';} ?>
+
+      <?php if(!isset($fast) || (isset($fast) && $fast != 1)){require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/menu.cmp.php';} ?>
+
+      
+      <div class="layadmin-pagetabs" id="LAY_app_tabs" style="display:none;">
+        <div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div>
+        <div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div>
+        <div class="layui-icon layadmin-tabs-control layui-icon-down">
+          <ul class="layui-nav layadmin-tabs-select" lay-filter="layadmin-pagetabs-nav">
+            <li class="layui-nav-item" lay-unselect>
+              <a href="javascript:;"></a>
+              <dl class="layui-nav-child layui-anim-fadein">
+                <dd layadmin-event="closeThisTabs"><a href="javascript:;">关闭当前标签页</a></dd>
+                <dd layadmin-event="closeOtherTabs"><a href="javascript:;">关闭其它标签页</a></dd>
+                <dd layadmin-event="closeAllTabs"><a href="javascript:;">关闭全部标签页</a></dd>
+              </dl>
+            </li>
+          </ul>
+        </div>
+        <div class="layui-tab" lay-unauto lay-allowclose="true" lay-filter="layadmin-layout-tabs">
+          <ul class="layui-tab-title" id="LAY_app_tabsheader">
+            <li lay-id="<?php echo $data['manage/menu.link']['console'] ?>" lay-attr="<?php echo $data['manage/menu.link']['console'] ?>" class="layui-this"><i class="layui-icon layui-icon-home"></i></li>
+          </ul>
+        </div>
+      </div>
+      
+      
+      
+      <div class="layui-body" id="LAY_app_body">
+        <div class="layadmin-tabsbody-item layui-show">
+          <iframe src="<?php echo $data['manage/menu.link']['console'] ?>" frameborder="0" class="layadmin-iframe"></iframe>
+        </div>
+      </div>
+      
+      
+      <div class="layadmin-body-shade" layadmin-event="shade"></div>
+    </div>
+  </div>
+
+  <?php if(!isset($fast) || (isset($fast) && $fast != 1)){require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/script.cmp.php';} ?>
+  <script>
+    layui.config({
+        base: '<?php echo Dever::config("host")->script ?>lib/layui/admin/' //静态资源所在路径
+        ,version:false
+    }).extend({
+        index: 'lib/index' //主入口模块
+    }).use('index');
+</script>
+</body>
+</html>

+ 33 - 0
data/compile/news/manage/layadmin/inc/head.cmp.php

@@ -0,0 +1,33 @@
+<?php $data['manage/auth.config']=Dever::load('manage/auth.config') ?>
+<meta charset="utf-8">
+<title><?php echo $data['manage/auth.config']['title'] ?></title>
+<meta name="keywords" content="<?php echo $data['manage/auth.config']['title'] ?>">
+<meta name="description" content="<?php echo $data['manage/auth.config']['title'] ?>">
+<meta name="apple-mobile-web-app-title" content="<?php echo $data['manage/auth.config']['title'] ?>" />
+<meta name="author" content="rabin">
+<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/layui/css/layui.css" />
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/layui/admin/style/admin.css?v9" media="all">
+
+
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/color/colpick.css">
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/kindeditor/themes/default/default.css?v1" />
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/valid/validationEngine.jquery.css">
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/fancybox/jquery.fancybox.css">
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/highlight/highlight.min.css">
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/datetime/jquery.datetimepicker.css">
+<link rel="stylesheet" type="text/css" href="<?php echo Dever::config("host")->script ?>lib/ui/ui.min.css">
+
+<script>
+window.paceOptions = {
+  ajax: true,
+  document: true,
+  eventLag: true,
+};
+</script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/jquery/pace.min.js"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/jquery/jquery.min.js"></script>
+<script id="script"><?php  echo Dever::script() ?>config.template="<?php  echo $data["manage/auth.config"]["template"] ?>";config.lib="<?php  echo Dever::config("host")->public ?>";config.debug=false</script>
+<style type="text/css" id="style"><?php  echo Dever::load("manage/auth.loading") ? ".content,.content-page{margin-left: 0px;min-height:auto}" : "" ?></style>

+ 13 - 0
data/compile/news/manage/layadmin/inc/menu.cmp.php

@@ -0,0 +1,13 @@
+<?php $data['manage/auth.config']=Dever::load('manage/auth.config') ?>
+<?php $data['manage/menu.link']=Dever::load('manage/menu.link') ?>
+<?php $data['manage/menu.getHtml']=Dever::load('manage/menu.getHtml') ?>
+
+      <div class="layui-side layui-side-menu">
+        <div class="layui-side-scroll">
+          <div class="layui-logo" id="console-url" lay-href="<?php echo $data['manage/menu.link']['console'] ?>">
+            <span id="dever-name"><?php echo $data['manage/auth.config']['title'] ?></span>
+          </div>
+          
+          <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu"><?php echo $data['manage/menu.getHtml'] ?></ul>
+        </div>
+      </div>

+ 71 - 0
data/compile/news/manage/layadmin/inc/nav.cmp.php

@@ -0,0 +1,71 @@
+<?php $data['manage/menu.getTop']=Dever::load('manage/menu.getTop') ?>
+<?php $data['manage/database.res']=Dever::load('manage/database.res') ?>
+<?php $data['manage/auth.config']=Dever::load('manage/auth.config') ?>
+<?php $data['manage/auth.info']=Dever::load('manage/auth.info') ?>
+<?php $data['manage/menu.link']=Dever::load('manage/menu.link') ?>
+<div id="load_style" style="display:none;"><?php echo $data['manage/database.res']['css'] ?></div>
+<style>
+@media screen and (max-width: 1024px) {
+    .nav{
+        display: none;
+    }
+}
+</style>
+<div id="dever-name" style="display:none;"><?php echo $data['manage/auth.config']['title'] ?></div>
+<div class="layui-header" id="nav" style="<?php  echo Dever::load("manage/auth.loading") ? "display:none;" : "" ?>">
+
+<ul class="layui-nav layui-layout-left" id="top"><?php echo $data['manage/menu.getTop'] ?></ul>
+
+<ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
+
+  <li class="layui-nav-item auth-top" lay-unselect style="display:none;">
+    <a href="javascript:;">
+      <cite><span></span></cite>
+    </a>
+    <ul class="layui-nav-child">
+      <li><a lay-href="set/user/info.html">基本资料</a></li>
+    </ul>
+  </li>
+
+  <li class="layui-nav-item" lay-unselect style="display:none;">
+    <a lay-href="app/message/index.html" layadmin-event="message" lay-text="消息中心">
+      <i class="layui-icon layui-icon-notice"></i>  
+      
+      
+      <span class="layui-badge-dot"></span>
+    </a>
+  </li>
+  <li class="layui-nav-item layui-hide-xs" lay-unselect>
+    <a href="javascript:;" layadmin-event="theme">
+      <i class="layui-icon layui-icon-theme"></i>
+    </a>
+  </li>
+  <li class="layui-nav-item layui-hide-xs" lay-unselect style="display:none;">
+    <a href="javascript:;" layadmin-event="note">
+      <i class="layui-icon layui-icon-note"></i>
+    </a>
+  </li>
+  <li class="layui-nav-item layui-hide-xs" lay-unselect style="display:none;">
+    <a href="javascript:;" layadmin-event="fullscreen">
+      <i class="layui-icon layui-icon-screen-full"></i>
+    </a>
+  </li>
+  <li class="layui-nav-item" lay-unselect>
+    <a href="javascript:;">
+      <cite id="manage-name"><?php echo $data['manage/auth.info']['username'] ?></cite>
+    </a>
+    <dl class="layui-nav-child">
+      <dd><a id="edit_password" onclick="pass($(this));" style="cursor: pointer;">修改密码</a></dd>
+      <hr>
+      <dd style="text-align: center;"><a id="logout-url" href="<?php echo $data['manage/menu.link']['logout'] ?>">退出</a></dd>
+    </dl>
+  </li>
+  
+  <li class="layui-nav-item layui-hide-xs" lay-unselect style="display:none;">
+    <a href="javascript:;" layadmin-event="about"><i class="layui-icon layui-icon-more-vertical"></i></a>
+  </li>
+  <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-unselect>
+    <a href="javascript:;" layadmin-event="more"><i class="layui-icon layui-icon-more-vertical"></i></a>
+  </li>
+</ul>
+</div>

+ 44 - 0
data/compile/news/manage/layadmin/inc/script.cmp.php

@@ -0,0 +1,44 @@
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/pic/webp.js"></script>
+
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/color/colpick.js"></script>
+
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/datetime/jquery.datetimepicker.min.js?v2"></script>
+
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/fancybox/jquery.fancybox.js"></script>
+
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/highlight/highlight.min.js"></script>
+
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/valid/jquery.validationEngine.min.js?v3"></script>
+
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/kindeditor/kindeditor-all-min.js?v9"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/kindeditor/lang/zh-CN.js?v7"></script>
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/ui/ui.min.js"></script>
+
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/qiniu/upload/plupload.full.min.js"></script>
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/qiniu/qiniu.upload.js"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/oss/aliyun-oss-sdk-6.11.2.min.js"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/tool/md5.js"></script>
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/layui/upload.js?v226"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/layui/layui.js?v12"></script>
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/clipboard/clipboard.js"></script>
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/pic/holder.js"></script>
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/excel/xlsx.min.js"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/excel/excel.js?v16"></script>
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/layui/xm-select/xm-select.js"></script>
+
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/manage/main.js?713"></script>

+ 79 - 0
data/compile/news/manage/layadmin/login.cmp.php

@@ -0,0 +1,79 @@
+<?php $data['manage/auth.config']=Dever::load('manage/auth.config') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/head.cmp.php' ?>
+  <link rel="stylesheet" href="<?php echo Dever::config("host")->script ?>lib/layui/admin/style/login.css" media="all">
+</head>
+<body>
+
+  <div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login">
+    <form action="<?php echo $data['manage/auth.config']['login_url'] ?>" method="post" target="f1" class="form-horizontal m-t-20" id="login">
+    <input type="hidden" name="function" id="function" value="msg">
+    <input type="hidden" name="refer" id="refer" value="<?php echo $data['manage/auth.config']['refer'] ?>">
+    <iframe id="f1" name="f1" style="display:none;"></iframe>
+    <div class="layadmin-user-login-main">
+      <div class="layadmin-user-login-box layadmin-user-login-header">
+        <h2 id="name"><?php echo $data['manage/auth.config']['title'] ?></h2>
+      </div>
+      <div class="layadmin-user-login-box layadmin-user-login-body layui-form">
+        <div class="layui-form-item">
+          <label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
+          <input type="text" name="username" id="username" lay-verify="required" placeholder="账号" class="layui-input">
+        </div>
+        <div class="layui-form-item">
+          <label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
+          <input name="password" id="password" type="password" lay-verify="required" placeholder="密码" class="layui-input">
+        </div>
+        <div class="layui-form-item">
+          <button class="layui-btn layui-btn-fluid" lay-submit lay-filter="LAY-user-login-submit">登 入</button>
+        </div>
+      </div>
+    </div>
+    
+    <div class="layui-trans layadmin-user-login-footer">
+      <p id="footer" style="<?php if(!(Dever::load('manage/auth.config#copyright'))): ?>display:none;<?php endif; ?>"><?php echo $data['manage/auth.config']['copyright'] ?></p>
+    </div>
+    
+    <div class="ladmin-user-login-theme" style="display:none;">
+      <script type="text/html" template>
+        <ul>
+          <li data-theme=""><img src="{{ layui.setter.base }}style/res/bg-none.jpg"></li>
+          <li data-theme="#03152A" style="background-color: #03152A;"></li>
+          <li data-theme="#2E241B" style="background-color: #2E241B;"></li>
+          <li data-theme="#50314F" style="background-color: #50314F;"></li>
+          <li data-theme="#344058" style="background-color: #344058;"></li>
+          <li data-theme="#20222A" style="background-color: #20222A;"></li>
+        </ul>
+      </script>
+    </div>
+    </form> 
+  </div>
+
+  <?php require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/script.cmp.php' ?>
+  <script>
+  $(function()
+  {
+    $("#login").bind("keydown",function(e){
+      var theEvent = e || window.event;    
+      var code = theEvent.keyCode || theEvent.which || theEvent.charCode;    
+      if (code == 13) {    
+              $("#login").submit();
+          }
+     });
+  });
+
+  </script>
+  <script>
+  layui.config({
+    base: '<?php echo Dever::config("host")->script ?>lib/layui/admin/' //静态资源所在路径
+  }).extend({
+    index: 'lib/index' //主入口模块
+  }).use(['index', 'user'], function(){
+    var $ = layui.$
+    ,setter = layui.setter
+    ,admin = layui.admin
+  });
+  </script>
+</body>
+</html>

+ 262 - 0
data/compile/news/manage/layadmin/project/database/list.cmp.php

@@ -0,0 +1,262 @@
+<?php $fast=Dever::input("fast") ?>
+<?php $data['manage/database.page_list']=Dever::load('manage/database.page_list') ?>
+<?php $data['manage/database.info']=Dever::load('manage/database.info') ?>
+<?php $data['manage/database.res']=Dever::load('manage/database.res') ?>
+<?php $data['manage/database.listStyle']=Dever::load('manage/database.listStyle') ?>
+<?php $data['manage/database.page_list_table']=Dever::load('manage/database.page_list_table') ?>
+<?php $data['manage/database.list_search']=Dever::load('manage/database.list_search') ?>
+<?php $data['manage/database.list_tbody']=Dever::load('manage/database.list_tbody') ?>
+<?php $data['manage/database.list_thead']=Dever::load('manage/database.list_thead') ?>
+<?php $data['manage/database.getConfig']=Dever::load('manage/database.getConfig') ?>
+<?php $data['manage/database.list_data']=Dever::load('manage/database.list_data') ?>
+<?php $data['manage/database.list_data_show']=Dever::load('manage/database.list_data_show') ?>
+<?php $data['manage/database.list_chart']=Dever::load('manage/database.list_chart') ?>
+<?php $data['manage/database.list_chart_show']=Dever::load('manage/database.list_chart_show') ?>
+<?php $data['manage/database.list_button']=Dever::load('manage/database.list_button') ?>
+<?php $data['manage/database.list_mul']=Dever::load('manage/database.list_mul') ?>
+<?php $data['manage/auth.config']=Dever::load('manage/auth.config') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php if(!isset($fast) || (isset($fast) && $fast != 1)){require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/head.cmp.php';} ?>
+  
+</head>
+<body class="theme-<?php  echo Dever::load("/auth.config#template") ?>"> 
+<style id="addstyle"><?php echo $data['manage/database.listStyle'] ?></style>
+<style>
+.table {
+  /*box-shadow: 10px 11px 33px -14px;*/
+}
+.layui-table-cell .layui-select,.layui-table-cell .layui-input
+{
+    height: 25px;
+}
+.layui-table-cell {
+    height: auto;
+}
+.layui-card-header {
+    padding: 0px 5px;
+}
+
+.table th,.table td {
+  min-width: 60px;
+}
+#table_2,#table_1 {
+  /*overflow: auto;*/
+}
+.layui-btn-xs
+{
+  margin-top:1px;
+}
+.dever-emoji img {
+  width:16px;
+}
+.layui-tab-title {
+  height: 100%;
+  white-space: inherit;
+}
+.layui-form-item .layui-input-inline {
+    display: block;
+    float: none;
+    left: -3px;
+    margin: 0px 0px 0px 0px;
+}
+.chart {
+  width: 100%;
+  height:300px;
+}
+.table-header-fixed {
+    top: -1px;
+    position: sticky;
+    z-index: 999;
+}
+.goods_table {
+  width: 100%;
+}
+.goods_table th
+{
+  text-align: center;
+}
+.goods_table td
+{
+  text-align: center;
+}
+.layui-table-tool-temp{
+  display: none;
+}
+.layadmin-carousel {
+  height: 90px!important;
+}
+</style>
+<div id="load_style" style="display:none;"><?php echo $data['manage/database.res']['css'] ?></div>
+<span id="dever-name" style="display:none;"><?php echo $data['manage/auth.config']['title'] ?></span>
+<div class="topbar">
+    <div class="banner dever-layout" style="display:none;">
+        <a target="_blank"></a>
+        <span>项目名称</span>
+    </div>
+</div>
+
+<div id="content_1" style="<?php echo $data['manage/database.page_list']['s1'] ?>"><?php echo $data['manage/database.page_list']['content'] ?></div>
+<div id="content_2" style="<?php echo $data['manage/database.page_list']['s2'] ?>">
+  <div class="layui-fluid">
+
+    <div class="layui-card" id="stat_data_card" style="<?php if(isset($data['manage/database.list_data_show']) && is_array($data['manage/database.list_data_show'])): ?><?php $t=count($data['manage/database.list_data_show'])-1 ?><?php $i=0 ?><?php foreach($data['manage/database.list_data_show'] as $k => $v): ?><?php echo $data['manage/database.list_data_show'] ?><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/database.list_data_show'] ?><?php endif; ?>">
+      <div class="layui-card-header">数据概览</div>
+      <div class="layui-card-body">
+
+        <div class="layui-carousel layadmin-carousel layadmin-backlog">
+          <div carousel-item>
+            <ul class="layui-row layui-col-space10" id="stat_data"><?php if(isset($data['manage/database.list_data']) && is_array($data['manage/database.list_data'])): ?><?php $t=count($data['manage/database.list_data'])-1 ?><?php $i=0 ?><?php foreach($data['manage/database.list_data'] as $k => $v): ?><?php echo $v ?><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/database.list_data'] ?><?php endif; ?></ul>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="layui-card">
+      <input type="hidden" name="url1" id="url" value="<?php echo $data['manage/database.info']['mul'] ?>"/>
+
+      <form id="form1" name="form1" method="get" target="f1" action="<?php echo $data['manage/database.info']['list'] ?>">
+      <input type="hidden" name="l" id="l" value="<?php echo $data['manage/database.info']['l'] ?>"/>
+      <input type="hidden" name="project" id="project" value="<?php echo $data['manage/database.info']['project'] ?>"/>
+      <input type="hidden" name="table" id="tables" value="<?php echo $data['manage/database.info']['table'] ?>"/>
+      <input type="hidden" name="menu" id="menu" value="<?php echo $data['manage/database.info']['menu'] ?>"/>
+      <input type="hidden" name="menu_id" id="menu_id" value="<?php echo $data['manage/database.info']['menu_id'] ?>"/>
+      <input type="hidden" name="fast" id="fast" value="<?php echo $fast ?>" />
+      <input type="hidden" name="dever_submit" id="dever_submit" />
+      <input type="hidden" name="search_option_state" id="search_option_state" value="<?php echo $data['manage/database.info']['state'] ?>"/>
+
+      <input type="hidden" name="function" id="function" value="msg"/>
+      <input type="hidden" name="method" id="method" value="search"/>
+      <div id="search_param"><?php echo $data['manage/database.info']['search_param'] ?></div> 
+      <iframe id="f1" name="f1" style="display:none;"></iframe>
+      <div class="layui-card-header" style="display: none;"><span id="list-project"><?php echo $data['manage/database.info']['project_name'] ?></span> > <span id="list-name"><?php echo $data['manage/database.info']['list_header'] ?></span></div>
+      <div class="layui-card-body" id="search_content" style="<?php if(!(Dever::load('manage/database.list_search'))): ?>display:none;<?php endif; ?>">
+
+        <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+          <div class="layui-form-item">
+            <div id="search"><?php echo $data['manage/database.list_search'] ?></div>
+          </div>
+        </div>
+      </div>
+      <div class="layui-card-body">
+
+        <div id="list-button" style="padding-bottom: 10px;"><?php echo $data['manage/database.list_button'] ?></div>
+        
+        <div class="dever_desc" id="info" style="<?php if(!(Dever::load('manage/database.getConfig#info'))): ?>display:none;<?php endif; ?>"><?php echo $data['manage/database.getConfig']['info'] ?></div>
+        
+        <div id="table_1" style="<?php echo $data['manage/database.page_list_table']['s1'] ?>"><?php echo $data['manage/database.page_list_table']['content'] ?></div>
+        <div id="table_2" style="<?php echo $data['manage/database.page_list_table']['s2'] ?>"> 
+          <div id="chart" class="chart" style="<?php if(isset($data['manage/database.list_chart_show']) && is_array($data['manage/database.list_chart_show'])): ?><?php $t=count($data['manage/database.list_chart_show'])-1 ?><?php $i=0 ?><?php foreach($data['manage/database.list_chart_show'] as $k => $v): ?><?php echo $data['manage/database.list_chart_show'] ?><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/database.list_chart_show'] ?><?php endif; ?>"><?php if(isset($data['manage/database.list_chart']) && is_array($data['manage/database.list_chart'])): ?><?php $t=count($data['manage/database.list_chart'])-1 ?><?php $i=0 ?><?php foreach($data['manage/database.list_chart'] as $k => $v): ?><?php echo $data['manage/database.list_chart'] ?><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/database.list_chart'] ?><?php endif; ?></div>
+          <table class="table layui-table layui-table-body" id="table">
+          <thead id="list-thead">
+              <tr><?php if(isset($data['manage/database.list_thead']) && is_array($data['manage/database.list_thead'])): ?><?php $t=count($data['manage/database.list_thead'])-1 ?><?php $i=0 ?><?php foreach($data['manage/database.list_thead'] as $k => $v): ?><?php echo $v ?><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/database.list_thead'] ?><?php endif; ?></tr>
+          </thead>
+          <tbody id="list-tbody"><?php echo $data['manage/database.list_tbody'] ?></tbody>
+      </table>
+
+      <div id="mul"><?php echo $data['manage/database.list_mul'] ?></div>
+      <div id="page" style="display:none"><?php  echo Dever::page("current") ?></div>
+      <div class="dever_desc" id="desc" style="<?php if(!(Dever::load('manage/database.getConfig#desc'))): ?>display:none;<?php endif; ?>"><?php echo $data['manage/database.getConfig']['desc'] ?></div>
+        </div>
+      </div>
+       </div>
+        </div>
+      </form>
+      <form id="form2" name="form2" method="get" style="display: none;"></form>
+      <div id="struct" style="display:none;"><?php echo $data['manage/database.info']['struct'] ?></div>
+    </div>
+  </div>
+</div>
+
+  <?php if(!isset($fast) || (isset($fast) && $fast != 1)){require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/script.cmp.php';} ?>
+  <script id="list-thead-data">
+    config.table = {};
+    config.table.limit = 20;
+    config.table.cols = [];
+  </script>
+  <script id="list-tbody-data">
+    config.table.data = [];
+  </script>
+  <script>
+    var form; 
+  layui.config({
+    base: '<?php echo Dever::config("host")->script ?>lib/layui/admin/' //静态资源所在路径
+    ,version:false
+  }).extend({
+    //formSelects: 'plugin/formselects/formselects',
+    index: 'lib/index' //主入口模块
+  }).use(['index', 'contlist', 'table', 'form', 'console'], function(){
+    var table = layui.table;
+    form = layui.form; 
+    //var formSelects = layui.formSelects;
+
+    if ($('#content_2').css('display') != 'none') {
+      var bw = document.body.scrollWidth;
+      var sw = $('#content_2').width();
+      if (sw > 0 && bw > sw) {
+          $('body').css({'width' : 'fit-content'});
+      }
+    } else {
+      //$('#table_1').css({'overflow' : 'auto'});
+      //$('#table_2').css({'overflow' : 'auto'});
+    }
+
+    if (config.table.cols.length > 0) {
+      table.render({
+        elem: '#table'
+        ,page: false
+        ,limit:config.table.limit
+        //,toolbar:'default'
+        //,defaultToolbar:["filter","exports","print"]
+        ,cols: config.table.cols
+        ,data: config.table.data
+        ,done:function(res, curr, count) {
+            $('#page').show();
+            let headerTop = $('.layui-table-header').offset().top; //获取表格头到文档顶部的距离
+            $(window).scroll(function () {
+               if (count > 3 && (headerTop - $(window).scrollTop()) < 0) { //超过了
+                   $('.layui-table-header').addClass('table-header-fixed'); //添加样式,固定住表头
+               } else { //没超过
+                   $('.layui-table-header').removeClass('table-header-fixed'); //移除样式
+               }
+            });
+        }
+      });
+    } else {
+      $('#page').show();
+      var count = $('#list-tbody tr').length;
+      let headerTop = $('#list-thead').offset().top; //获取表格头到文档顶部的距离
+      $(window).scroll(function () {
+         if (count > 3 && (headerTop - $(window).scrollTop()) < 100) { //超过了
+             $('#list-thead').addClass('table-header-fixed'); //添加样式,固定住表头
+
+             /*
+             $('#list-thead th').each(function (k, v) {
+                  var width = $('#list-tbody td').eq(k).width() + 0.9;
+                  //$(v).width(width + 1);
+                  $(v).css({'min-width': width});
+              });*/
+         } else { //没超过
+             $('#list-thead').removeClass('table-header-fixed'); //移除样式
+         }
+      });
+    }
+    init();
+
+    if ($('.dever-manage').length) {
+      $('.dever-manage').dblclick(function()
+      {
+        showMsg('数据结构', $(this), '#struct');
+      })
+    }
+
+    //滚动body,header跟随滚动
+    $('.layui-table-body').on('scroll', function(e) {
+        var leftPx = $(e.target).scrollLeft(); //获取表格body,滚动条距离左边的长度
+        var left = 'translateX(-' + leftPx + 'px)';
+        $('.layui-table-header .layui-table').css('transform', left); //设置表格header的内容反向(-)移动
+    });
+  });
+  </script>
+</body>
+</html>

+ 239 - 0
data/compile/news/manage/layadmin/project/database/update.cmp.php

@@ -0,0 +1,239 @@
+<?php $fast=Dever::input("fast") ?>
+<?php $data['manage/database.page_update']=Dever::load('manage/database.page_update') ?>
+<?php $data['manage/database.info']=Dever::load('manage/database.info') ?>
+<?php $data['manage/database.css']=Dever::load('manage/database.css') ?>
+<?php $data['manage/database.res']=Dever::load('manage/database.res') ?>
+<?php $data['manage/database.submit']=Dever::load('manage/database.submit') ?>
+<?php $data['manage/database.update_content']=Dever::load('manage/database.update_content') ?>
+<?php $data['/database.info']=Dever::load('/database.info') ?>
+<?php $data['manage/database.valid']=Dever::load('manage/database.valid') ?>
+<?php $data['manage/database.save']=Dever::load('manage/database.save') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php if(!isset($fast) || (isset($fast) && $fast != 1)){require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/head.cmp.php';} ?>
+
+  <style>
+    textarea{
+      padding-top: 5px;
+    }
+
+    .dever-color {
+      /*width: 100%;*/
+    }
+
+    .dever_form_add_child {
+      padding:15px;
+    }
+    .dever_form_delete {
+      float: right;
+      margin-right: 10px;
+      color: red;
+    }
+    .dever_score_child {
+      margin: 15px;
+    }
+    .layui-tab-title {
+      height: 100%;
+      white-space: inherit;
+    }
+
+    </style>
+</head>
+<body class="theme-<?php  echo Dever::load("/auth.config#template") ?>">
+  <div id="load_style" style="display:none;"><?php echo $data['manage/database.res']['css'] ?></div>
+<div class="topbar">
+    <div class="banner dever-layout" style="display:none;">
+        <a target="_blank"></a>
+        <span>项目名称</span>
+    </div>
+</div> 
+<div id="content_1" style="<?php echo $data['manage/database.page_update']['s1'] ?>"><?php echo $data['manage/database.page_update']['content'] ?></div>
+<div id="content_2" style="<?php echo $data['manage/database.page_update']['s2'] ?>">
+  <div class="layui-fluid">
+    <div style="display:none;"><span id="list-name"><?php echo $data['manage/database.info']['update_header'] ?></span> > <span id="list-project"><?php echo $data['manage/database.info']['project_name'] ?></span></div>
+    <form method="post" class="layui-form form1" target="f1" role="form" autocomplete="off" lay-filter="form-filter" action="<?php echo $data['manage/database.info']['action'] ?>" value="<?php echo $data['manage/database.submit']['key'] ?>">
+        <style id="load_css"><?php echo $data['manage/database.css'] ?></style>
+    <input type="hidden" name="function" id="function" value="msg"/>
+    <input type="hidden" name="url" id="url" value="<?php echo $data['manage/database.info']['list'] ?>" />
+    <input type="hidden" name="project" id="project" value="<?php echo $data['manage/database.info']['project'] ?>" />
+    <input type="hidden" name="table" id="table" value="<?php echo $data['manage/database.info']['table'] ?>" />
+    <input type="hidden" name="fast" id="fast" value="<?php echo $fast ?>" />
+    <input type="hidden" name="dever_submit" id="dever_submit" value="<?php echo $data['manage/database.submit']['token'] ?>" />
+    
+    <input type="hidden" name="menu_id" id="menu_id" value="<?php echo $data['manage/database.info']['menu_id'] ?>" />
+    <input type="hidden" name="update_where_id" id="update_where_id" value="<?php echo $data['manage/database.info']['id'] ?>"/>
+    <input type="hidden" name="copy_num" id="copy_num" value="0"/>
+    <iframe id="f1" name="f1" style="display:none;"></iframe>
+
+    <div class="layui-row layui-col-space15" id="data_content"><?php echo $data['manage/database.update_content'] ?></div>
+    <div id="valid"><?php echo $data['manage/database.valid'] ?></div>
+    <div id="struct" style="display:none;" save="<?php echo $data['manage/database.save'] ?>"><?php echo $data['/database.info']['struct'] ?></div>
+    </form>
+  </div>
+</div>
+
+  
+  <?php if(!isset($fast) || (isset($fast) && $fast != 1)){require Dever::config("base")->data . 'compile/news/manage/layadmin/inc/script.cmp.php';} ?>
+  <script id="update_script">
+  var form;
+  var skuTable;
+  layui.config({
+    base: '<?php echo Dever::config("host")->script ?>lib/layui/admin/' //静态资源所在路径
+    ,version:true
+  }).extend({
+    index: 'lib/index', //主入口模块
+    //formSelects: 'plugin/formselects/formselects',
+    skuTable: 'plugin/skuTable',
+    sortable: 'plugin/sortable'
+  }).use(['index', 'contlist', 'table', 'form', 'skuTable'], function(){
+    var table = layui.table;
+    form = layui.form; 
+    //var formSelects = layui.formSelects;
+    skuTable = layui.skuTable;
+
+    if ($('#sku_spec_type').length) {
+        sku($('#sku_spec_type'));
+    }
+
+    /*
+    $('select').each(function() {
+        if ($(this).attr('xm-value')) {
+          formSelects.value($(this).attr('xm-select'), $(this).attr('xm-value'));
+        }
+    });
+    */
+
+    /*
+    var obj = layui.skuTable.render({
+            //规格类型 0统一规格 1多规格
+            isAttributeValue: 0,
+            //规格类型容器id
+            isAttributeElemId: 'sku_spec_type',
+            //规格表容器id
+            specTableElemId: 'sku_spec_table',
+            //sku表容器id
+            skuTableElemId: 'sku_table',
+            //规格拖拽排序
+            sortable: false,
+            //sku表相同属性值是否合并行
+            rowspan: true,
+            //请求成功返回状态码值
+            requestSuccessCode: 200,
+            //上传接口地址
+            //接口要求返回格式参考 upload.json
+            uploadUrl: './json/upload.json',
+            //统一规格配置项
+            singleSkuTableConfig: {
+                thead: [
+                    {title: '商品编码', icon: 'layui-icon-cols'},
+                    {title: '销售价(元)', icon: 'layui-icon-cols'},
+                    {title: '采购价(元)', icon: 'layui-icon-cols'},
+                    {title: '成本价(元)', icon: 'layui-icon-cols'},
+                ],
+                tbody: [
+                    {type: 'input', field: 'code', value: '', verify: 'required', reqtext: '商品编码不能为空'},
+                    {type: 'input', field: 'price', value: '0', verify: 'required|number', reqtext: '销售价不能为空'},
+                    {type: 'input', field: 'buy_price', value: '0', verify: 'required|number', reqtext: '采购价不能为空'},
+                    {type: 'input', field: 'cost_price', value: '0', verify: 'required|number', reqtext: '成本价不能为空'},
+                ]
+            },
+            //多规格配置项
+            multipleSkuTableConfig: {
+                thead: [
+                    {title: '图片', icon: ''},
+                    {title: '商品编码', icon: 'layui-icon-cols'},
+                    {title: '销售价(元)', icon: 'layui-icon-cols'},
+                    {title: '采购价(元)', icon: 'layui-icon-cols'},
+                    {title: '成本价(元)', icon: 'layui-icon-cols'},
+                ],
+                tbody: [
+                    {type: 'image', field: 'pic', value: '', verify: '', reqtext: ''},
+                    {type: 'input', field: 'code', value: '', verify: 'required', reqtext: '商品编码不能为空'},
+                    {type: 'input', field: 'price', value: '0', verify: 'required|number', reqtext: '销售价不能为空'},
+                    {type: 'input', field: 'buy_price', value: '0', verify: 'required|number', reqtext: '采购价不能为空'},
+                    {type: 'input', field: 'cost_price', value: '0', verify: 'required|number', reqtext: '成本价不能为空'},
+                ]
+            },
+            //商品id 配合specDataUrl和skuDataUrl使用
+            productId: '11',
+            //规格数据, 一般从后台获取
+            specData: [
+                {
+                    id: "1",
+                    title: "颜色",
+                    child: [
+                        {id: "1", title: "红", checked: true},
+                        {id: "2", title: "黄", checked: false},
+                        {id: "3", title: "蓝", checked: false}
+                    ]
+                }, {
+                    id: "2",
+                    title: "尺码",
+                    child: [
+                        {id: "4", title: "S", checked: true},
+                        {id: "5", title: "M", checked: true},
+                        {id: "6", title: "L", checked: false},
+                        {id: "7", title: "XL", checked: false}
+                    ]
+                }, {
+                    id: "3",
+                    title: "款式",
+                    child: [
+                        {id: "8", title: "男款", checked: true},
+                        {id: "9", title: "女款", checked: true}
+                    ]
+                }
+            ],
+            specData: [],
+            //获取规格数据接口地址,如果为空或者不配置则使用 specData 参数配置
+            //接口要求返回格式参考 specData.json
+            // specDataUrl: './json/specData.json',
+            //sku数据
+            //新增的时候为空对象
+            //编辑的时候可以从后台接收,会自动填充sku表,可以去掉注释看效果
+            //多规格格式
+            // skuData: {
+            //     "skus[1-4-8][picture]": "https://www.baidu.com/img/flexible/logo/pc/result.png",
+            //     "skus[1-4-8][price]": "100",
+            //     "skus[1-4-8][market_price]": "200",
+            //     "skus[1-4-8][cost_price]": "50",
+            //     "skus[1-4-8][stock]": "18",
+            //     "skus[1-4-8][status]": "0",
+            //     "skus[1-4-9][picture]": "",
+            //     "skus[1-4-9][price]": "0",
+            //     "skus[1-4-9][market_price]": "0",
+            //     "skus[1-4-9][cost_price]": "0",
+            //     "skus[1-4-9][stock]": "0",
+            //     "skus[1-4-9][status]": "1",
+            //     "skus[1-5-8][picture]": "",
+            //     "skus[1-5-8][price]": "0",
+            //     "skus[1-5-8][market_price]": "0",
+            //     "skus[1-5-8][cost_price]": "0",
+            //     "skus[1-5-8][stock]": "0",
+            //     "skus[1-5-8][status]": "1",
+            //     "skus[1-5-9][picture]": "",
+            //     "skus[1-5-9][price]": "0",
+            //     "skus[1-5-9][market_price]": "0",
+            //     "skus[1-5-9][cost_price]": "0",
+            //     "skus[1-5-9][stock]": "0",
+            //     "skus[1-5-9][status]": "1"
+            // },
+            //统一规格格式
+            // skuData: {
+            //     'price': '80',
+            //     'market_price': '100',
+            //     'cost_price': '60',
+            //     'stock': '999',
+            //     'status': '0',
+            // }
+            //获取SKU数据接口地址,如果为空或者不配置则使用skuData配置
+            //接口要求返回格式参考 skuData.json
+            // skuDataUrl: './json/skuData.json',
+        });*/
+
+    init();
+  });
+  </script>
+</body>
+</html>

+ 396 - 0
data/compile/news/upload/manage.cmp.php

@@ -0,0 +1,396 @@
+<!DOCTYPE html>
+<!--power by dever--><html lang="en">
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="x-ua-compatible" content="ie=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+  <meta name="description" content="JavaScript image cropper.">
+  <title>图片裁剪工具</title>
+  <link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/5.13.0/css/all.css">
+  <link rel="stylesheet" href="<?php  echo Dever::assets('lib/bootstrap/css/bootstrap.min.css', 'script') ?>">
+  <link rel="stylesheet" href="<?php  echo Dever::assets('lib/cropper/cropper.min.css', 'script') ?>">
+  <link rel="stylesheet" href="<?php  echo Dever::assets('lib/cropper/main.css', 'script') ?>">
+  <script><?php  echo Dever::script() ?>;var aspectRatioValue = '<?php echo isset($ratio) ? $ratio : "" ?>'</script>
+</head>
+<body>
+  
+  <div class="container">
+    <div class="row">
+      <div class="col-md-9">
+        
+        <div class="img-container">
+          <img src="<?php echo isset($pic) ? $pic : "" ?>" alt="Picture">
+        </div>
+      </div>
+      <div class="col-md-3">
+        
+        <div class="docs-preview clearfix" style="height: 160px;">
+          <div class="img-preview preview-lg"></div>
+          <div class="img-preview preview-md"></div>
+          <div class="img-preview preview-sm"></div>
+          <div class="img-preview preview-xs"></div>
+        </div>
+
+        
+        <div class="docs-data" style="position: absolute;left:160px">
+          <table border="1">
+            <tr>
+              <td width="30%">X</td>
+              <td width="60%"><span id="dataX_text"></span></td>
+            </tr>
+            <tr>
+              <td>Y</td>
+              <td><span id="dataY_text"></span></td>
+            </tr>
+            <tr>
+              <td>W</td>
+              <td><span id="dataWidth_text"></span></td>
+            </tr>
+            <tr>
+              <td>H</td>
+              <td><span id="dataHeight_text"></span></td>
+            </tr>
+            
+            <tr>
+              <td>R</td>
+              <td><span id="dataRotate_text"></span></td>
+            </tr>
+            <tr>
+              <td>SX</td>
+              <td><span id="dataScaleX_text"></span></td>
+            </tr>
+            <tr>
+              <td>SY</td>
+              <td><span id="dataScaleY_text"></span></td>
+            </tr>
+          </table>
+        </div>
+        <div class="docs-data" style="display: none;position: absolute;left:150px">
+          <div class="input-group input-group-sm">
+            <span class="input-group-prepend">
+              <label class="input-group-text" for="dataX">X</label>
+            </span>
+            <input type="text" class="form-control" id="dataX" placeholder="x">
+            <span class="input-group-append">
+              <span class="input-group-text">px</span>
+            </span>
+          </div>
+          <div class="input-group input-group-sm">
+            <span class="input-group-prepend">
+              <label class="input-group-text" for="dataY">Y</label>
+            </span>
+            <input type="text" class="form-control" id="dataY" placeholder="y">
+            <span class="input-group-append">
+              <span class="input-group-text">px</span>
+            </span>
+          </div>
+          <div class="input-group input-group-sm">
+            <span class="input-group-prepend">
+              <label class="input-group-text" for="dataWidth">Width</label>
+            </span>
+            <input type="text" class="form-control" id="dataWidth" placeholder="width">
+            <span class="input-group-append">
+              <span class="input-group-text">px</span>
+            </span>
+          </div>
+          <div class="input-group input-group-sm">
+            <span class="input-group-prepend">
+              <label class="input-group-text" for="dataHeight">Height</label>
+            </span>
+            <input type="text" class="form-control" id="dataHeight" placeholder="height">
+            <span class="input-group-append">
+              <span class="input-group-text">px</span>
+            </span>
+          </div>
+          <div class="input-group input-group-sm">
+            <span class="input-group-prepend">
+              <label class="input-group-text" for="dataRotate">Rotate</label>
+            </span>
+            <input type="text" class="form-control" id="dataRotate" placeholder="rotate">
+            <span class="input-group-append">
+              <span class="input-group-text">deg</span>
+            </span>
+          </div>
+          <div class="input-group input-group-sm">
+            <span class="input-group-prepend">
+              <label class="input-group-text" for="dataScaleX">ScaleX</label>
+            </span>
+            <input type="text" class="form-control" id="dataScaleX" placeholder="scaleX">
+          </div>
+          <div class="input-group input-group-sm">
+            <span class="input-group-prepend">
+              <label class="input-group-text" for="dataScaleY">ScaleY</label>
+            </span>
+            <input type="text" class="form-control" id="dataScaleY" placeholder="scaleY">
+          </div>
+        </div>
+
+        <div class="row" id="actions">
+      <div class="col-md-9 docs-buttons">
+        
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="setDragMode" data-option="move" title="Move">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setDragMode(&quot;move&quot;)">
+              <span class="fa fa-arrows-alt"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="setDragMode" data-option="crop" title="Crop">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setDragMode(&quot;crop&quot;)">
+              <span class="fa fa-crop-alt"></span>
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="zoom" data-option="0.1" title="Zoom In">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.zoom(0.1)">
+              <span class="fa fa-search-plus"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="zoom" data-option="-0.1" title="Zoom Out">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.zoom(-0.1)">
+              <span class="fa fa-search-minus"></span>
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="move" data-option="-10" data-second-option="0" title="Move Left">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.move(-10, 0)">
+              <span class="fa fa-arrow-left"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="move" data-option="10" data-second-option="0" title="Move Right">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.move(10, 0)">
+              <span class="fa fa-arrow-right"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="move" data-option="0" data-second-option="-10" title="Move Up">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.move(0, -10)">
+              <span class="fa fa-arrow-up"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="move" data-option="0" data-second-option="10" title="Move Down">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.move(0, 10)">
+              <span class="fa fa-arrow-down"></span>
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="rotate" data-option="-45" title="Rotate Left">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.rotate(-45)">
+              <span class="fa fa-undo-alt"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="rotate" data-option="45" title="Rotate Right">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.rotate(45)">
+              <span class="fa fa-redo-alt"></span>
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="scaleX" data-option="-1" title="Flip Horizontal">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.scaleX(-1)">
+              <span class="fa fa-arrows-alt-h"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="scaleY" data-option="-1" title="Flip Vertical">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.scaleY(-1)">
+              <span class="fa fa-arrows-alt-v"></span>
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="crop" title="Crop">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.crop()">
+              <span class="fa fa-check"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="clear" title="Clear">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.clear()">
+              <span class="fa fa-times"></span>
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="disable" title="Disable">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.disable()">
+              <span class="fa fa-lock"></span>
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="enable" title="Enable">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.enable()">
+              <span class="fa fa-unlock"></span>
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group" style="display: none;">
+          <button type="button" class="btn btn-primary" data-method="reset" title="Reset">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.reset()">
+              <span class="fa fa-sync-alt"></span>
+            </span>
+          </button>
+          <label class="btn btn-primary btn-upload" for="inputImage" title="Upload image file">
+            <input type="file" class="sr-only" id="inputImage" name="file" accept="image/*">
+            <span class="docs-tooltip" data-toggle="tooltip" title="Import image with Blob URLs">
+              <span class="fa fa-upload"></span>
+            </span>
+          </label>
+          <button type="button" class="btn btn-primary" data-method="destroy" title="Destroy">
+            <span class="docs-tooltip" data-toggle="tooltip" title="cropper.destroy()">
+              <span class="fa fa-power-off"></span>
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="aspectRatio" title="Reset" data-value="16:9">
+            <span class="docs-tooltip" data-toggle="tooltip" title="16:9">
+              16:9
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="aspectRatio" title="Reset" data-value="4:3">
+            <span class="docs-tooltip" data-toggle="tooltip" title="16:9">
+              4:3
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="aspectRatio" title="Reset" data-value="2:3">
+            <span class="docs-tooltip" data-toggle="tooltip" title="2:3">
+              2:3
+            </span>
+          </button>
+         </div><div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="aspectRatio" title="Reset" data-value="1:1">
+            <span class="docs-tooltip" data-toggle="tooltip" title="1:1">
+              1:1
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="aspectRatio" title="Reset" data-value="<?php echo isset($ratio) ? $ratio : "" ?>">
+            <span class="docs-tooltip" data-toggle="tooltip" title="<?php echo isset($wh) ? $wh : "" ?>">
+              当前
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="aspectRatio" title="Reset" data-value="NAN">
+            <span class="docs-tooltip" data-toggle="tooltip" title="自定义">
+              自定义
+            </span>
+          </button>
+        </div>
+
+        <div class="btn-group">
+          <button type="button" class="btn btn-primary" data-method="save" title="save">
+            <span class="docs-tooltip" data-toggle="tooltip" title="保存">
+             	保存
+            </span>
+          </button>
+          <button type="button" class="btn btn-primary" data-method="del" title="del">
+            <span class="docs-tooltip" data-toggle="tooltip" title="删除">
+             	删除
+            </span>
+          </button>
+         </div>
+		<div style="display: none;">
+
+        
+        <div class="modal fade docs-cropped" id="getCroppedCanvasModal" role="dialog" aria-hidden="true" aria-labelledby="getCroppedCanvasTitle" tabindex="-1">
+          <div class="modal-dialog">
+            <div class="modal-content">
+              <div class="modal-header">
+                <h5 class="modal-title" id="getCroppedCanvasTitle">Cropped</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                  <span aria-hidden="true">&times;</span>
+                </button>
+              </div>
+              <div class="modal-body"></div>
+              <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+                <a class="btn btn-primary" id="download" href="javascript:void(0);" download="cropped.jpg">Download</a>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <button type="button" class="btn btn-secondary" data-method="getData" data-option data-target="#putData">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getData()">
+            Get Data
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="setData" data-target="#putData">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setData(data)">
+            Set Data
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="getContainerData" data-option data-target="#putData">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getContainerData()">
+            Get Container Data
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="getImageData" data-option data-target="#putData">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getImageData()">
+            Get Image Data
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="getCanvasData" data-option data-target="#putData">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getCanvasData()">
+            Get Canvas Data
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="setCanvasData" data-target="#putData">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setCanvasData(data)">
+            Set Canvas Data
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="getCropBoxData" data-option data-target="#putData">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getCropBoxData()">
+            Get Crop Box Data
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="setCropBoxData" data-target="#putData">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setCropBoxData(data)">
+            Set Crop Box Data
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="moveTo" data-option="0">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.moveTo(0)">
+            Move to [0,0]
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="zoomTo" data-option="1">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.zoomTo(1)">
+            Zoom to 100%
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="rotateTo" data-option="180">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.rotateTo(180)">
+            Rotate 180°
+          </span>
+        </button>
+        <button type="button" class="btn btn-secondary" data-method="scale" data-option="-2" data-second-option="-1">
+          <span class="docs-tooltip" data-toggle="tooltip" title="cropper.scale(-2, -1)">
+            Scale (-2, -1)
+          </span>
+        </button>
+        <textarea class="form-control" id="putData" placeholder="Get data to here or set data with this value"></textarea>
+   	 	</div>
+      </div>
+    </div>
+      </div>
+    </div>
+    
+  </div>
+  <input type="hidden" value="<?php echo isset($param) ? $param : "" ?>" name="param" id="param" />
+  <input type="hidden" value="<?php echo isset($key) ? $key : "" ?>" name="key" id="key" />
+  <input type="hidden" value="<?php echo isset($state) ? $state : "" ?>" name="state" id="state" />
+  
+  <script src="<?php  echo Dever::assets('lib/jquery/jquery.min.js', 'script') ?>"></script>
+  <script src="<?php  echo Dever::assets('lib/bootstrap/js/bootstrap.min.js', 'script') ?>"></script>
+  
+  <script src="<?php  echo Dever::assets('lib/cropper/cropper.js', 'script') ?>"></script>
+  <script src="<?php  echo Dever::assets('lib/cropper/main.js', 'script') ?>"></script>
+</body>
+</html>

+ 102 - 0
data/compile/news/upload/show.cmp.php

@@ -0,0 +1,102 @@
+
+<style>
+  #component-anim .layui-card-body{padding: 15px;}
+
+  #component-anim .component-anim-demo{font-size: 0;}
+  #component-anim .component-anim-demo li{display: inline-block; vertical-align: middle; width: 127px; line-height: 25px; padding: 20px 0; font-size: 14px; text-align: center; color: #666; transition: all .3s; -webkit-transition: all .3s;margin:5px;}
+  #component-anim .component-anim-demo li .layui-icon{display: inline-block; font-size: 36px;}
+
+  #component-anim .component-anim-demo li .fontclass{display: none;}
+  #component-anim .component-anim-demo li .name{color: #c2c2c2;}
+  #component-anim .component-anim-demo li:hover{background-color: #f2f2f2; color: #000;}
+
+  #component-anim .component-anim-demo li{width: 168px;}
+  #component-anim .component-anim-demo .layui-anim{cursor: pointer;}
+  #component-anim .component-anim-demo .layui-anim{width:150px;height:100px;}
+  #component-anim .component-anim-demo .code{height:25px;width: auto;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;}
+
+  #component-anim .component-anim-demo .layui-anim-yes
+  {
+  	border:1px solid #0000ff;
+  }
+  #component-anim .component-anim-demo .layui-anim-no
+  {
+  	border: 1px solid #e2e2e2;
+  }
+  </style>
+
+<div class="layui-card"  id="component-anim">
+  <div class="layui-card-header">
+  	<input type="hidden" class="file_key" value="<?php echo isset($key) ? $key : "" ?>">
+  	<input type="hidden" class="file_pg" value="<?php echo isset($search_pg) ? $search_pg : "" ?>">
+  	<input type="hidden" class="file_cur" value="<?php echo isset($cur) ? $cur : "" ?>">
+    <input type="hidden" class="upload_search_value" value="<?php echo isset($upload_search_value) ? $upload_search_value : "" ?>">
+    <input type="hidden" class="upload_search" value="<?php echo isset($upload_search) ? $upload_search : "" ?>">
+  	<div class="layui-inline"><div class="layui-input-inline"><input type="text" style="width: 100%;" class="layui-input file_filename" value="<?php echo isset($search_name) ? $search_name : "" ?>" autocomplete="new-password" placeholder="<?php echo isset($name) ? $name : "" ?>"></div></div>
+
+  	<div class="layui-inline" style="display: none;"><div class="layui-input-inline"><input type="text" style="width: 100%;"  class="layui-input file_tag" value="<?php echo isset($search_tag) ? $search_tag : "" ?>" autocomplete="new-password" placeholder="标签"></div></div>
+
+  	<div class="layui-inline"><div class="layui-input-inline"><select lay-ignore="" class="layui-input file_cate" style="width: 100%;"><option parent="" value="-1" selected="">选择分类</option>
+  		<?php if(isset($cate) && is_array($cate)): foreach($cate as $k => $v): ?>
+  		<option parent="" value="<?php echo isset($v['id']) ? $v['id'] : "" ?>" <?php if($v['id'] == $search_cate): ?>selected<?php endif ?>><?php echo isset($v['name']) ? $v['name'] : "" ?></option>
+  		<?php endforeach;endif; ?>
+  	</select></div></div>
+
+  	<div class="layui-inline" class="file-search" id="showUploadFilesSearch" onclick="showUploadFilesSearch($(this), 1, false, 1)"><div class="layui-input-inline"><button type="button" class="layui-btn"><i class="fa fa-save"></i> 搜索</button></div></div>
+
+    <div class="layui-inline" class="file-search" onclick="showUploadFilesUpload($(this))"><div class="layui-input-inline"><button type="button" class="layui-btn"><i class="fa fa-save"></i> 上传</button></div></div>
+
+    <div class="layui-inline" class="file-search" id="showUploadFilesSearch2" onclick="showUploadFilesSearch($(this), 2, false, 1)"><div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-danger"><i class="fa fa-submit"></i> 回收站</button></div></div>
+
+    <?php if($diy == 2): ?>
+    <div class="layui-inline" class="file-search" id="showUploadFilesSearch" onclick="showUploadFilesSearch($(this), 1, true, 1)"><div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-normal"><i class="fa fa-save"></i> 全部图库</button></div></div>
+    <?php endif; ?>
+
+  </div>
+  <div class="layui-card-body">
+    
+    <ul class="component-anim-demo">
+    	<?php if(isset($file) && is_array($file)): foreach($file as $k1 => $v1): ?>
+      <li class="<?php if($v1['check']): ?>layui-anim-yes<?php else: ?>layui-anim-no<?php endif ?>">
+        <div class="layui-anim" data-anim="layui-anim-up" onclick="showUploadFilesSet($(this), '<?php echo isset($v1['name']) ? $v1['name'] : "" ?>','<?php echo isset($v1['url']) ? $v1['url'] : "" ?>','<?php echo isset($v1['id']) ? $v1['id'] : "" ?>')"><img src="<?php echo isset($v1['pic']) ? $v1['pic'] : "" ?>" style="max-width: 150px;max-height: 100px;margin-left: 10px;"/></div>
+        <div class="code" style="margin-left: 5px;" onclick="showUploadFilesShowValue($(this))"><?php echo isset($v1['source_name']) ? $v1['source_name'] : "" ?></div>
+        <div class="code" ><a style="color:<?php echo isset($v1['stateColor']) ? $v1['stateColor'] : "" ?>;cursor: pointer;" onclick="showUploadFilesSetState($(this), '<?php echo isset($v1['stateUrl']) ? $v1['stateUrl'] : "" ?>')">[<?php echo isset($v1['stateName']) ? $v1['stateName'] : "" ?>]</a>
+
+        <?php if($v1['state'] == 1): ?>
+        <a class="code" style="color:blue;cursor: pointer;" onclick="showUploadFilesSetValue($(this), '<?php echo isset($v1['valueUrl']) ? $v1['valueUrl'] : "" ?>', 't<?php echo isset($v1['id']) ? $v1['id'] : "" ?>', '<?php echo isset($v1['value']) ? $v1['value'] : "" ?>')">[附加值]</a>
+        <?php endif ?>
+        </div>
+
+      </li>
+      <?php endforeach;endif; ?>
+    </ul>
+    <div id="file-page"></div>
+</div>
+
+  
+
+<script>
+layui.use('laypage', function(){
+  var laypage = layui.laypage;
+  
+  //执行一个laypage实例
+  laypage.render({
+    elem: 'file-page' //注意,这里的 test1 是 ID,不用加 # 号
+    ,count: <?php echo isset($total) ? $total : "" ?> //数据总数,从服务端得到
+    ,limit:12
+    ,curr:<?php echo isset($search_pg) ? $search_pg : "" ?>
+    ,jump: function(obj, first){
+	    //首次不执行
+	    if(!first){
+	      $('.file_pg').val(obj.curr);
+	    	showUploadFilesSearch($('.file_pg'), showUploadFilesSearchState, showUploadFilesSearchAll);
+	    }
+	  }
+  });
+});
+</script>
+
+</div>

+ 36 - 0
data/database/news/news_content_album.php

@@ -0,0 +1,36 @@
+<?php return array (
+  'time' => 1640331839,
+  'table' => 'news_content_album',
+  'create' => 'DROP TABLE IF EXISTS `news_content_album`;CREATE TABLE `news_content_album`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(80) NULL COMMENT \'标题\',`desc` VARCHAR(500) NULL COMMENT \'摘要\',`cate_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'所属栏目\',`author_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'作者\',`pic_cover` VARCHAR(150) NULL COMMENT \'封面图\',`pic` TEXT(255)  COMMENT \'多张图片\',`tag` TEXT(255)  COMMENT \'标签\',`num_add_view` INT(11) NOT NULL DEFAULT 0 COMMENT \'浏览量基数\',`num_view` INT(11) NOT NULL DEFAULT 0 COMMENT \'浏览量\',`num_add_up` INT(11) NOT NULL DEFAULT 0 COMMENT \'点赞量基数\',`num_up` INT(11) NOT NULL DEFAULT 0 COMMENT \'点赞量\',`top` TINYINT(1) NOT NULL DEFAULT \'2\' COMMENT \'是否精选推荐\',`pdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'发布时间\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`udate` INT(11) NOT NULL DEFAULT 0 COMMENT \'更新时间\',`status` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'发布状态\',`spider_data_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'采集数据ID\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`admin_founder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'创建人\',`admin_editor` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'操作人\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'desc' => 2,
+    'cate_id' => 3,
+    'author_id' => 4,
+    'pic_cover' => 5,
+    'pic' => 6,
+    'tag' => 7,
+    'num_add_view' => 8,
+    'num_view' => 9,
+    'num_add_up' => 10,
+    'num_up' => 11,
+    'top' => 12,
+    'pdate' => 13,
+    'reorder' => 14,
+    'udate' => 15,
+    'status' => 16,
+    'spider_data_id' => 17,
+    'state' => 18,
+    'admin_founder' => 19,
+    'admin_editor' => 20,
+    'cdate' => 21,
+  ),
+  'index' => 1,
+  'order' => 
+  array (
+    'cate_id' => 0,
+    'reorder' => 1,
+  ),
+);

+ 34 - 0
data/database/news/news_content_article.php

@@ -0,0 +1,34 @@
+<?php return array (
+  'time' => 1640331838,
+  'table' => 'news_content_article',
+  'create' => 'DROP TABLE IF EXISTS `news_content_article`;CREATE TABLE `news_content_article`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(80) NULL COMMENT \'标题\',`desc` VARCHAR(500) NULL COMMENT \'摘要\',`cate_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'所属栏目\',`author_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'作者\',`pic_cover` VARCHAR(150) NULL COMMENT \'封面图\',`tag` TEXT(255)  COMMENT \'标签\',`num_add_view` INT(11) NOT NULL DEFAULT 0 COMMENT \'浏览量基数\',`num_view` INT(11) NOT NULL DEFAULT 0 COMMENT \'浏览量\',`top` TINYINT(1) NOT NULL DEFAULT \'2\' COMMENT \'是否精选推荐\',`pdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'发布时间\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`udate` INT(11) NOT NULL DEFAULT 0 COMMENT \'更新时间\',`content` TEXT(255)  COMMENT \'内容\',`status` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'发布状态\',`spider_data_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'采集数据ID\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`admin_founder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'创建人\',`admin_editor` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'操作人\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'desc' => 2,
+    'cate_id' => 3,
+    'author_id' => 4,
+    'pic_cover' => 5,
+    'tag' => 6,
+    'num_add_view' => 7,
+    'num_view' => 8,
+    'top' => 9,
+    'pdate' => 10,
+    'reorder' => 11,
+    'udate' => 12,
+    'content' => 13,
+    'status' => 14,
+    'spider_data_id' => 15,
+    'state' => 16,
+    'admin_founder' => 17,
+    'admin_editor' => 18,
+    'cdate' => 19,
+  ),
+  'index' => 1,
+  'order' => 
+  array (
+    'cate_id' => 0,
+    'reorder' => 1,
+  ),
+);

+ 17 - 0
data/database/news/news_content_author.php

@@ -0,0 +1,17 @@
+<?php return array (
+  'time' => 1640331843,
+  'table' => 'news_content_author',
+  'create' => 'DROP TABLE IF EXISTS `news_content_author`;CREATE TABLE `news_content_author`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'作者名称-长度不能超过16个汉字\',`desc` VARCHAR(500) NULL COMMENT \'介绍\',`avatar` VARCHAR(150) NULL COMMENT \'作者头像-图片尺寸150*150PX或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式\',`link` VARCHAR(150) NULL COMMENT \'链接\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'desc' => 2,
+    'avatar' => 3,
+    'link' => 4,
+    'reorder' => 5,
+    'state' => 6,
+    'cdate' => 7,
+  ),
+  'insert' => 'INSERT INTO `news_content_author` (name,state,cdate) VALUES ("默认作者",1,1640331843)',
+);

+ 18 - 0
data/database/news/news_content_cate.php

@@ -0,0 +1,18 @@
+<?php return array (
+  'time' => 1640331838,
+  'table' => 'news_content_cate',
+  'create' => 'DROP TABLE IF EXISTS `news_content_cate`;CREATE TABLE `news_content_cate`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'栏目名称\',`cate_id` INT(11) NOT NULL DEFAULT \'-1\' COMMENT \'上级栏目\',`type` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'栏目分类\',`menu` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'是否显示在菜单\',`link` VARCHAR(150) NULL COMMENT \'链接-填写链接则跳转至该链接,为空则自动生成站内链接\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'cate_id' => 2,
+    'type' => 3,
+    'menu' => 4,
+    'link' => 5,
+    'reorder' => 6,
+    'state' => 7,
+    'cdate' => 8,
+  ),
+  'insert' => 'INSERT INTO `news_content_cate` (name,reorder,cdate) VALUES ("默认栏目",100,1640331838)',
+);

+ 34 - 0
data/database/news/news_content_person.php

@@ -0,0 +1,34 @@
+<?php return array (
+  'time' => 1640331841,
+  'table' => 'news_content_person',
+  'create' => 'DROP TABLE IF EXISTS `news_content_person`;CREATE TABLE `news_content_person`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(80) NULL COMMENT \'姓名\',`desc` VARCHAR(800) NULL COMMENT \'介绍\',`source_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'来源\',`top` TINYINT(1) NOT NULL DEFAULT \'2\' COMMENT \'是否推荐\',`avatar` VARCHAR(150) NULL COMMENT \'头像\',`pic_cover` VARCHAR(150) NULL COMMENT \'封面图\',`pic` TEXT(255)  COMMENT \'多张图片\',`profession` VARCHAR(200) NULL COMMENT \'职业-多个用逗号隔开\',`ability` VARCHAR(800) NULL COMMENT \'能力标签-多个用逗号隔开\',`education` VARCHAR(100) NULL COMMENT \'学历\',`bdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'生日\',`phone` VARCHAR(20) NULL COMMENT \'联系电话\',`email` VARCHAR(220) NULL COMMENT \'联系邮箱\',`address` VARCHAR(520) NULL COMMENT \'地址\',`skill` TEXT(1000)  COMMENT \'技能配置\',`learn` TEXT(1000)  COMMENT \'学习经历\',`life` TEXT(1000)  COMMENT \'生活经历\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`udate` INT(11) NOT NULL DEFAULT 0 COMMENT \'更新时间\',`status` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'发布状态\',`spider_data_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'采集数据ID\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`admin_founder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'创建人\',`admin_editor` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'操作人\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'desc' => 2,
+    'source_id' => 3,
+    'top' => 4,
+    'avatar' => 5,
+    'pic_cover' => 6,
+    'pic' => 7,
+    'profession' => 8,
+    'ability' => 9,
+    'education' => 10,
+    'bdate' => 11,
+    'phone' => 12,
+    'email' => 13,
+    'address' => 14,
+    'skill' => 15,
+    'learn' => 16,
+    'life' => 17,
+    'reorder' => 18,
+    'udate' => 19,
+    'status' => 20,
+    'spider_data_id' => 21,
+    'state' => 22,
+    'admin_founder' => 23,
+    'admin_editor' => 24,
+    'cdate' => 25,
+  ),
+);

+ 18 - 0
data/database/news/news_content_search.php

@@ -0,0 +1,18 @@
+<?php return array (
+  'time' => 1664270721,
+  'table' => 'news_content_search',
+  'create' => 'DROP TABLE IF EXISTS `news_content_search`;CREATE TABLE `news_content_search`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`cate_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'所属栏目\',`type` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'类型\',`data_id` VARCHAR(80) NULL COMMENT \'数据ID\',`name` VARCHAR(80) NULL COMMENT \'标题\',`status` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'发布状态\',`pdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'发布时间\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'cate_id' => 1,
+    'type' => 2,
+    'data_id' => 3,
+    'name' => 4,
+    'status' => 5,
+    'pdate' => 6,
+    'reorder' => 7,
+    'state' => 8,
+    'cdate' => 9,
+  ),
+);

+ 17 - 0
data/database/news/news_content_source.php

@@ -0,0 +1,17 @@
+<?php return array (
+  'time' => 1655803365,
+  'table' => 'news_content_source',
+  'create' => 'DROP TABLE IF EXISTS `news_content_source`;CREATE TABLE `news_content_source`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'来源名称-长度不能超过16个汉字\',`desc` VARCHAR(500) NULL COMMENT \'介绍\',`logo` VARCHAR(150) NULL COMMENT \'来源LOGO-图片尺寸150*150PX或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式\',`link` VARCHAR(150) NULL COMMENT \'链接\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'desc' => 2,
+    'logo' => 3,
+    'link' => 4,
+    'reorder' => 5,
+    'state' => 6,
+    'cdate' => 7,
+  ),
+  'insert' => 'INSERT INTO `news_content_source` (name,state,cdate) VALUES ("默认来源",1,1655803366)',
+);

+ 37 - 0
data/database/news/news_content_video.php

@@ -0,0 +1,37 @@
+<?php return array (
+  'time' => 1640331840,
+  'table' => 'news_content_video',
+  'create' => 'DROP TABLE IF EXISTS `news_content_video`;CREATE TABLE `news_content_video`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(80) NULL COMMENT \'标题\',`desc` VARCHAR(500) NULL COMMENT \'摘要\',`cate_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'所属栏目\',`author_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'作者\',`video` VARCHAR(800) NULL COMMENT \'上传视频-视频格式MP4,上传大小不能超过4G\',`video_info` TEXT(255)  COMMENT \'视频信息\',`pic_cover` VARCHAR(150) NULL COMMENT \'封面图\',`tag` TEXT(255)  COMMENT \'标签\',`num_add_view` INT(11) NOT NULL DEFAULT 0 COMMENT \'浏览量基数\',`num_view` INT(11) NOT NULL DEFAULT 0 COMMENT \'浏览量\',`num_add_up` INT(11) NOT NULL DEFAULT 0 COMMENT \'点赞量基数\',`num_up` INT(11) NOT NULL DEFAULT 0 COMMENT \'点赞量\',`top` TINYINT(1) NOT NULL DEFAULT \'2\' COMMENT \'是否精选推荐\',`pdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'发布时间\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`udate` INT(11) NOT NULL DEFAULT 0 COMMENT \'更新时间\',`status` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'发布状态\',`spider_data_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'采集数据ID\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`admin_founder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'创建人\',`admin_editor` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'操作人\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'desc' => 2,
+    'cate_id' => 3,
+    'author_id' => 4,
+    'video' => 5,
+    'video_info' => 6,
+    'pic_cover' => 7,
+    'tag' => 8,
+    'num_add_view' => 9,
+    'num_view' => 10,
+    'num_add_up' => 11,
+    'num_up' => 12,
+    'top' => 13,
+    'pdate' => 14,
+    'reorder' => 15,
+    'udate' => 16,
+    'status' => 17,
+    'spider_data_id' => 18,
+    'state' => 19,
+    'admin_founder' => 20,
+    'admin_editor' => 21,
+    'cdate' => 22,
+  ),
+  'index' => 1,
+  'order' => 
+  array (
+    'cate_id' => 0,
+    'reorder' => 1,
+  ),
+);

+ 24 - 0
data/database/news/news_main_config.php

@@ -0,0 +1,24 @@
+<?php return array (
+  'time' => 1640331821,
+  'table' => 'news_main_config',
+  'create' => 'DROP TABLE IF EXISTS `news_main_config`;CREATE TABLE `news_main_config`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'系统ID\',`name` VARCHAR(32) NULL COMMENT \'站点名称\',`keywords` VARCHAR(1000) NULL COMMENT \'站点关键词\',`info` VARCHAR(1000) NULL COMMENT \'站点描述\',`logo` VARCHAR(150) NULL COMMENT \'站点LOGO\',`qq` VARCHAR(100) NULL COMMENT \'客服QQ\',`email` VARCHAR(100) NULL COMMENT \'客服邮箱\',`phone` VARCHAR(100) NULL COMMENT \'客服电话\',`wechat` VARCHAR(150) NULL COMMENT \'微信客服-上传微信客服二维码图片\',`wechat_service` VARCHAR(150) NULL COMMENT \'微信公众号-上传微信公众号二维码图片\',`foot` TEXT(255)  COMMENT \'底部信息\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'keywords' => 2,
+    'info' => 3,
+    'logo' => 4,
+    'qq' => 5,
+    'email' => 6,
+    'phone' => 7,
+    'wechat' => 8,
+    'wechat_service' => 9,
+    'foot' => 10,
+    'state' => 11,
+    'cdate' => 12,
+    'hr1_no_col' => 13,
+    'hr5_no_col' => 14,
+  ),
+  'insert' => 'INSERT INTO `news_main_config` (name,cdate) VALUES ("神秘城",1640331821)',
+);

+ 14 - 0
data/database/news/news_main_page.php

@@ -0,0 +1,14 @@
+<?php return array (
+  'time' => 1640331830,
+  'table' => 'news_main_page',
+  'create' => 'DROP TABLE IF EXISTS `news_main_page`;CREATE TABLE `news_main_page`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(80) NULL COMMENT \'标题\',`key` VARCHAR(80) NULL COMMENT \'标识\',`content` TEXT(255)  COMMENT \'内容\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'key' => 2,
+    'content' => 3,
+    'state' => 4,
+    'cdate' => 5,
+  ),
+);

+ 23 - 0
data/database/news/news_manage_admin.php

@@ -0,0 +1,23 @@
+<?php return array (
+  'time' => 1640331774,
+  'table' => 'news_manage_admin',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_admin`;CREATE TABLE `news_manage_admin`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'管理员ID\',`username` VARCHAR(24) NULL COMMENT \'管理员名\',`email` VARCHAR(150) NULL COMMENT \'邮箱-可用于登录,请准确填写,不允许重复\',`mobile` VARCHAR(32) NULL COMMENT \'手机号\',`password` VARCHAR(64) NULL COMMENT \'管理员密码\',`config` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'后台配置\',`role` VARCHAR(100) NULL COMMENT \'角色\',`group` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'分组\',`top` TEXT(255)  COMMENT \'头部菜单-这里的头部菜单如果设置,则会覆盖角色中的头部菜单\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'数据状态\',`status` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'username' => 1,
+    'email' => 2,
+    'mobile' => 3,
+    'password' => 4,
+    'config' => 5,
+    'company' => 6,
+    'role' => 7,
+    'group' => 8,
+    'auth' => 9,
+    'top' => 10,
+    'state' => 11,
+    'status' => 12,
+    'cdate' => 13,
+  ),
+  'alter' => 5,
+);

+ 12 - 0
data/database/news/news_manage_admin_role.php

@@ -0,0 +1,12 @@
+<?php return array (
+  'time' => 1640331774,
+  'table' => 'news_manage_admin_role',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_admin_role`;CREATE TABLE `news_manage_admin_role`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`admin_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'管理员ID\',`role_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'角色ID\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'admin_id' => 1,
+    'role_id' => 2,
+    'cdate' => 3,
+  ),
+);

+ 16 - 0
data/database/news/news_manage_api.php

@@ -0,0 +1,16 @@
+<?php return array (
+  'time' => 1640331775,
+  'table' => 'news_manage_api',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_api`;CREATE TABLE `news_manage_api`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(30) NULL COMMENT \'接口名称\',`type` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'接口类型\',`project` VARCHAR(30) NULL COMMENT \'所属项目\',`site` VARCHAR(500) NULL COMMENT \'接口地址\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'数据状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'type' => 2,
+    'project' => 3,
+    'site' => 4,
+    'reorder' => 5,
+    'state' => 6,
+    'cdate' => 7,
+  ),
+);

+ 17 - 0
data/database/news/news_manage_auth.php

@@ -0,0 +1,17 @@
+<?php return array (
+  'time' => 1640331774,
+  'table' => 'news_manage_auth',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_auth`;CREATE TABLE `news_manage_auth`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`project` VARCHAR(50) NULL COMMENT \'项目KEY\',`project_name` VARCHAR(50) NULL COMMENT \'项目名\',`name` VARCHAR(50) NULL COMMENT \'权限名\',`auth_id` INT(11) NOT NULL DEFAULT \'-1\' COMMENT \'上级权限\',`key` VARCHAR(100) NULL COMMENT \'权限KEY\',`value` VARCHAR(30) NULL COMMENT \'对应的值\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'project' => 1,
+    'project_name' => 2,
+    'name' => 3,
+    'auth_id' => 4,
+    'key' => 5,
+    'value' => 6,
+    'state' => 7,
+    'cdate' => 8,
+  ),
+);

+ 15 - 0
data/database/news/news_manage_company.php

@@ -0,0 +1,15 @@
+<?php return array (
+  'time' => 1664268015,
+  'table' => 'news_manage_company',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_company`;CREATE TABLE `news_manage_company`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(80) NULL COMMENT \'公司名称\',`is_project` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'项目可用状态\',`project` VARCHAR(2000) NULL COMMENT \'可用项目\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'is_project' => 2,
+    'project' => 3,
+    'state' => 4,
+    'cdate' => 5,
+  ),
+  'insert' => 'INSERT INTO `news_manage_company` (id,name,state,cdate) VALUES (1,"默认公司", 1,1664268015)',
+);

+ 19 - 0
data/database/news/news_manage_config.php

@@ -0,0 +1,19 @@
+<?php return array (
+  'time' => 1640331774,
+  'table' => 'news_manage_config',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_config`;CREATE TABLE `news_manage_config`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'配置ID\',`name` VARCHAR(32) NULL COMMENT \'配置名\',`template` INT(1) NOT NULL DEFAULT \'1\' COMMENT \'后台模板\',`title` VARCHAR(32) NULL COMMENT \'后台TITLE\',`info` VARCHAR(40) NULL COMMENT \'控制台欢迎标题\',`content` TEXT(255)  COMMENT \'控制台欢迎内容\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'template' => 2,
+    'title' => 3,
+    'info' => 4,
+    'content' => 5,
+    'help_title' => 6,
+    'help_info' => 7,
+    'state' => 8,
+    'cdate' => 9,
+  ),
+  'insert' => 'INSERT INTO `news_manage_config` (name,state,cdate) VALUES ("默认配置",1,1640331774)',
+);

+ 16 - 0
data/database/news/news_manage_cron.php

@@ -0,0 +1,16 @@
+<?php return array (
+  'time' => 1640331775,
+  'table' => 'news_manage_cron',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_cron`;CREATE TABLE `news_manage_cron`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'任务名\',`project` VARCHAR(30) NULL COMMENT \'项目\',`interface` VARCHAR(100) NULL COMMENT \'接口(命令行)\',`ldate` INT(11) NOT NULL DEFAULT 0 COMMENT \'执行时间\',`time` INT(11) NOT NULL DEFAULT 0 COMMENT \'时间间隔(为0则执行一次)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'project' => 2,
+    'interface' => 3,
+    'ldate' => 4,
+    'time' => 5,
+    'state' => 6,
+    'cdate' => 7,
+  ),
+);

+ 16 - 0
data/database/news/news_manage_group.php

@@ -0,0 +1,16 @@
+<?php return array (
+  'time' => 1640331774,
+  'table' => 'news_manage_group',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_group`;CREATE TABLE `news_manage_group`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'组ID\',`name` VARCHAR(50) NULL COMMENT \'组名称\',`area` VARCHAR(255) NULL COMMENT \'区域\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'company_id' => 1,
+    'name' => 2,
+    'area' => 3,
+    'reorder' => 4,
+    'state' => 5,
+    'cdate' => 6,
+  ),
+  'insert' => 'INSERT INTO `news_manage_group` (name,state,cdate) VALUES ("默认分组",1,1640331774)',
+);

+ 21 - 0
data/database/news/news_manage_log.php

@@ -0,0 +1,21 @@
+<?php return array (
+  'time' => 1640331775,
+  'table' => 'news_manage_log',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_log`;CREATE TABLE `news_manage_log`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`project` VARCHAR(32) NULL COMMENT \'项目名\',`table` VARCHAR(32) NULL COMMENT \'项目下的表名\',`info` LONGTEXT  COMMENT \'日志记录\',`admin` INT(11) NOT NULL DEFAULT 0 COMMENT \'操作人\',`tid` INT(11) NOT NULL DEFAULT 0 COMMENT \'来源表ID\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'操作时间\') AUTO_INCREMENT = 1, ENGINE = innodb;PARTITION BY RANGE(YEAR(cdate)) ) (
+                PARTITION news_manage_log_0 VALUES LESS THEN (2000),PARTITION news_manage_log_1 VALUES LESS THEN (2010),PARTITION news_manage_log_2 VALUES LESS THEN MAXVALUE
+            );',
+  'struct' => 
+  array (
+    'id' => 0,
+    'project' => 1,
+    'table' => 2,
+    'menu_id' => 3,
+    'name' => 4,
+    'type' => 5,
+    'admin' => 6,
+    'info' => 7,
+    'tid' => 8,
+    'state' => 9,
+    'cdate' => 10,
+  ),
+);

+ 22 - 0
data/database/news/news_manage_menu.php

@@ -0,0 +1,22 @@
+<?php return array (
+  'time' => 1640331774,
+  'table' => 'news_manage_menu',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_menu`;CREATE TABLE `news_manage_menu`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'菜单ID\',`name` VARCHAR(50) NULL COMMENT \'菜单名称\',`group_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'选择分组\',`menu_id` INT(11) NOT NULL DEFAULT \'-1\' COMMENT \'上级菜单\',`menu` VARCHAR(800) NULL COMMENT \'上级菜单\',`key` VARCHAR(100) NULL COMMENT \'菜单标识-用来标识菜单的唯一性,也可以输入项目名称\',`link` VARCHAR(150) NULL COMMENT \'链接(或路径)\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序\',`type` TINYINT(1) NOT NULL DEFAULT \'2\' COMMENT \'开启子菜单\',`icon` VARCHAR(100) NULL COMMENT \'图标代码-请<A HREF="HTTPS://WWW.LAYUI.ME/DOC/ELEMENT/ICON.HTML" TARGET="_BLANK">点此</A>查看图标代码\',`fast` TINYINT(1) NOT NULL DEFAULT \'2\' COMMENT \'是否快捷菜单\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'group_id' => 2,
+    'menu_id' => 3,
+    'menu' => 4,
+    'key' => 5,
+    'link' => 6,
+    'reorder' => 7,
+    'type' => 8,
+    'icon' => 9,
+    'fast' => 10,
+    'state' => 11,
+    'cdate' => 12,
+  ),
+  'alter' => 5,
+);

+ 15 - 0
data/database/news/news_manage_menu_func.php

@@ -0,0 +1,15 @@
+<?php return array (
+  'time' => 1655803359,
+  'table' => 'news_manage_menu_func',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_menu_func`;CREATE TABLE `news_manage_menu_func`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'功能ID\',`name` VARCHAR(50) NULL COMMENT \'功能名称\',`key` VARCHAR(100) NULL COMMENT \'功能标识\',`menu_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'菜单ID\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'key' => 2,
+    'menu_id' => 3,
+    'reorder' => 4,
+    'state' => 5,
+    'cdate' => 6,
+  ),
+);

+ 15 - 0
data/database/news/news_manage_menu_group.php

@@ -0,0 +1,15 @@
+<?php return array (
+  'time' => 1640331774,
+  'table' => 'news_manage_menu_group',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_menu_group`;CREATE TABLE `news_manage_menu_group`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'分组ID\',`name` VARCHAR(50) NULL COMMENT \'分组名称\',`icon` VARCHAR(100) NULL COMMENT \'图标代码-请<A HREF="HTTPS://WWW.LAYUI.COM/DOC/ELEMENT/ICON.HTML" TARGET="_BLANK">点此</A>查看图标代码\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'icon' => 2,
+    'reorder' => 3,
+    'state' => 4,
+    'cdate' => 5,
+  ),
+  'insert' => 'INSERT INTO `news_manage_menu_group` (name,icon,reorder,state,cdate) VALUES ("默认分组","layui-icon layui-icon-home",1,1,1640331774)',
+);

+ 15 - 0
data/database/news/news_manage_notice.php

@@ -0,0 +1,15 @@
+<?php return array (
+  'time' => 1640331775,
+  'table' => 'news_manage_notice',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_notice`;CREATE TABLE `news_manage_notice`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'公告ID\',`name` VARCHAR(32) NULL COMMENT \'公告标题\',`config` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'后台配置\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`content` TEXT(255)  COMMENT \'内容\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'config' => 2,
+    'reorder' => 3,
+    'content' => 4,
+    'state' => 5,
+    'cdate' => 6,
+  ),
+);

+ 20 - 0
data/database/news/news_manage_opt.php

@@ -0,0 +1,20 @@
+<?php return array (
+  'time' => 1640331775,
+  'table' => 'news_manage_opt',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_opt`;CREATE TABLE `news_manage_opt`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`project` VARCHAR(30) NULL COMMENT \'项目\',`table` VARCHAR(30) NULL COMMENT \'数据表-请输入表的英文名\',`method` VARCHAR(32) NULL COMMENT \'所属方法名\',`col` VARCHAR(500) NULL COMMENT \'使用的字段\',`col_index` VARCHAR(500) NULL COMMENT \'建立索引的字段\',`version` INT(11) NOT NULL DEFAULT 0 COMMENT \'版本号\',`num` INT(11) NOT NULL DEFAULT 0 COMMENT \'执行次数\',`time` VARCHAR(30) NULL COMMENT \'执行时间\',`status` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'是否建立索引\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'数据是否存在\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'project' => 1,
+    'table' => 2,
+    'method' => 3,
+    'col' => 4,
+    'col_index' => 5,
+    'version' => 6,
+    'num' => 7,
+    'time' => 8,
+    'status' => 9,
+    'state' => 10,
+    'cdate' => 11,
+  ),
+);

+ 26 - 0
data/database/news/news_manage_role.php

@@ -0,0 +1,26 @@
+<?php return array (
+  'time' => 1640331774,
+  'table' => 'news_manage_role',
+  'create' => 'DROP TABLE IF EXISTS `news_manage_role`;CREATE TABLE `news_manage_role`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'角色ID\',`name` VARCHAR(24) NULL COMMENT \'角色名\',`role_id` INT(11) NOT NULL DEFAULT \'-1\' COMMENT \'上级角色\',`self` TINYINT(1) NOT NULL DEFAULT \'2\' COMMENT \'是否只能管理自己发布的内容-请在需要此项权限的表中增加[数据查询时影响的字段]\',`col_select` VARCHAR(30) NULL COMMENT \'数据查询时影响的字段-该项影响数据查询,如果在表中增加该字段,则后台在查询数据时自动查询当前管理员的ID下的数据,多个用逗号隔开,与[是否只能管理自己发布的内容]相关\',`col_insert` VARCHAR(30) NULL COMMENT \'数据插入时影响的字段-该项影响数据插入,如果在表中增加该字段,则后台操作时自动为该字段赋值为当前管理员的ID,多个用逗号隔开\',`col_update` VARCHAR(30) NULL COMMENT \'数据更新时影响的字段-该项影响数据更新,如果在表中增加该字段,则后台操作时自动为该字段赋值为当前管理员的ID,多个用逗号隔开\',`oper` VARCHAR(24) NULL COMMENT \'操作权限\',`auth` TEXT(255)  COMMENT \'左侧菜单\',`top` TEXT(255)  COMMENT \'头部菜单\',`auth_data` TEXT(255)  COMMENT \'数据权限\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序-数值越大越靠前\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`status` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'role_id' => 2,
+    'self' => 3,
+    'col_select' => 4,
+    'col_insert' => 5,
+    'col_update' => 6,
+    'oper' => 7,
+    'auth' => 8,
+    'top' => 9,
+    'auth_data' => 10,
+    'reorder' => 11,
+    'state' => 12,
+    'status' => 13,
+    'cdate' => 14,
+    'hr0_no_col' => 15,
+    'hr1_no_col' => 16,
+  ),
+  'insert' => 'INSERT INTO `news_manage_role` (name,oper,auth,role_id,col_update,col_insert,col_select,state,cdate) VALUES ("系统管理员","1,2,3,4,5","all",-1,"admin","admin","admin",1,1640331774),("普通管理员","1,2,3,4,5","",-1,"admin","admin","admin",1,1640331774)',
+);

+ 19 - 0
data/database/news/news_push_col.php

@@ -0,0 +1,19 @@
+<?php return array (
+  'time' => 1640351717,
+  'table' => 'news_push_col',
+  'create' => 'DROP TABLE IF EXISTS `news_push_col`;CREATE TABLE `news_push_col`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'字段名称\',`ename` VARCHAR(32) NULL COMMENT \'字段英文名称-用于前台使用\',`desc` VARCHAR(200) NULL COMMENT \'字段描述\',`type` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'类型\',`pic` VARCHAR(20) NULL COMMENT \'图片尺寸提醒-请直接输入尺寸,如100*100\',`option` VARCHAR(1000) NULL COMMENT \'可选项-每行一个选项,多个直接换行\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'ename' => 2,
+    'desc' => 3,
+    'type' => 4,
+    'pic' => 5,
+    'option' => 6,
+    'reorder' => 7,
+    'state' => 8,
+    'cdate' => 9,
+  ),
+  'insert' => 'INSERT INTO `news_push_col` (`name`,`ename`,`desc`,`type`,`state`,`cdate`) VALUES ("标题","name","标题",1, 1,1640351717),("图片","pic","图片",4, 1,1640351717),("链接","link","链接",1, 1,1640351717)',
+);

+ 16 - 0
data/database/news/news_push_data.php

@@ -0,0 +1,16 @@
+<?php return array (
+  'time' => 1640351717,
+  'table' => 'news_push_data',
+  'create' => 'DROP TABLE IF EXISTS `news_push_data`;CREATE TABLE `news_push_data`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`info_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'所属推送位\',`type` INT(11) NOT NULL DEFAULT \'-1\' COMMENT \'功能类型\',`type_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'关联数据\',`data` TEXT(1000)  COMMENT \'自定义数据项\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'info_id' => 1,
+    'type' => 2,
+    'type_id' => 3,
+    'data' => 4,
+    'reorder' => 5,
+    'state' => 6,
+    'cdate' => 7,
+  ),
+);

+ 16 - 0
data/database/news/news_push_func.php

@@ -0,0 +1,16 @@
+<?php return array (
+  'time' => 1640331798,
+  'table' => 'news_push_func',
+  'create' => 'DROP TABLE IF EXISTS `news_push_func`;CREATE TABLE `news_push_func`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'功能名称\',`type` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'功能类型\',`api` VARCHAR(200) NULL COMMENT \'功能定义-如果是接口类型,这里可以直接输入HTTP接口地址,也可以使用DEVER接口,如果接口返回一条数据,就为单条,如果是多条,就是列表;如果是特殊类型,直接输入类型的值即可\',`col` TEXT(1000)  COMMENT \'关联字段\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'type' => 2,
+    'api' => 3,
+    'col' => 4,
+    'reorder' => 5,
+    'state' => 6,
+    'cdate' => 7,
+  ),
+);

+ 18 - 0
data/database/news/news_push_info.php

@@ -0,0 +1,18 @@
+<?php return array (
+  'time' => 1640331798,
+  'table' => 'news_push_info',
+  'create' => 'DROP TABLE IF EXISTS `news_push_info`;CREATE TABLE `news_push_info`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'推送位ID\',`name` VARCHAR(60) NULL COMMENT \'推送位标题\',`key` VARCHAR(60) NULL COMMENT \'推送位标识\',`num` INT(11) NOT NULL DEFAULT \'10\' COMMENT \'数据显示条数-为空或小于0则取默认值10,只对前台有效,当有分页时,则为每页显示的条数\',`func` VARCHAR(300) NULL COMMENT \'功能类型\',`col` VARCHAR(300) NULL COMMENT \'启用的字段\',`col_pic` VARCHAR(500) NULL COMMENT \'图片尺寸提醒-请直接输入提醒的文字即可,如100*100,如果有多个图片字段,请用换行隔开\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'key' => 2,
+    'num' => 3,
+    'func' => 4,
+    'col' => 5,
+    'col_pic' => 6,
+    'reorder' => 7,
+    'state' => 8,
+    'cdate' => 9,
+  ),
+);

+ 16 - 0
data/database/news/news_tag_info.php

@@ -0,0 +1,16 @@
+<?php return array (
+  'time' => 1640351717,
+  'table' => 'news_tag_info',
+  'create' => 'DROP TABLE IF EXISTS `news_tag_info`;CREATE TABLE `news_tag_info`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(150) NULL COMMENT \'标签名称\',`color` VARCHAR(10) NULL COMMENT \'颜色-请填写颜色代码\',`icon` VARCHAR(150) NULL COMMENT \'图标\',`cate_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'选择分类\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'color' => 2,
+    'icon' => 3,
+    'cate_id' => 4,
+    'reorder' => 5,
+    'state' => 6,
+    'cdate' => 7,
+  ),
+);

+ 13 - 0
data/database/news/news_upload_cate.php

@@ -0,0 +1,13 @@
+<?php return array (
+  'time' => 1640332404,
+  'table' => 'news_upload_cate',
+  'create' => 'DROP TABLE IF EXISTS `news_upload_cate`;CREATE TABLE `news_upload_cate`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(300) NULL COMMENT \'分类名称\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'创建时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'state' => 2,
+    'cdate' => 3,
+  ),
+  'insert' => 'INSERT INTO `news_upload_cate` (name,state,cdate) VALUES ("默认分类",1,1640332404),("裁剪图片",1,1640332404)',
+);

+ 34 - 0
data/database/news/news_upload_file.php

@@ -0,0 +1,34 @@
+<?php return array (
+  'time' => 1640332402,
+  'table' => 'news_upload_file',
+  'create' => 'DROP TABLE IF EXISTS `news_upload_file`;CREATE TABLE `news_upload_file`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'文件名\',`source_name` VARCHAR(200) NULL COMMENT \'原文件名\',`upload` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'所属资源配置\',`cate` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'所属分类\',`key` VARCHAR(32) NULL COMMENT \'KEY\',`search` VARCHAR(100) NULL COMMENT \'SEARCH\',`value` VARCHAR(800) NULL COMMENT \'附加值\',`ext` VARCHAR(24) NULL COMMENT \'后缀名\',`file` VARCHAR(150) NULL COMMENT \'访问路径\',`yunfile` VARCHAR(150) NULL COMMENT \'云端访问路径\',`pic` VARCHAR(150) NULL COMMENT \'封面图-一般为视频截图\',`pic_num` INT(11) NOT NULL DEFAULT 0 COMMENT \'视频截图的秒数\',`width` INT(11) NOT NULL DEFAULT 0 COMMENT \'宽度\',`height` INT(11) NOT NULL DEFAULT 0 COMMENT \'高度\',`size` INT(11) NOT NULL DEFAULT 0 COMMENT \'大小\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'上传时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'source_name' => 2,
+    'upload' => 3,
+    'cate' => 4,
+    'key' => 5,
+    'search' => 6,
+    'value' => 7,
+    'ext' => 8,
+    'file' => 9,
+    'yunfile' => 10,
+    'pic' => 11,
+    'pic_num' => 12,
+    'width' => 13,
+    'height' => 14,
+    'size' => 15,
+    'state' => 16,
+    'cdate' => 17,
+  ),
+  'alter' => 3,
+  'index' => 4,
+  'order' => 
+  array (
+    '`key`' => 0,
+    'cate' => 1,
+    'search' => 2,
+  ),
+);

+ 25 - 0
data/database/news/news_upload_upload.php

@@ -0,0 +1,25 @@
+<?php return array (
+  'time' => 1640331926,
+  'table' => 'news_upload_upload',
+  'create' => 'DROP TABLE IF EXISTS `news_upload_upload`;CREATE TABLE `news_upload_upload`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'配置ID\',`name` VARCHAR(24) NULL COMMENT \'配置名\',`setwh` INT(1) NOT NULL DEFAULT \'1\' COMMENT \'宽高限制-仅限图片类资源\',`width` INT(11) NOT NULL DEFAULT 0 COMMENT \'最小宽度-仅限图片类资源,设置后上传如果小于该数值,则不能上传成功\',`height` INT(11) NOT NULL DEFAULT 0 COMMENT \'最小高度-仅限图片类资源,设置后上传如果小于该数值,则不能上传成功\',`size` INT(11) NOT NULL DEFAULT \'2\' COMMENT \'限制大小(单位:M)\',`type` VARCHAR(800) NULL COMMENT \'限制文件后缀类型-多个用逗号隔开\',`alter` VARCHAR(255) NULL COMMENT \'默认的后续操作-T=1&C=1&W=1,其中T代表缩略图,1代表对应的ID,C代表裁剪图,W代表水印图,仅限图片类资源\',`cover` INT(1) NOT NULL DEFAULT \'1\' COMMENT \'是否覆盖-将根据上传时的文件名进行文件覆盖操作\',`save_type` INT(1) NOT NULL DEFAULT \'1\' COMMENT \'存储位置-如需进行后续操作,云端不支持,则需要本地处理、云端存储,建议选择云端存储为主,本地存储为辅\',`yun` INT(1) NOT NULL DEFAULT \'1\' COMMENT \'选择云端\',`bucket` VARCHAR(800) NULL COMMENT \'BUCKET名称\',`vod_convert` INT(1) NOT NULL DEFAULT \'1\' COMMENT \'是否进行视频转码\',`pipeline` VARCHAR(800) NULL COMMENT \'队列名称-多个用逗号隔开,将随机使用队列\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'setwh' => 2,
+    'width' => 3,
+    'height' => 4,
+    'size' => 5,
+    'type' => 6,
+    'alter' => 7,
+    'cover' => 8,
+    'save_type' => 9,
+    'yun' => 10,
+    'bucket' => 11,
+    'vod_convert' => 12,
+    'pipeline' => 13,
+    'state' => 14,
+    'cdate' => 15,
+  ),
+  'insert' => 'INSERT INTO `news_upload_upload` (name,cover,type,size,state,cdate) VALUES ("默认图片配置",1,"jpg,png,gif,webp",2,1,1640331926),("默认音频配置",1,"mp3,m4a",20,1,1640331926),("默认视频配置",1,"video,flv,mp4,webm",200,1,1640331926),("默认文件配置",1,"jpg,png,gif,doc,pdf,rar,zip,xls,xlsx,docx,msi",20,1,1640331926),("默认音视频配置",1,"video,mp3,flv,mp4,webm,mov,m4a",200,1,1640331926),("用户上传图片",1,"jpg,png,gif,webp",2,1,1640331926),("裁剪图片",1,"jpg,png,gif,webp",2,1,1640331926)',
+);

+ 20 - 0
data/database/news/news_upload_yun.php

@@ -0,0 +1,20 @@
+<?php return array (
+  'time' => 1640331846,
+  'table' => 'news_upload_yun',
+  'create' => 'DROP TABLE IF EXISTS `news_upload_yun`;CREATE TABLE `news_upload_yun`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'配置ID\',`name` VARCHAR(24) NULL COMMENT \'配置名\',`type` INT(1) NOT NULL DEFAULT \'2\' COMMENT \'存储类别-OSS建议申请STS保证安全性,参考HTTPS://HELP.ALIYUN.COM/DOCUMENT_DETAIL/100624.HTML\',`host` VARCHAR(800) NULL COMMENT \'域名\',`appkey` VARCHAR(100) NULL COMMENT \'APPKEY\',`appsecret` VARCHAR(200) NULL COMMENT \'APPSECRET\',`region_id` VARCHAR(200) NULL COMMENT \'区域ID-OSS直接填REGIONID即可,如BEIJING,七牛可填写Z1\',`role_arn` VARCHAR(200) NULL COMMENT \'权限策略ARN-OSS需要填写,如未填写,系统默认使用非STS形式上传至OSS,不能保证安全性\',`token` VARCHAR(800) NULL COMMENT \'TOKEN\',`token_endtime` INT(11) NOT NULL DEFAULT 0 COMMENT \'TOKEN失效时间\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'type' => 2,
+    'host' => 3,
+    'appkey' => 4,
+    'appsecret' => 5,
+    'region_id' => 6,
+    'role_arn' => 7,
+    'token' => 8,
+    'token_endtime' => 9,
+    'state' => 10,
+    'cdate' => 11,
+  ),
+);

+ 66 - 0
data/project/news.php

@@ -0,0 +1,66 @@
+<?php $project = array (
+  'manage' => 
+  array (
+    'name' => 'manage',
+    'path' => '/share/lib/php/dever_package/manage/',
+    'url' => 'http://news.shemic.com/package/manage/',
+    'lang' => '后台设置',
+    'order' => -100,
+    'icon' => 'glyphicon glyphicon-wrench layui-icon-set-sm',
+    'entry' => 'index.php',
+    'setup' => '/www/news/package/manage/',
+  ),
+  'content' => 
+  array (
+    'name' => 'content',
+    'path' => '/www/news/app/content/',
+    'url' => 'https://news.shemic.com/app/content/',
+    'lang' => '内容管理',
+    'order' => 200,
+    'icon' => 'glyphicon glyphicon-tower layui-icon-tabs',
+    'entry' => 'index.php',
+  ),
+  'upload' => 
+  array (
+    'name' => 'upload',
+    'path' => '/share/lib/php/dever_package/upload/',
+    'url' => 'https://news.shemic.com/package/upload/',
+    'lang' => '资源库',
+    'order' => -90,
+    'icon' => 'glyphicon glyphicon-upload layui-icon-picture',
+    'entry' => 'index.php',
+    'setup' => '/www/news/package/upload/',
+  ),
+  'tag' => 
+  array (
+    'name' => 'tag',
+    'path' => '/share/lib/php/dever_package/tag/',
+    'url' => 'https://news.shemic.com/package/tag/',
+    'lang' => '标签管理',
+    'order' => 9,
+    'icon' => 'glyphicon glyphicon-tags layui-icon-note',
+    'entry' => 'index.php',
+    'setup' => '/www/news/package/tag/',
+  ),
+  'push' => 
+  array (
+    'name' => 'push',
+    'path' => '/share/lib/php/dever_package/push/',
+    'url' => 'https://news.shemic.com/package/push/',
+    'lang' => '推送管理',
+    'order' => 199,
+    'icon' => 'glyphicon glyphicon-tower layui-icon-template-1',
+    'entry' => 'index.php',
+    'setup' => '/www/news/package/push/',
+  ),
+  'main' => 
+  array (
+    'name' => 'main',
+    'path' => '/www/news/main/',
+    'url' => 'https://news.shemic.com/',
+    'lang' => '基础设置',
+    'order' => 98,
+    'icon' => 'glyphicon glyphicon-tower layui-icon-component',
+    'entry' => 'index.php',
+  ),
+);

+ 1 - 0
data/readme

@@ -0,0 +1 @@
+dever create

+ 156 - 0
data/upload.php

@@ -0,0 +1,156 @@
+<?php return array (
+  'upload' => 
+  array (
+    7 => 
+    array (
+      'id' => '7',
+      'name' => '裁剪图片',
+      'setwh' => '1',
+      'width' => '0',
+      'height' => '0',
+      'size' => '2',
+      'type' => 'jpg,png,gif,webp',
+      'alter' => NULL,
+      'cover' => '1',
+      'save_type' => '1',
+      'yun' => '1',
+      'bucket' => NULL,
+      'vod_convert' => '1',
+      'pipeline' => NULL,
+      'state' => '1',
+      'cdate' => '1640331926',
+    ),
+    6 => 
+    array (
+      'id' => '6',
+      'name' => '用户上传图片',
+      'setwh' => '1',
+      'width' => '0',
+      'height' => '0',
+      'size' => '2',
+      'type' => 'jpg,png,gif,webp',
+      'alter' => '',
+      'cover' => '1',
+      'save_type' => '4',
+      'yun' => '1',
+      'bucket' => 'shemic-news',
+      'vod_convert' => '1',
+      'pipeline' => NULL,
+      'state' => '1',
+      'cdate' => '1640331926',
+    ),
+    5 => 
+    array (
+      'id' => '5',
+      'name' => '默认音视频配置',
+      'setwh' => '1',
+      'width' => '0',
+      'height' => '0',
+      'size' => '200',
+      'type' => 'video,mp3,flv,mp4,webm,mov,m4a',
+      'alter' => '',
+      'cover' => '1',
+      'save_type' => '4',
+      'yun' => '1',
+      'bucket' => 'shemic-news',
+      'vod_convert' => '1',
+      'pipeline' => NULL,
+      'state' => '1',
+      'cdate' => '1640331926',
+    ),
+    4 => 
+    array (
+      'id' => '4',
+      'name' => '默认文件配置',
+      'setwh' => '1',
+      'width' => '0',
+      'height' => '0',
+      'size' => '20',
+      'type' => 'jpg,png,gif,doc,pdf,rar,zip,xls,xlsx,docx,msi',
+      'alter' => NULL,
+      'cover' => '1',
+      'save_type' => '1',
+      'yun' => '1',
+      'bucket' => NULL,
+      'vod_convert' => '1',
+      'pipeline' => NULL,
+      'state' => '1',
+      'cdate' => '1640331926',
+    ),
+    3 => 
+    array (
+      'id' => '3',
+      'name' => '默认视频配置',
+      'setwh' => '1',
+      'width' => '0',
+      'height' => '0',
+      'size' => '200',
+      'type' => 'video,flv,mp4,webm',
+      'alter' => '',
+      'cover' => '1',
+      'save_type' => '4',
+      'yun' => '1',
+      'bucket' => 'shemic-news',
+      'vod_convert' => '1',
+      'pipeline' => NULL,
+      'state' => '1',
+      'cdate' => '1640331926',
+    ),
+    2 => 
+    array (
+      'id' => '2',
+      'name' => '默认音频配置',
+      'setwh' => '1',
+      'width' => '0',
+      'height' => '0',
+      'size' => '20',
+      'type' => 'mp3,m4a',
+      'alter' => '',
+      'cover' => '1',
+      'save_type' => '4',
+      'yun' => '1',
+      'bucket' => 'shemic-news',
+      'vod_convert' => '1',
+      'pipeline' => NULL,
+      'state' => '1',
+      'cdate' => '1640331926',
+    ),
+    1 => 
+    array (
+      'id' => '1',
+      'name' => '默认图片配置',
+      'setwh' => '1',
+      'width' => '0',
+      'height' => '0',
+      'size' => '20',
+      'type' => 'jpg,png,gif,webp',
+      'alter' => '',
+      'cover' => '1',
+      'save_type' => '4',
+      'yun' => '1',
+      'bucket' => 'shemic-news',
+      'vod_convert' => '1',
+      'pipeline' => NULL,
+      'state' => '1',
+      'cdate' => '1640331926',
+    ),
+  ),
+  'yun' => 
+  array (
+    1 => 
+    array (
+      'id' => '1',
+      'name' => '七牛云',
+      'type' => '2',
+      'host' => 'https://n7.shemic.com/',
+      'appkey' => 'oNZYG9l9rigyE-cG9ynnKjfCt0NwcdhYZQMFDr0h',
+      'appsecret' => 'xQDu5lcpi4lMyj2IlfyZ079PagcJg82rLBOt0cYh',
+      'region_id' => 'z1',
+      'role_arn' => '',
+      'token' => 'oNZYG9l9rigyE-cG9ynnKjfCt0NwcdhYZQMFDr0h:zBr7y8iaiLn384i4EC-7ldbFTRE=:eyJzY29wZSI6InNoZW1pYy1uZXdzOjFcLzIwMjJcLzA5XC8yN1wvYzMwZmRiOWVjZmMxYTkzMmFhZmNmNTlkNzM5N2JkMWYuanBnIiwiZGVhZGxpbmUiOjE2NjQyNzQ1OTB9',
+      'token_endtime' => '1664274530',
+      'state' => '1',
+      'cdate' => '1640331926',
+    ),
+  ),
+);

BIN
favicon.ico


+ 2 - 0
index.php

@@ -0,0 +1,2 @@
+<?php
+include('main/index.php');

+ 126 - 0
main/assets/default/about.html

@@ -0,0 +1,126 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>《初见》响应式个人博客模板</title>
+<meta name="keywords" content="个人博客,个人网站,个人博客模板,个人网站模板" />
+<meta name="description" content="《初见》响应式个人博客模板是由前端设计师杨青青(www.qingqingblog.com)于2021年5月份设计完成的,模板主要展示个人博客、相册、视频、介绍等功能。" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<link href="css/base.css" rel="stylesheet">
+<link href="css/m.css" rel="stylesheet">
+<script src="js/jquery-3.6.0.min.js" ></script>
+<script src="js/comm.js"></script>
+</head>
+<body>
+<header>
+  <div class="box">
+    <div class="logo"><a href="/"><img src="images/logo.png" alt="logo"></a></div>
+    <div class="ad_top"><a href="/"><img src="images/ad01.jpg" alt="广告"></a></div>
+    <div class="contact_icon">
+      <ul>
+        <li><a href="http://wpa.qq.com/msgrd?v=3&uin=476847113&site=qq&menu=yes"><i class="icon_qq"></i></a></li>
+        <li><a href="tel:186491309**"><i class="icon_tel"></i></a></li>
+        <li><a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=476847113@qq.com" target="_blank"><i class="icon_email"></i></a></li>
+        <li><i class="icon_weixin"><img src="images/wx.png" alt="微信号:476847113"></i></li>
+      </ul>
+    </div>
+    <div class="clear"></div>
+    <nav>
+      <ul id="starlist">
+        <li><a href="index.html">网站首页</a></li>
+        <li><a href="blog.html">博文日记</a></li>
+        <li class="menu"><a href="#">所有内容</a>
+          <ul class="sub">
+            <li><a href="blog_info.html">文章内容</a></li>
+            <li><a href="photos_info.html">相册内容</a></li>
+            <li><a href="videos_info.html">视频内容</a></li>
+            <li><a href="page_info.html">单页内容</a></li>
+          </ul>
+          <span></span></li>
+        <li><a href="photos.html">我的相册<i></i></a></li>
+        <li><a href="videos.html">我的视频</a></li>
+        <li><a href="about.html">个人简历</a></li>
+      </ul>
+      <h2 id="mnavh"><span class="navicon"></span></h2>
+      <div class="is-search"> <i></i> </div>
+      <div class="search-page">
+        <div class="search_box">
+          <div class="go-left"></div>
+          <div class="search">
+            <form action="http://zhuanti.ip3q.com/e/search/index.php" method="post" name="searchform" id="searchform">
+              <input name="keyboard" id="keyboard" class="input_text" value="请输入关键字词" style="color: rgb(153, 153, 153);" onfocus="if(value=='请输入关键字词'){this.style.color='#000';value=''}" onblur="if(value==''){this.style.color='#999';value='请输入关键字词'}" type="text">
+              <input name="show" value="title" type="hidden">
+              <input name="tempid" value="1" type="hidden">
+              <input name="tbname" value="news" type="hidden">
+              <input name="Submit" class="input_submit" value="搜索" type="submit">
+            </form>
+          </div>
+        </div>
+      </div>
+      <!--search end--> 
+    </nav>
+  </div>
+</header>
+<div class="ph_margin"></div>
+<div class="box">
+  <div class="resume">
+    <div class="resume_left">
+      <section> <i><img src="images/resume.png" alt="头像"></i>
+        <h2>李晓红</h2>
+        <p>产品经理</p>
+        <div><span>抗压能力强</span><span>组织领导力</span><span>有执行力</span><span>耐心细心</span></div></section>
+      <ul class="resume_con">
+        <li class="re_xl">大学本科</li>
+        <li class="re_rq">1994年8月16日</li>
+        <li class="re_tell">19666668888</li>
+        <li class="re_email">dancesmiling@qq.com</li>
+        <li class="re_add">天津市滨海新区</li>
+      </ul>
+      <h3>技能特长</h3>
+      <ul class="resume_tec">
+        <li class="tec80">python<span></span></li>
+        <li class="tec70">视频剪辑<span></span></li>
+        <li class="tec60">图片处理<span></span></li>
+      </ul>
+    </div>
+    <div class="resume_right">
+      <h2>教育背景</h2>
+      <p><span style="color:#808080;">武汉理工大学 / 2013.9&mdash;2017.6</span></p>
+      <p>软件工程、算法设计与分析、软件管理、概率论与数理统计、线性代数、物理实验、编译原理</p>
+      <p>精通C/C++、Java、PHP,强烈的上进心和求知欲,较强的学习能力和沟通能力,具备良好的团队合作精神,熟练把握lamp,有大访问量web应用访问或数据库建设经验</p>
+      <h2>工作经历</h2>
+      <p><strong>会计师</strong></p>
+      <p><span style="color:#808080;">天津虹信有限公司 开发工程师助理 / 2016.7&mdash;2017.6</span></p>
+      <ul>
+        <li>参与系统的需求调研和需求分析,撰写相关技术文档;</li>
+        <li>参与软件开发,确保负责模块的质量,代码和文档符合规范要求;</li>
+        <li>根据项目经理的安排,按时完成指定软件模块的设计、开发、测试等过程。</li>
+      </ul>
+      <p><strong>java工程师</strong></p>
+      <p><span style="color:#808080;">上海幻电信息科技有限公司 工程师 / 2017.4&mdash;2019.6</span></p>
+      <p>运用Java这种开发语言去完成软件产品的软件程序设计、开发、测试、维护升级</p>
+      <h2>自我评价</h2>
+      <p>在本科期间我不仅能够保持成绩在年级前5%,GPA3.5以上,还积极参与学校组织的各项活动和社团活动,我负责运营的AKB英语社最高可达2万的阅读量,我是一个极具领导才能和责任心的人,能够迅速和同学们打成一片。</p>
+    </div>
+  </div>
+</div>
+<footer>
+  <div class="box">
+    <ul class="footer_nav">
+      <li><a href="/" target="_blank">网站地图</a></li>
+      <li><a href="all_list.html" target="_blank">所有文章</a></li>
+      <li><a href="tags.html" target="_blank">标签合集</a></li>
+      <li><a href="/" target="_blank">访问统计</a></li>
+    </ul>
+    <div class="guanzhu_img"><i><img src="images/wx.png" alt="微信:4768447113">微信号</i> <i><img src="images/wxgzh.jpg" alt="微信:4768447113">微信公众号</i></div>
+    <div class="copyright">
+      <p>杨青青个人博客网站 版权所有 </p>
+      <p>Copyright © <a href="https://www.qingqingblog.com/" target="_blank">www.qingqingblog.com</a> All Rights Reserved.</p>
+      <p>备案号:<a href="http://www.beian.miit.gov.cn/" target="_blank">津ICP备20005778号-1</a><i class="ga"><img src="images/ga.png" alt="公安备案号"></i>津公网安备 12011602000448 号</p>
+    </div>
+  </div>
+</footer>
+<a href="#" title="返回顶部" class="icon-top"></a>
+</body>
+</html>
+

+ 226 - 0
main/assets/default/all_list.html

@@ -0,0 +1,226 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>《初见》响应式个人博客模板</title>
+<meta name="keywords" content="个人博客,个人网站,个人博客模板,个人网站模板" />
+<meta name="description" content="《初见》响应式个人博客模板是由前端设计师杨青青(www.qingqingblog.com)于2021年5月份设计完成的,模板主要展示个人博客、相册、视频、介绍等功能。" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<link href="css/base.css" rel="stylesheet">
+<link href="css/m.css" rel="stylesheet">
+<script src="js/jquery-3.6.0.min.js" ></script>
+<script src="js/comm.js"></script>
+</head>
+<body>
+<header>
+  <div class="box">
+    <div class="logo"><a href="/"><img src="images/logo.png" alt="logo"></a></div>
+    <div class="ad_top"><a href="/"><img src="images/ad01.jpg" alt="广告"></a></div>
+    <div class="contact_icon">
+      <ul>
+        <li><a href="http://wpa.qq.com/msgrd?v=3&uin=476847113&site=qq&menu=yes"><i class="icon_qq"></i></a></li>
+        <li><a href="tel:186491309**"><i class="icon_tel"></i></a></li>
+        <li><a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=476847113@qq.com" target="_blank"><i class="icon_email"></i></a></li>
+        <li><i class="icon_weixin"><img src="images/wx.png" alt="微信号:476847113"></i></li>
+      </ul>
+    </div>
+    <div class="clear"></div>
+    <nav>
+      <ul id="starlist">
+        <li><a href="index.html">网站首页</a></li>
+        <li><a href="blog.html">博文日记</a></li>
+        <li class="menu"><a href="#">所有内容</a>
+          <ul class="sub">
+            <li><a href="blog_info.html">文章内容</a></li>
+            <li><a href="photos_info.html">相册内容</a></li>
+            <li><a href="videos_info.html">视频内容</a></li>
+            <li><a href="page_info.html">单页内容</a></li>
+          </ul>
+          <span></span></li>
+        <li><a href="photos.html">我的相册<i></i></a></li>
+        <li><a href="videos.html">我的视频</a></li>
+        <li><a href="about.html">个人简历</a></li>
+      </ul><h2 id="mnavh"><span class="navicon"></span></h2>
+      <div class="is-search"> <i></i> </div>
+      <div class="search-page">
+        <div class="search_box">
+          <div class="go-left"></div>
+          <div class="search">
+            <form action="http://zhuanti.ip3q.com/e/search/index.php" method="post" name="searchform" id="searchform">
+              <input name="keyboard" id="keyboard" class="input_text" value="请输入关键字词" style="color: rgb(153, 153, 153);" onfocus="if(value=='请输入关键字词'){this.style.color='#000';value=''}" onblur="if(value==''){this.style.color='#999';value='请输入关键字词'}" type="text">
+              <input name="show" value="title" type="hidden">
+              <input name="tempid" value="1" type="hidden">
+              <input name="tbname" value="news" type="hidden">
+              <input name="Submit" class="input_submit" value="搜索" type="submit">
+            </form>
+          </div>
+        </div>
+      </div>
+      <!--search end--> 
+    </nav>
+  </div>
+</header>
+<div class="ph_margin"></div>
+<div class="box">
+  <div class="all_news_list">
+    <div class="weizhi">您当前的位置:<a href="">首页</a>&nbsp;&gt;&nbsp;<a href="/">博文日记</a></div>
+    <ul>
+      <li><span>2021-05-18</span><a href="/" target="_blank">在贝加尔湖独居的80岁奶奶,过得像艾尔莎公主</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">每一只鸟活着都是奇迹</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">2000名未来人,假装生活在2050年</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">我们为何如此爱看明星八卦</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">至尊宝与孙悟空</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">年少时不能遇见太惊艳的人</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">忆青春,最忆是彪哥</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">冻在冰雕里的鱼,“营救”出来还能活吗</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">藐视人类“中心法则”的章鱼</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">没有冬笋的冬天是不完整的</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">你第一眼看到图中什么?测出你身上独特的人格魅力</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">明朝最会玩的男人:啃老30年,却被误会400年</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">寄人篱下的三个灵魂</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">李清照:我那不叫骄傲,我就是狂</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">太空垃圾:垃圾桶迟早倒扣在你的头上</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">在贝加尔湖独居的80岁奶奶,过得像艾尔莎公主</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">每一只鸟活着都是奇迹</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">2000名未来人,假装生活在2050年</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">我们为何如此爱看明星八卦</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">至尊宝与孙悟空</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">年少时不能遇见太惊艳的人</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">忆青春,最忆是彪哥</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">冻在冰雕里的鱼,“营救”出来还能活吗</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">藐视人类“中心法则”的章鱼</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">没有冬笋的冬天是不完整的</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">你第一眼看到图中什么?测出你身上独特的人格魅力</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">明朝最会玩的男人:啃老30年,却被误会400年</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">寄人篱下的三个灵魂</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">李清照:我那不叫骄傲,我就是狂</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">太空垃圾:垃圾桶迟早倒扣在你的头上</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">在贝加尔湖独居的80岁奶奶,过得像艾尔莎公主</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">每一只鸟活着都是奇迹</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">2000名未来人,假装生活在2050年</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">我们为何如此爱看明星八卦</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">至尊宝与孙悟空</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">年少时不能遇见太惊艳的人</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">忆青春,最忆是彪哥</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">冻在冰雕里的鱼,“营救”出来还能活吗</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">藐视人类“中心法则”的章鱼</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">没有冬笋的冬天是不完整的</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">你第一眼看到图中什么?测出你身上独特的人格魅力</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">明朝最会玩的男人:啃老30年,却被误会400年</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">寄人篱下的三个灵魂</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">李清照:我那不叫骄傲,我就是狂</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">太空垃圾:垃圾桶迟早倒扣在你的头上</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">在贝加尔湖独居的80岁奶奶,过得像艾尔莎公主</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">每一只鸟活着都是奇迹</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">2000名未来人,假装生活在2050年</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">我们为何如此爱看明星八卦</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">至尊宝与孙悟空</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">年少时不能遇见太惊艳的人</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">忆青春,最忆是彪哥</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">冻在冰雕里的鱼,“营救”出来还能活吗</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">藐视人类“中心法则”的章鱼</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">没有冬笋的冬天是不完整的</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">你第一眼看到图中什么?测出你身上独特的人格魅力</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">明朝最会玩的男人:啃老30年,却被误会400年</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">寄人篱下的三个灵魂</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">李清照:我那不叫骄傲,我就是狂</a></li>
+      <li><span>2021-05-18</span><a href="/" target="_blank">太空垃圾:垃圾桶迟早倒扣在你的头上</a></li>
+    </ul>
+    <div class="epages"><a title="Total record">&nbsp;<b>92</b> </a>&nbsp;&nbsp;&nbsp;<b>1</b>&nbsp;<a href="/">2</a>&nbsp;<a href="/">3</a>&nbsp;<a href="/">4</a>&nbsp;<a href="/">下一页</a>&nbsp;<a href="/">尾页</a></div>
+  </div>
+  <aside class="rbox">
+    <div class="isgood_news">
+      <h2 class="h_title">站长推荐</h2>
+      <ul>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news02.jpg" alt=""></i><em>1</em>
+          <p>一个32岁程序员的倔强——十年程序人生</p>
+          <span class="star5"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news03.jpg" alt=""></i><em>2</em>
+          <p>我是个女程序员,反正我就是来活跃气氛的</p>
+          <span class="star4"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news04.jpg" alt=""></i><em>3</em>
+          <p>安静地做一个爱设计的女子</p>
+          <span class="star4"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news05.jpg" alt=""></i><em>4</em>
+          <p>个人博客,属于我的小世界!</p>
+          <span class="star3"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news02.jpg" alt=""></i><em>5</em>
+          <p>一个32岁程序员的倔强——十年程序人生</p>
+          <span class="star2"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news05.jpg" alt=""></i><em>6</em>
+          <p>个人博客,属于我的小世界!</p>
+          <span class="star2"></span> </a></li>
+      </ul>
+    </div>
+    <div class="ad_r"><a href="/"><img src="images/ads.png" alt="广告图"></a></div>
+    <div class="hot_news">
+      <h2 class="h_title">人气点击</h2>
+      <ol start="1">
+        <li><a href="/" title="" target="_blank">
+          <p>个人博客,属于我的小世界!</p>
+          </a><span>900</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>我仅仅是一个“草根站长”</p>
+          </a><span>798</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>世界上根本没有感同身受这回事</p>
+          </a><span>765</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>兴趣支撑梦想,兴趣是支撑我自己前行的动力</p>
+          </a><span>659</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>忙碌是自由活着的一种底气</p>
+          </a><span>640</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>从互联网消失的那3年,都去哪儿了?</p>
+          </a><span>503</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>7年,一个80后女站长与阿里云携手创业的真实故事</p>
+          </a><span>500</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>【告别2018】耕耘才有所得,付出才有收获</p>
+          </a><span>469</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>网易博客关闭,何不从此开始潇洒行走江湖!</p>
+          </a><span>398</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>从互联网消失的那3年,都去哪儿了?</p>
+          </a><span>503</span></li>
+      </ol>
+    </div>
+    <div class="ad_r"><a href="/"><img src="images/ads2.png" alt="广告图"></a></div>
+    <div class="tagsclous">
+      <h2 class="h_title">标签云</h2>
+      <ul>
+        <a href="/" target="_blank">女程序员</a> <a href="/" target="_blank">互联网</a> <a href="/" target="_blank">自由</a> <a href="/" target="_blank">底气</a> <a href="/" target="_blank">忙碌生活</a> <a href="/" target="_blank">建站流程</a> <a href="/" target="_blank">个人网站</a> <a href="/" target="_blank">建站初衷</a> <a href="/" target="_blank">个人博客</a> <a href="/" target="_blank">草根站长</a> <a href="/" target="_blank">618活动</a> <a href="/" target="_blank">心得</a> <a href="/" target="_blank">感受</a> <a href="/" target="_blank">直播</a> <a href="/" target="_blank">阿里云</a>
+      </ul>
+    </div>
+    <div class="emial_box">
+      <p>您可以通过以下方式联系我们</p>
+      <p><b>提议</b><b>投诉</b><b>合作</b>推荐此方式)</p>
+      <p>发送邮件Email到</p>
+      <p><a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=476847113@qq.com" target="_blank">dancesmiling@qq.com</a></p>
+    </div>
+  </aside>
+  <div class="clear"></div>
+</div>
+<footer>
+  <div class="box">
+    <ul class="footer_nav">
+      <li><a href="/" target="_blank">网站地图</a></li>
+      <li><a href="all_list.html" target="_blank">所有文章</a></li>
+      <li><a href="tags.html" target="_blank">标签合集</a></li>
+      <li><a href="/" target="_blank">访问统计</a></li>
+    </ul>
+    <div class="guanzhu_img"><i><img src="images/wx.png" alt="微信:4768447113">微信号</i> <i><img src="images/wxgzh.jpg" alt="微信:4768447113">微信公众号</i></div>
+    <div class="copyright">
+      <p>杨青青个人博客网站 版权所有 </p>
+      <p>Copyright © <a href="https://www.qingqingblog.com/" target="_blank">www.qingqingblog.com</a> All Rights Reserved.</p>
+      <p>备案号:<a href="http://www.beian.miit.gov.cn/" target="_blank">津ICP备20005778号-1</a><i class="ga"><img src="images/ga.png" alt="公安备案号"></i>津公网安备 12011602000448 号</p>
+    </div>
+  </div>
+</footer>
+<a href="#" title="返回顶部" class="icon-top"></a>
+</body>
+</html>
+

+ 237 - 0
main/assets/default/blog.html

@@ -0,0 +1,237 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>《初见》响应式个人博客模板</title>
+<meta name="keywords" content="个人博客,个人网站,个人博客模板,个人网站模板" />
+<meta name="description" content="《初见》响应式个人博客模板是由前端设计师杨青青(www.qingqingblog.com)于2021年5月份设计完成的,模板主要展示个人博客、相册、视频、介绍等功能。" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<link href="css/base.css" rel="stylesheet">
+<link href="css/m.css" rel="stylesheet">
+<script src="js/jquery-3.6.0.min.js" ></script>
+<script src="js/comm.js"></script>
+</head>
+<body>
+<header>
+  <div class="box">
+    <div class="logo"><a href="/"><img src="images/logo.png" alt="logo"></a></div>
+    <div class="ad_top"><a href="/"><img src="images/ad01.jpg" alt="广告"></a></div>
+    <div class="contact_icon">
+      <ul>
+        <li><a href="http://wpa.qq.com/msgrd?v=3&uin=476847113&site=qq&menu=yes"><i class="icon_qq"></i></a></li>
+        <li><a href="tel:186491309**"><i class="icon_tel"></i></a></li>
+        <li><a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=476847113@qq.com" target="_blank"><i class="icon_email"></i></a></li>
+        <li><i class="icon_weixin"><img src="images/wx.png" alt="微信号:476847113"></i></li>
+      </ul>
+    </div>
+    <div class="clear"></div>
+    <nav>
+      <ul id="starlist">
+        <li><a href="index.html">网站首页</a></li>
+        <li><a href="blog.html">博文日记</a></li>
+        <li class="menu"><a href="#">所有内容</a>
+          <ul class="sub">
+            <li><a href="blog_info.html">文章内容</a></li>
+            <li><a href="photos_info.html">相册内容</a></li>
+            <li><a href="videos_info.html">视频内容</a></li>
+            <li><a href="page_info.html">单页内容</a></li>
+          </ul>
+          <span></span></li>
+        <li><a href="photos.html">我的相册<i></i></a></li>
+        <li><a href="videos.html">我的视频</a></li>
+        <li><a href="about.html">个人简历</a></li>
+      </ul><h2 id="mnavh"><span class="navicon"></span></h2>
+      <div class="is-search"> <i></i> </div>
+      <div class="search-page">
+        <div class="search_box">
+          <div class="go-left"></div>
+          <div class="search">
+            <form action="http://zhuanti.ip3q.com/e/search/index.php" method="post" name="searchform" id="searchform">
+              <input name="keyboard" id="keyboard" class="input_text" value="请输入关键字词" style="color: rgb(153, 153, 153);" onfocus="if(value=='请输入关键字词'){this.style.color='#000';value=''}" onblur="if(value==''){this.style.color='#999';value='请输入关键字词'}" type="text">
+              <input name="show" value="title" type="hidden">
+              <input name="tempid" value="1" type="hidden">
+              <input name="tbname" value="news" type="hidden">
+              <input name="Submit" class="input_submit" value="搜索" type="submit">
+            </form>
+          </div>
+        </div>
+      </div>
+      <!--search end--> 
+    </nav>
+  </div>
+</header>
+<div class="ph_margin"></div>
+<div class="box">
+  <div class="blogs">
+    <div class="weizhi" style="display: none">您当前的位置:<a href="">首页</a>&nbsp;&gt;&nbsp;<a href="/">博文日记</a></div>
+    <ul>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news02.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>一个32岁程序员的倔强——十年程序人生</h2>
+        </a>
+        <p>创业+自由职业的时间差不多已经一年了,还好没饿死,而且应该还能坚持一两年或者更久吧。最近不少朋友推荐去工作:搞区块链的黄总想拉去开发公链、钢哥要推荐去“得到”、晋哥推荐到支付公司当技术总监。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-05-06</span><span class="blogs_onclick">956</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news03.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>我是个女程序员,反正我就是来活跃气氛的</h2>
+        </a>
+        <p>某网站上有人问:有什么借口让自己写出低质量的代码?一位匿名用户的回答获得高票:我是个女程序员,反正我就是来活跃气氛的。「优秀的女生写出来的程序比男生的更漂亮,世界上第一个程序员好像就是女的」</p>
+        <div class="blogs_base"><span class="blogs_time">2021-04-06</span><span class="blogs_onclick">731</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news04.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>安静地做一个爱设计的女子</h2>
+        </a>
+        <p>自从入了这行,很多人跟我说可以做网络教程,我也有考虑,但最终没有实现,因为我觉得在这个教程泛滥的时代,直接做一套免费的原创个人博客模板更为实在。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-03-26</span><span class="blogs_onclick">96</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news05.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>个人博客,属于我的小世界!</h2>
+        </a>
+        <p>个人博客,用来做什么?我刚开始就把它当做一个我吐槽心情的地方,也就相当于一个网络记事本,写上一些关于自己生活工作中的小情小事,也会放上一些照片,音乐。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-02-13</span><span class="blogs_onclick">921</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news02.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>一个32岁程序员的倔强——十年程序人生</h2>
+        </a>
+        <p>创业+自由职业的时间差不多已经一年了,还好没饿死,而且应该还能坚持一两年或者更久吧。最近不少朋友推荐去工作:搞区块链的黄总想拉去开发公链、钢哥要推荐去“得到”、晋哥推荐到支付公司当技术总监。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-05-06</span><span class="blogs_onclick">956</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news03.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>我是个女程序员,反正我就是来活跃气氛的</h2>
+        </a>
+        <p>某网站上有人问:有什么借口让自己写出低质量的代码?一位匿名用户的回答获得高票:我是个女程序员,反正我就是来活跃气氛的。「优秀的女生写出来的程序比男生的更漂亮,世界上第一个程序员好像就是女的」</p>
+        <div class="blogs_base"><span class="blogs_time">2021-04-06</span><span class="blogs_onclick">731</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news04.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>安静地做一个爱设计的女子</h2>
+        </a>
+        <p>自从入了这行,很多人跟我说可以做网络教程,我也有考虑,但最终没有实现,因为我觉得在这个教程泛滥的时代,直接做一套免费的原创个人博客模板更为实在。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-03-26</span><span class="blogs_onclick">96</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news05.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>个人博客,属于我的小世界!</h2>
+        </a>
+        <p>个人博客,用来做什么?我刚开始就把它当做一个我吐槽心情的地方,也就相当于一个网络记事本,写上一些关于自己生活工作中的小情小事,也会放上一些照片,音乐。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-02-13</span><span class="blogs_onclick">921</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news02.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>一个32岁程序员的倔强——十年程序人生</h2>
+        </a>
+        <p>创业+自由职业的时间差不多已经一年了,还好没饿死,而且应该还能坚持一两年或者更久吧。最近不少朋友推荐去工作:搞区块链的黄总想拉去开发公链、钢哥要推荐去“得到”、晋哥推荐到支付公司当技术总监。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-05-06</span><span class="blogs_onclick">956</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news03.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>我是个女程序员,反正我就是来活跃气氛的</h2>
+        </a>
+        <p>某网站上有人问:有什么借口让自己写出低质量的代码?一位匿名用户的回答获得高票:我是个女程序员,反正我就是来活跃气氛的。「优秀的女生写出来的程序比男生的更漂亮,世界上第一个程序员好像就是女的」</p>
+        <div class="blogs_base"><span class="blogs_time">2021-04-06</span><span class="blogs_onclick">731</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news04.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>安静地做一个爱设计的女子</h2>
+        </a>
+        <p>自从入了这行,很多人跟我说可以做网络教程,我也有考虑,但最终没有实现,因为我觉得在这个教程泛滥的时代,直接做一套免费的原创个人博客模板更为实在。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-03-26</span><span class="blogs_onclick">96</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+      <li class="blogs_list"> <a href="/" target="_blank"><i><img src="images/news05.jpg" alt="机械制造行业未来的前景"></i>
+        <h2>个人博客,属于我的小世界!</h2>
+        </a>
+        <p>个人博客,用来做什么?我刚开始就把它当做一个我吐槽心情的地方,也就相当于一个网络记事本,写上一些关于自己生活工作中的小情小事,也会放上一些照片,音乐。</p>
+        <div class="blogs_base"><span class="blogs_time">2021-02-13</span><span class="blogs_onclick">921</span></div>
+        <a href="/" target="_blank" class="read_more">阅读更多</a> </li>
+    </ul>
+    <div class="epages"><a title="Total record">&nbsp;<b>92</b> </a>&nbsp;&nbsp;&nbsp;<b>1</b>&nbsp;<a href="/">2</a>&nbsp;<a href="/">3</a>&nbsp;<a href="/">4</a>&nbsp;<a href="/">下一页</a>&nbsp;<a href="/">尾页</a></div>
+  </div>
+  <aside class="rbox">
+    <div class="isgood_news">
+      <h2 class="h_title">推荐阅读</h2>
+      <ul>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news02.jpg" alt=""></i><em>1</em>
+          <p>一个32岁程序员的倔强——十年程序人生</p>
+          <span class="star5"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news03.jpg" alt=""></i><em>2</em>
+          <p>我是个女程序员,反正我就是来活跃气氛的</p>
+          <span class="star4"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news04.jpg" alt=""></i><em>3</em>
+          <p>安静地做一个爱设计的女子</p>
+          <span class="star4"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news05.jpg" alt=""></i><em>4</em>
+          <p>个人博客,属于我的小世界!</p>
+          <span class="star3"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news02.jpg" alt=""></i><em>5</em>
+          <p>一个32岁程序员的倔强——十年程序人生</p>
+          <span class="star2"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news05.jpg" alt=""></i><em>6</em>
+          <p>个人博客,属于我的小世界!</p>
+          <span class="star2"></span> </a></li>
+      </ul>
+    </div>
+    <div class="ad_r"><a href="/"><img src="images/ads.png" alt="广告图"></a></div>
+    <div class="hot_news">
+      <h2 class="h_title">人气点击</h2>
+      <ol start="1">
+        <li><a href="/" title="" target="_blank">
+          <p>个人博客,属于我的小世界!</p>
+          </a><span>900</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>我仅仅是一个“草根站长”</p>
+          </a><span>798</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>世界上根本没有感同身受这回事</p>
+          </a><span>765</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>兴趣支撑梦想,兴趣是支撑我自己前行的动力</p>
+          </a><span>659</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>忙碌是自由活着的一种底气</p>
+          </a><span>640</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>从互联网消失的那3年,都去哪儿了?</p>
+          </a><span>503</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>7年,一个80后女站长与阿里云携手创业的真实故事</p>
+          </a><span>500</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>【告别2018】耕耘才有所得,付出才有收获</p>
+          </a><span>469</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>网易博客关闭,何不从此开始潇洒行走江湖!</p>
+          </a><span>398</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>从互联网消失的那3年,都去哪儿了?</p>
+          </a><span>503</span></li>
+      </ol>
+    </div>
+    <div class="ad_r"><a href="/"><img src="images/ads2.png" alt="广告图"></a></div>
+    <div class="tagsclous">
+      <h2 class="h_title">标签云</h2>
+      <ul>
+        <a href="/" target="_blank">女程序员</a> <a href="/" target="_blank">互联网</a> <a href="/" target="_blank">自由</a> <a href="/" target="_blank">底气</a> <a href="/" target="_blank">忙碌生活</a> <a href="/" target="_blank">建站流程</a> <a href="/" target="_blank">个人网站</a> <a href="/" target="_blank">建站初衷</a> <a href="/" target="_blank">个人博客</a> <a href="/" target="_blank">草根站长</a> <a href="/" target="_blank">618活动</a> <a href="/" target="_blank">心得</a> <a href="/" target="_blank">感受</a> <a href="/" target="_blank">直播</a> <a href="/" target="_blank">阿里云</a>
+      </ul>
+    </div>
+    <div class="emial_box">
+      <p>您可以通过以下方式联系我们</p>
+      <p><b>提议</b><b>投诉</b><b>合作</b>推荐此方式)</p>
+      <p>发送邮件Email到</p>
+      <p><a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=476847113@qq.com" target="_blank">dancesmiling@qq.com</a></p>
+    </div>
+  </aside>
+  <div class="clear"></div>
+</div>
+<footer>
+  <div class="box">
+    <ul class="footer_nav">
+      <li><a href="/" target="_blank">网站地图</a></li>
+      <li><a href="all_list.html" target="_blank">所有文章</a></li>
+      <li><a href="tags.html" target="_blank">标签合集</a></li>
+      <li><a href="/" target="_blank">访问统计</a></li>
+    </ul>
+    <div class="guanzhu_img"><i><img src="images/wx.png" alt="微信:4768447113">微信号</i> <i><img src="images/wxgzh.jpg" alt="微信:4768447113">微信公众号</i></div>
+    <div class="copyright">
+      <p>杨青青个人博客网站 版权所有 </p>
+      <p>Copyright © <a href="https://www.qingqingblog.com/" target="_blank">www.qingqingblog.com</a> All Rights Reserved.</p>
+      <p>备案号:<a href="http://www.beian.miit.gov.cn/" target="_blank">津ICP备20005778号-1</a><i class="ga"><img src="images/ga.png" alt="公安备案号"></i>津公网安备 12011602000448 号</p>
+    </div>
+  </div>
+</footer>
+<a href="#" title="返回顶部" class="icon-top"></a>
+</body>
+</html>

+ 223 - 0
main/assets/default/blog_info.html

@@ -0,0 +1,223 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>《初见》响应式个人博客模板</title>
+<meta name="keywords" content="个人博客,个人网站,个人博客模板,个人网站模板" />
+<meta name="description" content="《初见》响应式个人博客模板是由前端设计师杨青青(www.qingqingblog.com)于2021年5月份设计完成的,模板主要展示个人博客、相册、视频、介绍等功能。" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<link href="css/base.css" rel="stylesheet">
+<link href="css/m.css" rel="stylesheet">
+<script src="js/jquery-3.6.0.min.js" ></script>
+<script src="js/comm.js"></script>
+</head>
+<body>
+<header>
+  <div class="box">
+    <div class="logo"><a href="/"><img src="images/logo.png" alt="logo"></a></div>
+    <div class="ad_top"><a href="/"><img src="images/ad01.jpg" alt="广告"></a></div>
+    <div class="contact_icon">
+      <ul>
+        <li><a href="http://wpa.qq.com/msgrd?v=3&uin=476847113&site=qq&menu=yes"><i class="icon_qq"></i></a></li>
+        <li><a href="tel:186491309**"><i class="icon_tel"></i></a></li>
+        <li><a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=476847113@qq.com" target="_blank"><i class="icon_email"></i></a></li>
+        <li><i class="icon_weixin"><img src="images/wx.png" alt="微信号:476847113"></i></li>
+      </ul>
+    </div>
+    <div class="clear"></div>
+    <nav>
+      <ul id="starlist">
+        <li><a href="index.html">网站首页</a></li>
+        <li><a href="blog.html">博文日记</a></li>
+        <li class="menu"><a href="#">所有内容</a>
+          <ul class="sub">
+            <li><a href="blog_info.html">文章内容</a></li>
+            <li><a href="photos_info.html">相册内容</a></li>
+            <li><a href="videos_info.html">视频内容</a></li>
+            <li><a href="page_info.html">单页内容</a></li>
+          </ul>
+          <span></span></li>
+        <li><a href="photos.html">我的相册<i></i></a></li>
+        <li><a href="videos.html">我的视频</a></li>
+        <li><a href="about.html">个人简历</a></li>
+      </ul><h2 id="mnavh"><span class="navicon"></span></h2>
+      <div class="is-search"> <i></i> </div>
+      <div class="search-page">
+        <div class="search_box">
+          <div class="go-left"></div>
+          <div class="search">
+            <form action="http://zhuanti.ip3q.com/e/search/index.php" method="post" name="searchform" id="searchform">
+              <input name="keyboard" id="keyboard" class="input_text" value="请输入关键字词" style="color: rgb(153, 153, 153);" onfocus="if(value=='请输入关键字词'){this.style.color='#000';value=''}" onblur="if(value==''){this.style.color='#999';value='请输入关键字词'}" type="text">
+              <input name="show" value="title" type="hidden">
+              <input name="tempid" value="1" type="hidden">
+              <input name="tbname" value="news" type="hidden">
+              <input name="Submit" class="input_submit" value="搜索" type="submit">
+            </form>
+          </div>
+        </div>
+      </div>
+      <!--search end--> 
+    </nav>
+  </div>
+</header>
+<div class="ph_margin"></div>
+<div class="box">
+  <div class="blogs_info_page">
+    <div class="weizhi" style="display: none">您当前的位置:<a href="">首页</a>&nbsp;&gt;&nbsp;<a href="/">博文日记</a></div>
+    <article>
+      <h1>江湖上的默克尔</h1>
+      <div class="wz_info"> <span>作者:<a href="/" target="_blank">凡心</a> </span><span>时间:2021-04-26</span> <span>阅读数:701人阅读</span></div>
+      <div class="content">
+        <p>在德国许多政坛会议上,总理默克尔作了告别谢辞,宣布今后不再涉足政坛。之后人们起立鼓掌,最长的近十分钟。这时,默克尔眼噙热泪。</p>
+        <p><img align="" alt="" border="0" src="images/info.jpg" width="600"></p>
+        <p>我们见到默克尔在维护欧盟的统一及利益上表现得非常坚定,在中国问题上较为友好和务实,对美国的霸道也有适度抗拒。几年前,西方七国首脑会议上她手撑桌面逼视特朗普的画面,世人印象犹深。同时,我们见过她为难民儿童陈尸海滩流泪,也见过她为德国国家足球队进球雀躍忘形,还有到商店买鱼的视频,那时的她就是一个彻头彻尾的大妈……这一切令许多人喜欢上她。她不是高高在上的政治家,她同时也是一名有着常人感情和习惯的女性。</p>
+        <p>被称为“铁娘子”的默克尔将会回归家庭,为她的教授丈夫买菜做饭。其实即使在她政务最忙时,她也争取坚持每天为丈夫做早饭。他们住在公寓里,像普通德国人一样,洗衣打扫,下厨做饭。</p>
+        <h2>他的画亦如是,皆自丰富的内藏中来</h2>
+        <p>她至今坚持的“默克尔”,是前任丈夫的姓,有人说她是在用这种方式纪念初恋。她现在的丈夫是量子化学领域的权威,个性同样鲜明,不但容她冠前夫姓,还严重抗拒把他和妻子扯在一起。他从不接受记者采访,不许陌生人出现在课堂上。有哪个学生向他提到默克尔,小心,这个学生很可能会被挂科。</p>
+        <p>就是这样特别的两个人,恩爱地相处了多年。</p>
+        <p>作为政治家,默克尔也受到许多抨击。最尖锐的是批评她的移民政策“毁了欧洲”。但这些都要交与历史评说了。2021年9月,默克尔将退出政坛,没有了默克尔的江湖还将长久地流传她的故事。</p>
+        <p>不知道为什么,作者在描写这段微妙的人际关系时,把周围环境也一起写进去了。而使我读来怦然心动的也正是那段“于时清露晨流,新桐初引”的附带描述。也许不是什么惊心动魄的大景观,只是一个序幕初启的清晨,只是清晨初初映著阳光闪烁的露水,只是露水装点下的桐树初初抽了芽,遂使得人也变得纯洁灵明起来,甚至强烈地怀想起那个有过嫌隙的朋友。</p>
+        <p>李清照大约也是被这光景迷住了,所以她的《念奴娇》里竟把“清露晨流,新桐初引”的句子全搬过去了。一颗露珠,从六朝闪到北宋,一叶新桐,在安静的扉页里晶薄透亮。 </p>
+        <p>(海 蓉摘自《大公报》2021年3月3日)</p>
+      </div>
+      <div class="diggit"> <a href="JavaScript:makeRequest('/','EchoReturnedText','GET','');"> 很赞哦! (<b id="diggnum">3</b>)</a> </div>
+      <div class="share"><span>分享到:</span>
+        <div class="bdsharebuttonbox bdshare-button-style0-16" data-bd-bind="1620626498424"> <a title="分享到QQ好友" href="#" class="bds_sqq" data-cmd="sqq"></a> <a title="分享到微信" href="#" class="bds_weixin" data-cmd="weixin"></a> <a title="分享到QQ空间" href="#" class="bds_qzone" data-cmd="qzone"></a> <a title="分享到新浪微博" href="#" class="bds_tsina" data-cmd="tsina"></a> <a href="#" class="bds_more" data-cmd="more"></a> </div>
+      </div>
+      <div class="wz_zhuanzai">
+        <p>本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。</p>
+        <p>如果侵犯了你的权益请来信告知我们删除。邮箱:<a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&amp;email=dacesmiling@qq.com" target="_blank">dacesmiling@qq.com</a></p>
+      </div>
+      <div class="tags">标签:<a href="/" target="_blank">默克尔</a><a href="/" target="_blank">政治家</a></div>
+      <div class="info-pre-next">
+        <p>上一篇:<a href="/">远行之人, 必有故事</a> </p>
+        <p>下一篇:<a href="/">我们由彩色的记忆碎片组成</a> </p>
+      </div>
+    </article>
+    <div class="designer">
+      <section><i><img src="images/tx.png"></i>
+        <h3>杨青青</h3>
+        <p>当你还撑不起你的梦想时,就要去奋斗。如果缘分安排我们相遇,请不要让她擦肩而过。我们一起奋斗!</p>
+      </section>
+      <span><img src="images/wx.png"></span></div>
+    <div class="ad"><a href="https://www.aliyun.com/minisite/goods?userCode=l1qstn8f" target="_blank"><img src="images/ad3.jpg" alt=""></a></div>
+    <div class="wz_love">
+      <h2 class="h_title">猜你喜欢</h2>
+      <ul>
+        <li><a href="/" target="_blank"> <i><img src="images/01.jpg" alt=""></i>
+          <h2>个人博客,属于我的小世界!</h2>
+          <span>2021-05-10</span> </a></li>
+        <li><a href="/" target="_blank"> <i><img src="images/02.jpg" alt=""></i>
+          <h2>我仅仅是一个“草根站长”</h2>
+          <span>2021-05-10</span> </a></li>
+        <li><a href="/" target="_blank"> <i><img src="images/03.jpg" alt=""></i>
+          <h2>世界上根本没有感同身受这回事</h2>
+          <span>2021-05-10</span> </a></li>
+        <li><a href="/" target="_blank"> <i><img src="images/04.jpg" alt=""></i>
+          <h2>兴趣支撑梦想,兴趣是支撑我自己前行的动力</h2>
+          <span>2021-05-10</span> </a></li>
+        <li><a href="/" target="_blank"> <i><img src="images/05.jpg" alt=""></i>
+          <h2>忙碌是自由活着的一种底气</h2>
+          <span>2021-05-10</span> </a></li>
+        <li><a href="/" target="_blank"> <i><img src="images/06.jpg" alt=""></i>
+          <h2>从互联网消失的那3年,都去哪儿了?</h2>
+          <span>2021-05-10</span> </a></li>
+      </ul>
+    </div>
+  </div>
+  <aside class="rbox">
+    <div class="isgood_news">
+      <h2 class="h_title">站长推荐</h2>
+      <ul>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news02.jpg" alt=""></i><em>1</em>
+          <p>一个32岁程序员的倔强——十年程序人生</p>
+          <span class="star5"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news03.jpg" alt=""></i><em>2</em>
+          <p>我是个女程序员,反正我就是来活跃气氛的</p>
+          <span class="star4"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news04.jpg" alt=""></i><em>3</em>
+          <p>安静地做一个爱设计的女子</p>
+          <span class="star4"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news05.jpg" alt=""></i><em>4</em>
+          <p>个人博客,属于我的小世界!</p>
+          <span class="star3"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news02.jpg" alt=""></i><em>5</em>
+          <p>一个32岁程序员的倔强——十年程序人生</p>
+          <span class="star2"></span> </a></li>
+        <li><a href="/" title="" target="_blank"> <i><img src="images/news05.jpg" alt=""></i><em>6</em>
+          <p>个人博客,属于我的小世界!</p>
+          <span class="star2"></span> </a></li>
+      </ul>
+    </div>
+    <div class="ad_r"><a href="/"><img src="images/ads.png" alt="广告图"></a></div>
+    <div class="hot_news">
+      <h2 class="h_title">人气点击</h2>
+      <ol start="1">
+        <li><a href="/" title="" target="_blank">
+          <p>个人博客,属于我的小世界!</p>
+          </a><span>900</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>我仅仅是一个“草根站长”</p>
+          </a><span>798</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>世界上根本没有感同身受这回事</p>
+          </a><span>765</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>兴趣支撑梦想,兴趣是支撑我自己前行的动力</p>
+          </a><span>659</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>忙碌是自由活着的一种底气</p>
+          </a><span>640</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>从互联网消失的那3年,都去哪儿了?</p>
+          </a><span>503</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>7年,一个80后女站长与阿里云携手创业的真实故事</p>
+          </a><span>500</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>【告别2018】耕耘才有所得,付出才有收获</p>
+          </a><span>469</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>网易博客关闭,何不从此开始潇洒行走江湖!</p>
+          </a><span>398</span></li>
+        <li><a href="/" title="" target="_blank">
+          <p>从互联网消失的那3年,都去哪儿了?</p>
+          </a><span>503</span></li>
+      </ol>
+    </div>
+    <div class="ad_r"><a href="/"><img src="images/ads2.png" alt="广告图"></a></div>
+    <div class="tagsclous">
+      <h2 class="h_title">标签云</h2>
+      <ul>
+        <a href="/" target="_blank">女程序员</a> <a href="/" target="_blank">互联网</a> <a href="/" target="_blank">自由</a> <a href="/" target="_blank">底气</a> <a href="/" target="_blank">忙碌生活</a> <a href="/" target="_blank">建站流程</a> <a href="/" target="_blank">个人网站</a> <a href="/" target="_blank">建站初衷</a> <a href="/" target="_blank">个人博客</a> <a href="/" target="_blank">草根站长</a> <a href="/" target="_blank">618活动</a> <a href="/" target="_blank">心得</a> <a href="/" target="_blank">感受</a> <a href="/" target="_blank">直播</a> <a href="/" target="_blank">阿里云</a>
+      </ul>
+    </div>
+    <div class="emial_box">
+      <p>您可以通过以下方式联系我们</p>
+      <p><b>提议</b><b>投诉</b><b>合作</b>推荐此方式)</p>
+      <p>发送邮件Email到</p>
+      <p><a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=476847113@qq.com" target="_blank">dancesmiling@qq.com</a></p>
+    </div>
+  </aside>
+  <div class="clear"></div>
+</div>
+<footer>
+  <div class="box">
+    <ul class="footer_nav">
+      <li><a href="/" target="_blank">网站地图</a></li>
+      <li><a href="all_list.html" target="_blank">所有文章</a></li>
+      <li><a href="tags.html" target="_blank">标签合集</a></li>
+      <li><a href="/" target="_blank">访问统计</a></li>
+    </ul>
+    <div class="guanzhu_img"><i><img src="images/wx.png" alt="微信:4768447113">微信号</i> <i><img src="images/wxgzh.jpg" alt="微信:4768447113">微信公众号</i></div>
+    <div class="copyright">
+      <p>杨青青个人博客网站 版权所有 </p>
+      <p>Copyright © <a href="https://www.qingqingblog.com/" target="_blank">www.qingqingblog.com</a> All Rights Reserved.</p>
+      <p>备案号:<a href="http://www.beian.miit.gov.cn/" target="_blank">津ICP备20005778号-1</a><i class="ga"><img src="images/ga.png" alt="公安备案号"></i>津公网安备 12011602000448 号</p>
+    </div>
+  </div>
+</footer>
+<a href="#" title="返回顶部" class="icon-top"></a>
+</body>
+</html>
+

+ 489 - 0
main/assets/default/css/base.css

@@ -0,0 +1,489 @@
+@charset "utf-8";
+/* CSS Document 
+design by www.qingqingblog.com
+*/
+* { margin: 0; padding: 0 }
+body { font: 15px "Microsoft YaHei", Arial, Helvetica, sans-serif; background: #f3f8fb; color: #001737; }
+img { border: 0; display: block }
+ul, li { list-style: none; }
+a { text-decoration: none; color: #001737; }
+a:hover { color: #012684; text-decoration: none; }
+.clear { clear: both; width: 100%; overflow: hidden; }
+.box { width: 1200px; margin: auto; }
+/*header*/
+header { padding-top: 20px; position: relative; height: 140px; background: #fff; margin-bottom: 60px; }
+.logo { float: left; }
+.logo img { width: 210px;height: 80px;}
+.ad_top { float: left; margin-left: 100px; width: 550px; height: 80px; overflow: hidden }
+.ad_top img { width: 100%; }
+/*contact_icon*/
+.contact_icon { float: right; margin: 20px 0 0 0; }
+.contact_icon ul li { display: inline-block; }
+.contact_icon ul li i { width: 36px; height: 36px; border-radius: 100%; display: block; transition: .3s; margin-left: 10px; }
+.icon_qq { background: url(../images/icon_qq.png) no-repeat center #f3f8fb }
+.icon_tel { background: url(../images/icon_tel.png) no-repeat center #f3f8fb }
+.icon_email { background: url(../images/icon_email.png) no-repeat center #f3f8fb }
+.icon_weixin { background: url(../images/icon_weixin.png) no-repeat center #f3f8fb; position: relative; cursor: pointer }
+.contact_icon ul li i img { position: absolute; top: 36px; right: -54px; display: none; box-shadow: 0px 9px 24px rgb(0 0 0 / 5%); }
+.icon_weixin:hover img { display: block; z-index: 9 }
+.icon_qq:hover { background: url(../images/icon_qq_b.png) no-repeat center #012684 }
+.icon_tel:hover { background: url(../images/icon_tel_b.png) no-repeat center #012684 }
+.icon_email:hover { background: url(../images/icon_email_b.png) no-repeat center #012684 }
+.icon_weixin:hover { background: url(../images/icon_weixin_b.png) no-repeat center #012684; }
+/*nav*/
+nav {line-height: 76px;height: 76px;padding-left: 50px;border-radius: 10px;margin-top: 20px;position: relative;background: #012684;background: linear-gradient(90deg, #012684 0%, #026b70 100%)}
+#starlist li { position: relative; display: inline-block; font-size: 18px; text-align: center; font-weight: bold; }
+#starlist li a { display: block; color: #fff; padding: 0 35px; }
+#starlist li:hover a, #starlist ul.sub li a:hover { text-decoration: none }
+#starlist ul.sub { position: absolute; border-radius: 0 0 10px 10px; overflow: hidden; left: 0; top: 60px; z-index: 9; width: 130%; line-height: 50px; opacity: 0; transition: all .5s; box-shadow: 0px 5px 9px 1px rgba(144, 161, 180, 0.2); }
+#starlist ul.sub li { width: 100%; background: #001737; float: left; font-size: 15px; transition: all .5s }
+#starlist ul.sub li a { padding: 0; display: none; width: 100%; color: #f8f8f8; border-bottom: 1px #10264a solid; }
+#starlist ul.sub li:last-child a { border: none }
+#starlist li:hover ul.sub { opacity: 1; top: 76px; }
+#starlist li:hover ul.sub li a { display: block; }
+#starlist ul.sub li:hover { padding-left: 5px; }
+#starlist li:hover ul.sub:after, #starlist ul.sub li:after, #starlist ul.sub li a:after { display: none; }
+.menu:after { content: ""; position: absolute; right: 10px; top: 46%; background: url(../images/jt.png) no-repeat; width: 8px; height: 8px; background-size: 8px; transition: all .5s ease; }
+.menu:hover:after { transform: rotate(180deg) }
+#mnavh { display: none; width: 40px; height: 40px; text-align: center; }
+.navicon { display: block; position: relative; width: 27px; height: 2px; background-color: #012684; margin-top: 20px; float: left; }
+.navicon:before, .navicon:after { content: ''; display: block; width: 27px; height: 2px; position: absolute; background: #012684; -webkit-transition-property: margin, -webkit-transform; transition-property: margin, -webkit-transform; transition-property: margin, transform; transition-property: margin, transform, -webkit-transform; -webkit-transition-duration: 300ms; transition-duration: 300ms; }
+.navicon:before { margin-top: -8px; }
+.navicon:after { margin-top: 8px; }
+.open .navicon { background: none }
+.open .navicon:before { margin-top: 0; -webkit-transform: rotate(45deg); transform: rotate(45deg); }
+.open .navicon:after { margin-top: 0; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); }
+.open .navicon:before, .open .navicon:after { content: ''; display: block; width: 28px; height: 2px; position: absolute; background: #727171; }
+/*search*/
+.search { position: relative; overflow: hidden; }
+.search input.input_submit { border: 0; color: #fff; outline: none; position: absolute; top: 0; right: 0; display: block; font-size: 15px; height: 36px; background: #001737; line-height: 36px; cursor: pointer; }
+.search input.input_text { border: 0; line-height: 36px; height: 36px; font-size: 14px; outline: none; text-indent: 1em; }
+.is-search { position: absolute; right: 0; top: 0; background: url(../images/white_bg.png); cursor: pointer }
+.is-search i { display: block; width: 76px; height: 76px; background: url(../images/search.png) no-repeat center; background-size: 24px; }
+.search-page { width: 100%; left: 0; background: #ebf0fa; position: absolute; top: 80px; z-index: 8; display: none; border-radius: 5px; }
+.search_box { padding: 20px; }
+.search-page .search { clear: both; width: 60%; margin: auto; border-radius: 0 5px 5px 0; }
+.search-page .search input.input_text { width: 80%; float: left; z-index: 9; }
+.search-page .search input.input_submit { width: 20%; }
+.search select { border: none; height: 36px; right: 20%; outline: none; z-index: 9; position: absolute; background: #fff; }
+.search-page .go-left { background: url(../images/prev_close.png) no-repeat left center; width: 32px; height: 32px; background-size: 32px; position: absolute; right: 20px; top: 10px; }
+/*banner*/
+.banner {max-width: 1220px;margin: 0 auto}
+.banner img { width: 100%; transition: all .5s }
+.banner li { float: left; width: 33.333%; font-size: 18px; }
+.banner li a { position: relative; display: block; border-radius: 5px; margin: 0 10px; overflow: hidden }
+.banner li a:after { position: absolute; content: ''; width: 100%; height: 100%; left: 0; top: 0; border-radius: 5px; background: linear-gradient( 180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 44.79%, rgba(0, 0, 0, 0.35) 63.54%, #000000 100%); }
+.banner li section { position: absolute; width: 100%; left: 0; bottom: 0; color: #fff; z-index: 9; text-align: left; padding: 20px 0 }
+.banner li section p { padding: 0 20px 0 30px; margin: 20px 0 0 20px; background: url(../images/fire.png) no-repeat left top; line-height: 26px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
+.banner li section span { margin: 0 20px; padding: 5px 10px; background: #FF3A3A; color: #fff; border-radius: 3px; font-size: 14px; line-height: 26px; }
+.banner li:nth-child(n) section span { background: #ff9900; }
+.banner li:nth-child(2n) section span { background: #FF3A3A; }
+.banner li:nth-child(3n) section span { background: #6360ff; }
+.banner li section p:hover { opacity: .8 }
+.banner li:hover img { transform: scale(1.1) }
+/*featured_news*/
+.featured_news { margin-top: 40px; width: 70%; float: left }
+.featured_nav { margin-bottom: 30px; overflow: hidden; }
+.featured_nav h2 { float: left; }
+h2.h_title { line-height: 50px; font-size: 22px; }
+.featured_nav #tab { border-radius: 120px; padding: 0px 35px; float: right; background: #fff; line-height: 50px }
+.featured_nav #tab li { display: inline-block }
+.featured_nav #tab li a { display: block; margin: 0 20px; padding: 0 10px; position: relative; }
+.featured_nav #tab li a:after { content: ""; position: absolute; width: 0; height: 0; background: #fff; left: 0; bottom: 0; transition: all .5s }
+.featured_nav #tab li a:hover, .featured_nav #tab .tab-current a { color: #012684; }
+.featured_nav #tab li a:hover:after, .featured_nav #tab .tab-current a:after { width: 100%; height: 3px; background: #012684 }
+.featured_news #tab-content section { display: none; }
+.featured_news #tab-content section:nth-child(1) { display: block }
+/*f_news_pic*/
+.f_news_pic { width: 42%; height: 420px; float: left; overflow: hidden; position: relative; border-radius: 5px; }
+.f_news_pic:after { background: linear-gradient( 180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 44.79%, rgba(0, 0, 0, 0.35) 63.54%, #000000 100%); position: absolute; content: ''; width: 100%; height: 100%; left: 0; top: 0; border-radius: 5px; }
+.f_news_pic_box { position: absolute; bottom: 0; left: 0; width: 100%; padding: 20px 0 40px; z-index: 9; }
+.f_news_pic i img { height: 100%; transition: .5s; }
+.f_news_pic:hover i img { transform: scale(1.05) }
+a.f_news_tag { background: #FF3A3A; color: #fff; border-radius: 3px; text-align: center; display: inline-block; height: 26px; padding: 0 12px; line-height: 26px; margin-left: 20px; }
+.f_news_title { font-size: 24px; font-weight: 600; line-height: 34px; margin: 20px; }
+.f_news_title a { color: #fff; overflow: hidden; text-overflow: ellipsis; -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; }
+.f_news_title a:hover { opacity: .8 }
+.f_news_info { margin-left: 20px; color: #fff; }
+.f_news_info span { margin-right: 20px; padding-left: 30px }
+.f_news_info span:nth-child(1) { background: url(../images/time.png) no-repeat left center; background-size: 24px; }
+.f_news_info span:nth-child(2) { background: url(../images/view.png) no-repeat left center }
+.f_news_list { float: right; width: 55%; overflow: hidden; }
+.f_news_list li { background: #FFF; margin-bottom: 15px; border-radius: 3px; padding: 15px 15px; overflow: hidden; }
+.f_news_list li i { width: 133px; height: 100px; overflow: hidden; display: block; float: left; margin-right: 15px; border-radius: 3px; }
+.f_news_list li i img { height: 100%; min-width: 100%; transition: .5s; }
+.f_news_list li:hover img { transform: scale(1.1) }
+.f_news_list li p { margin: 10px 0; font-size: 16px; overflow: hidden; text-overflow: ellipsis; -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; }
+.f_news_list li span { font-size: 13px; color: #999; }
+.featured_news #tab-content section:nth-child(2) a.f_news_tag { background: #03c63a; }
+.featured_news #tab-content section:nth-child(3) a.f_news_tag { background: #1298fc; }
+/*mycard*/
+.mycard { float: right; width: 28%; margin-top: 40px; height: 500px; background: #fff; border-radius: 3px; position: relative }
+.mycard section { margin: 20px; }
+.mycard .ewm { position: absolute; right: 20px; top: 30px; border: #f3f2f2 1px solid; }
+.mycard .ewm img { width: 70px; }
+.mycard i { display: block; margin: 20px 0; height: 200px; border-radius: 3px; overflow: hidden }
+.mycard i img { width: 100% }
+.mycard ul li { font-size: 13px; line-height: 24px }
+.mycard ul li span { text-transform: uppercase; color: #b29f7d; width: 50px; display: block; float: left }
+.mycard_title { color: #b29f7d; font-size: 18px; font-weight: bold; letter-spacing: 0.3em; margin-bottom: 20px; }
+.mycard_title_en { color: #55603d; text-transform: uppercase; font-style: italic; font-weight: bold; font-size: 32px; letter-spacing: .2em; }
+/*featured_pics*/
+.featured_pics { width: 100%; margin: 30px 0 }
+.featured_pics ul { background: #fff; overflow: hidden; padding: 20px; }
+.featured_pics ul li { float: left; width: 20%; overflow: hidden }
+.featured_pics ul li a { margin: 10px; display: block; position: relative; text-overflow: ellipsis; white-space: nowrap; }
+.featured_pics ul li i { display: block; border-radius: 3px; overflow: hidden; height: 160px; }
+.featured_pics ul li i:after { position: absolute; left: 0; top: 0; width: 100%; height: 100%; content: ''; background: linear-gradient( 0deg, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.3)); opacity: 1; transition: .5s }
+.featured_pics ul li i img { width: 100%; min-height: 100%; }
+.featured_pics ul li section { color: #fff; position: absolute; bottom: 37%; left: 15%; width: 70%; }
+.featured_pics ul li p { line-height: 30px; text-overflow: ellipsis; white-space: nowrap; position: relative; overflow: hidden; text-align: center; background: rgba(0, 23, 55, .8); border-radius: 100px; padding: 0px 29px; font-size: 14px; }
+.featured_pics ul li span { position: absolute; right: 0px; bottom: 5px; background: #FF3A3A; width: 30px; height: 30px; text-align: center; line-height: 30px; border-radius: 50%; color: #fff; font-weight: bold; }
+.featured_pics ul li:nth-child(1) span { background: #6360ff; }
+.featured_pics ul li:nth-child(2) span { background: #ff3a3a; }
+.featured_pics ul li:nth-child(3) span { background: #03c63a; }
+.featured_pics ul li:nth-child(4) span { background: #ff9900; }
+.featured_pics ul li:hover i:after { opacity: 0 }
+/*blogs*/
+.blogs { width: 70%; float: left }
+.blogs ul { margin-tops: 20px }
+.blogs_list { overflow: hidden; position: relative; transition: all .8s; padding: 20px; background: #fff; margin-bottom: 20px }
+.blogs_list i { display: block; width: 210px; height: 158px; background: #ccc; overflow: hidden; float: left; margin-right: 20px; border-radius: 3px; }
+.blogs_list i img { width: 100%; min-height: 100%; transition: all .6s; }
+.blogs_list h2 { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; margin: 10px 0; line-height: 28px; font-size: 20px; }
+.blogs_list p { color: #808595; font-size: 14px; line-height: 24px; word-break: break-all; overflow: hidden; text-overflow: ellipsis; -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; }
+.blogs_list:hover { box-shadow: 0px 12px 8px -12px #c0bebe; }
+.blogs_list h2:hover { color: #012684; }
+.blogs_list img:hover { transform: scale(1.1); }
+.blogs_base { color: #999; font-size: 14px; margin: 30px 0 0 0; line-height: 24px; }
+.blogs_base a { color: #999; }
+.blogs_base span { margin-right: 20px; padding-left: 24px; line-height: 24px; display: block; float: left; }
+span.blogs_time { background: url(../images/icon_time.png) no-repeat left center; background-size: 20px; }
+span.blogs_onclick { background: url(../images/icon_fire.png) no-repeat left center; background-size: 20px; }
+a.read_more {background: #012684;color: #fff;font-size: 14px;font-weight: 600;text-align: center;padding: 8px 20px;border-radius: 4px;width: 80px;float: right;}
+.icon_more { float: right; background: url(../images/icon_more.png) no-repeat left center; background-size: 20px; text-align: center; margin-top: 8px; font-size: 14px; padding-left: 30px; font-weight: normal; }
+.icon_more a { color: #808595; }
+.icon_more a:hover { color: #012684; }
+.rbox { float: right; width: 28%; }
+/*isgood_news*/
+.isgood_news { border-radius: 3px; background: #fff; padding: 5px 20px 0; overflow: hidden; }
+.isgood_news li { position: relative; margin: 24px 0; overflow: hidden; }
+.isgood_news li i { width: 120px; height: 90px; display: inline-block; overflow: hidden; float: left; margin-right: 12px; border-radius: 2px; }
+.isgood_news li i img { width: 100%; min-height: 100%; transition: .5s; float: left; }
+.isgood_news li em { position: absolute; top: 0; left: 0; height: 17px; width: 21px; color: #ccc; font-size: 12px; font-style: normal; text-align: center; background: rgba(0,0,0,.5); border-radius: 2px 0 0; z-index: 99; }
+.isgood_news li:nth-child(1) em, .isgood_news li:nth-child(2) em, .isgood_news li:nth-child(3) em { color: #fff; }
+.isgood_news li:nth-child(1) em { background: #f95456 }
+.isgood_news li:nth-child(2) em { background: #f6a625; }
+.isgood_news li:nth-child(3) em { background: #4385f4 }
+.isgood_news li p { font-weight: normal; line-height: 20px; word-break: break-all; overflow: hidden; text-overflow: ellipsis; -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; margin-top: 5px; }
+.isgood_news li span { width: 71px; height: 13px; position: absolute; display: block; left: 135px; bottom: 10px; }
+.star5 { background: url(../images/star5.png) no-repeat }
+.star4 { background: url(../images/star4.png) no-repeat }
+.star3 { background: url(../images/star3.png) no-repeat }
+.star2 { background: url(../images/star2.png) no-repeat }
+.star1 { background: url(../images/star1.png) no-repeat }
+.isgood_news li:hover img { transform: scale(1.1); }
+.isgood_news li:hover p { color: #012684; }
+/*hot_news*/
+.hot_news { border-radius: 3px; background: #fff; padding: 5px 20px 0; margin: 20px 0; overflow: hidden; position: relative }
+.hot_news ol { overflow: hidden; padding: 10px 0 20px 25px; }
+.hot_news li { line-height: 36px; list-style-type: inherit; padding-left: 10px; }
+.hot_news p { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; width: 80%; float: left; }
+.hot_news li span { float: right; width: 20%; text-align: center; color: #808595; font-size: 12px; }
+.hot_news section { background-color: #fff; line-height: 42px; box-shadow: 0px 9px 24px rgb(0 0 0 / 5%); margin: 10px 0; border-radius: 10px; }
+.hot_news ol:before { content: ""; background: url(../images/icon_fire.png) no-repeat; background-size: 20px; width: 20px; height: 20px; position: absolute; right: 40px; top: 22px; }
+.hot_news li:nth-child(1) span { color: #f33; font-weight: bold; }
+.hot_news li:nth-child(2) span, .hot_news li:nth-child(3) span { color: #f80; font-weight: bold; }
+.ad_r { margin: 20px 0; overflow: hidden; border-radius: 3px; background: #fff; padding: 20px; }
+.ad_r img { width: 100% }
+/*tagsclous*/
+.tagsclous { border-radius: 3px; background: #fff; padding: 5px 20px 0; margin: 20px 0; overflow: hidden; }
+.tagsclous ul { padding: 10px 0 20px 0; overflow: hidden; position: relative; }
+.tagsclous a { display: inline-block; float: left; line-height: 34px; text-align: center; position: relative; color: #2c3e50; margin: 4px 5px; padding: 0 14px; border-radius: 3px; transition: .2s }
+.tagsclous a:nth-child(8n-7) { background: #def6ff }
+.tagsclous a:nth-child(8n-6) { background: #f2fbf2 }
+.tagsclous a:nth-child(8n-5) { background: #f8f3fe }
+.tagsclous a:nth-child(8n-4) { background: #fff7f0 }
+.tagsclous a:nth-child(8n-3) { background: #fff3f3 }
+.tagsclous a:nth-child(8n-2) { background: #edf9fe }
+.tagsclous a:nth-child(8n-1) { background: #f1f3fd }
+.tagsclous a:nth-child(8n) { background: #def6ff }
+.tagsclous a:hover { background: #012684; color: #fff }
+/*emial_box*/
+.emial_box { margin: 20px 0; border: 6px solid transparent; padding: 36px 36px 40px 36px; border-image: url(../images/subscribe-bg.png) 8 stretch; border-radius: 3px; text-align: center; background: #fff; color: #808595; line-height: 36px }
+.emial_box a:hover { text-decoration: underline }
+.emial_box p:last-child { margin-top: 20px; line-height: 46px; background: url(../images/mail.png) no-repeat right center #fff; text-align: left; text-indent: 1em; border-radius: 5px; border: 1px solid #eeeeee; box-shadow: 0px 4px 36px rgb(0 0 0 / 6%); }
+.emial_box p:last-child a { display: block }
+/*links*/
+.links { margin: 30px auto }
+.links ul { overflow: hidden; margin-top: 20px }
+.links li { float: left; width: 16.6666666%; margin-bottom: 10px; transition: all .5s }
+.links li i { width: 20px; height: 20px; margin-top: 10px; margin-right: 10px; overflow: hidden; display: block; float: left; border-radius: 20px; }
+.links li i img { width: 100% }
+.links a { line-height: 40px; color: #808595; background: #fff; display: block; padding: 3px 20px; text-align: center; border-radius: 3px; overflow: hidden; margin-right: 10px; }
+.links li:hover { box-shadow: 0px 12px 8px -12px #ccc; }
+/*footer*/
+footer { background: #fff; padding: 30px 0; width: 100%; overflow: hidden; text-align: center; color: #808595; margin-top: 30px; }
+.footer_nav { margin: 0 0 10px 0; }
+.footer_nav li { display: inline-block; height: 14px; overflow: hidden; line-height: 14px; }
+.footer_nav li a { display: block; padding: 0 10px; margin: 0 10px; position: relative }
+.footer_nav li a:after { content: ""; width: 1px; height: 100%; background: #dddddd; right: -10px; top: 0; position: absolute }
+.footer_nav li:last-child a:after { display: none }
+.guanzhu_img { margin: 30px 0 }
+.guanzhu_img i { display: inline-block; font-style: normal; margin: 0 10px; font-size: 14px; }
+.guanzhu_img i img { width: 120px; height: 120px; }
+.copyright { font-size: 14px; letter-spacing: .1em; overflow: hidden; border-top: #dddddd 1px solid; padding: 15px 0 0; line-height: 30px; }
+.copyright a { color: #808595 }
+.copyright a:hover { color: #012684; text-decoration: underline; }
+.ga img { display: inline-block; vertical-align: middle; margin: 0 5px; }
+/*icon-top*/
+.icon-top { background: url(../images/istop.png) no-repeat center #012684; background-size: 24px; width: 48px; height: 48px; position: fixed; right: 40px; bottom: 10%; transition: all 0.3s; z-index: 9999999; border-radius: 100%; opacity: 0; }
+.cd-is-visible { opacity: 1; }
+/*weizhi*/
+.weizhi { background: url(../images/icon_wz.png) no-repeat left 10px center #fff; background-size: 24px; line-height: 40px; padding-left: 40px; color: #808595; }
+.weizhi a { color: #808595; }
+.weizhi a:hover { color: #012684 }
+/*epages*/
+.epages { text-align: center; color: #808595; width: 100%; clear: both; padding-top: 10px; margin: 30px auto; }
+.epages a { color: #808595; margin: 0 5px 10px; padding: 5px 10px; background: #ffffff; display: inline-block; }
+/*.epages a:nth-child(1) { display: none }*/
+.epages a:hover, .epages > .active { color: #FFF; background: #012684; }
+.epages > b { padding: 5px 10px; }
+/*article*/
+.blogs_info_page { width: 70%; float: left }
+article { background: #fff; padding: 20px; margins: 20px 0; }
+article h1 { color: #001737; font-size: 24px; margin: 0 0 20px 0; }
+.wz_info { font-size: 12px; line-height: 28px; color: #808595; margin-bottom: 20px; border-bottom: #dbdbdb 1px dashed; }
+.wz_info span { margin: 0 20px 0 0 }
+.wz_info a { color: #808595; }
+.content { font-size: 16px; line-height: 32px; word-break: break-all; }
+.content p { margin: 20px 0; text-indent: 2em; }
+.content ul, .content ol { margin: 20px 0 20px 35px; }
+.content ul li, .content ol li { margin-top: 3px; line-height: 30px; }
+.content ul li { list-style-type: disc; }
+.content ol li { list-style-type: decimal; }
+.content h2, .content h3, .content h4, .content h5, .content h6 { position: relative; padding-left: 14px; font-size: 16px; margin: 20px 0; text-indent: 1em; }
+.content img { max-width: 100% !important; width: auto !important; height: auto !important; margin: 10px auto; }
+.content video { height: auto !important; display: block; margin: auto; max-width: 100% !important; }
+.content table { max-width: 100%; border-width: 1px; border-color: #666; border-collapse: collapse; font-size: 15px; line-height: 26px; }
+.content table th { border-width: 1px; padding: 4px 8px; border-style: solid; border-color: #666; background-color: #dedede; }
+.content table td { border-width: 1px; padding: 4px 8px; border-style: solid; border-color: #666; background-color: #ffffff; }
+span.marker { background: yellow; }
+.diggit { display: block; width: 160px; margin: 20px auto; background: #E2523A; background: linear-gradient( 90deg, #c2005f 0%, #f0600c 100%)!important; color: #fff; box-shadow: 1px 2px 6px 0px rgba(0,0,0,.2); border-radius: 3px; line-height: 40px; text-align: center; }
+.diggit a { color: #fff; display: block }
+/*share*/
+.share { width: 331px; margin: 20px auto; text-align: center; }
+.share span { float: left; line-height: 44px; font-size: 16px; color: #808595; }
+.share b { margin-top: 20px; }
+.bdshare-button-style0-16 a { width: 42px; height: 42px !important; padding-left: 0 !important; display: inline-block; margin: 0 2px !important; cursor: pointer !important; background-size: 42px !important; }
+.share a.bds_sqq { background: url(../images/share.png) no-repeat; background-position: 0 -156px; }
+.share a.bds_weixin { background: url(../images/share.png) no-repeat; background-position: 0 -52px; }
+.share a.bds_qzone { background: url(../images/share.png) no-repeat; background-position: 0px -364px; }
+.share a.bds_tsina { background: url(../images/share.png) no-repeat; background-position: 0 -260px; }
+.share a.bds_sqq:hover { background: url(../images/share.png) no-repeat; background-position: 0 -104px; }
+.share a.bds_weixin:hover { background: url(../images/share.png) no-repeat; background-position: 0 0px; }
+.share a.bds_qzone:hover { background: url(../images/share.png) no-repeat; background-position: 0 -312px; }
+.share a.bds_tsina:hover { background: url(../images/share.png) no-repeat; background-position: 0 -208px; }
+.share a.bds_more { background: url(../images/share.png) no-repeat; background-position: 0 -570px; margin: 0; padding: 0; width: 44px; }
+/*wz_zhuanzai*/
+.wz_zhuanzai { text-align: center; color: #808595; font-size: 14px; line-height: 1.5; margin: 30px auto; letter-spacing: .05em; }
+.wz_zhuanzai a { color: #808595; }
+.wz_zhuanzai a:hover { color: #012684; }
+/*tags*/
+.tags { margin: 30px 0; font-size: 16px; background: url(../images/icon_tags.png) no-repeat left center; background-size: 24px; padding-left: 34px; color: #8392A5; }
+.tags a { color: #8392A5; border: 1px solid #8392A5; display: inline-block; font-size: 14px; padding: 5px 15px; margin: 5px; border-radius: 4px; transition: all .2s; }
+.tags a:hover { background: #012684; color: #fff; border: 1px solid #012684; }
+/*info-pre-next*/
+.info-pre-next { line-height: 34px; margin-bottom: 20px; overflow: hidden; }
+.info-pre-next p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 45%; float: left; }
+.info-pre-next p:nth-child(2) { text-align: right; float: right; }
+.info-pre-next a { margin-left: 10px; font-weight: bold; }
+/*designer*/
+.designer { margin: 20px 0; border-radius: 3px; padding: 10px; background: #ffffff; overflow: hidden; }
+.designer section { float: left; width: 80%; margin-top: 15px; }
+.designer i { display: block; width: 100px; height: 100px; background: #f3f8fb; border-radius: 100%; overflow: hidden; float: left; margin: 0 14px; }
+.designer i img { width: 100px; display: block; }
+.designer h3 { font-size: 16px; margin: 16px 0 10px; }
+.designer p { color: #808595; }
+.designer span { float: right; }
+.designer span img { width: 140px }
+/*ad*/
+.ad { overflow: hidden; margin: 20px 0; }
+/*wz_love*/
+.wz_love { background: #ffffff; border-radius: 2px; overflow: hidden; margin-bottom: 20px; }
+.wz_love .h_title { margin: 10px 0 0 30px }
+.wz_love p { width: 88px; height: 25px; background: #012684; font-size: 16px; color: #fff; line-height: 25px; text-align: center; margin-top: 20px; }
+.wz_love ul { overflow: hidden; margin: 10px 0 20px; }
+.wz_love ul li { float: left; width: 50%; margin-bottom: 20px; position: relative }
+.wz_love ul li a { display: block; margin: 0 30px; }
+.wz_love ul li i { width: 120px; height: 90px; display: inline-block; overflow: hidden; float: left; margin-right: 12px; border-radius: 3px; }
+.wz_love ul li img { width: 100%; min-height: 100%; transition: .5s; float: left; }
+.wz_love ul li h2 { font-size: 15px; font-weight: normal; line-height: 20px; word-break: break-all; overflow: hidden; text-overflow: ellipsis; -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; padding-top: 10px; }
+.wz_love ul li span { font-size: 12px; color: #808595; position: absolute; display: block; left: 164px; bottom: 10px; }
+.wz_love ul li:hover img { transform: scale(1.1); }
+/*videos*/
+.videos { background: #fff; border-radius: 3px; overflow: hidden; margin: 10px 0 30px }
+.featured_video_fl { width: 59.167%; height: 399px; float: left; overflow: hidden; position: relative; }
+.featured_video_fr { width: 40%; float: right; }
+/*featured_video_fl*/
+.featured_video_fl a:after { position: absolute; content: ''; width: 100%; height: 100%; left: 0; top: 0; border-radius: 5px 0px 0px 5px; background: linear-gradient( 180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 44.79%, rgba(0, 0, 0, 0.35) 63.54%, #000000 100%); }
+.featured_video_fl i:before {content: "";background: url(../images/icon_replay.png) no-repeat center rgba(0,0,0,.5);background-size: 48px;width: 96px;height: 96px;margin: auto;border-radius: 50%;position: absolute;z-index: 1;top: 50%;left: 50%;margin-top: -43.5px;margin-left: -43.5px;}
+.featured_video_fl i { height: 100%; }
+.featured_video_fl i img { transition: all .5s; width: 100%; min-height: 100% }
+.featured_video_fl section { position: absolute; bottom: 0; padding: 30px 30px; left: 0; z-index: 1; color: #fff; }
+.featured_video_fl span { letter-spacing: 0.05em; display: inline-block; margin: 0 0 20px 0; padding: 3px 10px; background: #FF3A3A; color: #fff; border-radius: 3px; font-size: 14px; line-height: 26px; }
+.featured_video_fl h3 { font-size: 24px; font-weight: 600; line-height: 36px; text-overflow: ellipsis; overflow: hidden; -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; transition: all .5s }
+.featured_video_fl:hover h3 { opacity: .8; ; }
+.featured_video_fl:hover img { transform: scale(1.05) }
+/*featured_video_fr*/
+.featured_video_fr ul { margin-top: 8px; overflow: hidden; }
+.featured_video_fr ul li a { display: block; overflow: hidden; margin: 10px 20px; padding-bottom: 10px; border-bottom: #f3f8fb 1px solid; }
+.featured_video_fr ul li:last-child a { border-bottom: none; margin-bottom: 0; padding-bottom: 0 }
+.featured_video_fr li i { width: 133px; height: 100px; display: block; overflow: hidden; float: left; margin-right: 20px; border: 4px solid #f3f8fb; border-radius: 20px; position: relative; }
+.featured_video_fr li i:before {position: absolute;content: "";top: 50%;left: 50%;background: url(../images/icon_replay.png) no-repeat center rgba(0,0,0,.5);background-size: 15px;width: 35px;height: 35px;border-radius: 50%;margin-left: -17.5px;margin-top: -17.5px;z-index: 1;}
+.featured_video_fr li i img { height: 100%; min-width: 100%; transition: all .5s; }
+.featured_video_fr li:hover img { transform: scale(1.1) }
+.featured_video_fr li span {color: #808595;font-size: 13px;}
+.featured_video_fr li h3 { font-size: 18px; margin-bottom: 20px; text-overflow: ellipsis; overflow: hidden; -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; padding-top: 10px; }
+/*all_videos*/
+.all_videos { background: #fff; margin: 20px 0; padding: 20px 15px; }
+.all_videos ul { overflow: hidden; }
+.all_videos ul li { width: 25%; float: left; margin-bottom: 10px; }
+.all_videos ul li a { margin: 10px; display: block; overflow: hidden; }
+.all_videos li i { display: block; overflow: hidden; position: relative; height: 154px; border-radius: 5px; margin-bottom: 5px; }
+.all_videos li img { width: 100%; min-height: 100%; transition: all .5s; }
+.all_videos li:hover img { transform: scale(1.1) }
+.all_videos li p { line-height: 26px; height: 26px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-bottom: 5px; }
+.all_videos li span {color: #808595;font-size: 13px;}
+.all_videos li i:before {position: absolute;content: "";top: 50%;left: 50%;background: url(../images/icon_replay.png) no-repeat center rgba(0,0,0,.5);background-size: 24px;width: 46px;height: 46px;border-radius: 50%;margin-left: -23px;margin-top: -23px;z-index: 1;}
+/*photos*/
+.photos { margin: 20px 0; }
+.photos .h_title { margin-left: 10px }
+.photos ul { overflow: hidden; }
+.photos ul li { width: 25%; float: left; margin-bottom: 10px; }
+.photos ul li a { margin: 10px; background: #fff; display: block; overflow: hidden; padding: 10px; position: relative; }
+.photos li i { display: block; overflow: hidden; position: relative; height: 195px; }
+.photos li img { width: 100%; min-height: 100%; transition: all .5s; }
+.photos li:hover img { transform: scale(1.1) }
+.photos li p { line-height: 26px; height: 26px; font-size: 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 10px; text-align: center; }
+.photos li span {font-size: 13px;background-size: 16px;position: absolute;right: 20px;bottom: 54px;background: rgb(1,38,132,.5);color: #FFF;padding: 3px 8px;border-radius: 3px;}
+/*.photos li section { display: block; position: absolute; background: url(../images/icon_clock.png) no-repeat; background-size: 24px; width: 24px; height: 24px; bottom: 12px; right: 12px; margin-left: 40px; }*/
+/*album_box*/
+.album_box { background: #fff; border-radius: 3px; padding: 20px; overflow: hidden; margin: 0 10px; }
+.album_info { float: left; overflow: hidden; width: 78%; }
+.album_info i { display: block; width: 133px; height: 100px; overflow: hidden; float: left; margin-right: 20px; border: 4px solid #e9f1f5; border-radius: 3px; }
+.album_info img { width: 100%; min-height: 100%; }
+.album_info h1 { font-size: 24px; margin-bottom: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+.album_info h1 span { color: #808595; font-size: 13px; line-height: 26px; font-weight: normal; margin-left: 20px }
+.album_info em { color: #808595; font-size: 13px; font-style: normal; margin-right: 20px }
+.album_info p.a_i_ms {margin-bottom: 10px;}
+.album_info p.a_i_ms a{ color:#012684}
+/*visitor_area*/
+.visitor_area { width: 20%; float: right; text-align: right; margin-top: 20px; }
+.visitor_area li { float: left; text-align: center; width: 33.3333%; font-size: 16px; }
+.visitor_area li span { display: block; font-weight: bold; margin: 10px 0; }
+/*pics_content*/
+.pics_content { margin: 20px 0; }
+.pics_content ul { overflow: hidden; }
+.pics_content ul li { float: left; width: 25%; }
+.pics_content ul li a { display: block; margin: 10px; background: #fff; padding: 10px; overflow: hidden; }
+.pics_content ul li i { height: 195px; overflow: hidden; display: block; }
+.pics_content ul li img { width: 100%; min-height: 100%; transition: all .5s; }
+.pics_content ul li:hover img { transform: scale(1.1) }
+/*album_next*/
+.album_next { margin: 10px; overflow: hidden; }
+.album_next ul { overflow: hidden }
+.album_next ul li { width: 50%; float: left; }
+.album_next ul li a { display: block; padding: 20px; overflow: hidden; }
+.album_next ul li:nth-child(1) a { background: url(../images/icon_left.png) no-repeat left center; padding-left: 70px; }
+.album_next ul li:nth-child(2) a { text-align: right; background: url(../images/icon_right.png) no-repeat right center; padding-right: 70px }
+.album_next span { color: #808595; margin-bottom: 30px; font-size: 16px; }
+.album_next i { width: 120px; height: 90px; display: block; overflow: hidden; border-radius: 3px; float: left; }
+.album_next i img { width: 100%; min-height: 100%; transition: all .5s; }
+.album_next ul li:hover img { transform: scale(1.1) }
+.album_next h3 { font-size: 18px; margin: 10px 0 8px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
+.album_next p { color: #808595; font-size: 13px; }
+.album_next ul li:nth-child(1) i { margin-right: 20px; }
+.album_next ul li:nth-child(2) i { float: right; margin-left: 20px; }
+/*resume*/
+.resume { background: #fff; overflow: hidden; position: relative; }
+.resume:after { content: ""; background: #f0f0f0; width: 30%; height: 100%; position: absolute; left: 0; top: 0; }
+.resume_left { z-index: 1; width: 30%; float: left; position: inherit; }
+.resume_left section { text-align: center; margin-bottom: 30px; }
+.resume_left section i { width: 160px; height: 160px; margin: 50px auto 20px; border-radius: 100%; overflow: hidden; display: block; }
+.resume_left section i img { width: 100%; min-height: 100% }
+.resume_left section p { line-height: 30px; margin: 10px 0 30px; }
+.resume_left section span {padding: 6px 10px;background: #012684;color: #fff;margin: 10px;display: inline-block;width: 30%;border-radius: 5px;}
+ul.resume_con { line-height: 36px; margin: 0 20px 0 40px; }
+ul.resume_con li { padding-left: 45px; }
+li.re_xl { background: url(../images/re_xl.png) no-repeat left center; background-size: 32px; }
+li.re_rq { background: url(../images/re_rq.png) no-repeat left center; background-size: 32px; }
+li.re_tell { background: url(../images/re_dh.png) no-repeat left center; background-size: 32px; }
+li.re_email { background: url(../images/re_email.png) no-repeat left center; background-size: 32px; }
+li.re_add { background: url(../images/re_add.png) no-repeat left top 5px; background-size: 32px; }
+.resume_left h3 { text-align: center; margin: 30px auto; font-size: 20px; }
+.resume_tec { margin: 0 40px 100px; }
+.resume_tec li { overflow: hidden; line-height: 36px; position: relative; }
+.resume_tec li span { width: 70%; float: right; background: #ccc; height: 15px; display: inline-block; margin-top: 10px; position: relative; }
+.resume_tec li span:before {position: absolute;content: "";background: #012684;background: linear-gradient( 90deg, #012684 0%, #026b70 100%)!important;left: 0;top: 0;width: 50%;height: 15px;}
+li.tec80 span:before { width: 80%; }
+li.tec70 span:before { width: 70%; }
+li.tec60 span:before { width: 60%; }
+.resume_right { padding: 30px 40px 100px; margin-left: 30%; font-size: 16px; line-height: 32px; word-break: break-all; }
+.resume_right p { margin: 10px 0; }
+.resume_right ul, .resume_right ol { margin: 20px 0 20px 20px; }
+.resume_right ul li, .resume_right li { margin-top: 3px; line-height: 30px; }
+.resume_right ul li { list-style-type: disc; }
+.resume_right ol li { list-style-type: decimal; }
+.resume_right h2, .resume_right h3, .resume_right h4, .resume_right h5, .resume_right h6 { position: relative; font-size: 20px; margin: 30px 0; line-height: 36px; }
+.resume_right img { max-width: 100% !important; width: auto !important; height: auto !important; margin: 10px auto; }
+.resume_right video { height: auto !important; display: block; margin: auto; max-width: 100% !important; }
+.resume_right table { max-width: 100%; border-width: 1px; border-color: #666; border-collapse: collapse; font-size: 15px; line-height: 26px; }
+.resume_right table th { border-width: 1px; padding: 4px 8px; border-style: solid; border-color: #666; background-color: #dedede; }
+.resume_right table td { border-width: 1px; padding: 4px 8px; border-style: solid; border-color: #666; background-color: #ffffff; }
+/*play_box*/
+.play_box { background: #191a20; padding: 40px 0; margin-bottom: 40px; overflow: hidden; color: #8c8d90; }
+.play_content { background: #222328; overflow: hidden; }
+.play_video { width: 66.667%; float: left; }
+.play_video video { height: 450px !important; display: block; margin: auto; width: 100% !important; background: #000; }
+.play_video iframe { width: 100%; height: 450px; }
+.play_info { width: 33%; float: right; }
+.play_info section { padding: 30px; }
+.play_info section p { margin-bottom: 15px; text-indent: 1.5em; font-size: 14px; }
+.play_info h1 { font-size: 22px; margin-bottom: 20px; font-weight: normal; color: #ddd }
+.play_tags {margin: 30px 0;font-size: 12px;}
+.play_tags a { color: #98989b; display: inline-block; background: #303137; padding: 5px 8px; margin-right: 8px; margin-bottom: 8px; border-radius: 3px; }
+.play_click { background: url(../images/p_fire.png) no-repeat left center; background-size: 16px; }
+.play_time { background: url(../images/p_time.png) no-repeat left center; background-size: 16px; }
+.play_about { background: url(../images/p_about.png) no-repeat left top 5px; background-size: 16px; text-indent: 1.5em; line-height: 24px; }
+.play_about a { color: #ddd; margin: 0 10px; }
+.play_info .diggit { margin: 30px auto;}
+.play_next { color: #fff; line-height: 50px; }
+.play_next li { background: #2a2b31; border-radius: 3px; }
+.play_next a { color: #98989b; }
+.play_next h3 { font-size: 15px; font-weight: normal; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
+.play_next span { float: left; color: #787d8d; padding-left: 30px; margin: 0 10px; background: url(../images/icon_right.png) no-repeat left center; background-size: 24px }
+/*pages*/
+.pages { background: #fff; padding: 30px }
+.page_title { font-size: 24px; text-indent: 1em; border-bottom: #e1e1e1 1px solid; padding-bottom: 20px; }
+/*all_news_list*/
+.all_news_list, .blogs_search { width: 70%; float: left }
+.all_news_list ul { margin: 20px 0; padding: 30px; background: #fff; }
+.all_news_list ul li { line-height: 30px; position: relative; padding-left: 20px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; margin-bottom: 5px; }
+.all_news_list ul li:after { content: ""; position: absolute; left: 5px; top: 14px; background: #ccc; width: 4px; height: 4px; }
+.all_news_list ul li span { float: right; margin-right: 10px; color: #808595; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; text-align: right; }
+.all_news_list ul li:nth-child(10n) { border-bottom: #e6e6e7 1px solid; padding-bottom: 30px; margin-bottom: 30px; }
+/*xt_search*/
+.xt_search { margin: 20px 0; color: #333; }
+.xt_search strong { color: #f00; }
+.blogs_search ul li { margin-bottom: 30px; }
+.blogs_search ul li h2 { font-weight: normal; margin: 0; font-size: 16px; margin-top: 10px; }
+.blogs_search ul li h2 a { color: #07519A; }
+.blogs_search ul li h2 a:hover, .color_purple:hover { text-decoration: underline }
+.blogs_search ul li p { font-size: 14px; margin: 5px 0; }
+.color_green { color: green; font-size: 14px; }
+.color_purple { color: #77c; }
+/*page_tags*/
+.page_tags ul { margin: 30px auto; }
+.page_tags ul a { color: #8392A5; border: 1px solid #8392A5; display: inline-block; font-size: 14px; padding: 5px 15px; margin: 5px; border-radius: 4px; transition: all .2s; }
+.page_tags ul a:hover { background: #012684; color: #fff; border: 1px solid #012684; }

File diff suppressed because it is too large
+ 0 - 0
main/assets/default/css/jquery.fancybox.css


+ 201 - 0
main/assets/default/css/m.css

@@ -0,0 +1,201 @@
+@charset "utf-8";
+/* CSS Document 
+design by www.qingqingblog.com
+*/
+@media only screen and (max-width: 1200px) {
+.box { width: 1000px; }
+.ad_top { margin-left: 5px; }
+.links a { padding: 3px 10px; }
+}
+@media screen and (min-width: 960px) and (max-width: 1024px) {
+.box { width: 940px; }
+.ad_top { width: 510px; }
+.contact_icon ul li i img { right: 0; }
+#starlist li a { padding: 0 10px }
+.menu:after { right: 0 }
+.f_news_title { font-size: 18px; }
+.featured_pics ul li i { height: 120px }
+.featured_pics ul li section { left: 10%; width: 80%; }
+.blogs, .all_news_list, .blogs_search, .blogs_info_page { width: 68%; }
+.rbox { width: 30% }
+.emial_box { padding: 16px 16px 20px 16px; }
+.links li { width: 18% }
+.photos li i, .pics_content ul li i { height: 146px; }
+.all_videos li i { height: 117px; }
+.featured_video_fl h3 { font-size: 22px; }
+.resume_tec li span { width: 63% }
+.designer section { width: 76% }
+}
+@media only screen and (max-width: 959px) {
+.box { width: 96% }
+.ad_top, .contact_icon { display: none }
+.is-search { position: fixed; right: 50px; background: none; }
+.search-page { position: fixed; top: 40px; border-radius: 0; }
+.is-search i { background: url(../images/search_m.png) no-repeat center; background-size: 24px; width: 40px; height: 40px; }
+header { height: auto }
+header { width: 100%; height: 40px; background: #fff; position: fixed; top: 0; z-index: 999; padding-top: 0; box-shadow: #e0e7ec 1px 1px 3px; }
+header .box { width: 100%; }
+.ph_margin { height: 40px; margin-bottom: 20px }
+#mnavh { display: block; top: 0; position: fixed; right: 0; }
+#mnavh.open:after { position: fixed; width: 40%; height: 100%; content: ""; right: 0; top: 40px; }
+nav { background: none; height: auto; padding-left: 0; margin-top: 0; }
+.logo img { height: 40px; margin-left: 10px }
+nav #starlist { width: 100%; background: rgba(0,0,0,0.7); overflow: hidden; }
+#starlist { display: none }
+#starlist li { width: 60%; margin: 0; background: #fff; border-bottom: #eee 10px solid; line-height: 50px; float: left; font-size: 16px; font-weight: normal; }
+#starlist li a { text-align: left; text-indent: 2em; color: #000; width: 100%; padding: 0; font-size: 15px; }
+#starlist li:nth-child(1) { border-top: #eee 1px solid; }
+#starlist ul.sub { background: none; width: 100%; display: block; position: initial; padding: 0; opacity: 1; transition: none; }
+#starlist ul.sub:before { display: none }
+#starlist ul.sub li { border-bottom: none; width: 100%; overflow: hidden; line-height: 40px !important; border-top: none; height: 40px !important; background: none; font-size: 14px; }
+#starlist ul.sub li:first-child { border-top: #eee 1px solid; }
+#starlist ul.sub li a { display: block; padding-left: 10px; text-indent: 3em; width: auto; color: #000; }
+#starlist li a:hover, #starlist ul.sub li a:hover { color: #012684 }
+.menu:after { width: 26px; height: 22px; content: ""; background: url("../images/jiantou.png") no-repeat; background-size: 16px; display: block; }
+.menu:after { top: 20px; right: 6px; border-color: transparent; }
+.menu:hover:after { transform: none; }
+.menu span { display: block; ; position: absolute; width: 50px; height: 50px; background: #fff; top: 0; right: 0; border-left: #eee 1px solid; }
+#starlist li:last-child { padding-bottom: 100%; }
+#starlist ul.sub li:last-child { padding-bottom: 0 }
+#starlist li:hover ul.sub:before { display: none }
+.swiper-slide section p { font-size: 14px; }
+.swiper-slide section span { font-size: 12px; }
+.f_news_pic { display: none }
+.featured_news { width: 63% }
+.f_news_list { width: 100% }
+.mycard { width: 34% }
+.featured_pics { margin: 10px 0 30px 0; }
+.featured_nav #tab li a { margin: 0 10px }
+.rbox { display: none }
+.blogs, .blogs_info_page, .all_news_list, .blogs_search { width: 100% }
+.links li { width: auto }
+.featured_pics { overflow-x: auto; }
+.featured_pics ul { width: 1200px !important; overflow-x: scroll; }
+.featured_nav #tab { padding: 0 20px }
+.pics_content ul li i, .photos li i { height: 140px }
+.all_videos li i { height: 113px; }
+.featured_video_fl h3 { font-size: 22px; }
+.photos li p { font-size: 14px; }
+.play_video iframe {  height: auto;}
+}
+ @media only screen and (max-width: 768px) {
+.featured_nav #tab li a { padding: 0 6px; }
+.pics_content ul li i, .photos li i { height: 150px }
+.all_videos li p { font-size: 14px; }
+.all_videos ul li, .photos ul li { width: 33.333% }
+.all_videos li i { height: 118px; }
+.featured_video_fl, .featured_video_fr, .play_video, .play_info { width: 100% }
+.featured_news { width: 56%; }
+.featured_nav #tab li a { margin: 0 5px; }
+.mycard { width: 41%; }
+.resume_left, .resume:after { width: 40% }
+.resume_tec { margin: 0 20px 100px; }
+.resume_right { margin-left: 40% }
+.ad img { width: 100% }
+}
+ @media only screen and (max-width: 640px) {
+.featured_news, .mycard { width: 100% }
+.featured_nav #tab li a { margin: 0 10px }
+.mycard i { float: left; margin: 0 20px 0 0; height: 120px; width: 160px; }
+.mycard ul li { line-height: 30px }
+.mycard { height: auto; margin: 20px 0 }
+p.mycard_title_en { display: none; }
+.blogs_list i { width: 160px; height: 120px }
+.blogs_list h2 { font-size: 18px; margin: 5px 0; }
+.blogs_base span { margin-right: 10px }
+.blogs_base { margin: 10px 0 0 0; font-size: 12px; }
+a.read_more { font-size: 12px; padding: 5px 10px; width: 60px; }
+h2.h_title { font-size: 18px; }
+.links { margin: 0 auto }
+.links a { font-size: 12px; padding: 0 10px; }
+.featured_pics { margin: 10px 0 20px 0; }
+.featured_news { margin-top: 20px }
+.wz_love ul li { width: 100% }
+.designer i { width: 60px; height: 60px }
+.designer i img { width: 100% }
+.designer h3 { margin: 0 }
+.designer p { font-size: 14px; }
+.designer section { width: 74%; margin-top: 5px; }
+.designer span img { width: 70px }
+.all_videos ul li, .photos ul li { width: 50% }
+.banner { width: 1000px; overflow-x: scroll; }
+.banner_box { overflow-x: auto; }
+.play_video video { height: auto !important }
+.play_box { padding: 10px 0 }
+.play_info section { padding: 10px; }
+.resume_right { margin-left: 0; padding: 15px; }
+.resume_left { width: 100%; background: #f0f0f0; margin-bottom: 30px }
+.resume:after { display: none }
+.resume_tec { margin: 0 20px 20px; }
+.featured_video_fl { height: 300px }
+.pics_content ul li { width: 50% }
+.album_info i { width: 90px; height: 68px; margin-right: 10px; }
+.album_box { padding: 10px; }
+.album_info h1 { font-size: 18px; margin: 10px; }
+.album_info { float: none; width: 100%; }
+.album_info p.a_i_ms { display: none; }
+p.a_i_time { font-size: 12px; }
+.album_info span { display: none; }
+.album_info em { margin-right: 10px; }
+.visitor_area { width: 100%; }
+.album_next ul li:nth-child(1) a { padding-left: 30px; background: url(../images/icon_left.png) no-repeat left top 60%; background-size: 32px; }
+.album_next ul li:nth-child(2) a { background: url(../images/icon_right.png) no-repeat right top 60%; background-size: 32px; padding-right: 30px; }
+.album_next span { display: block; margin-bottom: 10px; font-size: 14px; }
+.album_next p, .album_next h3 { display: none; }
+.play_info h1, .page_title { font-size: 18px; }
+.pages { padding: 15px; }
+.icon-top { right: 20px; bottom: 20px }
+.mycard .ewm { display: none }
+.all_news_list ul { padding: 15px 10px; }
+.all_news_list ul li span { font-size: 12px; }
+.links li {width: 33.3333%;}
+}
+ @media only screen and (max-width: 480px) {
+.search-page .search { width: 90% }
+.search-page .go-left { right: 5px; top: 5px; background-size: 16px; width: 16px; height: 16px; }
+.featured_nav #tab li a { margin: 0 8px; padding: 0; font-size: 14px; }
+.featured_nav #tab { padding: 0 10px; line-height: 40px; margin: 5px 0; }
+.featured_nav { margin-bottom: 20px }
+.f_news_list li i { width: 120px; height: 90px; }
+.banner li { font-size: 16px; }
+.f_news_list li p { font-size: 14px; }
+.mycard { display: none }
+.blogs_list { padding: 15px; }
+.blogs_list i { width: 90px; height: 68px; margin: 0 10px 10px 0 }
+.blogs_list h2 { font-size: 15px; white-space: inherit; line-height: inherit; text-overflow: ellipsis; -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; margin: 10px 0; }
+.blogs_list p { clear: both; }
+.featured_pics ul { padding: 10px }
+.footer_nav li a { padding: 0 5px; margin: 0 5px; font-size: 14px; }
+.footer_nav li a:after { right: -5px; }
+.featured_pics ul { width: 800px !important; overflow-x: scroll; }
+.featured_pics ul li i { height: 113px }
+.featured_pics ul li a { margin: 5px; }
+.icon_more { margin-top: 0 }
+.wz_info span { margin: 0 5px 0 0 }
+.info-pre-next p, .info-pre-next p:nth-child(2) { width: 100%; float: none; text-align: left }
+.designer span { float: none; display: block; }
+.designer span img { margin: auto; width: 140px; }
+.designer section { width: 100%; margin: 20px 0; }
+.wz_love ul li a { margin: 0 15px; }
+.wz_love .h_title { margin: 10px 0 0 15px; }
+article { padding: 15px; }
+.wz_love ul li span { left: 148px; }
+footer { margin-top: 20px }
+.epages { margin: 20px auto }
+.pics_content ul li i, .photos li i { height: 100px }
+.photos ul li { margin-bottom: 0 }
+.epages { font-size: 12px; }
+.featured_video_fl { height: 200px; }
+.featured_video_fl h3 { font-size: 15px; line-height: 24px; }
+.featured_video_fl i:before { width: 50px; height: 50px; margin-top: -25px; margin-left: -25px;background-size: 24px; }
+.featured_video_fl section { padding: 15px; }
+.all_videos li i { height: 78px; }
+.all_videos { padding: 5px }
+.all_videos li i:before { background-size: 15px; width: 30px; height: 30px; margin-left: -15px; margin-top: -15px; }
+.featured_video_fr li i { width: 120px; height: 80px; margin-right: 10px; border-radius: 10px; }
+.featured_video_fr li h3 { font-size: 15px; font-weight: normal; margin-bottom: 10px }
+.featured_video_fr ul li:last-child a { padding-bottom: 20px }
+.featured_video_fr ul li a { margin: 10px }
+.featured_pics ul li section { left: 7%; width: 84%; }
+.featured_pics ul li p { font-size: 12px; }
+}

BIN
main/assets/default/images/01.jpg


BIN
main/assets/default/images/02.jpg


BIN
main/assets/default/images/03.jpg


BIN
main/assets/default/images/04.jpg


BIN
main/assets/default/images/05.jpg


BIN
main/assets/default/images/06.jpg


BIN
main/assets/default/images/ad01.jpg


BIN
main/assets/default/images/ad3.jpg


BIN
main/assets/default/images/ads.png


BIN
main/assets/default/images/ads2.png


BIN
main/assets/default/images/avatar.png


BIN
main/assets/default/images/fire.png


BIN
main/assets/default/images/ga.png


BIN
main/assets/default/images/icon_clock.png


Some files were not shown because too many files changed in this diff