101 Commits

Author SHA1 Message Date
ouzhiqiang
9d8e22d270 修改分类 2025-09-19 15:14:55 +08:00
ouzhiqiang
f154f3ddf6 修改分类 2025-09-19 14:59:45 +08:00
ouzhiqiang
2073a27ef7 修改分类 2025-09-19 14:48:10 +08:00
ouzhiqiang
e301fc7e94 修改分类 2025-09-19 14:47:05 +08:00
ouzhiqiang
f9251d944e 修改分类 2025-09-19 14:36:08 +08:00
ouzhiqiang
1e6187801d Merge branch 'dev' of https://gitea.f2b211.com/jsasg/orico-official-website into dev 2025-09-19 14:32:27 +08:00
ouzhiqiang
346dcebba3 修改分类 2025-09-19 14:31:56 +08:00
ab7b23e5d1 Merge branch 'dev' of https://gitea.f2b211.com/jsasg/orico-official-website into dev 2025-09-19 14:13:56 +08:00
325221bd67 1 2025-09-19 14:13:53 +08:00
ouzhiqiang
721e91dc31 修改分类 2025-09-19 11:37:41 +08:00
ouzhiqiang
12e51c6f46 修改分类 2025-09-19 11:22:25 +08:00
ouzhiqiang
8ba9006173 修改分类 2025-09-19 11:17:49 +08:00
ouzhiqiang
a7d413871b 修改分类 2025-09-19 11:09:29 +08:00
ouzhiqiang
ce6a882c17 修改分类 2025-09-19 10:41:41 +08:00
ouzhiqiang
7e7cfeacbc 修改分类 2025-09-19 10:36:26 +08:00
ouzhiqiang
e1961d2a83 修改分类 2025-09-19 10:29:25 +08:00
ouzhiqiang
d313617e2b 修改分类 2025-09-19 10:23:02 +08:00
ouzhiqiang
f0c82c848f 修改分类 2025-09-19 10:04:47 +08:00
ouzhiqiang
f606dc64a5 修改分类 2025-09-19 09:53:40 +08:00
ouzhiqiang
39dc3c4e1a 修改分类 2025-09-19 09:51:29 +08:00
ouzhiqiang
52b265f36e Merge branch 'ozq-dev' into dev 2025-09-18 17:50:21 +08:00
ouzhiqiang
5f9fb74696 修改分类 2025-09-18 17:50:05 +08:00
ouzhiqiang
b251c78b2f Merge branch 'ozq-dev' into dev 2025-09-18 17:47:43 +08:00
ouzhiqiang
2e1c83d46d 修改分类 2025-09-18 17:47:22 +08:00
ouzhiqiang
0265cb0629 Merge branch 'ozq-dev' into dev 2025-09-18 17:23:25 +08:00
ouzhiqiang
68d66b2925 修改分类 2025-09-18 17:23:07 +08:00
ouzhiqiang
601403bf3e Merge branch 'ozq-dev' into dev 2025-09-18 17:16:43 +08:00
ouzhiqiang
bbe2197b38 修改分类 2025-09-18 17:16:24 +08:00
ouzhiqiang
ee955a3674 Merge branch 'ozq-dev' into dev 2025-09-18 17:13:22 +08:00
ouzhiqiang
e45df84312 修改分类 2025-09-18 17:13:04 +08:00
ouzhiqiang
4e0891da97 Merge branch 'ozq-dev' into dev 2025-09-18 17:04:44 +08:00
ouzhiqiang
f9b895732e 修改分类 2025-09-18 17:04:29 +08:00
ouzhiqiang
e72ecd55f4 Merge branch 'ozq-dev' into dev 2025-09-18 17:01:25 +08:00
ouzhiqiang
558b418d18 修改分类 2025-09-18 17:01:08 +08:00
ouzhiqiang
78cbc5de6e Merge branch 'ozq-dev' into dev 2025-09-18 16:56:01 +08:00
ouzhiqiang
f7b610df72 修改分类 2025-09-18 16:55:47 +08:00
ouzhiqiang
b1522a365b Merge branch 'ozq-dev' into dev 2025-09-18 16:53:26 +08:00
ouzhiqiang
48906ec9cd 修改分类 2025-09-18 16:53:06 +08:00
ouzhiqiang
b57cb8dfd6 Merge branch 'ozq-dev' into dev 2025-09-18 16:49:16 +08:00
ouzhiqiang
7d70c55557 修改分类 2025-09-18 16:48:45 +08:00
ouzhiqiang
4fdda8435d Merge branch 'ozq-dev' into dev 2025-09-18 16:11:52 +08:00
ouzhiqiang
7a96809bfe 修改分类 2025-09-18 16:11:36 +08:00
ouzhiqiang
62b3e2798f Merge branch 'ozq-dev' into dev 2025-09-18 16:08:29 +08:00
ouzhiqiang
bfeac736ea 修改分类 2025-09-18 16:08:05 +08:00
ouzhiqiang
74ea50b7e4 Merge branch 'ozq-dev' into dev 2025-09-18 16:01:20 +08:00
ouzhiqiang
8a617c06e9 修改分类 2025-09-18 16:00:49 +08:00
ouzhiqiang
efa8acaf12 Merge branch 'ozq-dev' into dev 2025-09-18 15:39:28 +08:00
ouzhiqiang
d3ff726e90 修改分类 2025-09-18 15:38:59 +08:00
ouzhiqiang
7880c18e85 Merge branch 'dev' of https://gitea.f2b211.com/jsasg/orico-official-website into dev 2025-09-18 15:26:19 +08:00
ouzhiqiang
e80ba5ac7d 修改分类 2025-09-18 15:25:29 +08:00
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
5fde7159e0 Merge branch 'dev' 2025-08-26 14:53:55 +08:00
6068efa03f refactor: 去掉多余目录 2025-08-26 14:53:38 +08:00
738b293ea2 fix: 修复“检测文件地址并根据情况转换为文件系统地址”url为null情况报错问题 2025-08-26 14:53:17 +08:00
a1be105c31 Merge branch 'dev' 2025-08-08 09:18:33 +08:00
03374856e4 fix: 修复产品目录分类树数据问题 2025-08-08 09:18:13 +08:00
f07741ff19 Merge branch 'dev' 2025-08-07 17:08:12 +08:00
c64450d74c fix: admapi - 产品目录同步分类更新时bug修复 2025-08-07 17:07:52 +08:00
e462b38ff9 Merge branch 'dev' 2025-08-07 11:38:17 +08:00
b96021d21d Merge branch 'dev' of https://gitea.f2b211.com/jsasg/orico-official-website into dev 2025-08-07 11:37:49 +08:00
12d6fdc3a6 style:底部样式修改 2025-08-07 11:36:56 +08:00
cd3f651a2a Merge branch 'dev' 2025-08-07 10:20:10 +08:00
1e4b416cac fix: mobile - 底部“联系我们”取值问题 2025-08-07 10:19:45 +08:00
e38446f3fd Merge branch 'dev' 2025-08-07 10:18:06 +08:00
06b9d42ae4 fix: mobile - 底部“联系我们”取值问题 2025-08-07 10:17:24 +08:00
99d78069d5 Merge branch 'dev' 2025-08-07 10:12:04 +08:00
342a3754aa fix: mobile - 底部“联系我们”取值问题 2025-08-07 10:03:50 +08:00
51e9c8ced1 Merge branch 'dev' 2025-08-06 15:35:50 +08:00
b13d481e1e perf openapi 图片地址拼接 2025-08-06 15:35:35 +08:00
da8f204167 Merge branch 'dev' 2025-08-06 12:45:49 +08:00
c1979da1af fix: 后台 - 修改各导出图片等文件地址拼接问题 2025-08-06 11:56:53 +08:00
1802f57906 fix: 后台 产品导出数据问题 2025-08-06 11:40:44 +08:00
3fa3b8fb63 fix: 后台 产品导出数据问题 2025-08-06 11:40:09 +08:00
fb2b1455bc fix: mobile下视频分类地址错误 2025-07-31 10:55:26 +08:00
cc497b2ebc fix: 获取文件系统磁盘未判断“//”情况 2025-07-31 09:03:49 +08:00
2b450a2e9c fix: 首页“场景介绍”无法点击 2025-07-31 09:03:48 +08:00
e266e89a97 1 2025-07-30 17:08:22 +08:00
2a94a7ecec 1 2025-07-30 17:07:37 +08:00
9137335ce3 1 2025-07-30 16:48:54 +08:00
b8946f223a 1 2025-07-30 16:47:15 +08:00
3a8440c2b9 1 2025-07-30 16:44:32 +08:00
c2bba7fb56 1 2025-07-30 16:40:36 +08:00
052570fefa Merge branch 'dev' 2025-07-30 16:33:15 +08:00
09b1f9f14c style:产品详情 2025-07-30 16:13:37 +08:00
37825f88ba .ql-editor 2025-07-30 15:43:42 +08:00
1c7434b591 .ql-editor 2025-07-30 15:42:52 +08:00
585da730ea style:产品详情样式 2025-07-30 15:35:16 +08:00
2ecc51d8a9 Merge branch 'dev' of https://gitea.f2b211.com/jsasg/orico-official-website into dev 2025-07-30 15:25:01 +08:00
ad7148ccfc style:详情样式 2025-07-30 15:24:58 +08:00
5ed692a672 fix: 字段长度限制 2025-07-30 11:12:13 +08:00
5f7156470e Merge branch 'dev' 2025-07-29 17:52:13 +08:00
9b339d6364 Merge branch 'dev' 2025-07-29 16:48:16 +08:00
09f9bfd301 Merge branch 'dev' 2025-07-29 16:47:31 +08:00
d4fa15f671 文章视频限制 2025-07-29 14:13:34 +08:00
6ba7181e3f 文章详情样式调整 2025-07-28 14:50:26 +08:00
25 changed files with 973 additions and 355 deletions

View File

@@ -99,6 +99,7 @@ class ReceiveProductSync
} }
$category = ProductCategoryModel::language($lang_id)->tcoId($tco_category['id'])->find(); $category = ProductCategoryModel::language($lang_id)->tcoId($tco_category['id'])->find();
if (!empty($category)) {
$tco_parent = ProductTcoCategoryModel::language($lang_id)->tcoId($tco_category['tco_pid'])->find(); $tco_parent = ProductTcoCategoryModel::language($lang_id)->tcoId($tco_category['tco_pid'])->find();
if (!empty($tco_parent)) { if (!empty($tco_parent)) {
$parent = ProductCategoryModel::language($lang_id)->tcoId($tco_parent['id'])->find(); $parent = ProductCategoryModel::language($lang_id)->tcoId($tco_parent['id'])->find();
@@ -109,10 +110,11 @@ class ReceiveProductSync
$category['path'] = $parent['path'] . $parent['pid']; $category['path'] = $parent['path'] . $parent['pid'];
$category['level'] = $parent['level'] + 1; $category['level'] = $parent['level'] + 1;
} }
if (!$category->save($category)) { if (!$category->save()) {
throw new \Exception('产品分类更新失败'); throw new \Exception('产品分类更新失败');
} }
} }
}
Db::commit(); Db::commit();
} catch (\Throwable $th) { } catch (\Throwable $th) {

View File

@@ -228,7 +228,7 @@ class Article
private function getExportArticleData() private function getExportArticleData()
{ {
$server = request()->server(); $server = request()->server();
$image_host = $server['REQUEST_SCHEME'] . "://" . $server['SERVER_NAME'] . config('filesystem.disks.public.url') . '/'; $image_host = $server['REQUEST_SCHEME'] . "://" . $server['SERVER_NAME'] . '/';
$param = request()->param(['title', 'category_id', 'release_time']); $param = request()->param(['title', 'category_id', 'release_time']);
$data = ArticleModel::field([ $data = ArticleModel::field([
'*', '*',
@@ -253,7 +253,7 @@ class Article
]) ])
->bindAttr('category', ['category_name' => 'name']) ->bindAttr('category', ['category_name' => 'name'])
->each(function ($item) use($image_host) { ->each(function ($item) use($image_host) {
$item->image = !empty($item->image) ? $image_host . $item->image : ''; $item->image = !empty($item->image) ? url_join($image_host, $item->image) : '';
return $item; return $item;
}); });

View File

@@ -262,11 +262,9 @@ class BannerItem
// 获取导出数据 // 获取导出数据
private function getBannerExportData() private function getBannerExportData()
{ {
$param = request()->param([ $server = request()->server();
'title', $image_host = $server['REQUEST_SCHEME'] . "://" . $server['SERVER_NAME'] . '/';
'banner_id', $param = request()->param(['title', 'banner_id', 'created_at']);
'created_at'
]);
return SysBannerItemModel::alias('item') return SysBannerItemModel::alias('item')
->field([ ->field([
'item.id', 'item.id',
@@ -311,7 +309,13 @@ class BannerItem
} }
}) })
->order(['item.sort' => 'asc', 'item.id' => 'desc']) ->order(['item.sort' => 'asc', 'item.id' => 'desc'])
->select(); ->select()
->each(function($item) use($image_host) {
$item->image = !empty($item->image) ? url_join($image_host, $item->image) : '';
$item->extra_image = !empty($item->extra_image) ? url_join($image_host, $item->extra_image) : '';
$item->video = !empty($item->video) ? url_join($image_host, $item->video) : '';
return $item;
});
} }
// 删除 // 删除

View File

@@ -346,7 +346,7 @@ class Product
private function getExportProductData() private function getExportProductData()
{ {
$server = request()->server(); $server = request()->server();
$image_host = $server['REQUEST_SCHEME'] . "://" . $server['SERVER_NAME'] . config('filesystem.disks.public.url') . '/'; $image_host = $server['REQUEST_SCHEME'] . "://" . $server['SERVER_NAME'] . '/';
$param = request()->param([ $param = request()->param([
'name', 'name',
'spu', 'spu',
@@ -360,10 +360,10 @@ class Product
'spu', 'spu',
'name', 'name',
'short_name', 'short_name',
'CONCAT("' . $image_host . '", `cover_image`)' => 'cover_image', 'cover_image',
'desc', 'desc',
'CONCAT("' . $image_host . '", `video_img`)' => 'video_img', 'video_img',
'CONCAT("' . $image_host . '", `video_url`)' => 'video_url', 'video_url',
'CASE WHEN is_new = 1 THEN "是" ELSE "否" END' => 'is_new', 'CASE WHEN is_new = 1 THEN "是" ELSE "否" END' => 'is_new',
'CASE WHEN is_hot = 1 THEN "是" ELSE "否" END' => 'is_hot', 'CASE WHEN is_hot = 1 THEN "是" ELSE "否" END' => 'is_hot',
'CASE WHEN is_sale = 1 THEN "是" ELSE "否" END' => 'is_sale', 'CASE WHEN is_sale = 1 THEN "是" ELSE "否" END' => 'is_sale',
@@ -390,7 +390,18 @@ class Product
->order(['id' => 'asc']) ->order(['id' => 'asc'])
->select() ->select()
->bindAttr('category', ['category_name' => 'name']) ->bindAttr('category', ['category_name' => 'name'])
->hidden(['category_id', 'category']); ->hidden(['category_id', 'category'])
->each(function($item) use($image_host) {
if (!empty($item["cover_image"])) {
$item["cover_image"] = url_join($image_host, $item["cover_image"]);
}
if (!empty($item["video_img"])) {
$item["video_img"] = url_join($image_host, $item["video_img"]);
}
if (!empty($item["video_url"])) {
$item["video_url"] = url_join($image_host, $item["video_url"]);
}
});
if (!$products->isEmpty()) { if (!$products->isEmpty()) {
// 产品参数 // 产品参数

View File

@@ -16,8 +16,9 @@ class ProductTcoCategory
$param = request()->param(['name']); $param = request()->param(['name']);
$categorys = ProductTcoCategoryModel::field([ $categorys = ProductTcoCategoryModel::field([
'tco_id' => 'id', 'id',
'tco_pid' => 'pid', 'tco_id',
'tco_pid',
'name', 'name',
]) ])
->withSearch(['name'], [ ->withSearch(['name'], [
@@ -25,10 +26,10 @@ class ProductTcoCategory
]) ])
->language(request()->lang_id) ->language(request()->lang_id)
->enabled() ->enabled()
->order(['id' => 'asc']) ->order(['tco_id' => 'asc'])
->select() ->select()
->toArray(); ->toArray();
return success('获取成功', array_to_tree($categorys, 0, 'pid', false)); return success('获取成功', array_to_tree($categorys, 0, 'tco_pid', false, true, 'tco_id'));
} }
} }

View File

@@ -209,9 +209,6 @@ class Video
]); ]);
$domain = request()->domain(); $domain = request()->domain();
$image_path = Config::get('filesystem.disks.image.url');
$video_path = Config::get('filesystem.disks.video.url');
return VideoModel::withoutField([ return VideoModel::withoutField([
'language_id', 'language_id',
'updated_at', 'updated_at',
@@ -230,13 +227,9 @@ class Video
->select() ->select()
->bindAttr('category', ['category_name' => 'name']) ->bindAttr('category', ['category_name' => 'name'])
->hidden(['category_id', 'category']) ->hidden(['category_id', 'category'])
->each(function ($item) use($domain, $image_path, $video_path) { ->each(function ($item) use($domain) {
if (!empty($item->image)) { $item->image = !empty($item->image) ? url_join($domain, $item->image) : '';
$item->image = $domain . $image_path . '/' . $item->image; $item->video = !empty($item->video) ? url_join($domain, $item->video) : '';
}
if (!empty($item->video)) {
$item->video = $domain . $video_path . '/' . $item->video;
}
$item->recommend = $item->recommend == 1 ? '是' : '否'; $item->recommend = $item->recommend == 1 ? '是' : '否';
$item->status = $item->status == 1 ? '启用' : '禁用'; $item->status = $item->status == 1 ? '启用' : '禁用';
return $item; return $item;

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

@@ -80,7 +80,7 @@ if (!function_exists('array_to_tree')) {
* @param bool $keep_pid 是否保留pid * @param bool $keep_pid 是否保留pid
* @return array * @return array
*/ */
function array_to_tree(array $data, int $pid, string $with = 'pid', int|bool $level = 1, bool $keep_pid = true) function array_to_tree(array $data, int $pid, string $with = 'pid', int|bool $level = 1, bool $keep_pid = true, $with_ref = 'id')
{ {
$ret = []; $ret = [];
foreach ($data as $item) { foreach ($data as $item) {
@@ -93,7 +93,7 @@ if (!function_exists('array_to_tree')) {
if ($keep_pid === false) { if ($keep_pid === false) {
unset($item[$with]); unset($item[$with]);
} }
$children = array_to_tree($data, $item['id'], $with, $lv, $keep_pid); $children = array_to_tree($data, $item[$with_ref], $with, $lv, $keep_pid, $with_ref);
if ($children) { if ($children) {
$item['children'] = $children; $item['children'] = $children;
} }
@@ -153,9 +153,13 @@ if (!function_exists('get_filesystem_url')) {
* @param string $disk 磁盘配置 key * @param string $disk 磁盘配置 key
* @return string * @return string
*/ */
function get_filesystem_url(string $url, string $disk): string function get_filesystem_url(string|null $url, string $disk): string
{ {
if (\think\helper\Str::startsWith($url, ['http://', 'https://'])) { if (is_null($url)) {
return '';
}
if (\think\helper\Str::startsWith($url, ['http://', 'https://', '//'])) {
return $url; return $url;
} }
if (empty($disk)) { if (empty($disk)) {
@@ -171,8 +175,12 @@ if (!function_exists('url_filesystem_detect')) {
* @param string $url 文件地址 * @param string $url 文件地址
* @return string * @return string
*/ */
function url_filesystem_detect(string $url): string function url_filesystem_detect(string|null $url): string
{ {
if (is_null($url)) {
return '';
}
$idx = strrpos($url, '.'); $idx = strrpos($url, '.');
if ($idx === false) { if ($idx === false) {
return $url; return $url;
@@ -191,3 +199,36 @@ if (!function_exists('url_filesystem_detect')) {
return $url; return $url;
} }
} }
if (!function_exists('url_join')) {
/**
* 合并URL
* @param string $url 基础URL
* @param string $path 路径
* @param bool $remove_slash 是否移除首尾的斜杠
* @return string
*/
function url_join(string $url, string $path, bool $remove_slash = true): string
{
if (empty($url)) {
return $path;
}
if (empty($path)) {
return $url;
}
if (\think\helper\Str::startsWith($path, ['http://', 'https://', '//'])) {
return $path;
}
if ($remove_slash) {
if (str_ends_with($url, '/') && str_starts_with($path, '/')) {
return $url . substr($path, 1);
}
if (!str_ends_with($url, '/') && !str_starts_with($path, '/')) {
return $url . '/' . $path;
}
}
return $url . $path;
}
}

View File

@@ -192,6 +192,8 @@ class TopicNas extends Common
{ {
// 获取文章分类及文章数据 // 获取文章分类及文章数据
$parent = ArticleCategoryModel::uniqueLabel('CATEGORY_681182e0a4529')->language($this->lang_id)->value('id'); $parent = ArticleCategoryModel::uniqueLabel('CATEGORY_681182e0a4529')->language($this->lang_id)->value('id');
$parent_two = ArticleCategoryModel::parent($parent)->language($this->lang_id)->column('id');//二级分类id
array_push($parent_two,$parent);
$article_categorys = ArticleCategoryModel::with(['article' => function($query) { $article_categorys = ArticleCategoryModel::with(['article' => function($query) {
$query->field(['id', 'title', 'category_id']) $query->field(['id', 'title', 'category_id'])
->order(['sort' => 'asc', 'id' => 'desc']) ->order(['sort' => 'asc', 'id' => 'desc'])
@@ -199,15 +201,48 @@ class TopicNas extends Common
}]) }])
->field([ ->field([
'id', 'id',
'pid',
'name', 'name',
'icon' 'icon'
]) ])
->language($this->lang_id) ->language($this->lang_id)
->parent($parent) // ->parent($parent)
->parentChild($parent_two)
->isShow(true) ->isShow(true)
->order(['sort' => 'asc', 'id' => 'desc']) ->order(['sort' => 'asc', 'id' => 'desc'])
->select(); ->select();
View::assign('article_categorys', $article_categorys); //查询三级分类
$article_categorys_new = [];
$article_categorys_two = [];
// dump($article_categorys->toArray());exit;
if (!$article_categorys->isEmpty()) {
foreach ($article_categorys->toArray() as $kk=>$vv) {
if ( $parent == $vv['pid'] ) {
array_push($article_categorys_new,$vv);
} else {
$article_categorys_two[$vv['pid']][] = $vv;
}
}
if ( !empty($article_categorys_two) ) {
foreach ($article_categorys_new as &$vvv) {
$articles = $vvv['article'];
if ( isset($article_categorys_two[$vvv['id']]) ) {
foreach ($article_categorys_two[$vvv['id']] as $v) {
foreach ($v['article'] as $av) {
if ( count($articles) < 3 ) {
array_push($articles,$av);
}
}
}
}
$vvv['article'] = $articles;
}
}
}
View::assign('article_categorys', $article_categorys_new);
// View::assign('article_categorys', $article_categorys);
$contacts = []; $contacts = [];
// 获取banner数据 // 获取banner数据
@@ -246,20 +281,46 @@ class TopicNas extends Common
// 获取文章分类及文章数据 // 获取文章分类及文章数据
$parent = ArticleCategoryModel::uniqueLabel('CATEGORY_681182e0a4529')->language($this->lang_id)->value('id'); $parent = ArticleCategoryModel::uniqueLabel('CATEGORY_681182e0a4529')->language($this->lang_id)->value('id');
$parent_two = ArticleCategoryModel::parent($parent)->language($this->lang_id)->column('id');//二级分类id
array_push($parent_two,$parent);
$article_categorys = ArticleCategoryModel::with(['article' => function ($query) { $article_categorys = ArticleCategoryModel::with(['article' => function ($query) {
$query->field(['id', 'title', 'category_id'])->order(['sort' => 'asc', 'id' => 'desc']); $query->field(['id', 'title', 'category_id'])->order(['sort' => 'asc', 'id' => 'desc']);
}]) }])
->field([ ->field([
'id', 'id',
'pid',
'name', 'name',
'icon' 'icon'
]) ])
->language($this->lang_id) ->language($this->lang_id)
->parent($parent) // ->parent($parent)
->parentChild($parent_two)
->isShow(true) ->isShow(true)
->order(['sort' => 'asc', 'id' => 'desc']) ->order(['sort' => 'asc', 'id' => 'desc'])
->select(); ->select();
View::assign('article_categorys', $article_categorys); // dump($article_categorys->toArray());exit;
//查询三级分类
$article_categorys_new = [];
$article_categorys_two = [];
if (!$article_categorys->isEmpty()) {
foreach ($article_categorys->toArray() as $kk=>$vv) {
if ( $parent == $vv['pid'] ) {
$vv['child'] = '';
array_push($article_categorys_new,$vv);
} else {
$article_categorys_two[$vv['pid']][] = $vv;
}
}
if ( !empty($article_categorys_two) ) {
foreach ($article_categorys_new as &$vvv) {
$vvv['child'] = isset($article_categorys_two[$vvv['id']])?$article_categorys_two[$vvv['id']]:'';
}
}
}
// dump($article_categorys_new);exit;
// dump($article_categorys_two);exit;
View::assign('article_categorys', $article_categorys_new);
return View::fetch('help_detail'); return View::fetch('help_detail');
} }
@@ -317,8 +378,18 @@ class TopicNas extends Common
->language($this->lang_id) ->language($this->lang_id)
->where('category_id', 'IN', array_column($categorys, 'id')) ->where('category_id', 'IN', array_column($categorys, 'id'))
->select(); ->select();
//查询上级id
$parent_two = ArticleCategoryModel::parentColumn(array_column($categorys, 'id'))->language($this->lang_id)->column('pid','id');//二级分类id
$articles_data = $articles->toArray();
foreach ($articles_data as &$v) {
$v['pid'] = 0;
if ( $parent_two[$v['category_id']] !== $parent ) {
$v['pid'] = $v['category_id'];
$v['category_id'] = $parent_two[$v['category_id']];
}
}
return success('success', $articles->toArray()); return success('success', $articles_data);
} }
/** /**

View File

@@ -46,6 +46,27 @@ class ArticleCategoryModel extends ArticleCategoryBaseModel
$query->where('pid', '=', $parent); $query->where('pid', '=', $parent);
} }
// 所属上级分类范围查询
public function scopeParentChild($query, $parent)
{
if (is_array($parent)) {
$query->where('pid', 'IN', $parent);
return;
}
$query->where('pid', '=', $parent);
}
// 所属上级分类查询
public function scopeParentColumn($query, $parent)
{
if (is_array($parent)) {
$query->where('id', 'IN', $parent);
return;
}
$query->where('id', '=', $parent);
}
// 所属子分类范围查询 // 所属子分类范围查询
public function scopeChild($query, $id, $merge_self = false) public function scopeChild($query, $id, $merge_self = false)
{ {

View File

@@ -14,7 +14,7 @@
<div class="tabs"> <div class="tabs">
{notempty name="video_categorys"} {notempty name="video_categorys"}
{volist name="video_categorys" id="va"} {volist name="video_categorys" id="va"}
<a href="{:url('attachment/index', ['id' => $va.id])}"><div class="tabit active">{$va.name}</div></a> <a href="{:url('attachment/video', ['id' => $va.id])}"><div class="tabit active">{$va.name}</div></a>
{/volist} {/volist}
{/notempty} {/notempty}
</div> </div>

View File

@@ -29,12 +29,13 @@
{/notempty} {/notempty}
<li> <li>
<h3>{:lang_i18n('联系方式')}</h3> <h3>{:lang_i18n('联系方式')}</h3>
{notempty name="contact_config.website_email"} {if condition="!empty($contact_config)"}
<p>{$contact_config.website_email.title} {$contact_config.website_email.value}</p> {volist name="contact_config" id="vo"}
{/notempty} {if condition="$vo.type != 'image'"}
{notempty name="contact_config.website_hotline_office_hours"} <p>{$vo.value}</p>
<p>{$contact_config.website_hotline_office_hours.title} {$contact_config.website_hotline_office_hours.value}</p> {/if}
{/notempty} {/volist}
{/if}
</li> </li>
</ul> </ul>
</div> </div>

View File

@@ -57,6 +57,8 @@
<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">
{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">
@@ -67,6 +69,24 @@
<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.child" id="ad"}
<li class="two-mues">
<a href="#" class="two-a">
<div><img src="__IMAGES__/nars-jt.png"
class="arrow {if condition='$ad.id == $Request.get.pid'}rotate{/if}">
</div>
<span>{$ad.name}</span>
</a>
<ul class="thress-mues" {if condition='$ad.id == $Request.get.pid' }style="display: block;" {/if}>
{volist name="ad.article" id="ae"}
<li>
<a href="{:url('/index/topic/nas/help_detail', ['cid' => $ac.id ,'pid' => $ad.id, 'id' => $ae.id])}"
style="margin-left:18%;padding: 0.4rem;">{$ae.title}</a>
</li>
{/volist}
</ul>
</li>
{/volist}
{volist name="ac.article" id="ar"} {volist name="ac.article" id="ar"}
<li> <li>
<a href="{:url('/index/topic/nas/help_detail', ['cid' => $ac.id , 'id' => $ar.id])}" <a href="{:url('/index/topic/nas/help_detail', ['cid' => $ac.id , 'id' => $ar.id])}"
@@ -78,6 +98,9 @@
</ul> </ul>
</div> </div>
{/volist} {/volist}
</div> </div>
{/notempty} {/notempty}
</div> </div>
@@ -128,6 +151,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

@@ -117,8 +117,8 @@
<p class="subtitle" {notempty name="scene.desc_txt_color" }style="color:{$scene.desc_txt_color};" {/notempty}> <p class="subtitle" {notempty name="scene.desc_txt_color" }style="color:{$scene.desc_txt_color};" {/notempty}>
{$scene.desc|raw}</p> {$scene.desc|raw}</p>
<a class="sceneMore" href="{$scene.link}">{:lang_i18n('了解更多')} ></a> --> <a class="sceneMore" href="{$scene.link}">{:lang_i18n('了解更多')} ></a> -->
</a>
<div style="background-image: url('{$scene.image}');" class="sceneimg"></div> <div style="background-image: url('{$scene.image}');" class="sceneimg"></div>
</a>
</div> </div>
{/volist} {/volist}
</div> </div>

View File

@@ -133,10 +133,12 @@
{/notempty} {/notempty}
</div> </div>
<!-- 富文本渲染--> <!-- 富文本渲染-->
<div class="products_des" id="detail"> <div class="ql-container">
<div class="products_des ql-editor" id="detail">
{$product.detail|default=''|raw} {$product.detail|default=''|raw}
</div> </div>
</div> </div>
</div>
<!-- 关联产品 --> <!-- 关联产品 -->
{notempty name="product_related"} {notempty name="product_related"}
<div class="glcpmain" id="related"> <div class="glcpmain" id="related">

View File

@@ -32,7 +32,7 @@
</div> </div>
<div class="nhlp-tx-list"> <div class="nhlp-tx-list">
{volist name="vo.article" id="va" key="index"} {volist name="vo.article" id="va" key="index"}
<a class="txrow" href="{:url('/index/topic/nas/help_detail', ['cid' => $vo.id, 'id' => $va.id])}"> <a class="txrow" href="{:url('/index/topic/nas/help_detail', ['pid' => $va.category_id,'cid' => $vo.id, 'id' => $va.id])}">
<div class="nhlp-point"></div> <div class="nhlp-point"></div>
<span class="nhlpsp">{$va.title}</span> <span class="nhlpsp">{$va.title}</span>
<span class="narhelpgoimg"> <span class="narhelpgoimg">
@@ -41,7 +41,7 @@
</a> </a>
{/volist} {/volist}
{if condition="count($vo.article) >= 3"} {if condition="count($vo.article) >= 3"}
<a class="ckgdbt" href="{:url('/index/topic/nas/help_detail', ['cid' => $vo.id, 'id' => isset($vo.article[0])?$vo.article[0]['id']:0])}"> <a class="ckgdbt" href="{:url('/index/topic/nas/help_detail', ['cid' => $vo.id, 'id' => isset($vo.article[0])?$vo.article[0]['id']:0,'pid' => isset($vo.article[0])?$vo.article[0]['category_id']:0])}">
{:lang_i18n('查看更多')} > {:lang_i18n('查看更多')} >
</a> </a>
{/if} {/if}

View File

@@ -32,28 +32,42 @@
<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 三级菜单 -->
{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}" /></div>
<img src="__IMAGES__/nas-jt.png" class="arrow {if condition='$ac.id == $Request.get.cid'}rotate{/if}" />
</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.child" id="ad"}
<li> <li class="two-mues">
<a <a href="#" class="two-a">
href="{:url('/index/topic/nas/help_detail', ['cid' => $ac.id, 'id' => $ar.id])}" <div class="arrow {if condition='$ad.id == $Request.get.pid'}rotate{/if}"><img src="__IMAGES__/nas-jt.png" class="arrow {if condition='$ad.id == $Request.get.pid'}rotate{/if}" /></div>
{eq name="ar.id" value="$Request.get.id"}class="active"{/eq} <span>{$ad.name}</span>
>
{$ar.title}
</a> </a>
<ul class="thress-mues" {if condition='$ad.id == $Request.get.pid' }style="display: block;" {/if}>
{volist name="ad.article" id="ae"}
<li><a href="{:url('/index/topic/nas/help_detail', ['cid' => $ac.id,'pid' => $ad.id, 'id' => $ae.id])}" style="padding-top: 6px;padding-left: 30px;" {eq
name="ae.id" value="$Request.get.id" }class="active" {/eq}>{$ae.title}</a></li>
{/volist}
</ul>
<!-- 三级-->
</li> </li>
{/volist} {/volist}
{volist name="ac.article" id="ar"}
<li><a href="{:url('/index/topic/nas/help_detail', ['cid' => $ac.id, 'id' => $ar.id])}" style="padding-top: 6px;" {eq
name="ar.id" value="$Request.get.id" }class="active" {/eq}>{$ar.title}</a></li>
{/volist}
</ul> </ul>
</div> </div>
{/volist} {/volist}
<!-- end 三级菜单 -->
</div> </div>
{/notempty} {/notempty}
</div> </div>
@@ -75,10 +89,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);
@@ -109,7 +135,7 @@
html = '<ul>' html = '<ul>'
$.each(r.data, function (k, v) { $.each(r.data, function (k, v) {
html += html +=
'<li><a href="{:url(\'/index/topic/nas/help_detail\')}?cid=' + v.category_id + '&id=' + v.id + '">' + v.title + '</a></li>' '<li><a href="{:url(\'/index/topic/nas/help_detail\')}?cid=' + v.category_id + '&id=' + v.id + '&pid=' + v.pid + '">' + v.title + '</a></li>'
}) })
html += '</ul>' html += '</ul>'
} }

View File

@@ -18,7 +18,7 @@ if (!function_exists('image_domain_concat')) {
return $path; return $path;
} }
return rtrim($domain, '/') . '/' . ltrim($path, '/'); return url_join($domain, $path);
} }
} }
@@ -39,7 +39,7 @@ if (!function_exists('video_domain_concat')) {
return $path; return $path;
} }
return rtrim($domain, '/') . '/' . ltrim($path, '/'); return url_join($domain, $path);
} }
} }

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

@@ -1,2 +0,0 @@
*
!.gitignore

View File

@@ -1278,7 +1278,7 @@ video img {
margin-left: 1rem; margin-left: 1rem;
} }
.foot-cate li { .foot-cate li {
width: 50%; min-width: 50%;
display: inline-block; display: inline-block;
float: left; float: left;
color: #fff; color: #fff;
@@ -2342,6 +2342,59 @@ video img {
margin-bottom: 1.3rem; margin-bottom: 1.3rem;
} }
.products_des {
width: 100%;
margin-bottom: 50px;
}
.products_des img {
width: 100%;
}
.de_t_n {
font-size: 1.5em;
color: #333;
}
.detail_title {
text-align: center;
padding: 2% 0;
}
.detail_title p {
line-height: 2em;
}
.detail_con_a {
margin: auto;
overflow: hidden;
}
.lj_detail_text,
.lj_detail_texts {
font-size: 0.875em;
}
.lj_detail_text p {
line-height: 1.6em;
padding: 0.5% 0;
}
/*seo-pro*/
.seo-pro h3 {
font-size: 1.5em;
text-align: center;
color: #333;
margin: 2% 0 1%;
line-height: 1.2;
font-weight: 400;
}
.seo-pro p {
text-align: center;
margin: 0 0 11px;
}
.seo-pro a {
color: #333;
text-decoration: none;
}
.sa_blue,
.sa_blue a,
.seo-pro a:hover {
color: #009fdf;
}
/*两列*/ /*两列*/
.list_two { .list_two {
width: 100%; width: 100%;

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

@@ -39,6 +39,7 @@
transition: all 0.2s linear; transition: all 0.2s linear;
-webkit-transition: all 0.2s linear; -webkit-transition: all 0.2s linear;
} }
body { body {
font-size: 1.2em; font-size: 1.2em;
font-weight: 400; font-weight: 400;
@@ -153,12 +154,15 @@ a {
*::-moz-scrollbar-button:vertical:increment { *::-moz-scrollbar-button:vertical:increment {
display: none; display: none;
} }
div { div {
display: block; display: block;
} }
#header { #header {
height: 60px; height: 60px;
} }
.backtop { .backtop {
position: fixed; position: fixed;
right: 1.25rem; right: 1.25rem;
@@ -174,47 +178,58 @@ div{
cursor: pointer; cursor: pointer;
border: 1px solid rgb(241, 241, 241); border: 1px solid rgb(241, 241, 241);
} }
.backtop .ictop { .backtop .ictop {
height: 1.125rem; height: 1.125rem;
width: 0.9375rem; width: 0.9375rem;
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
} }
/*屏幕兼容性*/ /*屏幕兼容性*/
@media screen and (min-width:150px) and (max-width:749px) { @media screen and (min-width:150px) and (max-width:749px) {
body { body {
zoom: 0.6; zoom: 0.6;
} }
} }
@media screen and (min-width:750px) and (max-width:1280px) { @media screen and (min-width:750px) and (max-width:1280px) {
body { body {
zoom: 0.75; zoom: 0.75;
} }
} }
@media screen and (min-width:1281px) and (max-width:1360px) { @media screen and (min-width:1281px) and (max-width:1360px) {
body { body {
zoom: 0.8; zoom: 0.8;
} }
} }
@media screen and (min-width:1361px) and (max-width:1460px) { @media screen and (min-width:1361px) and (max-width:1460px) {
body { body {
zoom: 0.85; zoom: 0.85;
} }
} }
@media screen and (min-width:1461px) and (max-width:1660px) { @media screen and (min-width:1461px) and (max-width:1660px) {
body { body {
zoom: 0.9; zoom: 0.9;
} }
} }
@media screen and (min-width:1661px) and (max-width:1760px) { @media screen and (min-width:1661px) and (max-width:1760px) {
body { body {
zoom: 0.95; zoom: 0.95;
} }
} }
@media screen and (min-width:1761px) and (max-width:1960px) {} @media screen and (min-width:1761px) and (max-width:1960px) {}
@media screen and (min-width:1980px) {} @media screen and (min-width:1980px) {}
/*编辑器样式*/ /*编辑器样式*/
@charset "UTF-8";.ql-container { @charset "UTF-8";
.ql-container {
box-sizing: border-box; box-sizing: border-box;
font-family: Helvetica, Arial, sans-serif; font-family: Helvetica, Arial, sans-serif;
font-size: 13px; font-size: 13px;
@@ -223,12 +238,18 @@ div{
position: relative position: relative
} }
.ql-container.ql-disabled .ql-tooltip {
visibility: hidden
}
.ql-editor video { .ql-editor video {
max-width: 100% !important; max-width: 100% !important;
} }
.ql-container.ql-disabled .ql-tooltip {
visibility: hidden
}
.ql-editor video {
max-width: 100% !important;
}
.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before { .ql-container.ql-disabled .ql-editor ul[data-checked]>li:before {
pointer-events: none pointer-events: none
} }
@@ -264,17 +285,29 @@ div{
cursor: text cursor: text
} }
.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6 { .ql-editor p,
.ql-editor ol,
.ql-editor ul,
.ql-editor pre,
.ql-editor blockquote,
.ql-editor h1,
.ql-editor h2,
.ql-editor h3,
.ql-editor h4,
.ql-editor h5,
.ql-editor h6 {
margin: 0; margin: 0;
padding: 0; padding: 0;
counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9 counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9
} }
.ql-editor ol,.ql-editor ul { .ql-editor ol,
.ql-editor ul {
padding-left: 1.5em padding-left: 1.5em
} }
.ql-editor ol>li,.ql-editor ul>li { .ql-editor ol>li,
.ql-editor ul>li {
list-style-type: none list-style-type: none
} }
@@ -282,15 +315,18 @@ div{
content: "•" content: "•"
} }
.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false] { .ql-editor ul[data-checked=true],
.ql-editor ul[data-checked=false] {
pointer-events: none pointer-events: none
} }
.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li * { .ql-editor ul[data-checked=true]>li *,
.ql-editor ul[data-checked=false]>li * {
pointer-events: all pointer-events: all
} }
.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before { .ql-editor ul[data-checked=true]>li:before,
.ql-editor ul[data-checked=false]>li:before {
color: #777; color: #777;
cursor: pointer; cursor: pointer;
pointer-events: all pointer-events: all
@@ -321,11 +357,13 @@ div{
margin-right: -1.5em margin-right: -1.5em
} }
.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl) { .ql-editor ol li:not(.ql-direction-rtl),
.ql-editor ul li:not(.ql-direction-rtl) {
padding-left: 1.5em padding-left: 1.5em
} }
.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl { .ql-editor ol li.ql-direction-rtl,
.ql-editor ul li.ql-direction-rtl {
padding-right: 1.5em padding-right: 1.5em
} }
@@ -702,13 +740,15 @@ div{
right: 15px right: 15px
} }
.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after { .ql-snow.ql-toolbar:after,
.ql-snow .ql-toolbar:after {
clear: both; clear: both;
content: ""; content: "";
display: table display: table
} }
.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button { .ql-snow.ql-toolbar button,
.ql-snow .ql-toolbar button {
background: none; background: none;
border: none; border: none;
cursor: pointer; cursor: pointer;
@@ -721,51 +761,97 @@ div{
margin-right: 1px margin-right: 1px
} }
.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg { .ql-snow.ql-toolbar button svg,
.ql-snow .ql-toolbar button svg {
float: left; float: left;
height: 100% height: 100%
} }
.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover { .ql-snow.ql-toolbar button:active:hover,
.ql-snow .ql-toolbar button:active:hover {
outline: none outline: none
} }
.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file] { .ql-snow.ql-toolbar input.ql-image[type=file],
.ql-snow .ql-toolbar input.ql-image[type=file] {
display: none display: none
} }
.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover { .ql-snow.ql-toolbar button:hover,
.ql-snow .ql-toolbar button:hover,
.ql-snow.ql-toolbar button:focus,
.ql-snow .ql-toolbar button:focus,
.ql-snow.ql-toolbar .ql-picker-label:hover,
.ql-snow .ql-toolbar .ql-picker-label:hover,
.ql-snow.ql-toolbar .ql-picker-item:hover,
.ql-snow .ql-toolbar .ql-picker-item:hover {
background-color: #f3f4f6 background-color: #f3f4f6
} }
.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected { .ql-snow.ql-toolbar button.ql-active,
.ql-snow .ql-toolbar button.ql-active,
.ql-snow.ql-toolbar .ql-picker-label.ql-active,
.ql-snow .ql-toolbar .ql-picker-label.ql-active,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected {
background-color: #dbeafe; background-color: #dbeafe;
color: #2563eb color: #2563eb
} }
.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { .ql-snow.ql-toolbar button.ql-active .ql-fill,
.ql-snow .ql-toolbar button.ql-active .ql-fill,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,
.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
fill: #2563eb fill: #2563eb
} }
.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { .ql-snow.ql-toolbar button.ql-active .ql-stroke,
.ql-snow .ql-toolbar button.ql-active .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,
.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
stroke: #2563eb stroke: #2563eb
} }
@media (pointer: coarse) { @media (pointer: coarse) {
.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active) {
.ql-snow.ql-toolbar button:hover:not(.ql-active),
.ql-snow .ql-toolbar button:hover:not(.ql-active) {
color: #4b5563 color: #4b5563
} }
.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill { .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,
.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,
.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,
.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
fill: #4b5563 fill: #4b5563
} }
.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter { .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,
.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,
.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,
.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
stroke: #4b5563 stroke: #4b5563
} }
} }
.ql-snow,.ql-snow * { .ql-snow,
.ql-snow * {
box-sizing: border-box box-sizing: border-box
} }
@@ -773,7 +859,8 @@ div{
display: none display: none
} }
.ql-snow .ql-out-bottom,.ql-snow .ql-out-top { .ql-snow .ql-out-bottom,
.ql-snow .ql-out-top {
visibility: hidden visibility: hidden
} }
@@ -817,7 +904,8 @@ div{
stroke-width: 2 stroke-width: 2
} }
.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill { .ql-snow .ql-fill,
.ql-snow .ql-stroke.ql-fill {
fill: #4b5563 fill: #4b5563
} }
@@ -829,7 +917,8 @@ div{
fill-rule: evenodd fill-rule: evenodd
} }
.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin { .ql-snow .ql-thin,
.ql-snow .ql-stroke.ql-thin {
stroke-width: 1 stroke-width: 1
} }
@@ -884,7 +973,8 @@ div{
padding-left: 16px padding-left: 16px
} }
.ql-snow .ql-editor code,.ql-snow .ql-editor pre { .ql-snow .ql-editor code,
.ql-snow .ql-editor pre {
background-color: #f0f0f0; background-color: #f0f0f0;
border-radius: 3px border-radius: 3px
} }
@@ -973,15 +1063,18 @@ div{
z-index: 1 z-index: 1
} }
.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker { .ql-snow .ql-color-picker,
.ql-snow .ql-icon-picker {
width: 28px width: 28px
} }
.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label { .ql-snow .ql-color-picker .ql-picker-label,
.ql-snow .ql-icon-picker .ql-picker-label {
padding: 2px 4px padding: 2px 4px
} }
.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg { .ql-snow .ql-color-picker .ql-picker-label svg,
.ql-snow .ql-icon-picker .ql-picker-label svg {
right: 4px right: 4px
} }
@@ -1018,7 +1111,12 @@ div{
width: 18px width: 18px
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,
.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,
.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before {
content: attr(data-label) content: attr(data-label)
} }
@@ -1026,31 +1124,38 @@ div{
width: 98px width: 98px
} }
.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before { .ql-snow .ql-picker.ql-header .ql-picker-label:before,
.ql-snow .ql-picker.ql-header .ql-picker-item:before {
content: "Normal" content: "Normal"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before {
content: "Heading 1" content: "Heading 1"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before {
content: "Heading 2" content: "Heading 2"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before {
content: "Heading 3" content: "Heading 3"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before {
content: "Heading 4" content: "Heading 4"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before {
content: "Heading 5" content: "Heading 5"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before {
content: "Heading 6" content: "Heading 6"
} }
@@ -1082,15 +1187,18 @@ div{
width: 108px width: 108px
} }
.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before { .ql-snow .ql-picker.ql-font .ql-picker-label:before,
.ql-snow .ql-picker.ql-font .ql-picker-item:before {
content: "Sans Serif" content: "Sans Serif"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before {
content: "Serif" content: "Serif"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before {
content: "Monospace" content: "Monospace"
} }
@@ -1106,19 +1214,23 @@ div{
width: 98px width: 98px
} }
.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before { .ql-snow .ql-picker.ql-size .ql-picker-label:before,
.ql-snow .ql-picker.ql-size .ql-picker-item:before {
content: "Normal" content: "Normal"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before {
content: "Small" content: "Small"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before {
content: "Large" content: "Large"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before {
content: "Huge" content: "Huge"
} }
@@ -1162,11 +1274,13 @@ div{
box-shadow: #0003 0 2px 8px box-shadow: #0003 0 2px 8px
} }
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options { .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
border-color: #d1d5db border-color: #d1d5db
} }
.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover { .ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,
.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
border-color: #000 border-color: #000
} }
@@ -1223,7 +1337,8 @@ div{
line-height: 26px line-height: 26px
} }
.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove { .ql-snow .ql-tooltip.ql-editing a.ql-preview,
.ql-snow .ql-tooltip.ql-editing a.ql-remove {
display: none display: none
} }
@@ -1257,7 +1372,8 @@ div{
border: 1px solid #d1d5db border: 1px solid #d1d5db
} }
.editor,.ql-toolbar { .editor,
.ql-toolbar {
line-height: normal !important; line-height: normal !important;
white-space: pre-wrap !important white-space: pre-wrap !important
} }
@@ -1286,98 +1402,120 @@ div{
content: "请输入视频地址:" content: "请输入视频地址:"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before { .ql-snow .ql-picker.ql-size .ql-picker-label:before,
.ql-snow .ql-picker.ql-size .ql-picker-item:before {
content: "12px" content: "12px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before {
content: "10px" content: "10px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before {
content: "18px" content: "18px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before {
content: "32px" content: "32px"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before { .ql-snow .ql-picker.ql-header .ql-picker-label:before,
.ql-snow .ql-picker.ql-header .ql-picker-item:before {
content: "文本" content: "文本"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before {
content: "标题1" content: "标题1"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before {
content: "标题2" content: "标题2"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before {
content: "标题3" content: "标题3"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before {
content: "标题4" content: "标题4"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before {
content: "标题5" content: "标题5"
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before { .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before {
content: "标题6" content: "标题6"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before { .ql-snow .ql-picker.ql-font .ql-picker-label:before,
.ql-snow .ql-picker.ql-font .ql-picker-item:before {
content: "标准字体" content: "标准字体"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before {
content: "衬线字体" content: "衬线字体"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before {
content: "等宽字体" content: "等宽字体"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimSun]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimSun]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimSun]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimSun]:before {
font-family: SimSun, sans-serif; font-family: SimSun, sans-serif;
content: "宋体" content: "宋体"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimHei]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimHei]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimHei]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimHei]:before {
font-family: SimHei, sans-serif; font-family: SimHei, sans-serif;
content: "黑体" content: "黑体"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Microsoft-YaHei]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Microsoft-YaHei]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Microsoft-YaHei]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Microsoft-YaHei]:before {
font-family: Microsoft YaHei, sans-serif; font-family: Microsoft YaHei, sans-serif;
content: "微软雅黑" content: "微软雅黑"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=KaiTi]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=KaiTi]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=KaiTi]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=KaiTi]:before {
font-family: KaiTi, sans-serif; font-family: KaiTi, sans-serif;
content: "楷体" content: "楷体"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=FangSong]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=FangSong]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=FangSong]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=FangSong]:before {
font-family: FangSong, sans-serif; font-family: FangSong, sans-serif;
content: "仿宋" content: "仿宋"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Arial]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Arial]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Arial]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Arial]:before {
font-family: Arial, sans-serif; font-family: Arial, sans-serif;
content: "Arial" content: "Arial"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Times-New-Roman]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Times-New-Roman]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Times-New-Roman]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Times-New-Roman]:before {
font-family: Times New Roman, sans-serif; font-family: Times New Roman, sans-serif;
content: "Times New Roman" content: "Times New Roman"
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=sans-serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=sans-serif]:before { .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=sans-serif]:before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=sans-serif]:before {
font-family: sans-serif; font-family: sans-serif;
content: "sans-serif" content: "sans-serif"
} }
@@ -1414,47 +1552,58 @@ div{
font-family: sans-serif font-family: sans-serif
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="12px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="12px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="12px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="12px"]:before {
content: "12px" content: "12px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]:before {
content: "14px" content: "14px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="16px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="16px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16px"]:before {
content: "16px" content: "16px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="18px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="18px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18px"]:before {
content: "18px" content: "18px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="20px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="20px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="20px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="20px"]:before {
content: "20px" content: "20px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="22px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="22px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="22px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="22px"]:before {
content: "22px" content: "22px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="24px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="24px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="24px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="24px"]:before {
content: "24px" content: "24px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="26px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="26px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="26px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="26px"]:before {
content: "26px" content: "26px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="28px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="28px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="28px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="28px"]:before {
content: "28px" content: "28px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="30px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="30px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="30px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="30px"]:before {
content: "30px" content: "30px"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="32px"]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="32px"]:before { .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="32px"]:before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="32px"]:before {
content: "32px" content: "32px"
} }
@@ -1467,17 +1616,20 @@ div{
border: 1px solid #dddddd; border: 1px solid #dddddd;
border-radius: 4px; border-radius: 4px;
} }
/* 用伪元素添加图标(可替换为自己的图标) */ /* 用伪元素添加图标(可替换为自己的图标) */
.ql-tabs::before { .ql-tabs::before {
font-size: 16px; font-size: 16px;
content: "T"; content: "T";
/* 用 emoji 或字体图标 */ /* 用 emoji 或字体图标 */
} }
.quill-tab-list { .quill-tab-list {
display: flex; display: flex;
background-color: #f8f9fa; background-color: #f8f9fa;
border-bottom: 1px solid #dddddd; border-bottom: 1px solid #dddddd;
} }
.quill-tab-list .quill-tab-button { .quill-tab-list .quill-tab-button {
padding: 10px 15px; padding: 10px 15px;
font-weight: 500; font-weight: 500;
@@ -1486,11 +1638,13 @@ div{
border: none; border: none;
transition: background-color 0.2s; transition: background-color 0.2s;
} }
.quill-tab-list .quill-tab-button.active { .quill-tab-list .quill-tab-button.active {
color: #007bff; color: #007bff;
background-color: white; background-color: white;
border-bottom: 2px solid #007bff; border-bottom: 2px solid #007bff;
} }
.quill-tab-list .quill-tab-edit-btn { .quill-tab-list .quill-tab-edit-btn {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -1501,9 +1655,11 @@ div{
background: transparent; background: transparent;
border: none; border: none;
} }
.quill-tab-list .quill-tab-edit-btn:hover { .quill-tab-list .quill-tab-edit-btn:hover {
color: #007bff; color: #007bff;
} }
.quill-tab-button { .quill-tab-button {
padding: 10px 15px; padding: 10px 15px;
font-weight: 500; font-weight: 500;
@@ -1512,25 +1668,31 @@ div{
border: none; border: none;
transition: background-color 0.2s; transition: background-color 0.2s;
} }
.quill-tab-button.active { .quill-tab-button.active {
color: #007bff; color: #007bff;
background-color: white; background-color: white;
border-bottom: 2px solid #007bff; border-bottom: 2px solid #007bff;
} }
.quill-tab-content-list { .quill-tab-content-list {
padding: 15px; padding: 15px;
} }
.quill-tab-content { .quill-tab-content {
display: none; display: none;
} }
.quill-tab-content.active { .quill-tab-content.active {
display: block; display: block;
} }
/* 标签页标题编辑样式 */ /* 标签页标题编辑样式 */
.tab-title-edit { .tab-title-edit {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.tab-title-edit .title-text { .tab-title-edit .title-text {
display: inline-block; display: inline-block;
min-width: 60px; min-width: 60px;
@@ -1540,8 +1702,108 @@ div{
white-space: nowrap; white-space: nowrap;
cursor: pointer; cursor: pointer;
} }
.tab-title-edit .title-input { .tab-title-edit .title-input {
width: 100px; width: 100px;
margin: -2px 0; margin: -2px 0;
/* 与标签对齐 */ /* 与标签对齐 */
} }
/*详情样式*/
.o_detail_all {
text-align: center;
background-color: #fff;
overflow: hidden;
white-space: normal !important;
}
.o_detail_title {
font-size: 2.25em;
color: #101010;
margin-top: 2vw;
font-weight: 600;
margin-bottom: 1.25vw;
line-height: 1.2em;
text-align: center;
background-color: #fff;
overflow: hidden;
white-space: normal !important;
}
.o_detail_small {
font-size: 1.5em;
color: #333;
margin-bottom: 0.7vw;
white-space: normal !important;
}
.o_detail_text {
font-size: 1.125em;
color: #737373;
line-height: 1.5em;
width: 80%;
margin-left: auto;
margin-right: auto;
margin-bottom: 0.7vw;
white-space: normal !important;
}
.products_des {
width: 100%;
margin-bottom: 50px;
}
.products_des img {
width: 100%;
}
.de_t_n {
font-size: 1.5em;
color: #333;
}
.detail_title {
text-align: center;
padding: 2% 0;
}
.detail_title p {
line-height: 2em;
}
.detail_con_a {
margin: auto;
overflow: hidden;
}
.lj_detail_text,
.lj_detail_texts {
font-size: 0.875em;
}
.lj_detail_text p {
line-height: 1.6em;
padding: 0.5% 0;
}
/*seo-pro*/
.seo-pro h3 {
font-size: 1.5em;
text-align: center;
color: #333;
margin: 2% 0 1%;
line-height: 1.2;
font-weight: 400;
}
.seo-pro p {
text-align: center;
margin: 0 0 11px;
}
.seo-pro a {
color: #333;
text-decoration: none;
}
.sa_blue,
.sa_blue a,
.seo-pro a:hover {
color: #009fdf;
}

View File

@@ -135,6 +135,7 @@
transform: rotate(0deg); transform: rotate(0deg);
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-direction: column-reverse;
} }
.narshelpdetailPc .nars-help-content .nars-hlpdt-ml .arrow .nars-jt { .narshelpdetailPc .nars-help-content .nars-hlpdt-ml .arrow .nars-jt {
@@ -215,7 +216,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 +259,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;
}