7 Commits

Author SHA1 Message Date
20b5fd901b 1 2025-09-18 11:59:32 +08:00
e38c00f59c 1 2025-09-18 11:57:52 +08:00
a18706f7d4 分类补充 2025-09-18 11:56:48 +08:00
4ff2ee4a76 移动端帮助中心三级菜单 2025-09-18 11:52:52 +08:00
2ca708fd4a 帮助中心文档三级菜单 2025-09-18 11:21:50 +08:00
29761f551d Merge branch 'dev' of https://gitea.f2b211.com/jsasg/orico-official-website into dev 2025-09-18 11:15:12 +08:00
fdb75e4888 feat: 添加open api client管理命令 2025-09-17 17:48:27 +08:00
6 changed files with 196 additions and 16 deletions

View File

@@ -0,0 +1,42 @@
<?php
declare (strict_types = 1);
namespace app\command\OpenApiMgr;
use oauth\OAuthStorage;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
class AddClient extends Command
{
protected function configure()
{
// 指令配置
$this->setName('OpenApiMgr:AddClient')
->addArgument('salt', Argument::OPTIONAL, "开放API的client_secret密钥的盐值")
->setDescription('开放API的client管理');
}
protected function execute(Input $input, Output $output)
{
$salt = $input->getArgument('salt');
$salt = empty($salt) ? null : trim($salt);
// 指令输出
$oauth = new OAuthStorage($salt);
$client_id = random_str(13, 'all', 0);
$client_secret = random_str(32, 'all', 0);
$ok = $oauth->addClient($client_id, $client_secret, null);
if (!$ok) {
$output->writeln("添加失败");
return;
}
$output->writeln("添加成功:\nClientID: {$client_id}\nClientSecret: {$client_secret}\n");
}
}

View File

@@ -57,6 +57,38 @@
<div class="nars-hlpdt-ml"> <div class="nars-hlpdt-ml">
{notempty name="article_categorys"} {notempty name="article_categorys"}
<div class="nav-tree"> <div class="nav-tree">
<!-- start 三级菜单测试用例 可删-->
<div class="categoryhelp">
<div class="categoryhelp-title">
<div><img src="__IMAGES__/nars-jt.png" class="arrow">
</div>
<span>初次使用</span>
</div>
<ul class="sub-list">
<li class="two-mues">
<a href="/mobile/tops_nas/helper_detail/id/1638.html" class="two-a">
<div><img src="__IMAGES__/nars-jt.png"
class="arrow">
</div>
<span>我是2级</span>
</a>
<ul class="thress-mues">
<li>
<a href="/mobile/tops_nas/helper_detail/id/1635.html"
style="margin-left:18%;padding: 0.4rem;">我是三级</a>
</li>
</ul>
</li>
<li>
<a href="/mobile/tops_nas/helper_detail/id/1635.html">如何将我的NAS设备分享给他人使用</a>
</li>
<li>
<a href="/mobile/tops_nas/helper_detail/id/1639.html">设备安装中常见的问题</a>
</li>
</ul>
</div>
<!-- end 三级菜单测试用例 可删-->
{volist name="article_categorys" id="ac" key="idx"} {volist name="article_categorys" id="ac" key="idx"}
<div class="categoryhelp"> <div class="categoryhelp">
<div class="categoryhelp-title"> <div class="categoryhelp-title">
@@ -78,6 +110,9 @@
</ul> </ul>
</div> </div>
{/volist} {/volist}
</div> </div>
{/notempty} {/notempty}
</div> </div>
@@ -128,6 +163,17 @@
$(this).next('.sub-list').slideToggle(); $(this).next('.sub-list').slideToggle();
$(this).find('.arrow').toggleClass('rotate'); $(this).find('.arrow').toggleClass('rotate');
}); });
//分类二三级交互
$('.two-a').click(function(e) {
e.preventDefault();
e.stopPropagation(); // 阻止事件冒泡
// 切换当前二级菜单的箭头方向
$(this).find('.arrow').toggleClass('rotate');
// 切换对应的三级菜单显示/隐藏
$(this).siblings('.thress-mues').slideToggle();
});
// 点击顶部搜索图标-点击取消关闭 // 点击顶部搜索图标-点击取消关闭
$('#ssico').click(function () { $('#ssico').click(function () {
$('.nhlpapp-pagescate').hide(); $('.nhlpapp-pagescate').hide();

View File

@@ -1,17 +1,17 @@
{extend name="public/nas_base" /} {extend name="public/nas_base" /}
{block name="title"} {block name="title"}
{notempty name="article.seo_title"}<title>{$article.seo_title}</title>{else /}{__BLOCK__}{/notempty} {notempty name="article.seo_title"}<title>{$article.seo_title}</title>{else /}{__BLOCK__}{/notempty}
{/block} {/block}
{block name="seo"} {block name="seo"}
{notempty name="article.seo_keywords"} {notempty name="article.seo_keywords"}
<meta name="keywords" content="{$article.seo_keywords}" /> <meta name="keywords" content="{$article.seo_keywords}" />
<meta name="description" content="{$article.seo_desc}" /> <meta name="description" content="{$article.seo_desc}" />
{else /} {else /}
{__BLOCK__} {__BLOCK__}
{/notempty} {/notempty}
{/block} {/block}
{block name="style"} {block name="style"}
<link rel="stylesheet" href="__CSS__/topic_nas_help-detail.css"/> <link rel="stylesheet" href="__CSS__/topic_nas_help-detail.css" />
{/block} {/block}
{block name="main"} {block name="main"}
<div class="orico_Page_index"> <div class="orico_Page_index">
@@ -32,21 +32,46 @@
<div class="nars-hlpdt-ml"> <div class="nars-hlpdt-ml">
{notempty name="article_categorys"} {notempty name="article_categorys"}
<div class="nav-tree"> <div class="nav-tree">
<!-- start 三级菜单的测试代码 可删-->
<div class="category">
<!-- 一级 -->
<div class="category-title">
<div class="arrow"><img src="helpImg/nars-jt.png" class="arrow" /></div>
<span>初次使用</span>
</div>
<!-- 二级-->
<ul class="sub-list">
<li class="two-mues">
<a href="#" class="two-a">
<div class="arrow"><img src="helpImg/nars-jt.png" class="arrow" /></div>
<span>我是二级</span>
</a>
<!-- 三级-->
<ul class="thress-mues">
<li><a href="#" style="padding-top: 6px;padding-left: 30px;">我是三级?</a></li>
</ul>
</li>
<li><a href="#" style="padding-top: 6px;">拿到产品后我该如何安装使用?</a></li>
<li><a href="#">APP无法下载/下载失败怎么办?</a></li>
</ul>
</div>
<!-- end 三级菜单的测试代码 可删-->
{volist name="article_categorys" id="ac"} {volist name="article_categorys" id="ac"}
<div class="category"> <div class="category">
<div class="category-title"> <div class="category-title">
<div class="arrow {if condition='$ac.id == $Request.get.cid'}rotate{/if}"> <div class="arrow {if condition='$ac.id == $Request.get.cid'}rotate{/if}">
<img src="__IMAGES__/nas-jt.png" class="arrow {if condition='$ac.id == $Request.get.cid'}rotate{/if}" /> <img src="__IMAGES__/nas-jt.png"
class="arrow {if condition='$ac.id == $Request.get.cid'}rotate{/if}" />
</div> </div>
<span>{$ac.name}</span> <span>{$ac.name}</span>
</div> </div>
<ul class="sub-list" {if condition='$ac.id == $Request.get.cid'}style="display: block;"{/if}> <ul class="sub-list" {if condition='$ac.id == $Request.get.cid' }style="display: block;" {/if}>
{volist name="ac.article" id="ar"} {volist name="ac.article" id="ar"}
<li> <li>
<a <a href="{:url('/index/topic/nas/help_detail', ['cid' => $ac.id, 'id' => $ar.id])}" {eq
href="{:url('/index/topic/nas/help_detail', ['cid' => $ac.id, 'id' => $ar.id])}" name="ar.id" value="$Request.get.id" }class="active" {/eq}>
{eq name="ar.id" value="$Request.get.id"}class="active"{/eq}
>
{$ar.title} {$ar.title}
</a> </a>
</li> </li>
@@ -75,10 +100,22 @@
{block name="script"} {block name="script"}
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function () { $(document).ready(function () {
// 一级菜单点击事件
$('.category-title').click(function () { $('.category-title').click(function () {
$(this).next('.sub-list').slideToggle(); $(this).next('.sub-list').slideToggle();
$(this).find('.arrow').toggleClass('rotate'); $(this).find('.arrow').toggleClass('rotate');
}); });
// 二级菜单点击事件
$('.two-a').click(function(e) {
e.preventDefault();
e.stopPropagation(); // 阻止事件冒泡
// 切换当前二级菜单的箭头方向
$(this).find('.arrow').toggleClass('rotate');
// 切换对应的三级菜单显示/隐藏
$(this).siblings('.thress-mues').slideToggle();
});
// 搜索 // 搜索
$(document).on('click', function (e) { $(document).on('click', function (e) {
var target = $(e.target); var target = $(e.target);

View File

@@ -2,9 +2,12 @@
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | 控制台配置 // | 控制台配置
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
return [ return [
// 指令定义 // 指令定义
'commands' => [ 'commands' => [
'data:migrate' => \app\command\DataMigration::class, 'data:migrate' => \app\command\DataMigration::class,
'openapi:addclient' => \app\command\OpenApiMgr\AddClient::class,
], ],
]; ];

View File

@@ -220,3 +220,31 @@
color: #1f2635; color: #1f2635;
border-bottom: 1px solid #1f2635; border-bottom: 1px solid #1f2635;
} }
/*9.18 添加三级样式*/
.narshelpCenterdetail-app .nhlpapp-pagescate .nars-hlpdt-ml .sub-list .two-mues {
position: relative;
}
.narshelpCenterdetail-app .nhlpapp-pagescate .nars-hlpdt-ml .sub-list .two-mues .two-a {
position: relative;
padding-top: 6px;
display: flex;
font-size: 0.95rem !important;
flex-direction: row;
}
.narshelpCenterdetail-app .nhlpapp-pagescate .nars-hlpdt-ml .sub-list .two-mues .two-a:hover {
border-bottom: none;
}
.narshelpCenterdetail-app .nhlpapp-pagescate .nars-hlpdt-ml .sub-list .thress-mues {
display: none;
}
.narshelpCenterdetail-app .nhlpapp-pagescate .nars-hlpdt-ml .sub-list .thress-mues a {
padding-top: 0.375rem;
padding-left: 1.875rem;
}

View File

@@ -215,7 +215,7 @@
} }
.narshelpdetailPc .nars-help-content .nars-hlpdt-mr #title-list .tt { .narshelpdetailPc .nars-help-content .nars-hlpdt-mr #title-list .tt {
font-size: 14px; font-size: 15px;
padding-top: 33px; padding-top: 33px;
padding-bottom: 1rem; padding-bottom: 1rem;
margin: 0; margin: 0;
@@ -258,3 +258,27 @@
/* 将所有属性设置为初始值 */ /* 将所有属性设置为初始值 */
/* 或者使用 all: revert; 恢复到浏览器默认样式,但该属性兼容性不如 initial */ /* 或者使用 all: revert; 恢复到浏览器默认样式,但该属性兼容性不如 initial */
} }
/*9.18 添加三级样式*/
.narshelpdetailPc .nars-help-content .nars-hlpdt-ml .sub-list .two-mues{
position: relative;
}
.narshelpdetailPc .nars-help-content .nars-hlpdt-ml .sub-list .two-mues .two-a{
position: relative;
padding-top: 6px;
padding-bottom: 0.375rem;
display: flex;
font-size: 14px !important;
flex-direction: row;
}
.narshelpdetailPc .nars-help-content .nars-hlpdt-ml .sub-list .two-mues .two-a:hover{
border-bottom:none;
}
.narshelpdetailPc .nars-help-content .nars-hlpdt-ml .sub-list .thress-mues{
display: none;
}
.narshelpdetailPc .nars-help-content .nars-hlpdt-ml .sub-list .thress-mues .thress-mues a{
padding-top: 0.375rem;
padding-left: 1.875rem;
}