1 Commits

Author SHA1 Message Date
a3da3c3ae4 refactor: 七牛云上传 2025-07-25 17:35:43 +08:00
28 changed files with 341 additions and 730 deletions

View File

@@ -26,13 +26,6 @@ TTL=3600
REFRESH_TTL=20160 REFRESH_TTL=20160
SECRET=b43e6276644ed60e65c50d1b324ba10b SECRET=b43e6276644ed60e65c50d1b324ba10b
# 七牛云存储配置
[QINIU_CLOUD]
BUCKET = orico-official-website
BASE_URL = //ow.static.f2b211.com
ACCESS_KEY = dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms
SECRET_KEY = KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q
# 后台不需要登录的接口 # 后台不需要登录的接口
[ADMIN_AUTH] [ADMIN_AUTH]
WHITE_LIST[] = v1/user/login WHITE_LIST[] = v1/user/login

2
.gitignore vendored
View File

@@ -8,8 +8,6 @@ Thumbs.db
.env.local .env.local
.env.prod .env.prod
public/dist
public/opendoc
/.idea /.idea
/.vscode /.vscode
/vendor /vendor

View File

@@ -99,7 +99,6 @@ 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();
@@ -110,11 +109,10 @@ 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()) { if (!$category->save($category)) {
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'] . '/'; $image_host = $server['REQUEST_SCHEME'] . "://" . $server['SERVER_NAME'] . config('filesystem.disks.public.url') . '/';
$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) ? url_join($image_host, $item->image) : ''; $item->image = !empty($item->image) ? $image_host . $item->image : '';
return $item; return $item;
}); });

View File

@@ -262,9 +262,11 @@ class BannerItem
// 获取导出数据 // 获取导出数据
private function getBannerExportData() private function getBannerExportData()
{ {
$server = request()->server(); $param = request()->param([
$image_host = $server['REQUEST_SCHEME'] . "://" . $server['SERVER_NAME'] . '/'; 'title',
$param = request()->param(['title', 'banner_id', 'created_at']); 'banner_id',
'created_at'
]);
return SysBannerItemModel::alias('item') return SysBannerItemModel::alias('item')
->field([ ->field([
'item.id', 'item.id',
@@ -309,13 +311,7 @@ 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'] . '/'; $image_host = $server['REQUEST_SCHEME'] . "://" . $server['SERVER_NAME'] . config('filesystem.disks.public.url') . '/';
$param = request()->param([ $param = request()->param([
'name', 'name',
'spu', 'spu',
@@ -360,10 +360,10 @@ class Product
'spu', 'spu',
'name', 'name',
'short_name', 'short_name',
'cover_image', 'CONCAT("' . $image_host . '", `cover_image`)' => 'cover_image',
'desc', 'desc',
'video_img', 'CONCAT("' . $image_host . '", `video_img`)' => 'video_img',
'video_url', 'CONCAT("' . $image_host . '", `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,18 +390,7 @@ 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,9 +16,8 @@ class ProductTcoCategory
$param = request()->param(['name']); $param = request()->param(['name']);
$categorys = ProductTcoCategoryModel::field([ $categorys = ProductTcoCategoryModel::field([
'id', 'tco_id' => 'id',
'tco_id', 'tco_pid' => 'pid',
'tco_pid',
'name', 'name',
]) ])
->withSearch(['name'], [ ->withSearch(['name'], [
@@ -26,10 +25,10 @@ class ProductTcoCategory
]) ])
->language(request()->lang_id) ->language(request()->lang_id)
->enabled() ->enabled()
->order(['tco_id' => 'asc']) ->order(['id' => 'asc'])
->select() ->select()
->toArray(); ->toArray();
return success('获取成功', array_to_tree($categorys, 0, 'tco_pid', false, true, 'tco_id')); return success('获取成功', array_to_tree($categorys, 0, 'pid', false));
} }
} }

View File

@@ -209,6 +209,9 @@ 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',
@@ -227,9 +230,13 @@ 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) { ->each(function ($item) use($domain, $image_path, $video_path) {
$item->image = !empty($item->image) ? url_join($domain, $item->image) : ''; if (!empty($item->image)) {
$item->video = !empty($item->video) ? url_join($domain, $item->video) : ''; $item->image = $domain . $image_path . '/' . $item->image;
}
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

@@ -25,7 +25,7 @@ class SysBannerItemValidate extends Validate
'extra_image' => 'max:255', 'extra_image' => 'max:255',
'video' => 'max:255', 'video' => 'max:255',
'link_to' => 'requireIf:type,image|max:64|in:article,article_category,product,product_category,system_page,custom', 'link_to' => 'requireIf:type,image|max:64|in:article,article_category,product,product_category,system_page,custom',
'link' => 'max:510', 'link' => 'max:255',
'sort' => 'integer', 'sort' => 'integer',
'status' => 'in:-1,1' 'status' => 'in:-1,1'
]; ];
@@ -54,7 +54,7 @@ class SysBannerItemValidate extends Validate
'link_to.requireIf' => '链接类型不能为空', 'link_to.requireIf' => '链接类型不能为空',
'link_to.max' => '链接类型最多不能超过64个字符', 'link_to.max' => '链接类型最多不能超过64个字符',
'link_to.in' => '链接类型必须是article,article_category,product,product_category,system_page,custom中之一', 'link_to.in' => '链接类型必须是article,article_category,product,product_category,system_page,custom中之一',
'link.max' => '链接最多不能超过512个字符', 'link.max' => '链接最多不能超过255个字符',
'sort.integer' => '排序值必须是整数', 'sort.integer' => '排序值必须是整数',
'status.in' => '状态必须是-1或1' 'status.in' => '状态必须是-1或1'
]; ];

View File

@@ -17,7 +17,7 @@ class VideoValidate extends Validate
'id' => 'require|integer', 'id' => 'require|integer',
'language_id' => 'require|integer', 'language_id' => 'require|integer',
'category_id' => 'require|integer', 'category_id' => 'require|integer',
'name' => 'require|max:128', 'name' => 'require|max:64',
'desc' => 'max:512', 'desc' => 'max:512',
'image' => 'max:125', 'image' => 'max:125',
'video' => 'max:125', 'video' => 'max:125',
@@ -43,7 +43,7 @@ class VideoValidate extends Validate
'category_id.require' => '分类不能为空', 'category_id.require' => '分类不能为空',
'category_id.integer' => '分类参数类型错误', 'category_id.integer' => '分类参数类型错误',
'name.require' => '名称不能为空', 'name.require' => '名称不能为空',
'name.max' => '名称不能超过128个字符', 'name.max' => '名称不能超过64个字符',
'desc.max' => '描述不能超过512个字符', 'desc.max' => '描述不能超过512个字符',
'image.max' => '图片不能超过125个字符', 'image.max' => '图片不能超过125个字符',
'video.max' => '视频不能超过125个字符', 'video.max' => '视频不能超过125个字符',

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, $with_ref = 'id') function array_to_tree(array $data, int $pid, string $with = 'pid', int|bool $level = 1, bool $keep_pid = true)
{ {
$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[$with_ref], $with, $lv, $keep_pid, $with_ref); $children = array_to_tree($data, $item['id'], $with, $lv, $keep_pid);
if ($children) { if ($children) {
$item['children'] = $children; $item['children'] = $children;
} }
@@ -155,7 +155,7 @@ if (!function_exists('get_filesystem_url')) {
*/ */
function get_filesystem_url(string $url, string $disk): string function get_filesystem_url(string $url, string $disk): string
{ {
if (\think\helper\Str::startsWith($url, ['http://', 'https://', '//'])) { if (\think\helper\Str::startsWith($url, ['http://', 'https://'])) {
return $url; return $url;
} }
if (empty($disk)) { if (empty($disk)) {
@@ -191,36 +191,3 @@ 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

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

View File

@@ -22,11 +22,7 @@
<a class="href_01">{:lang_i18n('首页')}</a> <a class="href_01">{:lang_i18n('首页')}</a>
{volist name="product_categorys" id="ca"} {volist name="product_categorys" id="ca"}
<span class="icon-arrow arrow_address"></span> <span class="icon-arrow arrow_address"></span>
{eq name="ca.pid" value="0"}
<a class="href_02" href="{:url('product/category', ['id' => $ca.id])}">{$ca.name}</a> <a class="href_02" href="{:url('product/category', ['id' => $ca.id])}">{$ca.name}</a>
{else /}
<a class="href_02" href="{:url('product/subcategory', ['id' => $ca.id])}">{$ca.name}</a>
{/eq}
{/volist} {/volist}
</div> </div>
</div> </div>

View File

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

View File

@@ -24,9 +24,7 @@
<p>{$detail.release_time|date_format_i18n}</p> <p>{$detail.release_time|date_format_i18n}</p>
</div> </div>
<!-- 文本渲染--> <!-- 文本渲染-->
<div class="ql-container"> <div class="blog_content">{$detail.content|raw}</div>
<div class="blog_content ql-editor">{$detail.content|raw}</div>
</div>
</div> </div>
<!-- 评论只显示前面五条---> <!-- 评论只显示前面五条--->
{notempty name="comments"} {notempty name="comments"}

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> -->
<div style="background-image: url('{$scene.image}');" class="sceneimg"></div>
</a> </a>
<div style="background-image: url('{$scene.image}');" class="sceneimg"></div>
</div> </div>
{/volist} {/volist}
</div> </div>

View File

@@ -22,11 +22,7 @@
<a class="pathname" href="/">{:lang_i18n('首页')}</a> <a class="pathname" href="/">{:lang_i18n('首页')}</a>
{volist name="product_categorys" id="ca"} {volist name="product_categorys" id="ca"}
<div class="arrow"></div> <div class="arrow"></div>
{eq name="ca.pid" value="0"}
<a class="pathname" href="{:url('product/category', ['id' => $ca.id])}">{$ca.name}</a> <a class="pathname" href="{:url('product/category', ['id' => $ca.id])}">{$ca.name}</a>
{else /}
<a class="pathname" href="{:url('product/subcategory', ['id' => $ca.id])}">{$ca.name}</a>
{/eq}
{/volist} {/volist}
</div> </div>
<!-- 产品主图切换和参数详情--> <!-- 产品主图切换和参数详情-->
@@ -133,12 +129,10 @@
{/notempty} {/notempty}
</div> </div>
<!-- 富文本渲染--> <!-- 富文本渲染-->
<div class="ql-container"> <div class="products_des" id="detail">
<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

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

View File

@@ -21,7 +21,7 @@
], ],
"require": { "require": {
"php": ">=8.0.0", "php": ">=8.0.0",
"topthink/framework": "8.1.2", "topthink/framework": "^8.0",
"topthink/think-orm": "v3.0.34", "topthink/think-orm": "v3.0.34",
"topthink/think-filesystem": "^3.0", "topthink/think-filesystem": "^3.0",
"topthink/think-multi-app": "^1.1", "topthink/think-multi-app": "^1.1",

View File

@@ -43,13 +43,13 @@ return [
// 磁盘类型 // 磁盘类型
'type' => \filesystem\driver\Qiniu::class, 'type' => \filesystem\driver\Qiniu::class,
// bucker 名称 // bucker 名称
'bucket' => env('QINIU_CLOUD.BUCKET', 'orico-official-website'), 'bucket' => 'orico-official-website',
// 访问密钥 // 访问密钥
'access_key' => env('QINIU_CLOUD.ACCESS_KEY', 'dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms'), 'access_key' => 'dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms',
// 密钥 // 密钥
'secret_key' => env('QINIU_CLOUD.SECRET_KEY', 'KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q'), 'secret_key' => 'KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q',
// 外部URL // 外部URL
'base_url' => env('QINIU_CLOUD.BASE_URL', '//szw73dlk3.hn-bkt.clouddn.com'), 'base_url' => '//szw73dlk3.hn-bkt.clouddn.com',
// 路径 // 路径
'path_prefix' => '/storage', 'path_prefix' => '/storage',
// 文件名称回调,可为文件名添加特定标志,以便可以在后续识别 // 文件名称回调,可为文件名添加特定标志,以便可以在后续识别
@@ -70,13 +70,13 @@ return [
// 磁盘类型 // 磁盘类型
'type' => \filesystem\driver\Qiniu::class, 'type' => \filesystem\driver\Qiniu::class,
// bucker 名称 // bucker 名称
'bucket' => env('QINIU_CLOUD.BUCKET', 'orico-official-website'), 'bucket' => 'orico-official-website',
// 访问密钥 // 访问密钥
'access_key' => env('QINIU_CLOUD.ACCESS_KEY', 'dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms'), 'access_key' => 'dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms',
// 密钥 // 密钥
'secret_key' => env('QINIU_CLOUD.SECRET_KEY', 'KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q'), 'secret_key' => 'KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q',
// 外部URL // 外部URL
'base_url' => env('QINIU_CLOUD.BASE_URL', '//szw73dlk3.hn-bkt.clouddn.com'), 'base_url' => '//szw73dlk3.hn-bkt.clouddn.com',
// 路径 // 路径
'path_prefix' => '/storage/videos', 'path_prefix' => '/storage/videos',
// 文件名称回调,可为文件名添加特定标志,以便可以在后续识别 // 文件名称回调,可为文件名添加特定标志,以便可以在后续识别

View File

@@ -31,7 +31,7 @@ class CreateVideo extends Migrator
$table = $this->table('video', ['engine' => 'MyISAM', 'comment' => '视频表']); $table = $this->table('video', ['engine' => 'MyISAM', 'comment' => '视频表']);
$table->addColumn('language_id', 'integer', ['signed' => false , 'null' => false, 'comment' => '语言ID']) $table->addColumn('language_id', 'integer', ['signed' => false , 'null' => false, 'comment' => '语言ID'])
->addColumn('category_id', 'integer', ['signed' => false , 'null' => false, 'comment' => '分类ID']) ->addColumn('category_id', 'integer', ['signed' => false , 'null' => false, 'comment' => '分类ID'])
->addColumn('name', 'string', ['limit' => 128 , 'null' => false, 'comment' => '名称']) ->addColumn('name', 'string', ['limit' => 64 , 'null' => false, 'comment' => '名称'])
->addColumn('desc', 'string', ['limit' => 512, 'null' => true, 'default' => null, 'comment' => '描述信息']) ->addColumn('desc', 'string', ['limit' => 512, 'null' => true, 'default' => null, 'comment' => '描述信息'])
->addColumn('image', 'string', ['limit' => 125, 'null' => true, 'default' => null, 'comment' => '封面图片']) ->addColumn('image', 'string', ['limit' => 125, 'null' => true, 'default' => null, 'comment' => '封面图片'])
->addColumn('video', 'string', ['limit' => 125, 'null' => true, 'default' => null, 'comment' => '视频地址']) ->addColumn('video', 'string', ['limit' => 125, 'null' => true, 'default' => null, 'comment' => '视频地址'])

View File

@@ -39,7 +39,7 @@ class CreateSysBannerItem extends Migrator
->addColumn('extra_image', 'string', ['limit' => 255, 'null' => true, 'default' => null, 'comment' => '额外的图片']) ->addColumn('extra_image', 'string', ['limit' => 255, 'null' => true, 'default' => null, 'comment' => '额外的图片'])
->addColumn('video', 'string', ['limit' => 255, 'null' => true, 'default' => null, 'comment' => '视频']) ->addColumn('video', 'string', ['limit' => 255, 'null' => true, 'default' => null, 'comment' => '视频'])
->addColumn('link_to', 'string', ['limit' => 64, 'null' => true, 'default' => null, 'comment' => '链接到(类型): article:文章, article_category:文章分类, product:产品, product_category:产品分类, custom:自定义链接']) ->addColumn('link_to', 'string', ['limit' => 64, 'null' => true, 'default' => null, 'comment' => '链接到(类型): article:文章, article_category:文章分类, product:产品, product_category:产品分类, custom:自定义链接'])
->addColumn('link', 'string', ['limit' => 510, 'null' => true, 'default' => null, 'comment' => '链接']) ->addColumn('link', 'string', ['limit' => 255, 'null' => true, 'default' => null, 'comment' => '链接'])
->addColumn('sort', 'integer', ['limit' => 11, 'null' => false, 'default' => 0, 'comment' => '排序']) ->addColumn('sort', 'integer', ['limit' => 11, 'null' => false, 'default' => 0, 'comment' => '排序'])
->addColumn('status', 'boolean', ['limit' => 1, 'null' => false, 'default' => 1, 'comment' => '-1为禁用, 1为启用']) ->addColumn('status', 'boolean', ['limit' => 1, 'null' => false, 'default' => 1, 'comment' => '-1为禁用, 1为启用'])
->addColumn('created_at', 'timestamp', ['null' => false, 'default' =>'CURRENT_TIMESTAMP', 'comment' => '创建时间']) ->addColumn('created_at', 'timestamp', ['null' => false, 'default' =>'CURRENT_TIMESTAMP', 'comment' => '创建时间'])

View File

@@ -119,10 +119,6 @@ class SysConfigInit extends Seeder
["id" => 102, "group_id" => 13, "title" => "视频 - 唯一性保持", "name" => "upload_video.filemd5_unique", "value" => "1", "extra" => "0:否\n1:是", "type" => "radio", "sort" => 5, "remark" => "如果保持视频文件唯一,重复视频上传时将立即返回已存在的地址;如果不保持,则同模块同一天上传的文件根据原文件名覆盖。", "created_at" => "2025-06-12 11:24:24", "updated_at" => "2025-06-12 11:25:18", "deleted_at" => NULL], ["id" => 102, "group_id" => 13, "title" => "视频 - 唯一性保持", "name" => "upload_video.filemd5_unique", "value" => "1", "extra" => "0:否\n1:是", "type" => "radio", "sort" => 5, "remark" => "如果保持视频文件唯一,重复视频上传时将立即返回已存在的地址;如果不保持,则同模块同一天上传的文件根据原文件名覆盖。", "created_at" => "2025-06-12 11:24:24", "updated_at" => "2025-06-12 11:25:18", "deleted_at" => NULL],
["id" => 103, "group_id" => 13, "title" => "附件 - 保留原文件名", "name" => "upload_attachment.filename_keep", "value" => NULL, "extra" => "0:否\n1:是", "type" => "radio", "sort" => 6, "remark" => "默认为否", "created_at" => "2025-06-12 11:27:08", "updated_at" => "2025-06-12 11:27:08", "deleted_at" => NULL], ["id" => 103, "group_id" => 13, "title" => "附件 - 保留原文件名", "name" => "upload_attachment.filename_keep", "value" => NULL, "extra" => "0:否\n1:是", "type" => "radio", "sort" => 6, "remark" => "默认为否", "created_at" => "2025-06-12 11:27:08", "updated_at" => "2025-06-12 11:27:08", "deleted_at" => NULL],
["id" => 104, "group_id" => 13, "title" => "附件 - 唯一性保持", "name" => "upload_attachment.filemd5_unique", "value" => "1", "extra" => "0:否\n1:是", "type" => "radio", "sort" => 7, "remark" => "如果保持附件文件唯一,重复附件上传时将立即返回已存在的地址;如果不保持,则同模块同一天上传的文件根据原文件名覆盖。", "created_at" => "2025-06-12 11:28:22", "updated_at" => "2025-06-12 11:28:22", "deleted_at" => NULL], ["id" => 104, "group_id" => 13, "title" => "附件 - 唯一性保持", "name" => "upload_attachment.filemd5_unique", "value" => "1", "extra" => "0:否\n1:是", "type" => "radio", "sort" => 7, "remark" => "如果保持附件文件唯一,重复附件上传时将立即返回已存在的地址;如果不保持,则同模块同一天上传的文件根据原文件名覆盖。", "created_at" => "2025-06-12 11:28:22", "updated_at" => "2025-06-12 11:28:22", "deleted_at" => NULL],
['id' => 105, 'group_id' => 13, 'title' => '视频 - 保存到', 'name' => 'upload_video.save_to', 'value' => 'qiniu_cloud', 'extra' => 'local:本地\nqiniu_cloud:七牛云', 'type' => 'radio', 'sort' => 6, 'remark' => '视频保存位置,默认为“本地” - [本地为本站点服务器;七牛云为七牛云对象存储,上传经这本站点服务器中转,上传耗时稍慢于“本地”]', 'created_at' => '2025-07-25 10:46:24', 'updated_at' => '2025-07-25 16:41:53', 'deleted_at' => NULL],
['id' => 106, 'group_id' => 13, 'title' => '附件 - 保存到', 'name' => 'upload_attachment.save_to', 'value' => 'local', 'extra' => 'local:本地\nqiniu_cloud:七牛云', 'type' => 'radio', 'sort' => 9, 'remark' => '附件保存位置,默认为“本地” - [本地为本站点服务器;七牛云为七牛云对象存储,上传经这本站点服务器中转,上传耗时稍慢于“本地”]', 'created_at' => '2025-07-25 10:51:34', 'updated_at' => '2025-07-25 16:41:53', 'deleted_at' => NULL],
['id' => 107, 'group_id' => 14, 'title' => '视频 - 保存到', 'name' => 'upload_video.save_to', 'value' => 'qiniu_cloud', 'extra' => 'local:本地\nqiniu_cloud:七牛云', 'type' => 'radio', 'sort' => 6, 'remark' => '视频保存位置,默认为“本地” - [本地为本站点服务器;七牛云为七牛云对象存储,上传经这本站点服务器中转,上传耗时稍慢于“本地”]', 'created_at' => '2025-07-25 10:46:24', 'updated_at' => '2025-07-25 16:41:53', 'deleted_at' => NULL],
['id' => 108, 'group_id' => 14, 'title' => '附件 - 保存到', 'name' => 'upload_attachment.save_to', 'value' => 'local', 'extra' => 'local:本地\nqiniu_cloud:七牛云', 'type' => 'radio', 'sort' => 9, 'remark' => '附件保存位置,默认为“本地” - [本地为本站点服务器;七牛云为七牛云对象存储,上传经这本站点服务器中转,上传耗时稍慢于“本地”]', 'created_at' => '2025-07-25 10:51:34', 'updated_at' => '2025-07-25 16:41:53', 'deleted_at' => NULL],
]; ];
$table = $this->table('sys_config'); $table = $this->table('sys_config');

View File

@@ -161,9 +161,7 @@ body {
.ql-editor>* { .ql-editor>* {
cursor: text cursor: text
} }
.ql-editor video{
max-width: 100% !important;
}
.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;

View File

@@ -1278,7 +1278,7 @@ video img {
margin-left: 1rem; margin-left: 1rem;
} }
.foot-cate li { .foot-cate li {
min-width: 50%; width: 50%;
display: inline-block; display: inline-block;
float: left; float: left;
color: #fff; color: #fff;
@@ -2342,59 +2342,6 @@ 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

@@ -39,7 +39,6 @@
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;
@@ -154,15 +153,12 @@ 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;
@@ -178,58 +174,47 @@ 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"; @charset "UTF-8";.ql-container {
.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;
@@ -238,18 +223,10 @@ div {
position: relative position: relative
} }
.ql-editor video {
max-width: 100% !important;
}
.ql-container.ql-disabled .ql-tooltip { .ql-container.ql-disabled .ql-tooltip {
visibility: hidden 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
} }
@@ -285,29 +262,17 @@ div {
cursor: text cursor: text
} }
.ql-editor p, .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 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 ol,.ql-editor ul {
.ql-editor ul {
padding-left: 1.5em padding-left: 1.5em
} }
.ql-editor ol>li, .ql-editor ol>li,.ql-editor ul>li {
.ql-editor ul>li {
list-style-type: none list-style-type: none
} }
@@ -315,18 +280,15 @@ div {
content: "•" content: "•"
} }
.ql-editor ul[data-checked=true], .ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false] {
.ql-editor ul[data-checked=false] {
pointer-events: none pointer-events: none
} }
.ql-editor ul[data-checked=true]>li *, .ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>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=true]>li:before,.ql-editor ul[data-checked=false]>li:before {
.ql-editor ul[data-checked=false]>li:before {
color: #777; color: #777;
cursor: pointer; cursor: pointer;
pointer-events: all pointer-events: all
@@ -357,13 +319,11 @@ div {
margin-right: -1.5em margin-right: -1.5em
} }
.ql-editor ol li:not(.ql-direction-rtl), .ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul 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 ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl {
.ql-editor ul li.ql-direction-rtl {
padding-right: 1.5em padding-right: 1.5em
} }
@@ -740,15 +700,13 @@ 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;
@@ -761,97 +719,51 @@ 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: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: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 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 .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 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 .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 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 .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-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-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,.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-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
} }
@@ -859,8 +771,7 @@ div {
display: none display: none
} }
.ql-snow .ql-out-bottom, .ql-snow .ql-out-bottom,.ql-snow .ql-out-top {
.ql-snow .ql-out-top {
visibility: hidden visibility: hidden
} }
@@ -904,8 +815,7 @@ div {
stroke-width: 2 stroke-width: 2
} }
.ql-snow .ql-fill, .ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill {
.ql-snow .ql-stroke.ql-fill {
fill: #4b5563 fill: #4b5563
} }
@@ -917,8 +827,7 @@ div {
fill-rule: evenodd fill-rule: evenodd
} }
.ql-snow .ql-thin, .ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin {
.ql-snow .ql-stroke.ql-thin {
stroke-width: 1 stroke-width: 1
} }
@@ -973,8 +882,7 @@ div {
padding-left: 16px padding-left: 16px
} }
.ql-snow .ql-editor code, .ql-snow .ql-editor code,.ql-snow .ql-editor pre {
.ql-snow .ql-editor pre {
background-color: #f0f0f0; background-color: #f0f0f0;
border-radius: 3px border-radius: 3px
} }
@@ -1063,18 +971,15 @@ div {
z-index: 1 z-index: 1
} }
.ql-snow .ql-color-picker, .ql-snow .ql-color-picker,.ql-snow .ql-icon-picker {
.ql-snow .ql-icon-picker {
width: 28px width: 28px
} }
.ql-snow .ql-color-picker .ql-picker-label, .ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-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-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg {
.ql-snow .ql-icon-picker .ql-picker-label svg {
right: 4px right: 4px
} }
@@ -1111,12 +1016,7 @@ 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-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-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)
} }
@@ -1124,38 +1024,31 @@ div {
width: 98px width: 98px
} }
.ql-snow .ql-picker.ql-header .ql-picker-label:before, .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-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-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-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-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-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-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-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-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-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-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-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-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-item[data-value="6"]:before {
content: "Heading 6" content: "Heading 6"
} }
@@ -1187,18 +1080,15 @@ div {
width: 108px width: 108px
} }
.ql-snow .ql-picker.ql-font .ql-picker-label:before, .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-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-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-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-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-item[data-value=monospace]:before {
content: "Monospace" content: "Monospace"
} }
@@ -1214,23 +1104,19 @@ div {
width: 98px width: 98px
} }
.ql-snow .ql-picker.ql-size .ql-picker-label:before, .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-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-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-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-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-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-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-item[data-value=huge]:before {
content: "Huge" content: "Huge"
} }
@@ -1274,13 +1160,11 @@ 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-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
.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.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
border-color: #000 border-color: #000
} }
@@ -1337,8 +1221,7 @@ div {
line-height: 26px line-height: 26px
} }
.ql-snow .ql-tooltip.ql-editing a.ql-preview, .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-remove {
display: none display: none
} }
@@ -1372,8 +1255,7 @@ div {
border: 1px solid #d1d5db border: 1px solid #d1d5db
} }
.editor, .editor,.ql-toolbar {
.ql-toolbar {
line-height: normal!important; line-height: normal!important;
white-space: pre-wrap!important white-space: pre-wrap!important
} }
@@ -1402,120 +1284,98 @@ div {
content: "请输入视频地址:" content: "请输入视频地址:"
} }
.ql-snow .ql-picker.ql-size .ql-picker-label:before, .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-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-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-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-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-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-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-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-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item: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-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-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-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-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-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-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-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-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-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-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-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-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-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item: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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-item[data-value=sans-serif]:before {
font-family: sans-serif; font-family: sans-serif;
content: "sans-serif" content: "sans-serif"
} }
@@ -1552,58 +1412,47 @@ 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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-item[data-value="32px"]:before {
content: "32px" content: "32px"
} }
@@ -1616,20 +1465,17 @@ 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;
@@ -1638,13 +1484,11 @@ 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;
@@ -1655,11 +1499,9 @@ 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;
@@ -1668,31 +1510,25 @@ 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;
@@ -1702,108 +1538,8 @@ 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

@@ -4,7 +4,7 @@
background: #f9f9f9; background: #f9f9f9;
} }
.narshelpdetailPc .ql-container{ .narshelpdetailPc .ql-container{
width: 81%; width: 95%;
} }
.narshelpdetailPc .narsssmain { .narshelpdetailPc .narsssmain {
width: 100%; width: 100%;