rabin 2 rokov pred
rodič
commit
7cdf8a24fb
100 zmenil súbory, kde vykonal 5317 pridanie a 0 odobranie
  1. 2 0
      app/boot.php
  2. 191 0
      app/content/database/news.php
  3. 117 0
      app/content/database/news_cate.php
  4. 204 0
      app/content/database/service.php
  5. 152 0
      app/content/database/service_cate.php
  6. 8 0
      app/content/index.php
  7. 9 0
      boot.php
  8. 5 0
      common.php
  9. 48 0
      config/base.php
  10. 160 0
      config/env/localhost/default.php
  11. 6 0
      config/route.php
  12. 6 0
      data/compile/peasafe/main/t1/index.cmp.php
  13. 20 0
      data/compile/peasafe/main/t1/module/banner.cmp.php
  14. 24 0
      data/compile/peasafe/main/t1/module/careers.cmp.php
  15. 89 0
      data/compile/peasafe/main/t1/module/contact.cmp.php
  16. 52 0
      data/compile/peasafe/main/t1/module/info.cmp.php
  17. 41 0
      data/compile/peasafe/main/t1/module/market.cmp.php
  18. 25 0
      data/compile/peasafe/main/t1/module/news.cmp.php
  19. 39 0
      data/compile/peasafe/main/t1/module/readiness.cmp.php
  20. 41 0
      data/compile/peasafe/main/t1/module/service.cmp.php
  21. 61 0
      data/compile/peasafe/main/t1/module/service_list.cmp.php
  22. 31 0
      data/compile/peasafe/main/t1/module/tech.cmp.php
  23. 321 0
      data/compile/peasafe/manage/layadmin/console.cmp.php
  24. 66 0
      data/compile/peasafe/manage/layadmin/home.cmp.php
  25. 33 0
      data/compile/peasafe/manage/layadmin/inc/head.cmp.php
  26. 13 0
      data/compile/peasafe/manage/layadmin/inc/menu.cmp.php
  27. 73 0
      data/compile/peasafe/manage/layadmin/inc/nav.cmp.php
  28. 42 0
      data/compile/peasafe/manage/layadmin/inc/script.cmp.php
  29. 79 0
      data/compile/peasafe/manage/layadmin/login.cmp.php
  30. 260 0
      data/compile/peasafe/manage/layadmin/project/database/list.cmp.php
  31. 235 0
      data/compile/peasafe/manage/layadmin/project/database/update.cmp.php
  32. 396 0
      data/compile/peasafe/upload/manage.cmp.php
  33. 102 0
      data/compile/peasafe/upload/show.cmp.php
  34. 24 0
      data/database/peasafe/peasafe_main_config.php
  35. 15 0
      data/database/peasafe/peasafe_main_contact.php
  36. 15 0
      data/database/peasafe/peasafe_main_menu.php
  37. 22 0
      data/database/peasafe/peasafe_manage_admin.php
  38. 12 0
      data/database/peasafe/peasafe_manage_admin_group.php
  39. 12 0
      data/database/peasafe/peasafe_manage_admin_role.php
  40. 16 0
      data/database/peasafe/peasafe_manage_api.php
  41. 17 0
      data/database/peasafe/peasafe_manage_auth.php
  42. 15 0
      data/database/peasafe/peasafe_manage_company.php
  43. 19 0
      data/database/peasafe/peasafe_manage_config.php
  44. 16 0
      data/database/peasafe/peasafe_manage_cron.php
  45. 16 0
      data/database/peasafe/peasafe_manage_group.php
  46. 21 0
      data/database/peasafe/peasafe_manage_log.php
  47. 21 0
      data/database/peasafe/peasafe_manage_menu.php
  48. 15 0
      data/database/peasafe/peasafe_manage_menu_func.php
  49. 15 0
      data/database/peasafe/peasafe_manage_menu_group.php
  50. 15 0
      data/database/peasafe/peasafe_manage_notice.php
  51. 20 0
      data/database/peasafe/peasafe_manage_opt.php
  52. 24 0
      data/database/peasafe/peasafe_manage_role.php
  53. 20 0
      data/database/peasafe/peasafe_page_col.php
  54. 20 0
      data/database/peasafe/peasafe_page_data.php
  55. 16 0
      data/database/peasafe/peasafe_page_func.php
  56. 22 0
      data/database/peasafe/peasafe_page_module.php
  57. 17 0
      data/database/peasafe/peasafe_page_page.php
  58. 12 0
      data/database/peasafe/peasafe_page_page_module.php
  59. 13 0
      data/database/peasafe/peasafe_upload_cate.php
  60. 34 0
      data/database/peasafe/peasafe_upload_file.php
  61. 25 0
      data/database/peasafe/peasafe_upload_upload.php
  62. 20 0
      data/database/peasafe/peasafe_upload_yun.php
  63. 405 0
      data/peasafe.sql
  64. 1 0
      data/readme
  65. 24 0
      data/upload.php
  66. 2 0
      index.php
  67. 0 0
      main/assets/t1/index.html
  68. 20 0
      main/assets/t1/module/banner.html
  69. 24 0
      main/assets/t1/module/careers.html
  70. 89 0
      main/assets/t1/module/contact.html
  71. 52 0
      main/assets/t1/module/info.html
  72. 42 0
      main/assets/t1/module/market.html
  73. 25 0
      main/assets/t1/module/news.html
  74. 39 0
      main/assets/t1/module/readiness.html
  75. 41 0
      main/assets/t1/module/service.html
  76. 61 0
      main/assets/t1/module/service_list.html
  77. 31 0
      main/assets/t1/module/tech.html
  78. 4 0
      main/assets/t1/static/css/all.min.css
  79. 11 0
      main/assets/t1/static/css/animate.min.css
  80. 563 0
      main/assets/t1/static/css/css2.css
  81. 387 0
      main/assets/t1/static/css/css21.css
  82. 0 0
      main/assets/t1/static/css/custom-animation.css
  83. 1 0
      main/assets/t1/static/css/custom.css
  84. 0 0
      main/assets/t1/static/css/flaticon.css
  85. 0 0
      main/assets/t1/static/css/jquery.fancybox.min.css
  86. 10 0
      main/assets/t1/static/css/jquery.multiscroll.min.css
  87. 0 0
      main/assets/t1/static/css/nice-select.css
  88. 1 0
      main/assets/t1/static/css/slick.min.css
  89. 0 0
      main/assets/t1/static/css/style.css
  90. 0 0
      main/assets/t1/static/css/uikit.min.css
  91. 1 0
      main/assets/t1/static/file/price-diamond.svg
  92. 1 0
      main/assets/t1/static/file/price-quality.svg
  93. 1 0
      main/assets/t1/static/file/price-setting.svg
  94. 1 0
      main/assets/t1/static/file/price-star.svg
  95. BIN
      main/assets/t1/static/font/7cHpv4kjgoGqM7E_A8s52Hs.woff2
  96. BIN
      main/assets/t1/static/font/7cHpv4kjgoGqM7E_Ass52Hs.woff2
  97. BIN
      main/assets/t1/static/font/7cHpv4kjgoGqM7E_DMs5.woff2
  98. BIN
      main/assets/t1/static/font/7cHqv4kjgoGqM7E30-8s51os.woff2
  99. BIN
      main/assets/t1/static/font/7cHqv4kjgoGqM7E30-8s6FospT4.woff2
  100. BIN
      main/assets/t1/static/font/7cHqv4kjgoGqM7E30-8s6VospT4.woff2

+ 2 - 0
app/boot.php

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

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

@@ -0,0 +1,191 @@
+<?php
+
+# 常用的col
+$col = '*';
+
+$cate = function()
+{
+    $array = array();
+    $info = Dever::db('content/news_cate')->state();
+    if($info)
+    {
+        $array += $info;
+    }
+    return $array;
+};
+
+return array
+(
+    # 表名
+    'name' => 'news',
+    # 显示给用户看的名称
+    'lang' => '新闻管理',
+    'order' => 100,
+
+    # 数据结构
+    'struct' => array
+    (
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'list'      => true,
+        ),
+        
+        'name'      => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '标题',
+            'default'   => '',
+            'desc'      => '标题',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'      => true,
+            'search'    => 'fulltext',
+        ),
+
+        'cate_id'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '所属分类',
+            'default'   => '1',
+            'desc'      => '所属分类',
+            'match'     => 'is_numeric',
+            'update'    => 'select',
+            'option'    => $cate,
+            'search'    => 'select',
+            'list'      => true,
+        ),
+
+        'desc'      => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '描述',
+            'default'   => '',
+            'desc'      => '描述',
+            'match'     => 'is_string',
+            'update'    => 'textarea',
+        ),
+
+        'cover'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '列表页封面图',
+            'default'   => '',
+            'desc'      => '列表页封面图',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '403*327',
+        ),
+
+        'top'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '详情页顶部图',
+            'default'   => '',
+            'desc'      => '详情页顶部图',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '882*147',
+        ),
+
+        'pic'     => array
+        (
+            'type'      => 'varchar-2000',
+            'name'      => '详情页轮播图',
+            'default'   => '',
+            'desc'      => '详情页轮播图',
+            'match'     => 'option',
+            'update'    => 'images',
+            'key'       => '1',
+            'place'     => '836*398',
+        ),
+
+        'content'       => array
+        (
+            'type'      => 'text-255',
+            'name'      => '内容',
+            'default'   => '',
+            'desc'      => '请输入内容',
+            'match'     => 'is_string',
+            'update'    => 'editor',
+            'key'       => '1',
+        ),
+
+        '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", {cdate})',
+        ),
+    ),
+    
+    # 管理功能
+    'manage' => array
+    (
+        'lang' => 'name,desc,content',
+        # 自定义快捷新增和编辑
+        'button' => array
+        (
+            '分类配置' => array('list', 'news_cate&project=content&oper_parent=news&oper_project=content'),
+        ),
+        # 列表
+        'list_button' => array
+        (
+            //'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=1'))),
+        ),
+    ),
+
+    # request 请求接口定义
+    'request' => array
+    (
+        'search' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'ids' => array('yes-id', 'in'),
+                'cate_id' => 'yes',
+                'name' => array('yes', 'like'),
+                'id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc', 'cdate' => 'desc'),
+            'limit' => '0,10',
+            'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+        ),
+    ),
+);

+ 117 - 0
app/content/database/news_cate.php

@@ -0,0 +1,117 @@
+<?php
+
+return array
+(
+    # 表名
+    'name' => 'news_cate',
+    # 显示给用户看的名称
+    'lang' => '新闻分类',
+    # 后台菜单排序
+    'order' => 9,
+    '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,
+        ),
+        
+        'reorder'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '排序(数值越大越靠前)',
+            'default'   => '1',
+            'desc'      => '请输入排序',
+            'match'     => 'option',
+            'update'    => 'text',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'desc',
+            'edit'      => true,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '录入时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    # 默认值
+    'default' => array
+    (
+        'col' => 'name,reorder,cdate',
+        'value' => array
+        (
+            '"默认分类",100,' . time(),
+        ),
+    ),
+
+    'manage' => array
+    (
+        'lang' => 'name',
+
+        'insert' => false,
+        'edit' => false,
+
+        # 自定义快捷新增和编辑
+        'button' => array
+        (
+            '新增' => array('fast'),
+        ),
+        # 快捷更新
+        'list_button' => array
+        (
+            'edit' => array('编辑'),
+        ),
+    ),
+
+    'request' => array
+    (
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc','id' => 'desc'),
+            'col' => '*',
+        ),
+    ),
+);

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

@@ -0,0 +1,204 @@
+<?php
+
+# 常用的col
+$col = '*';
+
+$cate = function()
+{
+    $array = array();
+    $info = Dever::db('content/service_cate')->state();
+    if($info)
+    {
+        $array += $info;
+    }
+    return $array;
+};
+
+return array
+(
+    # 表名
+    'name' => 'service',
+    # 显示给用户看的名称
+    'lang' => '业务管理',
+    'order' => 99,
+
+    # 数据结构
+    'struct' => array
+    (
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'list'      => true,
+        ),
+        
+        'name'      => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '标题',
+            'default'   => '',
+            'desc'      => '标题',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'      => true,
+            'search'    => 'fulltext',
+        ),
+
+        'cate_id'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '所属分类',
+            'default'   => '1',
+            'desc'      => '所属分类',
+            'match'     => 'is_numeric',
+            'update'    => 'select',
+            'option'    => $cate,
+            'search'    => 'select',
+            'list'      => true,
+        ),
+
+        'desc'      => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '描述',
+            'default'   => '',
+            'desc'      => '描述',
+            'match'     => 'is_string',
+            'update'    => 'textarea',
+        ),
+
+        'icon'     	=> array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '业务图标',
+            'default'   => '',
+            'desc'      => '业务图标',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '60*60',
+        ),
+
+        'cover'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '列表页封面图',
+            'default'   => '',
+            'desc'      => '列表页封面图',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '262*163',
+        ),
+
+        'pic'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '详情页图片',
+            'default'   => '',
+            'desc'      => '详情页图片',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '836*398',
+        ),
+
+        'content'       => array
+        (
+            'type'      => 'text-255',
+            'name'      => '内容',
+            'default'   => '',
+            'desc'      => '请输入内容',
+            'match'     => 'is_string',
+            'update'    => 'editor',
+            'key'       => '1',
+        ),
+
+        '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", {cdate})',
+        ),
+    ),
+    
+    # 管理功能
+    'manage' => array
+    (
+        'lang' => 'name,desc,content',
+        # 自定义快捷新增和编辑
+        'button' => array
+        (
+            '分类配置' => array('list', 'service_cate&project=content&oper_parent=service&oper_project=content'),
+        ),
+        # 列表
+        'list_button' => array
+        (
+            //'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=1'))),
+        ),
+    ),
+
+    # request 请求接口定义
+    'request' => array
+    (
+        'search' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'ids' => array('yes-id', 'in'),
+                'cate_id' => 'yes',
+                'name' => array('yes', 'like'),
+                'id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc', 'cdate' => 'desc'),
+            'limit' => '0,10',
+            'col' => 'name as name, id, id as value, "" as selected, "" as disabled|id',
+        ),
+
+        'getFive' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc', 'cdate' => 'desc'),
+            'limit' => '0,5',
+            'col' => '*',
+        ),
+    ),
+);

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

@@ -0,0 +1,152 @@
+<?php
+
+return array
+(
+    # 表名
+    'name' => 'service_cate',
+    # 显示给用户看的名称
+    'lang' => '业务分类',
+    # 后台菜单排序
+    'order' => 9,
+    '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,
+        ),
+
+        'desc'      => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '分类描述',
+            'default'   => '',
+            'desc'      => '描述',
+            'match'     => 'is_string',
+            'update'    => 'textarea',
+        ),
+
+        'top'     => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '顶部图',
+            'default'   => '',
+            'desc'      => '顶部图',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '1',
+            'place'     => '882*147',
+        ),
+        
+        'reorder'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '排序(数值越大越靠前)',
+            'default'   => '1',
+            'desc'      => '请输入排序',
+            'match'     => 'option',
+            'update'    => 'text',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'desc',
+            'edit'      => true,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '录入时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    # 默认值
+    'default' => array
+    (
+        'col' => 'name,reorder,cdate',
+        'value' => array
+        (
+            '"默认分类",100,' . time(),
+        ),
+    ),
+
+    'manage' => array
+    (
+        'lang' => 'name',
+
+        'insert' => false,
+        'edit' => false,
+
+        # 自定义快捷新增和编辑
+        'button' => array
+        (
+            '新增' => array('fast'),
+        ),
+        # 快捷更新
+        'list_button' => array
+        (
+            'edit' => array('编辑'),
+        ),
+    ),
+
+    'request' => array
+    (
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc','id' => 'desc'),
+            'col' => '*',
+        ),
+
+        'getFive' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc', 'cdate' => 'desc'),
+            'limit' => '0,5',
+            'col' => '*',
+        ),
+    ),
+);

+ 8 - 0
app/content/index.php

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

+ 9 - 0
boot.php

@@ -0,0 +1,9 @@
+<?php
+$_SERVER['DEVER_SERVER'] = 'localhost';
+define('DEVER_PROJECT', 'peasafe');
+define('DEVER_PROJECT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+if (defined('DEVER_PACKAGE')) {
+	include('dever_package/'.DEVER_PACKAGE.'/index.php');
+} else {
+	include('dever/boot.php');
+}

+ 5 - 0
common.php

@@ -0,0 +1,5 @@
+<?php
+$page = Dever::input('page');
+if ($page) {
+    Dever::setInput('pg', $page);
+}

+ 48 - 0
config/base.php

@@ -0,0 +1,48 @@
+<?php
+$config['base'] = array
+(
+	'name' => 'Peasafe',
+    //'name' => '橙猫供应链平台',
+	'version' => '1.0.0 Beta',
+
+    //'lang_set' => array('zh-cn' => '简体中文', 'en' => '英文'),
+
+    # 加密key
+    'encode_key' => 'dreamland1985',
+);
+
+
+# 前台通用配置
+$config['template'] = array
+(
+    # 静态页面目录
+    //'assets' => array('pc', 'mobile'),
+    'assets' => 't1',
+
+    # 模板编译器目录
+    'template' => 't1',
+
+    # 模板html文件的所在目录,默认为html
+    'path' => '',
+
+    'replace' => array
+    (
+        'css' => 'css/',
+        'js' => 'js/',
+        'images' => 'images/',
+        'fonts' => 'fonts/',
+        'img' => 'img/',
+        'script' => 'script/',
+        'static' => 'static/',
+        'assets_static' => 'assets/',
+    ),
+
+    # 编译器与模板对应关系目录,定义之后,代表可以完全不改动前端的代码,可以为空,为空则一一对应,参考manage
+    'relation' => array
+    (
+        # 首页启动屏幕
+        'home' => 'index',
+    ),
+    
+);
+return $config;

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

@@ -0,0 +1,160 @@
+<?php
+
+# 验证dc是否存在,一般在share目录下
+$dc = array();
+$dc_file = '/data/dm/container/share/dc/config.php';
+if (is_file($dc_file)) {
+    $dc = include($dc_file);
+}
+# 基本配置
+$config['base'] = array
+(
+    # api文档生成是否开启,开启后,将会根据访问来生成文档。生产环境建议禁止
+    'apiDoc' => false,
+    # api日志是否开启,开启后,将会记录所有带有_api后缀方法的请求参数和响应参数
+    'apiLog' => false,
+
+    # 定义自动转为api的目录,可以将该目录下的所有类的公共方法,都转为可以访问的api,开启该功能可能有安全性问题。
+    'apiOpenPath' => 'src',
+
+    # 启用后,将会根据api目录下的配置文件自动定位api
+    'apiConfig' => false,
+);
+
+if (isset($dc['data'])) {
+    $config['base']['data'] = $dc['data'];
+}
+
+$create = false;
+if (isset($dc['mysql']['create'])) {
+    $create = false;
+}
+$create = -1;
+$ip = isset($dc['host']) ? $dc['host'] : '192.168.33.10';
+
+$local = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $ip;
+
+
+# 数据库配置
+$config['database'] = array
+(
+    # 是否开启mysql自助优化功能,开启后,会记录所有where条件和order的字段,可以方便的在后台进行分析、增加索引,必须安装manage组件
+    'opt' => false,
+
+    # 是否开启sql自动优化,将sql中的select * 转换为 select a,b形式,将sql中的where条件按照索引从左到右自动排序,必须打开上述的opt选项,数据量大时建议打开。
+    //'sqlOp' => true,
+    'create' => $create,
+    # 默认数据库配置
+    'default' => array
+    (
+        'type' => 'pdo',
+        'host' => array
+        (
+            'read' => isset($dc['mysql']) ? $dc['mysql']['host'] : 'web-mysql:3306',
+            'update' => isset($dc['mysql']) ? $dc['mysql']['host'] : 'web-mysql:3306',
+            'create' => isset($dc['mysql']) ? $dc['mysql']['host_create'] : 'web-mysql:3306',
+        ),
+        'database' => 'peasafe',
+        '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 . '/peasafe/';
+
+$name = '';
+
+if (isset($dc['mysql'])) {
+    $name = '';
+}
+$upload = $host . $name . 'package/';
+$uploadcdn = $host . $name . 'data/';
+
+$config['host'] = array
+(
+    'upload'=> $upload . 'upload/?save',
+    'uploadRes'     => isset($dc['res']) && $dc['res'] ? $dc['res'] : $uploadcdn . 'upload/',
+
+    # 定义接口
+    'project' => array
+    (
+        'uploads' => array
+        (
+            'path' => $host. 'peasafe/package/upload/?',
+        ),
+    ),
+);
+
+/*
+if (!strstr($_SERVER['DOCUMENT_URI'], 'goods')) {
+    //$config['host']['project']['goods'] = $config['host']['project']['goodss'];
+}
+*/
+
+return $config;

+ 6 - 0
config/route.php

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

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 6 - 0
data/compile/peasafe/main/t1/index.cmp.php


+ 20 - 0
data/compile/peasafe/main/t1/module/banner.cmp.php

@@ -0,0 +1,20 @@
+
+
+<section class="hero-inner">
+	<div class="hero-inner__bg" data-bg-image="<?php echo isset($pic) ? $pic : "" ?>">
+		<div class="container">
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="page-breadcrumb">
+						<h1 class="heading"><?php echo isset($name) ? $name : "" ?></h1>
+						<nav aria-label="breadcrumb">
+							<ol class="breadcrumb">
+								<li class="breadcrumb-item active" aria-current="page"><?php echo isset($desc) ? $desc : "" ?></li>
+							</ol>
+						</nav>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>

+ 24 - 0
data/compile/peasafe/main/t1/module/careers.cmp.php

@@ -0,0 +1,24 @@
+<section class="careers pt-125 pb-100">
+	<div class="container">
+		<div class="row">
+			<div class="col-lg-6 offset-lg-3">
+				<div class="section-heading text-center mb-50">
+					<span class="section-heading__title_small"><?php echo isset($name) ? $name : "" ?></span>
+					<h2 class="section-heading__title_big"><?php echo isset($desc) ? $desc : "" ?> </h2>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<?php if(isset($data) && is_array($data)): foreach($data as $k => $v): ?> 
+			<div class="col-12 mb-30">
+				<div class="careers-block mb-30">
+					<header class="sticky">
+						<h3 class="heading"><?php echo isset($v['name']) ? $v['name'] : "" ?></h3>
+						<p><?php echo isset($v['content']) ? $v['content'] : "" ?></p>
+					</header>
+				</div>
+			</div>
+			<?php endforeach;endif; ?>
+		</div>
+	</div>
+</section>

+ 89 - 0
data/compile/peasafe/main/t1/module/contact.cmp.php

@@ -0,0 +1,89 @@
+
+
+<section class="contact contact--padding" data-bg-image="<?php echo Dever::config("host")->static ?>picture/contact-bg-shape.png">
+	<div class="container">
+		<div class="row align-items-center">
+			<div class="col-lg-5 mb-30">
+				<div class="contact-address contact-address--bg" data-bg-image="<?php echo Dever::config("host")->static ?>picture/contact-address-bg.jpg">
+					<ul>
+						<li class="contact-address__item mb-20">
+							<div class="contact-address__item_icon">
+								<i class="fas fa-map-marker-alt"></i>
+							</div>
+							<div class="contact-address__item_text">
+								<h3 class="text-white">Our Location</h3>
+								<p class="text-white"><?php echo isset($config['address']) ? $config['address'] : "" ?></p>
+							</div>
+						</li>
+						<li class="contact-address__item mb-20">
+							<div class="contact-address__item_icon">
+								<i class="fas fa-envelope-open-text"></i>
+							</div>
+							<div class="contact-address__item_text">
+								<h3 class="text-white">Email Address</h3>
+								<p class="text-white"><?php echo isset($config['email']) ? $config['email'] : "" ?></p>
+							</div>
+						</li>
+						<li class="contact-address__item mb-40">
+							<div class="contact-address__item_icon">
+								<i class="fas fa-phone-alt"></i>
+							</div>
+							<div class="contact-address__item_text">
+								<h3 class="text-white">Call Us Free</h3>
+								<p class="text-white"><i><?php echo isset($config['phone']) ? $config['phone'] : "" ?></i>
+								</p>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<div class="col-lg-7 mb-30">
+				<form action="javascript:void(0);" class="contact-form" id="contact-form">
+					<div class="row">
+						<div class="col-sm-12">
+							<div class="section-heading mb-45">
+								<span class="section-heading__title_small"><?php echo isset($name) ? $name : "" ?></span>
+								<h2 class="section-heading__title_big"><?php echo isset($desc) ? $desc : "" ?></h2>
+							</div>
+						</div>
+						<div class="col-md-6">
+							<input name="name" id="name" type="text" class="contact-form__input" placeholder="Name *">
+						</div>
+						<div class="col-md-6">
+							<input name="email" id="email" type="text" class="contact-form__input" placeholder="Email *">
+						</div>
+						<div class="col-md-12">
+							<textarea class="contact-form__input contact-form__input_textarea" name="message" id="message" placeholder="Message"></textarea>
+						</div>
+						<div class="col-md-12">
+							<button type="button" onclick="up()" class="contact-form__button">Send Message </button>
+						</div>
+					</div>
+					<div class="form-response"></div>
+				</form>
+			</div>
+		</div>
+	</div>
+</section>
+
+
+
+
+<script>
+function up()
+{
+	var name = $('#name').val();
+	var email = $('#email').val();
+	var message = $('#message').val();
+
+	$.post('<?php echo isset($config["submit"]) ? $config["submit"] : "" ?>', {name:name,email:email,message:message}, function(t) {
+		t = eval('(' + t + ')');
+		if (t.code) {
+			alert(t.msg);
+		} else {
+			alert('Thank you for your inquiries!');
+			location.reload();
+		}
+	})
+}
+</script>

+ 52 - 0
data/compile/peasafe/main/t1/module/info.cmp.php

@@ -0,0 +1,52 @@
+<?php if(isset($data) && is_array($data)): foreach($data as $k => $v): ?> 
+<?php if($k%2==1): ?>
+<section class="about about-agency about--inner">
+	<div class="container">
+		<div class="row">
+			<div class="col-lg-5 mb-30">
+				<div class="about-image about-image--agency position-relative">
+					<img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="About" class="about-image__agency_big wow fadeInDown mb-30">
+				</div>
+			</div>
+			<div class="col-lg-6 offset-lg-1 mb-30">
+				<div class="about-agency__right">
+					<div class="section-software p-0 mb-20">
+						<span style="font-size: 24px;" class="section-heading__title_small text-uppercase primary-text-color"><?php echo isset($v['name']) ? $v['name'] : "" ?></span>
+						
+					</div>
+					<div class="about-software__content about-agency__content">
+						<?php echo isset($v['editor']) ? $v['editor'] : "" ?>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+<?php else: ?>
+
+<section class="about about-agency ">
+	<div class="container">
+		<div class="row">
+			
+			<div class="col-lg-6 offset-lg-1 mb-30">
+				<div class="about-agency__right">
+					<div class="section-software p-0 mb-20">
+						<span style="font-size: 24px;" class="section-heading__title_small text-uppercase primary-text-color"><?php echo isset($v['name']) ? $v['name'] : "" ?></span>
+						
+					</div>
+					<div class="about-software__content about-agency__content">
+						<?php echo isset($v['editor']) ? $v['editor'] : "" ?>
+					</div>
+				</div>
+			</div>
+
+			<div class="col-lg-5 mb-30">
+				<div class="about-image about-image--agency position-relative">
+					<img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="About" class="about-image__agency_big wow fadeInDown mb-30">
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+<?php endif; ?>
+<?php endforeach;endif; ?>

+ 41 - 0
data/compile/peasafe/main/t1/module/market.cmp.php

@@ -0,0 +1,41 @@
+
+
+
+<section class="about about-agency about--inner">
+	<div class="container">
+		<div class="row">
+			<div class="col-lg-5 mb-30">
+				<div class="about-image about-image--agency position-relative">
+					<?php if(isset($data) && is_array($data)): foreach($data as $k => $v): ?> 
+					<?php if($k==0): ?>
+					<img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="About" class="about-image__agency_big wow fadeInDown mb-30" data-wow-delay=".2s">
+					<?php else: ?>
+					<img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="About" class="about-image__agency_small wow fadeInUp mb-30" data-wow-delay=".4s">
+					<?php endif; ?>
+					<?php endforeach;endif; ?>
+				</div>
+			</div>
+			<div class="col-lg-6 offset-lg-1 mb-30">
+				<div class="about-agency__right">
+					<div class="section-software p-0 mb-20">
+						<span style="font-size: 24px;" class="section-heading__title_small text-uppercase primary-text-color"><?php echo isset($name) ? $name : "" ?></span>
+						
+					</div>
+					<div class="about-software__content about-agency__content">
+						<span class="title title--small"><?php echo isset($desc) ? $desc : "" ?></span>
+					</div>
+					<div class="list" style="display:none">
+						<ul>
+							<li><i class="fas fa-check"></i>DevOps Development
+							</li>
+							<li class="paragraph">Grursus mal suada faci lisis Lorem ipsum dolarorit ametion sectetur elit dolocons rsus mal to the consectetur elit. </li>
+							<li><i class="fas fa-check"></i>Automated Software</li>
+							<li class="paragraph">Grursus mal suada faci lisis Lorem ipsum dolarorit ametion sectetur elit dolocons rsus mal to the consectetur elit. </li>
+						</ul>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+

+ 25 - 0
data/compile/peasafe/main/t1/module/news.cmp.php

@@ -0,0 +1,25 @@
+<section class="blog blog--padding">
+	<div class="container">
+		<div class="row align-items-center">
+			<div class="col-lg-6 mx-auto">
+				<div class="section-software section-title--modern text-center mb-50"><h2 class="section-software__title_big heading--big"><?php echo isset($name) ? $name : "" ?></h2>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<?php if(isset($data) && is_array($data)): foreach($data as $k => $v): ?> 
+			<div class="col-lg-4 col-md-6 blog-item__column mb-30 wow fadeInUp animated" data-wow-delay=".2s" style="visibility: visible; animation-delay: 0.2s; animation-name: fadeInUp;">
+				<div class="blog-item blog-item--software">
+					<header class="blog-item__header header sticky">
+						<a href="#load_<?php echo isset($k) ? $k : "" ?>" class="blog-item__img_link link link--image"><img width="551" height="395" class="blog-item__img" src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php echo isset($v['name']) ? $v['name'] : "" ?>"></a>
+					</header>
+					<div class="blog-item__div content">
+						<h3 class="blog-item__title"><a href="#load_<?php echo isset($k) ? $k : "" ?>"><?php echo isset($v['name']) ? $v['name'] : "" ?></a>
+						</h3>
+					</div>
+				</div>
+			</div>
+			<?php endforeach;endif; ?>
+		</div>
+	</div>
+</section>

+ 39 - 0
data/compile/peasafe/main/t1/module/readiness.cmp.php

@@ -0,0 +1,39 @@
+
+
+  <section class="services-key">
+  	<div class="container">
+  		<div class="row">
+  			<div class="col-lg-10 offset-lg-1">
+  				<div class="section-heading text-center mb-30">
+  					<h2 class="section-heading__title_small"><?php echo isset($name) ? $name : "" ?></h2>
+  					<h5 class=""><?php echo isset($desc) ? $desc : "" ?></h2>
+  				</div>
+  			</div>
+  		</div>
+
+  		<div class="services-key__tabbar pt-50">
+  			<div class="row">
+  				<div class="col-sm-12">
+  					<div class="tab-content" id="myTabContent">
+  						<div class="tab-pane fade active show" id="awards" role="tabpanel" aria-labelledby="awards-tab">
+								<div class="row">
+									<?php if(isset($data) && is_array($data)): foreach($data as $k => $v): ?> 
+									<div class="col-lg-4 col-md-6 wow fadeInUp" data-wow-delay=".6s">
+										<div class="services__awards mb-30">
+											<img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php echo isset($v['name']) ? $v['name'] : "" ?>" class="services__awards_board">
+											<h3 class="services__awards_title"><a href="javascript:;"><?php echo isset($v['name']) ? $v['name'] : "" ?></a></h3>
+										</div>
+									</div>
+									<?php endforeach;endif; ?>
+
+								</div>
+  						</div>
+  					</div>
+  				</div>
+  			</div>
+  		</div>
+  	</div>
+</section>
+
+
+  

+ 41 - 0
data/compile/peasafe/main/t1/module/service.cmp.php

@@ -0,0 +1,41 @@
+
+
+<section class="blog">
+	<div class="container">
+		<div class="row align-items-center">
+			<div class="col-lg-12">
+				<div class="section-heading mb-55">
+					<span class="section-heading__title_small"><?php echo isset($name) ? $name : "" ?></span>
+					<h5><?php echo isset($desc) ? $desc : "" ?></h5>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<div class="col-sm-12">
+				<div class="blog--wrapper">
+					<div class="row g-0">
+
+						<?php if(isset($data) && is_array($data)): foreach($data as $k => $v): ?> 
+						<div class="col-lg-3 col-md-6 blog-item__column mb-30">
+							<div class="blog-item blog-item--one">
+								<header class="blog-item__header mb-35">
+									<a href="javascript:;" class="blog-item__img_link">
+										<img width="551" height="395" class="blog-item__img" src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php echo isset($v['name']) ? $v['name'] : "" ?>">
+									</a>
+								</header>
+								<div class="blog-item__article">
+									<h5 class="blog-item__title" style="text-align: center;">
+										<a href="javascript:;"><?php echo isset($v['name']) ? $v['name'] : "" ?></a>
+									</h5>
+								</div>
+							</div>
+						</div>
+						<?php endforeach;endif; ?>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+
+

+ 61 - 0
data/compile/peasafe/main/t1/module/service_list.cmp.php

@@ -0,0 +1,61 @@
+<section class="about about--area">
+	<div class="container">
+		<div class="row align-items-center">
+			<div class="col-lg-7 mb-30">
+				<div class="about-startup">
+					<div class="item item--one">
+						<?php if(isset($data) && is_array($data)): foreach($data as $k => $v): ?> 
+						<?php if($k == 0): ?>
+						<div class="left">
+							<div class="about-startup__image image1">
+								<img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="RadiusTheme Startup About" class="wow fadeInLeft animated" data-wow-delay=".2s" data-wow-duration="1s" style="visibility: visible; animation-duration: 1s; animation-delay: 0.2s; animation-name: fadeInLeft;">
+							</div>
+						</div>
+						<?php endif; ?>
+						<?php if($k == 1): ?>
+						<div class="right">
+							<div class="about-startup__image image2">
+								<img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="RadiusTheme Startup About" class="wow fadeInDown animated" data-wow-delay=".4s" data-wow-duration="1.2s" style="visibility: visible; animation-duration: 1.2s; animation-delay: 0.4s; animation-name: fadeInDown;">
+							</div>
+						</div>
+						<?php endif; ?>
+						<?php if($k == 2): ?>
+						</div>
+						<div class="item item--two">
+							<div class="about-startup__image image3">
+								<img src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="RadiusTheme Startup About" class="wow fadeInUp animated" data-wow-delay=".6s" data-wow-duration="1.2s" style="visibility: visible; animation-duration: 1.2s; animation-delay: 0.6s; animation-name: fadeInUp;">
+							</div>
+						
+						<?php endif; ?>
+
+						<?php endforeach;endif; ?>
+					</div>
+				</div>
+			</div>
+			<div class="col-lg-5 mb-30">
+				<div class="section-heading section-heading--startup mb-30">
+					<h2 class="section-heading__title_big mb-15"><?php echo isset($name) ? $name : "" ?></h2>
+					<p><?php echo isset($desc) ? $desc : "" ?></p>
+				</div>
+				<div class="faq-accordion faq-accordion--startup">
+					
+					<div class="accordion" id="accordionExample">
+						<?php if(isset($data) && is_array($data)): foreach($data as $k1 => $v1): ?> 
+						<div class="accordion-item">
+							<h2 class="accordion-header" id="headingOne_<?php echo isset($k1) ? $k1 : "" ?>">
+								<button class="accordion-button <?php if($k1 >0): ?>collapsed<?php endif; ?>" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne_<?php echo isset($k1) ? $k1 : "" ?>" aria-expanded="<?php if($k1 >0): ?>false<?php else: ?>true<?php endif; ?>" aria-controls="collapseOne_<?php echo isset($k1) ? $k1 : "" ?>"><?php echo isset($v1['name']) ? $v1['name'] : "" ?>
+								</button>
+							</h2>
+							<div id="collapseOne_<?php echo isset($k1) ? $k1 : "" ?>" class="accordion-collapse animated fadeInUp collapse <?php if($k1 ==0): ?>show<?php endif; ?>" aria-labelledby="headingOne_<?php echo isset($k1) ? $k1 : "" ?>" data-bs-parent="#accordionExample" style="">
+								<div class="accordion-body"><p><?php echo isset($v1['content']) ? $v1['content'] : "" ?></p>
+								</div>
+							</div>
+						</div>
+						<?php endforeach;endif; ?>
+					</div>
+					
+				</div>
+			</div>
+		</div>
+	</div>
+</section>

+ 31 - 0
data/compile/peasafe/main/t1/module/tech.cmp.php

@@ -0,0 +1,31 @@
+
+
+  <section class="about about--area about--padding">
+
+    <div class="container">
+      <div class="row align-items-center">
+        <div class="col-lg-5 mb-30">
+          <div class="section-heading mb-40">
+            <span class="section-heading__title_small wow fadeInUp" data-wow-delay=".2s" data-wow-duration=".4s"><?php echo isset($name) ? $name : "" ?></span>
+          </div>
+          <div class="about-content">
+            <p class="about-content__text wow fadeInUp" data-wow-delay=".5s" data-wow-duration=".9s"><?php echo isset($desc) ? $desc : "" ?></p>
+          </div>
+        </div>
+        <div class="col-lg-6 offset-lg-1 mb-30 text-md-center">
+          <?php if(isset($data) && is_array($data)): foreach($data as $k => $v): ?> 
+          <div class="about-content__image about-content__image_right position-relative">
+            <img width="690" height="617" src="<?php echo isset($v['pic']) ? $v['pic'] : "" ?>" alt="<?php echo isset($v['name']) ? $v['name'] : "" ?>" class="about-img wow fadeInRight" data-wow-delay="1s" data-wow-duration="1.2s">
+            <div class="about-content__experience">
+              <div class="about-content__experience_title"><?php echo isset($v['name']) ? $v['name'] : "" ?></div>
+            </div>
+          </div>
+          <?php endforeach;endif; ?>
+
+        </div>
+      </div>
+    </div>
+  </section>
+
+
+  

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

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

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

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

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

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

+ 13 - 0
data/compile/peasafe/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>

+ 73 - 0
data/compile/peasafe/manage/layadmin/inc/nav.cmp.php

@@ -0,0 +1,73 @@
+<?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') ?>
+<?php $data['manage/company.getList']=Dever::load('manage/company.getList') ?>
+<?php $data['manage/company.getCur']=Dever::load('manage/company.getCur') ?>
+<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="<?php  echo Dever::load("manage/company.getCur") ? "" : "display:none;" ?>">
+    <a href="javascript:;">
+      <cite><span style="<?php if(!(Dever::load('manage/company.getCur'))): ?>display:none;<?php endif; ?>"><?php echo $data['manage/company.getCur'] ?></span></cite>
+    </a>
+    <ul class="layui-nav-child">
+      <?php if(isset($data['manage/company.getList']) && is_array($data['manage/company.getList'])): ?><?php $t=count($data['manage/company.getList'])-1 ?><?php $i=0 ?><?php foreach($data['manage/company.getList'] as $k => $v): ?><li><a href="javascript:;" data-id="<?php echo isset($v['id']) ? $v['id'] : "" ?>" onclick="topCMenu($(this))"><?php echo isset($v['name']) ? $v['name'] : "" ?></a></li><?php $i=$i+1 ?><?php endforeach; ?><?php else: ?><?php echo $data['manage/company.getList'] ?><?php endif; ?>
+    </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>

+ 42 - 0
data/compile/peasafe/manage/layadmin/inc/script.cmp.php

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

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

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

+ 260 - 0
data/compile/peasafe/manage/layadmin/project/database/list.cmp.php

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

+ 235 - 0
data/compile/peasafe/manage/layadmin/project/database/update.cmp.php

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

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

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

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

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

+ 24 - 0
data/database/peasafe/peasafe_main_config.php

@@ -0,0 +1,24 @@
+<?php return array (
+  'time' => 1662627770,
+  'table' => 'peasafe_main_config',
+  'create' => 'DROP TABLE IF EXISTS `peasafe_main_config`;CREATE TABLE `peasafe_main_config`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'平台ID\',`name` VARCHAR(32) NULL COMMENT \'网站名称\',`info` VARCHAR(800) NULL COMMENT \'网站介绍\',`desc` VARCHAR(2000) NULL COMMENT \'网站描述\',`logo` VARCHAR(150) NULL COMMENT \'网站LOGO\',`phone` VARCHAR(100) NULL COMMENT \'客服电话\',`email` VARCHAR(100) NULL COMMENT \'联系邮箱\',`address` VARCHAR(1000) NULL COMMENT \'联系地址\',`facebook` VARCHAR(1000) NULL COMMENT \'FACEBOOK链接\',`twitter` VARCHAR(1000) NULL COMMENT \'TWITTER链接\',`linkedin` VARCHAR(1000) NULL COMMENT \'LINKEDIN链接\',`instagram` VARCHAR(1000) NULL COMMENT \'INSTAGRAM链接\',`foot` TEXT(255)  COMMENT \'底部信息\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'info' => 2,
+    'desc' => 3,
+    'logo' => 4,
+    'phone' => 5,
+    'email' => 6,
+    'address' => 7,
+    'facebook' => 8,
+    'twitter' => 9,
+    'linkedin' => 10,
+    'instagram' => 11,
+    'foot' => 12,
+    'state' => 13,
+    'cdate' => 14,
+  ),
+  'insert' => 'INSERT INTO `peasafe_main_config` (name,cdate) VALUES ("SPAC工厂",1662627771)',
+);

+ 15 - 0
data/database/peasafe/peasafe_main_contact.php

@@ -0,0 +1,15 @@
+<?php return array (
+  'time' => 1663321169,
+  'table' => 'peasafe_main_contact',
+  'create' => 'DROP TABLE IF EXISTS `peasafe_main_contact`;CREATE TABLE `peasafe_main_contact`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'NAME\',`email` VARCHAR(32) NULL COMMENT \'EMAIL\',`message` TEXT(500)  COMMENT \'MESSAGE\',`status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT \'STATUS\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'DATE\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'email' => 2,
+    'message' => 3,
+    'status' => 4,
+    'state' => 5,
+    'cdate' => 6,
+  ),
+);

+ 15 - 0
data/database/peasafe/peasafe_main_menu.php

@@ -0,0 +1,15 @@
+<?php return array (
+  'time' => 1662686402,
+  'table' => 'peasafe_main_menu',
+  'create' => 'DROP TABLE IF EXISTS `peasafe_main_menu`;CREATE TABLE `peasafe_main_menu`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'菜单名称\',`link` VARCHAR(2000) NULL COMMENT \'菜单链接\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序-数值越大越靠前,相当于置顶\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'link' => 2,
+    'reorder' => 3,
+    'state' => 4,
+    'cdate' => 5,
+  ),
+  'insert' => 'INSERT INTO `peasafe_main_menu` (name,link,cdate) VALUES ("首页","home",1662686402)',
+);

+ 22 - 0
data/database/peasafe/peasafe_manage_admin.php

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

+ 12 - 0
data/database/peasafe/peasafe_manage_admin_group.php

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

+ 12 - 0
data/database/peasafe/peasafe_manage_admin_role.php

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

+ 16 - 0
data/database/peasafe/peasafe_manage_api.php

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

+ 17 - 0
data/database/peasafe/peasafe_manage_auth.php

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

+ 15 - 0
data/database/peasafe/peasafe_manage_company.php

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

+ 19 - 0
data/database/peasafe/peasafe_manage_config.php

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

+ 16 - 0
data/database/peasafe/peasafe_manage_cron.php

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

+ 16 - 0
data/database/peasafe/peasafe_manage_group.php

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

+ 21 - 0
data/database/peasafe/peasafe_manage_log.php

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

+ 21 - 0
data/database/peasafe/peasafe_manage_menu.php

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

+ 15 - 0
data/database/peasafe/peasafe_manage_menu_func.php

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

+ 15 - 0
data/database/peasafe/peasafe_manage_menu_group.php

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

+ 15 - 0
data/database/peasafe/peasafe_manage_notice.php

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

+ 20 - 0
data/database/peasafe/peasafe_manage_opt.php

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

+ 24 - 0
data/database/peasafe/peasafe_manage_role.php

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

+ 20 - 0
data/database/peasafe/peasafe_page_col.php

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

+ 20 - 0
data/database/peasafe/peasafe_page_data.php

@@ -0,0 +1,20 @@
+<?php return array (
+  'time' => 1662630195,
+  'table' => 'peasafe_page_data',
+  'create' => 'DROP TABLE IF EXISTS `peasafe_page_data`;CREATE TABLE `peasafe_page_data`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`module_id` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'所属模块\',`type` INT(11) NOT NULL DEFAULT \'-1\' COMMENT \'功能类型\',`type_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'关联数据\',`col_1` VARCHAR(1000) NULL COMMENT \'标题\',`col_2` VARCHAR(1000) NULL COMMENT \'图片\',`col_3` VARCHAR(1000) NULL COMMENT \'链接\',`reorder` INT(11) NOT NULL DEFAULT \'1\' COMMENT \'排序(数值越大越靠前)\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'module_id' => 1,
+    'type' => 2,
+    'type_id' => 3,
+    'col_1' => 4,
+    'col_2' => 5,
+    'col_3' => 6,
+    'col_4' => 7,
+    'col_5' => 8,
+    'reorder' => 9,
+    'state' => 10,
+    'cdate' => 11,
+  ),
+);

+ 16 - 0
data/database/peasafe/peasafe_page_func.php

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

+ 22 - 0
data/database/peasafe/peasafe_page_module.php

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

+ 17 - 0
data/database/peasafe/peasafe_page_page.php

@@ -0,0 +1,17 @@
+<?php return array (
+  'time' => 1662627769,
+  'table' => 'peasafe_page_page',
+  'create' => 'DROP TABLE IF EXISTS `peasafe_page_page`;CREATE TABLE `peasafe_page_page`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`name` VARCHAR(32) NULL COMMENT \'页面名称\',`key` VARCHAR(60) NULL COMMENT \'页面标识\',`pic` VARCHAR(150) NULL COMMENT \'页面图片\',`desc` VARCHAR(2000) NULL COMMENT \'页面描述\',`state` TINYINT(1) NOT NULL DEFAULT \'1\' COMMENT \'状态\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'name' => 1,
+    'key' => 2,
+    'pic' => 3,
+    'desc' => 4,
+    'reorder' => 5,
+    'state' => 6,
+    'cdate' => 7,
+  ),
+  'insert' => 'INSERT INTO `peasafe_page_page` (`name`,`key`,`desc`,`state`,`cdate`) VALUES ("默认页面","home","默认页面", 1,1662627769)',
+);

+ 12 - 0
data/database/peasafe/peasafe_page_page_module.php

@@ -0,0 +1,12 @@
+<?php return array (
+  'time' => 1663220000,
+  'table' => 'peasafe_page_page_module',
+  'create' => 'DROP TABLE IF EXISTS `peasafe_page_page_module`;CREATE TABLE `peasafe_page_page_module`(`id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT \'ID\',`page_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'页面ID\',`module_id` INT(11) NOT NULL DEFAULT 0 COMMENT \'模块ID\',`cdate` INT(11) NOT NULL DEFAULT 0 COMMENT \'录入时间\') AUTO_INCREMENT = 1, ENGINE = innodb;',
+  'struct' => 
+  array (
+    'id' => 0,
+    'page_id' => 1,
+    'module_id' => 2,
+    'cdate' => 3,
+  ),
+);

+ 13 - 0
data/database/peasafe/peasafe_upload_cate.php

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

+ 34 - 0
data/database/peasafe/peasafe_upload_file.php

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

+ 25 - 0
data/database/peasafe/peasafe_upload_upload.php

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

+ 20 - 0
data/database/peasafe/peasafe_upload_yun.php

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

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 405 - 0
data/peasafe.sql


+ 1 - 0
data/readme

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

+ 24 - 0
data/upload.php

@@ -0,0 +1,24 @@
+<?php return array (
+  'upload' => 
+  array (
+    1 => 
+    array (
+      'id' => '1',
+      'name' => '默认图片配置',
+      'setwh' => '1',
+      'width' => '0',
+      'height' => '0',
+      'size' => '2',
+      'type' => 'jpg,png,gif,webp',
+      'alter' => NULL,
+      'cover' => '1',
+      'save_type' => '1',
+      'yun' => '1',
+      'bucket' => NULL,
+      'vod_convert' => '1',
+      'pipeline' => NULL,
+      'state' => '1',
+      'cdate' => '1662627753',
+    ),
+  ),
+);

+ 2 - 0
index.php

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

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
main/assets/t1/index.html


+ 20 - 0
main/assets/t1/module/banner.html

@@ -0,0 +1,20 @@
+<!-- ======= Hero Start ======= -->
+
+<section class="hero-inner">
+	<div class="hero-inner__bg" data-bg-image="<{$pic}>">
+		<div class="container">
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="page-breadcrumb">
+						<h1 class="heading"><{$name}></h1>
+						<nav aria-label="breadcrumb">
+							<ol class="breadcrumb">
+								<li class="breadcrumb-item active" aria-current="page"><{$desc}></li>
+							</ol>
+						</nav>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>

+ 24 - 0
main/assets/t1/module/careers.html

@@ -0,0 +1,24 @@
+<section class="careers pt-125 pb-100">
+	<div class="container">
+		<div class="row">
+			<div class="col-lg-6 offset-lg-3">
+				<div class="section-heading text-center mb-50">
+					<span class="section-heading__title_small"><{$name}></span>
+					<h2 class="section-heading__title_big"><{$desc}> </h2>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<{loop($data):}> 
+			<div class="col-12 mb-30">
+				<div class="careers-block mb-30">
+					<header class="sticky">
+						<h3 class="heading"><{$v['name']}></h3>
+						<p><{$v['content']}></p>
+					</header>
+				</div>
+			</div>
+			<{endloop}>
+		</div>
+	</div>
+</section>

+ 89 - 0
main/assets/t1/module/contact.html

@@ -0,0 +1,89 @@
+<!-- ======= Contact Area Start ======= -->
+
+<section class="contact contact--padding" data-bg-image="static/picture/contact-bg-shape.png">
+	<div class="container">
+		<div class="row align-items-center">
+			<div class="col-lg-5 mb-30">
+				<div class="contact-address contact-address--bg" data-bg-image="static/picture/contact-address-bg.jpg">
+					<ul>
+						<li class="contact-address__item mb-20">
+							<div class="contact-address__item_icon">
+								<i class="fas fa-map-marker-alt"></i>
+							</div>
+							<div class="contact-address__item_text">
+								<h3 class="text-white">Our Location</h3>
+								<p class="text-white"><{$config['address']}></p>
+							</div>
+						</li>
+						<li class="contact-address__item mb-20">
+							<div class="contact-address__item_icon">
+								<i class="fas fa-envelope-open-text"></i>
+							</div>
+							<div class="contact-address__item_text">
+								<h3 class="text-white">Email Address</h3>
+								<p class="text-white"><{$config['email']}></p>
+							</div>
+						</li>
+						<li class="contact-address__item mb-40">
+							<div class="contact-address__item_icon">
+								<i class="fas fa-phone-alt"></i>
+							</div>
+							<div class="contact-address__item_text">
+								<h3 class="text-white">Call Us Free</h3>
+								<p class="text-white"><i><{$config['phone']}></i>
+								</p>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<div class="col-lg-7 mb-30">
+				<form action="javascript:void(0);" class="contact-form" id="contact-form">
+					<div class="row">
+						<div class="col-sm-12">
+							<div class="section-heading mb-45">
+								<span class="section-heading__title_small"><{$name}></span>
+								<h2 class="section-heading__title_big"><{$desc}></h2>
+							</div>
+						</div>
+						<div class="col-md-6">
+							<input name="name" id="name" type="text" class="contact-form__input" placeholder="Name *">
+						</div>
+						<div class="col-md-6">
+							<input name="email" id="email" type="text" class="contact-form__input" placeholder="Email *">
+						</div>
+						<div class="col-md-12">
+							<textarea class="contact-form__input contact-form__input_textarea" name="message" id="message" placeholder="Message"></textarea>
+						</div>
+						<div class="col-md-12">
+							<button type="button" onclick="up()" class="contact-form__button">Send Message </button>
+						</div>
+					</div>
+					<div class="form-response"></div>
+				</form>
+			</div>
+		</div>
+	</div>
+</section>
+
+
+<!-- ======= Contact Area End ======= -->
+
+<script>
+function up()
+{
+	var name = $('#name').val();
+	var email = $('#email').val();
+	var message = $('#message').val();
+
+	$.post('<{$config["submit"]}>', {name:name,email:email,message:message}, function(t) {
+		t = eval('(' + t + ')');
+		if (t.code) {
+			alert(t.msg);
+		} else {
+			alert('Thank you for your inquiries!');
+			location.reload();
+		}
+	})
+}
+</script>

+ 52 - 0
main/assets/t1/module/info.html

@@ -0,0 +1,52 @@
+<{loop($data):}> 
+<{if($k%2==1):}>
+<section class="about about-agency about--inner">
+	<div class="container">
+		<div class="row">
+			<div class="col-lg-5 mb-30">
+				<div class="about-image about-image--agency position-relative">
+					<img src="<{$v['pic']}>" alt="About" class="about-image__agency_big wow fadeInDown mb-30">
+				</div>
+			</div>
+			<div class="col-lg-6 offset-lg-1 mb-30">
+				<div class="about-agency__right">
+					<div class="section-software p-0 mb-20">
+						<span style="font-size: 24px;" class="section-heading__title_small text-uppercase primary-text-color"><{$v['name']}></span>
+						
+					</div>
+					<div class="about-software__content about-agency__content">
+						<{$v['editor']}>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+<{else:}>
+
+<section class="about about-agency ">
+	<div class="container">
+		<div class="row">
+			
+			<div class="col-lg-6 offset-lg-1 mb-30">
+				<div class="about-agency__right">
+					<div class="section-software p-0 mb-20">
+						<span style="font-size: 24px;" class="section-heading__title_small text-uppercase primary-text-color"><{$v['name']}></span>
+						
+					</div>
+					<div class="about-software__content about-agency__content">
+						<{$v['editor']}>
+					</div>
+				</div>
+			</div>
+
+			<div class="col-lg-5 mb-30">
+				<div class="about-image about-image--agency position-relative">
+					<img src="<{$v['pic']}>" alt="About" class="about-image__agency_big wow fadeInDown mb-30">
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+<{endif;}>
+<{endloop}>

+ 42 - 0
main/assets/t1/module/market.html

@@ -0,0 +1,42 @@
+<!-- ======= About Start ======= -->
+
+
+<section class="about about-agency about--inner">
+	<div class="container">
+		<div class="row">
+			<div class="col-lg-5 mb-30">
+				<div class="about-image about-image--agency position-relative">
+					<{loop($data):}> 
+					<{if($k==0):}>
+					<img src="<{$v['pic']}>" alt="About" class="about-image__agency_big wow fadeInDown mb-30" data-wow-delay=".2s">
+					<{else:}>
+					<img src="<{$v['pic']}>" alt="About" class="about-image__agency_small wow fadeInUp mb-30" data-wow-delay=".4s">
+					<{endif;}>
+					<{endloop}>
+				</div>
+			</div>
+			<div class="col-lg-6 offset-lg-1 mb-30">
+				<div class="about-agency__right">
+					<div class="section-software p-0 mb-20">
+						<span style="font-size: 24px;" class="section-heading__title_small text-uppercase primary-text-color"><{$name}></span>
+						
+					</div>
+					<div class="about-software__content about-agency__content">
+						<span class="title title--small"><{$desc}></span>
+					</div>
+					<div class="list" style="display:none">
+						<ul>
+							<li><i class="fas fa-check"></i>DevOps Development
+							</li>
+							<li class="paragraph">Grursus mal suada faci lisis Lorem ipsum dolarorit ametion sectetur elit dolocons rsus mal to the consectetur elit. </li>
+							<li><i class="fas fa-check"></i>Automated Software</li>
+							<li class="paragraph">Grursus mal suada faci lisis Lorem ipsum dolarorit ametion sectetur elit dolocons rsus mal to the consectetur elit. </li>
+						</ul>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+
+<!-- ======= About End ======= -->

+ 25 - 0
main/assets/t1/module/news.html

@@ -0,0 +1,25 @@
+<section class="blog blog--padding">
+	<div class="container">
+		<div class="row align-items-center">
+			<div class="col-lg-6 mx-auto">
+				<div class="section-software section-title--modern text-center mb-50"><h2 class="section-software__title_big heading--big"><{$name}></h2>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<{loop($data):}> 
+			<div class="col-lg-4 col-md-6 blog-item__column mb-30 wow fadeInUp animated" data-wow-delay=".2s" style="visibility: visible; animation-delay: 0.2s; animation-name: fadeInUp;">
+				<div class="blog-item blog-item--software">
+					<header class="blog-item__header header sticky">
+						<a href="#load_<{$k}>" class="blog-item__img_link link link--image"><img width="551" height="395" class="blog-item__img" src="<{$v['pic']}>" alt="<{$v['name']}>"></a>
+					</header>
+					<div class="blog-item__div content">
+						<h3 class="blog-item__title"><a href="#load_<{$k}>"><{$v['name']}></a>
+						</h3>
+					</div>
+				</div>
+			</div>
+			<{endloop}>
+		</div>
+	</div>
+</section>

+ 39 - 0
main/assets/t1/module/readiness.html

@@ -0,0 +1,39 @@
+<!-- ======= Service Key Area Start ======= -->
+
+  <section class="services-key">
+  	<div class="container">
+  		<div class="row">
+  			<div class="col-lg-10 offset-lg-1">
+  				<div class="section-heading text-center mb-30">
+  					<h2 class="section-heading__title_small"><{$name}></h2>
+  					<h5 class=""><{$desc}></h2>
+  				</div>
+  			</div>
+  		</div>
+
+  		<div class="services-key__tabbar pt-50">
+  			<div class="row">
+  				<div class="col-sm-12">
+  					<div class="tab-content" id="myTabContent">
+  						<div class="tab-pane fade active show" id="awards" role="tabpanel" aria-labelledby="awards-tab">
+								<div class="row">
+									<{loop($data):}> 
+									<div class="col-lg-4 col-md-6 wow fadeInUp" data-wow-delay=".6s">
+										<div class="services__awards mb-30">
+											<img src="<{$v['pic']}>" alt="<{$v['name']}>" class="services__awards_board">
+											<h3 class="services__awards_title"><a href="javascript:;"><{$v['name']}></a></h3>
+										</div>
+									</div>
+									<{endloop}>
+
+								</div>
+  						</div>
+  					</div>
+  				</div>
+  			</div>
+  		</div>
+  	</div>
+</section>
+
+
+  <!-- ======= Service Key Area End ======= -->

+ 41 - 0
main/assets/t1/module/service.html

@@ -0,0 +1,41 @@
+<!-- ======= Blog Area Start ======= -->
+
+<section class="blog">
+	<div class="container">
+		<div class="row align-items-center">
+			<div class="col-lg-12">
+				<div class="section-heading mb-55">
+					<span class="section-heading__title_small"><{$name}></span>
+					<h5><{$desc}></h5>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<div class="col-sm-12">
+				<div class="blog--wrapper">
+					<div class="row g-0">
+
+						<{loop($data):}> 
+						<div class="col-lg-3 col-md-6 blog-item__column mb-30">
+							<div class="blog-item blog-item--one">
+								<header class="blog-item__header mb-35">
+									<a href="javascript:;" class="blog-item__img_link">
+										<img width="551" height="395" class="blog-item__img" src="<{$v['pic']}>" alt="<{$v['name']}>">
+									</a>
+								</header>
+								<div class="blog-item__article">
+									<h5 class="blog-item__title" style="text-align: center;">
+										<a href="javascript:;"><{$v['name']}></a>
+									</h5>
+								</div>
+							</div>
+						</div>
+						<{endloop}>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+
+<!-- ======= Blog Area End ======= -->

+ 61 - 0
main/assets/t1/module/service_list.html

@@ -0,0 +1,61 @@
+<section class="about about--area">
+	<div class="container">
+		<div class="row align-items-center">
+			<div class="col-lg-7 mb-30">
+				<div class="about-startup">
+					<div class="item item--one">
+						<{loop($data):}> 
+						<{if($k == 0):}>
+						<div class="left">
+							<div class="about-startup__image image1">
+								<img src="<{$v['pic']}>" alt="RadiusTheme Startup About" class="wow fadeInLeft animated" data-wow-delay=".2s" data-wow-duration="1s" style="visibility: visible; animation-duration: 1s; animation-delay: 0.2s; animation-name: fadeInLeft;">
+							</div>
+						</div>
+						<{endif;}>
+						<{if($k == 1):}>
+						<div class="right">
+							<div class="about-startup__image image2">
+								<img src="<{$v['pic']}>" alt="RadiusTheme Startup About" class="wow fadeInDown animated" data-wow-delay=".4s" data-wow-duration="1.2s" style="visibility: visible; animation-duration: 1.2s; animation-delay: 0.4s; animation-name: fadeInDown;">
+							</div>
+						</div>
+						<{endif;}>
+						<{if($k == 2):}>
+						</div>
+						<div class="item item--two">
+							<div class="about-startup__image image3">
+								<img src="<{$v['pic']}>" alt="RadiusTheme Startup About" class="wow fadeInUp animated" data-wow-delay=".6s" data-wow-duration="1.2s" style="visibility: visible; animation-duration: 1.2s; animation-delay: 0.6s; animation-name: fadeInUp;">
+							</div>
+						
+						<{endif;}>
+
+						<{endloop}>
+					</div>
+				</div>
+			</div>
+			<div class="col-lg-5 mb-30">
+				<div class="section-heading section-heading--startup mb-30">
+					<h2 class="section-heading__title_big mb-15"><{$name}></h2>
+					<p><{$desc}></p>
+				</div>
+				<div class="faq-accordion faq-accordion--startup">
+					
+					<div class="accordion" id="accordionExample">
+						<{loop($data):}> 
+						<div class="accordion-item">
+							<h2 class="accordion-header" id="headingOne_<{$k1}>">
+								<button class="accordion-button <{if($k1 >0):}>collapsed<{endif;}>" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne_<{$k1}>" aria-expanded="<{if($k1 >0):}>false<{else:}>true<{endif;}>" aria-controls="collapseOne_<{$k1}>"><{$v1['name']}>
+								</button>
+							</h2>
+							<div id="collapseOne_<{$k1}>" class="accordion-collapse animated fadeInUp collapse <{if($k1 ==0):}>show<{endif;}>" aria-labelledby="headingOne_<{$k1}>" data-bs-parent="#accordionExample" style="">
+								<div class="accordion-body"><p><{$v1['content']}></p>
+								</div>
+							</div>
+						</div>
+						<{endloop}>
+					</div>
+					
+				</div>
+			</div>
+		</div>
+	</div>
+</section>

+ 31 - 0
main/assets/t1/module/tech.html

@@ -0,0 +1,31 @@
+<!-- ======= About Start ======= -->
+
+  <section class="about about--area about--padding">
+
+    <div class="container">
+      <div class="row align-items-center">
+        <div class="col-lg-5 mb-30">
+          <div class="section-heading mb-40">
+            <span class="section-heading__title_small wow fadeInUp" data-wow-delay=".2s" data-wow-duration=".4s"><{$name}></span>
+          </div>
+          <div class="about-content">
+            <p class="about-content__text wow fadeInUp" data-wow-delay=".5s" data-wow-duration=".9s"><{$desc}></p>
+          </div>
+        </div>
+        <div class="col-lg-6 offset-lg-1 mb-30 text-md-center">
+          <{loop($data):}> 
+          <div class="about-content__image about-content__image_right position-relative">
+            <img width="690" height="617" src="<{$v['pic']}>" alt="<{$v['name']}>" class="about-img wow fadeInRight" data-wow-delay="1s" data-wow-duration="1.2s">
+            <div class="about-content__experience">
+              <div class="about-content__experience_title"><{$v['name']}></div>
+            </div>
+          </div>
+          <{endloop}>
+
+        </div>
+      </div>
+    </div>
+  </section>
+
+
+  <!-- ======= About End ======= -->

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 4 - 0
main/assets/t1/static/css/all.min.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 11 - 0
main/assets/t1/static/css/animate.min.css


+ 563 - 0
main/assets/t1/static/css/css2.css

@@ -0,0 +1,563 @@
+/* cyrillic */
+@font-face {
+  font-family: 'Jost';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/92zatBhPNqw73oDd4iYl.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Jost';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/92zatBhPNqw73ord4iYl.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Jost';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/92zatBhPNqw73oTd4g.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Jost';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(../font/92zatBhPNqw73oDd4iYl.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Jost';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(../font/92zatBhPNqw73ord4iYl.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Jost';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(../font/92zatBhPNqw73oTd4g.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* hebrew */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2) format('woff2');
+  unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* hebrew */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2) format('woff2');
+  unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* hebrew */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2) format('woff2');
+  unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* hebrew */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2) format('woff2');
+  unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-stretch: 100%;
+  font-display: swap;
+  src: url(../font/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fBBc4.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}

+ 387 - 0
main/assets/t1/static/css/css21.css

@@ -0,0 +1,387 @@
+/* vietnamese */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3p-ks6FospT4.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3p-ks6VospT4.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3p-ks51os.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/7cHpv4kjgoGqM7E_A8s52Hs.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/7cHpv4kjgoGqM7E_Ass52Hs.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/7cHpv4kjgoGqM7E_DMs5.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3_-gs6FospT4.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3_-gs6VospT4.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3_-gs51os.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E30-8s6FospT4.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E30-8s6VospT4.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E30-8s51os.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3t-4s6FospT4.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3t-4s6VospT4.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Barlow';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/7cHqv4kjgoGqM7E3t-4s51os.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmSU5fBBc4.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(../font/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmEU9fBBc4.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(../font/KFOlCnqEu92Fr1MmWUlfBBc4.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
main/assets/t1/static/css/custom-animation.css


+ 1 - 0
main/assets/t1/static/css/custom.css

@@ -0,0 +1 @@
+/*此代码非源码,仅为演示用,下载源码请到:*//*此代码非源码,仅为演示用,下载源码请到:*/

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
main/assets/t1/static/css/flaticon.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
main/assets/t1/static/css/jquery.fancybox.min.css


+ 10 - 0
main/assets/t1/static/css/jquery.multiscroll.min.css

@@ -0,0 +1,10 @@
+/*此代码非源码,仅为演示用,下载源码请到:*//*!
+ * multiscroll.js 0.2.3
+ * https://github.com/alvarotrigo/multiscroll.js
+ *
+ * @license
+ * Get a multiScroll.js Commercial License for commercial use
+ * https://alvarotrigo.com/multiScroll/pricing/
+ *
+ * Copyright (C) 2018 http://alvarotrigo.com/multiScroll/ - A project by Alvaro Trigo
+ */body,html{margin:0;padding:0;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ms-section{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ms-section.ms-table{display:table;width:100%}.ms-tableCell{display:table-cell;vertical-align:middle;width:100%;height:100%}.ms-easing{-webkit-transition:all .7s ease-out;-moz-transition:all .7s ease-out;-o-transition:all .7s ease-out;transition:all .7s ease-out}.ms-notransition{-webkit-transition:none!important;transition:none!important}#multiscroll-nav{position:fixed;z-index:100;margin-top:-32px;top:50%;opacity:1}#multiscroll-nav.right{right:17px}#multiscroll-nav.left{left:17px}#multiscroll-nav ul{margin:0;padding:0}#multiscroll-nav li{display:block;width:14px;height:13px;margin:7px;position:relative}#multiscroll-nav li a{display:block;position:relative;z-index:1;width:100%;height:100%;cursor:pointer;text-decoration:none}#multiscroll-nav li .active span{background:#333}#multiscroll-nav span{top:2px;left:2px;width:8px;height:8px;border:1px solid #000;background:rgba(0,0,0,0);-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;position:absolute;z-index:1}.multiscroll-tooltip{position:absolute;color:#fff;font-size:14px;font-family:arial,helvetica,sans-serif;top:-2px;white-space:nowrap;max-width:220px}.multiscroll-tooltip.right{right:20px}.multiscroll-tooltip.left{left:20px}.ms-responsive .ms-hide{display:none}.ms-scrollable{overflow:hidden;position:relative}.ms-scroller{overflow:hidden}.iScrollIndicator{border:0!important}/*此代码非源码,仅为演示用,下载源码请到:*/

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
main/assets/t1/static/css/nice-select.css


+ 1 - 0
main/assets/t1/static/css/slick.min.css

@@ -0,0 +1 @@
+/*此代码非源码,仅为演示用,下载源码请到:*/.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;top:0;left:0;display:block;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{display:table;content:''}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}/*此代码非源码,仅为演示用,下载源码请到:*/

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
main/assets/t1/static/css/style.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
main/assets/t1/static/css/uikit.min.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
main/assets/t1/static/file/price-diamond.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
main/assets/t1/static/file/price-quality.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
main/assets/t1/static/file/price-setting.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
main/assets/t1/static/file/price-star.svg


BIN
main/assets/t1/static/font/7cHpv4kjgoGqM7E_A8s52Hs.woff2


BIN
main/assets/t1/static/font/7cHpv4kjgoGqM7E_Ass52Hs.woff2


BIN
main/assets/t1/static/font/7cHpv4kjgoGqM7E_DMs5.woff2


BIN
main/assets/t1/static/font/7cHqv4kjgoGqM7E30-8s51os.woff2


BIN
main/assets/t1/static/font/7cHqv4kjgoGqM7E30-8s6FospT4.woff2


BIN
main/assets/t1/static/font/7cHqv4kjgoGqM7E30-8s6VospT4.woff2


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov