开始官网模板

This commit is contained in:
augushong
2020-04-19 13:18:57 +08:00
parent 1ec8c07250
commit 9910dd3e6d
42 changed files with 1435 additions and 219 deletions

View File

@@ -69,8 +69,38 @@ php think reset_password
- 后台日志
- 支持轮播图,导航,小程序导航(打开方式)等设置
- 实现CMS后台
- 支持前台多主题
- 适配手机端,实现table转卡片样式
#### 多主题用法
在index应用下,使用`$this->fetch($template,$vars)`,而不要用`View::fetch($template,$vars)`.
多主题用法仅当`$template`为空字符串或者字符串有效,使用`跨应用`,`跨控制器`,`木板路径`,`数据内容`的写法无效.
index应用下控制器有个`BaseController.php`,里面有个属性`$isUseTpls = true`,当关闭时不使用多主题.
多主题规则,系统设置的`index_tpl_name`拼接`$template`;
例如下:
假设是`Index`控制器,`index`方法,系统设置的`index_tpl_name`值为`easy_blue_`,模板命名规则和模板目录均为默认情况下.
```
$this->fetch();
// 定位模板为:/view/index/index/easy_blue_index.html
$this->fetch('index');
// 定位模板为:/view/index/index/easy_blue_index.html
$this->fetch('index_1');
// 定位模板为:/view/index/index/easy_blue_index_1.html
$this->fetch('index_product');
// 定位模板为:/view/index/index/easy_blue_index_product.html
```
> 配置文件下的模板命名规则和模板位置仍然按有效,默认在`/view`将方法名转下划线的写法.这些配置仍然有效;
### 完整安装

View File

@@ -54,9 +54,9 @@ class Nav extends Common
return $this->success('添加成功', url('index',[
'type'=>$request->param('type',1),
'show_img'=>$request->param('show_img'),
'show_target'=>$request->param('show_target'),
'show_xcx'=>$request->param('show_xcx'),
'show_img'=>$request->param('show_img',0),
'show_target'=>$request->param('show_target',0),
'show_xcx'=>$request->param('show_xcx',0),
]));
}
@@ -104,10 +104,10 @@ class Nav extends Common
$model_nav->save($post_data);
return $this->success('保存成功', url('index',[
'type'=>$model_nav->getData('type'),
'show_img'=>$request->param('show_img'),
'show_target'=>$request->param('show_target'),
'show_xcx'=>$request->param('show_xcx'),
'type'=>$model_nav->getData('type',1),
'show_img'=>$request->param('show_img',0),
'show_target'=>$request->param('show_target',0),
'show_xcx'=>$request->param('show_xcx',0),
]));
}

View File

@@ -23,7 +23,7 @@ class Post extends Common
{
//
$list = ModelPost::order('id desc')->paginate();
$list = ModelPost::with(['categorys.category','tags.tag'])->order('id desc')->paginate();
View::assign('list', $list);

View File

@@ -38,6 +38,11 @@ class System extends Common
return View::fetch();
}
public function easyBlue()
{
return View::fetch();
}
public function update()
{

View File

@@ -54,6 +54,10 @@ function get_system_config($name = '', $default = '')
function get_source_link($url)
{
if(empty($url)){
$url = '/static/images/avatar.jpeg';
}
if (strpos($url, '/') === 0) {
return $url;
}

View File

@@ -0,0 +1,93 @@
<?php
declare(strict_types=1);
namespace app\index\controller;
use app\model\Category as ModelCategory;
use think\Request;
class Category extends Common
{
/**
* 显示资源列表
*
* @return \think\Response
*/
public function index()
{
//
}
/**
* 显示创建资源表单页.
*
* @return \think\Response
*/
public function create()
{
//
}
/**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request)
{
//
}
/**
* 显示指定的资源
*
* @param int $id
* @return \think\Response
*/
public function read($id)
{
//
$model_category = ModelCategory::with('posts.post')->find($id);
$this->assign('category',$model_category);
return $this->fetch('read'.$model_category->tpl_name);
}
/**
* 显示编辑资源表单页.
*
* @param int $id
* @return \think\Response
*/
public function edit($id)
{
//
}
/**
* 保存更新的资源
*
* @param \think\Request $request
* @param int $id
* @return \think\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* 删除指定资源
*
* @param int $id
* @return \think\Response
*/
public function delete($id)
{
//
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace app\index\controller;
use app\model\Nav;
use think\facade\View;
class Common extends BaseController
{
public function initialize()
{
parent::initialize();
$list_header_nav = Nav::where('type',1)->order('sort asc')->where('status',1)->select();
View::assign('list_header_nav',$list_header_nav);
$list_nav_slide = Nav::where('type',3)->order('sort asc')->where('status',1)->select();
View::assign('list_nav_slide',$list_nav_slide);
$list_nav_index_block_1 = Nav::where('type',6)->order('sort asc')->where('status',1)->select();
View::assign('list_nav_index_block_1',$list_nav_index_block_1);
$list_nav_index_block_2 = Nav::where('type',7)->order('sort asc')->where('status',1)->select();
View::assign('list_nav_index_block_2',$list_nav_index_block_2);
$list_nav_friend_url = Nav::where('type',2)->order('sort asc')->where('status',1)->select();
View::assign('list_nav_friend_url',$list_nav_friend_url);
}
}

View File

@@ -5,7 +5,7 @@ namespace app\index\controller;
use think\facade\View;
use think\Request;
class Index extends BaseController
class Index extends Common
{
/**
* 显示资源列表
@@ -16,9 +16,7 @@ class Index extends BaseController
{
//
dump($this->request->action());
return $this->fetch('');
return $this->fetch();
}
/**

View File

@@ -20,4 +20,48 @@ class Category extends Model
// return $model_list;
return array2level($model_list,0,0);
}
public function getTitleImgAttr($value)
{
return get_source_link($value);
}
public function posts()
{
return $this->hasMany(PostCategory::class,'category_id');
}
/**
* 返回的对应的post的模型
*
* @return void
*/
public function getPostsModelListAttr()
{
$list_post_category = $this->getAttr('posts');
$list_post = [];
foreach ($list_post_category as $list_post_category) {
array_push($list_post,$list_post_category->post);
}
return $list_post;
}
/**
* 返回的对应post的数据,性能比模型要高.
*
* @return void
*/
public function getPostsListAttr()
{
$list_post_category = $this->getAttr('posts');
$list_post = array_column($list_post_category->append(['post'])->toArray(),'post');
return $list_post;
}
}

View File

@@ -1,5 +1,6 @@
<?php
declare (strict_types = 1);
declare(strict_types=1);
namespace app\model;
@@ -10,9 +11,19 @@ use think\Model;
*/
class Nav extends Model
{
//
public function getImgAttr($value)
{
return get_source_link($value);
}
public static $statusName = [
0=>'不显示',
1=>'显示'
];
//
public function getImgAttr($value)
{
return get_source_link($value);
}
public function getStatusNameAttr()
{
return self::$statusName[$this->getData('status')];
}
}

View File

@@ -33,6 +33,39 @@ class Post extends Model
return $this->hasMany(PostTag::class,'post_id');
}
public function getCategorysListAttr()
{
$list_post_categorys = $this->getAttr('categorys');
$list = array_column($list_post_categorys->append(['category'])->toArray(),'category');
$list = array2level($list,0,0);
return $list;
}
public function getTagsListAttr()
{
$list_post_tags = $this->getAttr('tags');
$list = array_column($list_post_tags->append(['tag'])->toArray(),'tag');
$list = array2level($list);
return $list;
}
public function getDescShortAttr()
{
$desc = $this->getData('desc');
if(strlen($desc) > 100){
$desc = mb_substr($desc,0,100).'...';
}
return $desc;
}
public function getStatusNameAttr()
{
return self::$stausNameList[$this->getData('status')];

View File

@@ -1,5 +1,6 @@
<?php
declare (strict_types = 1);
declare(strict_types=1);
namespace app\model;
@@ -10,5 +11,14 @@ use think\Model;
*/
class PostCategory extends Model
{
//
//
public function post()
{
return $this->belongsTo(Post::class, 'post_id');
}
public function category()
{
return $this->belongsTo(Category::class,'category_id');
}
}

View File

@@ -1,5 +1,6 @@
<?php
declare (strict_types = 1);
declare(strict_types=1);
namespace app\model;
@@ -10,5 +11,14 @@ use think\Model;
*/
class PostTag extends Model
{
//
//
public function tag()
{
return $this->belongsTo(Tag::class,'tag_id');
}
public function post()
{
return $this->belongsTo(Post::class, 'post_id');
}
}

View File

@@ -1,14 +1,14 @@
<?php
return [
'category' => [
'' => '普通',
'category' => [
'' => '普通:',
'_product' => '产品',
'_case' => '案例',
'_about' => '关于',
],
'post' => [
'' => '普通',
]
'_product' => '产品:_product',
'_case' => '案例:_case',
'_about' => '关于:_about',
],
'post' => [
'' => '普通:',
]
];

View File

@@ -44,9 +44,11 @@ class CreateTableNav extends Migrator
$table->addColumn(Column::make('xcx_type','integer')->setLimit(10)->setComment('小程序打开方式,1:小程序导航页面,2:普通页面,3:web-view,4:其他小程序,5:电话'));
$table->addColumn(Column::make('value','string')->setLimit(100)->setComment('对象值,有可能是网页链接,小程序导航页面路径,小程序普通页面路径,电话'));
$table->addColumn(Column::make('xcx_appid','string')->setLimit(30)->setComment('小程序appid,目标是其他小程序是有效'));
$table->addColumn(ColumnFormat::integerTypeStatus('status')->setComment('0:下架,1:显示'));
$table->addIndex('delete_time');
$table->addIndex('type');
$table->addIndex('sort');
$table->addIndex('status');
$table->create();
}
}

View File

@@ -40,7 +40,10 @@ class CreateTableCategory extends Migrator
->addColumn(ColumnFormat::stringShort('tpl_name')->setComment('模板名称'))
->addColumn(ColumnFormat::stringUrl('title_img')->setComment('附图'))
->addColumn(ColumnFormat::stringLong('desc')->setComment('副标题描述'))
->addColumn(ColumnFormat::integerTypeStatus('status')->setComment('0:不显示,1:显示'))
->addIndex('pid')
->addIndex('status')
->addIndex('delete_time')
->create();
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,247 @@
/**
@Name: layuiNetCompany - 大气风格的网络公司企业模版
@Author: xuxingyu
@Copyright: layui.com
*/
body{background: #fff;}
/** 首页 */
/*导航部分*/
.nav{width: 100%; height: 80px; box-shadow: 0 3px 3px 0 #CCC; background: #FFF; position: fixed; left: 0; top: 0; z-index: 999; overflow: hidden; transition: 0.3s}
.nav.index{background: rgba(255, 255, 255 ,0.8); box-shadow: 0 0 0 0 rgba(0,0,0,0.05);}
.nav.scroll{ background: #FFF; box-shadow: 0 3px 3px 0 rgba(0,0,0,0.05); transition: 0.3s}
.nav .layui-container{position: relative; transition: all 400ms ease-out;}
.nav .nav-logo{height: 100%; position: absolute; top: 0; left: 15px; line-height: 80px;}
.nav .nav-list{display: inline-block; height: 80px;}
.nav .nav-list button{width: 25px; height: 30px; position: absolute; top: 30px; right: 15px; background-color: transparent; border: none; outline: none; cursor: pointer;}
.nav .nav-list button span{display: block; width: 25px; height: 2px; background: #2db5a3; margin-bottom: 6px; transition: 0.5s;}
.nav .nav-list button span.spa1{transform: rotate(45deg);}
.nav .nav-list button span.spa3{transform: rotate(-45deg) translate(5px,-5px);}
.nav .layui-nav{width: 100%; position: absolute; top: 80px; right: 0; color: #000; background: transparent;}
.nav .layui-nav .layui-nav-item{display: block; line-height: 60px;}
.nav .layui-nav *{font-size: 18px;}
.nav .layui-nav .layui-nav-item a{padding: 0 0; color: #000;}
.nav .layui-nav-bar,
.nav .layui-nav .layui-this:after{height: 2px; background-color: #2db5a3;}
.nav .layui-nav .layui-this a
,.nav .layui-nav .layui-nav-item a:hover{color: #2db5a3;}
/*轮播*/
#banner img{min-width: 100%; height: 898px;}
#banner .panel{width: 400px; position: absolute; top: 25%; left: 50%; margin-left: -200px; text-align: center;}
#banner .panel p{color: #8c8c8c; font-size: 44px; line-height: 80px; letter-spacing: 15px;}
#banner .panel p.title{color: #4a4a4a; font-size: 54px; letter-spacing: 10px;}
/*主体—产品*/
.main-product{padding-top: 90px; padding-bottom: 130px;}
.main-product p{font-size: 16px; color: #ababab; line-height: 28px;}
.main-product p.title
,.main-service p.title{color: #484848; font-size: 24px; text-align: center; line-height: 160px;}
.main-product p.title span
,.main-service p.title span{color: #2db5a3;}
.main-product .content{border: 1px solid #DEDEDE; padding: 30px 36px 0 36px; text-align: center; transition: 0.3s;}
.main-product .content p.label{font-size: 18px; color: #939393; line-height: 46px; padding-top: 6px;}
.main-product .content a{font-size: 18px; color: #a1d8cb; line-height: 68px;}
.main-product .content:hover{box-shadow: 0 0 3px 3px #EEE; transition: 0.3s;}
.main-product .content img{transition: 2s;}
.main-product .content img:hover{transform: rotateY(180deg);}
/*主体-服务*/
.main-service{background: #f8f8f8;}
.main-service .content{position: relative;}
.main-service .content .content-left{width: 50%;}
.main-service .content .content-left img{width: 100%;}
.main-service .content .content-right{box-sizing: border-box; background: #FFF; padding: 58px 40px 0 48px; width: 50%; height: 100%; position: absolute; top: 0; right: 0; transition: 0.3s; overflow: hidden;}
.main-service .content .content-right p{color: #adadad; line-height: 32px; overflow: hidden; text-overflow: ellipsis;}
.main-service .content .content-right p.label{font-size: 16px; color: #4a4a4a;}
.main-service .content .content-right span{display: block; width: 50px; height: 2px; background: #2cb6a1; margin-bottom: 23px;}
.main-service .content .content-right:hover{box-shadow: 2px 2px 2px #EEE; transition: 0.3s;}
.main-service .service-more{padding-top: 80px; padding-bottom: 80px; text-align: center;}
.main-service .service-more a{padding: 10px 62px; font-size: 23px; line-height: 46px;color: #FFF; background: #7fd3c6; border-radius: 3px;}
/*底部*/
.footer{padding-bottom: 70px; background: #5e6664;}
.footer .footer-web{padding-top: 50px; padding-bottom: 63px;}
.footer .footer-web a{color: #a5aaa9; line-height: 22px; margin-right: 20px; transition: 0.3s;}
.footer .footer-web a:hover{color: #dce1e0; transition: 0.3s;}
.footer .footer-contact{color: #fff;}
.footer .footer-contact a{color: #a5aaa9;}
.footer .footer-contact .contact-top{padding-top: 20px; line-height: 30px;}
.footer .footer-contact .contact-bottom{line-height: 35px;}
/** 产品 */
.banner{height: 320px; margin-top: 80px;}
.banner.product{background: url(../img/nav_img1.jpg) no-repeat center top; background-size: cover;}
.main.product{padding: 30px 0 75px 0;}
.main.product .content{padding: 50px 0; border-bottom: 1px solid #e8e8e8;}
.main.product .content .content-img{text-align: center;}
.main.product .content .content-img img{max-width: 100%;}
.main.product .content .label{color: #565656; font-size: 30px; line-height: 78px; margin-top: 32px;}
.main.product .content .detail{font-size: 16px; line-height: 28px; color: #d7d7d7; padding-bottom: 30px;}
.main.product .content a{color: #a0d2cc; font-size: 16px; line-height: 38px; padding:10px 11px 10px 23px; border: 1px solid #a0d2cc; border-radius: 3px;}
/** 动态 */
.banner.news{background: url(../img/nav_img3.jpg) no-repeat center top; background-size: cover;}
.banner .title{padding-top: 170px;}
.banner .title.active{padding-top: 120px; transition: 1.5s;}
.banner .title p{color: #606060; font-size: 36px; text-align: center; line-height: 50px; letter-spacing: 5px;}
.banner .title p.en{font-size: 20px; letter-spacing: 3px;}
.main-news{padding: 70px 0 80px 0;}
.main-news .content > div{padding-bottom: 40px; border-bottom: 1px dashed #eaeaea; position: relative;}
.main-news .content .news-img{display: inline-block; width: 30%; vertical-align: top;}
.main-news .content .news-img img{max-width: 90%;}
.main-news .content .news-panel{display: inline-block; width: 70%; vertical-align: top; padding-left: 5px; box-sizing: border-box;}
.main-news .content .news-panel strong a{display: block; color: #555; font-size: 18px; line-height: 26px; overflow: hidden; text-overflow:ellipsis; white-space: nowrap;}
.main-news .content .news-panel p.detail{color: #777; line-height: 24px;}
.main-news .content .news-panel p.read-push{color: #AAA; padding-top: 5px;}
.main-news #newsPage .layui-laypage{display: block; text-align: center; margin-top: 70px;}
.main-news #newsPage .layui-laypage a,.main-news #newsPage .layui-laypage span{font-size: 18px; line-height: 40px; height: 40px; margin-right: 20px; border-radius: 3px; color: #e3e3e3;}
/*动态详情页*/
.main-newsdate{margin-top: 80px; text-align: center;}
.main-newsdate .news{text-align: left; line-height: 104px;}
.main-newsdate h1{padding-top: 6px;}
.main-newsdate .pushtime{color: #686868; font-size: 18px; line-height: 82px;}
.main-newsdate .introTop{padding-bottom: 28px; font-size: 18px; line-height: 20px; text-align: left;}
.main-newsdate .introBott{font-size: 18px; line-height: 42px; text-align: justify; padding: 40px 0 102px 0;}
.main-newsdate img{max-width: 100%;}
/** 案例 */
.banner.case{background: url(../img/nav_img2.jpg) no-repeat center top; background-size: cover;}
.main-case{padding: 30px 0 75px;}
.main-case .content{width: 48%; text-align: center; padding-top: 120px; padding-bottom: 20px; border-bottom: 2px solid #c9c9c9;}
.main-case .content.even{margin-left: 2%;}
.main-case .content .case-img{border: 1px solid #e2e2e2; overflow: hidden;}
.main-case .content .case-img img{width: 100%; transition: 2s;}
.main-case .content .case-img img:hover{transform: scale(1.2,1.2); transition: 2s;}
.main-case .content p.lable{padding-top: 13px; font-size: 30px; line-height: 76px;}
.main-case .content p{font-size: 18px; line-height: 32px; color: #505050;}
.main-case #casePage .layui-laypage{display: block; text-align: center; margin-top: 100px;}
.main-case #casePage .layui-laypage a,.main-case #casePage .layui-laypage span{font-size: 18px; line-height: 40px; height: 40px; margin-right: 20px; border-radius: 3px; color: #e3e3e3;}
/** 关于 */
.banner.about{background: url(../img/nav_img4.jpg) no-repeat center top; background-size: cover;}
.main-about{padding-bottom: 130px;}
.main-about ul.aboutab{padding: 100px 0; text-align: center;}
.main-about ul.aboutab li{display: inline-block; padding: 0 22px; margin-left: 15px; font-size: 20px; line-height: 46px; color: #b5b5b5; border: 1px solid #e2e2e2; border-radius: 3px; cursor: pointer;}
.main-about ul.aboutab li:first-child{margin-left: 0;}
.main-about ul.aboutab li.layui-this
,.main-about ul.aboutab li:hover{color: #2ab5a3; border-color: #afddd7; transition: 0.3s;}
.main-about .tabJob, .main-about .tabCour{display: none;}
/*公司简介*/
.main-about .tabIntro{padding-bottom: 15px;}
.main-about .tabIntro .content{vertical-align: middle;}
.main-about .tabIntro .content .img{width: 50%;}
.main-about .tabIntro .content .img img{width: 100%;}
.main-about .tabIntro .content .panel{width: 50%;}
.main-about .tabIntro .content p{padding: 0 20px; line-height: 24px; text-align: justify;}
.main-about .tabIntro .p_hidden{padding: 0 20px; display: none;}
/*招贤纳士*/
.main-about .tabJob .content{padding: 0 0 40px 20px; border: 1px solid #e2e2e2; border-top: 4px solid #65d0c5; margin-top: 90px;}
.main-about .tabJob .content:first-child{margin-top: 10px;}
.main-about .tabJob .content p{font-size: 18px; line-height: 40px;}
.main-about .tabJob .content p.title{font-size: 24px; color: #545454; line-height: 60px;}
.main-about .tabJob .content ol{padding-left: 20px; list-style-type: none; counter-reset: sectioncounter;}
.main-about .tabJob .content ol li{color: #8d8d8d; font-size: 16px; line-height: 30px;}
.main-about .tabJob .content ol li:before {content: counter(sectioncounter) "、"; counter-increment: sectioncounter;}
/*发展历程*/
.main-about .tabCour p.title{font-size: 28px; line-height: 28px; text-align: center;}
.main-about .tabCour .timeline{position: relative; margin-top: 75px;}
.main-about .tabCour .timeline:before{position: absolute; top: 0; bottom: 0; content: ""; width: 2px; background-color: #e2e2e2; left: 50px;}
.main-about .tabCour .timeline li{position: relative; padding-top: 70px;}
.main-about .tabCour .timeline li:first-child{padding-top: 0;}
.main-about .tabCour .timeline li .cour-img{position: absolute; left: 0; width: 100px; border-radius: 50%;}
.main-about .tabCour .timeline li .cour-img img{width: 100%;}
.main-about .tabCour .timeline li .cour-panel{padding-top: 20px; padding-left: 120px; text-align: left;}
.main-about .tabCour .timeline li .cour-panel p.label{font-size: 18px; color: #000;}
.main-about .tabCour .timeline li .cour-panel p{color: #949494; line-height: 30px;}
@media screen and (max-width: 480px){
.main-service .content .content-right{padding: 10px 10px 0 10px;}
.main-service .content .content-right p{line-height: 24px;}
.main-news .content .news-panel p.read-push{font-size: 12px;}
.main-case .content{padding-top: 60px;}
.main-case .content p.lable{padding-top: 10px; font-size: 18px; line-height: 48px;}
.main-case .content p{font-size: 12px; line-height: 20px; color: #505050;}
.main-about ul.aboutab{padding: 70px 0;}
.main-about ul.aboutab li{padding: 0 15px; font-size: 16px; box-sizing: border-box;}
.main-about .tabIntro .content .img{width: 100%;}
.main-about .tabIntro .content .panel{width: 100%;}
.main-about .tabIntro .content .panel.p_block{display: none;}
.main-about .tabIntro .p_hidden{display: block;}
.main-news #newsPage .layui-laypage a,.main-news #newsPage .layui-laypage span
,.main-case #casePage .layui-laypage a,.main-case #casePage .layui-laypage span{padding: 0 12px; font-size: 14px; line-height: 30px; height: 30px; margin-right: 4px;}
}
/*小屏幕*/
@media screen and (min-width: 768px){
.nav{max-height: 80px;}
.nav.index{background: rgba(255, 255, 255 ,0.3);}
.nav .nav-list button{display: none;}
.nav .layui-nav{width: auto; position: absolute; top: 0; padding: 0 5px; border-radius: 0; margin: 0;}
.nav .layui-nav .layui-nav-item{display: inline-block; margin:0 53px; line-height: 80px;}
.main-product p.title
,.main-service p.title{font-size: 36px; line-height: 216px;}
.main.product .content .content-img{text-align: left;}
.main-news .content .news-panel strong a{font-size: 20px; line-height: 30px;}
.main-news .content .news-panel p.read-push{padding-top: 0; position: absolute; bottom: 40px;}
.main-newsdate .pushtime{line-height: 142px;}
.main-case .content{width: 45%;}
.main-case .content.even{margin-left: 9%;}
.main-about ul.aboutab li{padding: 0 32px; font-size: 24px; margin-left: 30px; line-height: 50px;}
.main-about .tabIntro .content p{padding: 0 30px; font-size: 18px; line-height: 30px;}
.main-about .tabJob .content p{font-size: 24px; line-height: 50px;}
.main-about .tabJob .content p.title{font-size: 30px; line-height: 90px;}
.main-about .tabJob .content ol li{font-size: 20px; line-height: 60px;}
.main-about .tabCour .timeline:before{left: 50%;}
.main-about .tabCour .timeline li{min-height: 195px; padding-top: 95px;}
.main-about .tabCour .timeline li .cour-img{left: 50%; margin-left: -97.5px; width: 195px;}
.main-about .tabCour .timeline li .cour-panel{padding-top: 55px; padding-left: 0;}
.main-about .tabCour .timeline li.odd .cour-panel{text-align: right;}
}
@media screen and (min-width: 768px) and (max-width: 992px){
.main.product .content div.right{padding-left: 20px;}
.nav .layui-nav .layui-nav-item{margin:0 33px;}
.main-service .content .content-right{padding: 10px 10px 0 15px;}
.main-service .content .content-right span{margin-bottom: 20px;}
.main-service .content .content-right p{line-height: 28px;}
.main.product .content .label{line-height: 40px; margin-top: 0;}
.main.product .content .detail{padding-bottom: 10px;}
}
/*大屏幕*/
@media screen and (min-width: 992px){
.main.product .content{padding: 100px 0;}
.main.product .content div.right{padding-left: 0;}
.main-news .content .news-img{width: 20%;}
.main-news .content .news-panel{width: 80%;}
.main-case .content{width: 31%;}
.main-case .content.even{margin-left: 0;}
.main-case .content.center{margin-right: 3%; margin-left: 3%;}
.main-about .tabIntro .content p{padding: 0 50px; font-size: 20px; line-height: 40px;}
}
/*超大屏幕*/
@media screen and (min-width: 1200px) {
.main-news .content .news-img{width: 35%;}
.main-news .content .news-panel{width: 65%;}
.main-news .content:nth-child(odd){padding-right: 20px;}
.main-news .content:nth-child(even){padding-left: 20px;}
.main-about .tabCour .timeline li .cour-panel{padding-left: 50px;}
.main-about .tabCour .timeline li.odd .cour-panel{padding-left: 0; padding-right: 50px;}
}
@media screen and (min-width: 1300px) {
.layui-container{width: 1200px; padding: 0;}
.main-about .tabJob .content:last-child{margin-bottom: 180px;}
.nav .nav-logo{position: absolute; top: 0; left: 0;}
.nav .nav-logo img{
max-height: 100%;
}
.layui-col-space80{margin: -40px;}
.layui-col-space80>*{padding: 40px;}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

98
public/static/js/firm.js Normal file
View File

@@ -0,0 +1,98 @@
/**
@Name: layuiNetCompany - 大气风格的网络公司企业模版
@Author: xuxingyu
@Copyright: layui.com
*/
layui.define(['jquery', 'element', 'carousel', 'laypage'], function(exports){
var $ = layui.jquery
,element = layui.element
,carousel = layui.carousel
,laypage = layui.laypage;
//轮播渲染
carousel.render({
elem: '#banner'
,width: '100%'
,height: '898px'
,arrow: 'always'
});
//滚动监听
$(window).scroll(function() {
var scr=$(document).scrollTop();
scr > 0 ? $(".nav").addClass('scroll') : $(".nav").removeClass('scroll');
});
//轮播文字
$(function(){
$('.banner').children('.title').addClass('active');
})
//导航切换
var btn = $('.nav').find('.nav-list').children('button')
,spa = btn.children('span')
,ul = $('.nav').find('.nav-list').children('.layui-nav');
btn.on('click', function(){
if(!$(spa[0]).hasClass('spa1')){
spa[0].className = 'spa1';
spa[1].style.display = 'none';
spa[2].className = 'spa3';
$('.nav')[0].style.height = 90 + ul[0].offsetHeight + 'px';
}else{
spa[0].className = '';
spa[1].style.display = 'block';
spa[2].className = '';
$('.nav')[0].style.height = 80 + 'px';
}
});
//关于内容
$('.main-about').find('.aboutab').children('li').each(function(index){
$(this).on('click', function(){
$(this).addClass('layui-this').siblings().removeClass('layui-this');
$('.aboutab').siblings().fadeOut("fast");
$('.aboutab').siblings().eq(index).fadeIn("");
});
});
//动态分页
laypage.render({
elem: 'newsPage'
,count: 50
,theme: '#2db5a3'
,layout: ['page', 'next']
});
//案例分页
laypage.render({
elem: 'casePage'
,count: 50
,theme: '#2db5a3'
,layout: ['page', 'next']
});
//新闻字段截取
$(function(){
$(".main-news").find(".content").each(function(){
var span = $(this).find(".detail").children("span")
,spanTxt = span.html();
if(document.body.clientWidth > 463){
span.html(spanTxt);
}else{
span.html(span.html().substring(0, 42)+ '...')
};
$(window).resize(function(){
if(document.body.clientWidth > 463){
span.html(spanTxt);
}else{
span.html(span.html().substring(0, 42)+ '...')
};
});
});
});
exports('firm', {});
});

View File

@@ -77,13 +77,19 @@
<div class="layui-form-label">模板</div>
<div class="layui-input-block">
<select name="tpl_name">
{volist name=':config("view_type.category")' id='view_type' key="tpl_name"}
<option value="{$tpl_name}">{$view_type}</option>
{volist name=':config("view_type.category")' id='view_type'}
<option value="{$key}">{$view_type}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" checked>
<input type="radio" name="status" value="0" title="不显示">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">提交</button>
</div>

View File

@@ -60,18 +60,18 @@
<div class="layui-form-item">
<div class="layui-form-label">副标题/描述</div>
<div class="layui-input-block">
<textarea name="desc" class="layui-textarea"></textarea>
<textarea name="desc" class="layui-textarea">{$category->getData('desc')}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">附图</div>
<div class="layui-input-block">
<input type="hidden" name="title_img">
<input type="hidden" name="title_img" value="{$category->getData('title_img')}">
<div>
<div class="layui-btn upload-title-img">上传</div>
</div>
<div>
<img src="" class="title-img" style="display: none;max-width: 200px;max-height: 200px;;" alt="">
<img src="{$category.title_img}" class="title-img" style="max-width: 200px;max-height: 200px;;" alt="">
</div>
</div>
</div>
@@ -79,12 +79,19 @@
<div class="layui-form-label">模板</div>
<div class="layui-input-block">
<select name="tpl_name">
{volist name=':config("view_type.category")' id='view_type' key="tpl_name"}
<option value="{$tpl_name}">{$view_type}</option>
{volist name=':config("view_type.category")' id='view_type'}
<option value="{$key}">{$view_type}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示">
<input type="radio" name="status" value="0" title="不显示">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">提交</button>
</div>
@@ -102,12 +109,33 @@
<script>
layui.use(['form'],function(){
layui.use(['form','upload'],function(){
var form = layui.form;
var upload = layui.upload;
form.val('*',{
pid:'{$category.pid}',
tpl_name:'{$category->getData("tpl_name")}',
status:'{$category->getData("status")}',
})
upload.render({
elem: '.upload-title-img',
url: '{:url("api/Files/save")}',
data: {
type: 4,
dir: 'article'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="title_img"]').val(result.data.save_name)
$('.title-img').attr('src', result.data.src).show();
} else {
layer.msg(result.msg)
}
}
})
})

View File

@@ -52,6 +52,7 @@
<td> {:str_repeat('|--',$vo.level)} {$vo.title}</td>
<td>
<div class="layui-btn-container">
<a class="layui-btn layui-btn-sm" href="{:url('index/Category/read',['id'=>$vo.id])}">查看</a>
<a class="layui-btn layui-btn-sm" href="{:url('edit',['id'=>$vo.id])}">编辑</a>
<div class="layui-btn layui-btn-sm delete">删除</div>
</div>

View File

@@ -1,47 +1,68 @@
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="index">
<a class="" href="{:url('admin/System/index')}">系统管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="others">
<a class="" href="{:url('admin/System/others')}">第三方管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="theme">
<a class="" href="{:url('admin/System/theme')}">主题管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="agreement">
<a class="" href="{:url('admin/System/agreement')}">用户协议管理</a>
</li>
</ul>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">PC管理</a>
<dl class="layui-nav-child">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="index">
<a class="" href="{:url('admin/System/index')}">系统管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="others">
<a class="" href="{:url('admin/System/others')}">第三方管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="theme">
<a class="" href="{:url('admin/System/theme')}">主题管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="agreement">
<a class="" href="{:url('admin/System/agreement')}">用户协议管理</a>
</li>
</ul>
<dd class="left-nav-item" data-name="pc-nav-1"><a
href="{:url('Nav/index',['type'=>1,'show_target'=>1])}">PC导航管理</a></dd>
<dd class="left-nav-item" data-name="pc-nav-2"><a
href="{:url('Nav/index',['type'=>2,'show_target'=>1])}">友情链接管理</a></dd>
<dd class="left-nav-item" data-name="pc-nav-3"><a
href="{:url('Nav/index',['type'=>3,'show_img'=>1,'show_target'=>1])}">PC轮播图管理</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">小程序</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-4"><a
href="{:url('Nav/index',['type'=>4,'show_img'=>1,'show_xcx'=>1])}">首页导航管理</a></dd>
<dd class="left-nav-item" data-name="pc-nav-5"><a
href="{:url('Nav/index',['type'=>5,'show_img'=>1,'show_xcx'=>1])}">轮播图管理</a></dd>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">简约蓝主题管理</a>
<dl class="layui-nav-child">
</dl>
</li>
</ul>
</div>
<dd class="left-nav-item" data-name="easy_blue"><a href="{:url('System/easyBlue')}">一般参数</a></dd>
<dd class="left-nav-item" data-name="pc-nav-6">
<a href="{:url('Nav/index',['type'=>6,'show_img'=>1,'show_target'=>1])}">首页布局块1</a>
</dd>
<dd class="left-nav-item" data-name="pc-nav-7">
<a href="{:url('Nav/index',['type'=>7,'show_img'=>1,'show_target'=>1])}">首页布局块2</a>
</dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">PC管理</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-1"><a
href="{:url('Nav/index',['type'=>1,'show_target'=>1])}">PC导航管理</a></dd>
<dd class="left-nav-item" data-name="pc-nav-2"><a
href="{:url('Nav/index',['type'=>2,'show_target'=>1])}">友情链接管理</a></dd>
<dd class="left-nav-item" data-name="pc-nav-3"><a
href="{:url('Nav/index',['type'=>3,'show_img'=>1,'show_target'=>1])}">PC轮播图管理</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">小程序</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-4"><a
href="{:url('Nav/index',['type'=>4,'show_img'=>1,'show_xcx'=>1])}">首页导航管理</a></dd>
<dd class="left-nav-item" data-name="pc-nav-5"><a
href="{:url('Nav/index',['type'=>5,'show_img'=>1,'show_xcx'=>1])}">轮播图管理</a></dd>
</dl>
</li>
</ul>
</div>
</div>

View File

@@ -73,14 +73,14 @@
<div class="layui-form-item">
<div class="layui-form-label">打开方式</div>
<div class="layui-input-block">
<input type="radio" name="target" value="1" title="当前页面" checked>
<input type="radio" name="target" value="2" title="新页面">
<input type="radio" name="target" value="_self" title="当前页面" checked>
<input type="radio" name="target" value="_blank" title="新页面">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">链接</div>
<div class="layui-input-block">
<input type="text" name="value" required lay-verify="required" value="" class="layui-input">
<input type="text" name="value" value="" class="layui-input">
</div>
</div>
{/if}
@@ -114,7 +114,13 @@
<input type="number" name="sort" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" checked>
<input type="radio" name="status" value="0" title="不显示">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">创建</button>
</div>

View File

@@ -37,8 +37,9 @@
<legend>编辑</legend>
<div class="layui-field-box">
<form action="{:url('update')}" method="POST" class="layui-form" lay-filter="*">
<input type="hidden" name="show_img" value="{$Request.param.show_img}">
<input type="hidden" name="show_target" value="{$Request.param.show_target}">
<input type="hidden" name="show_img" value="{$Request.param.show_img|default='0'}">
<input type="hidden" name="show_target" value="{$Request.param.show_target|default='0'}">
<input type="hidden" name="show_xcx" value="{$Request.param.show_xcx|default='0'}">
<input type="hidden" name="id" value="{$nav.id}">
<div class="layui-form-item">
<div class="layui-form-label">标题</div>
@@ -53,7 +54,7 @@
<textarea name="desc" class="layui-textarea">{$nav.desc}</textarea>
</div>
</div>
{if $Request.param.show_img == 1 }
<div class="layui-form-item">
<div class="layui-form-label">图片</div>
@@ -79,7 +80,7 @@
<div class="layui-form-item">
<div class="layui-form-label">链接</div>
<div class="layui-input-block">
<input type="text" name="value" required lay-verify="required" value="{$nav.value}"
<input type="text" name="value" value="{$nav.value}"
class="layui-input">
</div>
</div>
@@ -114,7 +115,13 @@
<input type="number" name="sort" value="{$nav.sort}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示">
<input type="radio" name="status" value="0" title="不显示">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">保存</button>
</div>
@@ -134,13 +141,14 @@
<script>
layui.use(['upload','form'], function () {
layui.use(['upload', 'form'], function () {
var upload = layui.upload
var form = layui.form
form.val('*',{
target:'{$nav->getData("target")}',
xcx_type:'{$nav->getData("xcx_type")}',
form.val('*', {
target: '{$nav->getData("target")}',
xcx_type: '{$nav->getData("xcx_type")}',
status: '{$nav->getData("status")}',
})
var uploadTitleImg = upload.render({

View File

@@ -44,6 +44,7 @@
<th>名称</th>
<th>链接</th>
<th>排序</th>
<th>状态</th>
<th>操作</th>
</tr>
@@ -57,6 +58,7 @@
<td>{$vo.value}</td>
<td>{$vo.sort}</td>
<td>{$vo.status_name}</td>
<td>
<div class="layui-btn-container">
<a class="layui-btn layui-btn-sm"

View File

@@ -217,8 +217,8 @@
<div class="layui-form-label">模板</div>
<div class="layui-input-block">
<select name="tpl_name">
{volist name=':config("view_type.post")' id='tpl_name' key="tpl_fix"}
<option value="{$tpl_fix}">{$tpl_name}</option>
{volist name=':config("view_type.post")' id='tpl_name'}
<option value="{$key}">{$tpl_name}</option>
{/volist}
</select>
</div>

View File

@@ -221,8 +221,8 @@
<div class="layui-form-label">模板</div>
<div class="layui-input-block">
<select name="tpl_name">
{volist name=':config("view_type.post")' id='tpl_name' key="tpl_fix"}
<option value="{$tpl_fix}">{$tpl_name}</option>
{volist name=':config("view_type.post")' id='tpl_name'}
<option value="{$key}">{$tpl_name}</option>
{/volist}
</select>
</div>
@@ -361,7 +361,7 @@
$.post('{:url("update")}', formData, function (result) {
layer.msg('添加成功')
layer.msg('保存成功')
setTimeout(() => {
location.href = result.data.jump_to_url
}, 1200);

View File

@@ -40,11 +40,13 @@
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th >名称</th>
<th>封面</th>
<th>简介</th>
<th >简介</th>
<th>排序</th>
<th>状态</th>
<th>分类</th>
<th>标签</th>
<th>操作</th>
</tr>
</thead>
@@ -53,12 +55,22 @@
<tr class="item" data-id="{$vo.id}">
<td>{$vo.id}</td>
<td>{$vo.title}</td>
<td style="max-width: 160px;">{$vo.title}</td>
<td><img src="{$vo.poster}" alt=""></td>
<td>{$vo.desc}</td>
<td style="max-width: 200px;">{$vo.desc_short}</td>
<td>{$vo.sort}</td>
<td>{$vo.status_name}</td>
<td>
{volist name='vo.categorys_list' id='category'}
<p>{:str_repeat('|--',$category.level)}{$category.title}</p>
{/volist}
</td>
<td>
{volist name='vo.tags_list' id='tag'}
<span class="layui-badge layui-bg-blue">{$tag.title}</span>
{/volist}
</td>
<td>
<div class="layui-btn-container">
<a class="layui-btn layui-btn-sm" href="{:url('edit',['id'=>$vo.id])}">编辑</a>

View File

@@ -0,0 +1,99 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'easy_blue';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统设置</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>系统管理</legend>
<div class="layui-field-box">
<form class="layui-form" action="{:url('admin/System/update')}" method="post"
lay-filter="*">
<div class="layui-form-item">
<div class="layui-form-label">首页块1标题前半部分</div>
<div class="layui-input-block">
<input type="text" name="easy_index_block_1_title_1" value="{:get_system_config('easy_index_block_1_title_1')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页块1标题后半部分</div>
<div class="layui-input-block">
<input type="text" name="easy_index_block_1_title_2" value="{:get_system_config('easy_index_block_1_title_2')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页块2标题前半部分</div>
<div class="layui-input-block">
<input type="text" name="easy_index_block_2_title_1" value="{:get_system_config('easy_index_block_2_title_1')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页块2标题后半部分</div>
<div class="layui-input-block">
<input type="text" name="easy_index_block_2_title_2" value="{:get_system_config('easy_index_block_2_title_2')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页底部查看链接跳转</div>
<div class="layui-input-block">
<input type="text" name="easy_index_bottom_jump_url" value="{:get_system_config('easy_index_bottom_jump_url')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.use(['layer', 'form'], function () {
var form = layui.form;
form.val('*', {
index_tpl_name: '{:get_system_config("index_tpl_name")}'
})
})
</script>
</div>`
</body>
</html>

View File

@@ -2,130 +2,243 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'index';
</script>
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
{include file="common/left_system"}
<div class="layui-body">
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统设置</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>系统管理</legend>
<div class="layui-field-box">
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
<div class="layui-form-item">
<div class="layui-form-label">网站名称</div>
<div class="layui-input-block">
<input type="text" name="site_name" value="{:get_system_config('site_name')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">网站描述</div>
<div class="layui-input-block">
<input type="text" name="site_desc" value="{:get_system_config('site_desc')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">网站logo</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-site-logo">上传logo</div>
</div>
<div>
<img class="site-logo" style="max-width: 200px;" src="{:get_source_link(get_system_config('site_logo'))}" alt="">
</div>
<input type="hidden" name="site_logo" value="{:get_system_config('site_logo')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">备案号</div>
<div class="layui-input-block">
<input type="text" name="site_beian" value="{:get_system_config('site_beian')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">主域名</div>
<div class="layui-input-block">
<input type="text" name="main_domain" value="{:get_system_config('main_domain')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">资源域名</div>
<div class="layui-input-block">
<input type="text" name="resource_domain" value="{:get_system_config('resource_domain')}" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<div class="layui-form-label">统计代码</div>
<div class="layui-input-block">
<textarea name="site_tongji" class="layui-textarea">{:get_system_config('site_tongji')}</textarea>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统设置</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>系统管理</legend>
<div class="layui-field-box">
<form class="layui-form" action="{:url('admin/System/update')}" method="post">
<div class="layui-form-item">
<div class="layui-form-label">网站名称</div>
<div class="layui-input-block">
<input type="text" name="site_name" value="{:get_system_config('site_name')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">网站描述</div>
<div class="layui-input-block">
<input type="text" name="site_desc" value="{:get_system_config('site_desc')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">网站logo</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-site-logo">上传logo</div>
</div>
<div>
<img class="site-logo" style="max-width: 200px;"
src="{:get_source_link(get_system_config('site_logo'))}" alt="">
</div>
<input type="hidden" name="site_logo" value="{:get_system_config('site_logo')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">备案号</div>
<div class="layui-input-block">
<input type="text" name="site_beian" value="{:get_system_config('site_beian')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">公安备案号</div>
<div class="layui-input-block">
<input type="text" name="site_safe_beian" value="{:get_system_config('site_safe_beian')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">公安备案跳转链接</div>
<div class="layui-input-block">
<input type="text" name="site_safe_beian_url" value="{:get_system_config('site_safe_beian_url')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">版权描述</div>
<div class="layui-input-block">
<input type="text" name="site_copyright" value="{:get_system_config('site_copyright')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">联系电话</div>
<div class="layui-input-block">
<input type="text" name="site_contact_phone" value="{:get_system_config('site_contact_phone')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">工作时间</div>
<div class="layui-input-block">
<input type="text" name="site_worktime" value="{:get_system_config('site_worktime')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">联系邮箱</div>
<div class="layui-input-block">
<input type="text" name="stie_contact_email" value="{:get_system_config('stie_contact_email')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">二维码</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-site-qrcode">上传二维码</div>
</div>
<div>
<img class="site-qrcode" style="max-width: 200px;"
src="{:get_source_link(get_system_config('site_qrcode'))}" alt="">
</div>
<input type="hidden" name="site_qrcode" value="{:get_system_config('site_qrcode')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">站点fovicon</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-site-fovicon">上传fovicon</div>
</div>
<div>
<img class="site-fovicon" style="max-width: 200px;"
src="{:get_source_link(get_system_config('site_favicon'))}" alt="">
</div>
<input type="hidden" name="site_favicon" value="{:get_system_config('site_favicon')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">主域名</div>
<div class="layui-input-block">
<input type="text" name="main_domain" value="{:get_system_config('main_domain')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">资源域名</div>
<div class="layui-input-block">
<input type="text" name="resource_domain" value="{:get_system_config('resource_domain')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<div class="layui-form-label">统计代码</div>
<div class="layui-input-block">
<textarea name="site_tongji" class="layui-textarea">{:get_system_config('site_tongji')}</textarea>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
{include file="common/_footer"}
<script>
layui.use(['layer','upload'],function(){
var upload = layui.upload;
<script>
layui.use(['layer', 'upload'], function () {
var upload = layui.upload;
var uploadSiteLogo = upload.render({
elem:'.upload-site-logo',
url:'{:url("api/Files/save")}',
data:{
type:1,
dir:'site_logo'
},
accept:'images',
done:function(result){
if(result.code == 0){
layer.msg('上传成功');
$('input[name="site_logo"]').val(result.data.save_name);
$('.site-logo').attr('src',result.data.src);
}else{
layer.msg(result.msg)
}
}
})
})
</script>
</div>`
var uploadSiteLogo = upload.render({
elem: '.upload-site-logo',
url: '{:url("api/Files/save")}',
data: {
type: 1,
dir: 'site_logo'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="site_logo"]').val(result.data.save_name);
$('.site-logo').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
var uploadSiteLogo = upload.render({
elem: '.upload-site-qrcode',
url: '{:url("api/Files/save")}',
data: {
type: 1,
dir: 'site_logo'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="site_qrcode"]').val(result.data.save_name);
$('.site-qrcode').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
var uploadSiteLogo = upload.render({
elem: '.upload-site-fovicon',
url: '{:url("api/Files/save")}',
data: {
type: 1,
dir: 'site_logo'
},
accept: 'images',
acceptMime:'image/x-icon',
exts:'ico',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="site_favicon"]').val(result.data.save_name);
$('.site-fovicon').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</div>`
</body>
</html>

View File

@@ -40,10 +40,10 @@
<div class="layui-form-label">选择主题</div>
<div class="layui-input-block">
<div>
<input type="radio" name="index_tpl_name" value="" title="无">
<input type="radio" name="index_tpl_name" value="" title="无-''">
</div>
<div>
<input type="radio" name="index_tpl_name" value="easy_blue_" title="官网主题简约蓝">
<input type="radio" name="index_tpl_name" value="easy_blue_" title="官网主题简约蓝-'easy_blue_'">
</div>
</div>
</div>

View File

@@ -8,12 +8,12 @@
</head>
<body>
<h1>{$msg}</h1>
<h2> <span id="counting">3</span>秒后跳转 <a href="{$jump_to_url}">立即跳转</a></h2>
<h2> <span id="counting">3</span>秒后跳转 <a href="{$jump_to_url|raw}">立即跳转</a></h2>
<script>
var counting = 3;
setInterval(() => {
if(counting == 1){
location.href = '{$jump_to_url}';
location.href = '{$jump_to_url|raw}';
}
counting--
document.getElementById('counting').innerHTML = counting

View File

@@ -8,12 +8,12 @@
</head>
<body>
<h1>{$msg}</h1>
<h2> <span id="counting">3</span>秒后跳转 <a href="{$jump_to_url}">立即跳转</a></h2>
<h2> <span id="counting">3</span>秒后跳转 <a href="{$jump_to_url|raw}">立即跳转</a></h2>
<script>
var counting = 3;
setInterval(() => {
if(counting == 1){
location.href = '{$jump_to_url}';
location.href = '{$jump_to_url|raw}';
}
counting--
document.getElementById('counting').innerHTML = counting

View File

@@ -0,0 +1,48 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">
<title>{:get_system_config('site_name')}-首页</title>
{include file='common/_easy_blue_require'/}
</head>
<body>
{include file='common/_easy_blue_header'/}
<div style="margin-top: 80px;">
<!-- banner部分 -->
<div class="banner product" style="background-image: url('{$category.title_img}');">
<div class="title">
<p>{$category.title}</p>
<p class="en">{$category.desc}</p>
</div>
</div>
<!-- main部分 -->
<div class="main product">
<div class="layui-container">
{volist name='$category.posts_list' id='post'}
<div class="content layui-row">
<div class="layui-col-xs12 layui-col-sm6 layui-col-md7 layui-col-lg6 content-img"><img
src="{$post.poster}"></div>
<div class="layui-col-xs12 layui-col-sm6 layui-col-md5 layui-col-lg6 right">
<p class="label">{$post.title}</p>
<p class="detail">{$post.desc_short}</p>
<div><a href="{:url('Post/read',['id'=>$post.id])}">查看产品 ></a></div>
</div>
</div>
{/volist}
</div>
</div>
</div>
{include file='common/_easy_blue_footer'/}
</body>
</html>

View File

@@ -0,0 +1,35 @@
<!-- footer部分 -->
<div class="footer">
<div class="layui-container">
<p class="footer-web">
{volist name='list_nav_friend_url' id='nav'}
<a href="{$nav.value}" target="{$nav.target}">{$nav.title}</a>
{/volist}
</p>
<div class="layui-row footer-contact">
<div class="layui-col-sm2 layui-col-lg1"><img src="{:get_source_link(get_system_config('site_qrcode'))}"></div>
<div class="layui-col-sm10 layui-col-lg11">
<div class="layui-row">
<div class="layui-col-sm6 layui-col-md8 layui-col-lg9">
<p class="contact-top"><i class="layui-icon layui-icon-cellphone"></i>&nbsp;{:get_system_config('site_contact_phone')}&nbsp;&nbsp;({:get_system_config('site_worktime')})</p>
<p class="contact-bottom"><i class="layui-icon layui-icon-home"></i>&nbsp;{:get_system_config('stie_contact_email')}</span></p>
</div>
<div class="layui-col-sm6 layui-col-md4 layui-col-lg3">
<p class="contact-top"><span class="right">{:get_system_config('site_copyright')}</p>
<p class="contact-bottom">
<span class="right"><a href="http://www.beian.miit.gov.cn/">{:get_system_config('site_beian')}</a></span>
</p>
{if !empty(get_system_config('site_safe_beian')) }
<p class="contact-bottom">
<span class="right"><a href="{:get_system_config('site_safe_beian_url')}"><img src="/static/images/ghs.png" alt="" style="margin-right: 10px;">{:get_system_config('site_safe_beian')}</a></span>
</p>
{/if}
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,23 @@
<!-- nav部分 -->
<div class="nav index">
<div class="layui-container">
<!-- 公司logo -->
<div class="nav-logo">
<a href="{:url('index/Index/index')}">
<img src="{:get_source_link(get_system_config('site_logo'))}" alt="{:get_system_config('site_name')}">
</a>
</div>
<div class="nav-list">
<button>
<span></span><span></span><span></span>
</button>
<ul class="layui-nav" lay-filter="">
{volist name='list_header_nav' id='nav'}
<li class="layui-nav-item"><a href="{$nav.value}">{$nav.title}</a></li>
{/volist}
</ul>
</div>
</div>
</div>

View File

@@ -0,0 +1,11 @@
{include file='common/_require'/}
<link rel="stylesheet" href="/static/css/index.easy_blue.css">
<script>
layui.config({
base: '/static/js/'
}).use('firm');
</script>

View File

@@ -0,0 +1,25 @@
<link rel="stylesheet" href="/static/css/reset.css">
<link rel="stylesheet" href="/static/css/pagination.css">
<link rel="stylesheet" href="/static/lib/layui/css/layui.css">
<script src="/static/lib/jquery/jquery-3.4.1.min.js"></script>
<script src="/static/lib/jquery/jquery.cookie.js"></script>
<script src="/static/lib/layui/layui.js"></script>
<script src="/static/js/common.js"></script>
<link rel="shortcut icon" href="{:get_source_link(get_system_config('site_favicon','/favicon.ico'))}" />
<link rel="icon" href="{:get_source_link(get_system_config('site_favicon','/favicon.ico'))}" >
<script>
//JavaScript代码区域
layui.use(['element', 'layer', 'util'], function () {
var element = layui.element;
var util = layui.util;
});
</script>
{:get_system_config('site_tongji')}

View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">
<title>{:get_system_config('site_name')}-首页</title>
{include file='common/_easy_blue_require'/}
</head>
<body>
{include file='common/_easy_blue_header'/}
<div style="margin-top: 80px;">
</div>
{include file='common/_easy_blue_footer'/}
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</body>
</html>

View File

@@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">
<title>{:get_system_config('site_name')}-首页</title>
{include file='common/_easy_blue_require'/}
</head>
<body>
<!-- nav部分 -->
<div class="nav index">
<div class="layui-container">
<!-- 公司logo -->
<div class="nav-logo">
<a href="index.html">
<img src="{:get_source_link(get_system_config('site_logo'))}" alt="{:get_system_config('site_name')}">
</a>
</div>
<div class="nav-list">
<button>
<span></span><span></span><span></span>
</button>
<ul class="layui-nav" lay-filter="">
{volist name='list_header_nav' id='nav'}
<li class="layui-nav-item"><a href="{$nav.value}">{$nav.title}</a></li>
{/volist}
</ul>
</div>
</div>
</div>
<!-- banner部分 -->
<div>
<div class="layui-carousel" id="banner">
<div carousel-item>
{volist name='list_nav_slide' id='nav'}
<a href="{$nav.value|default='javascript:;'}" target="{$nav.target}">
<img src="{$nav.img}">
<div class="panel">
<p class="title">{$nav.title}</p>
<p>{$nav.desc}</p>
</div>
</a>
{/volist}
</div>
</div>
</div>
<!-- main部分 -->
<div class="main-product">
<div class="layui-container">
<p class="title">{:get_system_config('easy_index_block_1_title_1')}<span>{:get_system_config('easy_index_block_1_title_2')}</span></p>
<div class="layui-row layui-col-space25">
{volist name='list_nav_index_block_1' id='nav'}
<div class="layui-col-sm6 layui-col-md3">
<div class="content">
<div><img src="{$nav.img}"></div>
<div>
<p class="label">{$nav.title}</p>
<p>{$nav.desc}</p>
</div>
<a href="{$nav.value}">查看产品 ></a>
</div>
</div>
{/volist}
</div>
</div>
</div>
<div class="main-service">
<div class="layui-container">
<p class="title">{:get_system_config('easy_index_block_2_title_1')}<span>{:get_system_config('easy_index_block_2_title_2')}</span></p>
<div class="layui-row layui-col-space25 layui-col-space80">
{volist name='list_nav_index_block_2' id='nav'}
<div class="layui-col-sm6">
<div class="content">
<div class="content-left"><img src="{$nav.img}"></div>
<div class="content-right">
<p class="label">{$nav.title}</p>
<span></span>
<p>{$nav.desc}</p>
</div>
</div>
</div>
{/volist}
</div>
<div class="service-more">
{if !empty(get_system_config('easy_index_bottom_jump_url')) }
<a href="{:get_system_config('easy_index_bottom_jump_url')}">查看更多</a>
{/if}
</div>
</div>
</div>
<!-- footer部分 -->
<div class="footer">
<div class="layui-container">
<p class="footer-web">
{volist name='list_nav_friend_url' id='nav'}
<a href="{$nav.value}" target="{$nav.target}">{$nav.title}</a>
{/volist}
</p>
<div class="layui-row footer-contact">
<div class="layui-col-sm2 layui-col-lg1"><img src="{:get_system_config('site_qrcode')}"></div>
<div class="layui-col-sm10 layui-col-lg11">
<div class="layui-row">
<div class="layui-col-sm6 layui-col-md8 layui-col-lg9">
<p class="contact-top"><i class="layui-icon layui-icon-cellphone"></i>&nbsp;{:get_system_config('site_contact_phone')}&nbsp;&nbsp;({:get_system_config('site_worktime')})</p>
<p class="contact-bottom"><i class="layui-icon layui-icon-home"></i>&nbsp;{:get_system_config('stie_contact_email')}</span></p>
</div>
<div class="layui-col-sm6 layui-col-md4 layui-col-lg3">
<p class="contact-top"><span class="right">{:get_system_config('site_copyright')}</p>
<p class="contact-bottom">
<span class="right"><a href="http://www.beian.miit.gov.cn/">{:get_system_config('site_beian')}</a></span>
</p>
{if !empty(get_system_config('site_safe_beian')) }
<p class="contact-bottom">
<span class="right"><a href="{:get_system_config('site_safe_beian_url')}"><img src="/static/images/ghs.png" alt="" style="margin-right: 10px;">{:get_system_config('site_safe_beian')}</a></span>
</p>
{/if}
</div>
</div>
</div>
</div>
</div>
</div>
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</body>
</html>