dever 4 년 전
부모
커밋
961f8ffe7f
100개의 변경된 파일5856개의 추가작업 그리고 0개의 파일을 삭제
  1. 2 0
      app/boot.php
  2. 65 0
      app/collection/assets/manage/html/content.html
  3. 154 0
      app/collection/database/buy.php
  4. 302 0
      app/collection/database/cate.php
  5. 194 0
      app/collection/database/content.php
  6. 750 0
      app/collection/database/info.php
  7. 682 0
      app/collection/database/old.php
  8. 153 0
      app/collection/database/ranking.php
  9. 125 0
      app/collection/database/type.php
  10. 8 0
      app/collection/index.php
  11. 305 0
      app/collection/lib/Manage.php
  12. 83 0
      app/collection/src/Api.php
  13. 80 0
      app/collection/template/manage/content.php
  14. 194 0
      app/content/database/news.php
  15. 8 0
      app/content/index.php
  16. 223 0
      app/content/lib/Article.php
  17. 76 0
      app/content/lib/Author.php
  18. 60 0
      app/content/lib/Manage.php
  19. 19 0
      app/content/lib/Page.php
  20. 8 0
      boot.php
  21. 10 0
      common.php
  22. 84 0
      config/base.php
  23. 119 0
      config/env/localhost/default.php
  24. 6 0
      config/route.php
  25. 66 0
      data/compile/dreamland/collection/manage/content.cmp.php
  26. 323 0
      data/compile/dreamland/manage/layadmin/console.cmp.php
  27. 62 0
      data/compile/dreamland/manage/layadmin/home.cmp.php
  28. 27 0
      data/compile/dreamland/manage/layadmin/inc/head.cmp.php
  29. 13 0
      data/compile/dreamland/manage/layadmin/inc/menu.cmp.php
  30. 71 0
      data/compile/dreamland/manage/layadmin/inc/nav.cmp.php
  31. 51 0
      data/compile/dreamland/manage/layadmin/inc/script.cmp.php
  32. 79 0
      data/compile/dreamland/manage/layadmin/login.cmp.php
  33. 161 0
      data/compile/dreamland/manage/layadmin/project/database/list.cmp.php
  34. 119 0
      data/compile/dreamland/manage/layadmin/project/database/update.cmp.php
  35. 1 0
      data/readme
  36. 189 0
      main/assets/pc/article.html
  37. 114 0
      main/assets/pc/contact.html
  38. 2 0
      main/assets/pc/css/article.css
  39. 1 0
      main/assets/pc/css/article.css.map
  40. 2 0
      main/assets/pc/css/contact.css
  41. 1 0
      main/assets/pc/css/contact.css.map
  42. 0 0
      main/assets/pc/css/global.css
  43. 1 0
      main/assets/pc/css/global.css.map
  44. 0 0
      main/assets/pc/css/index.css
  45. 1 0
      main/assets/pc/css/index.css.map
  46. 2 0
      main/assets/pc/css/intro.css
  47. 1 0
      main/assets/pc/css/intro.css.map
  48. 2 0
      main/assets/pc/css/legal.css
  49. 1 0
      main/assets/pc/css/legal.css.map
  50. 0 0
      main/assets/pc/css/list.css
  51. 1 0
      main/assets/pc/css/list.css.map
  52. 0 0
      main/assets/pc/css/list1.css
  53. 1 0
      main/assets/pc/css/list1.css.map
  54. 2 0
      main/assets/pc/css/magzine.css
  55. 1 0
      main/assets/pc/css/magzine.css.map
  56. 0 0
      main/assets/pc/css/video.css
  57. 1 0
      main/assets/pc/css/video.css.map
  58. BIN
      main/assets/pc/images/ad.jpg
  59. BIN
      main/assets/pc/images/ad1.jpg
  60. BIN
      main/assets/pc/images/arrow-l.png
  61. BIN
      main/assets/pc/images/arrow-r.png
  62. BIN
      main/assets/pc/images/banner.jpg
  63. BIN
      main/assets/pc/images/btn-next.png
  64. BIN
      main/assets/pc/images/btn-prev.png
  65. BIN
      main/assets/pc/images/close.png
  66. BIN
      main/assets/pc/images/ico-col-cur.png
  67. BIN
      main/assets/pc/images/ico-col.png
  68. BIN
      main/assets/pc/images/ico-email.png
  69. BIN
      main/assets/pc/images/ico-password.png
  70. BIN
      main/assets/pc/images/ico-row-cur.png
  71. BIN
      main/assets/pc/images/ico-row.png
  72. BIN
      main/assets/pc/images/ico-video.png
  73. BIN
      main/assets/pc/images/jpcm.png
  74. BIN
      main/assets/pc/images/jpw.png
  75. BIN
      main/assets/pc/images/logo.png
  76. BIN
      main/assets/pc/images/mag.jpg
  77. BIN
      main/assets/pc/images/qrcode.png
  78. BIN
      main/assets/pc/images/sina.png
  79. BIN
      main/assets/pc/images/tmp1.jpg
  80. BIN
      main/assets/pc/images/tmp2.jpg
  81. BIN
      main/assets/pc/images/top.png
  82. BIN
      main/assets/pc/images/wechat.png
  83. 533 0
      main/assets/pc/index.html
  84. 142 0
      main/assets/pc/intro.html
  85. 2 0
      main/assets/pc/js/article.js
  86. 1 0
      main/assets/pc/js/article.js.map
  87. 155 0
      main/assets/pc/js/config.js
  88. 2 0
      main/assets/pc/js/contact.js
  89. 1 0
      main/assets/pc/js/contact.js.map
  90. 0 0
      main/assets/pc/js/global.js
  91. 0 0
      main/assets/pc/js/global.js.map
  92. 2 0
      main/assets/pc/js/index.js
  93. 1 0
      main/assets/pc/js/index.js.map
  94. 2 0
      main/assets/pc/js/intro.js
  95. 1 0
      main/assets/pc/js/intro.js.map
  96. 2 0
      main/assets/pc/js/legal.js
  97. 1 0
      main/assets/pc/js/legal.js.map
  98. 2 0
      main/assets/pc/js/list.js
  99. 1 0
      main/assets/pc/js/list.js.map
  100. 2 0
      main/assets/pc/js/list1.js

+ 2 - 0
app/boot.php

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

+ 65 - 0
app/collection/assets/manage/html/content.html

@@ -0,0 +1,65 @@
+<style>
+.layui-col-md2
+{
+    height: 250px;
+    border:1px solid #bababa;
+    margin:5px;
+}
+.layui-table-cell
+{
+    padding: 0px 0px;
+}
+.layui-col-md2 .img
+{
+    text-align: center;overflow: hidden;text-align: center;
+}
+.price
+{
+    margin-top: -3px;
+    margin-bottom: -11px;
+}
+</style>
+<div class="layui-fluid layadmin-cmdlist-fluid">
+  <ul class="layui-row layui-col-space30" id="sortable">
+    <li class="layui-col-md2 layui-col-sm4" id="data" style="">
+        <div class="cmdlist-container">
+            <div href="javascript:;" class="img" style="height: 154px;">
+              <img src="../../layuiadmin/style/res/template/portrait.png">
+            </div>
+            <a href="javascript:;" class="edit">
+              <div class="cmdlist-text" style="text-align:center;">
+                <p class="info">2018春夏季新款港味短款白色T恤+网纱中长款chic半身裙套装两件套</p>
+                <div class="price">
+                    <b></b>
+                </div>
+
+                <div class="text"></div>
+                
+
+                <div style="margin-top:10px;text-align:center;">
+                <div class="layui-table-cell"><a href="javascript:;" class="data_edit" onclick=""><button type="button" class="btn btn-info btn-rounded waves-effect waves-light m-b-5 layui-btn layui-btn-xs">内容</button></a>&nbsp;&nbsp;<a href="#" class="oper_delete"><button type="button" class="btn btn-info btn-rounded waves-effect waves-light m-b-5 layui-btn layui-btn-danger layui-btn-xs"><span class="am-icon-trash-o"></span>删除</button></a>&nbsp;&nbsp;</div>
+                </div>
+              </div>
+            </a>
+        </div>
+    </li>
+  </ul>
+</div>
+
+<script id="url">var url = ""</script>
+<script>
+  $( function() {
+    var sort = $( "#sortable" ).sortable({
+        opacity: 0.7,
+        stop:function(){
+          var arr = $( "#sortable" ).sortable('toArray');
+          arr = arr.join(',');
+          $.post(url, {data:arr}, function()
+          {
+
+          })
+        }
+    });
+    $( "#sortable" ).disableSelection();
+  } );
+  </script>

+ 154 - 0
app/collection/database/buy.php

@@ -0,0 +1,154 @@
+<?php
+
+# 定义几个常用的选项
+$status = array
+(
+    1 => '在线',
+    2 => '下线',
+);
+
+return array
+(
+    # 表名
+    'name' => 'buy',
+    # 显示给用户看的名称
+    'lang' => '购买设置',
+    'order' => 100,
+    'menu' => false,
+    'ends' => array
+    (
+        'insert' => 'collection/lib/manage.setBuyCache',
+        'update' => 'collection/lib/manage.setBuyCache',
+    ),
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            //'list'        => true,
+        ),
+
+        'info_id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '合集',
+            'default'   => '',
+            'desc'      => '合集',
+            'match'     => 'is_numeric',
+            'update'    => 'hidden',
+            'value'     => Dever::input('search_option_info_id')
+        ),
+
+        'num'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '购买数量-直接填写购买的数字即可',
+            'default'   => '1',
+            'desc'      => '购买数量',
+            'match'     => 'option',
+            'update'    => 'text',
+            //'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '购买名称-一般为“购买n张”,如购买1张,如果为空,则根据购买本数自动生成如“购买n张”',
+            'default'   => '',
+            'desc'      => '购买名称',
+            'match'     => 'option',
+            'update'    => 'text',
+            //'search'    => 'fulltext',
+            'list'      => 'Dever::load("collection/lib/manage.getName", {id})',
+        ),
+
+        'price'     => array
+        (
+            'type'      => 'varchar-50',
+            'name'      => '购买时的标价-为空则自动根据合集的门票单张支付价格计算',
+            'default'   => '',
+            'desc'      => '购买时的标价',
+            'match'     => 'option',
+            'update'    => 'text',
+            'list'      => 'Dever::load("collection/lib/manage.getPrice", {id})',
+        ),
+
+        'code'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '生成门票数量-直接填写购买当前本数所能得到的门票数,默认为1',
+            'default'   => '1',
+            '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_name' => '排序',
+            '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,
+            //'search'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        
+    ),
+
+
+    'request' => array
+    (
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'info_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc', 'cdate' => 'desc'),
+            'col' => '*',
+        ),
+    ),
+);

+ 302 - 0
app/collection/database/cate.php

@@ -0,0 +1,302 @@
+<?php
+# 获取分类权限
+$auth = Dever::tops();
+$status = Dever::config('base')->status;
+$type = array
+(
+    # 默认类型
+    3 => '图文内容',
+    1 => '全屏图',
+    
+    # 2019-03-27 增加两个类型
+    7 => '长图(文字)',
+    8 => '横屏图',
+
+    2 => '长图',
+    9 => '无边框图片',
+    10 => '四宫格图片',
+
+    # 2018-12-11 增加3个类型
+    4 => '全屏视频',
+    5 => '留言视频',
+    6 => '留言音频',
+
+    # 2019-03-27 增加三个类型
+    21 => '对话模板',
+
+    # 关联类型 > 10
+    //11 => '关联图文',
+    12 => '关联视频',
+    13 => '关联直播',
+
+    # 2019-07-26
+    31 => '电商产品',
+    32 => 'H5',
+);
+
+$type = array
+(
+    # 图文
+    1 => '图文内容',
+    2 => '全屏图+文字',
+    3 => '长图+文字',
+    4 => '横屏图+文字',
+
+    # 图片
+    11 => '长图',
+    12 => '无边框图片',
+    13 => '四宫格图片',
+
+    # 音视频
+    21 => '全屏视频',
+    22 => '留言视频',
+    23 => '留言音频',
+
+    # 交互
+    31 => '对话模板',
+
+    # 电商
+    41 => '电商产品',
+
+    # h5
+    51 => '链接地址',
+
+    # 关联
+    61 => '关联图文',
+    62 => '关联视频',
+    63 => '关联直播',
+);
+
+$type = Dever::db('collection/type')->state();
+
+$list = array
+(
+    # 匹配的正则或函数 选填项
+    'option' => array
+    (
+
+        'name' => array('yes', 'like'),
+        'id' => array($auth, 'in'),
+        'state' => 'yes',
+    ),
+    'type' => 'all',
+    'order' => array('reorder' => 'desc', 'id' => 'desc'),
+    'page' => array(20, 'list'),
+    'col' => '*|id',
+);
+
+
+$id = Dever::input('where_id');
+return array
+(
+    # 表名
+    'name' => 'cate',
+    # 显示给用户看的名称
+    'lang' => '分类设置',
+    # 后台菜单排序
+    'order' => 1,
+    'gettype' => $type,
+    'end' => array
+    (
+        'update' => array
+        (
+            'passport/lib/manage.updateSystem',
+            'manage/top.sync',
+        ),
+        'insert' => array
+        (
+            'passport/lib/manage.updateSystem',
+            'manage/top.sync',
+        )
+    ),
+    # 数据结构
+    '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,
+        ),
+
+        'type'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '内容数据类型',
+            'default'   => '',
+            'desc'      => '内容数据类型',
+            'match'     => 'is_numeric',
+            'update'    => 'checkbox',
+            'option'    => $type,
+        ),
+
+        'logo'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => 'logo图-图片尺寸100*100px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+            'default'   => '',
+            'desc'      => 'logo图',
+            'match'     => 'option',
+            'update'  => 'image',
+            'key'       => '1',
+            'place'     => '100*100',
+        ),
+
+        'cover'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '封面图-图片尺寸460*759px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+            'default'   => '',
+            'desc'      => '封面图',
+            'match'     => 'option',
+            'update'  => 'image',
+            'key'       => '1',
+            'place'     => '460*759',
+        ),
+
+        'desc'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '简介',
+            'default'   => '',
+            'desc'      => '简介',
+            'match'     => 'option',
+            'update'    => 'textarea',
+        ),
+
+        'status'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '上线状态',
+            'default'   => '2',
+            'desc'      => '上线状态',
+            'match'     => 'is_numeric',
+            //'update'  => 'select',
+            'option'    => $status,
+            'search'    => 'select',
+            'list'      => true,
+            'edit'      => 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,
+        'delete' => false,
+
+        # 自定义快捷新增和编辑
+        'button' => array
+        (
+            '数据类型管理' => array('list', 'type&project=collection&oper_parent=cate&oper_project=collection'),
+        ),
+    ),
+
+    'top' => array
+    (
+        # 数据来源
+        'data' => 'state',
+        # 菜单名
+        'name' => '项目选择',
+        # 默认值
+        'value' => 1,
+        # 对应的字段值,设置这个之后,所有设置等于这个值的字段,都要遵循这个权限的控制
+        'key' => Dever::config('base')->top,
+        # 本表中代表名称的字段
+        'col' => 'name',
+    ),
+
+    'request' => array
+    (
+        'list' => $list,
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'state' => 1,
+                'status' => 2,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc','id' => 'desc'),
+            'col' => 'id,name,logo',
+        ),
+
+        'getIds' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'ids' => array('yes-id', 'in'),
+                'status' => 2,
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc','id' => 'desc'),
+            'col' => '*,id as value|id',
+        ),
+    ),
+);

+ 194 - 0
app/collection/database/content.php

@@ -0,0 +1,194 @@
+<?php
+
+$id = Dever::input('search_option_info_id');
+$cate = array();
+if ($id) {
+    $collection = Dever::db('collection/info')->one($id);
+    $cate = Dever::db('collection/cate')->one($collection['cate_id']);
+}
+
+$type_default = 3;
+$type_config = Dever::db('collection/cate')->config['gettype'];
+if ($cate) {
+    $type = array();
+    $cate_type = explode(',', $cate['type']);
+    $i = 0;
+    foreach ($cate_type as $k => $v) {
+        if (isset($type_config[$v])) {
+            if ($i == 0) {
+                $type_default = $v;
+            }
+            $type[$v] = $type_config[$v];
+            $i++;
+        }
+    }
+} else {
+    $type = $type_config;
+}
+
+return array
+(
+    # 表名
+    'name' => 'content',
+    # 显示给用户看的名称
+    'lang' => '内容管理',
+    'menu' => false,
+    'gettype' => $type,
+    'end' => array
+    (
+        'insert' => 'collection/lib/manage.addContent',
+    ),
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            //'search'    => 'order',
+            //'list'        => true,
+        ),
+
+        'info_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '合集',
+            'default'   => '',
+            'desc'      => '合集',
+            'match'     => 'is_numeric',
+            'update'    => 'hidden',
+            'value'     => Dever::input('search_option_info_id')
+        ),
+
+        'type'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '类型',
+            'default'   => $type_default,
+            'desc'      => '类型',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $type,
+        ),
+
+        'type_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '类型ID',
+            'default'   => '',
+            'desc'      => '类型ID',
+            'match'     => 'is_numeric',
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '标题',
+            'default'   => '',
+            'desc'      => '标题',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'      => true,
+            //增加预览
+            'preview'   => true,  
+        ),
+
+        'pic'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '封面图-封面图尺寸375*693,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+            'default'   => '',
+            'desc'      => '封面图',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '375*693',
+        ),
+
+        'reorder'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '页号',
+            'default'   => '1',
+            'desc'      => '请输入排序',
+            'match'     => 'option',
+            //'update'    => 'text',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'asc',
+            '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,
+            //'search'    => 'date',
+            //'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        'insert' => false,
+        'edit' => false,
+        //'delete' => false,
+        'num' => false,
+        'page_list_table' => 'content',
+
+        # 自定义快捷新增和编辑
+        'button' => array
+        (
+            '新增内容' => array('location', 'add'),
+            '预览' => array('fast', 'main/preview.get?type=4&id=' . Dever::input('search_option_info_id')),
+        ),
+    ),
+
+    # request 请求接口定义
+    'request' => array
+    (
+        'getAllPage' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'info_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'asc', 'id' => 'desc'),
+            'page' => array(10, 'list'),
+            'col' => '*',
+        ),
+
+        'getAllByReorder' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'info_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'order' => array('reorder' => 'desc', 'id' => 'desc'),
+            'col' => '*',
+        ),
+    )
+);

+ 750 - 0
app/collection/database/info.php

@@ -0,0 +1,750 @@
+<?php
+$time = (7*86400);
+$audit = Dever::config('base')->audit;
+
+$status = Dever::config('base')->status;
+
+# 获取小刊分类权限
+$auth = Dever::tops();
+$cate = function() use ($auth)
+{
+	$array = array();
+	if ($auth) {
+		$info = Dever::db('collection/cate')->getIds(array('ids' => $auth));
+	} else {
+		$info = Dever::db('collection/cate')->state();
+	}
+	
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+
+
+$share = array
+(
+	1 => '显示',
+	2 => '不显示',
+);
+
+$ranking = array
+(
+	1 => '开启',
+	2 => '不开启',
+);
+
+$sell = array
+(
+	1 => '开启',
+	2 => '不开启',
+);
+
+$buy = array
+(
+	1 => '收费',
+	2 => '免费',
+);
+
+$hot = array
+(
+	1 => '热门',
+	2 => '普通',
+);
+
+
+$page = 15;
+
+# 常用的col
+$col = '*';
+
+$config = array
+(
+	# 表名
+	'name' => 'info',
+	# 显示给用户看的名称
+	'lang' => '合集列表',
+	'order' => 100,
+	'ends' => array
+	(
+		'insert' => 'collection/lib/manage.setInfoCache',
+		'update' => 'collection/lib/manage.setInfoCache',
+		'update_status' => 'collection/lib/manage.setInfoCache',
+	),
+
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'list'		=> true,
+		),
+
+		'hr1'		=> array
+		(
+			'name' 		=> '基本配置',
+			'class'		=> '',//本项必须填写
+			'attr'		=> '',
+		),
+
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-180',
+			'name' 		=> '标题',
+			'default' 	=> '',
+			'desc' 		=> '标题',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'desc'		=> array
+		(
+			'type' 		=> 'varchar-800',
+			'name' 		=> '描述',
+			'default' 	=> '',
+			'desc' 		=> '描述',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			//'list'		=> true,
+		),
+
+		'cate_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '分类',
+			'default' 	=> '1',
+			'desc' 		=> '分类',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'option'	=> $cate,
+			'search'	=> 'select',
+			//'list'		=> true,
+		),
+
+		'pic_cover'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '封面图-图片尺寸660*660px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+			'default' 	=> '',
+			'desc' 		=> '封面图',
+			'match' 	=> 'is_string',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '660*660',
+		),
+
+		'pic_bg'		=> array
+		(
+			'type' 		=> 'text-255',
+			'name' 		=> '全屏背景图-图片尺寸750*1386px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+			'default' 	=> '',
+			'desc' 		=> '全屏背景图',
+			'match' 	=> 'is_string',
+			'update'	=> 'images',
+			'key' 		=> '1',
+			'place'		=> '750*1386',
+		),
+
+		'bgmusic'		=> array
+		(
+			'type' 		=> 'varchar-800',
+			'name' 		=> '背景音乐-音频格式mp3,上传大小不能超过100M',
+			'default' 	=> '',
+			'desc' 		=> '背景音乐',
+			'match' 	=> 'option',
+			'update'	=> 'upload',
+			'key' 		=> '2',
+			'place'		=> '150',
+			'upload'	=> 'qiniu',
+			'large' 	=> true,
+			//不覆盖原文件,生成新文件
+			'cover'		=> 2,
+		),
+
+		'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',
+		),
+
+		'hr2'		=> array
+		(
+			'name' 		=> '购买配置',
+			'class'		=> '',//本项必须填写
+			'attr'		=> '',
+		),
+
+		'buy'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '是否收费',
+			'default' 	=> '1',
+			'desc' 		=> '是否收费',
+			'match' 	=> 'option',
+			'update'	=> 'radio',
+			'option'	=> $buy,
+			'control'	=> 'buy',
+			//'list'		=> true,
+			'search'	=> 'select',
+		),
+
+		'num_buy'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '购买数',
+			'default' 	=> '0',
+			'desc' 		=> '请填写购买数',
+			'match' 	=> 'option',
+			'search'	=> 'order',
+			'show'		=> 'buy=1',
+		),
+
+		'num_ratio_buy'		=> array
+		(
+			'type' 		=> 'varchar-20',
+			'name' 		=> '购买系数-系数不能小于等于0,支持两位小数,总购买量=(用户当前购买数+购买基数)*购买系数。',
+			'default' 	=> '1',
+			'desc' 		=> '手动增加购买系数',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'show'		=> 'buy=1',
+		),
+
+		'num_add_buy'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '购买基数',
+			'default' 	=> '0',
+			'desc' 		=> '手动增加阅读数',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'show'		=> 'buy=1',
+		),
+
+		'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',
+		),
+
+		'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'		=> 'Dever::load("collection/lib/manage.num?id={id}")',
+			'list_name'	=> '统计数字',
+		),
+
+		'buy_price'      => array
+        (
+            'type'      => 'varchar-50',
+            'name'      => '门票单张支付价格-单位元,直接填写数字即可',
+            'default'   => '',
+            'desc'      => '支付价格',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'show'		=> 'buy=1',
+        ),
+
+        'buy_content'       => array
+        (
+            'type'      => 'text-255',
+            'name'      => '购买说明',
+            'default'   => "<p>
+	1、门票使用成功后可直接通过【入口】进入合集;&nbsp;
+</p>
+<p>
+	2、合集门票为虚拟商品,如无系统问题,使用后不可退款;
+</p>
+<p>
+	&nbsp;3、购买多少张就会生成多少门票,每个门票只能被激活一次;
+</p>
+<p>
+	&nbsp;4、当购买成功后,系统会自动使用一个门票;&nbsp;
+</p>
+<p>
+	5、若您购买了多张门票,可将剩余门票赠送好友;
+</p>
+<p>
+	&nbsp;6、如有其它问题可咨询在线客服。
+</p>",
+            'desc'      => '请输入内容',
+            'match'     => 'is_string',
+            'update'    => 'editor',
+            'key'       => 1,
+            'show'		=> 'buy=1',
+        ),
+
+        'buy_score'         => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '购买增加积分数-直接填写购买门票的积分数,设置之后,积分规则里的设置将失效,如果设置为0,则按照积分规则进行增加积分',
+            'default'   => '20',
+            'desc'      => '增加积分数',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'show'		=> 'buy=1',
+        ),
+
+        'code_score'         => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '使用门票增加积分数-直接填写使用门票首次进入合集增加的积分数,设置之后,积分规则里的设置将失效,如果设置为0,则按照积分规则进行增加积分',
+            'default'   => '0',
+            'desc'      => '使用门票增加积分数',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'show'		=> 'buy=1',
+        ),
+
+        'code_parent_score'         => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '使用门票增加邀请者积分数-直接填写使用门票首次进入合集增加的邀请者的积分数,设置之后,积分规则里的设置将失效,如果设置为0,则按照积分规则进行增加积分',
+            'default'   => '10',
+            'desc'      => '使用门票增加邀请者积分数',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'show'		=> 'buy=1',
+        ),
+
+        'audit'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '审核',
+			'default' 	=> '1',
+			'desc' 		=> '审核',
+			'match' 	=> 'is_numeric',
+			//'update'	=> 'select',
+			'option'	=> $audit,
+			//'search'	=> 'select',
+			//'list'		=> true,
+			//'edit'		=> true,
+		),
+
+		'status'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '上线状态',
+			'default' 	=> '1',
+			'desc' 		=> '上线状态',
+			'match' 	=> 'is_numeric',
+			//'update'	=> 'select',
+			'option'	=> $status,
+			'search'	=> 'select',
+			'list'		=> true,
+			'edit'		=> true,
+		),
+
+		'hr3'		=> array
+		(
+			'name' 		=> '功能开关',
+			'class'		=> '',//本项必须填写
+			'attr'		=> '',
+		),
+
+        'sell'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '是否开启分销',
+			'default' 	=> '1',
+			'desc' 		=> '是否开启分销',
+			'match' 	=> 'option',
+			'update'	=> 'radio',
+			'option'	=> $sell,
+			'list'		=> true,
+			'search'	=> 'select',
+			'edit'		=> true,
+		),
+
+        'ranking'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '是否开启排行榜',
+			'default' 	=> '1',
+			'desc' 		=> '是否开启排行榜',
+			'match' 	=> 'option',
+			'update'	=> 'radio',
+			'option'	=> $ranking,
+			'list'		=> true,
+			'search'	=> 'select',
+			'edit'		=> true,
+		),
+
+		'hot'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '是否热门',
+			'default' 	=> '2',
+			'desc' 		=> '是否热门',
+			'match' 	=> 'option',
+			//'update'	=> 'radio',
+			'option'	=> $hot,
+			'search'	=> 'select',
+			'list'		=> true,
+			'edit'		=> true,
+		),
+
+		'hr4'		=> array
+		(
+			'name' 		=> '分享配置',
+			'class'		=> '',//本项必须填写
+			'attr'		=> '',
+		),
+
+		'share'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '是否显示分享按钮',
+			'default' 	=> '2',
+			'desc' 		=> '是否显示分享按钮',
+			'match' 	=> 'option',
+			'update'	=> 'radio',
+			'option'	=> $share,
+			'control'	=> 'share',
+		),
+
+		'share_title'		=> array
+		(
+			'type' 		=> 'varchar-100',
+			'name' 		=> '分享标题',
+			'default' 	=> '',
+			'desc' 		=> '分享标题',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'show'		=> 'share=1',
+		),
+
+		'share_pic'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '分享图片-图片尺寸570*570px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+			'default' 	=> '',
+			'desc' 		=> '分享图片',
+			'match' 	=> 'is_string',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '150',
+			'show'		=> 'share=1',
+			//'upload'	=> 'qiniu',
+			//'large' 	=> true,
+		),
+
+		'share_content'		=> array
+		(
+			'type' 		=> 'varchar-200',
+			'name' 		=> '分享内容',
+			'default' 	=> '',
+			'desc' 		=> '分享内容',
+			'match' 	=> 'option',
+			'update'	=> 'textarea',
+			'show'		=> 'share=1',
+		),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'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',
+		),
+
+		'udate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '更新时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+		),
+
+		'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,
+		),
+	),
+
+	'top' => Dever::config('base')->top,
+
+	# 增加这个,为了给当前的list增加一个option $admin = Dever::load('manage/auth.info');
+	'top_option' => array
+	(
+		array
+		(
+			'value' => $auth,
+			'col' => 'cate_id',
+		),
+		array
+		(
+			'value' => Dever::load('manage/auth.authData'),
+			'col' => 'id',
+		),
+	),
+	
+	# 管理功能
+	'manage' => array
+	(
+		//'insert' => false,
+		'delete' => false,
+		# 列表
+		'list_button' => array
+		(
+			'update' => '编辑合集',
+			'br1' => array('<br />'),
+			'edit' => array('预览链接', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=4'))),
+			'br2' => array('<br />'),
+			'list10' => array('榜单列表', '"collection_ranking&project=act&search_type=4&search_option_collection_id={id}&oper_parent=info&oper_project=collection"' , '{audit} == 1 && {buy} == 1'),
+			'add1' => array('榜单设置', '"ranking&project=collection&search_option_info_id={id}&oper_parent=info&oper_project=collection&oper_save_jump=info&where_id={id}"', '{audit} == 1 && {buy} == 1'),
+
+			'list' => array('内容管理', '"content&search_option_info_id={id}&oper_parent=info&page_type=1"' , '{audit} == 1'),
+			
+			'list1' => array('门票管理', '"buy&search_option_info_id={id}&oper_parent=info"' , '{audit} == 1 && {buy} == 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', 'id' => 'desc'),
+			'limit' => '0,1000',
+			'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+		),
+
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				//'audit' => 2,
+				'buy' => 'yes',
+				'cate_id' => 'yes',
+				'status' => 2,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'pdate' => 'desc', 'id' => 'desc'),
+			//'page' => array(10, 'list'),
+			'col' => $col,
+		),
+
+		'getAllByPage' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				//'audit' => 2,
+				'cate_id_1' => array('yes-cate_id', '=', 'and('),
+				'time' => array('yes-pdate', '<=', 'or)'),
+				'buy' => 'yes',
+				'cate_id' => 'yes',
+				'status' => 2,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'pdate' => 'desc', 'id' => 'desc'),
+			'page' => array(10, 'list'),
+			'col' => $col,
+		),
+		
+		# 更新浏览量
+		'addView' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_view' => array('1', '+='),
+			),
+		),
+
+		# 更新购买量
+		'addDing' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_up' => array('1', '+='),
+			),
+		),
+
+		'getIds' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'cate_id' => array('yes-cate_id', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc', 'pdate' => 'desc','id' => 'desc'),
+            'col' => '*,id as value|id',
+        ),
+
+        'getOne' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => $col,
+        ),
+
+        # 热门
+        'getHot' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				//'audit' => 2,
+				'hot' => 1,
+				'buy' => 'yes',
+				'time' => array('yes-pdate', '<=', 'or)'),
+				'cate_id' => 'yes',
+				'status' => 2,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'pdate' => 'desc', 'id' => 'desc'),
+			//'page' => array(10, 'list'),
+			'col' => $col,
+		),
+
+        'getNew' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+            	'cate_id_1' => array('yes-cate_id', '=', 'and('),
+				'time' => array('yes-pdate', '<=', 'or)'),
+				'cate_id' => 'yes',
+            	'status' => 2,
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'order' => array('ssdate' => 'desc'),
+            'col' => $col . ',case when cate_id = 1 then pdate else pdate-'.$time.' end as ssdate',
+        ),
+	),
+);
+
+/* 由top_option取代
+if ($auth) {
+	$config['request']['list'] = array
+	(
+		'type' => 'all',
+        'order' => array('id' => 'desc'),
+        'col' => '*|id',
+        'page' => array(15, 'list'),
+        'option' => array
+        (
+        	'cate_id' => array($auth, 'in'),
+        ),
+	);
+}
+*/
+
+return $config;

+ 682 - 0
app/collection/database/old.php

@@ -0,0 +1,682 @@
+<?php
+
+$id = Dever::input('search_option_info_id');
+$cate = array();
+if ($id) {
+    $collection = Dever::db('collection/info')->one($id);
+    $cate = Dever::db('collection/cate')->one($collection['cate_id']);
+}
+
+$type_default = 3;
+$type_config = Dever::db('collection/cate')->config['gettype'];
+if ($cate) {
+    $type = array();
+    $cate_type = explode(',', $cate['type']);
+    $i = 0;
+    foreach ($cate_type as $k => $v) {
+        if (isset($type_config[$v])) {
+            if ($i == 0) {
+                $type_default = $v;
+            }
+            $type[$v] = $type_config[$v];
+            $i++;
+        }
+    }
+} else {
+    $type = $type_config;
+}
+
+$product = function()
+{
+    $array = array();
+    $info = Dever::db('product/info')->state();
+    if($info)
+    {
+        $array += $info;
+    }
+    return $array;
+};
+
+$is_button = array
+(
+    1 => '显示',
+    2 => '不显示',
+);
+
+$text = array
+(
+    1 => '上左',
+    2 => '上中',
+    3 => '上右',
+    4 => '中左',
+    5 => '正中',
+    6 => '中右',
+    7 => '下左',
+    8 => '下中',
+    9 => '下右',
+    //10 => '自定义',
+);
+
+
+$palaces = array
+(
+    1 => '上左',
+    2 => '上右',
+    3 => '下左',
+    4 => '下右',
+);
+
+$bgcolor_type = array
+(
+    1 => '设置背景颜色',
+    2 => '不设置背景颜色',
+);
+$talk_type = array
+(
+    1 => '文字',
+    2 => '图片',
+    3 => '音频',
+);
+
+$talk_location = array
+(
+    1 => '显示在左侧',
+    2 => '显示在右侧',
+);
+
+$author = function()
+{
+    $array = array();
+    $info = Dever::db('content/author')->state();
+    if($info)
+    {
+        $array += $info;
+    }
+    return $array;
+};
+
+return array
+(
+    # 表名
+    'name' => 'content',
+    # 显示给用户看的名称
+    'lang' => '内页管理',
+    'menu' => false,
+    'gettype' => $type,
+    'text' => $text,
+    'end' => array
+    (
+        'insert' => 'collection/lib/manage.addContent',
+    ),
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            //'search'    => 'order',
+            //'list'        => true,
+        ),
+
+        'info_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '电子刊',
+            'default'   => '',
+            'desc'      => '电子刊',
+            'match'     => 'is_numeric',
+            'update'    => 'hidden',
+            'value'     => Dever::input('search_option_info_id')
+        ),
+
+        'type'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '类型',
+            'default'   => $type_default,
+            'desc'      => '类型',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $type,
+            'control'   => 'type',
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '标题',
+            'default'   => '',
+            'desc'      => '标题',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'      => true,
+            //增加预览
+            'preview'   => true,
+            'show'      => 'type=1,22,23,51',      
+        ),
+
+        'url'      => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '链接地址',
+            'default'   => '',
+            'desc'      => '链接地址',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'      => true,
+            //增加预览
+            'preview'   => true,
+            'show'      => 'type=51',      
+        ),
+
+        'video'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '上传视频-视频格式mp4,上传大小不能超过4G',
+            'default'   => '',
+            'desc'      => '上传点播视频',
+            'match'     => 'is_string',
+            'update'    => 'upload',
+            'key'       => '3',
+            'place'     => '150',
+            'upload'    => 'qiniu',
+            'large'     => true,
+            //不覆盖原文件,生成新文件
+            'cover'     => 2,
+            'show'      => 'type=21,22',      
+        ),
+
+        'video_info'        => array
+        (
+            'type'      => 'text-255',
+            'name'      => '视频信息',
+            'default'   => '',
+            'desc'      => '视频信息',
+            'match'     => 'is_string',
+        ),
+
+        'music'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '上传音频-视频格式mp3,上传大小不能超过100M',
+            'default'   => '',
+            'desc'      => '上传音频',
+            'match'     => 'is_string',
+            'update'    => 'upload',
+            'key'       => '2',
+            'place'     => '150',
+            'upload'    => 'qiniu',
+            'large'     => true,
+            //不覆盖原文件,生成新文件
+            'cover'     => 2,
+            'show'      => 'type=23',      
+        ),
+
+        'cover'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '封面图-全屏视频的封面图图片尺寸750*1386px或等比尺寸,留言视频的封面图图片尺寸750*422px或等比尺寸,留言音频的封面图图片尺寸750*422px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+            'default'   => '',
+            'desc'      => '封面图',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '150',
+            'show'      => 'type=21,22,23',      
+        ),
+
+        'focus'     => array
+        (
+            'type'      => 'text-255',
+            'name'      => '焦点图',
+            'default'   => '',
+            'desc'      => '焦点图',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '150',
+            'show'      => 'type=1',      
+        ),
+
+        'author_id'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '作者',
+            'default'   => '1',
+            'desc'      => '作者',
+            'match'     => 'is_numeric',
+            //'update'    => 'select',
+            //'option'    => $author,
+            //'search'    => 'select',
+            'show'      => 'type=1',      
+        ),
+
+        'content'       => array
+        (
+            'type'      => 'text-255',
+            'name'      => '内容',
+            'default'   => '',
+            'desc'      => '请输入内容',
+            'match'     => 'is_string',
+            'update'    => 'editor',
+            'show'      => 'type=1',
+            //自定义编辑器右侧按钮
+            'editors'    => array
+            (
+                'name' => '选择插入模块',
+                'button' => array
+                (
+                    array
+                    (
+                        # 名称
+                        'name' => '图片',
+                        # 资源库id
+                        'key' => 1,
+                        # 类型
+                        'type' => 'image',
+                    ),
+                    array
+                    (
+                        'name' => '音频',
+                        'key' => 2,
+                        'type' => 'media',
+                    ),
+                    array
+                    (
+                        'name' => '视频',
+                        'key' => 'video/lib/core.vod',
+                    ),
+                    array
+                    (
+                        'name' => '直播',
+                        'key' => 'video/lib/core.live',
+                    ),
+                    array
+                    (
+                        'name' => '小程序',
+                        'key' => 'content/lib/applet.update',
+                        'type' => 'update',
+                    ),
+                ),
+            ),
+        ),
+
+        'pic'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '图片-全屏图图片尺寸750*1386px或等比尺寸,长屏图图片尺寸750*高度不限或等比尺寸,横屏图图片尺寸宽度不限*1386px或等比尺寸,长图图片尺寸750*高度不限或等比尺寸,无边框图片尺寸长和宽均没有限制,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+            'default'   => '',
+            'desc'      => '图片',
+            'match'     => 'option',
+            'update'  => 'image',
+            'key'       => '1',
+            'place'     => '150',
+            'show'      => 'type=2,3,4,11,12',      
+        ),
+
+        'pic_info'        => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '图片信息',
+            'default'   => '',
+            'desc'      => '图片信息',
+            'match'     => 'is_string',
+            'update'    => 'hidden',
+        ),
+
+        'is_button'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '是否显示保存按钮',
+            'default'   => '1',
+            'desc'      => '是否显示保存按钮',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $is_button,
+           // 'search'    => 'select',
+            'show'      => 'type=2,3,4',      
+            'control'   => 'is_button',
+        ),
+
+        'button_name'     => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '保存按钮文字内容',
+            'default'   => '保存图片',
+            'desc'      => '保存按钮文字内容',
+            'match'     => 'option',
+            'update'    => 'textarea',
+            'show'      => 'type=2,3,4',      
+        ),
+
+        'button_color'     => array
+        (
+            'type'      => 'varchar-10',
+            'name'      => '保存按钮文字颜色',
+            'default'   => '#000000',
+            'desc'      => '保存按钮文字颜色',
+            'match'     => 'option',
+            'update'    => 'color',
+            'show'      => 'type=2,3,4',      
+        ),
+
+        'product_id'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '关联商品',
+            'default'   => '',
+            'desc'      => '关联商品',
+            'match'     => 'option',
+            'update'    => 'checkbox',
+            'show'      => 'type=41',
+            //'option'    => $product,
+        ),
+
+        'article_id'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '关联图文',
+            'default'   => '',
+            'desc'      => '关联图文',
+            'match'     => 'option',
+            'update'    => 'select',
+            'show'      => 'type=61',
+            'update_search' => 'collection/lib/manage.search_article',
+        ),
+
+        'vod_id'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '关联视频',
+            'default'   => '',
+            'desc'      => '关联视频',
+            'match'     => 'option',
+            'update'    => 'select',
+            'show'      => 'type=62',
+            'update_search' => 'collection/lib/manage.search_vod',
+        ),
+
+        'live_id'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '关联直播',
+            'default'   => '',
+            'desc'      => '关联直播',
+            'match'     => 'option',
+            'update'    => 'select',
+            'show'      => 'type=63',
+            'update_search' => 'collection/lib/manage.search_live',
+        ),
+
+        'text'       => array
+        (
+            'type'      => 'text-1000',
+            'name'      => '文字设置',
+            'default'   => '',
+            'desc'      => '文字设置',
+            'match'     => 'is_string',
+            'option'    => $text,
+            'show'      => 'type=2,3,4',
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'name',
+                    'name'      => '文字内容',
+                    'default'   => '',
+                    'desc'      => '文字内容',
+                    'match'     => 'is_string',
+                    'update'    => 'textarea',
+                ),
+
+                array
+                (
+                    'col'       => 'color',
+                    'name'      => '文字颜色',
+                    'default'   => '#000000',
+                    'desc'      => '文字颜色',
+                    'match'     => 'is_string',
+                    'update'    => 'color',
+                ),
+
+                array
+                (
+                    'col'       => 'bgcolor_type',
+                    'name'      => '是否设置背景颜色',
+                    'default'   => '2',
+                    'desc'      => '是否设置背景颜色',
+                    'match'     => 'is_string',
+                    'update'    => 'radio',
+                    'option'    => $bgcolor_type,
+                    'control'   => 'bgcolor_type',
+                ),
+
+                array
+                (
+                    'col'       => 'bgcolor',
+                    'name'      => '背景颜色',
+                    'default'   => '#000000',
+                    'desc'      => '背景颜色',
+                    'match'     => 'is_string',
+                    'update'    => 'color',
+                    'show'      => 'bgcolor_type=1'
+                ),
+
+                array
+                (
+                    'col'       => 'size',
+                    'name'      => '文字大小-直接输入像素数字',
+                    'default'   => '16',
+                    'desc'      => '结果描述',
+                    'match'     => 'is_numeric',
+                    'update'    => 'text',
+                ),
+            ),
+        ),
+
+        'palaces'       => array
+        (
+            'type'      => 'text-1000',
+            'name'      => '四宫格图片',
+            'default'   => '',
+            'desc'      => '四宫格图片',
+            'match'     => 'is_string',
+            'option'    => $palaces,
+            'show'      => 'type=13',
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'pic',
+                    'name'      => '图片',
+                    'default'   => '',
+                    'desc'      => '图片',
+                    'match'     => 'is_string',
+                    'update'    => 'image',
+                    'key'       => 1,
+                ),
+            ),
+        ),
+
+        'talk_pic'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '置顶图片-图片尺寸750*1386px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式。为空则不显示',
+            'default'   => '',
+            'desc'      => '图片',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '150',
+            'show'      => 'type=31',      
+        ),
+
+        'talk'       => array
+        (
+            'type'      => 'text-1000',
+            'name'      => '对话设置',
+            'default'   => '',
+            'desc'      => '对话设置',
+            'match'     => 'is_string',
+            'show'      => 'type=31',
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'talk_location',
+                    'name'      => '对话位置',
+                    'default'   => '1',
+                    'desc'      => '对话位置',
+                    'match'     => 'is_string',
+                    'update'    => 'radio',
+                    'option'    => $talk_location,
+                ),
+
+                array
+                (
+                    'col'       => 'avatar',
+                    'name'      => '头像-图片尺寸120*120px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式。',
+                    'default'   => '',
+                    'desc'      => '头像',
+                    'match'     => 'option',
+                    'update'    => 'image',
+                    'key'       => 1,
+                ),
+
+                array
+                (
+                    'col'       => 'talk_type',
+                    'name'      => '对话类型',
+                    'default'   => '1',
+                    'desc'      => '对话类型',
+                    'match'     => 'is_string',
+                    'update'    => 'radio',
+                    'option'    => $talk_type,
+                    'control'   => 'talk_type',
+                ),
+
+                array
+                (
+                    'col'       => 'text',
+                    'name'      => '文字内容-为空则不显示',
+                    'default'   => '',
+                    'desc'      => '文字内容',
+                    'match'     => 'option',
+                    'update'    => 'textarea',
+                    'show'      => 'talk_type=1'
+                ),
+
+                array
+                (
+                    'col'       => 'pic',
+                    'name'      => '图片-图片尺寸750*1386px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式,可以上传GIF格式。为空则不显示',
+                    'default'   => '',
+                    'desc'      => '图片',
+                    'match'     => 'option',
+                    'update'    => 'image',
+                    'key'       => 1,
+                    'show'      => 'talk_type=2'
+                ),
+
+                array
+                (
+                    'col'       => 'audio',
+                    'name'      => '音频-音频格式mp3,上传大小不能超过100M,为空则不显示',
+                    'default'   => '',
+                    'desc'      => '音频',
+                    'match'     => 'option',
+                    'update'    => 'upload',
+                    'key'       => 2,
+                    'show'      => 'talk_type=3'
+                ),
+            ),
+        ),
+
+        'reorder'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '页号',
+            'default'   => '1',
+            'desc'      => '请输入排序',
+            'match'     => 'option',
+            //'update'    => 'text',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'asc',
+            '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,
+            //'search'    => 'date',
+            //'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        'insert' => false,
+        'edit' => false,
+        //'delete' => false,
+        'num' => false,
+        'page_list_table' => 'content',
+
+        # 自定义快捷新增和编辑
+        'button' => array
+        (
+            '新增内容' => array('location', 'add'),
+            '预览' => array('fast', 'main/preview.get?type=4&id=' . Dever::input('search_option_info_id')),
+        ),
+    ),
+
+    # request 请求接口定义
+    'request' => array
+    (
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'info_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'asc', 'id' => 'desc'),
+            'page' => array(10, 'list'),
+            'col' => '*',
+        ),
+
+        'getAllByReorder' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'info_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'order' => array('reorder' => 'desc', 'id' => 'desc'),
+            'col' => '*',
+        ),
+    )
+);

+ 153 - 0
app/collection/database/ranking.php

@@ -0,0 +1,153 @@
+<?php
+
+$status = array
+(
+    1 => '开启',
+    2 => '关闭',
+);
+return array
+(
+    # 表名
+    'name' => 'ranking',
+    # 显示给用户看的名称
+    'lang' => '榜单设置',
+    'menu' => false,
+    'ends' => array
+    (
+        'insert' => 'collection/lib/manage.setRankingCache',
+        'update' => 'collection/lib/manage.setRankingCache',
+    ),
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'update'    => 'hidden',
+            'value'     => Dever::input('where_id')
+            //'list'        => true,
+        ),
+
+        'info_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '合集',
+            'default'   => '',
+            'desc'      => '合集',
+            'match'     => 'is_numeric',
+            'update'    => 'hidden',
+            'value'     => Dever::input('search_option_info_id')
+        ),
+
+        'status'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '榜单状态',
+            'default'   => '2',
+            'desc'      => '榜单状态',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $status,
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '榜单标题',
+            'default'   => '',
+            'desc'      => '榜单标题',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'start'       => array
+        (
+            'type'      => 'int-11',
+            'default'   => '',
+            'name'      => '榜单开始时间',
+            'match'     => 'option',
+            'desc'      => '榜单开始时间',
+            'update'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {start})',
+            'callback'  => 'maketime',
+        ),
+
+        'end'       => array
+        (
+            'type'      => 'int-11',
+            'default'   => '',
+            'name'      => '榜单结束时间',
+            'match'     => 'option',
+            'desc'      => '榜单结束时间',
+            'update'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {end})',
+            'callback'  => 'maketime',
+        ),
+
+        'desc'      => array
+        (
+            'type'      => 'text-255',
+            'name'      => '榜单描述',
+            'default'   => '',
+            'desc'      => '榜单描述',
+            'match'     => 'option',
+            'update'    => 'editor',
+            'key'       => 1,
+            //'search'  => 'fulltext',
+            //'list'        => 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,
+            'search'    => 'date',
+            //'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+
+    ),
+
+    'request' => array
+    (
+        # 获取提交订单超过12个小时
+        'getDataByTime' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'end' => array('yes', '<='),
+                'ends' => array('yes-end', '>'),
+                'state' => 1,
+                'status' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('id' => 'desc'),
+            'col' => '*',
+        ),
+    ),
+);

+ 125 - 0
app/collection/database/type.php

@@ -0,0 +1,125 @@
+<?php
+
+return array
+(
+    # 表名
+    'name' => 'type',
+    # 显示给用户看的名称
+    'lang' => '数据类型设置',
+    # 后台菜单排序
+    'order' => 1,
+    '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'      => '数据类型名称',
+            'default'   => '',
+            'desc'      => '数据类型名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'table'      => array
+        (
+            'type'      => 'varchar-60',
+            'name'      => '数据类型来源表名-直接输入项目名/表名即可,如collection/cate',
+            'default'   => '',
+            'desc'      => '数据类型来源表名',
+            'match'     => 'is_string',
+            '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})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        //'insert' => false,
+        //'edit' => false,
+        'delete' => false,
+    ),
+
+    'default' => array
+    (
+        'col' => 'name,`table`,reorder,state,cdate',
+        'value' => array
+        (
+            '"图文内容","content/news",99,1,' . DEVER_TIME,
+
+            '"普通图片","content/pic",89,1,' . DEVER_TIME,
+            '"四宫格图片","content/pic_grid",88,1,' . DEVER_TIME,
+
+            '"普通视频","content/video",79,1,' . DEVER_TIME,
+            '"短视频","content/video_short",78,1,' . DEVER_TIME,
+
+            '"普通音频","content/audio",69,1,' . DEVER_TIME,
+
+            '"直播","content/live",59,1,' . DEVER_TIME,
+
+            '"活动","content/act",49,1,' . DEVER_TIME,
+
+            '"对话","content/dialogue",39,1,' . DEVER_TIME,
+
+            '"电商产品","content/product",29,1,' . DEVER_TIME,
+
+            '"链接地址","content/link",19,1,' . DEVER_TIME,
+        ),
+    ),
+
+
+    'request' => array
+    (
+        
+    ),
+);

+ 8 - 0
app/collection/index.php

@@ -0,0 +1,8 @@
+<?php
+
+define('DEVER_APP_NAME', 'collection');
+define('DEVER_APP_LANG', '合集管理');
+define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+define('DEVER_MANAGE_ORDER', 100);
+define('DEVER_MANAGE_ICON', 'glyphicon-shopping-cart layui-icon-unlink');
+include(DEVER_APP_PATH . '../boot.php');

+ 305 - 0
app/collection/lib/Manage.php

@@ -0,0 +1,305 @@
+<?php
+
+namespace Collection\Lib;
+
+use Dever;
+
+class Manage
+{
+    public function getManageData()
+    {
+        $data = array();
+
+        $data = Dever::db('collection/cate')->state();
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['child'] = Dever::db('collection/info')->state(array('cate_id' => $v['id']));
+            }
+        }
+        return $data;
+    }
+
+    # 获取数据
+    public function num($id)
+    {
+        $data = Dever::db('collection/info')->one($id);
+        $data = Dever::load('collection/api')->ding($data);
+
+        $num_buy = $data['num_buy'];
+        $num_add_buy = $data['num_add_buy'];
+        $num_ratio_buy = $data['num_ratio_buy'];
+
+        $num_view = $data['num_view'];
+        $num_add_view = $data['num_add_view'];
+
+        $buy_num = $data['buy_num'];
+
+        //$html = '订阅本数:('.$buy_num.'+'.$num_add_buy.')*'.$num_ratio_buy.'='.$num_buy.'<br />阅读数:'.$num_view.'+'.$num_add_view.'<br />评论数:'.$num_comment.'<br />';
+
+        $cate = Dever::db('collection/cate')->one($data['cate_id']);
+        $html = '《' . $cate['name'] . '》<br />';
+
+        if ($data['buy'] == 1) {
+            $html .= '<font style="color:red">收费</font><br />';
+            $html .= '购买数:('.$buy_num.'+'.$num_add_buy.')*'.$num_ratio_buy.'='.$num_buy;
+        } else {
+            $html .= '<font style="color:blue">免费</font><br />';
+            $html .= '阅读数:'.$num_view.'+'.$num_add_view.'='.($num_view+$num_add_view);
+        }
+        
+        return $html;
+    }
+
+	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_journal_api()
+    {
+        return $this->search('collection/info');
+    }
+
+    # 按照分类搜索
+    public function search_cate_journal_api()
+    {
+        $level_num = Dever::input('level_num');
+        $level_id = Dever::input('level_id');
+        
+        $auth = Dever::tops();
+        $where = array();
+        if ($level_num == 1) {
+            $default = array
+            (
+                'value' => -1,
+                'name' => '选择分类',
+            );
+            if ($auth) {
+                $where['ids'] = $auth;
+            }
+
+            $data = Dever::db('collection/cate')->getIds($where);
+        } elseif ($level_num == 2 && $level_id > 0) {
+            $default = array
+            (
+                'value' => -1,
+                'name' => '选择合集',
+            );
+            if ($level_id > 0) {
+                $where['cate_id'] = $level_id;
+            } elseif ($auth) {
+                $where['cate_id'] = $auth;
+            }
+            
+            $data = Dever::db('collection/info')->getIds($where);
+        } else {
+            return array();
+        }
+
+        
+        array_unshift($data, $default);
+        $result['level_total'] = 2;
+        $result['list'] = $data;
+        return $result;
+    }
+
+    # 显示内页
+    public function content()
+    {
+        $where['info_id'] = Dever::input('search_option_info_id');
+        $where['state'] = Dever::input('search_option_state');
+        $data = Dever::db('collection/content')->all($where);
+
+        $database = Dever::load('manage/database');
+        $type = Dever::db('collection/cate')->config['gettype'];
+        if ($data) {
+            foreach ($data as $k => $v) {
+
+                $data[$k]['height'] = 'height: 154px;';
+                $data[$k]['info_height'] = 'height: auto;';
+
+                $data[$k]['type_name'] = '[' . $type[$v['type']]['name'] . ']';
+
+                $data[$k]['text'] = '';
+
+                $link = $database->url('edit', $v['id']) . '&search_option_info_id=' . $where['info_id'];
+
+                $data[$k]['edit'] = "fastEdit($(this), '".$link."', '编辑数据内容', '', 1)";
+
+                $data[$k]['editurl'] = $link;
+
+                if ($v['type_id'] > 0) {
+                    $data[$k]['data_name'] = '更新内容';
+                } else {
+                    $data[$k]['data_name'] = '新增内容';
+                }
+
+                $table = $type[$v['type']]['table'];
+
+                # 验证有没有数据
+                $info = Dever::load($table)->one(array('content_id' => $v['id'], 'info_id' => $v['info_id']));
+
+                $link = $database->url('edit', $v['id']) . '&search_option_info_id=' . $v['info_id'] . '&search_option_content_id=' . $v['id'] . '&project=content&table=news&oper_parent=content&oper_project=collection&oper_save_jump=content';
+
+                $data[$k]['data_editurl'] = $link;
+
+                $data[$k]['delete'] = $database->url('delete', $v['id']);
+            }
+        }
+
+        return $data;
+    }
+
+    private function text_name($link, $content_id, $info_id, $location, $name)
+    {
+        $where['info_id'] = $info_id;
+        $where['content_id'] = $content_id;
+        $where['location'] = $location;
+        $info = Dever::db('collection/content_text')->one($where);
+
+        $link .= '&search_option_info_id=' . $info_id. '&search_option_content_id=' . $content_id.'&table=content_text&search_option_location='.$location;
+
+        if ($info) {
+            $link .= '&where_id=' . $info['id'];
+        }
+
+        $html = '<a style="cursor:pointer;" href="javascript:;" onclick="fastEdit($(this), \''.$link.'\', \'编辑'.$name.'文字\', \'\')">'.$name.'</a>';
+
+        return $html;
+    }
+
+    public function text($database, $content_id, $info_id)
+    {
+        $link = $database->url('edit');
+
+        $location = Dever::db('collection/content_text')->config['location'];
+
+        $html = '<table class="layui-table"><tbody><tr>';
+        $i = 0;
+        foreach ($location as $k => $v) {
+            $name = $this->text_name($link, $content_id, $info_id, $k, $v);
+            $html .= '<td>'.$name.'</td>';
+
+            if ($i == 2 || $i == 5) {
+                $html .= '</tr><tr>';
+            }
+
+            $i++;
+        }
+
+        $html .= '</tr></tbody></table>';
+
+        return $html;
+    }
+
+    public function updateContent_api()
+    {
+        $data = Dever::input('data');
+
+        if ($data) {
+            $data = explode(',', str_replace('data-', '', $data));
+            foreach ($data as $k => $v) {
+                $k = $k + 1;
+                $where['where_id'] = $v;
+                $where['reorder'] = $k;
+                Dever::db('collection/content')->update($where);
+            }
+
+        }
+
+        return $data;
+    }
+
+    public function addContent($id, $name, $data)
+    {
+        # 获取最新的reorder
+        $info_id = Dever::param('info_id', $data);
+        $data = Dever::db('collection/content')->getAllByReorder(array('info_id' => $info_id));
+
+        if ($data) {
+            $update['where_id'] = $id;
+            $update['reorder'] = $data['reorder'] + 1;
+            Dever::db('collection/content')->update($update);
+        }
+    }
+
+    public function getName($id)
+    {
+        $info = Dever::db('collection/buy')->one($id);
+        if ($info && $info['name']) {
+            return $info['name'];
+        } else {
+            return '购买' . $info['num'] . '张';
+        }
+    }
+
+    public function getPrice($id)
+    {
+        $info = Dever::db('collection/buy')->one($id);
+
+        $collection = Dever::db('collection/info')->one($info['info_id']);
+        if ($info && $info['price']) {
+            return $info['price'];
+        } else {
+            return $info['num'] * $collection['cash'] . '元';
+        }
+    }
+
+    public function setJournalCache($id, $name, $param)
+    {
+        Dever::load('act/order')->setCache($id, 1);
+    }
+
+    public function setBuyCache($id, $name, $param)
+    {
+        Dever::load('act/order')->setCache($id, 2);
+    }
+
+    public function setRankingCache($id, $name, $param)
+    {
+        Dever::load('act/order')->setCache($id, 3);
+    }
+}

+ 83 - 0
app/collection/src/Api.php

@@ -0,0 +1,83 @@
+<?php
+
+namespace Collection\Src;
+
+use Dever;
+
+class Api
+{
+    public function data()
+    {
+        return Dever::db('collection/info')->state();
+    }
+
+    public function ding($data)
+    {
+        if (isset($data['num_add_buy']) && isset($data['num_ratio_buy'])) {
+
+            if ($data['buy'] == 1) {
+            	/*
+                if (!$data['num_buy']) {
+                    $stat = Dever::db('stat/collection')->getNumBycollection(array('collection_id' => $data['id']));
+                    if (!$stat) {
+                        $stat['buy_num'] = 0;
+                    }
+
+                    if (!$stat['buy_num']) {
+                        $stat['buy_num'] = 0;
+                    }
+                    $data['num_buy'] = $stat['buy_num'];
+                }
+                */
+
+                $data['num_up'] = 0;
+            }
+
+            $data['num_buy'] = $data['num_buy'] + $data['num_up'];
+            $data['buy_num'] = $data['num_buy'];
+            $data['num_buy'] = round(($data['num_buy']+$data['num_add_buy'])*$data['num_ratio_buy']);
+        }
+
+        return $data;
+    }
+
+    # 解析元信息
+    public function avinfo($data, $url = 'video', $table = 'video/vod')
+    {
+        # 解析视频元信息
+        if (!$data['video_info']) {
+            $video_info = Dever::curl($data[$url] . '?avinfo');
+            if ($video_info) {
+                Dever::db($table)->update(array('where_id' => $data['id'], 'video_info' => $video_info));
+            }
+            
+            $video_info = Dever::json_decode($video_info);
+        } else {
+            $video_info = Dever::json_decode($data['video_info']);
+        }
+
+        unset($data['video_info']);
+
+        $data['video_width'] = 0;
+        $data['video_height'] = 0;
+        # 默认横屏
+        $data['video_type'] = 1;
+        if (isset($video_info['streams']) && $video_info['streams']) {
+            foreach ($video_info['streams'] as $k => $v) {
+                if (isset($v['width']) && isset($v['height'])) {
+                    $data['video_width'] = $v['width'];
+                    $data['video_height'] = $v['height'];
+                    if ($data['video_width'] >= $data['video_height']) {
+                        $data['video_type'] = 1;
+                    } else {
+                        $data['video_type'] = 2;
+                    }
+                    
+                    break;
+                }
+            }
+        }
+
+        return $data;
+    }
+}

+ 80 - 0
app/collection/template/manage/content.php

@@ -0,0 +1,80 @@
+<?php
+
+/*
+|--------------------------------------------------------------------------
+| home
+|--------------------------------------------------------------------------
+ */
+$view
+
+->fetch('.layui-fluid@test', '公告')
+
+->fetch('#url', 'var url="<{Dever::url("collection/lib/manage.updateContent")}>"')
+
+->loop
+(
+    '.layui-col-md2',
+    'collection/lib/manage.content',
+    array
+    (
+        'self' => array
+        (
+            'id' => 'data-<{$v.id}>',
+        ),
+        'b' => array
+        (
+            'html' => '<{date("Y/m/d", $v.cdate)}>',
+            'html' => '',
+        ),
+
+        '.img' => array
+        (
+            'style' => '<{$v.height}>',
+        ),
+
+        'img' => array
+        (
+            'src' => '<{$v.pic}>',
+            'width' => '150',
+        ),
+
+        '.info' => array
+        (
+            'html' => '<{Dever::cut($v.name, 20)}>',
+            'style' => '<{$v.info_height}>',
+        ),
+
+        '.edit' => array
+        (
+            //'onclick' => '<{$v.edit}>',
+            'href' => '<{$v.editurl}>',
+        ),
+
+        '.data_edit' => array
+        (
+            'href' => '<{$v.data_editurl}>',
+            'button' => array
+            (
+                'html' => '<{$v.data_name}>',
+            )
+        ),
+
+        '.oper_delete' => array
+        (
+            'href' => '<{$v.delete}>',
+        ),
+
+        '.text' => array
+        (
+            'html' => '<{$v.text}>',
+        ),
+
+        'b' => array
+        (
+            'html' => '<{$v.type_name}>',
+        ),
+    )
+)
+
+# display
+->display();

+ 194 - 0
app/content/database/news.php

@@ -0,0 +1,194 @@
+<?php
+
+$status = Dever::config('base')->status;
+
+# 每页的数据量
+$page = 15;
+
+$share = array
+(
+	1 => '显示',
+	2 => '不显示',
+);
+
+# 常用的col
+$col = '*';
+
+return array
+(
+	# 表名
+	'name' => 'news',
+	# 显示给用户看的名称
+	'lang' => '图文内容',
+	'order' => 100,
+	'menu' => false,
+
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'list'		=> true,
+		),
+
+		'info_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '合集',
+            'default'   => '',
+            'desc'      => '合集',
+            'match'     => 'is_numeric',
+            'update'    => 'text',
+            'value'     => Dever::input('search_option_info_id')
+        ),
+
+        'content_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '合集内容id',
+            'default'   => '',
+            'desc'      => '合集内容id',
+            'match'     => 'is_numeric',
+            'update'    => 'text',
+            'value'     => Dever::input('search_option_content_id')
+        ),
+		
+		'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',
+		),
+
+  		'pic'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '1:1封面图-图片尺寸380*380px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式,同时用于分享图片',
+			'default' 	=> '',
+			'desc' 		=> '封面图',
+			'match' 	=> 'is_string',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '150',
+		),
+
+		'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',
+		),
+
+		'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',
+		),
+
+		'status'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '发布状态',
+			'default' 	=> '2',
+			'desc' 		=> '发布状态',
+			'match' 	=> 'is_numeric',
+			//'update'	=> 'select',
+			'option'	=> $status,
+			'search'	=> 'select',
+			'list'		=> true,
+			'edit'		=> 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,
+		),
+	),
+	
+	# 管理功能
+	'manage' => array
+	(
+		//'insert' => false,
+		# 列表
+		'list_buttons' => array
+		(
+			'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=1'))),
+		),
+	),
+
+	# request 请求接口定义
+	'request' => array
+	(
+		
+	),
+);

+ 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');

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

@@ -0,0 +1,223 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Article
+{
+    # 根据文章id 获取文章信息
+    public function get($data, $uid = false)
+    {
+        if (!is_array($data)) {
+            $data = Dever::db('content/article')->getOne($data);
+        }
+        
+        if (!$data) {
+            Dever::alert('错误的文章信息');
+        }
+    
+        $data = $this->getContent($data, $uid);
+
+        return $data;
+    }
+
+    public function getContent($data, $uid = false)
+    {
+        //embed
+        $data['content_array'] = array();
+
+        $data['content'] = Dever::filter($data['content']);
+
+        $content = $data['content'];
+        $replace = array();
+
+        # embed已废弃
+        if (strstr($data['content'], 'embed')) {
+            # 音频
+            preg_match_all('/<embed src="(.*?)"(.*?)\/>/i', $content, $matches);
+            if (isset($matches[1])) {
+                foreach ($matches[1] as $k => $v) {
+                    $content = str_replace($matches[0][$k], '{replace}'.count($replace).'{replace}', $content);
+
+                    if (strstr($v, '.mp4') || strstr($v, '.mov') || strstr($v, '.m3u8')) {
+                        $replace[] = array('type' => 6, 'content' => $v);
+                    } else {
+                        $replace[] = array('type' => 5, 'content' => $v);
+                    }
+                }
+            }
+        }
+
+        if (strstr($data['content'], 'data-applet')) {
+            # 小程序
+            preg_match_all('/<img(.*?)data-applet="(.*?)" \/>/', $content, $matches);
+
+            if (isset($matches[2])) {
+                foreach ($matches[2] as $k => $v) {
+                    $content = str_replace($matches[0][$k], '{replace}'.count($replace).'{replace}', $content);
+                    $temp = explode('||', $v);
+                    $pic = $temp[0];
+                    $appid = $temp[1];
+                    $path = $temp[2];
+
+                    if ($appid) {
+                        $appinfo = Dever::db('content/applet')->one(array('appid' => $appid));
+                    } else {
+                        $appinfo['name'] = '';
+                        $appinfo['link'] = '';
+                    }
+                    
+                    if (isset($temp[3]) && $temp[3]) {
+                        $appinfo['link'] = $temp[3];
+                    }
+
+                    $replace[] = array('type' => 7, 'pic_cover' => $pic, 'appid' => $appid, 'path' => $path, 'name' => $appinfo['name'], 'link' => $appinfo['link']);
+                }
+            }
+        }
+
+        if (strstr($data['content'], 'gif')) {
+            # gif
+            preg_match_all('/<img(.*?)src="(.*?)\.gif" (.*?)\/>/', $content, $matches);
+
+            if (isset($matches[2])) {
+                foreach ($matches[2] as $k => $v) {
+                    $content = str_replace($matches[0][$k], '{replace}'.count($replace).'{replace}', $content);
+                    $pic = $v;
+
+                    $replace[] = array('type' => 8, 'pic' => $pic . '.gif');
+                }
+            }
+        }
+
+        if (strstr($data['content'], 'data-file')) {
+            # 音频
+            preg_match_all('/<img src="(.*?)" style="(.*?)" data-file="(.*?)" \/>/', $content, $matches);
+
+            if (!isset($matches[1][0])) {
+                preg_match_all('/<img style="(.*?)" src="(.*?)" data-file="(.*?)" \/>/', $content, $matches);
+                $temp = array();
+                if (isset($matches[2][0])) {
+                    $temp = $matches;
+                    $matches[1] = $temp[2];
+                    unset($temp);
+                }
+            }
+
+            if (isset($matches[1])) {
+                foreach ($matches[1] as $k => $v) {
+                    if (isset($matches[3][$k])) {
+                        $content = str_replace($matches[0][$k], '{replace}'.count($replace).'{replace}', $content);
+
+                        $file = $matches[3][$k];
+                        $temp = explode('||', $file);
+                        $file = $temp[0];
+                        if (isset($temp[1])) {
+                            $name = $temp[1];
+                        } else {
+                            $name = '';
+                        }
+                        
+                        $cover = $v;
+
+                        if (strstr($v, '.mp4') || strstr($v, '.mov') || strstr($v, '.m3u8')) {
+                            $replace[] = array('type' => 6, 'content' => $file, 'cover' => $cover, 'name' => $name);
+                        } else {
+                            $replace[] = array('type' => 5, 'content' => $file, 'cover' => $cover, 'name' => $name);
+                        }
+                    }
+                }
+            }
+        }
+
+        if (strstr($data['content'], 'data-id')) {
+            # 视频+直播
+            preg_match_all('/<img(.*?)data-id="(.*?)" data-key="(.*?)" \/>/', $content, $matches);
+            
+            
+            if (!isset($matches[2][0])) {
+                preg_match_all('/<img(.*?)data-key="(.*?)" data-id="(.*?)" \/>/', $content, $matches);
+                $temp = array();
+                if (isset($matches[2][0]) && isset($matches[3][0])) {
+                    $temp = $matches;
+                    $matches[2] = $temp[3];
+                    $matches[3] = $temp[2];
+                    unset($temp);
+                }
+            }
+            
+            if (isset($matches[2][0]) && isset($matches[3][0])) {
+                foreach ($matches[2] as $k => $v) {
+                    $content = str_replace($matches[0][$k], '{replace}'.count($replace).'{replace}', $content);
+                    if ($matches[3][$k] == 'video/lib/core.vod') {
+                        $method = 'video/lib/vod';
+                        $type = 2;
+                    } else {
+                        $type = 3;
+                        $method = 'video/lib/live';
+                    }
+
+                    $info = Dever::load($method)->get($v);
+                    if (isset($info['content'])) {
+                        unset($info['content']);
+                    }
+
+                    if ($type == 3) {
+                        # 查看是否有预约
+                        if ($uid > 0) {
+                            $info['user_act']['note'] = Dever::load('act/lib/note')->get($uid, $v, $type);
+                        } else {
+                            $info['user_act']['note'] = 2;
+                        }
+                    }
+                    $replace[] = array('id' => $v, 'type' => $type, 'content' => $info);
+                }
+            }
+        }
+
+        //$data['content'] = preg_replace('/<div class="dever-drop">([\s\S]*?)<\/div>/i', '', $data['content']);
+
+        $content = explode('{replace}', $content);
+        $data['content_array'] = array();
+        //print_r($content);die;
+        foreach ($content as $k => $v) {
+            $v = trim($v);
+            if (is_numeric($v) && $v >= 0 && isset($replace[$v])) {
+                $data['content_array'][] = $replace[$v];
+            } elseif ($v) {
+                $data['content_array'][] = array
+                (
+                    'type' => 1,
+                    'content' => $v,
+                );
+            }
+        }
+
+        if (!$data['content_array']) {
+            $data['content_array'][] = array
+            (
+                'type' => 1,
+                'content' => $data['content'],
+            );
+        }
+
+        unset($data['content']);
+
+        return $data;
+    }
+
+    # 获取相关推荐
+    public function getRelation($info)
+    {
+        $where['noid'] = $info['id'];
+        $where['cate_id'] = $info['cate_id'];
+        return Dever::db('content/article')->getRelation($where);
+    }
+
+    # 增加浏览量
+    public function addView($id)
+    {
+        Dever::db('content/article')->addView($id);
+    }
+}

+ 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;
+    }
+}

+ 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');
+    }
+}

+ 19 - 0
app/content/lib/Page.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace Content\Lib;
+
+use Dever;
+
+class Page
+{
+    # 更新数据
+    public function link($id)
+    {
+    	$info = Dever::db('content/page')->one($id);
+        $url = Dever::url('page?key=' . $info['key'], 'main');
+
+        $html = '<a href="'.$url.'" target="_blank">点此查看</a>';
+
+        return $html;
+    }
+}

+ 8 - 0
boot.php

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

+ 10 - 0
common.php

@@ -0,0 +1,10 @@
+<?php
+
+
+/*
+function getInfoAttr()
+{
+    $category = Dever::input('search_option_category', Dever::input('update_category'));
+    return Dever::load('attr/api')->getInfoAttr($category);
+}
+*/

+ 84 - 0
config/base.php

@@ -0,0 +1,84 @@
+<?php
+$config['base'] = array
+(
+	'name' => '幻境',
+	'version' => '1.0.0 Beta',
+
+    # 设置分类组件中的栏目下的分类为系统使用的主分类
+    'category' => 1,
+
+    # 后台头部菜单
+    'top' => 'passport/system_id',
+
+    # 设置类型
+    'type' => array
+    (
+        1 => '需求',
+    ),
+
+    # 功能类型
+    'type_table' => array
+    (
+        1 => 'demand/info',
+    ),
+
+    'audit' => array
+    (
+        1 => '未审核',
+        2 => '已审核',
+        3 => '审核未通过',
+    ),
+
+    # 上线状态
+    'status' => array
+    (
+        1 => '下架',
+        2 => '上线发布',
+    ),
+
+    # 小程序配置
+    'applet' => array
+    (
+        'project' => 'passport/system',
+        'url' => 'https://api.weixin.qq.com/sns/jscode2session',
+    ),
+
+    # 站点使用邮箱还是手机作为主账号
+    'account' => 'mobile',
+);
+
+
+# 前台通用配置
+$config['template'] = array
+(
+    # 静态页面目录
+    'assets' => array('pc', 'mobile'),
+
+    # 模板编译器目录
+    'template' => 'pc',
+
+    # 模板html文件的所在目录,默认为html
+    'path' => '',
+
+    'replace' => array
+    (
+        'css' => 'css/',
+        'js' => 'js/',
+        'images' => 'images/',
+        'script' => 'script/',
+        'static' => './static/',
+    ),
+
+    # 编译器与模板对应关系目录,定义之后,代表可以完全不改动前端的代码,可以为空,为空则一一对应,参考manage
+    'relation' => array
+    (
+        # 首页启动屏幕
+        'home' => 'index',
+        'list_text' => 'list1',
+        'page' => 'intro',
+        'view' => 'article',
+        'magazine' => 'magzine',
+    ),
+    
+);
+return $config;

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

@@ -0,0 +1,119 @@
+<?php
+
+# 验证dc是否存在,一般在share目录下
+$dc = array();
+$dc_file = '/share/dc/config.php';
+if (is_file($dc_file)) {
+    $dc = include($dc_file);
+}
+
+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
+(
+    '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' => 'dreamland',
+		'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 . 'buykey/package/';
+$uploadcdn = $host . 'buykey/data/';
+
+$config['host'] = array
+(
+    'upload'=> $upload . 'upload/?save',
+    'uploadRes'     => isset($dc['res']) && $dc['res'] ? $dc['res'] : $uploadcdn . 'upload/',
+);
+
+return $config;

+ 6 - 0
config/route.php

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

+ 66 - 0
data/compile/dreamland/collection/manage/content.cmp.php

@@ -0,0 +1,66 @@
+<?php $data['collection/lib/manage.content']=Dever::load('collection/lib/manage.content') ?>
+<style>
+.layui-col-md2
+{
+    height: 250px;
+    border:1px solid #bababa;
+    margin:5px;
+}
+.layui-table-cell
+{
+    padding: 0px 0px;
+}
+.layui-col-md2 .img
+{
+    text-align: center;overflow: hidden;text-align: center;
+}
+.price
+{
+    margin-top: -3px;
+    margin-bottom: -11px;
+}
+</style>
+<div class="layui-fluid layadmin-cmdlist-fluid" test="公告">
+  <ul class="layui-row layui-col-space30" id="sortable">
+    <?php if(isset($data['collection/lib/manage.content']) && is_array($data['collection/lib/manage.content'])): ?><?php $t=count($data['collection/lib/manage.content'])-1 ?><?php $i=0 ?><?php foreach($data['collection/lib/manage.content'] as $k => $v): ?><li class="layui-col-md2 layui-col-sm4" id="data-<?php echo isset($v['id']) ? $v['id'] : "" ?>" style="">
+        <div class="cmdlist-container">
+            <div href="javascript:;" class="img" style="<?php echo isset($v['height']) ? $v['height'] : "" ?>">
+              <img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" width="150">
+            </div>
+            <a href="<?php echo isset($v['editurl']) ? $v['editurl'] : "" ?>" class="edit">
+              <div class="cmdlist-text" style="text-align:center;">
+                <p class="info" style="<?php echo isset($v['info_height']) ? $v['info_height'] : "" ?>"><?php  echo Dever::cut($v['name'], 20) ?></p>
+                <div class="price">
+                    <b><?php echo isset($v['type_name']) ? $v['type_name'] : "" ?></b>
+                </div>
+
+                <div class="text"><?php echo isset($v['text']) ? $v['text'] : "" ?></div>
+                
+
+                <div style="margin-top:10px;text-align:center;">
+                <div class="layui-table-cell"><a href="<?php echo isset($v['data_editurl']) ? $v['data_editurl'] : "" ?>" class="data_edit" onclick=""><button type="button" class="btn btn-info btn-rounded waves-effect waves-light m-b-5 layui-btn layui-btn-xs"><?php echo isset($v['data_name']) ? $v['data_name'] : "" ?></button></a>&nbsp;&nbsp;<a href="<?php echo isset($v['delete']) ? $v['delete'] : "" ?>" class="oper_delete"><button type="button" class="btn btn-info btn-rounded waves-effect waves-light m-b-5 layui-btn layui-btn-danger layui-btn-xs"><span class="am-icon-trash-o"></span>删除</button></a>&nbsp;&nbsp;</div>
+                </div>
+              </div>
+            </a>
+        </div>
+    </li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['collection/lib/manage.content'] ?><?php endif; ?>
+  </ul>
+</div>
+
+<script id="url">var url="<?php  echo Dever::url("collection/lib/manage.updateContent") ?>"</script>
+<script>
+  $( function() {
+    var sort = $( "#sortable" ).sortable({
+        opacity: 0.7,
+        stop:function(){
+          var arr = $( "#sortable" ).sortable('toArray');
+          arr = arr.join(',');
+          $.post(url, {data:arr}, function()
+          {
+
+          })
+        }
+    });
+    $( "#sortable" ).disableSelection();
+  } );
+  </script>

+ 323 - 0
data/compile/dreamland/manage/layadmin/console.cmp.php

@@ -0,0 +1,323 @@
+<?php $data['manage/auth.notice']=Dever::load('manage/auth.notice') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php require Dever::config("base")->data . 'compile/dreamland/manage/layadmin/inc/head.cmp.php' ?>
+</head>
+<body>
+  
+  <div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+    <blockquote class="layui-elem-quote layui-quote-nm" id="content">欢迎光临本系统,控制台功能迭代优化中</blockquote>
+    </div>
+    <div class="layui-row layui-col-space15" style="display:none;">
+      <div class="layui-col-md8">
+        <div class="layui-row layui-col-space15">
+          <div class="layui-col-md6">
+            <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-md6">
+            <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">
+                      <li class="layui-col-xs6">
+                        <a lay-href="app/content/comment.html" class="layadmin-backlog-body">
+                          <h3>待审评论</h3>
+                          <p><cite>66</cite></p>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs6">
+                        <a lay-href="app/forum/list.html" class="layadmin-backlog-body">
+                          <h3>待审帖子</h3>
+                          <p><cite>12</cite></p>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs6">
+                        <a lay-href="template/goodslist.html" class="layadmin-backlog-body">
+                          <h3>待审商品</h3>
+                          <p><cite>99</cite></p>
+                        </a>
+                      </li>
+                      <li class="layui-col-xs6">
+                        <a href="javascript:;" onclick="layer.tips('不跳转', this, {tips: 3});" class="layadmin-backlog-body">
+                          <h3>待发货</h3>
+                          <p><cite>20</cite></p>
+                        </a>
+                      </li>
+                    </ul>
+                    <ul class="layui-row layui-col-space10">
+                      <li class="layui-col-xs6">
+                        <a href="javascript:;" class="layadmin-backlog-body">
+                          <h3>待审友情链接</h3>
+                          <p><cite style="color: #FF5722;">5</cite></p>
+                        </a>
+                      </li>
+                    </ul>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="layui-col-md12">
+            <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">
+              <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="<?php  echo Dever::url("notice?where_id=".$v['id']."&where_config=".$v['config']) ?>" target="_blank" class="layui-bg-red" 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">版本信息</div>
+          <div class="layui-card-body layui-text">
+            <table class="layui-table">
+              <colgroup>
+                <col width="100">
+                <col>
+              </colgroup>
+              <tbody>
+                <tr>
+                  <td>当前版本</td>
+                  <td>
+                    <script type="text/html" template>
+                      v{{ layui.admin.v }}
+                    </script>
+                  </td>
+                </tr>
+                <tr>
+                  <td>基于框架</td>
+                  <td>
+                    <script type="text/html" template>
+                      layui-v{{ layui.v }}
+                    </script>
+                 </td>
+                </tr>
+                <tr>
+                  <td>主要特色</td>
+                  <td>零门槛 / 响应式 / 清爽 / 极简</td>
+                </tr>
+                <tr>
+                  <td>获取渠道</td>
+                  <td style="padding-bottom: 0;">
+                    <div class="layui-btn-container">
+                      <a href="http://www.layui.com/admin/" target="_blank" class="layui-btn layui-btn-danger">获取授权</a>
+                      <a href="http://fly.layui.com/download/layuiAdmin/" target="_blank" class="layui-btn">立即下载</a>
+                    </div>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+        </div>
+        
+        <div class="layui-card">
+          <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">
+          <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 class="layui-card">
+          <div class="layui-card-header">
+            作者心语
+            <i class="layui-icon layui-icon-tips" lay-tips="要支持的噢" lay-offset="5"></i>
+          </div>
+          <div class="layui-card-body layui-text layadmin-text">
+            <p>一直以来,layui 秉承无偿开源的初心,虔诚致力于服务各层次前后端 Web 开发者,在商业横飞的当今时代,这一信念从未动摇。即便身单力薄,仍然重拾决心,埋头造轮,以尽可能地填补产品本身的缺口。</p>
+            <p>在过去的一段的时间,我一直在寻求持久之道,已维持你眼前所见的一切。而 layuiAdmin 是我们尝试解决的手段之一。我相信真正有爱于 layui 生态的你,定然不会错过这一拥抱吧。</p>
+            <p>子曰:君子不用防,小人防不住。请务必通过官网正规渠道,获得 <a href="http://www.layui.com/admin/" target="_blank">layuiAdmin</a>!</p>
+            <p>—— 贤心(<a href="http://www.layui.com/" target="_blank">layui.com</a>)</p>
+          </div>
+        </div>
+      </div>
+      
+    </div>
+  </div>
+
+  <?php require Dever::config("base")->data . 'compile/dreamland/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>

+ 62 - 0
data/compile/dreamland/manage/layadmin/home.cmp.php

@@ -0,0 +1,62 @@
+<?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 require Dever::config("base")->data . 'compile/dreamland/manage/layadmin/inc/head.cmp.php' ?>
+</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 require Dever::config("base")->data . 'compile/dreamland/manage/layadmin/inc/nav.cmp.php' ?>
+
+      <?php require Dever::config("base")->data . 'compile/dreamland/manage/layadmin/inc/menu.cmp.php' ?>
+
+      
+      <div class="layadmin-pagetabs" id="LAY_app_tabs">
+        <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 require Dever::config("base")->data . 'compile/dreamland/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');
+</script>
+</body>
+</html>

+ 27 - 0
data/compile/dreamland/manage/layadmin/inc/head.cmp.php

@@ -0,0 +1,27 @@
+<?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" href="<?php echo Dever::config("host")->script ?>lib/layui/admin/style/admin.css?v3" 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 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 ?>"</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/dreamland/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/dreamland/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>

+ 51 - 0
data/compile/dreamland/manage/layadmin/inc/script.cmp.php

@@ -0,0 +1,51 @@
+<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/jquery/store.js"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/bootstrap/js/bootstrap.min.js"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/pjax/pjax.js"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/pjax/nprogress.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"></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/echarts/echarts.common.min.js?v1"></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/tool/md5.js"></script>
+
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/layui/upload.js?v11"></script>
+<script type="text/javascript" src="<?php echo Dever::config("host")->script ?>lib/layui/layui.js"></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/manage/main.js?v40"></script>

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

@@ -0,0 +1,79 @@
+<?php $data['manage/auth.set']=Dever::load('manage/auth.set') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php require Dever::config("base")->data . 'compile/dreamland/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 Dever::url("auth.login") ?>" 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.set']['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 Dever::load("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::config("base")->copyright)): ?>display:none;<?php endif; ?>"><?php  echo Dever::config("base")->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/dreamland/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>

+ 161 - 0
data/compile/dreamland/manage/layadmin/project/database/list.cmp.php

@@ -0,0 +1,161 @@
+<?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_thead']=Dever::load('manage/database.list_thead') ?>
+<?php $data['manage/database.list_tbody']=Dever::load('manage/database.list_tbody') ?>
+<?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') ?>
+<?php $data['manage/top.get']=Dever::load('manage/top.get') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php require Dever::config("base")->data . 'compile/dreamland/manage/layadmin/inc/head.cmp.php' ?>
+  <link rel="stylesheet" href="<?php echo Dever::config("host")->script ?>lib/layui/admin/modules/plugin/formselects/formselects.css" media="all" />
+</head>
+<body class="theme-<?php  echo Dever::load("/auth.config#template") ?>">
+<style id="addstyle"><?php echo $data['manage/database.listStyle'] ?></style>
+<style>
+.layui-table-cell .layui-select,.layui-table-cell .layui-input
+{
+    height: 25px;
+}
+.layui-table-cell {
+    height: auto;
+}
+
+.table th,.table td {
+  min-width: 70px;
+}
+#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;
+}
+</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"><img src="#"></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">
+      <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'] ?>"/>
+      <?php if(isset($data['manage/top.get']) && is_array($data['manage/top.get'])): ?><?php $t=count($data['manage/top.get'])-1 ?><?php $i=0 ?><?php foreach($data['manage/top.get'] as $k => $v): ?><input type="hidden" name="menu_id" id="menu_id" value="<?php echo $data['manage/database.info']['menu_id'] ?>" style="display:none"/><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/top.get'] ?><?php endif; ?>
+      <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-name"><?php echo isset($v['name']) ? $v['name'] : "" ?></span> > <span id="list-project"><?php echo $data['manage/database.info']['project_name'] ?></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 style="padding-bottom: 10px;">
+          <a class="layui-btn layuiadmin-btn-list" data-type="add" id="list-parent" style="<?php echo $data['manage/database.info']['parent_state'] ?>" href="<?php echo $data['manage/database.info']['parent'] ?>">返回上一页</a>
+
+          <a class="layui-btn layuiadmin-btn-list" data-type="add" id="list-add" href="<?php echo $data['manage/database.info']['add'] ?>" style="<?php echo $data['manage/database.info']['add_state'] ?>">新增</a>
+
+          <span id="list-button"><?php echo $data['manage/database.list_button'] ?></span>
+        </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'] ?>"> 
+          <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 if(isset($data['manage/database.list_tbody']) && is_array($data['manage/database.list_tbody'])): ?><?php $t=count($data['manage/database.list_tbody'])-1 ?><?php $i=0 ?><?php foreach($data['manage/database.list_tbody'] as $k => $v): ?><?php echo $v ?><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/database.list_tbody'] ?><?php endif; ?></tbody>
+      </table>
+
+      <div id="mul"><?php echo $data['manage/database.list_mul'] ?></div>
+      <div id="page"><?php  echo Dever::page("current") ?></div>
+      <div class="dever_desc" id="desc" style="<?php if(!(Dever::load('manage/database.info#listDesc'))): ?>display:none;<?php endif; ?>"><?php echo $data['manage/database.info']['listDesc'] ?></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 require Dever::config("base")->data . 'compile/dreamland/manage/layadmin/inc/script.cmp.php' ?>
+  <script id="list-thead-data">
+    config.table = {};
+    config.table.cols = [];
+  </script>
+  <script id="list-tbody-data">
+    config.table.data = [];
+  </script>
+  <script>
+  layui.config({
+    base: '<?php echo Dever::config("host")->script ?>lib/layui/admin/' //静态资源所在路径
+  }).extend({
+    formSelects: 'plugin/formselects/formselects',
+    index: 'lib/index' //主入口模块
+  }).use(['index', 'contlist', 'table', 'form', 'formSelects'], function(){
+    var table = layui.table;
+    var form = layui.form; 
+    var formSelects = layui.formSelects;
+
+    /*
+    table.render({
+      elem: '#table'
+      ,page: false
+      ,limit:20
+      ,cols: config.table.cols
+      ,data: config.table.data
+    });
+    */
+
+    init();
+
+    if ($('.dever-manage').length) {
+      $('.dever-manage').click(function()
+      {
+        showMsg('数据结构', $(this), '#struct');
+      })
+    }
+  });
+  </script>
+</body>
+</html>

+ 119 - 0
data/compile/dreamland/manage/layadmin/project/database/update.cmp.php

@@ -0,0 +1,119 @@
+<?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.res']=Dever::load('manage/database.res') ?>
+<?php $data['manage/database.update']=Dever::load('manage/database.update') ?>
+<?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') ?>
+<?php $data['manage/database.update_button']=Dever::load('manage/database.update_button') ?>
+<?php $data['/database.layui_card']=Dever::load('/database.layui_card') ?>
+<?php $data['/database.card']=Dever::load('/database.card') ?>
+<!DOCTYPE html>
+<!--power by dever--><html>
+<head>
+  <?php require Dever::config("base")->data . 'compile/dreamland/manage/layadmin/inc/head.cmp.php' ?>
+<link rel="stylesheet" href="<?php echo Dever::config("host")->script ?>lib/layui/admin/modules/plugin/formselects/formselects.css" media="all" />
+  <style>
+    .layui-input,.xm-select-parent
+    {
+      width: 50%;
+    }
+    @media screen and (max-width: 1024px) {
+        .layui-input,.xm-select-parent
+        {
+          width: 90%;
+        }
+    }
+
+    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"><img src="#"></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" target="f1" class="form1" role="form" autocomplete="off" action="<?php echo $data['manage/database.info']['action'] ?>">
+    <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="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">
+      <div class="<?php echo $data['/database.card'] ?>">
+        <div class="layui-card" style="<?php if(!(Dever::load('/database.layui_card'))): ?>display:none;<?php endif; ?>">
+          <div class="layui-card-header" style="display:none;">响应式组合</div>
+          <div class="layui-card-body" id="content"><?php if(isset($data['manage/database.update']) && is_array($data['manage/database.update'])): ?><?php $t=count($data['manage/database.update'])-1 ?><?php $i=0 ?><?php foreach($data['manage/database.update'] as $k => $v): ?><?php echo $v ?><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/database.update'] ?><?php endif; ?></div>
+          <div class="layui-card-body">
+            <div class="layui-form-item">
+                <div id="update_button" submit="<?php  echo Dever::submit() ?>"><?php echo $data['manage/database.update_button'] ?></div>
+              </div>
+            </div>
+        </div>
+      </div>
+    </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 require Dever::config("base")->data . 'compile/dreamland/manage/layadmin/inc/script.cmp.php' ?>
+  <script id="update_script">
+  layui.config({
+    base: '<?php echo Dever::config("host")->script ?>lib/layui/admin/' //静态资源所在路径
+  }).extend({
+    index: 'lib/index', //主入口模块
+    formSelects: 'plugin/formselects/formselects'
+  }).use(['index', 'contlist', 'table', 'form', 'formSelects'], function(){
+    var table = layui.table;
+    var form = layui.form; 
+    var formSelects = layui.formSelects;
+
+    /*
+    $('select').each(function() {
+        if ($(this).attr('xm-value')) {
+          formSelects.value($(this).attr('xm-select'), $(this).attr('xm-value'));
+        }
+    });
+    */
+
+    init();
+  });
+  </script>
+</body>
+</html>

+ 1 - 0
data/readme

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

+ 189 - 0
main/assets/pc/article.html

@@ -0,0 +1,189 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
+	<meta content="yes" name="apple-mobile-web-app-capable">
+	<meta content="black" name="apple-mobile-web-app-status-bar-style">
+	<meta content="telephone=no" name="format-detection">
+
+	<title>文章</title>
+
+	<meta name="Keywords" content="" />
+	<meta name="Description" content="" />
+<link href="css/global.css?v=38e4caa9" rel="stylesheet"><link href="css/article.css?v=cfd58660" rel="stylesheet"></head>
+
+<body>
+	<header class="bt10">
+		<div class="wrapper">
+			<div class="clearfix">
+				<a class="logo"><img src="images/logo.png?v=715222a7" alt=""></a>
+				<ul class="menu">
+					<li><a href="">登录</a></li>
+					<li><a href="">注册</a></li>
+					<li><a href="">企业邮箱登录</a></li>
+				</ul>
+			</div>
+			<ul class="tnav">
+				<li><a href="">首页</a></li>
+				<li><a href="">时装</a></li>
+				<li><a href="">美容</a></li>
+				<li><a href="">娱乐</a></li>
+				<li><a href="">视频</a></li>
+				<li><a href="">秀场</a></li>
+				<li class=""><a href="">电子杂志</a></li>
+				<li><a href="">报刊订阅</a></li>
+			</ul>
+		</div>
+	</header>
+
+	<div class="breadcrumb">
+		<div>
+			<div class="wrapper">
+				<a href="">首页</a> > <a href="">时装</a> > <span>先别着急买春装 看完2019秋冬趋势 趁打折买他们</span>
+			</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span></span></p>
+			</div>
+		</div>
+	</div>
+	<div class="article wrapper">
+		<div class="article-wrap">
+			<h1>先别着急买春装 看完2019秋冬趋势 趁打折买他们</h1>
+			<div class="article-info">
+				<p>编辑:SG精品</p>
+				<p>2019-03-20</p>
+				<p>分享到:<a href="#" class="share-weibo"></a><a href="#" class="share-wechat"></a></p>
+			</div>
+			<div class="article-summary">
+				拥有一条薄纱仙女裙应该是每个小仙女的梦想吧?薄纱裙不嫌多,正值春季赏花的时候,YOKA小姐姐觉得也正是穿薄纱裙出去拍拍拍的时候,国外的时尚博主们演绎了无数套薄纱裙LOOK,难道她们的购物车中都有这件单品?
+			</div>
+			<div class="rich-wrapper">
+				<p>又是一年春好处,当纷繁浪漫的春夏流行趋势铺天盖地,我们的肌肤也提早感受到了那份轻盈和柔软。本季流行趋势我们想从“肌肤”的角度出发,探讨当下风尚在面料上的具体表现,将那份呼之欲出的美好,拓印在与我们朝夕相处的“第二层肌肤”之上。
+				</p>
+				<br>
+				<img src="images/tmp2.jpg?v=4607d319" width="" alt="">
+				<br>
+				<p>霓裳丝绸,如披一身绮丽云霞。没有女人能抵抗丝绸的魅力,天然蛋白纤维娇柔亲肤的质感,以及影影绰绰间如流水般的光泽度,令我们在何时何地都能散发优雅与高贵。与之前略有不同的是,本季伸展台上丝绸被设计师的妙手锻造出了别致轮廓与硬挺造型,有别于以往如瀑倾洒的女性气息,刚柔并济的美学姿态正在注入绸缎所定义的高光时刻。
+				</p>
+				<br>
+				<img src="images/tmp2.jpg?v=4607d319" width="" alt="">
+				<br>
+				<p>风乍起,吹皱一池春水。我们总是期待能够将保养得意的肌肤恰如其分地展现在明媚春色中,于是薄纱便是这一季最唯美的表达方式。将薄纱当做画布,烂漫波点、立体花朵、精致刺绣丰富了透视薄纱的时髦语境,而清新柔和的色彩、恰到好处的留白与飘飘欲仙的材质相得益彰,诠释出本季别开生面的性感面貌——自然清新不流俗。<br>在这个美好的春日里,彩色的衬衫在更有生机更能match季节感,如花朵般绽放,选择彩色衬衫来争奇斗艳吧!
+				</p>
+			</div>
+
+			<div class="star-module">
+				<h2>相关推荐</h2>
+				<div class="wrapper clearfix">
+					<dl>
+						<dt>
+							<a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></a>
+						</dt>
+						<dd>
+							<h3><a href="#">明星设计时代的更替 | MODE</a></h3>
+						</dd>
+						<dd>
+							<p>85 岁的 Karl Lagerfeld 走了,Chanel 进入了“后老佛爷”时代。人们说,这标志着一个时装时代的结束。30岁的蕾哈娜(Rihanna)即......</p>
+						</dd>
+					</dl>
+					<dl>
+						<dt>
+							<a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></a>
+						</dt>
+						<dd>
+							<h3><a href="#">在长沙找到时尚“新活法”</a></h3>
+						</dd>
+						<dd>
+							<p>85 岁的 Karl Lagerfeld 走了,Chanel 进入了“后老佛爷”时代。人们说,这标志着一个时装时代的结束。30岁的蕾哈娜(Rihanna)即......
+							</p>
+						</dd>
+					</dl>
+				</div>
+			</div>
+			<!-- end 娱乐 -->
+		</div>
+		<div class="r-cont">
+			<a href="" class="ad">
+				<img src="images/ad.jpg?v=86319426" width="380" height="600" alt="">
+			</a>
+			<div class="top-module">
+				<h3>精彩TOP</h3>
+				<ul>
+					<li><em>1</em><a href="#">倪妮看秀造型被称赞,倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>2</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>3</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>4</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>5</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>6</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>7</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>8</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>9</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+					<li><em>10</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+				</ul>
+			</div>
+		</div>
+	</div>
+
+
+	<footer>
+		<div class="bnav">
+			<div class="wrapper">
+				<ul>
+					<li><a href=""><img src="images/jpw.png?v=79b1ce8d" alt=""></a></li>
+					<li><a href=""><img src="images/jpcm.png?v=8fedd557" alt=""></a></li>
+					<li><a href="">关于我们</a></li>
+					<li><a href="">联系我们</a></li>
+					<li><a href="">法律声明</a></li>
+					<li><a href="">报刊订阅</a></li>
+				</ul>
+			</div>
+		</div>
+		<div class="wrapper">
+			<div class="contact">
+				<p>地址:北京市海淀区中关村大街甲28号海淀文化艺术大厦B座7层</p>
+				<p>邮编:100086 | 总机:(010)51269000</p>
+				<br>
+				<p>Copyright©1996-2016 精品传媒集团版权所有 未经授权禁止复制或建立镜像</p>
+				<p><a href="">京ICP许可证080599号</a> <a href="">京ICP备09028816号</a> <a href="">广告经营许可证</a> <a
+						href="">京海工商广字第190号</a></p>
+				<p>北京市公安局海淀分局 备案号:1101081739</p>
+			</div>
+		</div>
+	</footer>
+	<a href="javascript:;" class="gotop"></a>
+	<div class="mask" style="display: none">
+		<div class="layer share-layer">
+			<a href="#" class="close"></a>
+			<h5>分享到微信朋友圈</h5>
+			<div class="qrcode" id="qrcode"></div>
+			<p>打开微信,使用“扫一扫”即可将网页分享到我的朋友圈</p>
+		</div>
+	</div>
+	<script src="./static/jquery.js"></script>
+	<script src="./static/qrcode.min.js"></script>
+	<script>var wbtitle = '';var wbpic = '';</script>
+	<script>
+		var qrcode = new QRCode(document.getElementById("qrcode"), {
+			text: location.href,
+			width: 246,
+			height: 246,
+			colorDark: "#000000",
+			colorLight: "#ffffff",
+			correctLevel: QRCode.CorrectLevel.H
+		});
+
+		var wbshare = {
+			title: wbtitle,
+			url: location.href,
+			pic: wbpic,
+			ralateUid: '',
+			appkey: wbappkey
+		}
+	</script>
+<script type="text/javascript" src="js/global.js?v=7cc82a43"></script><script type="text/javascript" src="js/article.js?v=794b5df5"></script></body>
+
+</html>

+ 114 - 0
main/assets/pc/contact.html

@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
+	<meta content="yes" name="apple-mobile-web-app-capable">
+	<meta content="black" name="apple-mobile-web-app-status-bar-style">
+	<meta content="telephone=no" name="format-detection">
+
+	<title>联系我们</title>
+
+	<meta name="Keywords" content="" />
+	<meta name="Description" content="" />
+<link href="css/global.css?v=38e4caa9" rel="stylesheet"><link href="css/contact.css?v=52636a5d" rel="stylesheet"></head>
+
+<body>
+	<header class="bt10">
+		<div class="wrapper">
+			<div class="clearfix">
+				<a class="logo"><img src="images/logo.png?v=715222a7" alt=""></a>
+				<ul class="menu">
+					<li><a href="">登录</a></li>
+					<li><a href="">注册</a></li>
+					<li><a href="">企业邮箱登录</a></li>
+				</ul>
+			</div>
+			<ul class="tnav">
+				<li><a href="">首页</a></li>
+				<li><a href="">时装</a></li>
+				<li><a href="">美容</a></li>
+				<li><a href="">娱乐</a></li>
+				<li><a href="">视频</a></li>
+				<li><a href="">秀场</a></li>
+				<li class=""><a href="">电子杂志</a></li>
+				<li><a href="">报刊订阅</a></li>
+			</ul>
+		</div>
+	</header>
+
+	<h3 class="common-tit">
+		<div>
+			<div class="wrapper">CONTACT US</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span>联系我们</span></p>
+			</div>
+		</div>
+	</h3>
+	<div class="article wrapper">
+		<img src="images/banner.jpg?v=7bbe3c38" alt="">
+		<section>
+			<h5>《精品购物指南》报社</h5>
+			<p>地址:北京市海淀区中关村大街甲28号海淀文化艺术大厦B座7层</p>
+			<p>邮编:100086</p>
+			<p>电话:010-52169000</p>
+			<p>读者热线:80061061000 010-82533658</p>
+			<p>订报热线:4008104000</p>
+			<p>广告热线:8008106918 010-52169122</p>
+		</section>
+		<section>
+			<h5>精品网</h5>
+			<p>地址:北京市海淀区中关村大街甲28号海淀文化艺术大厦B座10层</p>
+			<p>邮编:100086</p>
+			<p>电话:010-62423789</p>
+		</section>
+		<section>
+			<h5>OK!精彩</h5>
+			<p>地址:北京市海淀区中关村大街甲28号海淀文化艺术大厦B座7层</p>
+			<p>邮编:100086</p>
+			<p>电话:010- 52392688</p>
+			<p>邮箱:zhuzhixuan@sg.com.cn</p>
+		</section>
+		<section>
+			<h5>JSTYLE精美</h5>
+			<p>地址:北京市海淀区中关村大街甲28号海淀文化艺术大厦B座十层</p>
+			<p>邮编:100086</p>
+			<p>电话:010-62423789</p>
+			<p>邮箱:jmkf@sg.com.cn</p>
+		</section>
+	</div>
+
+
+	<footer>
+		<div class="bnav">
+			<div class="wrapper">
+				<ul>
+					<li><a href=""><img src="images/jpw.png?v=79b1ce8d" alt=""></a></li>
+					<li><a href=""><img src="images/jpcm.png?v=8fedd557" alt=""></a></li>
+					<li><a href="">关于我们</a></li>
+					<li><a href="">联系我们</a></li>
+					<li><a href="">法律声明</a></li>
+					<li><a href="">报刊订阅</a></li>
+				</ul>
+			</div>
+		</div>
+		<div class="wrapper">
+			<div class="contact">
+				<p>地址:北京市海淀区中关村大街甲28号海淀文化艺术大厦B座7层</p>
+				<p>邮编:100086 | 总机:(010)51269000</p>
+				<br>
+				<p>Copyright©1996-2016 精品传媒集团版权所有 未经授权禁止复制或建立镜像</p>
+				<p><a href="">京ICP许可证080599号</a> <a href="">京ICP备09028816号</a> <a href="">广告经营许可证</a> <a
+						href="">京海工商广字第190号</a></p>
+				<p>北京市公安局海淀分局 备案号:1101081739</p>
+			</div>
+		</div>
+	</footer>
+	<a href="javascript:;" class="gotop"></a>
+	<script src="./static/jquery.js"></script>
+<script type="text/javascript" src="js/global.js?v=7cc82a43"></script><script type="text/javascript" src="js/contact.js?v=6fb007cd"></script></body>
+
+</html>

+ 2 - 0
main/assets/pc/css/article.css

@@ -0,0 +1,2 @@
+.article{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.article .article-wrap{width:790px}.article .article-wrap h1{font-size:34px;font-weight:400;line-height:60px}.article .article-wrap .article-info{padding:50px 0;display:-webkit-box;display:-ms-flexbox;display:flex}.article .article-wrap .article-info p{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0;margin-right:55px;font-size:16px}.article .article-wrap .article-info p:before{content:"";width:10px;height:10px;background-color:#b59a72;display:block;-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-right:7px}.article .article-wrap .article-info p .share-wechat,.article .article-wrap .article-info p .share-weibo{display:block;width:31px;height:31px;background:url(../images/sina.png?v=9338e28d) no-repeat;background-size:31px 31px;margin-right:10px}.article .article-wrap .article-info p .share-wechat{background-image:url(../images/wechat.png?v=f3cb5ec0)}.article .article-wrap .article-summary{padding:25px 39px;color:#666;background-color:#f2f2f2;line-height:30px;font-size:18px}.article .article-wrap .rich-wrapper{position:relative;margin:40px 0 0;font-size:16px;border-bottom:1px solid #ccc;padding:35px 0}.article .article-wrap .rich-wrapper:before{content:"";display:block;width:60px;height:4px;background-color:#b59a72;position:absolute;top:0;left:0}.article .article-wrap .rich-wrapper p{text-indent:2em}.article .article-wrap .rich-wrapper img{display:block;max-width:100%}.article .ad{display:block;margin-bottom:30px}.article .top-module{height:auto;padding-bottom:20px}.article .star-module .wrapper{width:100%;padding:0}.article .star-module h2{margin:35px 0;font-size:26px;font-weight:400}
+/*# sourceMappingURL=article.css.map?v=cfd58660*/

+ 1 - 0
main/assets/pc/css/article.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/article.css?v=cfd58660","sourceRoot":""}

+ 2 - 0
main/assets/pc/css/contact.css

@@ -0,0 +1,2 @@
+section{border-bottom:1px solid #ccc;padding-bottom:35px}section h5{font-size:20px;line-height:56px;font-weight:400;padding:22px 0 27px}section h5:after{content:"";display:block;width:60px;height:4px;background-color:#b59a72}section p{font-size:16px;line-break:30px}section:last-child{border-bottom:0}
+/*# sourceMappingURL=contact.css.map?v=52636a5d*/

+ 1 - 0
main/assets/pc/css/contact.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/contact.css?v=52636a5d","sourceRoot":""}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
main/assets/pc/css/global.css


+ 1 - 0
main/assets/pc/css/global.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/global.css?v=38e4caa9","sourceRoot":""}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
main/assets/pc/css/index.css


+ 1 - 0
main/assets/pc/css/index.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/index.css?v=e301079b","sourceRoot":""}

+ 2 - 0
main/assets/pc/css/intro.css

@@ -0,0 +1,2 @@
+section{border-bottom:1px solid #ccc;padding-bottom:35px}section h5{font-size:20px;line-height:56px;font-weight:400;padding:22px 0 27px}section h5:after{content:"";display:block;width:60px;height:4px;background-color:#b59a72}section p{font-size:16px;line-break:30px}section:last-child{border-bottom:0}
+/*# sourceMappingURL=intro.css.map?v=52636a5d*/

+ 1 - 0
main/assets/pc/css/intro.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/intro.css?v=52636a5d","sourceRoot":""}

+ 2 - 0
main/assets/pc/css/legal.css

@@ -0,0 +1,2 @@
+section{border-bottom:1px solid #ccc;padding-bottom:35px}section h5{font-size:20px;line-height:56px;font-weight:400;padding:22px 0 27px}section h5:after{content:"";display:block;width:60px;height:4px;background-color:#b59a72}section p{font-size:16px;line-break:30px}section:last-child{border-bottom:0}
+/*# sourceMappingURL=legal.css.map?v=52636a5d*/

+ 1 - 0
main/assets/pc/css/legal.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/legal.css?v=52636a5d","sourceRoot":""}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
main/assets/pc/css/list.css


+ 1 - 0
main/assets/pc/css/list.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/list.css?v=58ab3ac6","sourceRoot":""}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
main/assets/pc/css/list1.css


+ 1 - 0
main/assets/pc/css/list1.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/list1.css?v=58ab3ac6","sourceRoot":""}

+ 2 - 0
main/assets/pc/css/magzine.css

@@ -0,0 +1,2 @@
+.magzines ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.magzines ul li{width:220px;padding:0 40px;border-bottom:1px solid #ccc;margin-bottom:40px}.magzines ul li span{display:block;line-height:88px;text-align:center;font-size:18px}.common-pagination ul{padding-top:40px}
+/*# sourceMappingURL=magzine.css.map?v=eb321764*/

+ 1 - 0
main/assets/pc/css/magzine.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/magzine.css?v=eb321764","sourceRoot":""}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
main/assets/pc/css/video.css


+ 1 - 0
main/assets/pc/css/video.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/video.css?v=acf5bfde","sourceRoot":""}

BIN
main/assets/pc/images/ad.jpg


BIN
main/assets/pc/images/ad1.jpg


BIN
main/assets/pc/images/arrow-l.png


BIN
main/assets/pc/images/arrow-r.png


BIN
main/assets/pc/images/banner.jpg


BIN
main/assets/pc/images/btn-next.png


BIN
main/assets/pc/images/btn-prev.png


BIN
main/assets/pc/images/close.png


BIN
main/assets/pc/images/ico-col-cur.png


BIN
main/assets/pc/images/ico-col.png


BIN
main/assets/pc/images/ico-email.png


BIN
main/assets/pc/images/ico-password.png


BIN
main/assets/pc/images/ico-row-cur.png


BIN
main/assets/pc/images/ico-row.png


BIN
main/assets/pc/images/ico-video.png


BIN
main/assets/pc/images/jpcm.png


BIN
main/assets/pc/images/jpw.png


BIN
main/assets/pc/images/logo.png


BIN
main/assets/pc/images/mag.jpg


BIN
main/assets/pc/images/qrcode.png


BIN
main/assets/pc/images/sina.png


BIN
main/assets/pc/images/tmp1.jpg


BIN
main/assets/pc/images/tmp2.jpg


BIN
main/assets/pc/images/top.png


BIN
main/assets/pc/images/wechat.png


+ 533 - 0
main/assets/pc/index.html

@@ -0,0 +1,533 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
+	<meta content="yes" name="apple-mobile-web-app-capable">
+	<meta content="black" name="apple-mobile-web-app-status-bar-style">
+	<meta content="telephone=no" name="format-detection">
+
+	<title>首页</title>
+
+	<meta name="Keywords" content="" />
+	<meta name="Description" content="" />
+	<link rel="stylesheet" href="./static/swiper.min.css" />
+<link href="css/global.css?v=38e4caa9" rel="stylesheet"><link href="css/index.css?v=e301079b" rel="stylesheet"></head>
+
+<body>
+	<header>
+		<div class="wrapper">
+			<div class="clearfix">
+				<a class="logo"><img src="images/logo.png?v=715222a7" alt=""></a>
+				<ul class="menu">
+					<li><a href="#">登录</a></li>
+					<li><a href="#">注册</a></li>
+					<li><a href="#">企业邮箱登录</a></li>
+				</ul>
+			</div>
+			<ul class="tnav">
+				<li><a href="#">首页</a></li>
+				<li><a href="#">时装</a></li>
+				<li><a href="#">美容</a></li>
+				<li><a href="#">娱乐</a></li>
+				<li><a href="#">视频</a></li>
+				<li><a href="#">秀场</a></li>
+				<li><a href="#">电子杂志</a></li>
+				<li><a href="#">报刊订阅</a></li>
+			</ul>
+		</div>
+	</header>
+	<!-- banner swiper -->
+	<div class="index-slide">
+		<div class="swiper-container">
+			<div class="swiper-wrapper clearfix">
+				<div class="swiper-slide">
+					<a href="#" target="_blank" title="">
+						<img src="images/banner.jpg?v=7bbe3c38" width="1200" height="500" alt="" title=""></a>
+				</div>
+				<div class="swiper-slide">
+					<a href="#" target="_blank" title="">
+						<img src="images/banner.jpg?v=7bbe3c38" width="1200" height="500" alt="" title=""></a>
+				</div>
+				<div class="swiper-slide">
+					<a href="#" target="_blank" title="">
+						<img src="images/banner.jpg?v=7bbe3c38" width="1200" height="500" alt="" title=""></a>
+				</div>
+			</div>
+			<a href="javascript:;" class="arrow-l"></a><a href="javascript:;" class="arrow-r"></a>
+			<div class="pagination"></div>
+		</div>
+	</div>
+	<!-- end banner swiper -->
+
+	<!-- 精选 -->
+	<h3 class="common-tit">
+		<div>
+			<div class="wrapper">CAREFULLY CHOSEN</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span>精选</span></p>
+			</div>
+		</div>
+	</h3>
+	<div class="three-cols-module wrapper clearfix " id="jignxuan">
+		<ul>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>MONCLER GENIUS一屋·众声</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>Roberto Cavalli 2019春夏系列</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>Roberto Cavalli 2019春夏系列</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>
+						<i class="ico-video"></i> 仙气十足的Erdem为伦敦皇家芭蕾舞团设计了什么样的服装
+					</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>
+						<i class="ico-video"></i> 仙气十足的Erdem为伦敦皇家芭蕾舞团设计了什么样的服装
+					</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>
+						<i class="ico-video"></i> 仙气十足的Erdem为伦敦皇家芭蕾舞团设计了什么样的服装
+					</p>
+				</a>
+			</li>
+		</ul>
+	</div>
+	<!-- end 精选 -->
+
+	<div class="ad wrapper">
+		<a href="#"><img src="images/ad.jpg?v=86319426" alt=""></a>
+	</div>
+
+	<!-- 独家策划 -->
+	<h3 class="common-tit">
+		<div>
+			<div class="wrapper">EXCLUSIVE PLANNING</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span>独家策划</span></p>
+			</div>
+		</div>
+	</h3>
+	<div class="planning-module wrapper clearfix">
+		<div class="swiper-container" id="dujia">
+			<ul class="swiper-pagination">
+				<li class="active">西方失去宇宙,少了斯坦李的</li>
+				<li>西方失去宇宙,少了斯坦李的</li>
+				<li>西方失去宇宙,少了斯坦李的</li>
+				<li>西方失去宇宙,少了斯坦李的</li>
+				<li>西方失去宇宙,少了斯坦李的</li>
+				<li>西方失去宇宙,少了斯坦李的</li>
+			</ul>
+			<div class="swiper-wrapper">
+				<div class="swiper-slide">
+					<a href="#"><img src="images/ad.jpg?v=86319426" width="380" height="380" alt="" title=""></a>
+				</div>
+				<div class="swiper-slide">
+					<a href="#"><img src="images/banner.jpg?v=7bbe3c38" width="380" height="380" alt="" title=""></a>
+				</div>
+				<div class="swiper-slide">
+					<a href="#"><img src="images/ad.jpg?v=86319426" width="380" height="380" alt="" title=""></a>
+				</div>
+				<div class="swiper-slide">
+					<a href="#"><img src="images/banner.jpg?v=7bbe3c38" width="380" height="380" alt="" title=""></a>
+				</div>
+				<div class="swiper-slide">
+					<a href="#"><img src="images/ad.jpg?v=86319426" width="380" height="380" alt="" title=""></a>
+				</div>
+				<div class="swiper-slide">
+					<a href="#"><img src="images/banner.jpg?v=7bbe3c38" width="380" height="380" alt="" title=""></a>
+				</div>
+			</div>
+		</div>
+		<div class="top-module">
+			<h3>精彩TOP</h3>
+			<ul>
+				<li><em>1</em><a href="#">倪妮看秀造型被称赞,倪妮看秀造型被称赞,平光镜搭...</a></li>
+				<li><em>2</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+				<li><em>3</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+				<li><em>4</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+				<li><em>5</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+				<li><em>6</em><a href="#">倪妮看秀造型被称赞,平光镜搭...</a></li>
+			</ul>
+		</div>
+	</div>
+	<!-- end 独家策划 -->
+
+	<!-- 时装 -->
+	<h3 class="common-tit">
+		<div>
+			<div class="wrapper">FASHION</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span>时装</span></p>
+			</div>
+		</div>
+	</h3>
+	<div class="fashion-module wrapper">
+		<ul>
+			<li><a href="#"><img src="images/tmp1.jpg?v=c5bb1cf7" /><span>Fil 小白:“独立”定义时尚</span></a></li>
+			<li><a href="#"><img src="images/tmp1.jpg?v=c5bb1cf7" /><span>Fil 小白:“独立”定义时尚</span></a></li>
+			<li><a href="#"><img src="images/tmp1.jpg?v=c5bb1cf7" /><span>Fil 小白:“独立”定义时尚</span></a></li>
+			<li><a href="#"><img src="images/tmp1.jpg?v=c5bb1cf7" /><span>Fil 小白:“独立”定义时尚</span></a></li>
+		</ul>
+		<div class="ad">
+			<a href="#"><img src="images/ad.jpg?v=86319426" alt=""></a>
+		</div>
+	</div>
+	<!-- end 时装 -->
+
+	<!-- 美容 -->
+	<h3 class="common-tit">
+		<div>
+			<div class="wrapper">BEAUTY</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span>美容</span></p>
+			</div>
+		</div>
+	</h3>
+	<div class="three-cols-module wrapper clearfix " id="beauty">
+		<ul>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>MONCLER GENIUS一屋·众声</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>Roberto Cavalli 2019春夏系列</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>Roberto Cavalli 2019春夏系列</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>
+						仙气十足的Erdem为伦敦皇家芭蕾舞团设计了什么样的服装
+					</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>
+						仙气十足的Erdem为伦敦皇家芭蕾舞团设计了什么样的服装
+					</p>
+				</a>
+			</li>
+			<li>
+				<a href="#">
+					<div class="imgcont"><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></div>
+					<p>
+						仙气十足的Erdem为伦敦皇家芭蕾舞团设计了什么样的服装
+					</p>
+				</a>
+			</li>
+		</ul>
+	</div>
+	<!-- end 美容 -->
+
+	<!-- end 秀场 -->
+	<h3 class="common-tit runway-tit">
+		<div>
+			<div class="wrapper">RUNWAY</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span>秀场</span></p>
+			</div>
+		</div>
+	</h3>
+	<div class="runway-wrapper wrapper">
+		<div class="module-bd">
+			<div class="swiper-container">
+				<ul>
+					<li>
+						<a href="#" target="_blank">
+							<img
+								src="http://shows.vogueimg.com.cn/showspic/FashionImages/F2019RTW/paris/apc/collection/0E9VWGPvgAN1280_h.jpg.360X540.jpg">
+							<span>Roberto Cavalli 2019春夏系列</span>
+						</a>
+					</li>
+					<li><a href="#" target="_blank"><img
+								src="http://shows.vogueimg.com.cn/showspic/FashionImages/F2019RTW/paris/alexander-mcqueen/collection/3640bW7k9b41280_h.jpg.360X540.jpg"><span>Roberto
+								Cavalli 2019春夏系列</span></a>
+					</li>
+					<li><a href="#" target="_blank"><img
+								src="http://shows.vogueimg.com.cn/showspic/FashionImages/F2019RTW/paris/agnes-b/collection/0oLWvvm4gw81280_h.jpg.360X540.jpg"><span>Roberto
+								Cavalli 2019春夏系列</span></a>
+					</li>
+					<li><a href="#" target="_blank"><img
+								src="http://shows.vogueimg.com.cn/showspic/FashionImages/F2019RTW/paris/beautiful-people/collection/1dPg2mZwPDp1280_h.jpg.360X540.jpg"><span>Roberto
+								Cavalli 2019春夏系列</span></a>
+					</li>
+					<li><a href="#" target="_blank"><img
+								src="http://shows.vogueimg.com.cn/showspic/FashionImages/F2019RTW/paris/acne-studios-pre/collection/0eRynrG26x31280_h.jpg.360X540.jpg"><span>Roberto
+								Cavalli 2019春夏系列</span></a>
+					</li>
+					<li><a href="#" target="_blank"><img
+								src="http://shows.vogueimg.com.cn/showspic/FashionImages/F2019RTW/paris/giambattista-valli/collection/0BLqGd1pkyk1280_h.jpg.360X540.jpg"><span>Roberto
+								Cavalli 2019春夏系列</span></a>
+					</li>
+				</ul>
+				<a href="javascript:;" class="btn-prev"></a>
+				<a href="javascript:;" class="btn-next"></a>
+			</div>
+		</div>
+	</div>
+	<!-- end 秀场 -->
+
+	<!-- 娱乐 -->
+	<h3 class="common-tit">
+		<div>
+			<div class="wrapper">STAR</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span>娱乐</span></p>
+			</div>
+		</div>
+	</h3>
+	<div class="star-module">
+		<div class="wrapper clearfix">
+			<dl>
+				<dt>
+					<a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></a>
+				</dt>
+				<dd>
+					<h3><a href="#">明星设计时代的更替 | MODE</a></h3>
+				</dd>
+				<dd>
+					<p>85 岁的 Karl Lagerfeld 走了,Chanel
+						进入了“后老佛爷”时代。人们说,这标志着一个时装时代的结束。30岁的蕾哈娜(Rihanna)即将迎接她对自己做时装设计师规划的全新阶段,如果 LVMH
+						与她的合作如期展开,那么这将是全球最大的奢侈品牌自1987年创立 Christian Lacroix 后,第二个从零开始推出......</p>
+				</dd>
+			</dl>
+			<dl>
+				<dt>
+					<a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></a>
+				</dt>
+				<dd>
+					<h3><a href="#">2019FEIA中国时尚文化消费投资影响力论坛暨年度颁奖礼隆重举行</a></h3>
+				</dd>
+				<dd>
+					<p>1月15日,由中国知名产业投资机构清科文创与中国第一时尚生活媒体平台JSTYLE精美联合主办的“新文创与大消费时代——2019FEIA中国时尚文化消费投资影响力论坛暨年度颁奖礼”在北京望京凯悦酒店圆满落幕。
+					</p>
+				</dd>
+			</dl>
+			<dl>
+				<dt>
+					<a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""></a>
+				</dt>
+				<dd>
+					<h3><a href="#">范丞丞“恋爱点评员”带你在《女儿们的男朋友》中吃瓜吃柠檬!</a></h3>
+				</dd>
+				<dd>
+					<p>爸爸与“小情人”的新综艺《女儿们的男朋友》马上就要开播了,看来我们又有瓜可以吃啦!不但老爸团都是大明星,范丞丞、王子文、张大大和陈铭组成的“点评团”也超值得期待。</p>
+				</dd>
+			</dl>
+		</div>
+	</div>
+	<!-- end 娱乐 -->
+
+	<!-- 推荐 -->
+	<div class="recommend-module wrapper">
+		<ul>
+			<li><a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""><span>精品购物指南</span></a></li>
+			<li><a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""><span>精品购物指南</span></a></li>
+			<li><a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""><span>精品购物指南</span></a></li>
+			<li><a href=""><img src="images/tmp1.jpg?v=c5bb1cf7" alt=""><span>精品购物指南</span></a></li>
+		</ul>
+		<div class="wechats">
+			<dl>
+				<dd>
+					<h4>精品购物指南</h4>
+					<p>官方微信</p>
+					<span>扫一扫立即关注 </span>
+				</dd>
+				<dt>
+					<img src="images/qrcode.png?v=c3386e72" alt="">
+				</dt>
+			</dl>
+			<dl>
+				<dd>
+					<h4>精品购物指南</h4>
+					<p>官方微信</p>
+					<span>扫一扫立即关注 </span>
+				</dd>
+				<dt>
+					<img src="images/qrcode.png?v=c3386e72" alt="">
+				</dt>
+			</dl>
+			<dl>
+				<dd>
+					<h4>精品购物指南</h4>
+					<p>官方微信</p>
+					<span>扫一扫立即关注 </span>
+				</dd>
+				<dt>
+					<img src="images/qrcode.png?v=c3386e72" alt="">
+				</dt>
+			</dl>
+			<dl>
+				<dd>
+					<h4>精品购物指南</h4>
+					<p>官方微信</p>
+					<span>扫一扫立即关注 </span>
+				</dd>
+				<dt>
+					<img src="images/qrcode.png?v=c3386e72" alt="">
+				</dt>
+			</dl>
+		</div>
+	</div>
+	<!-- end 推荐 -->
+
+	<footer>
+		<div class="bnav">
+			<div class="wrapper">
+				<ul>
+					<li><a href="#"><img src="images/jpw.png?v=79b1ce8d" alt=""></a></li>
+					<li><a href="#"><img src="images/jpcm.png?v=8fedd557" alt=""></a></li>
+					<li><a href="#">关于我们</a></li>
+					<li><a href="#">联系我们</a></li>
+					<li><a href="#">法律声明</a></li>
+					<li><a href="#">报刊订阅</a></li>
+				</ul>
+			</div>
+		</div>
+		<div class="wrapper">
+			<div class="contact">
+				<p>地址:北京市海淀区中关村大街甲28号海淀文化艺术大厦B座7层</p>
+				<p>邮编:100086 | 总机:(010)51269000</p>
+				<br>
+				<p>Copyright©1996-2016 精品传媒集团版权所有 未经授权禁止复制或建立镜像</p>
+				<p><a href="#">京ICP许可证080599号</a> <a href="#">京ICP备09028816号</a> <a href="#">广告经营许可证</a> <a
+						href="#">京海工商广字第190号</a></p>
+				<p>北京市公安局海淀分局 备案号:1101081739</p>
+			</div>
+		</div>
+	</footer>
+
+	<a href="javascript:;" class="gotop"></a>
+
+	<div class="mask">
+		<!-- 登录 -->
+		<!-- <div class="layer">
+			<h4><span>账户登录</span></h4>
+			<form action="">
+				<div class="form-item"><i class="ico-email"></i><input type="text" placeholder="邮箱" ></div>
+				<div class="form-item"><i class="ico-password"></i><input type="password" placeholder="密码" ></div>
+				<div class="form-links">
+					<a href="#">忘记密码?</a>
+					<a href="#">注册用户</a>
+				</div>
+				<div class="btn-wrap">
+					<a href="#" class="btn">登录</a>
+				</div>
+			</form>
+		</div> -->
+
+		<!-- 找回密码 -->
+		<!-- <div class="layer">
+				<h4><span>找回密码</span></h4>
+				<form action="">
+					<div class="form-item"><i class="ico-email"></i><input type="text" placeholder="邮箱" ></div>
+					<div class="form-links align-right">
+						<a href="#">点此登录</a><span>|</span>
+						<a href="#">点此注册</a>
+					</div>
+					<div class="btn-wrap">
+						<a href="#" class="btn">确认</a>
+					</div>
+				</form>
+			</div> -->
+
+		<!-- 账号注册 -->
+		<div class="layer">
+			<h4><span>账号注册</span></h4>
+			<form action="">
+				<div class="form-item"><i class="ico-email"></i><input type="text" placeholder="邮箱"></div>
+				<div class="form-item"><i class="ico-password"></i><input type="password" placeholder="密码"></div>
+				<div class="form-item"><i class="ico-password"></i><input type="password" placeholder="密码"></div>
+				<div class="form-links align-right">
+					<a href="#">已有账号?点此登录</a>
+				</div>
+				<div class="btn-wrap">
+					<a href="#" class="btn">注册</a>
+				</div>
+			</form>
+		</div>
+	</div>
+
+	<script src="./static/jquery.js"></script> 
+<script type="text/javascript" src="js/global.js?v=7cc82a43"></script><script type="text/javascript" src="js/index.js?v=68d4b78b"></script></body>
+<script src="./static/expand-slide.js"></script>
+<script src="./static/swiper.min.js"></script>
+<script src="./static/jquery.roundabout2.js"></script>
+<script>
+	new ExpandSlide($('.index-slide'), {
+		nextBtn: $('.index-slide .arrow-r'),
+		prevBtn: $('.index-slide .arrow-l'),
+		autoplay: 5,
+		callback: function (es) {
+
+		}
+	})
+	var planningSwiper = new Swiper('.planning-module .swiper-container', {
+		effect: 'fade'
+	});
+
+	$('.planning-module .swiper-pagination').on('click', 'li', function () {
+		var index = $(this).addClass('active').siblings().removeClass('active').end().index();
+		planningSwiper.slideTo(index);
+	})
+
+	$('.runway-wrapper .swiper-container ul').roundabout({
+		autoplay: true,
+		autoplayDuration: 5000,
+		autoplayPauseOnHover: true,
+		minScale: 0.1,
+		minOpacity: 1,
+		btnPrev: '.runway-wrapper .btn-prev',
+		btnNext: '.runway-wrapper .btn-next'
+	});
+</script>
+
+</html>

+ 142 - 0
main/assets/pc/intro.html

@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
+	<meta content="yes" name="apple-mobile-web-app-capable">
+	<meta content="black" name="apple-mobile-web-app-status-bar-style">
+	<meta content="telephone=no" name="format-detection">
+
+	<title>企业简介</title>
+
+	<meta name="Keywords" content="" />
+	<meta name="Description" content="" />
+<link href="css/global.css?v=38e4caa9" rel="stylesheet"><link href="css/intro.css?v=52636a5d" rel="stylesheet"></head>
+
+<body>
+	<header class="bt10">
+		<div class="wrapper">
+			<div class="clearfix">
+				<a class="logo"><img src="images/logo.png?v=715222a7" alt=""></a>
+				<ul class="menu">
+					<li><a href="">登录</a></li>
+					<li><a href="">注册</a></li>
+					<li><a href="">企业邮箱登录</a></li>
+				</ul>
+			</div>
+			<ul class="tnav">
+				<li><a href="">首页</a></li>
+				<li><a href="">时装</a></li>
+				<li><a href="">美容</a></li>
+				<li><a href="">娱乐</a></li>
+				<li><a href="">视频</a></li>
+				<li><a href="">秀场</a></li>
+				<li class=""><a href="">电子杂志</a></li>
+				<li><a href="">报刊订阅</a></li>
+			</ul>
+		</div>
+	</header>
+
+	<h3 class="common-tit">
+		<div>
+			<div class="wrapper">ENTERPRISE INTRODUCTION</div>
+		</div>
+		<div>
+			<div class="wrapper">
+				<p><span>企业简介</span></p>
+			</div>
+		</div>
+	</h3>
+	<div class="article wrapper">
+		<img src="images/banner.jpg?v=7bbe3c38" alt="">
+		<section>
+			<h5>《精品购物指南》</h5>
+			<p>
+				《精品购物指南》报社创办于1992年12月,是由中国社科院主管的全民所有制事业单位,主办单位为《中国经营报》社。我报社目前拥有一报三刊共四个全国统一刊号:分别为《精品购物指南》,以及《精品购物指南》主办的《精彩》、《风尚志》、《新视线》。
+			</p>
+			<p>
+				《精品购物指南》是全国第一份彩色印刷的时尚生活报,创刊25年以来,深受读者好评,影响力巨大。1997年北京地区发行量即达数十万份,广告收入超亿元;1998年进入“全国报业广告十强”;连续多年被全国文明办和国家工商行政管理总局等单位评为“全国广告行业文明单位”;2006年荣获“北京市著名商标”称号,是北京地区第一家获此殊荣的报纸;2005—2007连续三年入选国家新闻出版总署报刊颁布的“全国生活服务类报纸竞争力10强”,并蝉联第一;
+				2011年被中国报业协会评为“全国报业经营管理优秀单位”;2013年,被国家新闻出版广电总局评为“全国百强报纸”。2017年被北京市工商局·北京广告协会评为北京广告产业发展30周年杰出贡献单位奖。2018年3月,又一次被国家新闻出版广电总局评为全国“百强报刊”。
+			</p>
+			<p>
+				精品传媒是中国本土经营规模最大、最具影响力的时尚媒体品牌,旗下拥有费加罗Madame Figaro、 OK!精彩、T风尚志、Ttravel新视线等时尚生活杂志,以及精品网、精美app等新媒体产品。
+			</p>
+			<p>
+				作为一份创办已有25年的全国知名时尚生活报纸,《精品购物指南》曾经创造了中国报业的奇迹,为本土时尚媒体事业的发展做出了应有的贡献。《精品购物指南》影响着北京、上海等中国一线城市超过百万时尚人士的品牌认知、生活理念直至消费选择,被誉为时尚人群的“消费参考”和“生活顾问”。
+			</p>
+			<p>
+				依托得天独厚的资源优势,《精品购物指南》将努力打造集合报纸、杂志、线上阅读、移动终端阅读、微博、微信、APP产品群在内的全媒体时尚传播平台。
+			</p>
+		</section>
+		<section>
+			<h5>《OK!精彩》</h5>
+			<p>《OK!精彩》是中国第一本新闻型时尚周刊 也是中国第一本专注于明星名人的时尚周刊。
+			</p>
+			<p>
+				OK! Magazine 来自英国,是全球最大的明星名人时尚杂志,也是全球发行量最大的明星杂志,全球每周发行量超过920万,全球读者超过6200万。
+			</p>
+			<p>
+				- 1993年4月,OK!诞生于英国伦敦,目前全球已有近30个国家的版本。
+			</p>
+			<p>
+				- 2012年5月, 《OK!精彩》 杂志以时尚的姿态来到中国,以专业时尚的角度,年轻活力不八卦的态度,为读者带来集国际及本地名人、高级时尚、流行文化于一体的多层次报道。
+			</p>
+			<p>
+				《OK!精彩》流行度高,大众辨识度广,直接明了的呈现了明星名人的状态,规避了不高级的明星私生活与低级趣味的八卦内容,是一本强调社交与分享的明星名人时尚周刊。
+			</p>
+		</section>
+		<section>
+			<h5>精品网</h5>
+			<p>
+				精品网系精品购物指南报社官方垂直门户网站。由精品网(北京)科技发展有限公司主办,定位为北京时尚生活门户,是国内具有影响力的时尚生活消费门户网站。
+			</p>
+			<p>
+				精品网依托《精品购物指南》时尚媒体群资源优势,热力提倡鲜活、潮流的生活态度。精品网内容涵盖时尚生活的方方面面,生活资讯服务信息实现周更新不少于4000条,日均访问独立IP超过30万。
+			</p>
+			<p>
+				精品网每周被几百万的都市白领人群所关注,占访问总量的85%,职业涵盖时尚消费前沿的所有行业,消费能力极强,其中年轻时尚的都市女性占受众总数的60%以上。
+			</p>
+			<p>
+				精品网与精品旗下媒体共同举办线上线下活动,为客户提供更加有效的整合传播方式。自2004年以来,纸网互动成功组织的一系列大型活动,如环球接力游、时尚盛典、名车品鉴、高尔夫名人邀请赛、美食风暴、时尚主流之夜、风尚小姐大赛、美发大赛等,精品网作为唯一指定的官方网站,负责现场录、直播报道,第一时间展现北京时尚生活最前端的方方面面。现此类活动都已成熟运作,成为北京时尚界的风向标。
+			</p>
+			<p>
+				敢于尝试、乐于挑战,在时尚、美食、休闲、旅游等消费领域具有极强的活力。
+			</p>
+			<p>
+				敏锐,独特的视角,捕捉时尚消费资讯;积极,健康的理念,引领高品位的生活诉求;前瞻,助力新数字化生活;诚信,创造合作共赢典范。综合《精品购物指南》时尚媒体群和精品网网络媒体的传播实力与专业服务精神,我们为您提供多种跨媒体宣传组合方案,全面覆盖泛北京地区高端人群,为您提供理想的超值服务。
+			</p>
+		</section>
+	</div>
+
+
+	<footer>
+		<div class="bnav">
+			<div class="wrapper">
+				<ul>
+					<li><a href=""><img src="images/jpw.png?v=79b1ce8d" alt=""></a></li>
+					<li><a href=""><img src="images/jpcm.png?v=8fedd557" alt=""></a></li>
+					<li><a href="">关于我们</a></li>
+					<li><a href="">联系我们</a></li>
+					<li><a href="">法律声明</a></li>
+					<li><a href="">报刊订阅</a></li>
+				</ul>
+			</div>
+		</div>
+		<div class="wrapper">
+			<div class="contact">
+				<p>地址:北京市海淀区中关村大街甲28号海淀文化艺术大厦B座7层</p>
+				<p>邮编:100086 | 总机:(010)51269000</p>
+				<br>
+				<p>Copyright©1996-2016 精品传媒集团版权所有 未经授权禁止复制或建立镜像</p>
+				<p><a href="">京ICP许可证080599号</a> <a href="">京ICP备09028816号</a> <a href="">广告经营许可证</a> <a
+						href="">京海工商广字第190号</a></p>
+				<p>北京市公安局海淀分局 备案号:1101081739</p>
+			</div>
+		</div>
+	</footer>
+	<a href="javascript:;" class="gotop"></a>
+	<script src="./static/jquery.js"></script>
+<script type="text/javascript" src="js/global.js?v=7cc82a43"></script><script type="text/javascript" src="js/intro.js?v=6fb007cd"></script></body>
+
+</html>

+ 2 - 0
main/assets/pc/js/article.js

@@ -0,0 +1,2 @@
+webpackJsonp([8],{12:function(n,t){},18:function(n,t,c){n.exports=c(3)},3:function(n,t,c){"use strict";c(0),c(12)}},[18]);
+//# sourceMappingURL=article.js.map?v=794b5df5

+ 1 - 0
main/assets/pc/js/article.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/article.js","webpack:///./pc/src/router/article.js"],"names":["webpackJsonp","12","module","exports","18","__webpack_require__","3"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/article.js?v=794b5df5","sourcesContent":["webpackJsonp([8],{\n\n/***/ 12:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(3);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(12);\n\n/***/ })\n\n},[18]);\n\n\n// WEBPACK FOOTER //\n// js/article.js?v=794b5df5","import './global';\nimport '../css/article.css';\n\n\n// WEBPACK FOOTER //\n// ./pc/src/router/article.js"],"sourceRoot":""}

+ 155 - 0
main/assets/pc/js/config.js

@@ -0,0 +1,155 @@
+function getUrlParam(name)
+{
+    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
+    var r = window.location.search.substr(1).match(reg);  //匹配目标参数
+    if (r != null) return unescape(r[2]); return null; //返回参数值
+}
+
+function login()
+{
+	var html = '<div class="form-item"><i class="ico-email"></i><input type="text" placeholder="邮箱" id="email" name="email"></div><div class="form-item"><i class="ico-password"></i><input type="password" placeholder="密码"  id="password" name="password"></div><div class="form-links"><a href="javascript:;" onclick="forget()">忘记密码?</a><a href="javascript:;" onclick="reg()">注册用户</a></div><div class="btn-wrap">';
+
+	return layer('login', '登录', html, '登录');
+}
+
+function reg()
+{
+	var html = '<div class="form-item"><i class="ico-email"></i><input type="text" placeholder="邮箱" id="email" name="email"></div><div class="form-item"><i class="ico-password"></i><input type="password" placeholder="密码" id="password" name="password"></div><div class="form-item"><i class="ico-password"></i><input type="password" placeholder="确认密码" id="cpassword" name="cpassword"></div><div class="form-links align-right"><a href="javascript:;" onclick="login()">已有账号?点此登录</a></div>';
+
+	return layer('reg', '注册', html, '注册');
+}
+
+function forget()
+{
+	var html = '<div class="form-item"><i class="ico-email"></i><input type="text" placeholder="邮箱" id="email" name="email"></div><div class="form-links align-right"><a href="javascript:;" onclick="login()">点此登录</a><span>|</span><a href="javascript:;" onclick="reg()">点此注册</a></div>';
+
+	return layer('find_password', '找回密码', html, '确认');
+}
+
+function edit_password()
+{
+	var signature = getUrlParam('signature');
+	var email = getUrlParam('email');
+	var html = '<div class="form-item"><i class="ico-email"></i><input type="hidden" id="signature" name="signature" value="'+signature+'"><input type="text" placeholder="邮箱" id="email" name="email" value="'+email+'" readonly></div><div class="form-item"><i class="ico-password"></i><input type="password" placeholder="密码" id="password" name="password"></div><div class="form-item"><i class="ico-password"></i><input type="password" placeholder="确认密码" id="cpassword" name="cpassword"></div><div class="form-links align-right"><a href="javascript:;" onclick="login()">已有账号?点此登录</a></div>';
+
+	return layer('edit_password', '密码重置', html, '确认');
+}
+
+function layer(id, title, content, button)
+{
+	var refer = location.href;
+	var mask = '<div class="mask">';
+	var html = '';
+
+	html += '<div class="layer">';
+	html += '<h4><span>'+title+'</span></h4>';
+	html += '<form id="layer_form">';
+	html += content;
+	html += '<div class="btn-wrap"><a href="javascript:;" id="'+id+'" class="btn">'+button+'</a><input type="hidden" id="refer" name="refer" value="'+refer+'"></div>';
+	html += '</form>';
+	html += '</div>';
+
+	if (!$('.mask').length) {
+		$('body').append(mask + html + '</div>');
+	} else {
+		$('.mask').html(html);
+	}
+	$('.mask').show();
+
+	Dever.User().Init();
+}
+
+//定义用户相关的一些信息
+Dever.User().config = 
+{
+	//初始化,绑定click
+	'click' : 
+	{
+		//登录
+		0 : '#login'
+		//注册
+		,1 : '#reg'
+		//找回密码
+		,2 : '#find_password'
+		//找回密码
+		,3 : '#edit_password'
+	}
+
+	//登录信息
+	,0 :
+	{
+		'input' :
+		{
+			'email' : '#email'
+			,'password' : '#password'
+			,'refer' : '#refer|'
+		}
+		//错误提示的div
+		,'status' : '#dever_alert'
+		//错误提示
+		,'error' : '您的邮箱或密码错误'
+		//登录要提交的url
+		,'url' : Dever.Host('passport', 'login.action')
+	}
+
+	//注册信息
+	,1 :
+	{
+		'input' :
+		{
+			'email' : '#email'
+			,'username' : '#email'
+			,'password' : '#password'
+			,'cpassword' : '#cpassword'
+			,'refer' : '#refer|'
+		}
+		//错误提示的div
+		,'status' : '#dever_alert'
+		//错误提示
+		,'error' : '您填写的信息有误'
+		//登录要提交的url
+		,'url' : Dever.Host('passport', 'reg.action')
+	}
+	
+	//找回密码发送邮件
+	,2 :
+	{
+		'input' :
+		{
+			'email' : '#email'
+			,'refer' : '#refer|'
+		}
+		//错误提示的div
+		,'status' : '#dever_alert'
+		//错误提示
+		,'error' : '您填写的信息有误'
+		//找回密码发送邮件
+		,'url' : Dever.Host('passport', 'reg.forget_email')
+	}
+
+	,3 :
+	{
+		'input' :
+		{
+			'email' : '#email'
+			,'password' : '#password'
+			,'cpassword' : '#cpassword'
+			,'signature' : '#signature'
+			,'refer' : '#refer|'
+		}
+		//错误提示的div
+		,'status' : '#dever_alert'
+		//错误提示
+		,'error' : '您填写的信息有误'
+		//找回密码操作
+		,'url' : Dever.Host('passport', 'reg.forget')
+	}
+};
+
+$(document).ready(function()
+{
+	var html = location.href;
+	if (html.indexOf('signature') != -1) {
+		edit_password();
+	}
+});

+ 2 - 0
main/assets/pc/js/contact.js

@@ -0,0 +1,2 @@
+webpackJsonp([7],{1:function(n,t){},19:function(n,t,c){n.exports=c(4)},4:function(n,t,c){"use strict";c(0),c(1)}},[19]);
+//# sourceMappingURL=contact.js.map?v=6fb007cd

+ 1 - 0
main/assets/pc/js/contact.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/contact.js","webpack:///./pc/src/router/contact.js"],"names":["webpackJsonp","1","module","exports","19","__webpack_require__","4"],"mappings":"AAAAA,cAAc,IAERC,EACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,MD4BG","file":"js/contact.js?v=6fb007cd","sourcesContent":["webpackJsonp([7],{\n\n/***/ 1:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 19:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(4);\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(1);\n\n/***/ })\n\n},[19]);\n\n\n// WEBPACK FOOTER //\n// js/contact.js?v=6fb007cd","import './global';\nimport '../css/static_article.css';\n\n\n// WEBPACK FOOTER //\n// ./pc/src/router/contact.js"],"sourceRoot":""}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
main/assets/pc/js/global.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
main/assets/pc/js/global.js.map


+ 2 - 0
main/assets/pc/js/index.js

@@ -0,0 +1,2 @@
+webpackJsonp([6],{14:function(n,t){},21:function(n,t,c){n.exports=c(5)},5:function(n,t,c){"use strict";c(0),c(14)}},[21]);
+//# sourceMappingURL=index.js.map?v=68d4b78b

+ 1 - 0
main/assets/pc/js/index.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js","webpack:///./pc/src/router/index.js"],"names":["webpackJsonp","14","module","exports","21","__webpack_require__","5"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/index.js?v=68d4b78b","sourcesContent":["webpackJsonp([6],{\n\n/***/ 14:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(5);\n\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(14);\n\n/***/ })\n\n},[21]);\n\n\n// WEBPACK FOOTER //\n// js?v=68d4b78b","import './global';\r\nimport '../css/index.css';\n\n\n// WEBPACK FOOTER //\n// ./pc/src/router/index.js"],"sourceRoot":""}

+ 2 - 0
main/assets/pc/js/intro.js

@@ -0,0 +1,2 @@
+webpackJsonp([5],{1:function(n,t){},22:function(n,t,c){n.exports=c(6)},6:function(n,t,c){"use strict";c(0),c(1)}},[22]);
+//# sourceMappingURL=intro.js.map?v=6fb007cd

+ 1 - 0
main/assets/pc/js/intro.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/intro.js","webpack:///./pc/src/router/intro.js"],"names":["webpackJsonp","1","module","exports","22","__webpack_require__","6"],"mappings":"AAAAA,cAAc,IAERC,EACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,MD4BG","file":"js/intro.js?v=6fb007cd","sourcesContent":["webpackJsonp([5],{\n\n/***/ 1:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 22:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(6);\n\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(1);\n\n/***/ })\n\n},[22]);\n\n\n// WEBPACK FOOTER //\n// js/intro.js?v=6fb007cd","import './global';\nimport '../css/static_article.css';\n\n\n// WEBPACK FOOTER //\n// ./pc/src/router/intro.js"],"sourceRoot":""}

+ 2 - 0
main/assets/pc/js/legal.js

@@ -0,0 +1,2 @@
+webpackJsonp([4],{1:function(n,t){},23:function(n,t,c){n.exports=c(7)},7:function(n,t,c){"use strict";c(0),c(1)}},[23]);
+//# sourceMappingURL=legal.js.map?v=6fb007cd

+ 1 - 0
main/assets/pc/js/legal.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/legal.js","webpack:///./pc/src/router/legal.js"],"names":["webpackJsonp","1","module","exports","23","__webpack_require__","7"],"mappings":"AAAAA,cAAc,IAERC,EACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,MD4BG","file":"js/legal.js?v=6fb007cd","sourcesContent":["webpackJsonp([4],{\n\n/***/ 1:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 23:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(7);\n\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(1);\n\n/***/ })\n\n},[23]);\n\n\n// WEBPACK FOOTER //\n// js/legal.js?v=6fb007cd","import './global';\nimport '../css/static_article.css';\n\n\n// WEBPACK FOOTER //\n// ./pc/src/router/legal.js"],"sourceRoot":""}

+ 2 - 0
main/assets/pc/js/list.js

@@ -0,0 +1,2 @@
+webpackJsonp([3],{2:function(n,t){},24:function(n,t,c){n.exports=c(8)},8:function(n,t,c){"use strict";c(0),c(2)}},[24]);
+//# sourceMappingURL=list.js.map?v=95fe5860

+ 1 - 0
main/assets/pc/js/list.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/list.js","webpack:///./pc/src/router/list.js"],"names":["webpackJsonp","2","module","exports","24","__webpack_require__","8"],"mappings":"AAAAA,cAAc,IAERC,EACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,MD4BG","file":"js/list.js?v=95fe5860","sourcesContent":["webpackJsonp([3],{\n\n/***/ 2:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 24:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(8);\n\n\n/***/ }),\n\n/***/ 8:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(2);\n\n/***/ })\n\n},[24]);\n\n\n// WEBPACK FOOTER //\n// js/list.js?v=95fe5860","import './global';\nimport '../css/list.css';\n\n\n// WEBPACK FOOTER //\n// ./pc/src/router/list.js"],"sourceRoot":""}

+ 2 - 0
main/assets/pc/js/list1.js

@@ -0,0 +1,2 @@
+webpackJsonp([2],{2:function(n,t){},25:function(n,t,c){n.exports=c(9)},9:function(n,t,c){"use strict";c(0),c(2)}},[25]);
+//# sourceMappingURL=list1.js.map?v=95fe5860

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.