diff --git a/app/admin/controller/ResourcesController.php b/app/admin/controller/ResourcesController.php
index cb618e1..c4acf93 100644
--- a/app/admin/controller/ResourcesController.php
+++ b/app/admin/controller/ResourcesController.php
@@ -9,7 +9,7 @@ use app\admin\model\Resource\ResourceCategory;
use think\facade\View;
use think\facade\Request;
use think\facade\Db;
-use app\admin\controller\Log;
+use app\admin\controller\LogController as Log;
use think\App;
class ResourcesController extends BaseController
@@ -100,14 +100,17 @@ class ResourcesController extends BaseController
{
if (Request::isPost()) {
$data = [
- 'name' => input('post.name'),
+ 'title' => input('post.title'),
'cate' => input('post.cate'),
'icon' => input('post.icon'),
'url' => input('post.url'),
'code' => input('post.code'),
'uploader' => input('post.uploader'),
'desc' => input('post.desc'),
+ 'content' => input('post.content'),
+ 'number' => input('post.number'),
'status' => input('post.status', 2),
+
'create_time' => time()
];
@@ -130,6 +133,64 @@ class ResourcesController extends BaseController
}
}
+ // 编辑资源
+ public function edit()
+ {
+ if (Request::isPost()) {
+ $data = input('post.');
+ $id = input('id/d', 0);
+
+ if (!$id) {
+ Log::record('编辑资源', 0, '参数错误', '资源管理');
+ return json(['code' => 1, 'msg' => '参数错误']);
+ }
+
+ $updateData = [
+ 'title' => $data['title'],
+ 'cate' => $data['cate'],
+ 'desc' => $data['desc'],
+ 'uploader' => $data['uploader'],
+ 'icon' => $data['icon'],
+ 'fileurl' => $data['fileurl'],
+ 'url' => $data['url'],
+ 'code' => $data['code'],
+ 'sort' => $data['sort'],
+ 'number' => $data['number'],
+ 'content' => $data['content'],
+ 'update_time' => time()
+ ];
+
+ $result = Resource::where('id', $id)
+ ->update($updateData);
+
+ if ($result !== false) {
+ Log::record('编辑资源', 1, '', '资源管理');
+ return json(['code' => 0, 'msg' => '编辑成功']);
+ } else {
+ Log::record('编辑资源', 0, '编辑资源失败', '资源管理');
+ return json(['code' => 1, 'msg' => '编辑失败']);
+ }
+ }
+
+ $id = input('id/d', 0);
+ if (!$id) {
+ Log::record('编辑资源', 0, '参数错误', '资源管理');
+ $this->error('参数错误');
+ }
+
+ $resource = Resource::where('id', $id)
+ ->where('delete_time', null)
+ ->find();
+
+ if (!$resource) {
+ Log::record('编辑资源', 0, '资源不存在', '资源管理');
+ $this->error('资源不存在');
+ }
+
+ View::assign('resource', $resource);
+ return View::fetch();
+ }
+
// 删除资源
public function delete()
{
@@ -167,6 +228,29 @@ class ResourcesController extends BaseController
->order('sort asc, id asc')
->select()
->toArray();
+
+ // 获取每个分类下的资源总数
+ foreach ($lists as &$item) {
+ if ($item['cid'] == 0) {
+ // 父级分类 - 统计所有子分类的资源总数
+ $childIds = ResourceCategory::where('cid', $item['id'])
+ ->where('delete_time', null)
+ ->where('status', 1)
+ ->column('id');
+
+ $item['total'] = Resource::where('cate', 'in', array_merge([$item['id']], $childIds))
+ ->where('delete_time', null)
+ ->where('status', '<>', 3)
+ ->count();
+ } else {
+ // 子分类 - 只统计当前分类的资源
+ $item['total'] = Resource::where('cate', $item['id'])
+ ->where('delete_time', null)
+ ->where('status', '<>', 3)
+ ->count();
+ }
+ }
+
$tree = $this->buildParentChild($lists);
return json(['code' => 0, 'msg' => '获取成功', 'data' => $tree]);
}
@@ -179,6 +263,7 @@ class ResourcesController extends BaseController
'name' => input('post.name'),
'icon' => input('post.icon'),
'cid' => input('post.cid'),
+ 'number' => input('post.number'),
'sort' => input('post.sort', 0),
'status' => input('post.status', 1),
'create_time' => time()
@@ -217,6 +302,7 @@ class ResourcesController extends BaseController
'name' => input('post.name'),
'icon' => input('post.icon'),
'cid' => input('post.cid'),
+ 'number' => input('post.number'),
'sort' => input('post.sort', 0),
'status' => input('post.status', 1),
'update_time' => time()
@@ -309,64 +395,6 @@ class ResourcesController extends BaseController
return json(['code' => 0, 'msg' => '获取成功', 'data' => $resource]);
}
- /**
- * 编辑资源
- */
- public function edit()
- {
- if (Request::isPost()) {
- $data = input('post.');
- $id = input('id/d', 0);
-
- if (!$id) {
- Log::record('编辑资源', 0, '参数错误', '资源管理');
- return json(['code' => 1, 'msg' => '参数错误']);
- }
-
- $updateData = [
- 'title' => $data['title'],
- 'cate' => $data['cate'],
- 'desc' => $data['desc'],
- 'uploader' => $data['uploader'],
- 'icon' => $data['icon'],
- 'fileurl' => $data['fileurl'],
- 'url' => $data['url'],
- 'code' => $data['code'],
- 'sort' => $data['sort'],
- 'update_time' => time()
- ];
-
- $result = Resource::where('id', $id)
- ->update($updateData);
-
- if ($result !== false) {
- Log::record('编辑资源', 1, '', '资源管理');
- return json(['code' => 0, 'msg' => '编辑成功']);
- } else {
- Log::record('编辑资源', 0, '编辑资源失败', '资源管理');
- return json(['code' => 1, 'msg' => '编辑失败']);
- }
- }
-
- $id = input('id/d', 0);
- if (!$id) {
- Log::record('编辑资源', 0, '参数错误', '资源管理');
- $this->error('参数错误');
- }
-
- $resource = Resource::where('id', $id)
- ->where('delete_time', null)
- ->find();
-
- if (!$resource) {
- Log::record('编辑资源', 0, '资源不存在', '资源管理');
- $this->error('资源不存在');
- }
-
- View::assign('resource', $resource);
- return View::fetch();
- }
-
//统计资源数量
public function counts()
{
diff --git a/app/admin/view/resources/add.php b/app/admin/view/resources/add.php
index 7dc2346..534480d 100644
--- a/app/admin/view/resources/add.php
+++ b/app/admin/view/resources/add.php
@@ -22,12 +22,20 @@
+
+
+
+
@@ -120,6 +138,7 @@
+
+
+
+
+
+
+
@@ -91,6 +87,7 @@
method: 'post',
cols: [[
{ field: 'id', title: 'ID', align: 'center', width: 80 },
+ { field: 'number', title: '资源编号', width: 100 },
{ field: 'title', title: '资源名称' },
{ field: 'cate', title: '分类', align: 'center', width: 120 },
{ field: 'icon', title: '图标', templet: '#iconTemplate', align: 'center', width: 100 },
diff --git a/app/index/controller/GameController.php b/app/index/controller/GameController.php
new file mode 100644
index 0000000..3337622
--- /dev/null
+++ b/app/index/controller/GameController.php
@@ -0,0 +1,242 @@
+ 0) {
+ $where[] = ['cate', '=', $cateId];
+ }
+
+ // 获取游戏列表
+ $games = Resources::where($where)
+ ->order('id DESC')
+ ->paginate([
+ 'list_rows' => 10,
+ 'query' => Request::param()
+ ]);
+
+ // 获取分类信息
+ $category = null;
+ if ($cateId > 0) {
+ $category = ResourcesCategory::where('id', $cateId)
+ ->where('delete_time', null)
+ ->where('status', 1)
+ ->find();
+ }
+
+ // 获取所有分类
+ $categories = ResourcesCategory::where('delete_time', null)
+ ->where('status', 1)
+ ->select()
+ ->toArray();
+
+ // 将变量传递给视图
+ View::assign([
+ 'games' => $games,
+ 'category' => $category,
+ 'categories' => $categories
+ ]);
+
+ return View::fetch('list');
+ }
+
+ // 游戏详情页
+ public function detail()
+ {
+ $id = Request::param('id/d', 0);
+ $game = Resources::where('id', $id)->find();
+
+ if (!$game) {
+ return json(['code' => 0, 'msg' => '游戏不存在或已被删除']);
+ }
+
+ // 如果size没有,从附件表中获取
+ if (empty($game['size']) && !empty($game['fileurl'])) {
+ $attachment = Attachments::where('src', $game['fileurl'])
+ ->find();
+
+ if ($attachment && !empty($attachment['size'])) {
+ $size = $attachment['size'];
+ // 转换文件大小为合适的单位
+ if ($size >= 1073741824) { // 1GB = 1024MB = 1024*1024KB = 1024*1024*1024B
+ $game['size'] = round($size / 1073741824, 2) . 'GB';
+ } elseif ($size >= 1048576) { // 1MB = 1024KB = 1024*1024B
+ $game['size'] = round($size / 1048576, 2) . 'MB';
+ } else {
+ $game['size'] = round($size / 1024, 2) . 'KB';
+ }
+ }
+ }
+
+ // 获取分类名称
+ $cateName = ResourcesCategory::where('id', $game['cate'])
+ ->value('name');
+
+ // 获取上一个和下一个游戏
+ $prevGame = Resources::where('id', '<', $id)
+ ->where('delete_time', null)
+ ->where('status', 1)
+ ->order('id DESC')
+ ->find();
+
+ $nextGame = Resources::where('id', '>', $id)
+ ->where('delete_time', null)
+ ->where('status', 1)
+ ->order('id ASC')
+ ->find();
+
+ // 获取相关游戏(同分类的其他游戏)
+ $relatedGames = Db::table('yz_resources')
+ ->alias('g')
+ ->join('yz_resources_category c', 'g.cate = c.id')
+ ->where('g.cate', $game['cate'])
+ ->where('g.id', '<>', $id)
+ ->where('g.delete_time', null)
+ ->where('g.status', 1)
+ ->field([
+ 'g.id',
+ 'g.title',
+ 'g.desc',
+ 'IF(g.icon IS NULL OR g.icon = "", c.icon, g.icon) as icon'
+ ])
+ ->order('g.id DESC')
+ ->limit(3)
+ ->select()
+ ->toArray();
+
+ // 如果是 AJAX 请求,返回 JSON 数据
+ if (Request::isAjax()) {
+ return json([
+ 'code' => 1,
+ 'msg' => '获取成功',
+ 'data' => [
+ 'game' => $game,
+ 'cateName' => $cateName,
+ 'prevGame' => $prevGame,
+ 'nextGame' => $nextGame,
+ 'relatedGames' => $relatedGames
+ ]
+ ]);
+ }
+
+ // 非 AJAX 请求返回视图
+ View::assign([
+ 'game' => $game,
+ 'cateName' => $cateName,
+ 'prevGame' => $prevGame,
+ 'nextGame' => $nextGame,
+ 'relatedGames' => $relatedGames
+ ]);
+
+ return View::fetch('detail');
+ }
+
+ // 游戏下载
+ public function downloadurl()
+ {
+ if (!Request::isAjax()) {
+ return json(['code' => 0, 'msg' => '非法请求']);
+ }
+
+ $id = Request::param('id/d', 0);
+
+ // 获取游戏信息
+ $game = Resources::where('id', $id)
+ ->where('delete_time', null)
+ ->find();
+
+ if (!$game) {
+ return json(['code' => 0, 'msg' => '游戏不存在']);
+ }
+
+ // 更新下载次数
+ $result = Resources::where('id', $id)
+ ->where('delete_time', null)
+ ->inc('downloads', 1)
+ ->update();
+
+ if ($result) {
+ return json([
+ 'code' => 1,
+ 'msg' => '下载成功',
+ 'data' => [
+ 'url' => $game['url']
+ ]
+ ]);
+ } else {
+ return json(['code' => 0, 'msg' => '下载失败']);
+ }
+ }
+
+ // 获取访问统计
+ public function viewStats()
+ {
+ $id = Request::param('id/d', 0);
+
+ // 获取总访问量
+ $totalViews = Resources::where('id', $id)
+ ->value('views');
+
+ return json([
+ 'code' => 1,
+ 'data' => [
+ 'total' => $totalViews
+ ]
+ ]);
+ }
+
+ /**
+ * 更新游戏访问次数
+ */
+ public function updateViews()
+ {
+ if (!Request::isPost()) {
+ return json(['code' => 0, 'msg' => '非法请求']);
+ }
+
+ $id = Request::post('id');
+ if (!$id) {
+ return json(['code' => 0, 'msg' => '参数错误']);
+ }
+
+ try {
+ // 更新访问次数
+ $game = Resources::where('id', $id)->find();
+ if (!$game) {
+ return json(['code' => 0, 'msg' => '游戏不存在']);
+ }
+
+ // 更新访问次数
+ Resources::where('id', $id)->inc('views')->update();
+
+ // 获取更新后的访问次数
+ $newViews = Resources::where('id', $id)->value('views');
+
+ return json(['code' => 1, 'msg' => '更新成功', 'data' => ['views' => $newViews]]);
+ } catch (\Exception $e) {
+ return json(['code' => 0, 'msg' => '更新失败:' . $e->getMessage()]);
+ }
+ }
+}
diff --git a/app/index/controller/IndexController.php b/app/index/controller/IndexController.php
index e73f646..31f70bf 100644
--- a/app/index/controller/IndexController.php
+++ b/app/index/controller/IndexController.php
@@ -270,4 +270,75 @@ class IndexController extends BaseController
'categories' => $categoryData
]);
}
+
+ /**
+ * 获取游戏下载列表
+ */
+ public function gameList()
+ {
+ // 获取游戏分类(顶级分类id为8的子分类)
+ $categories = ResourcesCategory::where('cid', 8)
+ ->where('delete_time', null)
+ ->select()
+ ->toArray();
+
+ // 组装分类数据
+ $categoryData = [];
+ $categoryImageMap = [];
+ $programsByCategory = [];
+
+ foreach ($categories as $category) {
+ $categoryData[] = [
+ 'id' => $category['id'],
+ 'name' => $category['name'],
+ 'image' => $category['image'] ?? ''
+ ];
+
+ // 获取每个分类下的游戏,限制8条
+ $programs = Resources::where('cate', $category['id'])
+ ->where('delete_time', null)
+ ->where('status', 1)
+ ->order('id', 'desc')
+ ->field('id, cate, title, desc, downloads, create_time, icon, views, uploader, number, url, code')
+ ->limit(8)
+ ->select()
+ ->toArray();
+
+ // 处理游戏数据
+ foreach ($programs as &$program) {
+ // 如果没有图标,使用分类图片
+ if (empty($program['icon']) && !empty($category['image'])) {
+ $program['icon'] = $category['image'];
+ }
+ // 格式化时间
+ $program['create_time'] = date('Y-m-d H:i:s', $program['create_time']);
+ }
+ unset($program);
+
+ $programsByCategory[$category['id']] = $programs;
+ }
+
+ // 合并所有分类的游戏
+ $allPrograms = [];
+ foreach ($programsByCategory as $programs) {
+ $allPrograms = array_merge($allPrograms, $programs);
+ }
+
+ // 按上传时间排序
+ usort($allPrograms, function($a, $b) {
+ return strtotime($b['create_time']) - strtotime($a['create_time']);
+ });
+
+ // 只取最新的8条
+ $allPrograms = array_slice($allPrograms, 0, 8);
+
+ return json([
+ 'code' => 0,
+ 'msg' => '获取成功',
+ 'data' => [
+ 'games' => $allPrograms,
+ 'categories' => $categoryData
+ ]
+ ]);
+ }
}
diff --git a/app/index/view/component/main.php b/app/index/view/component/main.php
index bc1f7bd..45cd214 100644
--- a/app/index/view/component/main.php
+++ b/app/index/view/component/main.php
@@ -84,6 +84,27 @@
+
+
+
@@ -204,6 +225,32 @@
});
}
+ // 加载游戏下载
+ function loadGames() {
+ fetch('/index/index/gameList')
+ .then(response => response.json())
+ .then(result => {
+ if (result.code === 0) {
+ // 渲染分类标签
+ if (result.data.categories) {
+ renderCategoryTabs(result.data.categories, 'gameDownload');
+ }
+ // 渲染游戏列表
+ if (result.data.games && result.data.games.length > 0) {
+ renderGames(result.data.games, 'gameDownloadList');
+ } else {
+ showNoData('gameDownloadList');
+ }
+ } else {
+ showNoData('gameDownloadList');
+ }
+ })
+ .catch(error => {
+ console.error('请求失败:', error);
+ showError('gameDownloadList');
+ });
+ }
+
// 显示无数据提示
function showNoData(containerId) {
document.getElementById(containerId).innerHTML = '暂无数据
';
@@ -266,6 +313,9 @@
case 'programDownload':
loadCategoryPrograms(selectedCategoryId, 'programDownloadList');
break;
+ case 'gameDownload':
+ loadCategoryGames(selectedCategoryId, 'gameDownloadList');
+ break;
}
});
});
@@ -506,11 +556,70 @@
});
}
+ // 渲染游戏列表
+ function renderGames(games, containerId) {
+ const container = document.getElementById(containerId);
+ if (!container) return;
+
+ let html = '';
+ if (Array.isArray(games)) {
+ games.forEach(game => {
+ html += createGameHtml(game);
+ });
+ }
+
+ container.innerHTML = html || '暂无数据
';
+ }
+
+ // 创建游戏HTML
+ function createGameHtml(game) {
+ if (!game) return '';
+
+ return `
+
+
+

+
+
+
${game.title || '无标题'}
+
${game.create_time || ''}
+
+
+
${game.views || 0}
+
${game.uploader || '未知作者'}
+
+
+ `;
+ }
+
+ // 加载分类游戏
+ function loadCategoryGames(categoryId, containerId) {
+ fetch('/index/index/gameList')
+ .then(response => response.json())
+ .then(result => {
+ if (result.code === 0) {
+ if (categoryId === 'all') {
+ renderGames(result.data.games, containerId);
+ } else {
+ const filteredGames = result.data.games.filter(game => game.cate == categoryId);
+ renderGames(filteredGames, containerId);
+ }
+ } else {
+ showNoData(containerId);
+ }
+ })
+ .catch(error => {
+ console.error('请求失败:', error);
+ showError(containerId);
+ });
+ }
+
// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
loadWebArticles();
loadTechArticles();
loadResources();
loadPrograms();
+ loadGames();
});
\ No newline at end of file
diff --git a/app/index/view/game/detail.php b/app/index/view/game/detail.php
new file mode 100644
index 0000000..91a4955
--- /dev/null
+++ b/app/index/view/game/detail.php
@@ -0,0 +1,414 @@
+{include file="component/head" /}
+{include file="component/header-simple" /}
+
+
+
+
+
+
+
+
+
![<?php echo $game['title']; ?>](<?php echo $game['icon'] ?: '/static/images/default-game.png'; ?>)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{include file="component/footer" /}
+
+
+
+
+
+{include file="component/foot" /}
\ No newline at end of file
diff --git a/public/static/css/index.css b/public/static/css/index.css
index 9dd1faf..f1c0fe5 100644
--- a/public/static/css/index.css
+++ b/public/static/css/index.css
@@ -1,40 +1,123 @@
-html #layuicss-layuiAdmin{display:none; position: absolute; width: 1989px;}
+html #layuicss-layuiAdmin {
+ display: none;
+ position: absolute;
+ width: 1989px;
+}
/* 系统 */
-::-webkit-input-placeholder{color:#ccc}
+::-webkit-input-placeholder {
+ color: #ccc
+}
/* 全局 */
-html{
+html {
/* background-color: #f2f2f2; */
color: #666;
}
+
*[template],
-.layadmin-tabsbody-item{display: none;}
+.layadmin-tabsbody-item {
+ display: none;
+}
+
*[lay-href],
*[lay-tips],
-*[layadmin-event]{cursor: pointer;}
+*[layadmin-event] {
+ cursor: pointer;
+}
/* 重置布局结构 */
-.layui-layout-admin .layui-header{position: fixed; top: 0; left: 0; width: 100%; height: 70px;}
+.layui-layout-admin .layui-header {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 70px;
+}
+
+.layui-layout-admin .layui-header .layui-nav .layui-nav-child a {
+ color: #333;
+}
+
+.layui-layout-admin .layui-side {
+ width: 220px;
+ top: 0;
+ z-index: 1001;
+}
-.layui-layout-admin .layui-header .layui-nav .layui-nav-child a{color: #333;}
-.layui-layout-admin .layui-side{width: 220px; top: 0; z-index: 1001;}
.layui-layout-admin .layui-logo,
-.layui-layout-admin .layui-header .layui-nav .layui-nav-item{height: 70px; line-height: 70px;}
-.layui-layout-admin .layui-logo{position: fixed; left: 0; top: 0; z-index: 1002; width: 220px; height: 49px; padding: 0 15px; box-sizing: border-box; overflow: hidden; font-weight: 300; background-repeat: no-repeat; background-position: center center;}
+.layui-layout-admin .layui-header .layui-nav .layui-nav-item {
+ height: 70px;
+ line-height: 70px;
+}
+
+.layui-layout-admin .layui-logo {
+ position: fixed;
+ left: 0;
+ top: 0;
+ z-index: 1002;
+ width: 220px;
+ height: 49px;
+ padding: 0 15px;
+ box-sizing: border-box;
+ overflow: hidden;
+ font-weight: 300;
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+
.layui-layout-admin .layui-layout-left,
.layadmin-pagetabs,
.layui-layout-admin .layui-body,
-.layui-layout-admin .layui-footer{left: 220px;}
-.layadmin-pagetabs{position: fixed; top: 50px; right: 0; z-index: 999;}
-.layadmin-pagetabs .layui-breadcrumb{padding: 0 15px;}
-.layui-layout-admin .layui-body{position: fixed; top: 90px; bottom: 0;}
-.layui-layout-admin .layui-body .layadmin-tabsbody-item{position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow: hidden; overflow-y: auto;}
-.layui-layout-admin .layui-header .layui-nav-img{width: 26px; height: 26px;}
-.layui-layout-admin .layui-header .layui-nav-child{top: 55px;}
-.layui-layout-admin .layui-header .layui-layout-right .layui-nav-child{left: auto; right: 0;}
+.layui-layout-admin .layui-footer {
+ left: 220px;
+}
+
+.layadmin-pagetabs {
+ position: fixed;
+ top: 50px;
+ right: 0;
+ z-index: 999;
+}
+
+.layadmin-pagetabs .layui-breadcrumb {
+ padding: 0 15px;
+}
+
+.layui-layout-admin .layui-body {
+ position: fixed;
+ top: 90px;
+ bottom: 0;
+}
+
+.layui-layout-admin .layui-body .layadmin-tabsbody-item {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ overflow: hidden;
+ overflow-y: auto;
+}
+
+.layui-layout-admin .layui-header .layui-nav-img {
+ width: 26px;
+ height: 26px;
+}
+
+.layui-layout-admin .layui-header .layui-nav-child {
+ top: 55px;
+}
+
+.layui-layout-admin .layui-header .layui-layout-right .layui-nav-child {
+ left: auto;
+ right: 0;
+}
+
.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this a,
-.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this{background: none}
+.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this {
+ background: none
+}
/* 统一动画 */
.layui-layout-admin .layui-header .layui-nav .layui-nav-item,
@@ -44,219 +127,723 @@ html{
.layui-layout-admin .layui-footer,
.layui-layout-admin .layui-side,
.layui-layout-admin .layui-logo,
-.layui-layout-admin .layui-header .layui-layout-right{transition: all .3s; -webkit-transition: all .3s;}
+.layui-layout-admin .layui-header .layui-layout-right {
+ transition: all .3s;
+ -webkit-transition: all .3s;
+}
/* 图标 */
-.layui-icon-login-qq{color: #3492ED;}
-.layui-icon-login-wechat{color: #4DAF29;}
-.layui-icon-login-weibo{color: #CF1900;}
+.layui-icon-login-qq {
+ color: #3492ED;
+}
+
+.layui-icon-login-wechat {
+ color: #4DAF29;
+}
+
+.layui-icon-login-weibo {
+ color: #CF1900;
+}
/* 表单 */
-.layui-form[wid100] .layui-form-label{width: 100px;}
-.layui-form[wid100] .layui-input-block{margin-left: 130px;}
-@media screen and (max-width: 450px){
- .layui-form[wid100] .layui-form-item .layui-input-inline{margin-left: 132px;}
- .layui-form[wid100] .layui-form-item .layui-input-inline+.layui-form-mid{margin-left: 130px;}
+.layui-form[wid100] .layui-form-label {
+ width: 100px;
+}
+
+.layui-form[wid100] .layui-input-block {
+ margin-left: 130px;
+}
+
+@media screen and (max-width: 450px) {
+ .layui-form[wid100] .layui-form-item .layui-input-inline {
+ margin-left: 132px;
+ }
+
+ .layui-form[wid100] .layui-form-item .layui-input-inline+.layui-form-mid {
+ margin-left: 130px;
+ }
+}
+
+.layui-form-item .layui-input-company {
+ width: auto;
+ padding-right: 10px;
+ line-height: 38px;
}
-.layui-form-item .layui-input-company{width: auto; padding-right: 10px; line-height: 38px;}
/* 辅助 */
-.layadmin-flexible{}
-.layui-bg-white{background-color: #fff;}
-.layadmin-loading{position: absolute; left: 50%; top: 50%; margin: -16px -15px; font-size: 30px; color: #c2c2c2;}
-.layadmin-fixed{position: fixed; left: 0; top: 0; z-index: 999;}
-.layadmin-link{color: #029789!important;}
-.layadmin-link:hover{opacity: 0.8;}
+.layadmin-flexible {}
+
+.layui-bg-white {
+ background-color: #fff;
+}
+
+.layadmin-loading {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ margin: -16px -15px;
+ font-size: 30px;
+ color: #c2c2c2;
+}
+
+.layadmin-fixed {
+ position: fixed;
+ left: 0;
+ top: 0;
+ z-index: 999;
+}
+
+.layadmin-link {
+ color: #029789 !important;
+}
+
+.layadmin-link:hover {
+ opacity: 0.8;
+}
/* 头部导航 */
-.layui-layout-admin .layui-layout-left{padding: 0 10px;}
-.layui-layout-admin .layui-layout-left .layui-nav-item{margin: 0 20px;}
-.layui-layout-admin .layui-input-search{display: inline-block; vertical-align: middle; height: 32px; border: none; cursor: text;}
-.layui-layout-admin .layui-layout-left a{padding: 0;}
-.layui-layout-admin .layui-layout-right{padding: 0;}
-.layui-header .layui-nav-item .layui-icon{position: relative; top: 1px; font-size: 16px;}
-.layui-header .layui-nav-item:hover{}
-.layui-header .layui-layout-right .layui-badge-dot{margin-left: 0px;}
+.layui-layout-admin .layui-layout-left {
+ padding: 0 10px;
+}
+
+.layui-layout-admin .layui-layout-left .layui-nav-item {
+ margin: 0 20px;
+}
+
+.layui-layout-admin .layui-input-search {
+ display: inline-block;
+ vertical-align: middle;
+ height: 32px;
+ border: none;
+ cursor: text;
+}
+
+.layui-layout-admin .layui-layout-left a {
+ padding: 0;
+}
+
+.layui-layout-admin .layui-layout-right {
+ padding: 0;
+}
+
+.layui-header .layui-nav-item .layui-icon {
+ position: relative;
+ top: 1px;
+ font-size: 16px;
+}
+
+.layui-header .layui-nav-item:hover {}
+
+.layui-header .layui-layout-right .layui-badge-dot {
+ margin-left: 0px;
+}
+
.layui-header .layui-nav .layui-this:after,
-.layui-layout-admin .layui-header .layui-nav-bar{top: 0 !important; bottom: auto; height: 3px; background-color: #fff; background-color: rgba(255,255,255,.3);}
+.layui-layout-admin .layui-header .layui-nav-bar {
+ top: 0 !important;
+ bottom: auto;
+ height: 3px;
+ background-color: #fff;
+ background-color: rgba(255, 255, 255, .3);
+}
/* 遮罩 */
-.layadmin-body-shade{position: fixed; display: none; left: 0; right: 0; top: 0; bottom: 0; background-color: rgba(0,0,0,.3); z-index: 1000;}
+.layadmin-body-shade {
+ position: fixed;
+ display: none;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ background-color: rgba(0, 0, 0, .3);
+ z-index: 1000;
+}
/* 侧边菜单 */
-.layui-side-menu .layui-side-scroll{width: 240px;}
-.layui-side-menu .layui-nav{width: 220px; margin-top: 70px; background: none;}
-.layui-side-menu .layui-nav .layui-nav-item a{height: 40px; line-height: 40px; padding-left: 45px; padding-right: 30px;}
-.layui-side-menu .layui-nav .layui-nav-item > a{padding-top: 8px; padding-bottom: 8px;}
-.layui-side-menu .layui-nav .layui-nav-item a:hover{background: none;}
-.layui-side-menu .layui-nav .layui-nav-itemed > .layui-nav-child{padding: 5px 0;}
-.layui-side-menu .layui-nav .layui-nav-item .layui-icon{position: absolute; top: 50%; left: 20px; margin-top: -25px;}
-.layui-side-menu .layui-nav .layui-nav-item .layui-icons{margin-top: -20px;}
-.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child{background: none!important;}
-.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child a{padding-left: 60px}
-.layui-side-menu .layui-nav .layui-nav-more{right: 15px;}
+.layui-side-menu .layui-side-scroll {
+ width: 240px;
+}
+
+.layui-side-menu .layui-nav {
+ width: 220px;
+ margin-top: 70px;
+ background: none;
+}
+
+.layui-side-menu .layui-nav .layui-nav-item a {
+ height: 40px;
+ line-height: 40px;
+ padding-left: 45px;
+ padding-right: 30px;
+}
+
+.layui-side-menu .layui-nav .layui-nav-item>a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+}
+
+.layui-side-menu .layui-nav .layui-nav-item a:hover {
+ background: none;
+}
+
+.layui-side-menu .layui-nav .layui-nav-itemed>.layui-nav-child {
+ padding: 5px 0;
+}
+
+.layui-side-menu .layui-nav .layui-nav-item .layui-icon {
+ position: absolute;
+ top: 50%;
+ left: 20px;
+ margin-top: -25px;
+}
+
+.layui-side-menu .layui-nav .layui-nav-item .layui-icons {
+ margin-top: -20px;
+}
+
+.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child {
+ background: none !important;
+}
+
+.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child a {
+ padding-left: 60px
+}
+
+.layui-side-menu .layui-nav .layui-nav-more {
+ right: 15px;
+}
/* 侧边菜单 - 平板移动设备 */
@media screen and (max-width: 992px) {
- .layui-layout-admin .layui-side{transform: translate3d(-220px, 0, 0); -webkit-transform: translate3d(-220px, 0, 0); width: 220px;}
+ .layui-layout-admin .layui-side {
+ transform: translate3d(-220px, 0, 0);
+ -webkit-transform: translate3d(-220px, 0, 0);
+ width: 220px;
+ }
+
.layui-layout-admin .layui-layout-left,
.layadmin-pagetabs,
.layui-layout-admin .layui-body,
- .layui-layout-admin .layui-footer{left: 0;}
+ .layui-layout-admin .layui-footer {
+ left: 0;
+ }
}
/* 侧边收缩模式 */
-.layadmin-side-shrink .layui-layout-admin .layui-logo{width: 60px; background-image: url(res/logo.png); /*background-size: 20px;)*/}
-.layadmin-side-shrink .layui-layout-admin .layui-logo span{display: none;}
-.layadmin-side-shrink .layui-side{left: 0; width: 60px;}
+.layadmin-side-shrink .layui-layout-admin .layui-logo {
+ width: 60px;
+ background-image: url(res/logo.png);
+ /*background-size: 20px;)*/
+}
+
+.layadmin-side-shrink .layui-layout-admin .layui-logo span {
+ display: none;
+}
+
+.layadmin-side-shrink .layui-side {
+ left: 0;
+ width: 60px;
+}
+
.layadmin-side-shrink .layui-layout-admin .layui-layout-left,
.layadmin-side-shrink .layadmin-pagetabs,
.layadmin-side-shrink .layui-layout-admin .layui-body,
-.layadmin-side-shrink .layui-layout-admin .layui-footer{left: 60px;}
-.layadmin-side-shrink .layui-side-menu .layui-nav{position: static; width: 60px;}
-.layadmin-side-shrink .layui-side-menu .layui-nav-item{position: static;}
-.layadmin-side-shrink .layui-side-menu .layui-nav-item>a{padding-right: 0;}
+.layadmin-side-shrink .layui-layout-admin .layui-footer {
+ left: 60px;
+}
+
+.layadmin-side-shrink .layui-side-menu .layui-nav {
+ position: static;
+ width: 60px;
+}
+
+.layadmin-side-shrink .layui-side-menu .layui-nav-item {
+ position: static;
+}
+
+.layadmin-side-shrink .layui-side-menu .layui-nav-item>a {
+ padding-right: 0;
+}
+
.layadmin-side-shrink .layui-side-menu .layui-nav-item cite,
-.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > a .layui-nav-more,
-.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > .layui-nav-child{display: none; padding: 8px 0; width: 200px;}
-.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-itemed>a{background: rgba(0,0,0,.3);}
+.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>a .layui-nav-more,
+.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child {
+ display: none;
+ padding: 8px 0;
+ width: 200px;
+}
+
+.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-itemed>a {
+ background: rgba(0, 0, 0, .3);
+}
/* 移动端展开模式 */
.layadmin-side-spread-sm .layui-layout-admin .layui-layout-left,
.layadmin-side-spread-sm .layadmin-pagetabs,
.layadmin-side-spread-sm .layui-layout-admin .layui-body,
-.layadmin-side-spread-sm .layui-layout-admin .layui-footer{left: 0; transform: translate3d(220px, 0, 0); -webkit-transform: translate3d(220px, 0, 0);}
-.layadmin-side-spread-sm .layui-layout-admin .layui-layout-right{transform: translate3d(220px, 0, 0); -webkit-transform: translate3d(220px, 0, 0);}
-.layadmin-side-spread-sm .layui-side{transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0);}
-.layadmin-side-spread-sm .layadmin-body-shade{display: block; }
+.layadmin-side-spread-sm .layui-layout-admin .layui-footer {
+ left: 0;
+ transform: translate3d(220px, 0, 0);
+ -webkit-transform: translate3d(220px, 0, 0);
+}
+
+.layadmin-side-spread-sm .layui-layout-admin .layui-layout-right {
+ transform: translate3d(220px, 0, 0);
+ -webkit-transform: translate3d(220px, 0, 0);
+}
+
+.layadmin-side-spread-sm .layui-side {
+ transform: translate3d(0, 0, 0);
+ -webkit-transform: translate3d(0, 0, 0);
+}
+
+.layadmin-side-spread-sm .layadmin-body-shade {
+ display: block;
+}
/* 页面标签 */
-.layadmin-pagetabs{height: 40px; line-height: 40px; padding: 0 80px 0 40px; /*border-bottom: 2px solid #292B34;*/ background-color: #fff; box-sizing: border-box; box-shadow: 0 1px 2px 0 rgba(0,0,0,.1);}
-.layadmin-pagetabs .layadmin-tabs-control{position: absolute; top: 0; width: 40px; height: 100%; text-align: center; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box; border-left: 1px solid #f6f6f6;}
-.layadmin-pagetabs .layadmin-tabs-control:hover{background-color: #f6f6f6;}
-.layadmin-pagetabs .layui-icon-prev{left: 0; border-left: none; border-right: 1px solid #f6f6f6;}
-.layadmin-pagetabs .layui-icon-next{right: 40px; right: 40px;}
-.layadmin-pagetabs .layui-icon-down{right: 0;}
-.layadmin-tabs-select.layui-nav{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 0; background: none;}
-.layadmin-tabs-select.layui-nav .layui-nav-item{line-height: 40px;}
-.layadmin-tabs-select.layui-nav .layui-nav-item>a{height: 40px;}
-.layadmin-tabs-select.layui-nav .layui-nav-item a{color: #666;}
-.layadmin-tabs-select.layui-nav .layui-nav-child{top: 40px; left: auto; right: 0;}
-.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this,
-.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this a{background-color: #f2f2f2!important; color: #333;}
-.layadmin-tabs-select.layui-nav .layui-nav-more,
-.layadmin-tabs-select.layui-nav .layui-nav-bar{display: none;}
+.layadmin-pagetabs {
+ height: 40px;
+ line-height: 40px;
+ padding: 0 80px 0 40px;
+ /*border-bottom: 2px solid #292B34;*/
+ background-color: #fff;
+ box-sizing: border-box;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1);
+}
+
+.layadmin-pagetabs .layadmin-tabs-control {
+ position: absolute;
+ top: 0;
+ width: 40px;
+ height: 100%;
+ text-align: center;
+ cursor: pointer;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+ box-sizing: border-box;
+ border-left: 1px solid #f6f6f6;
+}
+
+.layadmin-pagetabs .layadmin-tabs-control:hover {
+ background-color: #f6f6f6;
+}
+
+.layadmin-pagetabs .layui-icon-prev {
+ left: 0;
+ border-left: none;
+ border-right: 1px solid #f6f6f6;
+}
+
+.layadmin-pagetabs .layui-icon-next {
+ right: 40px;
+ right: 40px;
+}
+
+.layadmin-pagetabs .layui-icon-down {
+ right: 0;
+}
+
+.layadmin-tabs-select.layui-nav {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ padding: 0;
+ background: none;
+}
+
+.layadmin-tabs-select.layui-nav .layui-nav-item {
+ line-height: 40px;
+}
+
+.layadmin-tabs-select.layui-nav .layui-nav-item>a {
+ height: 40px;
+}
+
+.layadmin-tabs-select.layui-nav .layui-nav-item a {
+ color: #666;
+}
+
+.layadmin-tabs-select.layui-nav .layui-nav-child {
+ top: 40px;
+ left: auto;
+ right: 0;
+}
+
+.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this,
+.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this a {
+ background-color: #f2f2f2 !important;
+ color: #333;
+}
+
+.layadmin-tabs-select.layui-nav .layui-nav-more,
+.layadmin-tabs-select.layui-nav .layui-nav-bar {
+ display: none;
+}
+
+.layadmin-pagetabs .layui-tab {
+ margin: 0;
+ overflow: hidden;
+}
+
+.layadmin-pagetabs .layui-tab-title {
+ height: 40px;
+ border: none;
+}
+
+.layadmin-pagetabs .layui-tab-title li {
+ min-width: 0;
+ line-height: 40px;
+ max-width: 160px;
+ text-overflow: ellipsis;
+ padding-right: 40px;
+ overflow: hidden;
+ border-right: 1px solid #f6f6f6;
+ vertical-align: top;
+}
+
+.layadmin-pagetabs .layui-tab-title li:first-child {
+ padding-right: 15px;
+}
+
+.layadmin-pagetabs .layui-tab-title li:first-child .layui-tab-close {
+ display: none;
+}
+
+.layadmin-pagetabs .layui-tab-title li .layui-tab-close {
+ position: absolute;
+ right: 8px;
+ top: 50%;
+ margin: -7px 0 0 0;
+ width: 16px;
+ height: 16px;
+ line-height: 16px;
+ border-radius: 50%;
+ font-size: 12px;
+}
+
+.layadmin-pagetabs .layui-tab-title li:after {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 0;
+ height: 2px;
+ border-radius: 0;
+ background-color: #292B34;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+}
+
+.layadmin-pagetabs .layui-tab-title li:hover:after {
+ width: 100%;
+}
-.layadmin-pagetabs .layui-tab{margin: 0; overflow: hidden;}
-.layadmin-pagetabs .layui-tab-title{height: 40px; border: none;}
-.layadmin-pagetabs .layui-tab-title li{min-width: 0; line-height: 40px; max-width: 160px; text-overflow: ellipsis; padding-right: 40px; overflow: hidden; border-right: 1px solid #f6f6f6; vertical-align: top;}
-.layadmin-pagetabs .layui-tab-title li:first-child{ padding-right: 15px;}
-.layadmin-pagetabs .layui-tab-title li:first-child .layui-tab-close{display: none;}
-.layadmin-pagetabs .layui-tab-title li .layui-tab-close{position: absolute; right: 8px; top: 50%; margin: -7px 0 0 0; width: 16px; height: 16px; line-height: 16px; border-radius: 50%; font-size: 12px;}
-.layadmin-pagetabs .layui-tab-title li:after{content:''; position: absolute; top: 0; left: 0; width: 0; height: 2px; border-radius: 0; background-color: #292B34; transition: all .3s; -webkit-transition: all .3s;}
-.layadmin-pagetabs .layui-tab-title li:hover:after{width: 100%;}
.layadmin-pagetabs .layui-tab-title li:hover,
-.layadmin-pagetabs .layui-tab-title li.layui-this{background-color: #f6f6f6;}
-.layadmin-pagetabs .layui-tab-title li.layui-this:after{width: 100%; border: none; height: 2px; background-color: #292B34;}
+.layadmin-pagetabs .layui-tab-title li.layui-this {
+ background-color: #f6f6f6;
+}
+
+.layadmin-pagetabs .layui-tab-title li.layui-this:after {
+ width: 100%;
+ border: none;
+ height: 2px;
+ background-color: #292B34;
+}
/* 不开启页面标签时 */
-.layadmin-tabspage-none .layui-layout-admin .layui-header{height:70px;border-bottom: none; box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);}
-.layadmin-tabspage-none .layui-layout-admin .layui-body{top: 70px;}
-.layadmin-tabspage-none .layadmin-header{display: block;}
-.layadmin-tabspage-none .layadmin-header .layui-breadcrumb{border-top: 1px solid #f6f6f6;}
+.layadmin-tabspage-none .layui-layout-admin .layui-header {
+ height: 70px;
+ border-bottom: none;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);
+}
+
+.layadmin-tabspage-none .layui-layout-admin .layui-body {
+ top: 70px;
+}
+
+.layadmin-tabspage-none .layadmin-header {
+ display: block;
+}
+
+.layadmin-tabspage-none .layadmin-header .layui-breadcrumb {
+ border-top: 1px solid #f6f6f6;
+}
/* 底部固定区域 */
-.layui-layout-admin .layui-footer{padding: 10px 0; text-align: center;}
+.layui-layout-admin .layui-footer {
+ padding: 10px 0;
+ text-align: center;
+}
/* 默认主题修饰 */
-.layui-layout-admin .layui-header{border-bottom: 1px solid #f6f6f6; box-sizing: border-box; background-color: #fff;}
+.layui-layout-admin .layui-header {
+ border-bottom: 1px solid #f6f6f6;
+ box-sizing: border-box;
+ background-color: #fff;
+}
+
.layui-layout-admin .layui-header a,
-.layui-layout-admin .layui-header a cite{color: #333;}
-.layui-layout-admin .layui-header a:hover{color: #000;}
-.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #666}
-.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #666;}
-.layui-layout-admin .layui-header .layui-nav .layui-this:after,
-.layui-layout-admin .layui-header .layui-nav-bar{height: 2px; background-color: #337EFD}
-.layui-layout-admin .layui-logo{background-color: #337efd; box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);}
+.layui-layout-admin .layui-header a cite {
+ color: #333;
+}
+
+.layui-layout-admin .layui-header a:hover {
+ color: #000;
+}
+
+.layui-layout-admin .layui-header .layui-nav .layui-nav-more {
+ border-top-color: #666
+}
+
+.layui-layout-admin .layui-header .layui-nav .layui-nav-mored {
+ border-color: transparent;
+ border-bottom-color: #666;
+}
+
+.layui-layout-admin .layui-header .layui-nav .layui-this:after,
+.layui-layout-admin .layui-header .layui-nav-bar {
+ height: 2px;
+ background-color: #337EFD
+}
+
+.layui-layout-admin .layui-logo {
+ background-color: #337efd;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15);
+}
+
.layui-layout-admin .layui-logo,
-.layui-layout-admin .layui-logo a{color: #fff; color: rgba(255,255,255,.8);height:70px;}
-.layui-side-menu{box-shadow: 1px 0 2px 0 rgba(0,0,0,.05);}
-.layui-layout-admin .layui-footer{box-shadow: 0 -1px 2px 0 rgba(0,0,0,.05);}
+.layui-layout-admin .layui-logo a {
+ color: #fff;
+ color: rgba(255, 255, 255, .8);
+ height: 70px;
+}
+
+.layui-side-menu {
+ box-shadow: 1px 0 2px 0 rgba(0, 0, 0, .05);
+}
+
+.layui-layout-admin .layui-footer {
+ box-shadow: 0 -1px 2px 0 rgba(0, 0, 0, .05);
+}
.layui-side-menu,
-.layadmin-setTheme-side{background-color: #1A263B; color: #fff;}
-.layadmin-setTheme-header{background-color: #fff;}
+.layadmin-setTheme-side {
+ background-color: #1A263B;
+ color: #fff;
+}
-.layui-layout-admin .layui-footer{background-color: #fff;}
-.layui-tab-admin .layui-tab-title{background-color: #393D49; color: #fff;}
+.layadmin-setTheme-header {
+ background-color: #fff;
+}
+
+.layui-layout-admin .layui-footer {
+ background-color: #fff;
+}
+
+.layui-tab-admin .layui-tab-title {
+ background-color: #393D49;
+ color: #fff;
+}
/*
格局
*/
-.layui-fluid{padding: 15px;}
-.layadmin-header{display: none; height: 50px; line-height: 50px; margin-bottom: 0; border-radius: 0;}
-.layadmin-header .layui-breadcrumb{padding: 0 15px;}
-.layui-card-header{position: relative;}
-.layui-card-header .layui-icon{line-height: initial; position: absolute; right: 15px; top: 50%; margin-top: -7px;}
-.layadmin-iframe{position: absolute; width: 100%; height: 100%; left: 0; top: 0; right: 0; bottom: 0;}
+.layui-fluid {
+ padding: 15px;
+}
+
+.layadmin-header {
+ display: none;
+ height: 50px;
+ line-height: 50px;
+ margin-bottom: 0;
+ border-radius: 0;
+}
+
+.layadmin-header .layui-breadcrumb {
+ padding: 0 15px;
+}
+
+.layui-card-header {
+ position: relative;
+}
+
+.layui-card-header .layui-icon {
+ line-height: initial;
+ position: absolute;
+ right: 15px;
+ top: 50%;
+ margin-top: -7px;
+}
+
+.layadmin-iframe {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+}
/*
控制台
*/
/* 重置轮播样式 */
-.layadmin-carousel{height: 185px !important; background-color: #fff;}
-.layadmin-carousel .layui-carousel-ind li{background-color: #e2e2e2;}
-.layadmin-carousel .layui-carousel-ind li:hover{background-color: #c2c2c2;}
-.layadmin-carousel .layui-carousel-ind li.layui-this{background-color: #999;}
+.layadmin-carousel {
+ height: 185px !important;
+ background-color: #fff;
+}
+
+.layadmin-carousel .layui-carousel-ind li {
+ background-color: #e2e2e2;
+}
+
+.layadmin-carousel .layui-carousel-ind li:hover {
+ background-color: #c2c2c2;
+}
+
+.layadmin-carousel .layui-carousel-ind li.layui-this {
+ background-color: #999;
+}
+
.layadmin-carousel .layui-carousel,
-.layadmin-carousel > *[carousel-item] > *{background-color: #fff;}
-.layadmin-carousel .layui-col-space10{margin: 0;}
-.layadmin-carousel .layui-carousel-ind{position: absolute; top: -41px; text-align: right;}
-.layadmin-carousel .layui-carousel-ind ul{background: none;}
+.layadmin-carousel>*[carousel-item]>* {
+ background-color: #fff;
+}
+
+.layadmin-carousel .layui-col-space10 {
+ margin: 0;
+}
+
+.layadmin-carousel .layui-carousel-ind {
+ position: absolute;
+ top: -41px;
+ text-align: right;
+}
+
+.layadmin-carousel .layui-carousel-ind ul {
+ background: none;
+}
/* 重置tab样式 */
-.layui-card .layui-tab-brief .layui-tab-title{height: 42px; border-bottom-color: #f6f6f6;}
-.layui-card .layui-tab-brief .layui-tab-title li{margin: 0 15px; padding: 0; line-height: 42px;}
-.layui-card .layui-tab-brief .layui-tab-title li.layui-this{color: #333;}
-.layui-card .layui-tab-brief .layui-tab-title .layui-this:after{height: 43px;}
-.layui-card .layui-tab-brief .layui-tab-content{padding: 15px;}
-.layui-card .layui-table-view{margin: 0;}
+.layui-card .layui-tab-brief .layui-tab-title {
+ height: 42px;
+ border-bottom-color: #f6f6f6;
+}
+
+.layui-card .layui-tab-brief .layui-tab-title li {
+ margin: 0 15px;
+ padding: 0;
+ line-height: 42px;
+}
+
+.layui-card .layui-tab-brief .layui-tab-title li.layui-this {
+ color: #333;
+}
+
+.layui-card .layui-tab-brief .layui-tab-title .layui-this:after {
+ height: 43px;
+}
+
+.layui-card .layui-tab-brief .layui-tab-content {
+ padding: 15px;
+}
+
+.layui-card .layui-table-view {
+ margin: 0;
+}
/* 头部图标重置 */
-.layui-card-header.layuiadmin-card-header-auto{padding-top: 15px; padding-bottom: 15px; height: auto;}
-.layuiadmin-card-header-auto i.layuiadmin-button-btn{position: relative; right: 0; top: 0; vertical-align: middle;}
-.layuiadmin-card-header-auto .layui-form-item:last-child{margin-bottom: 0;}
+.layui-card-header.layuiadmin-card-header-auto {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ height: auto;
+}
+
+.layuiadmin-card-header-auto i.layuiadmin-button-btn {
+ position: relative;
+ right: 0;
+ top: 0;
+ vertical-align: middle;
+}
+
+.layuiadmin-card-header-auto .layui-form-item:last-child {
+ margin-bottom: 0;
+}
/* 动画 */
-@-webkit-keyframes layui-rl{ /* 从右往左滑入 */
- from {-webkit-transform: translate3d(100%, 0, 0);}
- to {-webkit-transform: translate3d(0, 0, 0);}
-}
-@keyframes layui-rl{
- from {transform: translate3d(100%, 0, 0);}
- to {transform: translate3d(0, 0, 0);}
+@-webkit-keyframes layui-rl {
+
+ /* 从右往左滑入 */
+ from {
+ -webkit-transform: translate3d(100%, 0, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ }
}
-@-webkit-keyframes layui-lr{ /* 从右往左滑入 */
- from {-webkit-transform: translate3d(0 0, 0); opacity: 1;}
- to {-webkit-transform: translate3d(100%, 0, 0); opacity: 1;}
+@keyframes layui-rl {
+ from {
+ transform: translate3d(100%, 0, 0);
+ }
+
+ to {
+ transform: translate3d(0, 0, 0);
+ }
}
-@keyframes layui-lr{
- from {transform: translate3d(0, 0, 0);}
- to {transform: translate3d(100%, 0, 0);}
+
+@-webkit-keyframes layui-lr {
+
+ /* 从右往左滑入 */
+ from {
+ -webkit-transform: translate3d(0 0, 0);
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: translate3d(100%, 0, 0);
+ opacity: 1;
+ }
+}
+
+@keyframes layui-lr {
+ from {
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ transform: translate3d(100%, 0, 0);
+ }
}
/*
响应式补充
*/
@media screen and (max-width: 768px) {
+
/* 产品清单模板 */
- .layadmin-panel-selection{margin: 0; width: auto;}
+ .layadmin-panel-selection {
+ margin: 0;
+ width: auto;
+ }
+
/* 导航 */
- .layui-body .layui-nav .layui-nav-item{display: block;}
+ .layui-body .layui-nav .layui-nav-item {
+ display: block;
+ }
+
/* 主体容器 */
- .layui-layout-admin .layui-body .layadmin-tabsbody-item{-webkit-overflow-scrolling: touch; overflow: auto;}
-}
\ No newline at end of file
+ .layui-layout-admin .layui-body .layadmin-tabsbody-item {
+ -webkit-overflow-scrolling: touch;
+ overflow: auto;
+ }
+}
diff --git a/public/static/css/style.css b/public/static/css/style.css
index 880d8c1..bc2611c 100644
--- a/public/static/css/style.css
+++ b/public/static/css/style.css
@@ -561,3 +561,8 @@ pre code {
color: #212529 !important;
border: 1px solid #212529;
}
+
+.program-content img,.game-content img {
+ width: 100%;
+ margin: 20px auto;
+}
\ No newline at end of file
diff --git a/public/storage/uploads/20250520/076ebb788d99e6a2093ce9f0f3326916.jpg b/public/storage/uploads/20250520/076ebb788d99e6a2093ce9f0f3326916.jpg
new file mode 100644
index 0000000..d35b11e
Binary files /dev/null and b/public/storage/uploads/20250520/076ebb788d99e6a2093ce9f0f3326916.jpg differ
diff --git a/public/storage/uploads/20250520/19c9f202d6456a029edd4b8207b21150.jpg b/public/storage/uploads/20250520/19c9f202d6456a029edd4b8207b21150.jpg
new file mode 100644
index 0000000..d35b11e
Binary files /dev/null and b/public/storage/uploads/20250520/19c9f202d6456a029edd4b8207b21150.jpg differ
diff --git a/public/storage/uploads/20250520/1c2e0dfe2003e361f4849cfd25cb7432.jpg b/public/storage/uploads/20250520/1c2e0dfe2003e361f4849cfd25cb7432.jpg
new file mode 100644
index 0000000..ee67f30
Binary files /dev/null and b/public/storage/uploads/20250520/1c2e0dfe2003e361f4849cfd25cb7432.jpg differ
diff --git a/public/storage/uploads/20250520/20e6912dca96205fce7524d9306785bf.jpg b/public/storage/uploads/20250520/20e6912dca96205fce7524d9306785bf.jpg
new file mode 100644
index 0000000..6f3f2e4
Binary files /dev/null and b/public/storage/uploads/20250520/20e6912dca96205fce7524d9306785bf.jpg differ
diff --git a/public/storage/uploads/20250520/240e6a7fc805af55800bee905ababd37.jpg b/public/storage/uploads/20250520/240e6a7fc805af55800bee905ababd37.jpg
new file mode 100644
index 0000000..bef9975
Binary files /dev/null and b/public/storage/uploads/20250520/240e6a7fc805af55800bee905ababd37.jpg differ
diff --git a/public/storage/uploads/20250520/3269a1c3cd1d7de98b213d0b0d0d5d90.jpg b/public/storage/uploads/20250520/3269a1c3cd1d7de98b213d0b0d0d5d90.jpg
new file mode 100644
index 0000000..7e7f156
Binary files /dev/null and b/public/storage/uploads/20250520/3269a1c3cd1d7de98b213d0b0d0d5d90.jpg differ
diff --git a/public/storage/uploads/20250520/3c58ae3081fa51f1f3431c88b19f5610.jpg b/public/storage/uploads/20250520/3c58ae3081fa51f1f3431c88b19f5610.jpg
new file mode 100644
index 0000000..bef9975
Binary files /dev/null and b/public/storage/uploads/20250520/3c58ae3081fa51f1f3431c88b19f5610.jpg differ
diff --git a/public/storage/uploads/20250520/582bd64868d36a02675346def90a70c2.jpg b/public/storage/uploads/20250520/582bd64868d36a02675346def90a70c2.jpg
new file mode 100644
index 0000000..7e7f156
Binary files /dev/null and b/public/storage/uploads/20250520/582bd64868d36a02675346def90a70c2.jpg differ
diff --git a/public/storage/uploads/20250520/64d0d1abbf3343481ff12139d110c26c.jpg b/public/storage/uploads/20250520/64d0d1abbf3343481ff12139d110c26c.jpg
new file mode 100644
index 0000000..d84a6a6
Binary files /dev/null and b/public/storage/uploads/20250520/64d0d1abbf3343481ff12139d110c26c.jpg differ
diff --git a/public/storage/uploads/20250520/84a9f2e8967eba5e8a93d8e74f2cbf38.jpg b/public/storage/uploads/20250520/84a9f2e8967eba5e8a93d8e74f2cbf38.jpg
new file mode 100644
index 0000000..3aa183a
Binary files /dev/null and b/public/storage/uploads/20250520/84a9f2e8967eba5e8a93d8e74f2cbf38.jpg differ
diff --git a/public/storage/uploads/20250520/880426ea37475d65ae8f608b995012e6.jpg b/public/storage/uploads/20250520/880426ea37475d65ae8f608b995012e6.jpg
new file mode 100644
index 0000000..f5a6322
Binary files /dev/null and b/public/storage/uploads/20250520/880426ea37475d65ae8f608b995012e6.jpg differ
diff --git a/public/storage/uploads/20250520/8a7badb9d47fbbde3e6f4311f79cbd65.jpg b/public/storage/uploads/20250520/8a7badb9d47fbbde3e6f4311f79cbd65.jpg
new file mode 100644
index 0000000..ee67f30
Binary files /dev/null and b/public/storage/uploads/20250520/8a7badb9d47fbbde3e6f4311f79cbd65.jpg differ
diff --git a/public/storage/uploads/20250520/9ab8df52620127ce9758b7bb79319233.jpg b/public/storage/uploads/20250520/9ab8df52620127ce9758b7bb79319233.jpg
new file mode 100644
index 0000000..6f3f2e4
Binary files /dev/null and b/public/storage/uploads/20250520/9ab8df52620127ce9758b7bb79319233.jpg differ
diff --git a/public/storage/uploads/20250520/9ade2fb7276aea70ade928f1c1405605.jpg b/public/storage/uploads/20250520/9ade2fb7276aea70ade928f1c1405605.jpg
new file mode 100644
index 0000000..3aa183a
Binary files /dev/null and b/public/storage/uploads/20250520/9ade2fb7276aea70ade928f1c1405605.jpg differ
diff --git a/public/storage/uploads/20250520/aa44ab808468552ca2e784efe6d75bc3.jpg b/public/storage/uploads/20250520/aa44ab808468552ca2e784efe6d75bc3.jpg
new file mode 100644
index 0000000..dee709e
Binary files /dev/null and b/public/storage/uploads/20250520/aa44ab808468552ca2e784efe6d75bc3.jpg differ
diff --git a/public/storage/uploads/20250520/ad64ed59ab1941572a27bbbacffdc1ee.jpg b/public/storage/uploads/20250520/ad64ed59ab1941572a27bbbacffdc1ee.jpg
new file mode 100644
index 0000000..d35b11e
Binary files /dev/null and b/public/storage/uploads/20250520/ad64ed59ab1941572a27bbbacffdc1ee.jpg differ
diff --git a/public/storage/uploads/20250520/bea0b007e088ae8ee3d200903e304db2.jpg b/public/storage/uploads/20250520/bea0b007e088ae8ee3d200903e304db2.jpg
new file mode 100644
index 0000000..f5a6322
Binary files /dev/null and b/public/storage/uploads/20250520/bea0b007e088ae8ee3d200903e304db2.jpg differ
diff --git a/public/storage/uploads/20250520/ca844cacadbacc0a5ac3f27d918fe54f.jpg b/public/storage/uploads/20250520/ca844cacadbacc0a5ac3f27d918fe54f.jpg
new file mode 100644
index 0000000..d84a6a6
Binary files /dev/null and b/public/storage/uploads/20250520/ca844cacadbacc0a5ac3f27d918fe54f.jpg differ
diff --git a/public/storage/uploads/20250520/dddf6cd1f2a38b9402e829bc3f2cab56.png b/public/storage/uploads/20250520/dddf6cd1f2a38b9402e829bc3f2cab56.png
new file mode 100644
index 0000000..3577170
Binary files /dev/null and b/public/storage/uploads/20250520/dddf6cd1f2a38b9402e829bc3f2cab56.png differ
diff --git a/public/storage/uploads/20250520/e96eea923f8bbead04bb41a9000ac59b.jpg b/public/storage/uploads/20250520/e96eea923f8bbead04bb41a9000ac59b.jpg
new file mode 100644
index 0000000..dee709e
Binary files /dev/null and b/public/storage/uploads/20250520/e96eea923f8bbead04bb41a9000ac59b.jpg differ
diff --git a/runtime/admin/temp/02890b205219b043551566c44acd91e7.php b/runtime/admin/temp/02890b205219b043551566c44acd91e7.php
new file mode 100644
index 0000000..689dbe2
--- /dev/null
+++ b/runtime/admin/temp/02890b205219b043551566c44acd91e7.php
@@ -0,0 +1,131 @@
+
+
+
+
+
+ 后台管理系统
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/runtime/admin/temp/3ad2724e5fb71079a54a9e6219360097.php b/runtime/admin/temp/3ad2724e5fb71079a54a9e6219360097.php
new file mode 100644
index 0000000..cea08a2
--- /dev/null
+++ b/runtime/admin/temp/3ad2724e5fb71079a54a9e6219360097.php
@@ -0,0 +1,568 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/runtime/admin/temp/638faa80cf1298b7198f7a359b25bb22.php b/runtime/admin/temp/638faa80cf1298b7198f7a359b25bb22.php
new file mode 100644
index 0000000..0a5fe32
--- /dev/null
+++ b/runtime/admin/temp/638faa80cf1298b7198f7a359b25bb22.php
@@ -0,0 +1,514 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/runtime/admin/temp/d62c6e06b0a01c1a19438c154e4996b8.php b/runtime/admin/temp/d62c6e06b0a01c1a19438c154e4996b8.php
new file mode 100644
index 0000000..1d8be98
--- /dev/null
+++ b/runtime/admin/temp/d62c6e06b0a01c1a19438c154e4996b8.php
@@ -0,0 +1,301 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/runtime/admin/temp/eacb1914bea2e2591c82e247de8e4b1a.php b/runtime/admin/temp/eacb1914bea2e2591c82e247de8e4b1a.php
new file mode 100644
index 0000000..56a473f
--- /dev/null
+++ b/runtime/admin/temp/eacb1914bea2e2591c82e247de8e4b1a.php
@@ -0,0 +1,627 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/runtime/index/temp/402d23cdf323169a38fb26d3649b6ad5.php b/runtime/index/temp/402d23cdf323169a38fb26d3649b6ad5.php
index 4ac85d9..b1b3e4c 100644
--- a/runtime/index/temp/402d23cdf323169a38fb26d3649b6ad5.php
+++ b/runtime/index/temp/402d23cdf323169a38fb26d3649b6ad5.php
@@ -1,4 +1,4 @@
-
+
@@ -13,6 +13,8 @@
+
+
@@ -569,6 +571,10 @@
Copyright 2025 | All Rights By Yunzer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![<?php echo $game['title']; ?>](<?php echo $game['icon'] ?: '/static/images/default-game.png'; ?>)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Copyright 2025 | All Rights By Yunzer
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file