Compare commits
282 Commits
dev-bak
...
receive_sy
| Author | SHA1 | Date | |
|---|---|---|---|
| 3df5090d1e | |||
| 21a5cd7f03 | |||
| 541844014f | |||
| dad1e029d6 | |||
| 945fd88df4 | |||
| db3040c0b0 | |||
| e36660c93e | |||
| 4a84558d2e | |||
| 08862ff98e | |||
| 439d001ff0 | |||
| 63357a0c0c | |||
| 65e99ed675 | |||
| 291343aa56 | |||
| 14f53e3709 | |||
| 7b893cf242 | |||
| a0147dde8e | |||
| 77ec576f8f | |||
| e25add0ad9 | |||
| e04fc650a4 | |||
| cc5873294e | |||
| b60a3f4161 | |||
| 1459a303d6 | |||
| 968a537576 | |||
| cd9c01ca41 | |||
| 5bccb8e2c8 | |||
| b31ce311b5 | |||
| 4e99154ba4 | |||
| 75defa79ca | |||
| 8509607565 | |||
| 123dc9c871 | |||
| 8b65c6f9d4 | |||
| 5f3cf4b58f | |||
| b237ddb9a1 | |||
| 51450677e5 | |||
| 6cd1b1ad76 | |||
| 642b813a18 | |||
| 487442a25e | |||
| 61bf02b031 | |||
| 7b069971a4 | |||
| b16e6cf8ea | |||
| 59c1d46666 | |||
| ddbabe3985 | |||
| f03a2fef50 | |||
| 697ae24a97 | |||
| 173aed5442 | |||
| d3b712fb88 | |||
| ff0dbbcd55 | |||
| 1e535b4b53 | |||
| d31e3dbc1d | |||
| 648d9fdad6 | |||
| 8f0cd0f6dd | |||
| 33ecd52e8d | |||
| 88c8657014 | |||
| 1d92f276d6 | |||
| 65e6699dac | |||
| e01e6f802c | |||
| ae5009544f | |||
| 49a2c4e669 | |||
| 0c89324f2d | |||
| 7916fff229 | |||
| 84ecfce5f6 | |||
| 58046f9be3 | |||
| fdc5e95f64 | |||
| fbeab9b7a0 | |||
| c2b93bc290 | |||
| 6721f9d1f3 | |||
| 9f78f9ecb5 | |||
| 78cf21b478 | |||
| 439605c757 | |||
| 11098de5be | |||
| 1f70f5fac2 | |||
| 18f2c18b4d | |||
| fef235a8c4 | |||
| dd06b2f01a | |||
| d026ca2223 | |||
| 8f6d2beade | |||
| 69b7c6cfb1 | |||
| 094ebe0aae | |||
| c2ba5ad88a | |||
| 37bb4aaf15 | |||
| 16b73d5bbf | |||
| 6b1314d834 | |||
| c59a81f316 | |||
| dd3e7fae96 | |||
| 1f5e0f7989 | |||
| 76bca942aa | |||
| 3590a89a07 | |||
| dd144e6925 | |||
| 10792e10d9 | |||
| 6c5d19fbd3 | |||
| f320b3efbc | |||
| dd5d3498f2 | |||
| bdccb5b535 | |||
| 7b59120b5d | |||
| a4175b450e | |||
| 1f3f934ef0 | |||
| 011f6ced94 | |||
| c4bcf7d8a1 | |||
| 5db73f2422 | |||
| e72eb956b9 | |||
| 6012af9e75 | |||
| 06b5d445f7 | |||
| 9a988de538 | |||
|
|
0947daac64 | ||
|
|
7574322f95 | ||
| d98c26e562 | |||
| 64d9b2129d | |||
| 1873e6ac3a | |||
| 72565683c8 | |||
| 7bbcc12003 | |||
|
|
7928e5f1ac | ||
|
|
7380fb16d7 | ||
| 8050a7857c | |||
| bc4f7422bc | |||
| ed02804587 | |||
| 1fec0dcc42 | |||
| 446ec81410 | |||
|
|
9e73e1341b | ||
|
|
1c301cd3db | ||
|
|
6f15b2e34c | ||
|
|
d9ae8e0dc1 | ||
|
|
59b6a6d797 | ||
| 2446331890 | |||
| 2615978b30 | |||
| ccd2a67932 | |||
| 5e35359aa0 | |||
| 567b6e3c01 | |||
|
|
2298d7aac7 | ||
| 57c90c222a | |||
| 02aab16b4f | |||
| 309e54ac4e | |||
| 7eac43e146 | |||
| 736bf19cd6 | |||
| 3bae584f74 | |||
| cba2ca24a7 | |||
| 4be072c63b | |||
| c45880d5a6 | |||
| 56bc911062 | |||
| 04f7600a79 | |||
| eda9a7d925 | |||
| b19dca206f | |||
| a71cd23bfb | |||
| 7526611f9c | |||
| bc3fbdd492 | |||
| e85dc5886c | |||
| 71f445395c | |||
| c311c6f270 | |||
| 314f39471c | |||
|
|
e5da8e06c4 | ||
|
|
13bcfe2a67 | ||
| 0e9d1e39ac | |||
| 5f6b8a20c9 | |||
| 31a0dc25b3 | |||
| 2ba2b5f1a7 | |||
| e47ee2e981 | |||
| c9aae780d5 | |||
| b0eea38244 | |||
| 6b0bd13fb7 | |||
| 613727fe44 | |||
| 4023d1f6d7 | |||
| c4a87bf22b | |||
| 24212386bc | |||
| 1f81d2c8e4 | |||
| 793c670033 | |||
| 1ffb0f73c0 | |||
| d6d2e048bf | |||
| 272c0f7e99 | |||
|
|
1b5a02a5f4 | ||
|
|
8b306dae3c | ||
| ca5e69892d | |||
| 54cc9e692a | |||
| 0a38b4246a | |||
| e38ca41d11 | |||
| 3e821aba64 | |||
|
|
6224e2b271 | ||
|
|
25f1a1e505 | ||
| 822ca9ec23 | |||
| e62eb8e7ae | |||
| bf55bca148 | |||
| f3545626c2 | |||
| 95403ad42e | |||
| e59170969b | |||
|
|
01615c2f48 | ||
|
|
baa03203b8 | ||
| ffcf7f190c | |||
|
|
4165107a30 | ||
|
|
8347fbf6f6 | ||
| 3bf6d43c97 | |||
|
|
805fb07bdf | ||
|
|
f6acffbf84 | ||
| 42ee0305f5 | |||
| 3a29ed37e1 | |||
|
|
3a8df97d6c | ||
|
|
07606e63b7 | ||
| d35323dc98 | |||
| 171510bee1 | |||
| 09943775fd | |||
| 6c5f66ef54 | |||
| c4e25484bf | |||
| 5277af0f53 | |||
| e844cc3166 | |||
| a821156077 | |||
| 732132f287 | |||
| d1711389dc | |||
| 5a4897ebb2 | |||
| f8d884b408 | |||
| f51f39c893 | |||
| 6b4049ca62 | |||
| d7d8a9cfbf | |||
| cd549aa32b | |||
| 2ce5ef5169 | |||
| 60af12a1a0 | |||
| 11a1450ad5 | |||
| 20d2b34601 | |||
| 8c998eaef1 | |||
| 6d16d18ba7 | |||
| 4ed3aface4 | |||
| eb8f115190 | |||
| d021962d0a | |||
|
|
d146603812 | ||
|
|
a8fa9393a6 | ||
|
|
4e2d65a1e0 | ||
|
|
a47a7ef095 | ||
|
|
3923fbc4e6 | ||
|
|
232da86477 | ||
|
|
6effd64f18 | ||
| 181c4aab45 | |||
| 7a9230a049 | |||
|
|
2ca2fa788a | ||
|
|
797a24fa5d | ||
|
|
af0be49166 | ||
| f83eddf41a | |||
| 216fa8d8e0 | |||
| 0b20506cb8 | |||
| 2416a5c8da | |||
| 2384529e35 | |||
| 2d9daffb0d | |||
| 407352adee | |||
|
|
38df9799b7 | ||
|
|
e94f59004b | ||
| e8905b3753 | |||
| 40852fcea4 | |||
| fd28af12ed | |||
| 7e22638c02 | |||
| 15743c6f53 | |||
| 9fd3954b4f | |||
| 5b3a020b1a | |||
| 4228fec38b | |||
| 125da615c7 | |||
| 247085486e | |||
| 8b0bca9e44 | |||
| 5b325656b2 | |||
| 4ad14d1847 | |||
| cdb27182d6 | |||
|
|
bf714afe7c | ||
|
|
d2882291c1 | ||
|
|
ce1d46aa2c | ||
|
|
73e9e41fa9 | ||
| 2c8cde6274 | |||
| 3d3aab18a0 | |||
| 17e85155aa | |||
| 84ded1f544 | |||
| b48d6346c9 | |||
| f0a7b82179 | |||
| e97b677d96 | |||
| 650fcde169 | |||
| 7f4fccd209 | |||
| f75f66f24d | |||
| 5893f6eeac | |||
| ee20608dbe | |||
| 2705bb9baa | |||
| a8051c10de | |||
| a5cf8018ad | |||
| 265c04c367 | |||
| 693f0ecb4e | |||
| 7390140671 | |||
| 00fee03979 | |||
| 70e9c395b2 | |||
|
|
5d6a7c1324 | ||
|
|
b9bc46d3d0 | ||
|
|
a302446964 | ||
|
|
c186cbceb4 |
29
.env.local
29
.env.local
@@ -11,6 +11,9 @@ DB_PREFIX = ow_
|
|||||||
|
|
||||||
DEFAULT_LANG = zh-cn
|
DEFAULT_LANG = zh-cn
|
||||||
|
|
||||||
|
# 前端代理服务器ip(影响使用代理访问情况下的客户端ip获取)
|
||||||
|
PROXY_SERVER_IP[] = 120.79.27.160
|
||||||
|
|
||||||
[JWT]
|
[JWT]
|
||||||
TTL=3600
|
TTL=3600
|
||||||
REFRESH_TTL=20160
|
REFRESH_TTL=20160
|
||||||
@@ -24,3 +27,29 @@ WHITE_LIST[] = v1/user/captcha
|
|||||||
# 不需记录日志的接口
|
# 不需记录日志的接口
|
||||||
[ADMIN_API]
|
[ADMIN_API]
|
||||||
IGNORE_LOGGING_LIST[] = v1/OperateLog/index
|
IGNORE_LOGGING_LIST[] = v1/OperateLog/index
|
||||||
|
MAX_IMAGE_SIZE = 5mb; # 图片上传最大限制
|
||||||
|
MAX_VIDEO_SIZE = 150mb; # 视频上传最大限制
|
||||||
|
MAX_ATTACHMENT_SIZE = 100mb; # 附件上传最大限制
|
||||||
|
|
||||||
|
# 开放API
|
||||||
|
[OPENAPI]
|
||||||
|
RESOURCE_IMAGES_DOMAIN = http://local.orico.com; # 图片资源服务器地址
|
||||||
|
RESOURCE_VIDEOS_DOMAIN = http://local.orico.com; # 视频资源服务器地址
|
||||||
|
|
||||||
|
# 视图模板规则配置
|
||||||
|
[VIEW_TPL]
|
||||||
|
# 视图目录
|
||||||
|
# query 规则:URL参数 mtpl=1 表示移动端访问
|
||||||
|
# 例如:http://xxxx.com?mtpl=1
|
||||||
|
# domain 规则:根据特定域名,判断是否移动端访问
|
||||||
|
# 例如:http://mobile.orico.cn
|
||||||
|
RULE = query
|
||||||
|
# query 规则参数名
|
||||||
|
RULE_QUERY_NAME = mtpl
|
||||||
|
# query 规则参数值
|
||||||
|
RULE_QUERY_VALUE = 1
|
||||||
|
# domain 规则协议
|
||||||
|
RULE_DOMAIN_SCHEME[] = http
|
||||||
|
RULE_DOMAIN_SCHEME[] = https
|
||||||
|
# domain 规则域名
|
||||||
|
RULE_DOMAIN_HOST = mobile.orico.cn
|
||||||
217
app/admin/controller/ReceiveProductSync.php
Normal file
217
app/admin/controller/ReceiveProductSync.php
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
<?php
|
||||||
|
declare (strict_types = 1);
|
||||||
|
|
||||||
|
namespace app\admin\controller;
|
||||||
|
|
||||||
|
use app\admin\model\v1\LanguageModel;
|
||||||
|
use app\admin\model\v1\ProductCategoryModel;
|
||||||
|
use app\admin\model\v1\ProductModel;
|
||||||
|
use app\admin\model\v1\ProductTcoCategoryModel;
|
||||||
|
use think\facade\Db;
|
||||||
|
|
||||||
|
class Operate_Of_ReceiveSync
|
||||||
|
{
|
||||||
|
const Add = 'add';
|
||||||
|
const Update = 'update';
|
||||||
|
const Enable = 'enable';
|
||||||
|
const Disable = 'disable';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接收产品相关同步数据
|
||||||
|
*/
|
||||||
|
class ReceiveProductSync
|
||||||
|
{
|
||||||
|
// 接收产品目录分类同步数据
|
||||||
|
public function category()
|
||||||
|
{
|
||||||
|
$data = request()->post();
|
||||||
|
if (empty($data)) return error('请确认同步数据');
|
||||||
|
|
||||||
|
$validate = validate([
|
||||||
|
'name|分类名称' => 'require',
|
||||||
|
'erp_code|分类ERP编码' => 'require',
|
||||||
|
]);
|
||||||
|
if (!$validate->check($data)) {
|
||||||
|
return error((string)$validate->getError());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取对应语言ID
|
||||||
|
$lang_id = LanguageModel::where('code', $data['lang'])->value('id');
|
||||||
|
if (empty($lang_id)) {
|
||||||
|
return error('语言不存在');
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::startTrans();
|
||||||
|
try {
|
||||||
|
$tco_category_data = [
|
||||||
|
'language_id' => $lang_id,
|
||||||
|
'name' => $data['name'],
|
||||||
|
'tco_id' => $data['tco_id'],
|
||||||
|
'tco_pid' => $data['tco_pid'],
|
||||||
|
'tco_path' => $data['tco_path'],
|
||||||
|
'erp_id' => $data['erp_id'],
|
||||||
|
'erp_pid' => $data['erp_pid'],
|
||||||
|
'erp_code' => $data['erp_code'],
|
||||||
|
'erp_path' => $data['erp_path'],
|
||||||
|
'disabled' => Operate_Of_ReceiveSync::Disable == $data['operate'] ? 1 : 0,
|
||||||
|
'sync_time' => strtotime($data['created_at'])
|
||||||
|
];
|
||||||
|
$tco_category = ProductTcoCategoryModel::language($lang_id)->erpCode($tco_category_data['erp_code'])->find();
|
||||||
|
if (empty($tco_category)) {
|
||||||
|
$tco_category = ProductTcoCategoryModel::create($tco_category_data);
|
||||||
|
if ($tco_category->isEmpty()) {
|
||||||
|
throw new \Exception('产品目录分类创建失败');
|
||||||
|
}
|
||||||
|
|
||||||
|
$category_data = [
|
||||||
|
'language_id' => $lang_id,
|
||||||
|
'unique_id' => uniqid('PRO_CATE_'),
|
||||||
|
'pid' => 0,
|
||||||
|
'path' => '',
|
||||||
|
'name' => $tco_category_data['name'],
|
||||||
|
'icon' => '',
|
||||||
|
'desc' => '',
|
||||||
|
'related_tco_category' => $tco_category['id'],
|
||||||
|
'sort' => 0,
|
||||||
|
'level' => 1,
|
||||||
|
'is_show' => 1,
|
||||||
|
];
|
||||||
|
$tco_parent = ProductTcoCategoryModel::language($lang_id)->tcoId($tco_category['tco_pid'])->find();
|
||||||
|
if (!empty($tco_parent)) {
|
||||||
|
$parent = ProductCategoryModel::language($lang_id)->tcoId($tco_parent['id'])->find();
|
||||||
|
if ($parent->isEmpty()) {
|
||||||
|
throw new \Exception('产品分类父级不存在');
|
||||||
|
}
|
||||||
|
$category_data['pid'] = $parent['id'];
|
||||||
|
$category_data['path'] = $parent['path'] . $parent['pid'];
|
||||||
|
$category_data['level'] = $parent['level'] + 1;
|
||||||
|
}
|
||||||
|
$category = ProductCategoryModel::create($category_data);
|
||||||
|
if ($category->isEmpty()) {
|
||||||
|
throw new \Exception('产品分类创建失败');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($tco_category['sync_time'] < $tco_category_data['sync_time']) {
|
||||||
|
$success = $tco_category->save($tco_category_data);
|
||||||
|
if (!$success) {
|
||||||
|
throw new \Exception('产品目录分类更新失败');
|
||||||
|
}
|
||||||
|
|
||||||
|
$category = ProductCategoryModel::language($lang_id)->tcoId($tco_category['id'])->find();
|
||||||
|
$tco_parent = ProductTcoCategoryModel::language($lang_id)->tcoId($tco_category['tco_pid'])->find();
|
||||||
|
if (!empty($tco_parent)) {
|
||||||
|
$parent = ProductCategoryModel::language($lang_id)->tcoId($tco_parent['id'])->find();
|
||||||
|
if ($parent->isEmpty()) {
|
||||||
|
throw new \Exception('产品分类父级不存在');
|
||||||
|
}
|
||||||
|
$category['pid'] = $parent['id'];
|
||||||
|
$category['path'] = $parent['path'] . $parent['pid'];
|
||||||
|
$category['level'] = $parent['level'] + 1;
|
||||||
|
}
|
||||||
|
if (!$category->save($category)) {
|
||||||
|
throw new \Exception('产品分类更新失败');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::commit();
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
Db::rollback();
|
||||||
|
return error(sprintf('%s %s:%d', $th->getMessage(), $th->getFile(), $th->getLine()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return success('同步成功');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 接收产品同步数据
|
||||||
|
public function product()
|
||||||
|
{
|
||||||
|
$data = request()->post();
|
||||||
|
if (empty($data)) {
|
||||||
|
return error('请确认同步数据');
|
||||||
|
}
|
||||||
|
|
||||||
|
$validate = validate([
|
||||||
|
'spu' => 'require',
|
||||||
|
'name' => 'require',
|
||||||
|
'category_erp_code' => 'require',
|
||||||
|
'lang' => 'require',
|
||||||
|
'created_at' => 'require',
|
||||||
|
]);
|
||||||
|
if (!$validate->check($data)) {
|
||||||
|
return error((string)$validate->getError());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取对应语言ID
|
||||||
|
$lang_id = LanguageModel::where('code', $data['lang'])->value('id');
|
||||||
|
if (empty($lang_id)) {
|
||||||
|
return error('语言不存在');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果 spu_before_modification 存在则根据 spu_before_modification 更新型号
|
||||||
|
$product = null;
|
||||||
|
if (!empty($data['spu_before_modification'])) {
|
||||||
|
$product = ProductModel::language($lang_id)->spu($data['spu_before_modification'])->find();
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
(empty($data['spu_before_modification']) && !empty($data['spu']))
|
||||||
|
// 避免 spu_before_modification 更新型号时,人为删除了旧型号导致的新增,从而出现重复型号问题,而进行再次验证
|
||||||
|
|| (!empty($data['spu_before_modification']) && empty($product))
|
||||||
|
) {
|
||||||
|
$product = ProductModel::language($lang_id)->spu($data['spu'])->find();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$product_tco_category = ProductTcoCategoryModel::language($lang_id)->erpCade($data['category_erp_code'])->find();
|
||||||
|
if (empty($product_tco_category)) {
|
||||||
|
throw new \Exception('官网未找到产品目录同步分类');
|
||||||
|
}
|
||||||
|
|
||||||
|
$product_category = ProductCategoryModel::language($lang_id)->tcoId($product_tco_category['id'])->find();
|
||||||
|
if (empty($product_category)) {
|
||||||
|
throw new \Exception('官网未找到产品目录同步分类关联的分类');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($product)) {
|
||||||
|
$product = ProductModel::create([
|
||||||
|
'language_id' => $lang_id,
|
||||||
|
'category_id' => $product_category['id'],
|
||||||
|
'spu' => $data['spu'],
|
||||||
|
'name' => $data['name'],
|
||||||
|
'short_name' => '',
|
||||||
|
'cover_image' => '',
|
||||||
|
'desc' => '',
|
||||||
|
'video_img' => '',
|
||||||
|
'video_url' => '',
|
||||||
|
'is_sale' => 0,
|
||||||
|
'is_new' => 0,
|
||||||
|
'is_hot' => 0,
|
||||||
|
'is_show' => Operate_Of_ReceiveSync::Disable == $data['operate'] ? 0 : 1,
|
||||||
|
'sort' => 0,
|
||||||
|
'detail' => '',
|
||||||
|
'status' => 1,
|
||||||
|
'seo_title' => '',
|
||||||
|
'seo_keywords' => '',
|
||||||
|
'seo_desc' => '',
|
||||||
|
'updated_at' => $data['created_at'],
|
||||||
|
]);
|
||||||
|
if ($product->isEmpty()) {
|
||||||
|
throw new \Exception('产品创建失败');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strtotime($product['updated_at']) < strtotime($data['created_at'])) {
|
||||||
|
$product->spu = $data['spu'];
|
||||||
|
$product->name = $data['name'];
|
||||||
|
$product->category_id = $product_category['id'];
|
||||||
|
$product->is_show = Operate_Of_ReceiveSync::Disable == $data['operate'] ? 0 : 1;
|
||||||
|
if (!$product->save()) {
|
||||||
|
throw new \Exception('产品更新失败');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
return error(sprintf('%s %s:%d', $th->getMessage(), $th->getFile(), $th->getLine()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return success('同步成功');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,8 +39,12 @@ class Article
|
|||||||
->language(request()->lang_id)
|
->language(request()->lang_id)
|
||||||
->where(function($query) use($param) {
|
->where(function($query) use($param) {
|
||||||
if (isset($param['category_id'])) {
|
if (isset($param['category_id'])) {
|
||||||
|
if (str_contains($param['category_id'], ',') || is_array($param['category_id'])) {
|
||||||
|
$query->whereIn('category_id', $param['category_id']);
|
||||||
|
} else {
|
||||||
$query->where('category_id', '=', $param['category_id']);
|
$query->where('category_id', '=', $param['category_id']);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
->withSearch(['title', 'release_time'], [
|
->withSearch(['title', 'release_time'], [
|
||||||
'title' => $param['title']??null,
|
'title' => $param['title']??null,
|
||||||
@@ -55,7 +59,8 @@ class Article
|
|||||||
'category',
|
'category',
|
||||||
'category_id'
|
'category_id'
|
||||||
])
|
])
|
||||||
->bindAttr('category', ['category_name' => 'name']);
|
->bindAttr('category', ['category_name' => 'name'])
|
||||||
|
->each(fn($item) => $item->image = thumb($item->image));
|
||||||
|
|
||||||
return success('获取成功', $article);
|
return success('获取成功', $article);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ class ArticleTrash
|
|||||||
'list_rows' => $param['size']
|
'list_rows' => $param['size']
|
||||||
])
|
])
|
||||||
->hidden(['category_id', 'category'])
|
->hidden(['category_id', 'category'])
|
||||||
->bindAttr('category', ['category_name' => 'name']);
|
->bindAttr('category', ['category_name' => 'name'])
|
||||||
|
?->each(fn($item) => $item->image = thumb($item->image));
|
||||||
|
|
||||||
return success('获取成功', $data);
|
return success('获取成功', $data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,8 @@ class Attachment
|
|||||||
'page' => $params['page']
|
'page' => $params['page']
|
||||||
])
|
])
|
||||||
->bindAttr('category', ['category_name'])
|
->bindAttr('category', ['category_name'])
|
||||||
->hidden(['category_id', 'category']);
|
->hidden(['category_id', 'category'])
|
||||||
|
?->each(fn($item) => $item->image = thumb($item->image));
|
||||||
|
|
||||||
return success('获取成功', $attachments);
|
return success('获取成功', $attachments);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,8 @@ class AttachmentTrash
|
|||||||
'page' => $params['page']
|
'page' => $params['page']
|
||||||
])
|
])
|
||||||
->bindAttr('category', ['category_name'])
|
->bindAttr('category', ['category_name'])
|
||||||
->hidden(['category_id', 'category']);
|
->hidden(['category_id', 'category'])
|
||||||
|
?->each(fn($item) => $item->image = thumb($item->image));
|
||||||
|
|
||||||
return success('获取成功', $attachments);
|
return success('获取成功', $attachments);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ class Banner
|
|||||||
|
|
||||||
$banners = SysBannerModel::field([
|
$banners = SysBannerModel::field([
|
||||||
'id',
|
'id',
|
||||||
'name'
|
'name',
|
||||||
|
'at_platform'
|
||||||
])
|
])
|
||||||
->withSearch(['name'], [
|
->withSearch(['name'], [
|
||||||
'name' => $param['name'] ?? null
|
'name' => $param['name'] ?? null
|
||||||
@@ -30,7 +31,27 @@ class Banner
|
|||||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||||
->select();
|
->select();
|
||||||
|
|
||||||
return success('获取成功', $banners);
|
$datas = [];
|
||||||
|
if (!$banners->isEmpty()) {
|
||||||
|
$temp = [];
|
||||||
|
$map = ['pc' => ['id' => -1, 'name' => 'PC端'], 'mobile' => ['id' => -2, 'name' => '移动端']];
|
||||||
|
foreach ($banners as $banner) {
|
||||||
|
if (!isset($temp[$banner->at_platform])) {
|
||||||
|
$temp[$banner->at_platform] = [
|
||||||
|
'id' => $map[$banner->at_platform]['id'] ?? 0,
|
||||||
|
'name' => $map[$banner->at_platform]['name'] ?? '未知平台',
|
||||||
|
'children' => []
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$temp[$banner->at_platform]['children'][] = [
|
||||||
|
'id' => $banner->id,
|
||||||
|
'name' => $banner->name
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$datas = array_values($temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return success('获取成功', $datas);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分页
|
// 分页
|
||||||
|
|||||||
@@ -33,14 +33,18 @@ class BannerItem
|
|||||||
'item.sort',
|
'item.sort',
|
||||||
'item.status',
|
'item.status',
|
||||||
'item.created_at',
|
'item.created_at',
|
||||||
'banner.name' => 'banner_name'
|
'bnr.name' => 'banner_name'
|
||||||
])
|
])
|
||||||
->join('sys_banner banner', 'banner.id = item.banner_id')
|
->join('sys_banner bnr', 'bnr.id = item.banner_id')
|
||||||
->where('banner.language_id', '=', request()->lang_id)
|
->where('bnr.language_id', '=', request()->lang_id)
|
||||||
->where(function($query) use($param){
|
->where(function($query) use($param){
|
||||||
if (!empty($param['banner_id'])) {
|
if (!empty($param['banner_id'])) {
|
||||||
|
if (is_array($param['banner_id']) || str_contains($param['banner_id'], ',')) {
|
||||||
|
$query->whereIn('item.banner_id', $param['banner_id']);
|
||||||
|
} else {
|
||||||
$query->where('item.banner_id', '=', $param['banner_id']);
|
$query->where('item.banner_id', '=', $param['banner_id']);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (!empty($param['title'])) {
|
if (!empty($param['title'])) {
|
||||||
$query->where('item.title', 'like', "%{$param['title']}%");
|
$query->where('item.title', 'like', "%{$param['title']}%");
|
||||||
}
|
}
|
||||||
@@ -60,7 +64,8 @@ class BannerItem
|
|||||||
->paginate([
|
->paginate([
|
||||||
'list_rows' => $param['size'],
|
'list_rows' => $param['size'],
|
||||||
'page' => $param['page']
|
'page' => $param['page']
|
||||||
]);
|
])
|
||||||
|
->each(fn($item) => $item->image = thumb($item->image));
|
||||||
|
|
||||||
return success('获取成功', $banner_items);
|
return success('获取成功', $banner_items);
|
||||||
}
|
}
|
||||||
@@ -70,12 +75,13 @@ class BannerItem
|
|||||||
{
|
{
|
||||||
$id = request()->param('id');
|
$id = request()->param('id');
|
||||||
|
|
||||||
$banner_item = SysBannerItemModel::with('prod_mapping.category')
|
$banner_item = SysBannerItemModel::with('prodMapping.category')
|
||||||
->withoutField([
|
->withoutField([
|
||||||
'created_at',
|
'created_at',
|
||||||
'updated_at',
|
'updated_at',
|
||||||
'deleted_at'
|
'deleted_at'
|
||||||
])
|
])
|
||||||
|
->append(['rel_prod_cate_id', 'rel_prod_cate_name']) // 绑定产品分类关联模型中字段到父模型中
|
||||||
->find($id);
|
->find($id);
|
||||||
if (empty($banner_item)) {
|
if (empty($banner_item)) {
|
||||||
return error('横幅不存在');
|
return error('横幅不存在');
|
||||||
@@ -99,6 +105,7 @@ class BannerItem
|
|||||||
'desc_txt_color',
|
'desc_txt_color',
|
||||||
'type',
|
'type',
|
||||||
'image',
|
'image',
|
||||||
|
'extra_image',
|
||||||
'video',
|
'video',
|
||||||
'link_to' => 'custom',
|
'link_to' => 'custom',
|
||||||
'link',
|
'link',
|
||||||
@@ -153,6 +160,7 @@ class BannerItem
|
|||||||
'desc_txt_color',
|
'desc_txt_color',
|
||||||
'type',
|
'type',
|
||||||
'image',
|
'image',
|
||||||
|
'extra_image',
|
||||||
'video',
|
'video',
|
||||||
'link_to',
|
'link_to',
|
||||||
'link',
|
'link',
|
||||||
@@ -181,10 +189,7 @@ class BannerItem
|
|||||||
|
|
||||||
// 更新关联的产品分类
|
// 更新关联的产品分类
|
||||||
if (!empty($put['rel_prod_cate_id'])) {
|
if (!empty($put['rel_prod_cate_id'])) {
|
||||||
$ok = SysBannerProdCateMappingModel::where('banner_item_id', '=', $id)->delete();
|
SysBannerProdCateMappingModel::where('banner_item_id', '=', $id)->delete();
|
||||||
if (!$ok) {
|
|
||||||
throw new InvalidOperateException('更新横幅与产品分类关联失败');
|
|
||||||
}
|
|
||||||
$mapping = SysBannerProdCateMappingModel::create([
|
$mapping = SysBannerProdCateMappingModel::create([
|
||||||
'banner_item_id' => $id,
|
'banner_item_id' => $id,
|
||||||
'product_category_id' => $put['rel_prod_cate_id']
|
'product_category_id' => $put['rel_prod_cate_id']
|
||||||
@@ -239,6 +244,7 @@ class BannerItem
|
|||||||
'desc_txt_color' => '描述字体颜色',
|
'desc_txt_color' => '描述字体颜色',
|
||||||
'type' => '前台显示类型',
|
'type' => '前台显示类型',
|
||||||
'image' => '图片地址',
|
'image' => '图片地址',
|
||||||
|
'extra_image' => '额外图片地址',
|
||||||
'video' => '视频地址',
|
'video' => '视频地址',
|
||||||
'link_to' => '链接类型',
|
'link_to' => '链接类型',
|
||||||
'link' => '链接地址',
|
'link' => '链接地址',
|
||||||
@@ -271,6 +277,7 @@ class BannerItem
|
|||||||
'item.desc_txt_color',
|
'item.desc_txt_color',
|
||||||
'item.type',
|
'item.type',
|
||||||
'item.image',
|
'item.image',
|
||||||
|
'item.extra_image',
|
||||||
'item.video',
|
'item.video',
|
||||||
'item.link_to',
|
'item.link_to',
|
||||||
'item.link',
|
'item.link',
|
||||||
@@ -282,8 +289,12 @@ class BannerItem
|
|||||||
->where('banner.language_id', '=', request()->lang_id)
|
->where('banner.language_id', '=', request()->lang_id)
|
||||||
->where(function($query) use($param){
|
->where(function($query) use($param){
|
||||||
if (!empty($param['banner_id'])) {
|
if (!empty($param['banner_id'])) {
|
||||||
|
if (is_array($param['banner_id']) || str_contains($param['banner_id'], ',')) {
|
||||||
|
$query->whereIn('item.banner_id', $param['banner_id']);
|
||||||
|
} else {
|
||||||
$query->where('item.banner_id', '=', $param['banner_id']);
|
$query->where('item.banner_id', '=', $param['banner_id']);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (!empty($param['title'])) {
|
if (!empty($param['title'])) {
|
||||||
$query->where('item.title', 'like', "%{$param['title']}%");
|
$query->where('item.title', 'like', "%{$param['title']}%");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ class Faq
|
|||||||
->paginate([
|
->paginate([
|
||||||
'list_rows' => $param['size'],
|
'list_rows' => $param['size'],
|
||||||
'page' => $param['page'],
|
'page' => $param['page'],
|
||||||
]);
|
])
|
||||||
|
?->each(fn($item) => $item->image = thumb($item->image));
|
||||||
|
|
||||||
return success('获取成功', $faqs);
|
return success('获取成功', $faqs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ declare (strict_types = 1);
|
|||||||
namespace app\admin\controller\v1;
|
namespace app\admin\controller\v1;
|
||||||
|
|
||||||
use app\admin\model\v1\SysOperateLog;
|
use app\admin\model\v1\SysOperateLog;
|
||||||
|
use app\admin\model\v1\SysUserModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 操作日志控制器
|
* 操作日志控制器
|
||||||
@@ -21,11 +22,15 @@ class OperateLog
|
|||||||
'size/d'
|
'size/d'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$logs = SysOperateLog::hasWhere('user', function($query) use($param) {
|
$logs = SysOperateLog::field([
|
||||||
|
'SysOperateLog.*',
|
||||||
|
'SysUserModel.username'
|
||||||
|
])
|
||||||
|
->hasWhere('user', function($query) use($param) {
|
||||||
if (!empty($param['operator'])) {
|
if (!empty($param['operator'])) {
|
||||||
$query->where('username', 'like', "{$param['operator']}");
|
$query->where('username', 'like', "%{$param['operator']}%");
|
||||||
}
|
}
|
||||||
$query->field(['id', 'username']);
|
$query->withTrashed()->field(['id', 'username']);
|
||||||
})
|
})
|
||||||
->withSearch(['title', 'created_at'], [
|
->withSearch(['title', 'created_at'], [
|
||||||
'title' => $param['title'] ?? null,
|
'title' => $param['title'] ?? null,
|
||||||
@@ -36,7 +41,6 @@ class OperateLog
|
|||||||
'list_rows' => $param['size'] ?? 10,
|
'list_rows' => $param['size'] ?? 10,
|
||||||
'page' => $param['page'] ?? 1,
|
'page' => $param['page'] ?? 1,
|
||||||
])
|
])
|
||||||
->bindAttr('user', ['username'])
|
|
||||||
->hidden(['user_id', 'user']);
|
->hidden(['user_id', 'user']);
|
||||||
|
|
||||||
return success('获取成功', $logs);
|
return success('获取成功', $logs);
|
||||||
|
|||||||
@@ -63,7 +63,8 @@ class Product
|
|||||||
'page' => $param['page'],
|
'page' => $param['page'],
|
||||||
])
|
])
|
||||||
->bindAttr('category', ['category_name' => 'name'])
|
->bindAttr('category', ['category_name' => 'name'])
|
||||||
->hidden(['category_id', 'category']);
|
->hidden(['category_id', 'category'])
|
||||||
|
?->each(fn($item) => $item->cover_image = thumb($item->cover_image));
|
||||||
|
|
||||||
return success('获取成功', $products);
|
return success('获取成功', $products);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,8 @@ class ProductTrash
|
|||||||
'page' => $param['page'],
|
'page' => $param['page'],
|
||||||
])
|
])
|
||||||
->bindAttr('category', ['category_name' => 'name'])
|
->bindAttr('category', ['category_name' => 'name'])
|
||||||
->hidden(['category_id', 'category']);
|
->hidden(['category_id', 'category'])
|
||||||
|
?->each(fn($item) => $item->cover_image = thumb($item->cover_image));
|
||||||
|
|
||||||
return success('获取成功', $products);
|
return success('获取成功', $products);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,6 +141,61 @@ class SiteConfig
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据分组获取配置
|
||||||
|
public function getByGroupUniqueLabel($unique_label)
|
||||||
|
{
|
||||||
|
$configs = SysConfigModel::alias('c')
|
||||||
|
->field([
|
||||||
|
'c.id',
|
||||||
|
'c.title',
|
||||||
|
'c.name',
|
||||||
|
'c.value',
|
||||||
|
])
|
||||||
|
->join(SysConfigGroupModel::getTable(). ' g', 'g.id = c.group_id')
|
||||||
|
->where('g.language_id', '=', request()->lang_id)
|
||||||
|
->where('g.unique_label', '=', $unique_label)
|
||||||
|
->where('g.status', '=', 1)
|
||||||
|
->order(['c.sort' => 'asc', 'c.id' => 'desc'])
|
||||||
|
->select()
|
||||||
|
->each(function ($item) {
|
||||||
|
// 修改字段为null的输出为空字符串
|
||||||
|
$keys = array_keys($item->toArray());
|
||||||
|
foreach ($keys as $key) {
|
||||||
|
if (is_null($item[$key])) {
|
||||||
|
$item[$key] = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $item;
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
if (!empty($configs)) {
|
||||||
|
$configs_map = [];
|
||||||
|
foreach ($configs as $cfg) {
|
||||||
|
$current = &$configs_map;
|
||||||
|
|
||||||
|
// 根据name中"."拆分为多维数组
|
||||||
|
$parts = explode('.', $cfg['name']);
|
||||||
|
foreach ($parts as $part) {
|
||||||
|
if (!isset($current[$part])) {
|
||||||
|
$current[$part] = [];
|
||||||
|
}
|
||||||
|
$current = &$current[$part];
|
||||||
|
}
|
||||||
|
$current = [
|
||||||
|
'id' => $cfg['id'],
|
||||||
|
'title' => $cfg['title'],
|
||||||
|
'name' => $cfg['name'],
|
||||||
|
'value' => $cfg['value']
|
||||||
|
];
|
||||||
|
}
|
||||||
|
unset($current);
|
||||||
|
|
||||||
|
return $configs_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
// 更新配置
|
// 更新配置
|
||||||
public function update()
|
public function update()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -146,7 +146,11 @@ class System
|
|||||||
'name' => '产品分类',
|
'name' => '产品分类',
|
||||||
'link_to' => 'product_category',
|
'link_to' => 'product_category',
|
||||||
'data' => array_to_tree(array_map(function($item) {
|
'data' => array_to_tree(array_map(function($item) {
|
||||||
|
if ($item['pid'] == 0) {
|
||||||
$item['url'] = (string)url('/index/product/category/'. $item['id']);
|
$item['url'] = (string)url('/index/product/category/'. $item['id']);
|
||||||
|
} else {
|
||||||
|
$item['url'] = (string)url('/index/product/subcategory/' . $item['id']);
|
||||||
|
}
|
||||||
return $item;
|
return $item;
|
||||||
}, $product_category), 0, 'pid', false, false)
|
}, $product_category), 0, 'pid', false, false)
|
||||||
],
|
],
|
||||||
@@ -154,6 +158,11 @@ class System
|
|||||||
'name' => '产品',
|
'name' => '产品',
|
||||||
'link_to' => 'product',
|
'link_to' => 'product',
|
||||||
'data' => array_to_tree($product_category, 0, 'pid', false, false)
|
'data' => array_to_tree($product_category, 0, 'pid', false, false)
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => '其他内页',
|
||||||
|
'link_to' => 'system_page',
|
||||||
|
'data' => self::getSystemOtherPages()
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -219,23 +228,162 @@ class System
|
|||||||
return $data->toArray();
|
return $data->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取系统其他内页
|
||||||
|
static private function getSystemOtherPages()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'id' => 1,
|
||||||
|
'name' => '首页',
|
||||||
|
'url' => (string)url('/index/index/index')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 2,
|
||||||
|
'name' => '新品上市',
|
||||||
|
'url' => (string)url('/index/product/newpro')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 3,
|
||||||
|
'name' => '附件下载',
|
||||||
|
'url' => (string)url('/index/attachment/index')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 4,
|
||||||
|
'name' => '问答中心',
|
||||||
|
'url' => (string)url('/index/faq/index')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 5,
|
||||||
|
'name' => '关于我们',
|
||||||
|
'url' => '',
|
||||||
|
'children' => [
|
||||||
|
[
|
||||||
|
'id' => 51,
|
||||||
|
'name' => '品牌介绍',
|
||||||
|
'url' => (string)url('/index/aboutus/introduction')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 52,
|
||||||
|
'name' => '品牌故事',
|
||||||
|
'url' => (string)url('/index/aboutus/story')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 53,
|
||||||
|
'name' => '品牌历程',
|
||||||
|
'url' => (string)url('/index/aboutus/mileage')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 54,
|
||||||
|
'name' => '文化介绍',
|
||||||
|
'url' => (string)url('/index/aboutus/culture')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 55,
|
||||||
|
'name' => '售后政策',
|
||||||
|
'url' => (string)url('/index/aboutus/policy')
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 6,
|
||||||
|
'name' => '联系我们',
|
||||||
|
'url' => '',
|
||||||
|
'children' => [
|
||||||
|
[
|
||||||
|
'id' => 61,
|
||||||
|
'name' => '联系我们',
|
||||||
|
'url' => (string)url('/index/contactus/index')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 62,
|
||||||
|
'name' => '留言联系我们',
|
||||||
|
'url' => (string)url('/index/contactus/message')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 63,
|
||||||
|
'name' => '留言成为分销商',
|
||||||
|
'url' => (string)url('/index/contactus/distributor')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 64,
|
||||||
|
'name' => '留言批量购买',
|
||||||
|
'url' => (string)url('/index/contactus/bulkbuy')
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 7,
|
||||||
|
'name' => 'NAS专题',
|
||||||
|
'url' => '',
|
||||||
|
'children' => [
|
||||||
|
[
|
||||||
|
'id' => 71,
|
||||||
|
'name' => '首页',
|
||||||
|
'url' => (string)url('/index/topic/nas/index')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 72,
|
||||||
|
'name' => '产品体验',
|
||||||
|
'url' => (string)url('/index/topic/nas/product')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 73,
|
||||||
|
'name' => '客户合作',
|
||||||
|
'url' => (string)url('/index/topic/nas/cooperation')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 74,
|
||||||
|
'name' => '帮助中心',
|
||||||
|
'url' => (string)url('/index/topic/nas/help')
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 75,
|
||||||
|
'name' => '软件下载',
|
||||||
|
'url' => (string)url('/index/topic/nas/download')
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
// 根据系统页面url获取回显数据项
|
// 根据系统页面url获取回显数据项
|
||||||
static public function getEchoDataBySystemPageUrl($link_to, $link)
|
static public function getEchoDataBySystemPageUrl($link_to, $link)
|
||||||
{
|
{
|
||||||
if ('custom' == $link_to) return [];
|
if ('custom' == $link_to || empty($link)) return [];
|
||||||
|
|
||||||
$data = [];
|
$data = [];
|
||||||
|
$params = [];
|
||||||
$url = parse_url($link, PHP_URL_QUERY);
|
$url = parse_url($link, PHP_URL_QUERY);
|
||||||
if (empty($url)) return [];
|
if (empty($url)) {
|
||||||
|
$parts = explode('/', trim($link, '/'));
|
||||||
|
$params['id'] = (int)str_replace('.html', '', end($parts));
|
||||||
|
} else {
|
||||||
parse_str($url, $params);
|
parse_str($url, $params);
|
||||||
|
}
|
||||||
|
|
||||||
switch ($link_to) {
|
switch ($link_to) {
|
||||||
|
case 'article_category':
|
||||||
|
if (empty($params['id'])) return [];
|
||||||
|
$data = ArticleCategoryModel::field(['id', 'name'])->bypk($params['id'])->find();
|
||||||
|
break;
|
||||||
case 'article':
|
case 'article':
|
||||||
|
if (empty($params['id'])) return [];
|
||||||
$data = ArticleModel::field(['id', 'title' => 'name'])->bypk($params['id'])->find();
|
$data = ArticleModel::field(['id', 'title' => 'name'])->bypk($params['id'])->find();
|
||||||
break;
|
break;
|
||||||
|
case 'product_category':
|
||||||
|
if (empty($params['id'])) return [];
|
||||||
|
$data = ProductCategoryModel::field(['id', 'name'])->bypk($params['id'])->find();
|
||||||
|
break;
|
||||||
case 'product':
|
case 'product':
|
||||||
|
if (empty($params['id'])) return [];
|
||||||
$data = ProductModel::field(['id', 'name'])->bypk($params['id'])->find();
|
$data = ProductModel::field(['id', 'name'])->bypk($params['id'])->find();
|
||||||
break;
|
break;
|
||||||
|
case 'system_page':
|
||||||
|
$data = self::filterSystemOtherPage(self::getSystemOtherPages(), function($item) use ($params, $link) {
|
||||||
|
if (empty($params['id'])) return $item['url'] == $link;
|
||||||
|
return $item['id'] == $params['id'];
|
||||||
|
});
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return [];
|
return [];
|
||||||
break;
|
break;
|
||||||
@@ -248,4 +396,22 @@ class System
|
|||||||
'link' => $link
|
'link' => $link
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据条件过滤结果
|
||||||
|
static private function filterSystemOtherPage(array $data, callable $callback): array
|
||||||
|
{
|
||||||
|
foreach ($data as $it) {
|
||||||
|
if ($callback($it)) {
|
||||||
|
return $it;
|
||||||
|
}
|
||||||
|
if (isset($it['children'])) {
|
||||||
|
$child = self::filterSystemOtherPage($it['children'], $callback);
|
||||||
|
if (!empty($child)) {
|
||||||
|
return $child;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -7,6 +7,7 @@ use app\admin\model\v1\SysImageUploadRecordModel;
|
|||||||
use app\admin\model\v1\SysVideoUploadRecordModel;
|
use app\admin\model\v1\SysVideoUploadRecordModel;
|
||||||
use app\admin\model\v1\SysAttachmentUploadRecordModel;
|
use app\admin\model\v1\SysAttachmentUploadRecordModel;
|
||||||
use Intervention\Image\ImageManager;
|
use Intervention\Image\ImageManager;
|
||||||
|
use Intervention\Image\Typography\FontFactory;
|
||||||
use think\facade\Filesystem;
|
use think\facade\Filesystem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,7 +31,7 @@ class Upload
|
|||||||
$max_size = strtobytes(env('ADMIN_API.MAX_IMAGE_SIZE', '1mb'));
|
$max_size = strtobytes(env('ADMIN_API.MAX_IMAGE_SIZE', '1mb'));
|
||||||
$validate = validate([
|
$validate = validate([
|
||||||
'module' => 'require|max:64',
|
'module' => 'require|max:64',
|
||||||
'image' => "fileSize:$max_size|fileExt:jpg,jpeg,png,gif"
|
'image' => "fileSize:$max_size|fileExt:jpg,jpeg,png,gif,webp"
|
||||||
]);
|
]);
|
||||||
if (!$validate->check(['module' => $param['module'], 'image' => $file])) {
|
if (!$validate->check(['module' => $param['module'], 'image' => $file])) {
|
||||||
return error($validate->getError());
|
return error($validate->getError());
|
||||||
@@ -41,12 +42,86 @@ class Upload
|
|||||||
$filemd5 = $file->md5();
|
$filemd5 = $file->md5();
|
||||||
$filesha1 = $file->sha1();
|
$filesha1 = $file->sha1();
|
||||||
|
|
||||||
$image_model = SysImageUploadRecordModel::md5($filemd5)->find();
|
// 获取图片上传配置
|
||||||
|
list(
|
||||||
|
'filename_keep' => $filename_keep,
|
||||||
|
'filemd5_unique' => $filemd5_unique
|
||||||
|
) = $this->getUploadOptions('upload_image');
|
||||||
|
// 是否需要根据文件MD5值检查文件是否已存在
|
||||||
|
$image_model = $filemd5_unique ? SysImageUploadRecordModel::md5($filemd5)->find() : null;
|
||||||
if (is_null($image_model)) {
|
if (is_null($image_model)) {
|
||||||
$filename = Filesystem::disk('image')->putFile($param['module'], $file);
|
// 检查是否需要保留原文件名生成器
|
||||||
// 生成缩略图
|
$name_rule = fn() => $filename_keep ? $this->filenameGenerator($file) : null;
|
||||||
$image_manager = new ImageManager(new \Intervention\Image\Drivers\Imagick\Driver());
|
$filename = Filesystem::disk('image')->putFile($param['module'], $file, $name_rule());
|
||||||
|
// 处理图片
|
||||||
|
$image_manager = ImageManager::imagick();
|
||||||
$image = $image_manager->read('.' . $storage . '/' . $filename);
|
$image = $image_manager->read('.' . $storage . '/' . $filename);
|
||||||
|
|
||||||
|
// 水印
|
||||||
|
list(
|
||||||
|
'enabled' => $enabled,
|
||||||
|
'type' => $type,
|
||||||
|
'text_options' => $text_options,
|
||||||
|
'image_options' => $image_options
|
||||||
|
) = $this->getWatermarkOptions();
|
||||||
|
if ($enabled) {
|
||||||
|
// 图片水印
|
||||||
|
if ($type == 'IMAGE' && $image_options['image'] != '') {
|
||||||
|
// 读取水印图片
|
||||||
|
$watermark_image = $image_manager->read(public_path() . $image_options['image']);
|
||||||
|
// 缩放水印图片
|
||||||
|
$watermark_image->scale($image_options['width'], $image_options['height']);
|
||||||
|
// 绘制水印图片
|
||||||
|
$image->place(
|
||||||
|
$watermark_image,
|
||||||
|
$image_options['position'],
|
||||||
|
$image_options['offset_x'],
|
||||||
|
$image_options['offset_y'],
|
||||||
|
$image_options['opacity']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// 文字水印
|
||||||
|
else if ($type == 'TEXT' && $text_options['txt'] != '') {
|
||||||
|
// 原图宽度
|
||||||
|
$origin_width = $image->width();
|
||||||
|
// 原图高度
|
||||||
|
$origin_height = $image->height();
|
||||||
|
|
||||||
|
$font_factory = new FontFactory(function(FontFactory $font) use($text_options) {
|
||||||
|
// 设置字体
|
||||||
|
$font->filename(public_path() . $text_options['font']);
|
||||||
|
// 设置字体大小
|
||||||
|
$font->size($text_options['size']);
|
||||||
|
// 设置字体颜色及透明度
|
||||||
|
$opacity = $text_options['opacity'] > 0 ? dechex((int)ceil(255 * ($text_options['opacity'] / 100))) : '00';
|
||||||
|
$font->color($text_options['color'] . $opacity);
|
||||||
|
$font->align('left');
|
||||||
|
$font->valign('top');
|
||||||
|
});
|
||||||
|
// 文字尺寸
|
||||||
|
$font_rect = $image->driver()->fontProcessor()->boxSize($text_options['txt'], $font_factory());
|
||||||
|
// 计算偏移量
|
||||||
|
list($offset_x, $offset_y) = $this->scaleTxtOffsetXYByPosition(
|
||||||
|
$text_options['position'],
|
||||||
|
$text_options['offset_x'],
|
||||||
|
$text_options['offset_y'],
|
||||||
|
$origin_width,
|
||||||
|
$origin_height,
|
||||||
|
$font_rect->width(),
|
||||||
|
$font_rect->height()
|
||||||
|
);
|
||||||
|
// 绘制文字
|
||||||
|
$image->text(
|
||||||
|
$text_options['txt'],
|
||||||
|
$offset_x,
|
||||||
|
$offset_y,
|
||||||
|
$font_factory()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$image->save('.'. $storage. '/'. $filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 缩略图
|
||||||
$image->scale(200, 200);
|
$image->scale(200, 200);
|
||||||
$idx = strrpos($filename, '.');
|
$idx = strrpos($filename, '.');
|
||||||
$thumb_filename = mb_substr($filename, 0, $idx) . '_thumb.' . mb_substr($filename, $idx + 1);
|
$thumb_filename = mb_substr($filename, 0, $idx) . '_thumb.' . mb_substr($filename, $idx + 1);
|
||||||
@@ -79,6 +154,117 @@ class Upload
|
|||||||
|
|
||||||
return error('上传失败');
|
return error('上传失败');
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 文件名生成回调
|
||||||
|
*
|
||||||
|
* @param \think\file\UploadedFile $file
|
||||||
|
* @return callable
|
||||||
|
*/
|
||||||
|
private function filenameGenerator(\think\file\UploadedFile $file): callable
|
||||||
|
{
|
||||||
|
return fn() => date('Ymd') . '/' . pathinfo($file->getOriginalName(), PATHINFO_FILENAME);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 获取上传配置
|
||||||
|
*
|
||||||
|
* @param string $module
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function getUploadOptions($module)
|
||||||
|
{
|
||||||
|
$config_model = new \app\admin\controller\v1\SiteConfig;
|
||||||
|
$config = $config_model->getByGroupUniqueLabel('upload');
|
||||||
|
$options = data_get($config, $module, []);
|
||||||
|
throw_if(empty($options), '上传配置错误');
|
||||||
|
return [
|
||||||
|
'filename_keep' => (int)data_get($options, 'filename_keep.value', 0) == 1,
|
||||||
|
'filemd5_unique' => (int)data_get($options, 'filemd5_unique.value', 0) == 1,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 获取水印配置
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function getWatermarkOptions(): array
|
||||||
|
{
|
||||||
|
$config_model = new \app\admin\controller\v1\SiteConfig;
|
||||||
|
$watermark_config = $config_model->getByGroupUniqueLabel('watermark');
|
||||||
|
|
||||||
|
$opacity = data_get($watermark_config, 'watermark_opacity.value', 100);
|
||||||
|
if ($opacity == '') {
|
||||||
|
$opacity = 100;
|
||||||
|
}
|
||||||
|
return [
|
||||||
|
'enabled' => data_get($watermark_config, 'watermark_enabled.value', 0) == 1,
|
||||||
|
'type' => data_get($watermark_config, 'watermark_type.value', ''),
|
||||||
|
'text_options' => [
|
||||||
|
'txt' => data_get($watermark_config, 'watermark_text_value.value', ''),
|
||||||
|
'font' => data_get($watermark_config, 'watermark_text_font.value', ''),
|
||||||
|
'size' => (float)data_get($watermark_config, 'watermark_text_size.value', 12)?:12,
|
||||||
|
'color' => data_get($watermark_config, 'watermark_text_color.value', '#000000')?:'#000000',
|
||||||
|
'position' => data_get($watermark_config, 'watermark_position.value', 'top-left')?:'top-left',
|
||||||
|
'offset_x' => (int)data_get($watermark_config, 'watermark_offset_x.value', 0),
|
||||||
|
'offset_y' => (int)data_get($watermark_config, 'watermark_offset_y.value', 0),
|
||||||
|
'opacity' => (int)$opacity,
|
||||||
|
],
|
||||||
|
'image_options' => [
|
||||||
|
'image' => data_get($watermark_config, 'watermark_image_value.value', ''),
|
||||||
|
'width' => (int)data_get($watermark_config, 'watermark_image_width.value')?:null,
|
||||||
|
'height' => (int)data_get($watermark_config, 'watermark_image_height.value')?:null,
|
||||||
|
'position' => data_get($watermark_config, 'watermark_position.value', 'top-left')?:'top-left',
|
||||||
|
'offset_x' => (int)data_get($watermark_config, 'watermark_offset_x.value', 0),
|
||||||
|
'offset_y' => (int)data_get($watermark_config, 'watermark_offset_y.value', 0),
|
||||||
|
'opacity' => (int)$opacity,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 计算文体水印偏移量
|
||||||
|
*
|
||||||
|
* @param string $position
|
||||||
|
* @param integer $offset_x
|
||||||
|
* @param integer $offset_y
|
||||||
|
* @param integer $image_width
|
||||||
|
* @param integer $image_height
|
||||||
|
* @param integer $txt_width
|
||||||
|
* @param integer $txt_height
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function scaleTxtOffsetXYByPosition(string $position, int $offset_x, int $offset_y, int $image_width, int $image_height, int $txt_width, int $txt_height)
|
||||||
|
{
|
||||||
|
switch ($position) {
|
||||||
|
case 'top-left':
|
||||||
|
// top-left:左上角
|
||||||
|
return [$offset_x, $offset_y];
|
||||||
|
case 'top-right':
|
||||||
|
// top-right:右上角
|
||||||
|
return [(int)($image_width-$txt_width-$offset_x), $offset_y];
|
||||||
|
case 'top':
|
||||||
|
// top:上 - 水平居中
|
||||||
|
return [(int)(($image_width-$txt_width+$offset_x)/2), $offset_y];
|
||||||
|
case 'left':
|
||||||
|
// left:左 - 垂直居中
|
||||||
|
return [$offset_x, (int)(($image_height-$txt_height)/2+$offset_y)];
|
||||||
|
case 'center':
|
||||||
|
// center:水平垂直居中
|
||||||
|
return [(int)(($image_width-$txt_width)/2+$offset_x), (int)(($image_height-$txt_height)/2+$offset_y)];
|
||||||
|
case 'right':
|
||||||
|
// right:右 - 垂直居中
|
||||||
|
return [(int)($image_width-$txt_width-$offset_x), (int)(($image_height-$txt_height)/2+$offset_y)];
|
||||||
|
case'bottom':
|
||||||
|
// bottom:下 - 水平居中
|
||||||
|
return [(int)(($image_width-$txt_width+$offset_x)/2), (int)($image_height-$txt_height-$offset_y)];
|
||||||
|
case'bottom-left':
|
||||||
|
// bottom-left:左下角
|
||||||
|
return [$offset_x, (int)($image_height-$txt_height-$offset_y)];
|
||||||
|
case'bottom-right':
|
||||||
|
// bottom-right:右下角
|
||||||
|
return [(int)($image_width-$txt_width-$offset_x), (int)($image_height-$txt_height-$offset_y)];
|
||||||
|
default:
|
||||||
|
throw new \InvalidArgumentException('Invalid position');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传视频
|
* 上传视频
|
||||||
@@ -109,9 +295,17 @@ class Upload
|
|||||||
$filemd5 = $file->md5();
|
$filemd5 = $file->md5();
|
||||||
$filesha1 = $file->sha1();
|
$filesha1 = $file->sha1();
|
||||||
|
|
||||||
$video = SysVideoUploadRecordModel::md5($filemd5)->find();
|
// 获取视频上传配置
|
||||||
|
list(
|
||||||
|
'filename_keep' => $filename_keep,
|
||||||
|
'filemd5_unique' => $filemd5_unique
|
||||||
|
) = $this->getUploadOptions('upload_video');
|
||||||
|
// 是否需要根据文件MD5值检查文件是否已存在
|
||||||
|
$video = $filemd5_unique ? SysVideoUploadRecordModel::md5($filemd5)->find() : null;
|
||||||
if (is_null($video)) {
|
if (is_null($video)) {
|
||||||
$filename = Filesystem::disk('video')->putFile($param['module'], $file);
|
// 检查是否需要保留原文件名
|
||||||
|
$name_rule = fn() => $filename_keep ? $this->filenameGenerator($file) : null;
|
||||||
|
$filename = Filesystem::disk('video')->putFile($param['module'], $file, $name_rule());
|
||||||
|
|
||||||
// 保存视频
|
// 保存视频
|
||||||
$video = new SysVideoUploadRecordModel();
|
$video = new SysVideoUploadRecordModel();
|
||||||
@@ -152,7 +346,7 @@ class Upload
|
|||||||
try {
|
try {
|
||||||
$max_size = strtobytes(env('ADMIN_API.MAX_ATTACHMENT_SIZE', '100mb'));
|
$max_size = strtobytes(env('ADMIN_API.MAX_ATTACHMENT_SIZE', '100mb'));
|
||||||
$validate = validate([
|
$validate = validate([
|
||||||
'attachment' => "fileSize:$max_size|fileExt:biz,bz,bz2,gz,tgz,zip,rar,7z,doc,docx,xls,xlsx,csv,ppt,pptx,pdf,txt,jpg,jpeg,png"
|
'attachment' => "fileSize:$max_size|fileExt:biz,bz,bz2,gz,tgz,zip,rar,7z,doc,docx,xls,xlsx,csv,ppt,pptx,pdf,txt,jpg,jpeg,png,webp,ttf"
|
||||||
]);
|
]);
|
||||||
if (!$validate->check(['attachment' => $file])) {
|
if (!$validate->check(['attachment' => $file])) {
|
||||||
return error($validate->getError());
|
return error($validate->getError());
|
||||||
@@ -161,9 +355,17 @@ class Upload
|
|||||||
$filemd5 = $file->md5();
|
$filemd5 = $file->md5();
|
||||||
$filesha1 = $file->sha1();
|
$filesha1 = $file->sha1();
|
||||||
|
|
||||||
$attachment = SysAttachmentUploadRecordModel::md5($filemd5)->find();
|
// 获取附件上传配置
|
||||||
|
list(
|
||||||
|
'filename_keep' => $filename_keep,
|
||||||
|
'filemd5_unique' => $filemd5_unique
|
||||||
|
) = $this->getUploadOptions('upload_attachment');
|
||||||
|
// 是否需要根据文件MD5值检查文件是否已存在
|
||||||
|
$attachment = $filemd5_unique ? SysAttachmentUploadRecordModel::md5($filemd5)->find() : null;
|
||||||
if (is_null($attachment)) {
|
if (is_null($attachment)) {
|
||||||
$filename = Filesystem::disk('public')->putFile('attachments', $file);
|
// 检查是否需要保留原文件名
|
||||||
|
$name_rule = fn() => $filename_keep ? $this->filenameGenerator($file) : null;
|
||||||
|
$filename = Filesystem::disk('public')->putFile('attachments', $file, $name_rule());
|
||||||
|
|
||||||
// 保存视频
|
// 保存视频
|
||||||
$attachment = new SysAttachmentUploadRecordModel();
|
$attachment = new SysAttachmentUploadRecordModel();
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ class Video
|
|||||||
'page' => $params['page'],
|
'page' => $params['page'],
|
||||||
])
|
])
|
||||||
->bindAttr('category', ['category_name'])
|
->bindAttr('category', ['category_name'])
|
||||||
->hidden(['category', 'category_id']);
|
->hidden(['category', 'category_id'])
|
||||||
|
?->each(fn($item) => $item->image = thumb($item->image));
|
||||||
|
|
||||||
return success('获取成功', $videos);
|
return success('获取成功', $videos);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,8 @@ class VideoTrash
|
|||||||
'page' => $params['page'],
|
'page' => $params['page'],
|
||||||
])
|
])
|
||||||
->bindAttr('category', ['category_name'])
|
->bindAttr('category', ['category_name'])
|
||||||
->hidden(['category_id', 'category']);
|
->hidden(['category_id', 'category'])
|
||||||
|
?->each(fn($item) => $item->image = thumb($item->image));
|
||||||
|
|
||||||
return success('获取成功', $videos);
|
return success('获取成功', $videos);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,6 +85,10 @@ class ArticleModel extends ArticleBaseModel
|
|||||||
// 分类查询
|
// 分类查询
|
||||||
public function scopeCategory($query, $value)
|
public function scopeCategory($query, $value)
|
||||||
{
|
{
|
||||||
|
if (is_array($value) || str_contains($value, ',')) {
|
||||||
|
$query->whereIn('category_id', $value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$query->where('category_id', '=', $value);
|
$query->where('category_id', '=', $value);
|
||||||
}
|
}
|
||||||
public function scopeCategoryNullable($query, $value)
|
public function scopeCategoryNullable($query, $value)
|
||||||
@@ -92,6 +96,10 @@ class ArticleModel extends ArticleBaseModel
|
|||||||
if (is_null($value)) {
|
if (is_null($value)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (is_array($value) || str_contains($value, ',')) {
|
||||||
|
$query->whereIn('category_id', $value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$query->where('category_id', '=', $value);
|
$query->where('category_id', '=', $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,6 +58,10 @@ class AttachmentModel extends AttachmentBaseModel
|
|||||||
public function scopeCategoryId($query, $value)
|
public function scopeCategoryId($query, $value)
|
||||||
{
|
{
|
||||||
if (empty($value)) return;
|
if (empty($value)) return;
|
||||||
|
if (is_array($value) || str_contains($value, ',')) {
|
||||||
|
$query->whereIn('category_id', $value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$query->where('category_id', '=', $value);
|
$query->where('category_id', '=', $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,12 @@ class ProductCategoryModel extends ProductCategoryBaseModel
|
|||||||
$query->where('language_id', '=', $value);
|
$query->where('language_id', '=', $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 所属产品目录分类id查询
|
||||||
|
public function scopeTcoId($query, $value)
|
||||||
|
{
|
||||||
|
$query->where('related_tco_category', '=', $value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据是否显示查询
|
* 根据是否显示查询
|
||||||
* @param $query
|
* @param $query
|
||||||
|
|||||||
@@ -65,13 +65,27 @@ class ProductModel extends ProductBaseModel
|
|||||||
if (is_null($value)) {
|
if (is_null($value)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (is_array($value) || str_contains($value, ',')) {
|
||||||
|
$query->whereIn('category_id', $value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$query->where('category_id', '=', $value);
|
$query->where('category_id', '=', $value);
|
||||||
}
|
}
|
||||||
public function scopeCategory($query, $value)
|
public function scopeCategory($query, $value)
|
||||||
{
|
{
|
||||||
|
if (is_array($value) || str_contains($value, ',')) {
|
||||||
|
$query->whereIn('category_id', $value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$query->where('category_id', '=', $value);
|
$query->where('category_id', '=', $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 规格型号查询
|
||||||
|
public function scopeSpu($query, $spu)
|
||||||
|
{
|
||||||
|
$query->where('spu', '=', $spu);
|
||||||
|
}
|
||||||
|
|
||||||
// 启用状态查询
|
// 启用状态查询
|
||||||
public function scopeEnabled($query)
|
public function scopeEnabled($query)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,6 +23,18 @@ class ProductTcoCategoryModel extends ProductTcoCategoryBaseModel
|
|||||||
$query->where('language_id', '=', $value);
|
$query->where('language_id', '=', $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据 tco_id 查询
|
||||||
|
public function scopeTcoId($query, $value)
|
||||||
|
{
|
||||||
|
$query->where('tco_id', '=', $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据ERP Code查询
|
||||||
|
public function scopeErpCode($query, $value)
|
||||||
|
{
|
||||||
|
$query->where('erp_code', '=', $value);
|
||||||
|
}
|
||||||
|
|
||||||
// 按分类名称搜索
|
// 按分类名称搜索
|
||||||
public function searchNameAttr($query, $value, $data)
|
public function searchNameAttr($query, $value, $data)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,10 +17,8 @@ class SysBannerItemModel extends SysBannerItemBaseModel
|
|||||||
// 软删除字段
|
// 软删除字段
|
||||||
protected $deleteTime = 'deleted_at';
|
protected $deleteTime = 'deleted_at';
|
||||||
|
|
||||||
// 绑定产品分类关联模型中字段到父模型
|
|
||||||
protected $append = ['rel_prod_cate_id', 'rel_prod_cate_name'];
|
|
||||||
// 要隐藏的字段或关联模型数据字段
|
// 要隐藏的字段或关联模型数据字段
|
||||||
protected $hidden = ['prod_mapping'];
|
protected $hidden = ['prodMapping'];
|
||||||
|
|
||||||
// 关联分类
|
// 关联分类
|
||||||
public function banner()
|
public function banner()
|
||||||
@@ -73,6 +71,10 @@ class SysBannerItemModel extends SysBannerItemBaseModel
|
|||||||
public function scopeBannerId($query, $value)
|
public function scopeBannerId($query, $value)
|
||||||
{
|
{
|
||||||
if (is_null($value)) return;
|
if (is_null($value)) return;
|
||||||
|
if (is_array($value) || str_contains($value, ',')) {
|
||||||
|
$query->whereIn('banner_id', $value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$query->where('banner_id', '=', $value);
|
$query->where('banner_id', '=', $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,10 @@ class VideoModel extends VideoBaseModel
|
|||||||
if (empty($value)) {
|
if (empty($value)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (is_array($value) || str_contains($value, ',')) {
|
||||||
|
$query->whereIn('category_id', $value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$query->where('category_id', '=', $value);
|
$query->where('category_id', '=', $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ class ArticleValidate extends Validate
|
|||||||
protected $rule = [
|
protected $rule = [
|
||||||
'language_id' => 'require|integer',
|
'language_id' => 'require|integer',
|
||||||
'category_id' => 'require|integer',
|
'category_id' => 'require|integer',
|
||||||
'title' => 'require|max:64',
|
'title' => 'require|max:128',
|
||||||
'image' => 'max:125',
|
'image' => 'max:125',
|
||||||
'link' => 'max:255',
|
'link' => 'max:255',
|
||||||
'desc' => 'max:255',
|
'desc' => 'max:512',
|
||||||
'sort' => 'integer',
|
'sort' => 'integer',
|
||||||
'recommend' => 'require|in:0,1',
|
'recommend' => 'require|in:0,1',
|
||||||
'release_time' => 'dateFormat:Y-m-d H:i:s',
|
'release_time' => 'dateFormat:Y-m-d H:i:s',
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class NavigationItemValidate extends Validate
|
|||||||
'pid' => 'integer|different:id|checkPidNotBeChildren',
|
'pid' => 'integer|different:id|checkPidNotBeChildren',
|
||||||
'name' => 'require|max:64',
|
'name' => 'require|max:64',
|
||||||
'icon' => 'max:64',
|
'icon' => 'max:64',
|
||||||
'link_to' => 'require|max:64|in:article,article_category,product,product_category,custom',
|
'link_to' => 'require|max:64|in:article,article_category,product,product_category,system_page,custom',
|
||||||
'link' => 'max:255',
|
'link' => 'max:255',
|
||||||
'sort' => 'integer',
|
'sort' => 'integer',
|
||||||
'blank' => 'in:0,1',
|
'blank' => 'in:0,1',
|
||||||
@@ -47,7 +47,7 @@ class NavigationItemValidate extends Validate
|
|||||||
'icon.max' => '图标最多不能超过64个字符',
|
'icon.max' => '图标最多不能超过64个字符',
|
||||||
'link_to.require' => '链接类型不能为空',
|
'link_to.require' => '链接类型不能为空',
|
||||||
'link_to.max' => '链接类型最多不能超过64个字符',
|
'link_to.max' => '链接类型最多不能超过64个字符',
|
||||||
'link_to.in' => '链接类型必须是article,goods_category,goods,custom中之一',
|
'link_to.in' => '链接类型必须是article,article_category,product_category,product,system_page,custom中之一',
|
||||||
'link.max' => '链接最多不能超过255个字符',
|
'link.max' => '链接最多不能超过255个字符',
|
||||||
'sort.integer' => '排序必须为整数',
|
'sort.integer' => '排序必须为整数',
|
||||||
'blank.in' => '是否新窗口打开只能是0或1',
|
'blank.in' => '是否新窗口打开只能是0或1',
|
||||||
|
|||||||
@@ -22,8 +22,9 @@ class SysBannerItemValidate extends Validate
|
|||||||
'desc_txt_color' => 'max:7',
|
'desc_txt_color' => 'max:7',
|
||||||
'type' => 'in:image,video',
|
'type' => 'in:image,video',
|
||||||
'image' => 'max:255',
|
'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,custom',
|
'link_to' => 'requireIf:type,image|max:64|in:article,article_category,product,product_category,system_page,custom',
|
||||||
'link' => 'max:255',
|
'link' => 'max:255',
|
||||||
'sort' => 'integer',
|
'sort' => 'integer',
|
||||||
'status' => 'in:-1,1'
|
'status' => 'in:-1,1'
|
||||||
@@ -47,10 +48,11 @@ class SysBannerItemValidate extends Validate
|
|||||||
'desc_txt_color.max' => '描述字体颜色最多不能超过7个字符',
|
'desc_txt_color.max' => '描述字体颜色最多不能超过7个字符',
|
||||||
'type.in' => '显示类型必须是image或video',
|
'type.in' => '显示类型必须是image或video',
|
||||||
'image.max' => '图片地址最多不能超过255个字符',
|
'image.max' => '图片地址最多不能超过255个字符',
|
||||||
|
'extra_image.max' => '额外图片地址最多不能超过255个字符',
|
||||||
'video.max' => '视频地址最多不能超过255个字符',
|
'video.max' => '视频地址最多不能超过255个字符',
|
||||||
'link_to.requireIf' => '链接类型不能为空',
|
'link_to.requireIf' => '链接类型不能为空',
|
||||||
'link_to.max' => '链接类型最多不能超过64个字符',
|
'link_to.max' => '链接类型最多不能超过64个字符',
|
||||||
'link_to.in' => '链接类型必须是article,article_category,product,product_category,custom中之一',
|
'link_to.in' => '链接类型必须是article,article_category,product,product_category,system_page,custom中之一',
|
||||||
'link.max' => '链接最多不能超过255个字符',
|
'link.max' => '链接最多不能超过255个字符',
|
||||||
'sort.integer' => '排序值必须是整数',
|
'sort.integer' => '排序值必须是整数',
|
||||||
'status.in' => '状态必须是-1或1'
|
'status.in' => '状态必须是-1或1'
|
||||||
|
|||||||
@@ -103,3 +103,45 @@ if (!function_exists('array_to_tree')) {
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!function_exists('array_flatten')) {
|
||||||
|
/**
|
||||||
|
* 将多维数组转换为一维数组
|
||||||
|
* @param array $array
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function array_flatten(array $array, int $depth = 1): array
|
||||||
|
{
|
||||||
|
return \think\helper\Arr::flatten($array, $depth);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('thumb')) {
|
||||||
|
/**
|
||||||
|
* 获取缩略图
|
||||||
|
* @param string $url 图片地址
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function thumb(?string $url): string
|
||||||
|
{
|
||||||
|
if (empty($url)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
str_contains($url, '_thumb') ||
|
||||||
|
\think\helper\Str::startsWith($url, ['http://', 'https://']) ||
|
||||||
|
!\think\helper\Str::endsWith($url, ['.png', '.jpg', '.jpeg', '.gif', '.tif', '.svg', '.webp', '.bmp'])
|
||||||
|
) {
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
$idx = mb_strripos($url, '.', 0, 'utf-8');
|
||||||
|
if ($idx === false) {
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
$len = mb_strlen($url, 'utf-8');
|
||||||
|
|
||||||
|
return mb_substr($url, 0, $idx, 'utf-8') . '_thumb' . mb_substr($url, $idx, $len - $idx, 'utf-8');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@ class ProductSkuBaseModel extends BaseModel
|
|||||||
'product_id' => 'int',
|
'product_id' => 'int',
|
||||||
'sku' => 'string',
|
'sku' => 'string',
|
||||||
'main_image' => 'string',
|
'main_image' => 'string',
|
||||||
'photo_album' => 'string',
|
'photo_album' => 'json',
|
||||||
'sort' => 'int',
|
'sort' => 'int',
|
||||||
'created_at' => 'datetime',
|
'created_at' => 'datetime',
|
||||||
'updated_at' => 'datetime'
|
'updated_at' => 'datetime'
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class ProductTcoCategoryBaseModel extends BaseModel
|
|||||||
'tco_path' => 'string',
|
'tco_path' => 'string',
|
||||||
'erp_id' => 'int',
|
'erp_id' => 'int',
|
||||||
'erp_pid' => 'int',
|
'erp_pid' => 'int',
|
||||||
|
'erp_code' => 'string',
|
||||||
'erp_path' => 'string',
|
'erp_path' => 'string',
|
||||||
'disabled' => 'int',
|
'disabled' => 'int',
|
||||||
'sync_time' => 'int',
|
'sync_time' => 'int',
|
||||||
|
|||||||
@@ -23,8 +23,9 @@ class SysBannerItemBaseModel extends BaseModel
|
|||||||
'title_txt_color' => 'string',
|
'title_txt_color' => 'string',
|
||||||
'desc' => 'string',
|
'desc' => 'string',
|
||||||
'desc_txt_color' => 'string',
|
'desc_txt_color' => 'string',
|
||||||
'type' => 'int',
|
'type' => 'string',
|
||||||
'image' => 'string',
|
'image' => 'string',
|
||||||
|
'extra_image' => 'string',
|
||||||
'video' => 'string',
|
'video' => 'string',
|
||||||
'link_to' => 'string',
|
'link_to' => 'string',
|
||||||
'link' => 'string',
|
'link' => 'string',
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ class SysConfigGroupBaseModel extends BaseModel
|
|||||||
protected $schema = [
|
protected $schema = [
|
||||||
'id' => 'int',
|
'id' => 'int',
|
||||||
'language_id' => 'int',
|
'language_id' => 'int',
|
||||||
|
'unique_label' => 'string',
|
||||||
'name' => 'string',
|
'name' => 'string',
|
||||||
'sort' => 'int',
|
'sort' => 'int',
|
||||||
'status' => 'int',
|
'status' => 'int',
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
// 这是系统自动生成的公共文件
|
// 这是系统自动生成的公共文件
|
||||||
|
|
||||||
|
use think\facade\Lang;
|
||||||
|
|
||||||
if (!function_exists('str_contains')) {
|
if (!function_exists('str_contains')) {
|
||||||
/**
|
/**
|
||||||
* 检查字符串是否包含子字符串
|
* 检查字符串是否包含子字符串
|
||||||
@@ -69,38 +71,7 @@ if (!function_exists('style')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('thumb')) {
|
if (!function_exists('get_path_from_img_tag')) {
|
||||||
/**
|
|
||||||
* 获取缩略图
|
|
||||||
* @param string $url 图片地址
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function thumb(string $url): string
|
|
||||||
{
|
|
||||||
if (empty($url)) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
str_contains($url, '_thumb') ||
|
|
||||||
\think\helper\Str::startsWith($url, ['http://', 'https://']) ||
|
|
||||||
!\think\helper\Str::endsWith($url, ['.png', '.jpg', '.jpeg', '.gif', '.tif', '.svg', '.webp', '.bmp'])
|
|
||||||
) {
|
|
||||||
return $url;
|
|
||||||
}
|
|
||||||
|
|
||||||
$idx = mb_strripos($url, '.', 0, 'utf-8');
|
|
||||||
if ($idx === false) {
|
|
||||||
return $url;
|
|
||||||
}
|
|
||||||
|
|
||||||
$len = mb_strlen($url, 'utf-8');
|
|
||||||
|
|
||||||
return mb_substr($url, 0, $idx, 'utf-8') . '_thumb' . mb_substr($url, $idx, $len - $idx, 'utf-8');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!function_exists('get_path_from_img_tag'))
|
|
||||||
{
|
|
||||||
/**
|
/**
|
||||||
* 从img标签中获取图片路径
|
* 从img标签中获取图片路径
|
||||||
* @param string $img
|
* @param string $img
|
||||||
@@ -116,3 +87,157 @@ if (!function_exists('get_path_from_img_tag'))
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!function_exists('lang_i18n')) {
|
||||||
|
/**
|
||||||
|
* 获取国际化语言包
|
||||||
|
* 根据请求页面path获取分组语言对应值
|
||||||
|
*
|
||||||
|
* @param string $name 语言包名称
|
||||||
|
* @param array $vars 替换变量
|
||||||
|
* @param string $lang 语言标识
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function lang_i18n(string $name, array $vars = [], string $lang = ''): string
|
||||||
|
{
|
||||||
|
if (is_null($name)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
$path = strtolower(request()->controller() . '/' . request()->action());
|
||||||
|
$lang_key = "{$path}.{$name}";
|
||||||
|
if (!Lang::has($lang_key, $lang)) {
|
||||||
|
return Lang::get($name, $vars, $lang);
|
||||||
|
}
|
||||||
|
return Lang::get($lang_key, $vars, $lang);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('date_format_i18n')) {
|
||||||
|
/**
|
||||||
|
* 格式化日期时间为指定语言
|
||||||
|
* @param int|string $datetime 要格式化的日期时间字符串
|
||||||
|
* @param string $lang 语言标识
|
||||||
|
* @param bool $keep_time 是否保留时间
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function date_format_i18n(int|string|null $datetime, string $lang = '', bool $keep_time = false): string
|
||||||
|
{
|
||||||
|
// 处理语言标识,若未提供则使用当前语言设置,并转换为小写
|
||||||
|
$lang = $lang ?: Lang::getLangSet();
|
||||||
|
$lang = strtolower($lang);
|
||||||
|
|
||||||
|
// 处理日期时间输入
|
||||||
|
if (is_numeric($datetime)) {
|
||||||
|
// 若输入为数字,直接作为时间戳处理
|
||||||
|
$timestamp = (int)$datetime;
|
||||||
|
} elseif (is_string($datetime)) {
|
||||||
|
// 尝试将字符串转换为时间戳
|
||||||
|
$timestamp = strtotime($datetime);
|
||||||
|
if ($timestamp === false) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据$datetime传值决定格式
|
||||||
|
$date_parts = [];
|
||||||
|
if (is_numeric($datetime)) {
|
||||||
|
$date_str = date('Y-m-d', $timestamp);
|
||||||
|
$date_parts = explode('-', $date_str);
|
||||||
|
} elseif (is_string($datetime)) {
|
||||||
|
if (preg_match('/^\d{4}$/', $datetime)) {
|
||||||
|
$date_parts = [$datetime];
|
||||||
|
} elseif (preg_match('/^\d{4}-\d{1,2}$/', $datetime)) {
|
||||||
|
$date_parts = explode('-', $datetime);
|
||||||
|
} elseif (preg_match('/^\d{4}-\d{1,2}-\d{1,2}(.{1,9})?$/', $datetime)) {
|
||||||
|
$date_parts = explode('-', $datetime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 定义默认格式
|
||||||
|
$fmt = '';
|
||||||
|
|
||||||
|
// 根据语言和日期部分数量设置日期格式
|
||||||
|
$format = [
|
||||||
|
'zh-cn' => [0 => '', 1 => 'Y', 2 => 'Y-m', 3 => 'Y-m-d'],
|
||||||
|
'en-us' => [0 => '', 1 => 'Y', 2 => 'F Y', 3 => 'F j, Y'],
|
||||||
|
'default' => [0 => '', 1 => 'Y', 2 => 'Y-m', 3 => 'Y-m-d']
|
||||||
|
];
|
||||||
|
$fmt = $format[$lang][count($date_parts)] ?? $format['default'][count($date_parts)];
|
||||||
|
|
||||||
|
// 若需要保留时间
|
||||||
|
if ($keep_time) {
|
||||||
|
if ($lang === 'en-us') {
|
||||||
|
$fmt .= ', g:i A';
|
||||||
|
} else {
|
||||||
|
$fmt .= ' H:i:s';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return date($fmt, $timestamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('get_platform')) {
|
||||||
|
/**
|
||||||
|
* 获取平台
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function get_platform(): string
|
||||||
|
{
|
||||||
|
$detect = new \Detection\MobileDetect();
|
||||||
|
$platform = 'pc';
|
||||||
|
|
||||||
|
if ($detect->isMobile() || $detect->isTablet()) {
|
||||||
|
$platform = 'mobile';
|
||||||
|
} else {
|
||||||
|
// 在非移动端环境,根据配置规则判断是否要显示移动端
|
||||||
|
$view_cfg = $view_cfg = [
|
||||||
|
'rule' => env('VIEW_TPL.RULE', 'query'),
|
||||||
|
'query' => [
|
||||||
|
'name' => env('VIEW_TPL.RULE_QUERY_NAME', 'mtpl'),
|
||||||
|
'value' => env('VIEW_TPL.RULE_QUERY_VALUE', '1'),
|
||||||
|
],
|
||||||
|
'domain' => [
|
||||||
|
'scheme' => env('VIEW_TPL.RULE_DOMAIN_SCHEME', ['http']),
|
||||||
|
'host' => env('VIEW_TPL.RULE_DOMAIN_HOST'),
|
||||||
|
],
|
||||||
|
];
|
||||||
|
if ($view_cfg['rule'] == 'query') {
|
||||||
|
$name = $view_cfg['query']['name'];
|
||||||
|
$value = $view_cfg['query']['value'];
|
||||||
|
if (request()->get($name) == $value) {
|
||||||
|
$platform = 'mobile';
|
||||||
|
}
|
||||||
|
} elseif ($view_cfg['rule'] == 'domain') {
|
||||||
|
$scheme = $view_cfg['domain']['scheme'];
|
||||||
|
$host = $view_cfg['domain']['host'];
|
||||||
|
if (in_array(request()->scheme(), $scheme) && $host == request()->host()) {
|
||||||
|
$platform = 'mobile';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $platform;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('highlight_keywords')) {
|
||||||
|
/**
|
||||||
|
* 高亮关键词
|
||||||
|
* @param string $item
|
||||||
|
* @param string $keywords
|
||||||
|
* @param array $class
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function highlight_keywords(string $text, string $keywords, array $class=[]): string
|
||||||
|
{
|
||||||
|
return preg_replace_callback('/' . preg_quote($keywords, '/') . '+/i', function($match) use($text, $class) {
|
||||||
|
if (empty($match)) {
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
return '<strong class="' . implode(' ', $class) . '">' . $match[0] . '</strong>';
|
||||||
|
}, $text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
32
app/index/config/lang.php
Normal file
32
app/index/config/lang.php
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | 多语言设置
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
|
||||||
|
return [
|
||||||
|
// 默认语言
|
||||||
|
'default_lang' => env('DEFAULT_LANG', 'zh-cn'),
|
||||||
|
// 允许的语言列表
|
||||||
|
'allow_lang_list' => ['zh-cn', 'en-us'],
|
||||||
|
// 多语言自动侦测变量名
|
||||||
|
'detect_var' => 'lang',
|
||||||
|
// 是否使用Cookie记录
|
||||||
|
'use_cookie' => true,
|
||||||
|
// 多语言cookie变量
|
||||||
|
'cookie_var' => 'think_lang',
|
||||||
|
// 多语言header变量
|
||||||
|
'header_var' => 'think-lang',
|
||||||
|
// 扩展语言包
|
||||||
|
'extend_list' => [
|
||||||
|
'en-us' => [
|
||||||
|
app()->getAppPath() . '/lang/en-us/' . get_platform() . '.php',
|
||||||
|
app()->getAppPath() . '/lang/en-us/validate.php',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
// Accept-Language转义为对应语言包名称
|
||||||
|
'accept_language' => [
|
||||||
|
'zh-hans-cn' => 'zh-cn',
|
||||||
|
],
|
||||||
|
// 是否支持语言分组
|
||||||
|
'allow_group' => true,
|
||||||
|
];
|
||||||
@@ -3,13 +3,15 @@
|
|||||||
// | 模板设置
|
// | 模板设置
|
||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
|
|
||||||
|
$view_device_name = get_platform();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
// 模板引擎类型使用Think
|
// 模板引擎类型使用Think
|
||||||
'type' => 'Think',
|
'type' => 'Think',
|
||||||
// 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法
|
// 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法
|
||||||
'auto_rule' => 1,
|
'auto_rule' => 1,
|
||||||
// 模板目录名
|
// 模板目录名
|
||||||
'view_dir_name' => 'view',
|
'view_dir_name' => "view/{$view_device_name}",
|
||||||
// 模板后缀
|
// 模板后缀
|
||||||
'view_suffix' => 'html',
|
'view_suffix' => 'html',
|
||||||
// 模板文件名分隔符
|
// 模板文件名分隔符
|
||||||
@@ -24,8 +26,8 @@ return [
|
|||||||
'taglib_end' => '}',
|
'taglib_end' => '}',
|
||||||
// 模板输出替换
|
// 模板输出替换
|
||||||
'tpl_replace_string' => [
|
'tpl_replace_string' => [
|
||||||
'__CSS__' => '/static/index/css',
|
'__CSS__' => "/static/index/{$view_device_name}/css",
|
||||||
'__JS__' => '/static/index/js',
|
'__JS__' => "/static/index/{$view_device_name}/js",
|
||||||
'__IMAGES__' => '/static/index/images',
|
'__IMAGES__' => "/static/index/{$view_device_name}/images",
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ class AboutUs extends Common
|
|||||||
->where('status', '=', 1)
|
->where('status', '=', 1)
|
||||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
"BANNER_680744b1d0000",
|
"BANNER_680744b1d0000",
|
||||||
"BANNER_680744e7cacb3",
|
"BANNER_680744e7cacb3",
|
||||||
@@ -62,7 +63,8 @@ class AboutUs extends Common
|
|||||||
// 获取品牌故事banner
|
// 获取品牌故事banner
|
||||||
$banners = SysBannerItemModel::hasWhere('banner', [
|
$banners = SysBannerItemModel::hasWhere('banner', [
|
||||||
'language_id' => $this->lang_id,
|
'language_id' => $this->lang_id,
|
||||||
'unique_label' => 'BANNER_67ff632a5f7aa'
|
'unique_label' => 'BANNER_67ff632a5f7aa',
|
||||||
|
'at_platform' => request()->from,
|
||||||
])
|
])
|
||||||
->type('image')
|
->type('image')
|
||||||
->enabled(true)
|
->enabled(true)
|
||||||
@@ -87,6 +89,7 @@ class AboutUs extends Common
|
|||||||
$banner = SysBannerModel::with(['items' => function($query) {
|
$banner = SysBannerModel::with(['items' => function($query) {
|
||||||
$query->where('status', '=', 1)->order(['sort' => 'asc', 'id' => 'desc']);
|
$query->where('status', '=', 1)->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
'BANNER_67ff786dc9c8d',
|
'BANNER_67ff786dc9c8d',
|
||||||
'BANNER_67ff7ef1354cf',
|
'BANNER_67ff7ef1354cf',
|
||||||
@@ -124,6 +127,7 @@ class AboutUs extends Common
|
|||||||
->where('status', '=', 1)
|
->where('status', '=', 1)
|
||||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
"BANNER_68075a636e648",
|
"BANNER_68075a636e648",
|
||||||
"BANNER_68075bf4dd0f5",
|
"BANNER_68075bf4dd0f5",
|
||||||
@@ -157,6 +161,7 @@ class AboutUs extends Common
|
|||||||
->where('status', '=', 1)
|
->where('status', '=', 1)
|
||||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
"BANNER_6806f5f19c3d6",
|
"BANNER_6806f5f19c3d6",
|
||||||
"BANNER_6806f609b9fe9",
|
"BANNER_6806f609b9fe9",
|
||||||
|
|||||||
@@ -32,10 +32,12 @@ class Article extends Common
|
|||||||
// 获取banner焦点图
|
// 获取banner焦点图
|
||||||
$banner = SysBannerItemModel::hasWhere('banner', [
|
$banner = SysBannerItemModel::hasWhere('banner', [
|
||||||
'language_id' => $this->lang_id,
|
'language_id' => $this->lang_id,
|
||||||
'unique_label' => 'BANNER_67f9fc71e27db'
|
'unique_label' => 'BANNER_67f9fc71e27db',
|
||||||
|
'at_platform' => request()->from
|
||||||
])
|
])
|
||||||
->type('image')
|
->type('image')
|
||||||
->visible(['id', 'title', 'image', 'link'])
|
->visible(['id', 'title', 'image', 'link'])
|
||||||
|
->enabled()
|
||||||
->find();
|
->find();
|
||||||
View::assign('banner', $banner);
|
View::assign('banner', $banner);
|
||||||
|
|
||||||
@@ -58,15 +60,19 @@ class Article extends Common
|
|||||||
'id',
|
'id',
|
||||||
'title',
|
'title',
|
||||||
'desc',
|
'desc',
|
||||||
'image'
|
'image',
|
||||||
|
'release_time'
|
||||||
])
|
])
|
||||||
->withSearch(['title'], ['title' => $param['keywords']??null])
|
->withSearch(['title'], ['title' => $param['keywords']??null])
|
||||||
->category($param['cid']??$categorys[0]['id'])
|
->category($param['cid']??$categorys[0]['id'])
|
||||||
->where('release_time', '<=', date('Y-m-d H:i:s'))
|
|
||||||
->order(['sort' => 'asc', 'release_time' => 'desc', 'id' => 'desc'])
|
->order(['sort' => 'asc', 'release_time' => 'desc', 'id' => 'desc'])
|
||||||
->paginate([
|
->paginate([
|
||||||
'list_rows' => $param['size'],
|
'list_rows' => $param['size'],
|
||||||
'page' => $param['page'],
|
'page' => $param['page'],
|
||||||
|
'query' => request()->param([
|
||||||
|
'cid',
|
||||||
|
'keywords',
|
||||||
|
]) // 保留查询参数,防止分页丢失
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
View::assign('articles', $articles??[]);
|
View::assign('articles', $articles??[]);
|
||||||
@@ -93,7 +99,25 @@ class Article extends Common
|
|||||||
$share_config = $this->getSysConfig($this->lang_id, ['article_share']);
|
$share_config = $this->getSysConfig($this->lang_id, ['article_share']);
|
||||||
View::assign('share_config', $share_config['article_share']);
|
View::assign('share_config', $share_config['article_share']);
|
||||||
|
|
||||||
|
// 获取文章评论数据
|
||||||
|
$comments = ArticleLeaveMessageModel::field([
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'email',
|
||||||
|
'content',
|
||||||
|
'created_at'
|
||||||
|
])
|
||||||
|
->article($id)
|
||||||
|
->audited(true)
|
||||||
|
->order(['id' => 'desc'])
|
||||||
|
->limit(5)
|
||||||
|
->select();
|
||||||
|
View::assign('comments', $comments);
|
||||||
|
|
||||||
// 获取倒序或发布时间倒序3篇文章做为推荐文章
|
// 获取倒序或发布时间倒序3篇文章做为推荐文章
|
||||||
|
$category_model = new ArticleCategoryModel;
|
||||||
|
$parent_id = $category_model->bypk($detail['category_id'])->value('pid');
|
||||||
|
$categorys = $category_model->child($parent_id)->column('id');
|
||||||
$recommends = ArticleModel::field([
|
$recommends = ArticleModel::field([
|
||||||
'id',
|
'id',
|
||||||
'title',
|
'title',
|
||||||
@@ -101,6 +125,8 @@ class Article extends Common
|
|||||||
'image'
|
'image'
|
||||||
])
|
])
|
||||||
->where('id', '<>', $id)
|
->where('id', '<>', $id)
|
||||||
|
->language($this->lang_id)
|
||||||
|
->category($categorys)
|
||||||
->order(['release_time' => 'desc', 'id' => 'desc'])
|
->order(['release_time' => 'desc', 'id' => 'desc'])
|
||||||
->limit(3)
|
->limit(3)
|
||||||
->select();
|
->select();
|
||||||
@@ -123,12 +149,14 @@ class Article extends Common
|
|||||||
|
|
||||||
// 验证字段
|
// 验证字段
|
||||||
$validate = Validate::rule([
|
$validate = Validate::rule([
|
||||||
'name' => 'max:64',
|
'name' => 'require|max:64',
|
||||||
'email' => 'email'
|
'email' => 'require|email'
|
||||||
])
|
])
|
||||||
->message([
|
->message([
|
||||||
'name.max' => '姓名不能超过64个字符',
|
'name.require' => '姓名不能为空',
|
||||||
'email' => '请输入正确的邮箱'
|
'name.max' => '姓名不能超过:rule个字符',
|
||||||
|
'email.require' => '邮箱不能为空',
|
||||||
|
'email.email' => '邮箱格式不正确'
|
||||||
]);
|
]);
|
||||||
if (!$validate->check($post)) {
|
if (!$validate->check($post)) {
|
||||||
return error($validate->getError());
|
return error($validate->getError());
|
||||||
@@ -142,9 +170,9 @@ class Article extends Common
|
|||||||
]);
|
]);
|
||||||
$ret = ArticleLeaveMessageModel::create($data);
|
$ret = ArticleLeaveMessageModel::create($data);
|
||||||
if ($ret->isEmpty()) {
|
if ($ret->isEmpty()) {
|
||||||
return error('留言提交失败');
|
return error(lang('留言提交失败'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return success('留言提交成功');
|
return success(lang('留言提交成功'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class ContactUs extends Common
|
|||||||
->where('status', '=', 1)
|
->where('status', '=', 1)
|
||||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel(['BANNER_6805e3d32dcc2', 'BANNER_6806090c1838f'])
|
->uniqueLabel(['BANNER_6805e3d32dcc2', 'BANNER_6806090c1838f'])
|
||||||
->language($this->lang_id)
|
->language($this->lang_id)
|
||||||
->enabled(true)
|
->enabled(true)
|
||||||
@@ -44,14 +45,7 @@ class ContactUs extends Common
|
|||||||
$banner_map[$v->unique_label] = $v;
|
$banner_map[$v->unique_label] = $v;
|
||||||
}
|
}
|
||||||
$focus_image = data_get($banner_map, 'BANNER_6805e3d32dcc2')?->items->first()?->toArray();
|
$focus_image = data_get($banner_map, 'BANNER_6805e3d32dcc2')?->items->first()?->toArray();
|
||||||
$info_datas = data_get($banner_map, 'BANNER_6806090c1838f')?->items->each(function($item) {
|
$info_datas = data_get($banner_map, 'BANNER_6806090c1838f')?->items->toArray();
|
||||||
if (Str::contains($item->title, '<br/>')) {
|
|
||||||
$title = explode('<br/>', $item->title);
|
|
||||||
$item->title = $title[0];
|
|
||||||
$item->title_short = $title[1];
|
|
||||||
}
|
|
||||||
return $item;
|
|
||||||
})->chunk(4)->toArray();
|
|
||||||
}
|
}
|
||||||
View::assign('focus_image', $focus_image);
|
View::assign('focus_image', $focus_image);
|
||||||
View::assign('info_datas', $info_datas);
|
View::assign('info_datas', $info_datas);
|
||||||
@@ -88,10 +82,10 @@ class ContactUs extends Common
|
|||||||
'user_agent' => request()->header('user-agent'),
|
'user_agent' => request()->header('user-agent'),
|
||||||
]);
|
]);
|
||||||
if ($msg->isEmpty()) {
|
if ($msg->isEmpty()) {
|
||||||
return error(lang('contact_message.send_fail'));
|
return error(lang('信息提交失败!'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return success(lang('contact_message.send_success'));
|
return success(lang('信息已成功提交!'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$focus_image = [];
|
$focus_image = [];
|
||||||
@@ -102,6 +96,7 @@ class ContactUs extends Common
|
|||||||
->where('status', '=', 1)
|
->where('status', '=', 1)
|
||||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
'BANNER_6801be1e7d686',
|
'BANNER_6801be1e7d686',
|
||||||
'BANNER_6801c053ce12e',
|
'BANNER_6801c053ce12e',
|
||||||
@@ -134,6 +129,7 @@ class ContactUs extends Common
|
|||||||
'corp_name',
|
'corp_name',
|
||||||
'email',
|
'email',
|
||||||
'phone',
|
'phone',
|
||||||
|
'website_url',
|
||||||
'business_type',
|
'business_type',
|
||||||
'enterprise_size',
|
'enterprise_size',
|
||||||
'address',
|
'address',
|
||||||
@@ -153,7 +149,7 @@ class ContactUs extends Common
|
|||||||
'email' => $form_data['email'],
|
'email' => $form_data['email'],
|
||||||
'phone' => $form_data['phone'],
|
'phone' => $form_data['phone'],
|
||||||
'referer_url' => request()->header('referer'),
|
'referer_url' => request()->header('referer'),
|
||||||
'website_url' => request()->header('host'),
|
'website_url' => $form_data['website_url'],
|
||||||
'business_type' => $form_data['business_type'],
|
'business_type' => $form_data['business_type'],
|
||||||
'enterprise_size' => $form_data['enterprise_size'],
|
'enterprise_size' => $form_data['enterprise_size'],
|
||||||
'address' => $form_data['address'],
|
'address' => $form_data['address'],
|
||||||
@@ -161,9 +157,9 @@ class ContactUs extends Common
|
|||||||
'ip' => request()->ip(),
|
'ip' => request()->ip(),
|
||||||
]);
|
]);
|
||||||
if ($ret->isEmpty()) {
|
if ($ret->isEmpty()) {
|
||||||
return error(lang('contact_distributor.send_fail'));
|
return error(lang('信息提交失败!'));
|
||||||
}
|
}
|
||||||
return success(lang('contact_distributor.send_success'));
|
return success(lang('信息已成功提交!'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取企业规模
|
// 获取企业规模
|
||||||
@@ -210,16 +206,16 @@ class ContactUs extends Common
|
|||||||
'last_name' => $form_data['last_name'],
|
'last_name' => $form_data['last_name'],
|
||||||
'email' => $form_data['email'],
|
'email' => $form_data['email'],
|
||||||
'phone' => $form_data['phone'],
|
'phone' => $form_data['phone'],
|
||||||
'interested' => $form_data['interested'],
|
'interested' => is_array($form_data['interested']) ? implode(',', $form_data['interested']) : $form_data['interested'],
|
||||||
'referer_url' => request()->header('referer'),
|
'referer_url' => request()->header('referer'),
|
||||||
'website_url' => request()->header('host'),
|
'website_url' => request()->header('host'),
|
||||||
'message' => $form_data['message'],
|
'message' => $form_data['message'],
|
||||||
'ip' => request()->ip(),
|
'ip' => request()->ip(),
|
||||||
]);
|
]);
|
||||||
if ($ret->isEmpty()) {
|
if ($ret->isEmpty()) {
|
||||||
return error(lang('contact_bulkbuy.send_fail'));
|
return error(lang('信息提交失败!'));
|
||||||
}
|
}
|
||||||
return success(lang('contact_bulkbuy.send_success'));
|
return success(lang('信息已成功提交!'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取可选产品品类配置
|
// 获取可选产品品类配置
|
||||||
@@ -229,7 +225,7 @@ class ContactUs extends Common
|
|||||||
->byName('bulk_purchase_inquiry_interested')
|
->byName('bulk_purchase_inquiry_interested')
|
||||||
->find();
|
->find();
|
||||||
if (empty($config)) {
|
if (empty($config)) {
|
||||||
return error('当前选定语言的采购可选品类配置出错');
|
return error(lang('当前选定语言的采购可选品类配置出错'));
|
||||||
}
|
}
|
||||||
View::assign('interested', explode(',', preg_replace('/\r?\n/', ',', $config->value)));
|
View::assign('interested', explode(',', preg_replace('/\r?\n/', ',', $config->value)));
|
||||||
|
|
||||||
|
|||||||
@@ -25,9 +25,11 @@ class Faq extends Common
|
|||||||
// 获取banner焦点图
|
// 获取banner焦点图
|
||||||
$banner = SysBannerItemModel::hasWhere('banner', [
|
$banner = SysBannerItemModel::hasWhere('banner', [
|
||||||
'language_id' => $this->lang_id,
|
'language_id' => $this->lang_id,
|
||||||
'unique_label' => 'BANNER_67fa37f30e151'
|
'unique_label' => 'BANNER_67fa37f30e151',
|
||||||
|
'at_platform' => request()->from
|
||||||
])
|
])
|
||||||
->type('image')
|
->type('image')
|
||||||
|
->enabled()
|
||||||
->visible(['id', 'title', 'image', 'link'])
|
->visible(['id', 'title', 'image', 'link'])
|
||||||
->find();
|
->find();
|
||||||
View::assign('banner', $banner);
|
View::assign('banner', $banner);
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ class Index extends Common
|
|||||||
$banners = SysBannerModel::with(['items' => function($query) {
|
$banners = SysBannerModel::with(['items' => function($query) {
|
||||||
$query->where('type', 'IN', ['image', 'video'])->where('status', '=', 1)->order(['sort' => 'asc', 'id' => 'desc']);
|
$query->where('type', 'IN', ['image', 'video'])->where('status', '=', 1)->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
'BANNER_67f61cd70e8e1',
|
'BANNER_67f61cd70e8e1',
|
||||||
'BANNER_67f633023a5b3',
|
'BANNER_67f633023a5b3',
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ class Product extends Common
|
|||||||
->where('status', '=', 1)
|
->where('status', '=', 1)
|
||||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel(['BANNER_6808abd813d78'])
|
->uniqueLabel(['BANNER_6808abd813d78'])
|
||||||
->language($this->lang_id)
|
->language($this->lang_id)
|
||||||
->enabled(true)
|
->enabled(true)
|
||||||
@@ -230,7 +231,7 @@ class Product extends Common
|
|||||||
$attr = $sku_attrs_map[$v['id']]?? [];
|
$attr = $sku_attrs_map[$v['id']]?? [];
|
||||||
if (!empty($attr)) {
|
if (!empty($attr)) {
|
||||||
foreach ($attr as $at) {
|
foreach ($attr as $at) {
|
||||||
if ($at['attr_name'] == '颜色') {
|
if (in_array($at['attr_name'], ['颜色', 'Color'])) {
|
||||||
$color_map[$v['product_id']][] = $at;
|
$color_map[$v['product_id']][] = $at;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -253,7 +254,11 @@ class Product extends Common
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
foreach ($categorys_data as $k => $v) {
|
foreach ($categorys_data as $k => $v) {
|
||||||
$categorys_data[$k]['products'] = $products_map[$v['id']] ?? [];
|
if (!isset($products_map[$v['id']])) {
|
||||||
|
unset($categorys_data[$k]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$categorys_data[$k]['products'] = $products_map[$v['id']];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -267,7 +272,12 @@ class Product extends Common
|
|||||||
*/
|
*/
|
||||||
public function search()
|
public function search()
|
||||||
{
|
{
|
||||||
$keywords = request()->param('keywords', '');
|
$param = request()->param([
|
||||||
|
'keywords',
|
||||||
|
'page/d' => 1,
|
||||||
|
'size/d' => 10
|
||||||
|
]);
|
||||||
|
$keywords = $param['keywords'] ?? '';
|
||||||
|
|
||||||
// 关键词搜索
|
// 关键词搜索
|
||||||
$products = ProductModel::field([
|
$products = ProductModel::field([
|
||||||
@@ -283,14 +293,19 @@ class Product extends Common
|
|||||||
->onSale(true)
|
->onSale(true)
|
||||||
->onShelves(true)
|
->onShelves(true)
|
||||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||||
->select()
|
->paginate([
|
||||||
|
'list_rows' => $param['size'],
|
||||||
|
'page' => $param['page'],
|
||||||
|
'query' => request()->param()
|
||||||
|
])
|
||||||
->each(function ($item) use($keywords) {
|
->each(function ($item) use($keywords) {
|
||||||
$item['spu'] = str_replace($keywords, '<strong class="redpoint">'.$keywords.'</strong>', $item['spu']);
|
$item['spu'] = highlight_keywords($item['spu'], $keywords, ['redpoint']);
|
||||||
$item['name'] = str_replace($keywords, '<strong class="redpoint">'.$keywords.'</strong>', $item['name']);
|
$item['name'] = highlight_keywords($item['name'], $keywords, ['redpoint']);
|
||||||
$item['short_name'] = str_replace($keywords, '<strong class="redpoint">'.$keywords.'</strong>', $item['short_name']);
|
$item['short_name'] = highlight_keywords($item['short_name'], $keywords, ['redpoint']);
|
||||||
return $item;
|
return $item;
|
||||||
});
|
});
|
||||||
View::assign('products', $products);
|
View::assign('products', $products);
|
||||||
|
View::assign('page', $products->render());
|
||||||
|
|
||||||
return View::fetch('search');
|
return View::fetch('search');
|
||||||
}
|
}
|
||||||
@@ -358,6 +373,8 @@ class Product extends Common
|
|||||||
// 获取属性名称
|
// 获取属性名称
|
||||||
$attrs = ProductAttrModel::bypks(array_unique(Arr::pluck($sku_attrs, 'attr_id')))->column(['attr_name'], 'id');
|
$attrs = ProductAttrModel::bypks(array_unique(Arr::pluck($sku_attrs, 'attr_id')))->column(['attr_name'], 'id');
|
||||||
foreach ($sku_attrs as $v) {
|
foreach ($sku_attrs as $v) {
|
||||||
|
if (empty($v['attr_value'])) continue;
|
||||||
|
|
||||||
$v['attr_name'] = $attrs[$v['attr_id']]?? '';
|
$v['attr_name'] = $attrs[$v['attr_id']]?? '';
|
||||||
// 按属性分组
|
// 按属性分组
|
||||||
$product_sku_attrs[$v['attr_id']]['attr_id'] = $v['attr_id'];
|
$product_sku_attrs[$v['attr_id']]['attr_id'] = $v['attr_id'];
|
||||||
@@ -442,9 +459,9 @@ class Product extends Common
|
|||||||
'message' => $post['message'],
|
'message' => $post['message'],
|
||||||
]);
|
]);
|
||||||
if ($ret->isEmpty()) {
|
if ($ret->isEmpty()) {
|
||||||
return error(lang('product_detail.send_fail'));
|
return error(lang('提交失败'));
|
||||||
}
|
}
|
||||||
return success(lang('product_detail.send_success'));
|
return success(lang('提交成功'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -464,6 +481,7 @@ class Product extends Common
|
|||||||
->where('status', '=', 1)
|
->where('status', '=', 1)
|
||||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel(['BANNER_680dd7ceaa529'])
|
->uniqueLabel(['BANNER_680dd7ceaa529'])
|
||||||
->language($this->lang_id)
|
->language($this->lang_id)
|
||||||
->enabled(true)
|
->enabled(true)
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ class TopicNas extends Common
|
|||||||
{
|
{
|
||||||
// 获取国家/语言列表
|
// 获取国家/语言列表
|
||||||
$languages = $this->getLanguages();
|
$languages = $this->getLanguages();
|
||||||
|
// 输出国家/语言列表
|
||||||
|
if (get_platform() == 'mobile') {
|
||||||
|
View::assign('header_languages', $languages);
|
||||||
|
}
|
||||||
|
|
||||||
// 获取当前语言
|
// 获取当前语言
|
||||||
$current_language = $this->getCurrentLanguage($languages);
|
$current_language = $this->getCurrentLanguage($languages);
|
||||||
@@ -61,8 +65,11 @@ class TopicNas extends Common
|
|||||||
$nas_software = [];
|
$nas_software = [];
|
||||||
// 获取banner数据
|
// 获取banner数据
|
||||||
$banners = SysBannerModel::with(['items' => function($query) {
|
$banners = SysBannerModel::with(['items' => function($query) {
|
||||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at']);
|
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at'])
|
||||||
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||||
|
->enabled(true);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
'BANNER_680f156a805a8',
|
'BANNER_680f156a805a8',
|
||||||
'BANNER_680f15ca5482f',
|
'BANNER_680f15ca5482f',
|
||||||
@@ -104,8 +111,11 @@ class TopicNas extends Common
|
|||||||
$trial_instructions = [];
|
$trial_instructions = [];
|
||||||
// 获取banner数据
|
// 获取banner数据
|
||||||
$banners = SysBannerModel::with(['items' => function($query) {
|
$banners = SysBannerModel::with(['items' => function($query) {
|
||||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at']);
|
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at'])
|
||||||
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||||
|
->enabled(true);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
'BANNER_68103aaebe4c4',
|
'BANNER_68103aaebe4c4',
|
||||||
'BANNER_68103acd1a8b9',
|
'BANNER_68103acd1a8b9',
|
||||||
@@ -142,8 +152,11 @@ class TopicNas extends Common
|
|||||||
$cooperation_cotacts = [];
|
$cooperation_cotacts = [];
|
||||||
// 获取banner数据
|
// 获取banner数据
|
||||||
$banners = SysBannerModel::with(['items' => function($query) {
|
$banners = SysBannerModel::with(['items' => function($query) {
|
||||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at']);
|
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at'])
|
||||||
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||||
|
->enabled(true);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
'BANNER_6810670b8ef17',
|
'BANNER_6810670b8ef17',
|
||||||
'BANNER_681067451b78f',
|
'BANNER_681067451b78f',
|
||||||
@@ -180,7 +193,9 @@ 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');
|
||||||
$article_categorys = ArticleCategoryModel::with(['article' => function($query) {
|
$article_categorys = ArticleCategoryModel::with(['article' => function($query) {
|
||||||
$query->field(['id', 'title', 'category_id'])->limit(3);
|
$query->field(['id', 'title', 'category_id'])
|
||||||
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||||
|
->limit(3);
|
||||||
}])
|
}])
|
||||||
->field([
|
->field([
|
||||||
'id',
|
'id',
|
||||||
@@ -196,8 +211,11 @@ class TopicNas extends Common
|
|||||||
$contacts = [];
|
$contacts = [];
|
||||||
// 获取banner数据
|
// 获取banner数据
|
||||||
$banners = SysBannerModel::with(['items' => function ($query) {
|
$banners = SysBannerModel::with(['items' => function ($query) {
|
||||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at']);
|
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at'])
|
||||||
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||||
|
->enabled(true);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel(['BANNER_6819754be2dc6'])
|
->uniqueLabel(['BANNER_6819754be2dc6'])
|
||||||
->language($this->lang_id)
|
->language($this->lang_id)
|
||||||
->enabled(true)
|
->enabled(true)
|
||||||
@@ -226,9 +244,9 @@ class TopicNas extends Common
|
|||||||
View::assign('article', $article);
|
View::assign('article', $article);
|
||||||
|
|
||||||
// 获取文章分类及文章数据
|
// 获取文章分类及文章数据
|
||||||
$parent = ArticleCategoryModel::uniqueLabel('CATEGORY_681182e0a4529')->value('id');
|
$parent = ArticleCategoryModel::uniqueLabel('CATEGORY_681182e0a4529')->language($this->lang_id)->value('id');
|
||||||
$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']);
|
||||||
}])
|
}])
|
||||||
->field([
|
->field([
|
||||||
'id',
|
'id',
|
||||||
@@ -251,14 +269,35 @@ class TopicNas extends Common
|
|||||||
{
|
{
|
||||||
$keywords = request()->post('keywords');
|
$keywords = request()->post('keywords');
|
||||||
// 根据关键词查询文章
|
// 根据关键词查询文章
|
||||||
|
$parent = ArticleCategoryModel::uniqueLabel('CATEGORY_681182e0a4529')
|
||||||
|
->language($this->lang_id)
|
||||||
|
->value('id');
|
||||||
|
|
||||||
|
// 获取帮且中心分类子分类
|
||||||
|
$table_name = (new ArticleCategoryModel)->getTable();
|
||||||
|
$categorys = \think\facade\Db::query(preg_replace(
|
||||||
|
'/\s+/u',
|
||||||
|
' ',
|
||||||
|
"WITH RECURSIVE article_tree_by AS (
|
||||||
|
SELECT a.id, a.pid FROM $table_name a WHERE a.id = {$parent}
|
||||||
|
UNION ALL
|
||||||
|
SELECT k.id, k.pid FROM $table_name k INNER JOIN article_tree_by t ON t.id = k.pid
|
||||||
|
)
|
||||||
|
SELECT id FROM article_tree_by WHERE id <> {$parent}"
|
||||||
|
));
|
||||||
|
if (empty($categorys)) return success('success', []);
|
||||||
|
|
||||||
|
// 获取文章数据
|
||||||
$articles = ArticleModel::field([
|
$articles = ArticleModel::field([
|
||||||
'id',
|
'id',
|
||||||
|
'category_id',
|
||||||
'title'
|
'title'
|
||||||
])
|
])
|
||||||
->withSearch(['title'], [
|
->withSearch(['title'], [
|
||||||
'title' => $keywords??null
|
'title' => $keywords??null
|
||||||
])
|
])
|
||||||
->language($this->lang_id)
|
->language($this->lang_id)
|
||||||
|
->where('category_id', 'IN', array_column($categorys, 'id'))
|
||||||
->select();
|
->select();
|
||||||
|
|
||||||
return success('success', $articles->toArray());
|
return success('success', $articles->toArray());
|
||||||
@@ -272,8 +311,11 @@ class TopicNas extends Common
|
|||||||
$data = [];
|
$data = [];
|
||||||
// 获取banner数据
|
// 获取banner数据
|
||||||
$banners = SysBannerModel::with(['items' => function($query) {
|
$banners = SysBannerModel::with(['items' => function($query) {
|
||||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at']);
|
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at'])
|
||||||
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||||
|
->enabled(true);
|
||||||
}])
|
}])
|
||||||
|
->atPlatform(request()->from)
|
||||||
->uniqueLabel([
|
->uniqueLabel([
|
||||||
'BANNER_6810798e6e828',
|
'BANNER_6810798e6e828',
|
||||||
'BANNER_68107a0a63910',
|
'BANNER_68107a0a63910',
|
||||||
|
|||||||
@@ -1,226 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'header_navigation' => [
|
|
||||||
'product_categorys' => 'Products',
|
|
||||||
'store' => 'Store'
|
|
||||||
],
|
|
||||||
'header_search' => [
|
|
||||||
'history' => 'Search History',
|
|
||||||
'hot_product' => 'Popular Products',
|
|
||||||
],
|
|
||||||
'footer_navigation' => [
|
|
||||||
'product_categorys' => 'Product'
|
|
||||||
],
|
|
||||||
'footer_contact' => 'Contact',
|
|
||||||
'index' => [
|
|
||||||
'featured_products' => 'Featured Products',
|
|
||||||
'view_all' => 'View All',
|
|
||||||
'learn_more' => 'Learn More',
|
|
||||||
'orico_technology' => 'ORICO Technology',
|
|
||||||
'orico_technology_desc' => 'Designed to be just as easy to learn as iPhone.Chatting with friends.',
|
|
||||||
'faq' => 'FAQ',
|
|
||||||
'faq_short_desc' => 'What are you most concerned about',
|
|
||||||
'faq_desc' => 'Our customer support is available Manday to Friday 9am600pmAverage arswer time 24h',
|
|
||||||
],
|
|
||||||
'article' => [
|
|
||||||
'detail_share' => 'SHARE',
|
|
||||||
'detail_leave_reply' => 'Leave a Reply',
|
|
||||||
'detail_leave_reply_name' => 'Name',
|
|
||||||
'detail_leave_reply_email' => 'Email',
|
|
||||||
'detail_leave_reply_email_tip' => 'Your email address will not be pulished.',
|
|
||||||
'detail_leave_reply_comment' => 'Comment',
|
|
||||||
'detail_leave_reply_submit' => 'POST COMMENT',
|
|
||||||
'detail_recommend' => 'Recommended for you',
|
|
||||||
],
|
|
||||||
'attachment' => [
|
|
||||||
'software_drives' => 'Software and Drivers',
|
|
||||||
'video' => 'Videos',
|
|
||||||
'support_model' => 'Supported Models',
|
|
||||||
'support_platform' => 'Supported Systems',
|
|
||||||
'search_placeholder' => 'Search model',
|
|
||||||
'no_data' => 'No Result!',
|
|
||||||
'no_video' => 'No Video!',
|
|
||||||
],
|
|
||||||
'aboutus_introduction' => [
|
|
||||||
'title' => 'Introduction of the Brand',
|
|
||||||
'section_why_title' => 'Why Choose Us',
|
|
||||||
'section_service_title' => 'How We Can Help with Customization',
|
|
||||||
'section_difference_title' => 'For Different Situation',
|
|
||||||
],
|
|
||||||
'aboutus_mileage' => [
|
|
||||||
'achievement' => 'Our Achievement',
|
|
||||||
'events' => 'Brand Events',
|
|
||||||
'development' => 'Tech Development',
|
|
||||||
],
|
|
||||||
'aboutus_policy' => [
|
|
||||||
'title' => 'After-Sales Policy',
|
|
||||||
'banner_1_title' => 'After-sale Policy',
|
|
||||||
'banner_1_desc' => 'ORICO commits to provide 7-day Refund, 15-day Exchange, 1-year Quality Warranty. ',
|
|
||||||
'banner_3_title' => 'For your own benefits, please mind the following information',
|
|
||||||
'banner_3_desc' => 'For a smooth return and refund, quality warranty, please follow these steps:',
|
|
||||||
'banner_5_title' => 'ORICO is not liable for:'
|
|
||||||
],
|
|
||||||
'contact_index' => [
|
|
||||||
'title' => 'contact us',
|
|
||||||
],
|
|
||||||
'contact_message' => [
|
|
||||||
'title' => 'contact us',
|
|
||||||
'our_information' => 'Our Information',
|
|
||||||
'send_question' => 'Send Us Your Question',
|
|
||||||
'form_name' => 'Yuor Name',
|
|
||||||
'form_name_placeholder' => 'This is your placeholder text',
|
|
||||||
'form_email' => 'Your Email',
|
|
||||||
'form_email_placeholder' => 'This is your placeholder text',
|
|
||||||
'form_question' => 'Your Message',
|
|
||||||
'form_question_placeholder' => 'This is your placeholder text',
|
|
||||||
'form_submit' => 'SEND',
|
|
||||||
'become_a_distributor' => 'Become a Distributor',
|
|
||||||
// 验证器中文本
|
|
||||||
'validate_name_required' => 'Name is required',
|
|
||||||
'validate_name_max' => 'Name cannot exceed 64 characters',
|
|
||||||
'validate_email_required' => 'Email is required',
|
|
||||||
'validate_email_email' => 'Email format is incorrect',
|
|
||||||
'validate_email_max' => 'Email cannot exceed 128 characters',
|
|
||||||
'validate_content_required' => 'Message is required',
|
|
||||||
'validate_content_max' => 'Message cannot exceed 1024 characters',
|
|
||||||
// 返回文本
|
|
||||||
'send_success' => 'success',
|
|
||||||
'send_fail' => 'fail',
|
|
||||||
],
|
|
||||||
'contact_distributor' => [
|
|
||||||
'title' => 'Become a Distributor',
|
|
||||||
'section_title' => 'To Be Our Distributor',
|
|
||||||
'section_desc_1' => 'Ready to join us?',
|
|
||||||
'section_desc_2' => 'Enter your details below and our Sales team will get back to you within 2 business days.',
|
|
||||||
'form_corp_name' => 'Company Name',
|
|
||||||
'form_corp_name_placeholder' => 'Enter your Company Name',
|
|
||||||
'form_email' => 'Contact Email',
|
|
||||||
'form_email_placeholder' => 'Enter your Email',
|
|
||||||
'form_phone' => 'Phone Number',
|
|
||||||
'form_phone_placeholder' => 'This is your placeholder text',
|
|
||||||
'form_business_type' => 'Type of Business',
|
|
||||||
'form_online_shop_url' => 'Online Shop URL',
|
|
||||||
'form_online_shop_url_placeholder' => 'This is your placeholder URL',
|
|
||||||
'form_enterprise_size' => 'Enterprise size',
|
|
||||||
'form_corp_address' => 'Company Address',
|
|
||||||
'form_corp_address_placeholder' => 'Enter Address',
|
|
||||||
'form_message' => 'Message',
|
|
||||||
'form_message_placeholder' => 'Enter your message',
|
|
||||||
'form_submit' => 'SUBMIT',
|
|
||||||
// 验证器中文本
|
|
||||||
'validate_name_required' => 'Company Name is required',
|
|
||||||
'validate_name_max' => 'Company Name cannot exceed 64 characters',
|
|
||||||
'validate_email_required' => 'Email is required',
|
|
||||||
'validate_email_email' => 'Email format is incorrect',
|
|
||||||
'validate_email_max' => 'Email cannot exceed 128 characters',
|
|
||||||
'validate_phone_required' => 'Phone Number is required',
|
|
||||||
'validate_phone_max' => 'Phone Number cannot exceed 64 characters',
|
|
||||||
'validate_business_type_required' => 'Type of Business is required',
|
|
||||||
'validate_business_type_max' => 'Type of Business cannot exceed 128 characters',
|
|
||||||
'validate_enterprise_size_required' => 'Enterprise size is required',
|
|
||||||
'validate_enterprise_size_max' => 'Enterprise size cannot exceed 128 characters',
|
|
||||||
'validate_address_required' => 'Company Address is required',
|
|
||||||
'validate_address_max' => 'Company Address cannot exceed 255 characters',
|
|
||||||
'validate_message_required' => 'Message is required',
|
|
||||||
// 返回文本
|
|
||||||
'send_success' => 'Add Success!',
|
|
||||||
'send_fail' => 'Add Fail!',
|
|
||||||
],
|
|
||||||
'contact_bulkbuy' => [
|
|
||||||
'title' => '',
|
|
||||||
'form_title' => 'Bulk Buy',
|
|
||||||
'form_corp_name_label' => 'Company Name',
|
|
||||||
'form_corp_name_placeholder' => 'Legal business name',
|
|
||||||
'form_website_url_label' => 'Official website',
|
|
||||||
'form_website_url_placeholder' => 'Please paste the URL',
|
|
||||||
'form_username_label' => 'Your Name',
|
|
||||||
'form_firstname_placeholder' => 'First name',
|
|
||||||
'form_lastname_placeholder' => 'Last name',
|
|
||||||
'form_email_label' => 'Email',
|
|
||||||
'form_email_placeholder' => 'Please enter your email',
|
|
||||||
'form_phone_label' => 'Phone Numbe',
|
|
||||||
'form_phone_placeholder' => 'Please enter your phone number',
|
|
||||||
'form_checkbox_label' => 'Products you are interested in?',
|
|
||||||
'form_message_label' => 'Message',
|
|
||||||
'form_message_placeholder' => 'Methods used',
|
|
||||||
'form_submit' => 'SUBMIT',
|
|
||||||
// 验证器中文本
|
|
||||||
'validate_corp_name_require' => 'Company Name is required',
|
|
||||||
'validate_corp_name_max' => 'Company Name cannot exceed 128 characters',
|
|
||||||
'validate_url_max' => 'URL cannot exceed 255 characters',
|
|
||||||
'validate_first_name_require' => 'First Name is required',
|
|
||||||
'validate_first_name_max' => 'First Name cannot exceed 64 characters',
|
|
||||||
'validate_last_name_require' => 'Last Name is required',
|
|
||||||
'validate_last_name_max' => 'Last Name cannot exceed 64 characters',
|
|
||||||
'validate_email_require' => 'Email is required',
|
|
||||||
'validate_email_email' => 'Email format is incorrect',
|
|
||||||
'validate_email_max' => 'Email cannot exceed 128 characters',
|
|
||||||
'validate_phone_max' => 'Phone Number cannot exceed 32 characters',
|
|
||||||
'validate_interested_max' => 'Interested in cannot exceed 255 characters',
|
|
||||||
'validate_message_require' => 'Message is required',
|
|
||||||
'validate_message_max' => 'Message cannot exceed 1024 characters',
|
|
||||||
// 返回文本
|
|
||||||
'send_success' => 'Add Success!',
|
|
||||||
'send_fail' => 'Add Fail!',
|
|
||||||
],
|
|
||||||
'product_newpro' => [
|
|
||||||
'view_all' => 'View all'
|
|
||||||
],
|
|
||||||
'product_detail' => [
|
|
||||||
'detail_section_title' => 'Product Description',
|
|
||||||
'related_products' => 'Related Products',
|
|
||||||
'display_form' => 'Send Inquiry',
|
|
||||||
'form_name' => 'Name',
|
|
||||||
'form_first_name_placeholder' => 'First name',
|
|
||||||
'form_last_name_placeholder' => 'Last name',
|
|
||||||
'form_corp' => 'Company/Organization',
|
|
||||||
'form_email' => 'Email Address',
|
|
||||||
'form_phone' => 'Phone Number',
|
|
||||||
'form_country' => 'Country',
|
|
||||||
'form_country_placeholder' => '--- Select your country ---',
|
|
||||||
'form_industry' => 'Industry',
|
|
||||||
'form_inquiry' => 'Inquiry',
|
|
||||||
'form_submit' => 'SUBMIT',
|
|
||||||
// 验证器中文本
|
|
||||||
'validate_first_name_require' => 'First Name is required',
|
|
||||||
'validate_first_name_max' => 'First Name cannot exceed 64 characters',
|
|
||||||
'validate_last_name_require' => 'Last Name is required',
|
|
||||||
'validate_last_name_max' => 'Last Name cannot exceed 64 characters',
|
|
||||||
'validate_email_require' => 'Email is required',
|
|
||||||
'validate_email_email' => 'Email format is incorrect',
|
|
||||||
'validate_email_max' => 'Email cannot exceed 128 characters',
|
|
||||||
'validate_phone_max' => 'Phone Number cannot exceed 32 characters',
|
|
||||||
'validate_country_name_require' => 'Country is required',
|
|
||||||
'validate_country_name_max' => 'Country cannot exceed 128 characters',
|
|
||||||
'validate_corp_name_require' => 'Company/Organization is required',
|
|
||||||
'validate_corp_name_max' => 'Company/Organization cannot exceed 128 characters',
|
|
||||||
'validate_industry_require' => 'Industry is required',
|
|
||||||
'validate_industry_max' => 'Industry cannot exceed 64 characters',
|
|
||||||
'validate_message_require' => 'Message is required',
|
|
||||||
'validate_message_max' => 'Message cannot exceed 1024 characters',
|
|
||||||
// 返回文本
|
|
||||||
'send_success' => 'Add Success!',
|
|
||||||
'send_fail' => 'Add Fail!',
|
|
||||||
],
|
|
||||||
'topic_nas_index' => [
|
|
||||||
'solution_section_title' => '<span style="color:#004BFA;">ORICO</span>网络存储解决方案',
|
|
||||||
'software_section_title' => '<span style="color:#004BFA">NAS</span>配套软件',
|
|
||||||
],
|
|
||||||
'topic_nas_cooperation' => [
|
|
||||||
'advantages_section_title' => 'Cooperation advantages',
|
|
||||||
'contacts_section_title' => 'Looking forward to working with you'
|
|
||||||
],
|
|
||||||
'topic_nas_download' => [
|
|
||||||
'cyber_tab_title' => 'CyberData',
|
|
||||||
'weline_tab_title' => 'Weline'
|
|
||||||
],
|
|
||||||
'topic_nas_help' => [
|
|
||||||
'module_title' => 'Quick Start Guide',
|
|
||||||
'search_input_placeholder' => 'What are you looking for?',
|
|
||||||
'article_section_title' => 'User\' s Guide',
|
|
||||||
'contact_section_title' => 'Contact US',
|
|
||||||
'view_more' => 'Click to view more',
|
|
||||||
'content' => 'Content'
|
|
||||||
]
|
|
||||||
];
|
|
||||||
221
app/index/lang/en-us/mobile.php
Normal file
221
app/index/lang/en-us/mobile.php
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
// 公共header/footer
|
||||||
|
'首页' => 'Home',
|
||||||
|
'产品列表' => 'Products',
|
||||||
|
'搜索' => 'Search',
|
||||||
|
'搜索历史' => 'Search History',
|
||||||
|
'请择地区' => 'SELECT A REGION',
|
||||||
|
'产品' => 'Product',
|
||||||
|
'联系方式' => 'Contact',
|
||||||
|
|
||||||
|
// 返回文本
|
||||||
|
'提交成功' => 'success',
|
||||||
|
'提交失败' => 'fail',
|
||||||
|
'信息已成功提交!' => 'Add Success!',
|
||||||
|
'信息提交失败!' => 'Add Fail!',
|
||||||
|
'留言提交失败' => 'Message submit failed',
|
||||||
|
'留言提交成功' => 'Message submit success',
|
||||||
|
'当前选定语言的采购可选品类配置出错' => 'Current language configuration of purchase optional categories is incorrect',
|
||||||
|
|
||||||
|
// 首页
|
||||||
|
'index/index' => [
|
||||||
|
'查看所有' => 'View All',
|
||||||
|
'明星产品/热点产品' => 'Featured Products',
|
||||||
|
'了解更多' => 'Learn More',
|
||||||
|
'Orico 技术' => 'ORICO Technology',
|
||||||
|
'强大功能、简单使用' => 'designed to be just as easy to learn as iPhone. chatting with friends.',
|
||||||
|
'常见问题' => 'FAQ',
|
||||||
|
'回答您最关心的问题' => 'What are you most concerned about',
|
||||||
|
'客服团队的工作时间:周一到周五,早9点到晚6点 平均应答时间:24小时内' => 'Our customer support is available Monday to Friday: 9am-6:00pm. Average answer time: 24h',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 文章详情页
|
||||||
|
'article/detail' => [
|
||||||
|
'分享' => 'SHARE',
|
||||||
|
'留言' => 'Leave a Reply',
|
||||||
|
'名称' => 'Name',
|
||||||
|
'电子邮箱' => 'Email',
|
||||||
|
'您的电子邮件地址不会被公开' => 'Your email address will not be pulished.',
|
||||||
|
'留言内容' => 'Comment',
|
||||||
|
'评论' => 'COMMENT',
|
||||||
|
'提交留言' => 'POST COMMENT',
|
||||||
|
'你可能还喜欢' => 'Recommended for you',
|
||||||
|
'链接复制成功' => 'Link copied successfully',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 产品分类
|
||||||
|
'product/category' => [
|
||||||
|
'查看全部' => 'View All',
|
||||||
|
],
|
||||||
|
// 产品搜索
|
||||||
|
'product/search' => [
|
||||||
|
'搜索' => 'Search',
|
||||||
|
'请搜索' => 'Please search...',
|
||||||
|
],
|
||||||
|
// 产品详情
|
||||||
|
'product/detail' => [
|
||||||
|
'首页' => 'Home',
|
||||||
|
'型号' => 'Model',
|
||||||
|
'发送查询' => 'Send Inquiry',
|
||||||
|
'产品描述' => 'Product Description',
|
||||||
|
'关联产品' => 'Related Products',
|
||||||
|
'姓名' => 'Name',
|
||||||
|
'请输入您的名称' => 'First name',
|
||||||
|
'请输入您的姓氏' => 'Last name',
|
||||||
|
'公司/组织' => 'Company/Organization',
|
||||||
|
'邮箱' => 'Email',
|
||||||
|
'电话号码' => 'Phone Number',
|
||||||
|
'国家' => 'Country',
|
||||||
|
'请选择所属国家' => 'Select your country',
|
||||||
|
'行业' => 'Industry',
|
||||||
|
'询问内容' => 'Inquiry',
|
||||||
|
'提交' => 'SUBMIT',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 常见问题
|
||||||
|
'faq/index' => [
|
||||||
|
'常见FQ_下载与服务_中文官网帮助信息_ORICO/奥睿科官网' => 'FAQ',
|
||||||
|
'常见问题解答' => 'Frequently asked questions',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 附件下载
|
||||||
|
'attachment/index' => [
|
||||||
|
'软件下载' => 'Software download',
|
||||||
|
'支持型号' => 'Supported Models',
|
||||||
|
'支持系统' => 'Supported Systems',
|
||||||
|
'全站搜索' => 'Search',
|
||||||
|
'搜索' => 'Search',
|
||||||
|
'请搜索' => 'Please search...',
|
||||||
|
],
|
||||||
|
'attachment/video' => [
|
||||||
|
'软件和驱动程序' => 'Software and Drivers',
|
||||||
|
'您的浏览器不支持 video 标签。' => 'Your browser does not support HTML5 video.',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 联系我们批量购买页面
|
||||||
|
'contactus/bulkbuy' => [
|
||||||
|
'批量购买' => 'Bulk Buy',
|
||||||
|
'公司名称' => 'Company Name',
|
||||||
|
'法定营业名称' => 'Legal business name',
|
||||||
|
'官方网站' => 'Official website',
|
||||||
|
'请粘贴网址' => 'Please paste the URL',
|
||||||
|
'姓名' => 'Your Name',
|
||||||
|
'姓' => 'Last name',
|
||||||
|
'名' => 'First name',
|
||||||
|
'邮箱' => 'Email',
|
||||||
|
'请输入邮箱' => 'Enter your Email',
|
||||||
|
'电话号码' => 'Phone Number',
|
||||||
|
'请输入电话号码' => 'Enter your Phone Number',
|
||||||
|
'您对哪个产品品类感兴趣?' => 'Products you are interested in?',
|
||||||
|
'留言' => 'Message',
|
||||||
|
'请输入留言' => 'Enter your message',
|
||||||
|
'提交' => 'SUBMIT',
|
||||||
|
],
|
||||||
|
// 联系我们成为分销商页面
|
||||||
|
'contactus/distributor' => [
|
||||||
|
'成为经销商' => 'Become a Distributor',
|
||||||
|
'准备好加入我们了吗?<br> 在下面输入您的详细信息,我们的销售团队将在2个工作日内回复您。' => 'Ready to join us?<br/>Enter your details below and our Sales team will get back to you within 2 business days.',
|
||||||
|
'公司名称' => 'Company Name',
|
||||||
|
'请输入公司名称' => 'Enter your Company Name',
|
||||||
|
'电子邮件' => 'Contact Email',
|
||||||
|
'请输入邮箱' => 'Enter your Email',
|
||||||
|
'电话号码' => 'Phone Number',
|
||||||
|
'请输入电话号码' => 'Enter your Phone Number',
|
||||||
|
'业务类型' => 'Type of Business',
|
||||||
|
'在线商店网址' => 'Online Store URL',
|
||||||
|
'企业规模' => 'Enterprise Size',
|
||||||
|
'公司地址' => 'Company Address',
|
||||||
|
'请输入地址' => 'Enter Address',
|
||||||
|
'留言' => 'Message',
|
||||||
|
'请输入留言' => 'Enter your message',
|
||||||
|
'提交' => 'SUBMIT',
|
||||||
|
],
|
||||||
|
// 联系我们留言页
|
||||||
|
'contactus/message' => [
|
||||||
|
'我们的信息' => 'Our Information',
|
||||||
|
'姓名' => 'Your name',
|
||||||
|
'电子邮箱' => 'Your email',
|
||||||
|
'您的问题' => 'Your message',
|
||||||
|
'提交您的问题' => 'Send Us Your Question',
|
||||||
|
'请输入内容...' => 'This is your placeholder text',
|
||||||
|
'发送' => 'SEND',
|
||||||
|
'成为经销商' => 'Become a Distributor',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 关于我们 - 品牌介绍
|
||||||
|
'aboutus/introduction' => [
|
||||||
|
'品牌介绍' => 'Introduction of the Brand',
|
||||||
|
'选择我们的理由' => 'Why Choose Us',
|
||||||
|
'为您提供专属定制服务' => 'How We Can Help with Customization',
|
||||||
|
'对于不同的情况' => 'For Different Situation',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 关于我们 - 文化介绍
|
||||||
|
'aboutus/culture' => [
|
||||||
|
'文化介绍' => 'Culture Introduction',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 关于我们 - 品牌历程
|
||||||
|
'aboutus/mileage' => [
|
||||||
|
'ORICO荣耀' => 'Our Achievement',
|
||||||
|
'品牌里程' => 'Brand Events',
|
||||||
|
'品牌活动' => 'Tech Development',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 关于我们 - 售后政策
|
||||||
|
'aboutus/policy' => [
|
||||||
|
'售后政策_注意事项' => 'After-Sales Policy',
|
||||||
|
'售后政策' => 'After-sale Policy',
|
||||||
|
'ORICO/奥睿科商城为您提供七天包退、15天换新、1年保修、终身维护的服务承诺' => 'ORICO commits to provide 7-day Refund, 15-day Exchange, 1-year Quality Warranty. ',
|
||||||
|
'为了保障您的合法权益,敬请关注以下信息' => 'For your own benefits, please mind the following information',
|
||||||
|
'为了得到深圳市元创时代科技有限公司给予您的“包修、包换、包退”的权益,请您:' => 'For a smooth return and refund, quality warranty, please follow these steps:',
|
||||||
|
'特别说明' => 'ORICO is not liable for:'
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 首页
|
||||||
|
'topicnas/index' => [
|
||||||
|
'网络存储解决方案' => 'Network Storage Solutions',
|
||||||
|
'配套软件' => 'Software',
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 客户合作页
|
||||||
|
'topicnas/cooperation' => [
|
||||||
|
'成为ORICO合作伙伴' => 'Be an ORICO partner',
|
||||||
|
'合作伙伴招募' => 'Partner recruitment',
|
||||||
|
'广告代理' => 'Advertising Agency',
|
||||||
|
'抖音销售' => 'Douyin Sales',
|
||||||
|
'代理经销合作' => 'Proxy and distribution cooperation',
|
||||||
|
'ODM合作' => 'ODM cooperation',
|
||||||
|
'合作优势' => 'Cooperation advantages',
|
||||||
|
'期待与您的合作' => 'Looking forward to working with you'
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 下载页
|
||||||
|
'topicnas/download' => [
|
||||||
|
'CyberData赛博云空间' => 'CyberData',
|
||||||
|
'Weline微链接' => 'Weline'
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 帮助页
|
||||||
|
'topicnas/help' => [
|
||||||
|
'帮助中心' => 'Quick Start Guide',
|
||||||
|
'请输入搜索关键字,如安装赛博云空间,影视库' => 'What are you looking for?',
|
||||||
|
'取消' => 'Cancel',
|
||||||
|
'使用教程' => 'User\' s Guide',
|
||||||
|
'查看更多' => 'Click to view more',
|
||||||
|
'联系我们' => 'Contact US',
|
||||||
|
'目录' => 'Content'
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 帮助详情页
|
||||||
|
'topicnas/helpdetail' => [
|
||||||
|
'帮助中心' => 'Quick Start Guide',
|
||||||
|
'请输入搜索关键字,如安装赛博云空间,影视库' => 'What are you looking for?',
|
||||||
|
'取消' => 'Cancel',
|
||||||
|
'使用教程' => 'User\' s Guide',
|
||||||
|
'联系我们' => 'Contact US',
|
||||||
|
'目录' => 'Content'
|
||||||
|
],
|
||||||
|
];
|
||||||
221
app/index/lang/en-us/pc.php
Normal file
221
app/index/lang/en-us/pc.php
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'首页' => 'Home',
|
||||||
|
'产品列表' => 'Products',
|
||||||
|
'店铺' => 'Store',
|
||||||
|
'搜索记录' => 'Search History',
|
||||||
|
'热销产品' => 'Popular Products',
|
||||||
|
'产品' => 'Product',
|
||||||
|
'联系我们' => 'Contact',
|
||||||
|
|
||||||
|
// 返回文本
|
||||||
|
'提交成功' => 'success',
|
||||||
|
'提交失败' => 'fail',
|
||||||
|
'信息已成功提交!' => 'Add Success!',
|
||||||
|
'信息提交失败!' => 'Add Fail!',
|
||||||
|
'当前选定语言的采购可选品类配置出错' => 'Current language configuration of purchase optional categories is incorrect',
|
||||||
|
|
||||||
|
// 首页
|
||||||
|
'index/index' => [
|
||||||
|
'查看所有' => 'View All',
|
||||||
|
'明星产品/热点产品' => 'Featured Products',
|
||||||
|
'了解更多' => 'Learn More',
|
||||||
|
'ORICO 技术' => 'ORICO Technology',
|
||||||
|
'强大功能、简单使用' => 'Designed to be just as easy to learn as iPhone.Chatting with friends.',
|
||||||
|
'常见问题' => 'FAQ',
|
||||||
|
'回答您最关心的问题' => 'What are you most concerned about',
|
||||||
|
'客服团队的工作时间:周一到周五,早9点到晚6点 平均应答时间:24小时内' => 'Our customer support is available Manday to Friday 9am600pmAverage arswer time 24h',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 文章详情页
|
||||||
|
'article/detail' => [
|
||||||
|
'分享' => 'SHARE',
|
||||||
|
'留言' => 'Leave a Reply',
|
||||||
|
'名称' => 'Name',
|
||||||
|
'电子邮箱' => 'Email',
|
||||||
|
'您的电子邮件地址不会被公开' => 'Your email address will not be pulished.',
|
||||||
|
'留言内容' => 'Comment',
|
||||||
|
'评论' => 'COMMENT',
|
||||||
|
'提交留言' => 'POST COMMENT',
|
||||||
|
'你可能还喜欢' => 'Recommended for you',
|
||||||
|
'链接复制成功' => 'Link copied successfully',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 常见问题
|
||||||
|
'faq/index' => [
|
||||||
|
'常见FQ_下载与服务_中文官网帮助信息_ORICO/奥睿科官网' => 'FAQ',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 附件页 - 软件下载
|
||||||
|
'attachment/index' => [
|
||||||
|
'软件和驱动程序' => 'Software and Drivers',
|
||||||
|
'视频' => 'Videos',
|
||||||
|
'支持型号' => 'Supported Models',
|
||||||
|
'支持系统' => 'Supported Systems',
|
||||||
|
'搜索' => 'Search',
|
||||||
|
'查询无结果!' => 'No Result!',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 附件页 - 视频
|
||||||
|
'attachment/video' => [
|
||||||
|
'软件和驱动程序' => 'Software and Drivers',
|
||||||
|
'搜索' => 'Search',
|
||||||
|
'视频' => 'Videos',
|
||||||
|
'查询无此视频!' => 'No Video!',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 关于我们 - 品牌介绍
|
||||||
|
'aboutus/introduction' => [
|
||||||
|
'品牌介绍' => 'Introduction of the Brand',
|
||||||
|
'选择我们的理由' => 'Why Choose Us',
|
||||||
|
'为您提供专属定制服务' => 'How We Can Help with Customization',
|
||||||
|
'对于不同的情况' => 'For Different Situation',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 关于我们 - 品牌历程
|
||||||
|
'aboutus/mileage' => [
|
||||||
|
'ORICO荣耀' => 'Our Achievement',
|
||||||
|
'品牌里程' => 'Brand Events',
|
||||||
|
'品牌活动' => 'Tech Development',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 关于我们 - 售后政策
|
||||||
|
'aboutus/policy' => [
|
||||||
|
'售后政策_注意事项' => 'After-Sales Policy',
|
||||||
|
'售后政策' => 'After-sale Policy',
|
||||||
|
'ORICO/奥睿科商城为您提供七天包退、15天换新、1年保修、终身维护的服务承诺' => 'ORICO commits to provide 7-day Refund, 15-day Exchange, 1-year Quality Warranty. ',
|
||||||
|
'为了保障您的合法权益,敬请关注以下信息' => 'For your own benefits, please mind the following information',
|
||||||
|
'为了得到深圳市元创时代科技有限公司给予您的“包修、包换、包退”的权益,请您:' => 'For a smooth return and refund, quality warranty, please follow these steps:',
|
||||||
|
'特别说明' => 'ORICO is not liable for:'
|
||||||
|
],
|
||||||
|
|
||||||
|
// 关于我们 - 文化介绍
|
||||||
|
'aboutus/culture' => [
|
||||||
|
'文化介绍' => 'Culture Introduction',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 联系我们
|
||||||
|
'contactus/index' => [
|
||||||
|
'客户服务' => 'contact us',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 联系我们 - 留言
|
||||||
|
'contactus/message' => [
|
||||||
|
'联系我们' => 'contact us',
|
||||||
|
'我们的信息' => 'Our Information',
|
||||||
|
'提交您的问题' => 'Send Us Your Question',
|
||||||
|
'姓名' => 'Yuor Name',
|
||||||
|
'请输入你的姓名' => 'This is your placeholder text',
|
||||||
|
'电子邮箱' => 'Your Email',
|
||||||
|
'请输入你的邮箱' => 'This is your placeholder text',
|
||||||
|
'您的问题' => 'Your Message',
|
||||||
|
'请输入你的问题' => 'This is your placeholder text',
|
||||||
|
'发送' => 'SEND',
|
||||||
|
'成为经销商' => 'Become a Distributor',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 联系我们 - 成为经销商
|
||||||
|
'contactus/distributor' => [
|
||||||
|
'成为经销商' => 'To Be Our Distributor',
|
||||||
|
'准备好加入我们了吗?' => 'Ready to join us?',
|
||||||
|
'在下面输入您的详细信息,我们的销售团队将在2个工作日内回复您。' => 'Enter your details below and our Sales team will get back to you within 2 business days.',
|
||||||
|
'公司名称' => 'Company Name',
|
||||||
|
'请输入公司名称' => 'Enter your Company Name',
|
||||||
|
'电子邮箱' => 'Contact Email',
|
||||||
|
'请输入邮箱' => 'Enter your Email',
|
||||||
|
'电话号码' => 'Phone Number',
|
||||||
|
'请输入电话号码' => 'This is your placeholder text',
|
||||||
|
'业务类型' => 'Type of Business',
|
||||||
|
'在线商店网址' => 'Online Shop URL',
|
||||||
|
'请输入网址' => 'This is your placeholder URL',
|
||||||
|
'企业规模' => 'Enterprise size',
|
||||||
|
'公司地址' => 'Company Address',
|
||||||
|
'请输入地址' => 'Enter Address',
|
||||||
|
'留言' => 'Message',
|
||||||
|
'请输入留言' => 'Enter your message',
|
||||||
|
'提交' => 'SUBMIT',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 联系我们 - 批量购买
|
||||||
|
'contactus/bulkbuy' => [
|
||||||
|
'商务订单' => 'Bulk Buy',
|
||||||
|
'批量购买' => 'Bulk Buy',
|
||||||
|
'公司名称' => 'Company Name',
|
||||||
|
'法定营业名称' => 'Legal business name',
|
||||||
|
'官方网站' => 'Official website',
|
||||||
|
'请粘贴网址' => 'Please paste the URL',
|
||||||
|
'姓名' => 'Your Name',
|
||||||
|
'名' => 'First name',
|
||||||
|
'姓' => 'Last name',
|
||||||
|
'电子邮箱' => 'Email',
|
||||||
|
'请输入邮箱' => 'Please enter your email',
|
||||||
|
'电话号码' => 'Phone Numbe',
|
||||||
|
'请输入电话号码' => 'Please enter your phone number',
|
||||||
|
'您对哪个产品品类感兴趣?' => 'Products you are interested in?',
|
||||||
|
'留言' => 'Message',
|
||||||
|
'请输入留言' => 'Methods used',
|
||||||
|
'提交' => 'SUBMIT',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 产品 - 产品详情页
|
||||||
|
'product/detail' => [
|
||||||
|
'首页' => 'Home',
|
||||||
|
'产品详情' => 'Product Description',
|
||||||
|
'相关产品' => 'Related Products',
|
||||||
|
'发送查询' => 'Send Inquiry',
|
||||||
|
'姓名' => 'Name',
|
||||||
|
'请输入您的姓' => 'First name',
|
||||||
|
'请输入您的名' => 'Last name',
|
||||||
|
'公司/组织' => 'Company/Organization',
|
||||||
|
'电子邮箱' => 'Email Address',
|
||||||
|
'电话号码' => 'Phone Number',
|
||||||
|
'国家' => 'Country',
|
||||||
|
'请选择所属国家' => '--- Select your country ---',
|
||||||
|
'行业' => 'Industry',
|
||||||
|
'询问内容' => 'Inquiry',
|
||||||
|
'提交' => 'SUBMIT',
|
||||||
|
],
|
||||||
|
|
||||||
|
// 产品 - 分类
|
||||||
|
'product/category' => [
|
||||||
|
'查看全部' => 'View All',
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 首页
|
||||||
|
'topicnas/index' => [
|
||||||
|
'网络存储解决方案' => 'Network Storage Solutions',
|
||||||
|
'配套软件' => 'Software',
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 客户合作页
|
||||||
|
'topicnas/cooperation' => [
|
||||||
|
'合作优势' => 'Cooperation advantages',
|
||||||
|
'期待与您的合作' => 'Looking forward to working with you'
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 下载页
|
||||||
|
'topicnas/download' => [
|
||||||
|
'CyberData赛博云空间' => 'CyberData',
|
||||||
|
'Weline微链接' => 'Weline'
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 帮助页
|
||||||
|
'topicnas/help' => [
|
||||||
|
'帮助中心' => 'Quick Start Guide',
|
||||||
|
'请输入搜索关键字,如安装赛博云空间,影视库' => 'What are you looking for?',
|
||||||
|
'使用教程' => 'User\' s Guide',
|
||||||
|
'查看更多' => 'Click to view more',
|
||||||
|
'联系我们' => 'Contact US',
|
||||||
|
'目录' => 'Content'
|
||||||
|
],
|
||||||
|
|
||||||
|
// nas主题 - 帮助详情页
|
||||||
|
'topicnas/helpdetail' => [
|
||||||
|
'帮助中心' => 'Quick Start Guide',
|
||||||
|
'请输入搜索关键字,如安装赛博云空间,影视库' => 'What are you looking for?',
|
||||||
|
'使用教程' => 'User\' s Guide',
|
||||||
|
'联系我们' => 'Contact US',
|
||||||
|
'目录' => 'Content'
|
||||||
|
],
|
||||||
|
];
|
||||||
40
app/index/lang/en-us/validate.php
Normal file
40
app/index/lang/en-us/validate.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'姓不能为空' => 'Last name is required',
|
||||||
|
'姓不能超过:rule个字符' => 'Last name cannot exceed :rule characters',
|
||||||
|
'名不能为空' => 'First Name is required',
|
||||||
|
'名不能超过:rule个字符' => 'First name cannot exceed :rule characters',
|
||||||
|
'姓名不能为空' => 'Name is required',
|
||||||
|
'姓名不能超过:rule个字符' => 'Name cannot exceed :rule characters',
|
||||||
|
'电话号码不能为空' => 'Phone Number is required',
|
||||||
|
'电话号码不能超过:rule个字符' => 'Phone number cannot exceed :rule characters',
|
||||||
|
'感兴趣的产品种类不能为空' => 'Interested product categories is required',
|
||||||
|
'感兴趣的产品种类不能超过:rule个字符' => 'Interested product categories cannot exceed :rule characters',
|
||||||
|
'邮箱不能为空' => 'Email is required',
|
||||||
|
'邮箱格式不正确' => 'Email format is incorrect',
|
||||||
|
'邮箱不能超过:rule个字符' => 'Email cannot exceed :rule characters',
|
||||||
|
'国家不能为空' => 'Country is required',
|
||||||
|
'国家不能超过:rule个字符' => 'Country cannot exceed :rule characters',
|
||||||
|
'网址格式不正确' => 'URL format is incorrect',
|
||||||
|
'网址不能超过:rule个字符' => 'URL cannot exceed :rule characters',
|
||||||
|
'公司名称不能为空' => 'Company Name is required',
|
||||||
|
'公司名称不能超过:rule个字符' => 'Company name cannot exceed :rule characters',
|
||||||
|
'公司地址不能为空' => 'Company Address is required',
|
||||||
|
'公司地址不能超过:rule个字符' => 'Company Address cannot exceed :rule characters',
|
||||||
|
'留言不能为空' => 'Message is required',
|
||||||
|
'企业规模不能为空' => 'Enterprise Size is required',
|
||||||
|
'企业规模不能超过:rule个字符' => 'Enterprise Size cannot exceed :rule characters',
|
||||||
|
'业务类型不能为空' => 'Type of Business is required',
|
||||||
|
'业务类型不能超过:rule个字符' => 'Type of Business cannot exceed :rule characters',
|
||||||
|
'公司/组织不能为空' => 'Company/Organization is required',
|
||||||
|
'公司/组织不能超过:rule个字符' => 'Company/Organization cannot exceed :rule characters',
|
||||||
|
'行业不能为空' => 'Industry is required',
|
||||||
|
'行业不能超过:rule个字符' => 'Industry cannot exceed :rule characters',
|
||||||
|
'询问内容不能为空' => 'Inquiry is required',
|
||||||
|
'询问内容不能超过:rule个字符' => 'Inquiry cannot exceed :rule characters',
|
||||||
|
'留言内容不能为空' => 'Message content is required',
|
||||||
|
'留言内容不能超过:rule个字符' => 'Message content cannot exceed :rule characters',
|
||||||
|
'问题不能为空' => 'Question is required',
|
||||||
|
'问题不能超过:rule个字符' => 'Question cannot exceed :rule characters',
|
||||||
|
];
|
||||||
@@ -1,226 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'header_navigation' => [
|
|
||||||
'product_categorys' => '产品列表',
|
|
||||||
'store' => '店铺'
|
|
||||||
],
|
|
||||||
'header_search' => [
|
|
||||||
'hot_product' => '热销产品',
|
|
||||||
'history' => '搜索记录',
|
|
||||||
],
|
|
||||||
'footer_navigation' => [
|
|
||||||
'product_categorys' => '产品'
|
|
||||||
],
|
|
||||||
'footer_contact' => '联系我们',
|
|
||||||
'index' => [
|
|
||||||
'featured_products' => '明星产品/热点产品',
|
|
||||||
'view_all' => '查看所有',
|
|
||||||
'learn_more' => '了解更多',
|
|
||||||
'orico_technology' => 'ORICO 技术',
|
|
||||||
'orico_technology_desc' => '强大功能、简单使用',
|
|
||||||
'faq' => '常见问题',
|
|
||||||
'faq_short_desc' => '回答您最关心的问题',
|
|
||||||
'faq_desc' => '客服团队的工作时间:周一到周五,早9点到晚6点 平均应答时间:24小时内',
|
|
||||||
],
|
|
||||||
'article' => [
|
|
||||||
'detail_share' => '分享',
|
|
||||||
'detail_leave_reply' => '留言',
|
|
||||||
'detail_leave_reply_name' => '名称',
|
|
||||||
'detail_leave_reply_email' => '电子邮箱',
|
|
||||||
'detail_leave_reply_email_tip' => '您的电子邮件地址不会被公开',
|
|
||||||
'detail_leave_reply_comment' => '留言',
|
|
||||||
'detail_leave_reply_submit' => '提交留言',
|
|
||||||
'detail_recommend' => '你可能还喜欢',
|
|
||||||
],
|
|
||||||
'attachment' => [
|
|
||||||
'software_drives' => '软件和驱动程序',
|
|
||||||
'video' => '视频',
|
|
||||||
'support_model' => '支持型号',
|
|
||||||
'support_platform' => '支持系统',
|
|
||||||
'search_placeholder' => '搜索型号',
|
|
||||||
'no_data' => '查询无结果!',
|
|
||||||
'no_video' => '查询无此视频!',
|
|
||||||
],
|
|
||||||
'aboutus_introduction' => [
|
|
||||||
'title' => '品牌介绍',
|
|
||||||
'section_why_title' => '选择我们的理由',
|
|
||||||
'section_service_title' => '为您提供专属定制服务',
|
|
||||||
'section_difference_title' => '对于不同的情况',
|
|
||||||
],
|
|
||||||
'aboutus_mileage' => [
|
|
||||||
'achievement' => 'ORICO荣耀',
|
|
||||||
'events' => '品牌里程',
|
|
||||||
'development' => '品牌活动',
|
|
||||||
],
|
|
||||||
'aboutus_policy' => [
|
|
||||||
'title' => '售后政策_注意事项',
|
|
||||||
'banner_1_title' => '售后政策',
|
|
||||||
'banner_1_desc' => 'ORICO/奥睿科商城为您提供七天包退、15天换新、1年保修、终身维护的服务承诺',
|
|
||||||
'banner_3_title' => '为了保障您的合法权益,敬请关注以下信息',
|
|
||||||
'banner_3_desc' => '为了得到深圳市元创时代科技有限公司给予您的“包修、包换、包退”的权益,请您:',
|
|
||||||
'banner_5_title' => '特别说明'
|
|
||||||
],
|
|
||||||
'contact_index' => [
|
|
||||||
'title' => '客户服务',
|
|
||||||
],
|
|
||||||
'contact_message' => [
|
|
||||||
'title' => '联系我们',
|
|
||||||
'our_information' => '我们的信息',
|
|
||||||
'send_question' => '提交您的问题',
|
|
||||||
'form_name' => '姓名',
|
|
||||||
'form_name_placeholder' => '请输入你的姓名',
|
|
||||||
'form_email' => '电子邮箱',
|
|
||||||
'form_email_placeholder' => '请输入你的邮箱',
|
|
||||||
'form_question' => '您的问题',
|
|
||||||
'form_question_placeholder' => '请输入你的问题',
|
|
||||||
'form_submit' => '发送',
|
|
||||||
'become_a_distributor' => '成为经销商',
|
|
||||||
// 验证器中文本
|
|
||||||
'validate_name_required' => '姓名不能为空',
|
|
||||||
'validate_name_max' => '姓名不能超过64个字符',
|
|
||||||
'validate_email_required' => '邮箱不能为空',
|
|
||||||
'validate_email_email' => '邮箱格式不正确',
|
|
||||||
'validate_email_max' => '邮箱不能超过128个字符',
|
|
||||||
'validate_content_required' => '问题不能为空',
|
|
||||||
'validate_content_max' => '问题不能超过1024个字符',
|
|
||||||
// 返回文本
|
|
||||||
'send_success' => '提交成功',
|
|
||||||
'send_fail' => '提交失败',
|
|
||||||
],
|
|
||||||
'contact_distributor' => [
|
|
||||||
'title' => '成为经销商',
|
|
||||||
'section_title' => '成为经销商',
|
|
||||||
'section_desc_1' => '准备好加入我们了吗?',
|
|
||||||
'section_desc_2' => '在下面输入您的详细信息,我们的销售团队将在2个工作日内回复您。',
|
|
||||||
'form_corp_name' => '公司名称',
|
|
||||||
'form_corp_name_placeholder' => '请输入公司名称',
|
|
||||||
'form_email' => '电子邮箱',
|
|
||||||
'form_email_placeholder' => '请输入邮箱',
|
|
||||||
'form_phone' => '电话号码',
|
|
||||||
'form_phone_placeholder' => '请输入电话号码',
|
|
||||||
'form_business_type' => '业务类型',
|
|
||||||
'form_online_shop_url' => '在线商店网址',
|
|
||||||
'form_online_shop_url_placeholder' => '请输入网址',
|
|
||||||
'form_enterprise_size' => '企业规模',
|
|
||||||
'form_corp_address' => '公司地址',
|
|
||||||
'form_corp_address_placeholder' => '请输入地址',
|
|
||||||
'form_message' => '留言',
|
|
||||||
'form_message_placeholder' => '请输入留言',
|
|
||||||
'form_submit' => '提交',
|
|
||||||
// 验证器中文本
|
|
||||||
'validate_name_required' => '公司名称不能为空',
|
|
||||||
'validate_name_max' => '公司名称不能超过64个字符',
|
|
||||||
'validate_email_required' => '邮箱不能为空',
|
|
||||||
'validate_email_email' => '邮箱格式不正确',
|
|
||||||
'validate_email_max' => '邮箱不能超过128个字符',
|
|
||||||
'validate_phone_required' => '电话号码不能为空',
|
|
||||||
'validate_phone_max' => '电话号码不能超过64个字符',
|
|
||||||
'validate_business_type_required' => '业务类型不能为空',
|
|
||||||
'validate_business_type_max' => '业务类型不能超过128个字符',
|
|
||||||
'validate_enterprise_size_required' => '企业规模不能为空',
|
|
||||||
'validate_enterprise_size_max' => '企业规模不能超过128个字符',
|
|
||||||
'validate_address_required' => '公司地址不能为空',
|
|
||||||
'validate_address_max' => '公司地址不能超过255个字符',
|
|
||||||
'validate_message_required' => '留言内容不能为空',
|
|
||||||
// 返回文本
|
|
||||||
'send_success' => '信息已成功提交',
|
|
||||||
'send_fail' => '信息提交失败',
|
|
||||||
],
|
|
||||||
'contact_bulkbuy' => [
|
|
||||||
'title' => '商务订单',
|
|
||||||
'form_title' => '批量购买',
|
|
||||||
'form_corp_name_label' => '公司名称',
|
|
||||||
'form_corp_name_placeholder' => '法定营业名称',
|
|
||||||
'form_website_url_label' => '官方网站',
|
|
||||||
'form_website_url_placeholder' => '请粘贴网址',
|
|
||||||
'form_username_label' => '姓名',
|
|
||||||
'form_firstname_placeholder' => '名',
|
|
||||||
'form_lastname_placeholder' => '姓',
|
|
||||||
'form_email_label' => '电子邮箱',
|
|
||||||
'form_email_placeholder' => '请输入邮箱',
|
|
||||||
'form_phone_label' => '电话号码',
|
|
||||||
'form_phone_placeholder' => '请输入电话号码',
|
|
||||||
'form_checkbox_label' => '您对哪个产品品类感兴趣?',
|
|
||||||
'form_message_label' => '留言',
|
|
||||||
'form_message_placeholder' => '请输入留言',
|
|
||||||
'form_submit' => '提交',
|
|
||||||
// 验证器中文本
|
|
||||||
'validate_corp_name_require' => '公司名称不能为空',
|
|
||||||
'validate_corp_name_max' => '公司名称不能超过128个字符',
|
|
||||||
'validate_url_max' => '网址不能超过255个字符',
|
|
||||||
'validate_first_name_require' => '名不能为空',
|
|
||||||
'validate_first_name_max' => '名不能超过64个字符',
|
|
||||||
'validate_last_name_require' => '姓不能为空',
|
|
||||||
'validate_last_name_max' => '姓不能超过64个字符',
|
|
||||||
'validate_email_require' => '邮箱不能为空',
|
|
||||||
'validate_email_email' => '邮箱格式不正确',
|
|
||||||
'validate_email_max' => '邮箱不能超过128个字符',
|
|
||||||
'validate_phone_max' => '电话号码不能超过32个字符',
|
|
||||||
'validate_interested_max' => '感兴趣的产品种类不能超过255个字符',
|
|
||||||
'validate_message_require' => '留言内容不能为空',
|
|
||||||
'validate_message_max' => '留言内容不能超过1024个字符',
|
|
||||||
// 返回文本
|
|
||||||
'send_success' => '信息已成功提交',
|
|
||||||
'send_fail' => '信息提交失败',
|
|
||||||
],
|
|
||||||
'product_newpro' => [
|
|
||||||
'view_all' => '查看全部'
|
|
||||||
],
|
|
||||||
'product_detail' => [
|
|
||||||
'detail_section_title' => '产品详情',
|
|
||||||
'related_products' => '相关产品',
|
|
||||||
'display_form' => '发送查询',
|
|
||||||
'form_name' => '姓名',
|
|
||||||
'form_first_name_placeholder' => '请输入您的姓',
|
|
||||||
'form_last_name_placeholder' => '请输入您的名',
|
|
||||||
'form_corp' => '公司/组织',
|
|
||||||
'form_email' => '电子邮箱',
|
|
||||||
'form_phone' => '电话号码',
|
|
||||||
'form_country' => '国家',
|
|
||||||
'form_country_placeholder' => '请选择所属国家',
|
|
||||||
'form_industry' => '行业',
|
|
||||||
'form_inquiry' => '询问内容',
|
|
||||||
'form_submit' => '提交',
|
|
||||||
// 验证器中文本
|
|
||||||
'validate_first_name_require' => '名不能为空',
|
|
||||||
'validate_first_name_max' => '名不能超过64个字符',
|
|
||||||
'validate_last_name_require' => '姓不能为空',
|
|
||||||
'validate_last_name_max' => '姓不能超过64个字符',
|
|
||||||
'validate_email_require' => '邮箱不能为空',
|
|
||||||
'validate_email_email' => '邮箱格式不正确',
|
|
||||||
'validate_email_max' => '邮箱不能超过128个字符',
|
|
||||||
'validate_phone_max' => '电话号码不能超过32个字符',
|
|
||||||
'validate_country_name_require' => '国家不能为空',
|
|
||||||
'validate_country_name_max' => '国家不能超过128个字符',
|
|
||||||
'validate_corp_name_require' => '公司/组织不能为空',
|
|
||||||
'validate_corp_name_max' => '公司/组织不能超过128个字符',
|
|
||||||
'validate_industry_require' => '行业不能为空',
|
|
||||||
'validate_industry_max' => '行业不能超过64个字符',
|
|
||||||
'validate_message_require' => '询问内容不能为空',
|
|
||||||
'validate_message_max' => '询问内容不能超过1024个字符',
|
|
||||||
// 返回文本
|
|
||||||
'send_success' => '信息已成功提交',
|
|
||||||
'send_fail' => '信息提交失败',
|
|
||||||
],
|
|
||||||
'topic_nas_index' => [
|
|
||||||
'solution_section_title' => '<span style="color:#004BFA;">ORICO</span>网络存储解决方案',
|
|
||||||
'software_section_title' => '<span style="color:#004BFA">NAS</span>配套软件',
|
|
||||||
],
|
|
||||||
'topic_nas_cooperation' => [
|
|
||||||
'advantages_section_title' => '合作优势',
|
|
||||||
'contacts_section_title' => '期待与您的合作'
|
|
||||||
],
|
|
||||||
'topic_nas_download' => [
|
|
||||||
'cyber_tab_title' => 'CyberData赛博云空间',
|
|
||||||
'weline_tab_title' => 'Weline微链接'
|
|
||||||
],
|
|
||||||
'topic_nas_help' => [
|
|
||||||
'module_title' => '帮助中心',
|
|
||||||
'search_input_placeholder' => '请输入搜索关键字,如安装赛博云空间,影视库',
|
|
||||||
'article_section_title' => '使用教程',
|
|
||||||
'contact_section_title' => '联系我们',
|
|
||||||
'view_more' => '查看更多',
|
|
||||||
'content' => '目录'
|
|
||||||
]
|
|
||||||
];
|
|
||||||
@@ -2,5 +2,7 @@
|
|||||||
// 这是系统自动生成的middleware定义文件
|
// 这是系统自动生成的middleware定义文件
|
||||||
return [
|
return [
|
||||||
// 启用多语言支持
|
// 启用多语言支持
|
||||||
'think\middleware\LoadLangPack',
|
think\middleware\LoadLangPack::class,
|
||||||
|
// 确认请求来源
|
||||||
|
app\index\middleware\ConfirmRequestFrom::class,
|
||||||
];
|
];
|
||||||
|
|||||||
22
app/index/middleware/ConfirmRequestFrom.php
Normal file
22
app/index/middleware/ConfirmRequestFrom.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
declare (strict_types = 1);
|
||||||
|
|
||||||
|
namespace app\index\middleware;
|
||||||
|
|
||||||
|
class ConfirmRequestFrom
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 处理请求
|
||||||
|
*
|
||||||
|
* @param \think\Request $request
|
||||||
|
* @param \Closure $next
|
||||||
|
* @return Response
|
||||||
|
*/
|
||||||
|
public function handle($request, \Closure $next)
|
||||||
|
{
|
||||||
|
// 确认请求来源
|
||||||
|
$request->from = get_platform();
|
||||||
|
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -46,6 +46,17 @@ class ArticleCategoryModel extends ArticleCategoryBaseModel
|
|||||||
$query->where('pid', '=', $parent);
|
$query->where('pid', '=', $parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 所属子分类范围查询
|
||||||
|
public function scopeChild($query, $id, $merge_self = false)
|
||||||
|
{
|
||||||
|
$query->where(function($q) use($id, $merge_self) {
|
||||||
|
$q->where('pid', '=', $id);
|
||||||
|
if ($merge_self) {
|
||||||
|
$q->whereOr('id', '=', $id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 是否显示状态范围查询
|
// 是否显示状态范围查询
|
||||||
public function scopeIsShow($query, bool $is_show)
|
public function scopeIsShow($query, bool $is_show)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,4 +16,16 @@ class ArticleLeaveMessageModel extends ArticleLeaveMessageBaseModel
|
|||||||
use SoftDelete;
|
use SoftDelete;
|
||||||
// 软删除字段
|
// 软删除字段
|
||||||
protected $deleteTime = 'deleted_at';
|
protected $deleteTime = 'deleted_at';
|
||||||
|
|
||||||
|
// 文章文章范围查询
|
||||||
|
public function scopeArticle($query, $article_id)
|
||||||
|
{
|
||||||
|
$query->where('article_id', '=', $article_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 审核状态范围查询
|
||||||
|
public function scopeAudited($query, bool $is_audited = true)
|
||||||
|
{
|
||||||
|
$query->where('is_audited', '=', (int)$is_audited);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ class ArticleModel extends ArticleBaseModel
|
|||||||
// 文章分类范围查询
|
// 文章分类范围查询
|
||||||
public function scopeCategory($query, $category)
|
public function scopeCategory($query, $category)
|
||||||
{
|
{
|
||||||
|
if (is_null($category)) return;
|
||||||
|
if (is_array($category)) {
|
||||||
|
$query->where('category_id', 'in', $category);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$query->where('category_id', '=', $category);
|
$query->where('category_id', '=', $category);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,6 +79,6 @@ class ProductModel extends ProductBaseModel
|
|||||||
// 关键词搜索
|
// 关键词搜索
|
||||||
public function searchKeywordsAttr($query, string $keywords)
|
public function searchKeywordsAttr($query, string $keywords)
|
||||||
{
|
{
|
||||||
$query->whereRaw('BINARY spu LIKE "%' . $keywords . '%" OR BINARY name LIKE "%' . $keywords . '%" OR BINARY short_name LIKE "%' . $keywords . '%"');
|
$query->whereRaw('spu LIKE "%' . $keywords . '%" OR name LIKE "%' . $keywords . '%" OR short_name LIKE "%' . $keywords . '%"');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,16 @@ class SysBannerModel extends SysBannerBaseModel
|
|||||||
return $this->hasMany(SysBannerItemModel::class, 'banner_id', 'id');
|
return $this->hasMany(SysBannerItemModel::class, 'banner_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 所属平台范围查询
|
||||||
|
public function scopeAtPlatform($query, string|array $platform)
|
||||||
|
{
|
||||||
|
if (is_array($platform)) {
|
||||||
|
$query->whereIn('at_platform', $platform);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$query->where('at_platform', '=', $platform);
|
||||||
|
}
|
||||||
|
|
||||||
// 唯一标识范围查询
|
// 唯一标识范围查询
|
||||||
public function scopeUniqueLabel($query, string|array $unique_label)
|
public function scopeUniqueLabel($query, string|array $unique_label)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ class ContactUsBulkBuyValidate extends Validate
|
|||||||
*/
|
*/
|
||||||
protected $rule = [
|
protected $rule = [
|
||||||
'corp_name' => 'require|max:128',
|
'corp_name' => 'require|max:128',
|
||||||
'url' => 'max:255',
|
'url' => 'url|max:255',
|
||||||
'first_name' => 'require|max:64',
|
'first_name' => 'require|max:64',
|
||||||
'last_name' => 'require|max:64',
|
'last_name' => 'require|max:64',
|
||||||
'email' => 'require|email|max:128',
|
'email' => 'require|email|max:128',
|
||||||
'phone' => 'max:32',
|
'phone' => 'max:32',
|
||||||
'interested' => 'max:255',
|
'interested' => 'require|max:255',
|
||||||
'message' => 'require|max:1024',
|
'message' => 'require|max:1024',
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -31,19 +31,21 @@ class ContactUsBulkBuyValidate extends Validate
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $message = [
|
protected $message = [
|
||||||
'corp_name.require' => 'valudate_corp_name_require',
|
'corp_name.require' => '公司名称不能为空',
|
||||||
'corp_name.max' => 'valudate_corp_name_max',
|
'corp_name.max' => '公司名称不能超过:rule个字符',
|
||||||
'url.max' => 'valudate_url_max',
|
'url.url' => '网址格式不正确',
|
||||||
'first_name.require' => 'valudate_first_name_require',
|
'url.max' => '网址不能超过:rule个字符',
|
||||||
'first_name.max' => 'valudate_first_name_max',
|
'first_name.require' => '名不能为空',
|
||||||
'last_name.require' => 'valudate_last_name_require',
|
'first_name.max' => '名不能超过:rule个字符',
|
||||||
'last_name.max' => 'valudate_last_name_max',
|
'last_name.require' => '姓不能为空',
|
||||||
'email.require' => 'valudate_email_require',
|
'last_name.max' => '姓不能超过:rule个字符',
|
||||||
'email.email' => 'valudate_email_email',
|
'email.require' => '邮箱不能为空',
|
||||||
'email.max' => 'valudate_email_max',
|
'email.email' => '邮箱格式不正确',
|
||||||
'phone.max' => 'valudate_phone_max',
|
'email.max' => '邮箱不能超过:rule个字符',
|
||||||
'interested.max' => 'valudate_interested_max' ,
|
'phone.max' => '电话号码不能超过:rule个字符',
|
||||||
'message.require' => 'valudate_message_require',
|
'interested.require' => '感兴趣的产品种类不能为空',
|
||||||
'message.max' => 'valudate_message_max',
|
'interested.max' => '感兴趣的产品种类不能超过:rule个字符',
|
||||||
|
'message.require' => '留言内容不能为空',
|
||||||
|
'message.max' => '留言内容不能超过:rule个字符',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class ContactUsDistributorValidate extends Validate
|
|||||||
'corp_name' => 'require|max:64',
|
'corp_name' => 'require|max:64',
|
||||||
'email' => 'require|email|max:128',
|
'email' => 'require|email|max:128',
|
||||||
'phone' => 'require|max:64',
|
'phone' => 'require|max:64',
|
||||||
|
'website_url' => 'url|max:255',
|
||||||
'business_type' => 'require|max:128',
|
'business_type' => 'require|max:128',
|
||||||
'enterprise_size' => 'require|max:128',
|
'enterprise_size' => 'require|max:128',
|
||||||
'address' => 'require|max:255',
|
'address' => 'require|max:255',
|
||||||
@@ -30,19 +31,21 @@ class ContactUsDistributorValidate extends Validate
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $message = [
|
protected $message = [
|
||||||
'corp_name.require' => 'contact_distributor.validate_name_required',
|
'corp_name.require' => '公司名称不能为空',
|
||||||
'corp_name.max' => 'contact_distributor.validate_name_max',
|
'corp_name.max' => '公司名称不能超过:rule个字符',
|
||||||
'email.require' => 'contact_distributor.validate_email_required',
|
'email.require' => '邮箱不能为空',
|
||||||
'email.email' => 'contact_distributor.validate_email_email',
|
'email.email' => '邮箱格式不正确',
|
||||||
'email.max' => 'contact_distributor.validate_email_max',
|
'email.max' => '邮箱不能超过:rule个字符',
|
||||||
'phone.require' => 'contact_distributor.validate_phone_required',
|
'phone.require' => '电话号码不能为空',
|
||||||
'phone.max' => 'contact_distributor.validate_phone_max',
|
'phone.max' => '电话号码不能超过:rule个字符',
|
||||||
'business_type.require' => 'contact_distributor.validate_business_type_required',
|
'website_url.url' => '网址格式不正确',
|
||||||
'business_type.max' => 'contact_distributor.validate_business_type_max',
|
'website_url.max' => '网址不能超过:rule个字符',
|
||||||
'enterprise_size.require' => 'contact_distributor.validate_enterprise_size_required',
|
'business_type.require' => '业务类型不能为空',
|
||||||
'enterprise_size.max' => 'contact_distributor.validate_enterprise_size_max',
|
'business_type.max' => '业务类型不能超过:rule个字符',
|
||||||
'address.require' => 'contact_distributor.validate_address_required',
|
'enterprise_size.require' => '企业规模不能为空',
|
||||||
'address.max' => 'contact_distributor.validate_address_max',
|
'enterprise_size.max' => '企业规模不能超过:rule个字符',
|
||||||
'message.require' => 'contact_distributor.validate_message_required',
|
'address.require' => '公司地址不能为空',
|
||||||
|
'address.max' => '公司地址不能超过:rule个字符',
|
||||||
|
'message.require' => '留言不能为空',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,12 +26,12 @@ class ContactUsMessageValidate extends Validate
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $message = [
|
protected $message = [
|
||||||
'name.require' => 'contact_message.validate_name_required',
|
'name.require' => '姓名不能为空',
|
||||||
'name.max' => 'contact_message.validate_name_max',
|
'name.max' => '姓名不能超过:rule个字符',
|
||||||
'email.require' => 'contact_message.validate_email_required',
|
'email.require' => '邮箱不能为空',
|
||||||
'email.email' => 'contact_message.validate_email_email',
|
'email.email' => '邮箱格式不正确',
|
||||||
'email.max' => 'contact_message.validate_email_max',
|
'email.max' => '邮箱不能超过:rule个字符',
|
||||||
'content.require' => 'contact_message.validate_content_required',
|
'content.require' => '问题不能为空',
|
||||||
'content.max' => 'contact_message.validate_content_max'
|
'content.max' => '问题不能超过:rule个字符'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,21 +31,21 @@ class ProductInquiryValidate extends Validate
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $message = [
|
protected $message = [
|
||||||
'first_name.require' => 'validate_first_name_require',
|
'first_name.require' => '名不能为空',
|
||||||
'first_name.max' => 'validate_first_name_max',
|
'first_name.max' => '名不能超过:rule个字符',
|
||||||
'last_name.require' => 'validate_last_name_require',
|
'last_name.require' => '姓不能为空',
|
||||||
'last_name.max' => 'validate_last_name_max',
|
'last_name.max' => '姓不能超过:rule个字符',
|
||||||
'email.require' => 'validate_email_require',
|
'email.require' => '邮箱不能为空',
|
||||||
'email.email' => 'validate_email_email',
|
'email.email' => '邮箱格式不正确',
|
||||||
'email.max' => 'validate_email_max',
|
'email.max' => '邮箱不能超过:rule个字符',
|
||||||
'phone.max' => 'validate_phone_max',
|
'phone.max' => '电话号码不能超过:rule个字符',
|
||||||
'country_name.require' => 'validate_country_name_require',
|
'country_name.require' => '国家不能为空',
|
||||||
'country_name.max' => 'validate_country_name_max',
|
'country_name.max' => '国家不能超过:rule个字符',
|
||||||
'corp_name.require' => 'validate_corp_name_require',
|
'corp_name.require' => '公司/组织不能为空',
|
||||||
'corp_name.max' => 'validate_corp_name_max',
|
'corp_name.max' => '公司/组织不能超过:rule个字符',
|
||||||
'industry.require' => 'validate_industry_require',
|
'industry.require' => '行业不能为空',
|
||||||
'industry.max' => 'validate_industry_max',
|
'industry.max' => '行业不能超过:rule个字符',
|
||||||
'message.require' => 'validate_message_require',
|
'message.require' => '询问内容不能为空',
|
||||||
'message.max' => 'validate_message_max'
|
'message.max' => '询问内容不能超过:rule个字符'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,99 +0,0 @@
|
|||||||
{extend name="public/base" /}
|
|
||||||
{block name="title"}
|
|
||||||
{notempty name=":lang('aboutus_culture.title')"}<title>{:lang('aboutus_culture.title')}</title>
|
|
||||||
{else/}{__BLOCK__}{/notempty}
|
|
||||||
{/block}
|
|
||||||
{block name="style"}
|
|
||||||
<link rel="stylesheet" type="text/css" href="__CSS__/aboutus_culture.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="__CSS__/animate.min.css" />
|
|
||||||
{/block}
|
|
||||||
{block name="main"}
|
|
||||||
<div class="culture_top">
|
|
||||||
{notempty name="focus_image"}
|
|
||||||
{notempty name="focus_image.link"}
|
|
||||||
<a href="{$focus_image.link}">
|
|
||||||
<img src="{$focus_image.image}" />
|
|
||||||
</a>
|
|
||||||
{else/}
|
|
||||||
<img src="{$focus_image.image}" />
|
|
||||||
{/notempty}
|
|
||||||
{notempty name="culture"}
|
|
||||||
<div class="culture_bril_con swt-Container">
|
|
||||||
{volist name="culture" id="cul" offset="0" length="3"}
|
|
||||||
<div class="culture_bril_div">
|
|
||||||
<div class="iconimg"><img src="{$cul.image}" /></div>
|
|
||||||
<div class="title">
|
|
||||||
<p>{$cul.title}</p>
|
|
||||||
</div>
|
|
||||||
<div class="subtitle">{$cul.desc|raw}</div>
|
|
||||||
</div>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
</div>
|
|
||||||
{notempty name="culture"}
|
|
||||||
<div class="culture_vision">
|
|
||||||
<div class="swt-Container">
|
|
||||||
<div class="title">
|
|
||||||
<!--Vision and Mission-->
|
|
||||||
</div>
|
|
||||||
{volist name="culture" id="cul" key="k" offset="3" mod="2"}
|
|
||||||
{eq name="mod" value="1"}
|
|
||||||
<div class="swt-Table img-responsive">
|
|
||||||
<div id="tab{$k}" class="Table-Row">
|
|
||||||
<div class="Table-Cell left"><img src="{$cul.image}" /></div>
|
|
||||||
<div class="Table-Cell center"></div>
|
|
||||||
<div class="Table-Cell right">
|
|
||||||
<p class="subtitle">{$cul.title}</p>
|
|
||||||
<p class="des">{$cul.desc|raw}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{else /}
|
|
||||||
<div class="swt-Table img-responsive culture_vision_02">
|
|
||||||
<div id="tab{$k}" class="Table-Row">
|
|
||||||
<div class="Table-Cell left">
|
|
||||||
<p class="subtitle">{$cul.title}</p>
|
|
||||||
<p class="des">{$cul.desc|raw}</p>
|
|
||||||
</div>
|
|
||||||
<div class="Table-Cell center"></div>
|
|
||||||
<div class="Table-Cell right"><img src="{$cul.image}" /></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/eq}
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script type="text/javascript">
|
|
||||||
$(document).ready(function() {
|
|
||||||
$('.culture_bril_div').addClass('animated fadeInUp');
|
|
||||||
|
|
||||||
var myelement = $('#tab1'); // the element to act on if viewable
|
|
||||||
goScroll(myelement);
|
|
||||||
var myelement2 = $('#tab2'); // the element to act on if viewable
|
|
||||||
goScroll(myelement2);
|
|
||||||
var myelement3 = $('#tab3'); // the element to act on if viewable
|
|
||||||
goScroll(myelement3);
|
|
||||||
|
|
||||||
function goScroll(obj){
|
|
||||||
$(window).scroll(function() {
|
|
||||||
if(isScrolledIntoView(obj)) {
|
|
||||||
$(obj).find('.left').addClass('animated fadeInLeft');
|
|
||||||
$(obj).find('.right').addClass('animated fadeInRight');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function isScrolledIntoView(elem) {
|
|
||||||
var docViewTop = $(window).scrollTop();
|
|
||||||
var docViewBottom = docViewTop + $(window).height();
|
|
||||||
var elemTop = $(elem).offset().top;
|
|
||||||
var elemBottom = elemTop + $(elem).height();
|
|
||||||
return (elemTop <= docViewBottom);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
@@ -1,139 +0,0 @@
|
|||||||
{extend name="public/base" /}
|
|
||||||
{block name="title"}
|
|
||||||
{notempty name="detail.seo_title"}<title>{$detail.seo_title}</title>{else /}{__BLOCK__}{/notempty}
|
|
||||||
{/block}
|
|
||||||
{block name="seo"}
|
|
||||||
{notempty name="detail.seo_keywords"}
|
|
||||||
<meta name="keywords" content="{$detail.seo_keywords}" />
|
|
||||||
<meta name="description" content="{$detail.seo_desc}" />
|
|
||||||
{else /}
|
|
||||||
{__BLOCK__}
|
|
||||||
{/notempty}
|
|
||||||
{/block}
|
|
||||||
{block name="style"}
|
|
||||||
<link rel="stylesheet" href="__CSS__/article_detail.css">
|
|
||||||
{/block}
|
|
||||||
{block name="main"}
|
|
||||||
<div class="orico_Page_articleDetail">
|
|
||||||
<!--内容 -->
|
|
||||||
<div class="articleDetailMain">
|
|
||||||
<div class="atmleft">
|
|
||||||
<div class="blog_title">
|
|
||||||
<h2>{$detail.title}</h2>
|
|
||||||
<p>{$detail.desc}</p>
|
|
||||||
</div>
|
|
||||||
<!-- 文本渲染-->
|
|
||||||
<div class="blog_content">{$detail.content|raw}</div>
|
|
||||||
</div>
|
|
||||||
<div class="atmright">
|
|
||||||
{notempty name="share_config"}
|
|
||||||
<div class="blog_share">
|
|
||||||
<h3>{:lang('article.detail_share')}</h3>
|
|
||||||
<div class="share_list">
|
|
||||||
{volist name="share_config" id="sc"}
|
|
||||||
<a class="atdit" {if condition="!empty($sc.is_blank) && $sc.is_blank.value == 1"}target="_blank"{/if} {notempty name="sc.url.value"}href="{$sc.url.value}"{/notempty}>
|
|
||||||
<img src="{$sc.image.value}" />
|
|
||||||
{eq name=":array_key_exists('triggered_qrcode', $sc)" value="true"}
|
|
||||||
<div class="triggered_qrcode">
|
|
||||||
<img src="{$sc.triggered_qrcode.value}" />
|
|
||||||
</div>
|
|
||||||
{/eq}
|
|
||||||
</a>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<div class="repply">
|
|
||||||
<h3>{:lang('article.detail_leave_reply')}</h3>
|
|
||||||
<form action="{:url('article/comment', ['id' => $detail.id])}" method="POST" autocomplete="off">
|
|
||||||
<span>{:lang('article.detail_leave_reply_name')}</span>
|
|
||||||
<input class="form-control itinp new_name" type="text" name="name" style="text-indent: 10px;">
|
|
||||||
<span>{:lang('article.detail_leave_reply_email')}</span>
|
|
||||||
<input class="form-control itinp new_email" type="email" name="email" style="text-indent: 10px; margin-bottom:0;">
|
|
||||||
<p style="color: #C6C7C9; font-size: 0.75rem; margin-bottom: 0.625rem;">{:lang('article.detail_leave_reply_email_tip')}</p>
|
|
||||||
<span>{:lang('article.detail_leave_reply_comment')}</span>
|
|
||||||
<textarea class="form-control itinp new_comment" name="content" rows="3" style="text-indent: 10px;width: 98%; margin-top: 0.625rem;margin-bottom: 0.625rem;border: 1px solid #DBDBDB;"></textarea>
|
|
||||||
<div class="comment_btn" style="color:#ffffff;">{:lang('article.detail_leave_reply_submit')}</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{notempty name="$recommends"}
|
|
||||||
<div class="xq">
|
|
||||||
<!-- 猜您喜欢 -->
|
|
||||||
<div class="love">
|
|
||||||
<div class="love1">
|
|
||||||
<p class="tt">{:lang('article.detail_recommend')}</p>
|
|
||||||
<p><img src="__IMAGES__/1line.png" height="7"></p>
|
|
||||||
</div>
|
|
||||||
<ul class="love2">
|
|
||||||
{volist name="recommends" id="vo"}
|
|
||||||
<li>
|
|
||||||
<a href="{:url('article/detail', ['id' => $vo.id])}">
|
|
||||||
<div class="lvimg"><img src="{$vo.image}"></div>
|
|
||||||
<p class="lvtit">{$vo.title}</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{/volist}
|
|
||||||
<div class="clear"></div>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script type="text/javascript">
|
|
||||||
$(document).ready(function() {
|
|
||||||
$('.comment_btn').click(function() {
|
|
||||||
var form = $(this).parents('form');
|
|
||||||
var form_data = form.serialize();
|
|
||||||
$.ajax({
|
|
||||||
url: form.attr('action'),
|
|
||||||
type: 'POST',
|
|
||||||
data: form_data,
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(data) {
|
|
||||||
alert(data.msg);
|
|
||||||
if (data.code == 0) {
|
|
||||||
window.location.reload();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
// 滚动到猜你喜欢部分,右边提交信息不固定
|
|
||||||
$(window).scroll(function() {
|
|
||||||
// 获取元素引用
|
|
||||||
const blogContent = $('.blog_content');
|
|
||||||
const rightSidebar = $('.orico_Page_articleDetail .articleDetailMain .atmright');
|
|
||||||
|
|
||||||
// 计算 blog_content 底部位置
|
|
||||||
const contentBottom = blogContent.offset().top + blogContent.outerHeight();
|
|
||||||
|
|
||||||
// 计算视口底部位置
|
|
||||||
const windowBottom = $(window).scrollTop() + $(window).height();
|
|
||||||
|
|
||||||
// 当视口底部超过 blog_content 底部时
|
|
||||||
if (windowBottom >= contentBottom) {
|
|
||||||
rightSidebar.css('position', 'static'); // 移除固定定位
|
|
||||||
} else {
|
|
||||||
rightSidebar.css('position', 'fixed'); // 恢复固定定位
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
function shareCustomers(){
|
|
||||||
// 复制到粘贴板
|
|
||||||
const input = document.createElement('input')
|
|
||||||
input.setAttribute('readonly', 'readonly')
|
|
||||||
let url=window.location.href
|
|
||||||
input.setAttribute('value', url)
|
|
||||||
document.body.appendChild(input)
|
|
||||||
input.select()
|
|
||||||
if (document.execCommand('copy')) {
|
|
||||||
document.execCommand('copy')
|
|
||||||
alert('链接复制成功')
|
|
||||||
}
|
|
||||||
document.body.removeChild(input)
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
@@ -1,433 +0,0 @@
|
|||||||
{extend name="public/base" /}
|
|
||||||
{block name="style"}
|
|
||||||
<link rel="stylesheet" type="text/css" href="__CSS__/index.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="__CSS__/before-after.min.css" />
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
{block name="main"}
|
|
||||||
<div class="orico_Page_index">
|
|
||||||
<div class="pageMain">
|
|
||||||
<!-- banner -->
|
|
||||||
{notempty name="focus_images"}
|
|
||||||
<div class="swiper-container bannerswiper">
|
|
||||||
<div class="swiper-wrapper">
|
|
||||||
{volist name="focus_images" id="focus"}
|
|
||||||
<div class="swiper-slide">
|
|
||||||
<a href="{$focus.link}" target="_blank"><img src="{$focus.image}" alt="{$focus.title}"></a>
|
|
||||||
</div>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
<!-- 如果需要分页器 -->
|
|
||||||
<div class="swiper-pagination"></div>
|
|
||||||
<!-- 如果需要导航按钮 -->
|
|
||||||
<div class="swiper-button-prev"></div>
|
|
||||||
<div class="swiper-button-next"></div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- 产品分类信息 -->
|
|
||||||
{notempty name="product_categorys"}
|
|
||||||
<div class="catMain">
|
|
||||||
{volist name="product_categorys" id="cate"}
|
|
||||||
<a class="catit" href="{$cate.link}">
|
|
||||||
<img src="{$cate.image}" src="catIcoImg" />
|
|
||||||
<span class="catName" {notempty name="cate.title_txt_color" }style="color:{$cate.title_txt_color};"
|
|
||||||
{/notempty}>{$cate.title}</span>
|
|
||||||
</a>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- 特色专题及公司实力 -->
|
|
||||||
{notempty name="featured_topics"}
|
|
||||||
<div class="featuredtopicsMain">
|
|
||||||
<div class="ftcontent">
|
|
||||||
{volist name="featured_topics" id="topic" mod="2"}
|
|
||||||
<a class="ftItme" href="{$topic.link}">
|
|
||||||
{if condition="$mod == '1'"}
|
|
||||||
<div class="ftItme_right">
|
|
||||||
<img src="{$topic.image}" />
|
|
||||||
</div>
|
|
||||||
<div class="ftItme_left">
|
|
||||||
<p>{$topic.title}</p>
|
|
||||||
<div class="subtitle">
|
|
||||||
<span>{:lang('index.view_all')} ></span>
|
|
||||||
<div class="tpicture"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{else/}
|
|
||||||
<div class="ftItme_left">
|
|
||||||
<p>{$topic.title}</p>
|
|
||||||
<div class="subtitle">
|
|
||||||
<span>{:lang('index.view_all')}</span>
|
|
||||||
<div class="tpicture"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ftItme_right">
|
|
||||||
<img src="{$topic.image}" />
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</a>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- 明星产品/热点产品 -->
|
|
||||||
{notempty name="featured_products"}
|
|
||||||
<div class="featuredProducts">
|
|
||||||
<p class="biaoti">{:lang('index.featured_products')}</p>
|
|
||||||
<div class="swiper fpSwiper">
|
|
||||||
<div class="swiper-wrapper">
|
|
||||||
{volist name="featured_products" id="product"}
|
|
||||||
<div class="swiper-slide picture">
|
|
||||||
<a class="primg">
|
|
||||||
<img src="{$product.cover_image}" />
|
|
||||||
</a>
|
|
||||||
<div class="fpptitle">{$product.name}</div>
|
|
||||||
<div class="subtitle">{$product.short_name}</div>
|
|
||||||
<a class="more">{:lang('index.learn_more')} ></a>
|
|
||||||
</div>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
<div class="swiperasd">
|
|
||||||
<div class="swiper-container1">
|
|
||||||
<div class="slideshow-pag swiper-pagination"></div>
|
|
||||||
</div>
|
|
||||||
<div class="swiper-container swi1">
|
|
||||||
<img class="slideshow-btn swiper-button-next" src="static/index/temp_images/rightcheck.png">
|
|
||||||
<img class="slideshow-btn swiper-button-prev" src="static/index/temp_images/lefta.png">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- 视频宣传 -->
|
|
||||||
{notempty name="video"}
|
|
||||||
<div class="hotProduct">
|
|
||||||
<div class="hotvideo">
|
|
||||||
<video poster="{$video.image}"
|
|
||||||
src="{$video.video}"
|
|
||||||
style="max-height:50rem;z-index:9999;width: 100%;object-fit: cover;"
|
|
||||||
autoplay
|
|
||||||
loop
|
|
||||||
controls
|
|
||||||
id="oricoVideo"></video>
|
|
||||||
</div>
|
|
||||||
<img src="{$video.image}" class="hotImg" />
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- 场景介绍 -->
|
|
||||||
{notempty name="scenes"}
|
|
||||||
<div class="sceneIntroduction">
|
|
||||||
{volist name="scenes" id="scene"}
|
|
||||||
<div class="sceneitem">
|
|
||||||
<div class="sceneInfo">
|
|
||||||
<p class="scenetitle" {notempty name="scene.title_txt_color" }style="color:{$scene.title_txt_color};"
|
|
||||||
{/notempty}>{$scene.title}</p>
|
|
||||||
<p class="subtitle" {notempty name="scene.desc_txt_color" }style="color:{$scene.desc_txt_color};" {/notempty}>
|
|
||||||
{$scene.desc|raw}</p>
|
|
||||||
<a class="sceneMore" href="{$scene.link}">{:lang('index.learn_more')} ></a>
|
|
||||||
</div>
|
|
||||||
<div style="background-image: url('{$scene.image}');" class="sceneimg"></div>
|
|
||||||
</div>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- orico科技 -->
|
|
||||||
<div class="oricoTechnology">
|
|
||||||
<p class="ottitle">{:lang('index.orico_technology')}</p>
|
|
||||||
<span class="otsbtitle">{:lang('index.orico_technology_desc')}</span>
|
|
||||||
<div class="beforeafter ba-slider">
|
|
||||||
<!-- 对比前的图片 -->
|
|
||||||
<img src="static/index/images/indeximg1.jpg">
|
|
||||||
<div class="resize">
|
|
||||||
<!-- 对比后的图片 -->
|
|
||||||
<img src="static/index/images/indeximg2.jpg">
|
|
||||||
</div>
|
|
||||||
<!-- 可拖动的分隔条 -->
|
|
||||||
<span class="handle"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 品牌故事 -->
|
|
||||||
{notempty name="brand_story"}
|
|
||||||
<div class="brandStory">
|
|
||||||
<div class="swiper brandStoryswiper">
|
|
||||||
<div class="swiper-wrapper">
|
|
||||||
{volist name="brand_story" id="story"}
|
|
||||||
<div class="swiper-slide bsitem">
|
|
||||||
<div class="itmImg">
|
|
||||||
<img src="{$story.image}" class="bsImg" />
|
|
||||||
</div>
|
|
||||||
<div class="bsinf">
|
|
||||||
<div class="bstitle" {notempty name="story.title_txt_color" }style="color:{$story.title_txt_color};"
|
|
||||||
{/notempty}>{$story.title}</div>
|
|
||||||
<div class="bssubtitle" {notempty name="story.desc_txt_color" }style="color:{$story.desc_txt_color};"
|
|
||||||
{/notempty}>{$story.desc|raw}</div>
|
|
||||||
<a class="bsmore" href="{$story.link}">{:lang('index.learn_more')} ></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
<div class="swiperasd bs_swiperasd" id="timeline">
|
|
||||||
<div class="bs_swcontainer">
|
|
||||||
<div class="swiper-pagination bs_pagination"></div>
|
|
||||||
<hr>
|
|
||||||
{volist name="brand_story" id="story" key="k"}
|
|
||||||
<span class="time">{$story.year}</span>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
<div class="swiper-container bs_bts">
|
|
||||||
<img class="slideshow-btn swiper-button-next" src="static/index/temp_images/rightcheck.png" alt="" />
|
|
||||||
<img class="slideshow-btn swiper-button-prev " src="static/index/temp_images/lefta.png" alt="" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- 数据统计-->
|
|
||||||
{notempty name="data_statistics"}
|
|
||||||
<div class="oricoDataStatistics">
|
|
||||||
<div class="odsmain">
|
|
||||||
{volist name="data_statistics" id="ods"}
|
|
||||||
<div class="odsItem">
|
|
||||||
<h1 {notempty name="ods.desc_txt_color" }style="color:{$ods.desc_txt_color};" {/notempty}>{$ods.desc|raw}</h1>
|
|
||||||
<h3 {notempty name="ods.title_txt_color" }style="color:{$ods.title_txt_color};" {/notempty}>{$ods.title}</h3>
|
|
||||||
</div>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- 文章轮播 -->
|
|
||||||
{notempty name="recommend_articles"}
|
|
||||||
<div class="oricoPub">
|
|
||||||
<div class="swiper pubswiper">
|
|
||||||
<div class="swiper-wrapper">
|
|
||||||
{volist name="recommend_articles" id="article"}
|
|
||||||
<div class="swiper-slide pubSwitem">
|
|
||||||
<a class="pubimgdiv" href="{:url('article/index', ['id' => $article.id])}">
|
|
||||||
<img src="{$article.image}" class="pubimg" />
|
|
||||||
</a>
|
|
||||||
<a class="pubinfo">
|
|
||||||
<span>{$article.title}</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
<div class="swiperasd pubswiperasd">
|
|
||||||
<div class="swiper-container">
|
|
||||||
<img class="slideshow-btn swiper-button-next" src="static/index/temp_images/rightcheck.png">
|
|
||||||
<img class="slideshow-btn swiper-button-prev" src="static/index/temp_images/lefta.png">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- FAQ-->
|
|
||||||
{notempty name="recommend_faq"}
|
|
||||||
<div class="oricoFQA">
|
|
||||||
<div class="fqaleft">
|
|
||||||
<h1 class="title">{:lang('index.faq')}</h1>
|
|
||||||
<p class="dec">{:lang('index.faq_short_desc')}</p>
|
|
||||||
<p class="sudec">{:lang('index.faq_desc')}</p>
|
|
||||||
</div>
|
|
||||||
<div class="fqaright">
|
|
||||||
<ul class="accordion">
|
|
||||||
{volist name="recommend_faq" id="faq"}
|
|
||||||
<li class="fqali">
|
|
||||||
<div class="fqa-question">
|
|
||||||
<h3>{$faq.question} </h3>
|
|
||||||
<span class="xiala">+</span>
|
|
||||||
</div>
|
|
||||||
<div class="fqa-answer">
|
|
||||||
<p>{$faq.answer|raw}</p>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{/volist}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/notempty}
|
|
||||||
<!-- 底部固定提示 -->
|
|
||||||
{eq name="Request.cookie.think_lang" value="en-us"}
|
|
||||||
<div class="oricofixd-info">
|
|
||||||
<div class="ofiinfo">We use cookies to ensure you get the best experience on our website. By
|
|
||||||
continuing to browse, you agree to our use of cookies.</div>
|
|
||||||
<div class="ofibt"><button>OK,got it!</button></div>
|
|
||||||
<div class="oficlose"><span class="close-btn">×</span></div>
|
|
||||||
</div>
|
|
||||||
{/eq}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script>
|
|
||||||
$(document).ready(function () {
|
|
||||||
// 图片左右移动显示全部
|
|
||||||
$('.ba-slider').beforeAfter({
|
|
||||||
startPercent: 50, // 初始分隔条位置为 50%
|
|
||||||
handle: '.handle', // 指定分隔条元素的选择器
|
|
||||||
resize: '.resize' // 指定可调整大小部分的选择器
|
|
||||||
});
|
|
||||||
|
|
||||||
// 底部关闭
|
|
||||||
$(".oficlose").on("click", function () {
|
|
||||||
$(".oricofixd-info").hide();
|
|
||||||
});
|
|
||||||
// 视频
|
|
||||||
const video = $('#oricoVideo');
|
|
||||||
const videoContainer = $('.hotvideo');
|
|
||||||
const img = $('.hotImg');
|
|
||||||
// 监听视频加载完成事件
|
|
||||||
video.on('canplaythrough', function() {
|
|
||||||
// 显示视频容器,隐藏图片
|
|
||||||
videoContainer.css('display', 'block');
|
|
||||||
img.hide();
|
|
||||||
console.log('视频可以流畅播放');
|
|
||||||
});
|
|
||||||
// 处理视频加载失败(可选)
|
|
||||||
video.on('error', function() {
|
|
||||||
// 可在此添加失败提示,如显示错误信息或保留图片
|
|
||||||
img.show();
|
|
||||||
videoContainer.css('display', 'none');
|
|
||||||
console.log('视频加载或播放出错');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$(function () {
|
|
||||||
// banner轮播
|
|
||||||
var mySwiper = new Swiper('.bannerswiper', {
|
|
||||||
// 配置选项
|
|
||||||
loop: true,
|
|
||||||
autoplay: {
|
|
||||||
delay: 3000,
|
|
||||||
},
|
|
||||||
pagination: {
|
|
||||||
el: '.swiper-pagination',
|
|
||||||
},
|
|
||||||
navigation: {
|
|
||||||
nextEl: '.swiper-button-next',
|
|
||||||
prevEl: '.swiper-button-prev',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
var fpSwiper = new Swiper(".fpSwiper", {
|
|
||||||
slidesPerView: 3,
|
|
||||||
spaceBetween: 30,
|
|
||||||
slidesPerGroup: 1,
|
|
||||||
loop: true,
|
|
||||||
autoplay: {
|
|
||||||
delay: 5000,
|
|
||||||
pauseOnMouseEnter: true,
|
|
||||||
disableOnInteraction: false,
|
|
||||||
},
|
|
||||||
slidesPerView: "auto",
|
|
||||||
centeredSlides: true,
|
|
||||||
loopFillGroupWithBlank: true,
|
|
||||||
loopAdditionalSlides: 3,
|
|
||||||
pagination: {
|
|
||||||
el: ".swiper-pagination",
|
|
||||||
type: "progressbar",
|
|
||||||
},
|
|
||||||
navigation: {
|
|
||||||
nextEl: ".swiper-button-next",
|
|
||||||
prevEl: ".swiper-button-prev",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
//品牌故事轮播
|
|
||||||
var brandStoryswiper = new Swiper(".brandStoryswiper", {
|
|
||||||
pagination: {
|
|
||||||
el: ".swiper-pagination",
|
|
||||||
},
|
|
||||||
navigation: {
|
|
||||||
nextEl: ".swiper-button-next",
|
|
||||||
prevEl: ".swiper-button-prev",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
// 计算品牌故事轮播个数样式调整
|
|
||||||
function calculateDisplayValue (n) {
|
|
||||||
return 8 - n;
|
|
||||||
}
|
|
||||||
// 动态调整分页点和年份位置
|
|
||||||
function adjustTimeline () {
|
|
||||||
const slideCount = brandStoryswiper.slides.length; // 获取轮播项个数
|
|
||||||
if (slideCount === 0) return;
|
|
||||||
// 计算分页点间距
|
|
||||||
const bulletMargin = ((100 / slideCount) - 2) + "%";
|
|
||||||
$(".orico_Page_index .pageMain .brandStory .bs_swiperasd .bs_swcontainer .bs_pagination .swiper-pagination-bullet")
|
|
||||||
.css("margin-right", bulletMargin);
|
|
||||||
// 计算年份位置(固定间隔21%)
|
|
||||||
const timeSpans = $(".orico_Page_index .pageMain .brandStory .bs_swiperasd .bs_swcontainer .time");
|
|
||||||
var tag = 0
|
|
||||||
var percent = 0
|
|
||||||
var basenum = calculateDisplayValue(slideCount)
|
|
||||||
timeSpans.each(function (index) {
|
|
||||||
if (index == 1) {
|
|
||||||
tag = ((100 / slideCount)) * index - (index > 0 ? basenum : 0)
|
|
||||||
percent = tag
|
|
||||||
}
|
|
||||||
if (index > 1) {
|
|
||||||
percent = tag * index
|
|
||||||
}
|
|
||||||
$(this).css("left", `${percent}%`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 初始化时调用
|
|
||||||
adjustTimeline();
|
|
||||||
// 窗口Resize时重新计算(可选)
|
|
||||||
$(window).on("resize", adjustTimeline);
|
|
||||||
// 宣传banner
|
|
||||||
var pubswiper = new Swiper(".pubswiper", {
|
|
||||||
loop: true,
|
|
||||||
autoplay: {
|
|
||||||
delay: 5000,
|
|
||||||
pauseOnMouseEnter: true,
|
|
||||||
disableOnInteraction: false,
|
|
||||||
},
|
|
||||||
//slidesPerView: 1,
|
|
||||||
slidesPerView: "auto",
|
|
||||||
centeredSlides: true,
|
|
||||||
spaceBetween: 32,
|
|
||||||
pagination: {
|
|
||||||
el: ".swiper-pagination",
|
|
||||||
click: true
|
|
||||||
},
|
|
||||||
navigation: {
|
|
||||||
nextEl: ".swiper-button-next",
|
|
||||||
prevEl: ".swiper-button-prev",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
// FAQ问答展开收起
|
|
||||||
$(".fqali").on('click', function () {
|
|
||||||
if ($(this).children("div.fqa-answer").is(':visible')) {
|
|
||||||
$(".fqali").removeClass('active');
|
|
||||||
$(".fqa-answer").hide();
|
|
||||||
$(".text-name").addClass('text-hidden');
|
|
||||||
$(".xiala").text('+');
|
|
||||||
} else {
|
|
||||||
$(".fqali").removeClass('active');
|
|
||||||
$(".fqa-answer").hide();
|
|
||||||
$(".text-name").addClass('text-hidden')
|
|
||||||
$(".xiala").text('+');
|
|
||||||
$(this).addClass('active');
|
|
||||||
$(this).children('div.fqa-answer').show();
|
|
||||||
$(this).children('div.fqa-question').find('span').text('-');
|
|
||||||
$(this).children('div.fqa-question').find('h3').removeClass('text-hidden');
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// 首先隐藏视频元素和加载中的图片 要放开注释
|
|
||||||
$("#hotvideo").hide();
|
|
||||||
// 监听视频的加载事件
|
|
||||||
setTimeout(function () {
|
|
||||||
$("#hotvideo").on("load", function () {
|
|
||||||
// 视频加载完成时,显示视频元素,隐藏加载中的图片
|
|
||||||
$("#hotvideo").show();
|
|
||||||
$("#hotImg").hide();
|
|
||||||
});
|
|
||||||
}, 1000);
|
|
||||||
// 监听视频的加载失败事件
|
|
||||||
setTimeout(function () {
|
|
||||||
$("#hotvideo").on("error", function () {
|
|
||||||
// 视频加载失败时,显示加载中的图片,隐藏视频元素
|
|
||||||
$("#hotImg").show();
|
|
||||||
$("#videoElement").hide();
|
|
||||||
});
|
|
||||||
}, 1500);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
38
app/index/view/mobile/about_us/culture.html
Normal file
38
app/index/view/mobile/about_us/culture.html
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="title"}
|
||||||
|
{notempty name=":lang_i18n('文化介绍')"}<title>{:lang_i18n('文化介绍')}</title>{else/}{__BLOCK__}{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/aboutus_culture.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容 -->
|
||||||
|
<div class="oricoEGapp-product">
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<div class="img-responsive">
|
||||||
|
<a {notempty name="focus_image.link"}href="{$focus_image.link}"{/notempty}>
|
||||||
|
<img src="{$focus_image.image}">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 产品介绍 -->
|
||||||
|
{notempty name="culture"}
|
||||||
|
{volist name="culture" id="cul" offset="0" length="3"}
|
||||||
|
<div class="m_vision">
|
||||||
|
<div class="img-responsive "><img src="{$cul.image}"></div>
|
||||||
|
<div class="vision-title text_left margin-top-50">{$cul.title}</div>
|
||||||
|
<div class="vision-con text_gray text_left line-height-40 margin-top-40">{$cul.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
<div class="m_vision">
|
||||||
|
{volist name="culture" id="cul" offset="3"}
|
||||||
|
<div class="img-responsive"><img src="{$cul.image}"></div>
|
||||||
|
<div class="vision-title text_left margin-top-50">{$cul.title}</div>
|
||||||
|
<div class="vision-con text_gray text_left line-height-40 margin-top-40">{$cul.desc|raw}</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
58
app/index/view/mobile/about_us/introduction.html
Normal file
58
app/index/view/mobile/about_us/introduction.html
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="title"}
|
||||||
|
{notempty name=":lang_i18n('品牌介绍')"}<title>{:lang_i18n('品牌介绍')}</title>{else/}{__BLOCK__}{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/aboutus_introduction.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<div class="iotbpage">
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<img src="{$focus_image.image}" alt="" class="bdimg1">
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="why"}
|
||||||
|
<div class="iotb_bgw">
|
||||||
|
<h1 class="iotbt1">{:lang_i18n('选择我们的理由')}</h1>
|
||||||
|
<div class="iotb_part1">
|
||||||
|
{volist name="why" id="wh"}
|
||||||
|
<div class="iotb_p1_item" style="margin-bottom: 30px;">
|
||||||
|
<img src="{$wh.image}" alt="" class="iotbic1">
|
||||||
|
<p class="iotbtp1">{$wh.title}</p>
|
||||||
|
<span class="iotbts1">{$wh.desc|raw}</span>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="service"}
|
||||||
|
<div class="iotb_part2 iotb_part22">
|
||||||
|
<h1 class="iotbt1">{:lang_i18n('为您提供专属定制服务')}</h1>
|
||||||
|
<div class="fdimgs wcu_list">
|
||||||
|
{assign name="flat_service" value=":array_flatten($service)" /}
|
||||||
|
{volist name="flat_service" id="fs"}
|
||||||
|
<div class="wcu_ltem">
|
||||||
|
<img src="{$fs.image}" alt="" class="fbit">
|
||||||
|
<span class="wcu_s1">{$fs.title}</span>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="difference"}
|
||||||
|
<div class="iotb_part2">
|
||||||
|
<h1 class="iotbt1">{:lang_i18n('对于不同的情况')}</h1>
|
||||||
|
<div class="fdimgs wcu_list">
|
||||||
|
{assign name="flat_difference" value=":array_flatten($difference)" /}
|
||||||
|
{volist name="flat_difference" id="di"}
|
||||||
|
<div class="wcu_ltem">
|
||||||
|
<img src="{$di.image}" alt="" class="fbit">
|
||||||
|
<span class="wcu_s1">{$di.title}</span>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
106
app/index/view/mobile/about_us/mileage.html
Normal file
106
app/index/view/mobile/about_us/mileage.html
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
{extend name="public/base"/}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/aboutus_mileage.css">
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!--公司里程 -->
|
||||||
|
<div class="oricoCnLc">
|
||||||
|
<div class="margin-top-60"></div>
|
||||||
|
<div class="m_ach">
|
||||||
|
<div class="img-responsive ">
|
||||||
|
<img src="__IMAGES__/achievement.jpg">
|
||||||
|
</div>
|
||||||
|
<div class="title">{:lang_i18n('ORICO荣耀')}</div>
|
||||||
|
<div class="list-num clearfix">
|
||||||
|
{notempty name="achievement"}
|
||||||
|
<ul>
|
||||||
|
{volist name="achievement" id="ac"}
|
||||||
|
<li>
|
||||||
|
<h4 {:style(['color' => $ac['desc_txt_color']])}>{$ac.desc|raw}</h4>
|
||||||
|
<p {:style(['color' => $ac['title_txt_color']])}>{$ac.title}</p>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{notempty name="events"}
|
||||||
|
<div class="m_ach-b">
|
||||||
|
<div class="title">{:lang_i18n('品牌里程')}</div>
|
||||||
|
</div>
|
||||||
|
<div class="contain">
|
||||||
|
<!-- 导航 -->
|
||||||
|
<div class="nav">
|
||||||
|
<div class="swiper-container gallery-thumbs">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{volist name="events" id="ev"}
|
||||||
|
<div class="swiper-slide" {:style(['color' => $ev['title_txt_color']])}>{$ev.title}</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
|
||||||
|
</div>
|
||||||
|
<!-- 切换按钮 -->
|
||||||
|
<div class="swiper-button-next swiper-button-white" tabindex="0" role="button" aria-label="Next slide" aria-disabled="false">
|
||||||
|
<img src="__IMAGES__/ach-right.webp">
|
||||||
|
</div>
|
||||||
|
<div class="swiper-button-prev swiper-button-white swiper-button-disabled" tabindex="0" role="button" aria-label="Previous slide" aria-disabled="true">
|
||||||
|
<img src="__IMAGES__/ach-left.webp">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 内容 -->
|
||||||
|
<div class="swiper-container gallery-top">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{volist name="events" id="ev" key="k"}
|
||||||
|
<div class="swiper-slide info">
|
||||||
|
<h5 {:style(['color' => $ev['title_txt_color']])}>{$ev.title}</h5>
|
||||||
|
<p {:style(['color' => $ev['desc_txt_color']])}>{$ev.desc|raw}</p>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="development"}
|
||||||
|
<div class="m_ch">
|
||||||
|
<div class="m_ach-b">
|
||||||
|
<div class="chtitle">{:lang_i18n('品牌活动')}</div>
|
||||||
|
</div>
|
||||||
|
{volist name="development" id="de"}
|
||||||
|
<div class="ach-bg">
|
||||||
|
<div class="img-responsive ">
|
||||||
|
<img src="{$de.image}">
|
||||||
|
</div>
|
||||||
|
<div class="m_ch-title text_left margin-top-50">
|
||||||
|
<img src="__IMAGES__/ach-icon.png">{$de.title}
|
||||||
|
</div>
|
||||||
|
<div class="m_ch-con text_gray text_left line-height-40 margin-top-40">{$de.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
var galleryThumbs = new Swiper('.gallery-thumbs', {
|
||||||
|
spaceBetween: 10,
|
||||||
|
slidesPerView: 5,
|
||||||
|
freeMode: true,
|
||||||
|
watchSlidesVisibility: true,
|
||||||
|
watchSlidesProgress: true
|
||||||
|
})
|
||||||
|
var galleryTop = new Swiper('.gallery-top', {
|
||||||
|
spaceBetween: 10,
|
||||||
|
thumbs: {
|
||||||
|
swiper: galleryThumbs
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
nextEl: '.swiper-button-next',
|
||||||
|
prevEl: '.swiper-button-prev'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
84
app/index/view/mobile/about_us/policy.html
Normal file
84
app/index/view/mobile/about_us/policy.html
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
{extend name="public/base"/}
|
||||||
|
{block name="title"}
|
||||||
|
<title>{:lang_i18n('售后政策_注意事项')}</title>
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/aboutus_policy.css">
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容 -->
|
||||||
|
<div class="oricoEGapp-policy">
|
||||||
|
{notempty name="policy.focus_image"}
|
||||||
|
<a {notempty name="policy.focus_image.link"}href="{$policy.focus_image.link}"{/notempty}>
|
||||||
|
<img src="{$policy.focus_image.image}" class="pl-img" />
|
||||||
|
</a>
|
||||||
|
{/notempty}
|
||||||
|
<div class="m_Container">
|
||||||
|
<strong class="textpoint">{:lang_i18n('售后政策')}</strong>
|
||||||
|
<p class="decs">{:lang_i18n('ORICO/奥睿科商城为您提供七天包退、15天换新、1年保修、终身维护的服务承诺')}</p>
|
||||||
|
</div>
|
||||||
|
{notempty name="policy.banner_1"}
|
||||||
|
{volist name="policy.banner_1" id="b1"}
|
||||||
|
<div class="m_Container">
|
||||||
|
<strong class="textpoint">{$b1.title}</strong>
|
||||||
|
<div class="decs">{$b1.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
|
||||||
|
{notempty name="policy.banner_2"}
|
||||||
|
{volist name="policy.banner_2" id="b2"}
|
||||||
|
<img src="{$b2.image}" class="pl-img m-t" />
|
||||||
|
<div class="m_Container">
|
||||||
|
<strong class="textpoint">{$b2.title}</strong>
|
||||||
|
<div class="decs decs-left">{$b2.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
|
||||||
|
{notempty name="policy.banner_3"}
|
||||||
|
<div class="m_Container">
|
||||||
|
<strong class="textpoint">{:lang_i18n('为了保障您的合法权益,敬请关注以下信息')}</strong>
|
||||||
|
<p class="decs">{:lang_i18n('为了得到深圳市元创时代科技有限公司给予您的“包修、包换、包退”的权益,请您:')}</p>
|
||||||
|
<div class="decs decs-left">
|
||||||
|
{volist name="policy.banner_3" id="b3"}
|
||||||
|
{$b3.title}<br/>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
|
||||||
|
{notempty name="policy.banner_4"}
|
||||||
|
{volist name="policy.banner_4" id="b4"}
|
||||||
|
<img src="{$b4.image}" class="pl-img m-t" />
|
||||||
|
<div class="m_Container">
|
||||||
|
<strong class="textpoint">{$b4.title}</strong>
|
||||||
|
<div class="decs decs-left">{$b4.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
|
||||||
|
{notempty name="policy.banner_5"}
|
||||||
|
<div class="m_Container">
|
||||||
|
<strong class="textpoint">{:lang_i18n('特别说明')}</strong>
|
||||||
|
<p class="decs decs-left">
|
||||||
|
{volist name="policy.banner_5" id="b5" key="k"}
|
||||||
|
{$k+1}、{$b5.title}<br/>
|
||||||
|
{/volist}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
|
||||||
|
{notempty name="policy.banner_6"}
|
||||||
|
{volist name="policy.banner_6" id="b6"}
|
||||||
|
<img src="{$b6.image}" class="pl-img m-t" />
|
||||||
|
<div class="m_Container">
|
||||||
|
<strong class="textpoint">{$b6.title}</strong>
|
||||||
|
<div class="decs decs-left">{$b6.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
32
app/index/view/mobile/about_us/story.html
Normal file
32
app/index/view/mobile/about_us/story.html
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/aboutus_story.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容-->
|
||||||
|
<div class="oricoEGapp-brand">
|
||||||
|
<div class="video-right img-responsive">
|
||||||
|
<img src="__IMAGES__/brand-banner.webp">
|
||||||
|
</div>
|
||||||
|
{notempty name="banners"}
|
||||||
|
<div class="m_brand">
|
||||||
|
{volist name="banners" id="ba" offset="0" length="2"}
|
||||||
|
<div class="brand_title text_left">{$ba.title}</div>
|
||||||
|
<div class="brand-con text_gray text_left line-height-40 margin-top-40">{$ba.desc|raw}</div>
|
||||||
|
<div class="img-responsive">
|
||||||
|
<img src="{$ba.image}">
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{volist name="banners" id="ba" offset="2" length="3"}
|
||||||
|
<div class="img-responsive text-center margin-4">
|
||||||
|
<img src="{$ba.image}">
|
||||||
|
</div>
|
||||||
|
<div class="vision-title text_center margin-top-50">{$ba.title}</div>
|
||||||
|
<div class="brand-con text_gray text_center line-height-40 margin-top-40">{$ba.desc|raw}</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
159
app/index/view/mobile/article/detail.html
Normal file
159
app/index/view/mobile/article/detail.html
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="title"}
|
||||||
|
{notempty name="detail.seo_title"}<title>{$detail.seo_title}</title>{else /}{__BLOCK__}{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="seo"}
|
||||||
|
{notempty name="detail.seo_keywords"}
|
||||||
|
<meta name="keywords" content="{$detail.seo_keywords}" />
|
||||||
|
<meta name="description" content="{$detail.seo_desc}" />
|
||||||
|
{else /}
|
||||||
|
{__BLOCK__}
|
||||||
|
{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/article_detail.css">
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容 -->
|
||||||
|
<div class="oricoEGapp-articledetail">
|
||||||
|
<div class="content">
|
||||||
|
<div class="blog_detail">
|
||||||
|
<div class="blog_title">
|
||||||
|
<h2>{$detail.title}</h2>
|
||||||
|
<p>{$detail.release_time|date_format_i18n}</p>
|
||||||
|
</div>
|
||||||
|
<div class="blog_content">{$detail.content|raw}</div>
|
||||||
|
</div>
|
||||||
|
{notempty name="comments"}
|
||||||
|
<div class="pl_box">
|
||||||
|
<div class="blog_pl">
|
||||||
|
<h3>{:lang_i18n('评论')}</h3>
|
||||||
|
{volist name="comments" id="cm"}
|
||||||
|
<div class="plitem">
|
||||||
|
<div class="pl_name">{$cm.name}:</div>
|
||||||
|
<div class="pl_text">{$cm.content}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="share_box">
|
||||||
|
{notempty name="share_config"}
|
||||||
|
<div class="blog_share">
|
||||||
|
<h3>{:lang_i18n('分享')}</h3>
|
||||||
|
<ul class="share_list">
|
||||||
|
{volist name="share_config" id="sc"}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
{if condition="!empty($sc.is_blank) && $sc.is_blank.value == 1"}target="_blank"{/if}
|
||||||
|
{notempty name="sc.url.value"}href="{$sc.url.value}"{/notempty}>
|
||||||
|
{eq name=":array_key_exists('triggered_qrcode', $sc)" value="true"}
|
||||||
|
<img class="toggle_qrcode" src="{$sc.image.value}" />
|
||||||
|
<div class="triggered_qrcode wechat_code">
|
||||||
|
<img src="{$sc.triggered_qrcode.value}" />
|
||||||
|
</div>
|
||||||
|
{else /}
|
||||||
|
<img src="{$sc.image.value}" />
|
||||||
|
{/eq}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="comment">
|
||||||
|
<h3>{:lang_i18n('留言')}</h3>
|
||||||
|
<form action="{:url('article/comment', ['id' => $detail.id])}" method="POST" class="comment_form clearfix" autocomplete="off">
|
||||||
|
<div style="margin-right: 0.625rem; margin-bottom: 0.5rem;">{:lang_i18n('名称')}:<br>
|
||||||
|
<input class="form-control itinp new_name" type="text" name="name">
|
||||||
|
</div>
|
||||||
|
<div>{:lang_i18n('电子邮箱')}:<br>
|
||||||
|
<input class="form-control itinp new_email" type="email" name="email">
|
||||||
|
<p style="color: #C6C7C9; font-size: 0.75rem; margin-bottom: 0.5rem; ">
|
||||||
|
{:lang_i18n('您的电子邮件地址不会被公开')}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="comment_area">{:lang_i18n('留言内容')}:<br>
|
||||||
|
<textarea class="form-control itinp new_comment" style="height: 3rem;border: 1px solid #DBDBDB;" name="content"></textarea>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div class="comment_btn" style="color:#ffffff;">{:lang_i18n('提交留言')}</div>
|
||||||
|
</div>
|
||||||
|
{notempty name="$recommends"}
|
||||||
|
<div class="mblove">
|
||||||
|
<div class="mianct">
|
||||||
|
<p class="thtitle">{:lang_i18n('你可能还喜欢')}</p>
|
||||||
|
<p><img src="__IMAGES__/1line.webp"></p>
|
||||||
|
</div>
|
||||||
|
<div class="swiper loveswiper">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{volist name="recommends" id="vo"}
|
||||||
|
<div class="swiper-slide">
|
||||||
|
<a href="{:url('article/detail', ['id' => $vo.id])}">
|
||||||
|
<img src="{$vo.image}" alt="{$vo.title}">
|
||||||
|
<p class="lvtit">{$vo.title}</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<!-- 如果需要分页器 -->
|
||||||
|
<div class="swiper-pagination"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function() {
|
||||||
|
$('.comment_btn').click(function() {
|
||||||
|
var form = $('.comment_form');
|
||||||
|
var form_data = form.serialize();
|
||||||
|
$.ajax({
|
||||||
|
url: form.attr('action'),
|
||||||
|
type: 'POST',
|
||||||
|
data: form_data,
|
||||||
|
dataType: 'json',
|
||||||
|
success: function(data) {
|
||||||
|
alert(data.msg);
|
||||||
|
if (data.code == 0) {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
$('.toggle_qrcode').click(function() {
|
||||||
|
const qrcode = $(this).siblings('.triggered_qrcode');
|
||||||
|
qrcode.css('display', qrcode.css('display') === 'none' ? 'flex' : 'none');
|
||||||
|
});
|
||||||
|
})
|
||||||
|
//banner轮播
|
||||||
|
var loveswiper = new Swiper('.loveswiper', {
|
||||||
|
// 配置选项
|
||||||
|
slidesPerView: 2,
|
||||||
|
spaceBetween: 30,
|
||||||
|
pagination: {
|
||||||
|
el: '.swiper-pagination',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
function shareCustomers(){
|
||||||
|
// 复制到粘贴板
|
||||||
|
const input = document.createElement('input')
|
||||||
|
input.setAttribute('readonly', 'readonly')
|
||||||
|
let url=window.location.href
|
||||||
|
input.setAttribute('value', url)
|
||||||
|
document.body.appendChild(input)
|
||||||
|
input.select()
|
||||||
|
if (document.execCommand('copy')) {
|
||||||
|
document.execCommand('copy')
|
||||||
|
alert("{:lang_i18n('链接复制成功')}")
|
||||||
|
}
|
||||||
|
document.body.removeChild(input)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
62
app/index/view/mobile/article/index.html
Normal file
62
app/index/view/mobile/article/index.html
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/article_index.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容 -->
|
||||||
|
<div class="oricoEGapp-article">
|
||||||
|
<!-- banner -->
|
||||||
|
{notempty name="banner.image"}
|
||||||
|
<div class="banner img-responsive">
|
||||||
|
<img src="{$banner.image}">
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 新闻列表 -->
|
||||||
|
<div class="swt-Container">
|
||||||
|
<div class="news-vertu">
|
||||||
|
<div class="tab">
|
||||||
|
{volist name="categorys" id="ca"}
|
||||||
|
{if condition="$Request.get.cid == $ca.id || (!$Request.has.cid && $key == 0)"}
|
||||||
|
<a class="on" href="{:url('article/index', ['pid' => $ca.pid, 'cid' => $ca.id])}">
|
||||||
|
{else/}
|
||||||
|
<a class="" href="{:url('article/index', ['pid' => $ca.pid, 'cid' => $ca.id])}">
|
||||||
|
{/if}
|
||||||
|
{$ca.name}
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<div class="m_Container">
|
||||||
|
<!-- Blog列表 s -->
|
||||||
|
<div class="search_box">
|
||||||
|
<form action="{:url('article/index', ['pid' => $Request.param.pid])}" method="get" autocomplete="off">
|
||||||
|
<input type="text" class="search" id="article-blog-in" name="keywords" value="">
|
||||||
|
<input type="hidden" class="search" id="article-blog-in" name="cid" value="{$Request.get.cid}">
|
||||||
|
<button id="blog-btnput" class="search-button-blog">{:lang_i18n('搜索')}</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{notempty name="articles"}
|
||||||
|
<div class="blog_list">
|
||||||
|
<ul class="clearfix">
|
||||||
|
{volist name="articles" id="ar"}
|
||||||
|
<li>
|
||||||
|
<a href="{:url('article/detail', ['id' => $ar.id])}">
|
||||||
|
<img src="{$ar.image}">
|
||||||
|
<h3>{$ar.title}</h3>
|
||||||
|
<p>{$ar.desc|raw}</p>
|
||||||
|
</a>
|
||||||
|
<span class="blue">{$ar.release_time|date_format_i18n}</span>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- 分页 s -->
|
||||||
|
<div>{$articles|raw}</div>
|
||||||
|
<!-- 分页 e -->
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
53
app/index/view/mobile/attachment/index.html
Normal file
53
app/index/view/mobile/attachment/index.html
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/attachment_index.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容-->
|
||||||
|
<div class="margin-45"></div>
|
||||||
|
<!--search-->
|
||||||
|
<div class="menu mobile-search margin-top-90">
|
||||||
|
<div class="search">
|
||||||
|
<form action="{:url('attachment/index')}" method="get">
|
||||||
|
<div class="search margin-bottom-30">
|
||||||
|
<button class="updown_search_btn" type="sumbit">
|
||||||
|
<span class="icon-search-svg"></span>
|
||||||
|
</button>
|
||||||
|
<input class="form-control" name="keyword" placeholder="{:lang_i18n('全站搜索')}" value="" type="text" />
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--软件下载-->
|
||||||
|
<div class="download-title">{:lang_i18n('软件下载')}</div>
|
||||||
|
<!--循环产品列表-->
|
||||||
|
{notempty name="attachements"}
|
||||||
|
{volist name="attachements" id="att"}
|
||||||
|
<div class="download-bg clearfix">
|
||||||
|
<div class="download-left">
|
||||||
|
<img src="{:thumb($att.image)}" alt="{$att.name}">
|
||||||
|
</div>
|
||||||
|
<div class="download-right">
|
||||||
|
<div class="font-48">{$att.name}</div>
|
||||||
|
<div class="down-gray">
|
||||||
|
<p>{:lang_i18n('支持型号')}: {$att.applicable_to}</p>
|
||||||
|
<p>{:lang_i18n('支持系统')}: {$att.support_platform}</p>
|
||||||
|
</div>
|
||||||
|
{notempty name="att.attach"}
|
||||||
|
{volist name="att.attach" id="ch"}
|
||||||
|
<div class="down-btn">
|
||||||
|
<a href="{$ch.file_path}" data-cod="dl" target="_blank">
|
||||||
|
<span class="l_button">{$ch.btn_name}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
<!-- 分页-->
|
||||||
|
<div class="Pages">{$page|raw}</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
41
app/index/view/mobile/attachment/video.html
Normal file
41
app/index/view/mobile/attachment/video.html
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/attachment_video.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 主体内容-->
|
||||||
|
<div class="oricoEGapp-softDrviersVideo">
|
||||||
|
<div class="topbanner">
|
||||||
|
<img src="__IMAGES__/video-banner.webp" class="bannerimg" />
|
||||||
|
<span class="bannertitle">{:lang_i18n('软件和驱动程序')}</span>
|
||||||
|
</div>
|
||||||
|
<!-- 分类切换-->
|
||||||
|
<div class="tabs">
|
||||||
|
{notempty name="video_categorys"}
|
||||||
|
{volist name="video_categorys" id="va"}
|
||||||
|
<a href="{:url('attachment/index', ['id' => $va.id])}"><div class="tabit active">{$va.name}</div></a>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
<div class="infolist">
|
||||||
|
{notempty name="videos"}
|
||||||
|
{assign name="flat_videos" value=":array_flatten($videos->items())" /}
|
||||||
|
{volist name="flat_videos" id="vo"}
|
||||||
|
<div class="vd-item">
|
||||||
|
<video controls="" poster="{$vo.image|default=''}">
|
||||||
|
<source src="{$vo.video}" type="video/mp4">
|
||||||
|
{:lang_i18n('您的浏览器不支持 video 标签。')}
|
||||||
|
</video>
|
||||||
|
<div class="texts">
|
||||||
|
<span class="t1">{$vo.name}</span>
|
||||||
|
<span class="t2">{$vo.desc}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
<div>{$page|raw}</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
97
app/index/view/mobile/contact_us/bulkbuy.html
Normal file
97
app/index/view/mobile/contact_us/bulkbuy.html
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/contactus_bulkbuy.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<div class="bdpage" style="background: #fff;border-radius: 8px;padding-top: 50px;">
|
||||||
|
<div class="bd_main bd_main1 bd_main2">
|
||||||
|
<h1 class="t1 sfbt1">{:lang_i18n('批量购买')}</h1>
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<!--内容-->
|
||||||
|
<div class="bd_ct ">
|
||||||
|
<div class="bd_from" style="padding: 0 16px;">
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem">
|
||||||
|
<label class="itlable">{:lang_i18n('公司名称')}<span class="redtag">*</span></label>
|
||||||
|
<input type="text" name="corp_name" class="form-control itinp companyName" placeholder="{:lang_i18n('法定营业名称')}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem">
|
||||||
|
<label class="itlable">{:lang_i18n('官方网站')}</label>
|
||||||
|
<input type="text" name="url" class="form-control itinp url" placeholder="{:lang_i18n('请粘贴网址')}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem">
|
||||||
|
<label class="itlable">{:lang_i18n('姓名')}<span class="redtag">*</span></label>
|
||||||
|
<input type="text" name="first_name" class="form-control itinp firstname" placeholder="{:lang_i18n('名')}">
|
||||||
|
<input type="text" name="last_name" class="form-control itinp lastname" placeholder="{:lang_i18n('姓')}" style="margin-top: 8px;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem">
|
||||||
|
<label class="itlable">{:lang_i18n('邮箱')}<span class="redtag">*</span></label>
|
||||||
|
<input type="text" name="email" class="form-control itinp email" placeholder="{:lang_i18n('请输入邮箱')}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem bditem1">
|
||||||
|
<label class="itlable">{:lang_i18n('电话号码')}</label>
|
||||||
|
<input type="text" name="phone" class="form-control itinp phone" placeholder="{:lang_i18n('请输入电话号码')}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem bditem1">
|
||||||
|
<label class="itlable">{:lang_i18n('您对哪个产品品类感兴趣?')}<span class="redtag">*</span></label>
|
||||||
|
<div class="sfbchecks">
|
||||||
|
{notempty name="interested"}
|
||||||
|
{volist name="interested" id="it"}
|
||||||
|
<label class="cit">
|
||||||
|
<input name="interested[]" type="checkbox" value="{$it}" class="sfbcheckboxit" />{$it}
|
||||||
|
</label>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem bditem1">
|
||||||
|
<label class="itlable">{:lang_i18n('留言')}<span class="redtag">*</span></label>
|
||||||
|
<textarea name="message" class="ittextarea ittextarea2 message" placeholder="{:lang_i18n('请输入留言')}"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 提交-->
|
||||||
|
<div class="bttj" id="send">{:lang_i18n('提交')}</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
$("#send").click(function(){
|
||||||
|
var form = $(this).parents("form");
|
||||||
|
$.ajax({
|
||||||
|
url: "{:url('contactus/bulkbuy')}",
|
||||||
|
type: "post",
|
||||||
|
dataType: "json",
|
||||||
|
data: form.serialize(),
|
||||||
|
success: function(r){
|
||||||
|
if(r.code == 0){
|
||||||
|
form.get(0).reset();
|
||||||
|
}
|
||||||
|
alert(r.msg);
|
||||||
|
},
|
||||||
|
error: function(e){
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
107
app/index/view/mobile/contact_us/distributor.html
Normal file
107
app/index/view/mobile/contact_us/distributor.html
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/contactus_distributor.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容-->
|
||||||
|
<div class="cooperapp_bdpage" style="background:#F2F2F2;">
|
||||||
|
<div class="cooperapp_bd_main" style="margin-top: 3.75rem;">
|
||||||
|
<form action="" method="post">
|
||||||
|
<h1 class="cooperapp_t1">{:lang_i18n('成为经销商')}</h1>
|
||||||
|
<p class="cooperapp_s1">{:lang_i18n('准备好加入我们了吗?<br> 在下面输入您的详细信息,我们的销售团队将在2个工作日内回复您。')}</p>
|
||||||
|
<!--内容-->
|
||||||
|
<div class="bd_ct cooperapp_bd_ct">
|
||||||
|
<div class="thimg">
|
||||||
|
<img src="__IMAGES__/distributor_focus_image.webp" alt="" srcset="" class="cooperapp_bdimg">
|
||||||
|
</div>
|
||||||
|
<div class="bd_from">
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem">
|
||||||
|
<label class="itlable">{:lang_i18n('公司名称')}<span class="redtag">*</span></label>
|
||||||
|
<input type="text" name="corp_name" class="form-control itinp companyName" placeholder="{:lang_i18n('请输入公司名称')}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem">
|
||||||
|
<label class="itlable">{:lang_i18n('电子邮件')}<span class="redtag">*</span></label>
|
||||||
|
<input type="text" name="email" class="form-control itinp email" placeholder="{:lang_i18n('请输入邮箱')}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem bditem1">
|
||||||
|
<label class="itlable">{:lang_i18n('电话号码')}<span class="redtag">*</span></label>
|
||||||
|
<input type="text" name="phone" class="form-control itinp mphone" placeholder="{:lang_i18n('请输入电话号码')}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem">
|
||||||
|
<label class="itlable">{:lang_i18n('业务类型')}<span class="redtag">*</span></label>
|
||||||
|
<select name="business_type" class="form-control itinp business_type">
|
||||||
|
{volist name="types" id="ty"}
|
||||||
|
<option value="{$ty.value}">{$ty.name}</option>
|
||||||
|
{/volist}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem">
|
||||||
|
<label class="itlable">{:lang_i18n('在线商店网址')}</label>
|
||||||
|
<input type="text" name="website_url" class="form-control itinp url" placeholder="{:lang_i18n('请输入网址')}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem bditem1">
|
||||||
|
<label class="itlable">{:lang_i18n('企业规模')}<span class="redtag">*</span></label>
|
||||||
|
<select name="enterprise_size" data-pf-type="FormInput" class="form-control itinp enterprise_size">
|
||||||
|
{volist name="sizes" id="si"}
|
||||||
|
<option value="{$si.value}">{$si.name}</option>
|
||||||
|
{/volist}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem bditem1">
|
||||||
|
<label class="itlable">{:lang_i18n('公司地址')}<span class="redtag">*</span></label>
|
||||||
|
<input type="text" name="address" class="form-control itinp address" placeholder="{:lang_i18n('请输入地址')}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="theit">
|
||||||
|
<div class="bditem bditem1">
|
||||||
|
<label class="itlable">{:lang_i18n('留言')}<span class="redtag">*</span></label>
|
||||||
|
<textarea name="message" class="ittextarea message" placeholder="{:lang_i18n('请输入留言')}"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 提交-->
|
||||||
|
<div class="bttj" id="send">{:lang_i18n('提交')}</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function () {
|
||||||
|
$("#send").click(function () {
|
||||||
|
var form = $(this).parents("form");
|
||||||
|
$.ajax({
|
||||||
|
url: "{:url('contactus/distributor')}",
|
||||||
|
type: "post",
|
||||||
|
data: form.serialize(),
|
||||||
|
dataType: "json",
|
||||||
|
success: function (r) {
|
||||||
|
if (r.code == 0) {
|
||||||
|
form.get(0).reset();
|
||||||
|
}
|
||||||
|
alert(r.msg);
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
71
app/index/view/mobile/contact_us/index.html
Normal file
71
app/index/view/mobile/contact_us/index.html
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/contactus_index.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容-->
|
||||||
|
<div class="oricoEGapp-Contact">
|
||||||
|
<!--banner-->
|
||||||
|
{notempty name="focus_image.image"}
|
||||||
|
<div class="banner img-responsives margin-top-90">
|
||||||
|
<img src="{$focus_image.image}" />
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="narskfPage">
|
||||||
|
{notempty name="info_datas"}
|
||||||
|
<div class="narskf-content">
|
||||||
|
{assign name="chunks" value=":array_chunk($info_datas, 2)" /}
|
||||||
|
{assign name="sizeof_chunks" value=":count($chunks)" /}
|
||||||
|
{volist name="chunks" id="ch" key="k"}
|
||||||
|
{if condition="$k elt ($sizeof_chunks - 1)"}
|
||||||
|
<div class="narskf-ct-row">
|
||||||
|
{volist name="ch" id="item"}
|
||||||
|
<div class="narskfit" {notempty name="item.link"}onclick="location.href='{$item.link}'"{/notempty}>
|
||||||
|
<img src="{$item.image}" class="narskico-img" />
|
||||||
|
<span class="narskf-title" {:style(['color' => $item['title_txt_color']])}>{$item.title}</span>
|
||||||
|
{notempty name="item.desc"}
|
||||||
|
<span class="narskf-sm" {:style(['color' => $item['desc_txt_color']])}>{$item.desc|raw}</span>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="item.extra_image"}
|
||||||
|
<div class="narskfactive-ewm" style="display: none;">
|
||||||
|
<img src="{$item.extra_image}" alt="" />
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{else/}
|
||||||
|
{volist name="ch" id="item"}
|
||||||
|
<div class="narskf-ct-row">
|
||||||
|
<div class="narskfit narskfit2">
|
||||||
|
<img src="{$item.image}" class="narskico-img">
|
||||||
|
<div class="narskfit2-ct">
|
||||||
|
<span class="narskf-title" {:style(['color' => $item['title_txt_color']])}>{$item.title}</span>
|
||||||
|
<span class="narskf-sm" {:style(['color' => $item['desc_txt_color']])}>{$item.desc|raw}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/if}
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('.narskfit').on('click', function() {
|
||||||
|
var $ewm = $(this).find('.narskfactive-ewm');
|
||||||
|
if ($ewm.css('display') === 'none') {
|
||||||
|
$ewm.css('display', 'flex');
|
||||||
|
} else {
|
||||||
|
$ewm.css('display', 'none');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
102
app/index/view/mobile/contact_us/message.html
Normal file
102
app/index/view/mobile/contact_us/message.html
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/contactus_message.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容 -->
|
||||||
|
<div class="oricoEGapp-Contact">
|
||||||
|
<!-- banner -->
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<div class="banner img-responsives margin-top-90">
|
||||||
|
<a {notempty name="focus_image.link"} href="{$focus_image.link}" {/notempty}>
|
||||||
|
<img src="{$focus_image.image}" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 我们的信息 -->
|
||||||
|
<div class="content">
|
||||||
|
<div class="title">{:lang_i18n('我们的信息')}</div>
|
||||||
|
{notempty name="our_information"}
|
||||||
|
{assign name="first_info" value="$our_information|array_shift"/}
|
||||||
|
<div class="info">
|
||||||
|
{notempty name="first_info.image"}
|
||||||
|
<div class="left"><img src="{$first_info.image}" /></div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="right">
|
||||||
|
<div class="des">{$first_info.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{assign name="chunk_info" value="$our_information|array_chunk=2"}
|
||||||
|
{volist name="chunk_info" id="chunk"}
|
||||||
|
<div class="line"></div>
|
||||||
|
<div class="info">
|
||||||
|
{notempty name="chunk.0.image"}
|
||||||
|
<div class="left"><img src="{$chunk.0.image}" /></div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="right">
|
||||||
|
{volist name="chunk" id="info" key="k"}
|
||||||
|
<div class="info_title {neq name='k' value='1'}m-t-20{/neq}">{$info.title}:</div>
|
||||||
|
<div class="des"> {$info.desc|raw}</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
<!-- question -->
|
||||||
|
<div class="content">
|
||||||
|
<div class="title">{:lang_i18n('提交您的问题')}</div>
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div class="question">
|
||||||
|
<div class="title">{:lang_i18n('姓名')} <span class="red">*</span></div>
|
||||||
|
<div class="des">
|
||||||
|
<input type="text" name="name" id="name" placeholder="{:lang_i18n('请输入内容...')}" class="form-control itinp">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="question">
|
||||||
|
<div class="title">{:lang_i18n('电子邮箱')} <span class="red">*</span></div>
|
||||||
|
<div class="des">
|
||||||
|
<input type="text" name="email" id="email" placeholder="{:lang_i18n('请输入内容...')}" class="form-control itinp">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="question">
|
||||||
|
<div class="title">{:lang_i18n('您的问题')} <span class="red">*</span></div>
|
||||||
|
<div class="des">
|
||||||
|
<textarea rows="6" name="content" id="message" class="ittextarea message" placeholder="{:lang_i18n('请输入内容...')}"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="question">
|
||||||
|
<span class="send" id="send">{:lang_i18n('发送')}</span>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- Become a Distributor -->
|
||||||
|
<div class="contact_b"><a href="{:url('contactus/distributor')}">{:lang_i18n('成为经销商')}</a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function () {
|
||||||
|
$("#send").click(function () {
|
||||||
|
var form = $(this).parents("form");
|
||||||
|
$.ajax({
|
||||||
|
url: "{:url('contactus/message')}",
|
||||||
|
type: "post",
|
||||||
|
data: form.serialize(),
|
||||||
|
dataType: "json",
|
||||||
|
success: function (r) {
|
||||||
|
if (r.code == 0) {
|
||||||
|
form.get(0).reset();
|
||||||
|
}
|
||||||
|
alert(r.msg);
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
console.error(e.msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
34
app/index/view/mobile/faq/index.html
Normal file
34
app/index/view/mobile/faq/index.html
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="title"}
|
||||||
|
<title>{:lang_i18n('常见FQ_下载与服务_中文官网帮助信息_ORICO/奥睿科官网')}</title>
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/faq.css">
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 内容-->
|
||||||
|
<div class="oricoEGapp-fq">
|
||||||
|
<!--banner-->
|
||||||
|
{notempty name="banner.image"}
|
||||||
|
<div class="banner">
|
||||||
|
<img src="{$banner.image}">
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!--常见问题解答-->
|
||||||
|
{notempty name="faq"}
|
||||||
|
<div class="m_Container">
|
||||||
|
<div class="title text_center margin-top-50 text_black"><strong>{:lang_i18n('常见问题解答')}</strong>
|
||||||
|
</div>
|
||||||
|
{volist name="faq" id="vo"}
|
||||||
|
<div class="img-responsives margin-top-40"><img src="{$vo.image}"></div>
|
||||||
|
<div class="subtitle text_black text_center margin-top-30">{$vo.question}</div>
|
||||||
|
<div class="des text_gray line-height-40 margin-top-40">{$vo.answer|raw}</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<!-- 分页-->
|
||||||
|
<div >{$faq|raw}</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
325
app/index/view/mobile/index/index.html
Normal file
325
app/index/view/mobile/index/index.html
Normal file
@@ -0,0 +1,325 @@
|
|||||||
|
{extend name="public/base"/}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/index.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!--首页 -->
|
||||||
|
<div class="oricoEGapp-index">
|
||||||
|
<!-- banner-->
|
||||||
|
<div class="oidx-banner">
|
||||||
|
{notempty name="focus_images"}
|
||||||
|
<div class="swiper-container bannerswiper">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{volist name="focus_images" id="fi"}
|
||||||
|
<div class="swiper-slide">
|
||||||
|
<a href="{$fi.link}"><img src="{$fi.image}" alt="{$fi.title}"></a>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<!-- 如果需要分页器 -->
|
||||||
|
<div class="swiper-pagination"></div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
<!-- 四大分类 -->
|
||||||
|
{notempty name="product_categorys"}
|
||||||
|
<div class="oidx-cate">
|
||||||
|
{volist name="product_categorys" id="pct"}
|
||||||
|
<div class="cateit">
|
||||||
|
<a href="{$pct.link}">
|
||||||
|
<img src="{$pct.image}" />
|
||||||
|
<span {:style(['color'=>$pct['title_txt_color']])}>{$pct.title}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 特色专题及公司实力 -->
|
||||||
|
{notempty name="featured_topics"}
|
||||||
|
<div class="oidx-gg">
|
||||||
|
{volist name="featured_topics" id="ft"}
|
||||||
|
<div class="index-img">
|
||||||
|
<img src="{$ft.image}">
|
||||||
|
<div class="Innew-text wow animated bounceInLeft animated">
|
||||||
|
<p class="title">{$ft.title}</p>
|
||||||
|
<div class="more">
|
||||||
|
<a href="{$ft.link}" target="_blank">
|
||||||
|
{:lang_i18n('查看所有')} <i class="icon-right-svg"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 明星产品/热点产品 -->
|
||||||
|
{notempty name="featured_products"}
|
||||||
|
<div class="oidx-FP">
|
||||||
|
<div class="Inpro-text">
|
||||||
|
<p class="title">{:lang_i18n('明星产品/热点产品')}</p>
|
||||||
|
</div>
|
||||||
|
<div class="m_Container">
|
||||||
|
<div class="swiper-container FPswiper">
|
||||||
|
<div class="swiper-wrapper text_center">
|
||||||
|
{volist name="featured_products" id="fp"}
|
||||||
|
<div class="swiper-slide inproimg ">
|
||||||
|
<a href="{:url('product/detail',['id'=>$fp.id])}"><img src="{$fp.cover_image}" alt="" /></a>
|
||||||
|
<div class="inprotext">
|
||||||
|
<p class="text_center title">{$fp.name}</p>
|
||||||
|
<p class="t-f16"></p>
|
||||||
|
<p class="timeblue">
|
||||||
|
<a href="{:url('product/detail',['id'=>$fp.id])}">
|
||||||
|
{:lang_i18n('了解更多')} <img src="__IMAGES__/more-r.png">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<!-- 如果需要分页器 -->
|
||||||
|
<div class="swiper-pagination"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 专题图片展示 -->
|
||||||
|
<div class="oidx-ztpictureshow">
|
||||||
|
<!-- 视频 -->
|
||||||
|
{notempty name="video"}
|
||||||
|
<div class="vedio_in">
|
||||||
|
<img src="{$video.image}" />
|
||||||
|
<iframe class="margin-top-20" width="100%" style="z-index:9999;"
|
||||||
|
src="{$video.video}" title="YouTube video player" frameborder="0"
|
||||||
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||||
|
allowfullscreen="" id="videoElement"></iframe>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="scenes"}
|
||||||
|
{volist name="scenes" id="sc"}
|
||||||
|
<div class="indocking">
|
||||||
|
<a href="{$sc.link}"><img src="{$sc.image}" /></a>
|
||||||
|
<div class="position_a text_center wow animated bounceInLeft">
|
||||||
|
<p class="f_weight_500 timetitle" {:style(['color'=>$sc['title_txt_color']])}>{$sc.title}</p>
|
||||||
|
<p class=" margin-top-14 f_weight_400 timedesin" {:style(['color'=>$sc['desc_txt_color']])}>{$sc.desc}</p>
|
||||||
|
<p class=" margin-top-20 f_weight_400">
|
||||||
|
<a href="{$sc.link}" class="timeblue"> {:lang_i18n('了解更多')} <img src="__IMAGES__/more-r.png"></a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
<!-- orico技术 -->
|
||||||
|
<div class="oidx-tcly">
|
||||||
|
<div class="Tech-text">
|
||||||
|
<h3>{:lang_i18n('Orico 技术')}</h3>
|
||||||
|
<p>{:lang_i18n('强大功能、简单使用')}</p>
|
||||||
|
</div>
|
||||||
|
<div class="section section-blends section-full">
|
||||||
|
<div class="section-stack section-stack--center ">
|
||||||
|
<div class="section-stack__main">
|
||||||
|
<div class="before-after shadow text-custom ba-slider">
|
||||||
|
<img src="__IMAGES__/back-img01.jpg">
|
||||||
|
<div class="resize">
|
||||||
|
<img src="__IMAGES__/back-img02.jpg" style="width: 390px;">
|
||||||
|
</div>
|
||||||
|
<span class="handle"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 品牌故事 -->
|
||||||
|
{notempty name="brand_story"}
|
||||||
|
<div class="oidx-times">
|
||||||
|
<section class="cd-horizontal-timeline loaded">
|
||||||
|
<div class="events-content">
|
||||||
|
<ul>
|
||||||
|
{volist name="brand_story" id="bs" key="k"}
|
||||||
|
<li class="{eq name='k' value='1'}selected{/eq}">
|
||||||
|
<img src="{$bs.image}">
|
||||||
|
<div class="position_a text_center">
|
||||||
|
<p class=" timetitle" {:style(['color'=>$bs['title_txt_color']])}>{$bs.title} </p>
|
||||||
|
<p class=" margin-top-14 f_weight_400 timedesin" {:style(['color'=>$bs['desc_txt_color']])}>{$bs.desc}</p>
|
||||||
|
<p class=" margin-top-20 f_weight_400">
|
||||||
|
<span class=" timeblue">
|
||||||
|
<a href="{$bs.link}">{:lang_i18n('了解更多')}<img src="__IMAGES__/more-r.png"></a>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="timeline">
|
||||||
|
<div class="events-wrapper">
|
||||||
|
<div class="events">
|
||||||
|
<ol>
|
||||||
|
{volist name="brand_story" id="bs" key="k"}
|
||||||
|
<li>
|
||||||
|
<a class="{eq name='k' value='1'}selected{/eq}">{$bs.year}</a>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ol>
|
||||||
|
<span class="filling-line"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 数据统计 -->
|
||||||
|
{notempty name="data_statistics"}
|
||||||
|
<div class="oidx-total">
|
||||||
|
<div class="num-bg clearfix">
|
||||||
|
<ul>
|
||||||
|
{volist name="data_statistics" id="ds"}
|
||||||
|
<li>
|
||||||
|
<h3 {:style(['color'=>$ds['desc_txt_color']])}>{$ds.desc|raw}</h3>
|
||||||
|
<p {:style(['color'=>$ds['title_txt_color']])}>{$ds.title}</p>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 文章轮播 -->
|
||||||
|
{notempty name="recommend_articles"}
|
||||||
|
<div class="oidx-imgqh">
|
||||||
|
<div class="swiper-container imgqhswiper">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{volist name="recommend_articles" id="ra"}
|
||||||
|
<div class="swiper-slide">
|
||||||
|
<a href="{:url('article/detail', ['id' => $ra.id])}">
|
||||||
|
<div class="title pos-text">{$ra.title|raw}</div>
|
||||||
|
<img src="{$ra.image}" alt="" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<!-- 如果需要分页器 -->
|
||||||
|
<div class="swiper-pagination"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 常见问题 -->
|
||||||
|
{notempty name="recommend_faq"}
|
||||||
|
<div class="oidx-fqa">
|
||||||
|
<div class="faq">
|
||||||
|
<div class="faq-title ">
|
||||||
|
<h3>{:lang_i18n('常见问题')}</h3>
|
||||||
|
<h5>{:lang_i18n('回答您最关心的问题')}</h5>
|
||||||
|
<p>{:lang_i18n('客服团队的工作时间:周一到周五,早9点到晚6点 平均应答时间:24小时内')}</p>
|
||||||
|
</div>
|
||||||
|
{volist name="recommend_faq" id="rq"}
|
||||||
|
<dl>
|
||||||
|
<dt class="cursor_p">
|
||||||
|
{$rq.question}<i class="rotate icon-add-svg"></i>
|
||||||
|
</dt>
|
||||||
|
<dd>{$rq.answer|raw}</dd>
|
||||||
|
</dl>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script src="__JS__/before-after.min.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//banner轮播
|
||||||
|
var bannerswiper = new Swiper('.bannerswiper', {
|
||||||
|
// 配置选项
|
||||||
|
loop: true,
|
||||||
|
autoplay: {
|
||||||
|
delay: 3000,
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
el: '.swiper-pagination',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 分类轮播
|
||||||
|
var FPswiper = new Swiper(".FPswiper", {
|
||||||
|
loop: true, //允许从第一张到最后一张,或者从最后一张到第一张 循环属性
|
||||||
|
slidesPerView: 2, // 设置显示一张
|
||||||
|
centeredSlides: true, //使当前图片居中显示
|
||||||
|
centeredSlidesBounds: true, //使左右两边的图片始终贴合边缘
|
||||||
|
autoplay: true, //可选选项,自动滑动
|
||||||
|
initialSlide: 0, //默认显示第二张图片索引从0开始
|
||||||
|
speed: 2000, //设置过度时间
|
||||||
|
autoplay: false,
|
||||||
|
});
|
||||||
|
// 图片切换
|
||||||
|
var imgqhswiper = new Swiper('.imgqhswiper', {
|
||||||
|
loop: true, //允许从第一张到最后一张,或者从最后一张到第一张 循环属性
|
||||||
|
effect: 'coverflow', //轮播效果,coverflow覆盖流效果
|
||||||
|
slidesPerView: 2,
|
||||||
|
centeredSlides: true,
|
||||||
|
slidesOffsetBefore: 0, //偏移,使第一张图片向右偏移150px */
|
||||||
|
autoplay: true, //可选选项,自动滑动
|
||||||
|
speed: 2000, //设置过度时间
|
||||||
|
autoplay: true,
|
||||||
|
pagination: {
|
||||||
|
el: '.swiper-pagination',
|
||||||
|
clickable: true,
|
||||||
|
dynamicBullets: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
$(function() {
|
||||||
|
//视频播放
|
||||||
|
var videos = $(".vedio_in");
|
||||||
|
videos.on("click", function() {
|
||||||
|
var elm = $(this),
|
||||||
|
conts = elm.contents(),
|
||||||
|
le = conts.length,
|
||||||
|
ifr = null;
|
||||||
|
for (var i = 0; i < le; i++) {
|
||||||
|
if (conts[i].nodeType == 8) ifr = conts[i].textContent;
|
||||||
|
}
|
||||||
|
elm.addClass("player").html(ifr);
|
||||||
|
elm.off("click");
|
||||||
|
});
|
||||||
|
// 图片覆盖左右移动
|
||||||
|
$('.before-after').beforeAfter();
|
||||||
|
// 为日期链接添加点击事件处理函数
|
||||||
|
$('.events a').on('click', function() {
|
||||||
|
// 移除所有日期链接的 selected 类
|
||||||
|
$('.events a').removeClass('selected');
|
||||||
|
// 移除所有内容列表项的 selected 类
|
||||||
|
$('.events-content li').removeClass('selected');
|
||||||
|
// 为当前点击的日期链接添加 selected 类
|
||||||
|
$(this).addClass('selected');
|
||||||
|
// 获取当前点击链接的索引
|
||||||
|
var index = $('.events a').index(this);
|
||||||
|
// 为对应的内容列表项添加 selected 类
|
||||||
|
$('.events-content li').eq(index).addClass('selected');
|
||||||
|
});
|
||||||
|
// fqa
|
||||||
|
// 为所有带有 cursor_p 类的 dt 元素添加点击事件处理函数
|
||||||
|
$('.cursor_p').on('click', function() {
|
||||||
|
// 切换对应的 dd 元素的显示和隐藏状态
|
||||||
|
$(this).next('dd').slideToggle(400);
|
||||||
|
// 获取当前 dt 元素内的图标元素
|
||||||
|
var icon = $(this).find('i');
|
||||||
|
// 切换图标类名
|
||||||
|
if (icon.hasClass('icon-add-svg')) {
|
||||||
|
icon.removeClass('icon-add-svg').addClass('icon-jian-svg');
|
||||||
|
} else {
|
||||||
|
icon.removeClass('icon-jian-svg').addClass('icon-add-svg');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 判断年份
|
||||||
|
// 计算.timeline下的li元素数量
|
||||||
|
var liCount = $('.timeline ol li').length;
|
||||||
|
|
||||||
|
// 如果有li元素,则设置a标签的宽度
|
||||||
|
if (liCount > 0) {
|
||||||
|
var widthPerItem = (100 / liCount-0.3) + '%';
|
||||||
|
$('.timeline ol li a').css('width', widthPerItem);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
93
app/index/view/mobile/product/category.html
Normal file
93
app/index/view/mobile/product/category.html
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/product_category.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- banner轮播图 -->
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<div>
|
||||||
|
{volist name="focus_image" id="fi"}
|
||||||
|
<a {notempty name="fi.link" }href="{$fi.link}"{/notempty}>
|
||||||
|
<img src="{$fi.image}" style="width: 100%;margin-top: 3.5rem;"/>
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="oricoEGapp-catelists">
|
||||||
|
<!-- 二级分类导航 -->
|
||||||
|
<div class="first_list_category">
|
||||||
|
<div class="scroller">
|
||||||
|
<ul class="clearfix">
|
||||||
|
{volist name="list" id="vo"}
|
||||||
|
<li>
|
||||||
|
<a href="{:url('product/subcategory', ['id' => $vo.id])}">
|
||||||
|
<div class="category_list">
|
||||||
|
<p>{$vo.name}</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 二级分类几个产品展示 -->
|
||||||
|
{volist name="list" id="vo"}
|
||||||
|
<div class="m_Container">
|
||||||
|
<div class="product_list_title">
|
||||||
|
<div class="product_title">{$vo.name}</div>
|
||||||
|
<a href="{:url('product/subcategory', ['id' => $vo.id])}" class="view_all text_gray">
|
||||||
|
{:lang_i18n('查看全部')}<span class="icon-Double-Arrow"></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="product_list">
|
||||||
|
{notempty name="vo.products"}
|
||||||
|
<ul>
|
||||||
|
{volist name="vo.products" id="pro" length="4"}
|
||||||
|
<li class="img-responsive">
|
||||||
|
<a href="{:url('product/detail', ['id' => $pro.id])}">
|
||||||
|
<img src="{$pro.cover_image}">
|
||||||
|
<span class="title">{$pro.name}</span>
|
||||||
|
<span class="subtitle">{$pro.spu}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
// 自定义 navbarscroll 方法
|
||||||
|
$(function() {
|
||||||
|
let startX = 0;
|
||||||
|
let isDragging = false;
|
||||||
|
let currentLi;
|
||||||
|
$('.scroller ul li').on('mousedown touchstart', function(e) {
|
||||||
|
startX = e.type === 'touchstart' ? e.originalEvent.touches[0].clientX : e.clientX;
|
||||||
|
isDragging = true;
|
||||||
|
currentLi = $(this);
|
||||||
|
});
|
||||||
|
$(document).on('mousemove touchmove', function(e) {
|
||||||
|
if (isDragging) {
|
||||||
|
const currentX = e.type === 'touchmove' ? e.originalEvent.touches[0].clientX : e.clientX;
|
||||||
|
const diffX = currentX - startX;
|
||||||
|
if (diffX > 20) { // 设定一个最小滑动距离,这里设为20像素
|
||||||
|
// 右滑操作
|
||||||
|
$('.scroller ul li').removeClass('cur');
|
||||||
|
currentLi.addClass('cur');
|
||||||
|
// 这里可以添加更多右滑后要执行的操作,例如显示对应内容
|
||||||
|
isDragging = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(document).on('mouseup touchend', function() {
|
||||||
|
isDragging = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
262
app/index/view/mobile/product/detail.html
Normal file
262
app/index/view/mobile/product/detail.html
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="title"}
|
||||||
|
{notempty name="product.seo_title"}<title>{$product.seo_title}</title>{else /}{__BLOCK__}{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="seo"}
|
||||||
|
{notempty name="product.seo_keywords"}
|
||||||
|
<meta name="keywords" content="{$product.seo_keywords}" />
|
||||||
|
<meta name="description" content="{$product.seo_desc}" />
|
||||||
|
{else/}
|
||||||
|
{__BLOCK__}
|
||||||
|
{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/product_detail.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!--产品详情-->
|
||||||
|
<div class="oricoEGapp-prdetail">
|
||||||
|
<div class="m_Container margin-top-90">
|
||||||
|
<div class="goods_address">
|
||||||
|
<a class="href_01">{:lang_i18n('首页')}</a>
|
||||||
|
{volist name="product_categorys" id="ca"}
|
||||||
|
<span class="icon-arrow arrow_address"></span>
|
||||||
|
<a class="href_02" href="{:url('product/category', ['id' => $ca.id])}">{$ca.name}</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--产品轮播图 -->
|
||||||
|
{notempty name="product_skus"}
|
||||||
|
<div class="m_Container oricodtail-pdetailimgs">
|
||||||
|
{volist name="product_skus" id="sku" key="idx"}
|
||||||
|
<div class="swiper-container pdetailswiper" data-index="{$idx}" {neq name="idx" value="1"}style="display: none;"{/neq}>
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{volist name="sku.photo_album" id="photo"}
|
||||||
|
<div class="swiper-slide">
|
||||||
|
<img src="{$photo}" alt="" />
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<!-- 如果需要分页器 -->
|
||||||
|
<div class="swiper-pagination"></div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 规格参数 -->
|
||||||
|
<div class="m_Container">
|
||||||
|
<!-- 颜色/属性 -->
|
||||||
|
{notempty name="product_sku_attrs"}
|
||||||
|
<div class="slideTxtBox">
|
||||||
|
<div class="hd clearfix">
|
||||||
|
{volist name="product_sku_attrs" id="ps"}
|
||||||
|
<div class="dt attr_type">
|
||||||
|
<span>{$ps.attr_name}</span>
|
||||||
|
{notempty name="ps.attr_values"}
|
||||||
|
<ul class="hd clearfix">
|
||||||
|
{volist name="ps.attr_values" id="pv" key="pk"}
|
||||||
|
{assign name="attr_value_type" value=":rgb_or_image($pv.attr_value)" /}
|
||||||
|
{between name="ps.attr_id" value="1,2"}
|
||||||
|
<li class="attr_value tip1 attr_item" data-index="{$pk}">
|
||||||
|
{else/}
|
||||||
|
<li class="attr_value tip1 attr_item_defalut" data-index="{$pk}">
|
||||||
|
{/between}
|
||||||
|
{eq name="attr_value_type" value="IMAGE"}
|
||||||
|
<span class="co-bg"><img src="{$pv.attr_value}" /></span>
|
||||||
|
{elseif condition="$attr_value_type == 'RGB'" /}
|
||||||
|
<span class="co-bg" {:style(['background-color'=>$pv.attr_value])}></span>
|
||||||
|
{else/}
|
||||||
|
<span>{$pv.attr_value}</span>
|
||||||
|
{/eq}
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="goods_all_title">
|
||||||
|
<div class="title">{$product.name}</div>
|
||||||
|
</div>
|
||||||
|
{notempty name="product_params"}
|
||||||
|
<div class="proTfg">
|
||||||
|
<ul class="msul swt-Table">
|
||||||
|
<li class="Table-Row">
|
||||||
|
<div class="ms1 Table-Cell">{:lang_i18n('型号')}</div>
|
||||||
|
<div class="ms2 Table-Cell"></div>
|
||||||
|
<div class="ms3 Table-Cell">{$product.spu}</div>
|
||||||
|
</li>
|
||||||
|
{volist name="product_params" id="param"}
|
||||||
|
<li class="Table-Row">
|
||||||
|
<div class="ms1 Table-Cell">{$param.name}</div>
|
||||||
|
<div class="ms2 Table-Cell"></div>
|
||||||
|
<div class="ms3 Table-Cell">{$param.value}</div>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="platform_buy">
|
||||||
|
{eq name=":cookie('think_lang')" value="en-us"}
|
||||||
|
<a class="btn-blue-detail business-button">{:lang_i18n('发送查询')}</a>
|
||||||
|
{/eq}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 产品描述 -->
|
||||||
|
<div class="goods_details">
|
||||||
|
<ul class="cpa des cursor_p">
|
||||||
|
<li class="active" id="one">{:lang_i18n('产品描述')}</li>
|
||||||
|
{notempty name="product_related"}
|
||||||
|
<li onclick="javascript:location.href='#related'">{:lang_i18n('关联产品')}</li>
|
||||||
|
{/notempty}
|
||||||
|
<div class="clear"></div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- 产品图片-->
|
||||||
|
<div class="goods_des img-responsives" id="description-tab">{$product.detail|raw}</div>
|
||||||
|
<!-- 关联产品-->
|
||||||
|
{notempty name="product_related"}
|
||||||
|
<div class="glcplist" id="related">
|
||||||
|
{volist name="product_related" id="rel"}
|
||||||
|
<div class="glcpitem">
|
||||||
|
<a href="{:url('product/detail', ['id'=>$rel.id])}">
|
||||||
|
<img src="{:thumb($rel.cover_image)}" class="glcpimg" />
|
||||||
|
<span class="glt1">{$rel.name}</span>
|
||||||
|
<span class="glt2">{$rel.spu}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 弹窗-->
|
||||||
|
<div class="marsk-container-detail">
|
||||||
|
<div class="popup-quick">
|
||||||
|
<div class="title-text">{:lang_i18n('发送查询')}</div>
|
||||||
|
<div class="business-close"><img src="__IMAGES__/close2.png"></div>
|
||||||
|
<form action="" method="post" autocomplete="off" class="apply_content">
|
||||||
|
<div class="detail_form">
|
||||||
|
<div>
|
||||||
|
<p><strong class="redstr">*</strong>{:lang_i18n('姓名')}</p>
|
||||||
|
<div class="name clearfix">
|
||||||
|
<input type="text" class="first detail-w02" placeholder="{:lang_i18n('请输入您的名称')}"
|
||||||
|
name="first_name" id="firstname" style="margin-right:0.5rem;">
|
||||||
|
<input type="text" class="first detail-w02" placeholder="{:lang_i18n('请输入您的姓氏')}"
|
||||||
|
name="last_name" id="lastname">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class=" clearfix">
|
||||||
|
<p><strong class="redstr">*</strong>{:lang_i18n('公司/组织')}</p>
|
||||||
|
<div class="redstr">
|
||||||
|
<input type="text" class="first detail-w01" id="companyName" name="company_name">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class=" clearfix">
|
||||||
|
<p><strong class="redstr">*</strong>{:lang_i18n('邮箱')}</p>
|
||||||
|
<div class="redstr">
|
||||||
|
<input type="text" class="first detail-w01" id="email" name="email">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class=" clearfix">
|
||||||
|
<p><strong class="redstr">*</strong>{:lang_i18n('电话号码')}</p>
|
||||||
|
<div class="redstr">
|
||||||
|
<input type="text" class="first detail-w01" id="phone" name="phone">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix">
|
||||||
|
<p><strong class="redstr">*</strong>{:lang_i18n('国家')}</p>
|
||||||
|
<div class="redstr">
|
||||||
|
<select class=" detail-w01" id="country" name="corp_name">
|
||||||
|
<option value="">--- {:lang_i18n('请选择所属国家')} ---</option>
|
||||||
|
{volist name="country_list" id="country"}
|
||||||
|
<option value="{$country}">{$country}</option>
|
||||||
|
{/volist}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class=" clearfix">
|
||||||
|
<p><strong class="redstr">*</strong>{:lang_i18n('行业')}</p>
|
||||||
|
<div class="redstr">
|
||||||
|
<input type="text" class="first detail-w01" id="industry" name="industry">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class=" clearfix">
|
||||||
|
<p><strong style="color: red;">*</strong>{:lang_i18n('询问内容')}</p>
|
||||||
|
<div>
|
||||||
|
<textarea rows="3" cols="20" class="first detail-w01" id="message" name="message"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="submit_btn" id="send">{:lang_i18n('提交')}</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
//产品图片轮播
|
||||||
|
var pdetailswiper = new Swiper('.pdetailswiper', {
|
||||||
|
// 配置选项
|
||||||
|
loop: true,
|
||||||
|
autoplay: {
|
||||||
|
delay: 3000,
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
el: '.swiper-pagination',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(function() {
|
||||||
|
$('.business-button').click(function() {
|
||||||
|
$('.marsk-container-detail').show()
|
||||||
|
})
|
||||||
|
$('.business-close').click(function() {
|
||||||
|
$('.marsk-container-detail').hide()
|
||||||
|
})
|
||||||
|
// 产品描述和关联产品切换
|
||||||
|
$('.cpa li').on('click', function() {
|
||||||
|
$(this).siblings().removeClass('active');
|
||||||
|
$(this).addClass('active');
|
||||||
|
const targetTab = $(this).data('tab');
|
||||||
|
$('.tab-pane').hide();
|
||||||
|
if (targetTab === 'description') {
|
||||||
|
$('#description-tab').show();
|
||||||
|
} else if (targetTab === 'related') {
|
||||||
|
$('#description-tab').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 根据颜色切换图册
|
||||||
|
$('.attr_type').find('.attr_value').click(function() {
|
||||||
|
var index = $(this).data('index');
|
||||||
|
$('.pdetailswiper').hide();
|
||||||
|
$('.pdetailswiper[data-index="' + index + '"]').show();
|
||||||
|
$('.attr_value').removeClass('attr_item_on');
|
||||||
|
$(this).addClass('attr_item_on');
|
||||||
|
});
|
||||||
|
|
||||||
|
// 提交产品询价查询
|
||||||
|
// 提交询盘
|
||||||
|
$('#send').click(function() {
|
||||||
|
var form = $(this).parents('form');
|
||||||
|
$.ajax({
|
||||||
|
url: "{:url('product/inquiry')}",
|
||||||
|
type: 'POST',
|
||||||
|
data: form.serialize(),
|
||||||
|
success: function(r) {
|
||||||
|
if (r.code == 0) {
|
||||||
|
form[0].reset(); // 重置表单
|
||||||
|
modal.hide();
|
||||||
|
}
|
||||||
|
alert(r.msg);
|
||||||
|
},
|
||||||
|
error: function(e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
45
app/index/view/mobile/product/newpro.html
Normal file
45
app/index/view/mobile/product/newpro.html
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/product_newpro.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<div class="oricoEGapp-newarrival">
|
||||||
|
<!-- 顶部产品图-->
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
{volist name="focus_image" id="fo"}
|
||||||
|
<a {notempty name="fo.link" }href="{$fo.link}"{/notempty}>
|
||||||
|
<img src="{$fo.image}" class="ona-topimg" />
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
<!-- 产品列表 -->
|
||||||
|
{notempty name="newpros"}
|
||||||
|
<div class="ona-prlist">
|
||||||
|
{volist name="newpros" id="vo"}
|
||||||
|
<div class="m_Container">
|
||||||
|
<div class="product_list_title">
|
||||||
|
<div class="product_title">{$vo.category.name|default=''}</div>
|
||||||
|
</div>
|
||||||
|
<div class="product_list">
|
||||||
|
{notempty name="vo.products"}
|
||||||
|
<ul>
|
||||||
|
{volist name="vo.products" id="pro"}
|
||||||
|
<li class="img-responsive">
|
||||||
|
<a href="{:url('product/detail', ['id' => $pro.id])}">
|
||||||
|
<img src="{:thumb($pro.cover_image)}">
|
||||||
|
<span class="title">{$pro.name}</span>
|
||||||
|
<span class="subtitle">{$pro.spu}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
35
app/index/view/mobile/product/search.html
Normal file
35
app/index/view/mobile/product/search.html
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/product_search.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 搜索页面 -->
|
||||||
|
<div class="oricoEGapp-topsearch">
|
||||||
|
<form action="{:url('product/search')}" method="get" class="topsearch">
|
||||||
|
<div class="sleft">
|
||||||
|
<img src="__IMAGES__/ssapp.png" class="icosearch"/>
|
||||||
|
<input class="topseach-ipt" name="keywords" placeholder="{:lang_i18n('请搜索')}"/>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="searchbt">{:lang_i18n('搜索')}</button>
|
||||||
|
</form>
|
||||||
|
{notempty name="products"}
|
||||||
|
<div class="prlist">
|
||||||
|
{volist name="products" id="pro"}
|
||||||
|
<a class="pritem" href="{:url('product/detail',['id'=>$pro.id])}">
|
||||||
|
<img src="{$pro.cover_image}" class="primg"/>
|
||||||
|
<div class="prinfo">
|
||||||
|
<span class="t1">{$pro.name|raw}</span>
|
||||||
|
<span class="t2">{$pro.spu|raw}</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<!-- 分页 -->
|
||||||
|
<div>{$page|raw}</div>
|
||||||
|
{else/}
|
||||||
|
<div style="text-align: center; padding: 10%;">暂无数据</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
74
app/index/view/mobile/product/subcategory.html
Normal file
74
app/index/view/mobile/product/subcategory.html
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/product_subcategory.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- banner轮播图 -->
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<div>
|
||||||
|
{volist name="focus_image" id="fi"}
|
||||||
|
<a {notempty name="fi.link"}href="{$fi.link}"{/notempty}>
|
||||||
|
<img src="{$fi.image}" alt="" style="width:100%;margin-top:3.5rem;" />
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 三级产品列表 -->
|
||||||
|
<div class="oricoEGapp-subcatelists">
|
||||||
|
<div class="m_Container">
|
||||||
|
{notempty name="categorys_data"}
|
||||||
|
<div class="product_list">
|
||||||
|
<ul>
|
||||||
|
{assign name="products" value=":\think\helper\Arr::flatMap(fn($pro) => $pro['products'], $categorys_data)" /}
|
||||||
|
{volist name="products" id="pr"}
|
||||||
|
<li class="img-responsive product-img">
|
||||||
|
{notempty name="pr.sku"}
|
||||||
|
<a href="{:url('product/detail', ['id' => $pr.id])}">
|
||||||
|
{volist name="pr.sku" id="ps" key="pk"}
|
||||||
|
<img src="{:thumb($ps.main_image)}" class="img_p" {neq name="pk" value="1" }style="display:none;"{/neq}>
|
||||||
|
{/volist}
|
||||||
|
</a>
|
||||||
|
{/notempty}
|
||||||
|
<a href="{:url('product/detail', ['id' => $pr.id])}">
|
||||||
|
<span class="title nowrap_ellipsis">{$pr.name}</span>
|
||||||
|
<span class="subtitle">{$pr.spu}</span>
|
||||||
|
</a>
|
||||||
|
{notempty name="pr.colors"}
|
||||||
|
<div class="hd Multi_color">
|
||||||
|
<ul>
|
||||||
|
{volist name="pr.colors" id="pc"}
|
||||||
|
<li class="img-responsive S-small-img">
|
||||||
|
<div class="cricle">
|
||||||
|
{assign name="color_type" value=":rgb_or_image($pc.attr_value)" /}
|
||||||
|
{eq name="color_type" value="IMAGE"}
|
||||||
|
<img src="{$pc.attr_value}" alt="" class="S-Cricle-Bg">
|
||||||
|
{elseif condition="$color_type == 'RGB'" /}
|
||||||
|
<span class="rgb_hex" {:style(['background-color'=>$pc.attr_value])}></span>
|
||||||
|
{/eq}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function() {
|
||||||
|
// 图片切换
|
||||||
|
$('.Multi_color').find('.S-small-img').click(function() {
|
||||||
|
var index = $(this).index();
|
||||||
|
$(this).parents('.product-img').find('.img_p').eq(index).show().siblings().hide();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
78
app/index/view/mobile/public/base.html
Normal file
78
app/index/view/mobile/public/base.html
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
{block name="title"}<title>{$basic_config['website_seo_title']['value']}</title>{/block}
|
||||||
|
{block name="seo"}
|
||||||
|
<meta name="keywords" content="{$basic_config['website_seo_keyword']['value']}" />
|
||||||
|
<meta name="description" content="{$basic_config['website_seo_description']['value']}" />
|
||||||
|
{/block}
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/public.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/font.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/style.css" />
|
||||||
|
<!-- <link rel="stylesheet" type="text/css" href="__CSS__/fonts.css" /> -->
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/header.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/footer.css" />
|
||||||
|
{block name="style"}{/block}
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/swiper@9/swiper-bundle.min.css">
|
||||||
|
<script type="text/javascript" src='https://code.jquery.com/jquery-3.6.0.min.js'></script>
|
||||||
|
<script type="text/javascript" src="https://unpkg.com/swiper@9.4.1/swiper-bundle.min.js"></script>
|
||||||
|
<!-- Matomo -->
|
||||||
|
<script>
|
||||||
|
var _paq = window._paq = window._paq || [];
|
||||||
|
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||||||
|
_paq.push(['trackPageView']);
|
||||||
|
_paq.push(['enableLinkTracking']);
|
||||||
|
(function() {
|
||||||
|
var u="//analytics.f2b211.com/";
|
||||||
|
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
||||||
|
_paq.push(['setSiteId', '1']);
|
||||||
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||||
|
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<!-- End Matomo Code -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<noscript>
|
||||||
|
<!-- Matomo Image Tracker-->
|
||||||
|
<img referrerpolicy="no-referrer-when-downgrade" src="https://analytics.f2b211.com/matomo.php?idsite=1&rec=1" style="border:0" alt="" />
|
||||||
|
<!-- End Matomo -->
|
||||||
|
</noscript>
|
||||||
|
{block name="header"}
|
||||||
|
{include file="public/header"/}
|
||||||
|
{/block}
|
||||||
|
{block name="main"}{/block}
|
||||||
|
{block name="footer"}
|
||||||
|
{include file="public/footer"/}
|
||||||
|
{/block}
|
||||||
|
{block name="script"}{/block}
|
||||||
|
<script>
|
||||||
|
$(window).ready(function () {
|
||||||
|
// 为所有站内链接,添加标识
|
||||||
|
// 使用mtpl=1参数标识解决ipad访问站点时,从pc重定向到mobile每次页面都会pc - mobile闪现问题
|
||||||
|
var LURL = new URL(window.location.href);
|
||||||
|
if (LURL.searchParams.get('mtpl') == 1) {
|
||||||
|
$('a').each(function () {
|
||||||
|
var href = $(this).attr('href');
|
||||||
|
if (href) {
|
||||||
|
var origin = LURL.origin;
|
||||||
|
if (href.indexOf('http') == -1) {
|
||||||
|
href = new URL(href, origin);
|
||||||
|
href.searchParams.set('mtpl', '1');
|
||||||
|
$(this).attr('href', href);
|
||||||
|
} else {
|
||||||
|
href = new URL(href);
|
||||||
|
if (href.origin == origin) {
|
||||||
|
href.searchParams.set('mtpl', '1');
|
||||||
|
$(this).attr('href', href);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
72
app/index/view/mobile/public/footer.html
Normal file
72
app/index/view/mobile/public/footer.html
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<footer class="oircoEgapp-foot">
|
||||||
|
<div class="footer">
|
||||||
|
<div class="logo-white"><img src="__IMAGES__/logo-white.png"></div>
|
||||||
|
<div class="foot-cate">
|
||||||
|
<ul class="clearfix">
|
||||||
|
{notempty name="header_categorys"}
|
||||||
|
<li>
|
||||||
|
<h3>{:lang_i18n('产品')}</h3>
|
||||||
|
{volist name="header_categorys" id="hc"}
|
||||||
|
<p><a href="{:url('product/category', ['id' => $hc.id])}">{$hc.name}</a></p>
|
||||||
|
{/volist}
|
||||||
|
</li>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="footer_navigation"}
|
||||||
|
{volist name="footer_navigation" id="fn"}
|
||||||
|
<li>
|
||||||
|
<h3>{$fn.name}</h3>
|
||||||
|
{notempty name="fn.children"}
|
||||||
|
{volist name="fn.children" id="fnc"}
|
||||||
|
<p>
|
||||||
|
<a href="{$fnc.link}" {eq name="fnc.link" value="1"}target="_blank"{/eq} class="inline-block link-faded break-all">
|
||||||
|
{$fnc.name}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
<li>
|
||||||
|
<h3>{:lang_i18n('联系方式')}</h3>
|
||||||
|
{notempty name="contact_config.website_email"}
|
||||||
|
<p>{$contact_config.website_email.title}: {$contact_config.website_email.value}</p>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="contact_config.website_hotline_office_hours"}
|
||||||
|
<p>{$contact_config.website_hotline_office_hours.title}: {$contact_config.website_hotline_office_hours.value}</p>
|
||||||
|
{/notempty}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="foot-wei">
|
||||||
|
<div class="m_footer text_white m-in-top clearfix">
|
||||||
|
{notempty name="media_config"}
|
||||||
|
<div class="left">
|
||||||
|
{volist name="media_config" id="mc"}
|
||||||
|
<a href="{$mc.url.value}" target="_blank"><img src="{$mc.image.value}"></a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="header_languages"}
|
||||||
|
{volist name="header_languages" id="hl"}
|
||||||
|
{if condition="$hl.lang_code == cookie('think_lang')"}
|
||||||
|
<div class="right mask-up img-responsive foot-con top-country-toggle">
|
||||||
|
<img class="right-country" src="{$hl.lang_icon}">
|
||||||
|
<span>{$hl.lang_en_name}</span>
|
||||||
|
<img src="__IMAGES__/downicon.png">
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{notempty name="basic_config.website_powerby.value"}
|
||||||
|
<div class="copy-text">
|
||||||
|
{$basic_config.website_powerby.value}
|
||||||
|
{notempty name="$basic_config.website_icp"}
|
||||||
|
<a href="https://beian.miit.gov.cn/" style="color:white;">({$basic_config.website_icp.value})</a>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
161
app/index/view/mobile/public/header.html
Normal file
161
app/index/view/mobile/public/header.html
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
<header class="oircoEgapp-head">
|
||||||
|
<div class="headtop">
|
||||||
|
<a href="/"><img src="__IMAGES__/logo.png" class="headerlogimg" /></a>
|
||||||
|
<div class="action-r">
|
||||||
|
<div class="right img-responsive cursor_p">
|
||||||
|
<span class="icon-category cursor_p top-menu-toggle"><i class="icon-menu-svg"></i></span>
|
||||||
|
<span class="icon-keyword cursor_p top-search-toggle"><i class="icon-search-svg"></i></span>
|
||||||
|
<span class="mask-up cursor_p top-country-toggle"><i class="icon-lag-svg"></i></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 顶部菜单-->
|
||||||
|
<div class="top-menu">
|
||||||
|
<div class="it-ct">
|
||||||
|
<div class="it-1"><a href="/">{:lang_i18n('首页')}</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="it-ct">
|
||||||
|
<div class="it-1">
|
||||||
|
<div class="it-1-more">{:lang_i18n('产品列表')}<i class="icon-arrow"></i></div>
|
||||||
|
{notempty name="header_categorys"}
|
||||||
|
{volist name="header_categorys" id="ca"}
|
||||||
|
<div class="it-1-2"><a href="{:url('product/category', ['id' => $ca.id])}">{$ca.name}</a></div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{notempty name="header_navigation"}
|
||||||
|
{volist name="header_navigation" id="nav"}
|
||||||
|
<div class="it-ct">
|
||||||
|
<div class="it-1">
|
||||||
|
{empty name="nav.children"}
|
||||||
|
<a href="{$nav.link}">{$nav.name}</a>
|
||||||
|
{else/}
|
||||||
|
<div class="it-1-more">{$nav.name}<i class="icon-arrow"></i></div>
|
||||||
|
{volist name="nav.children" id="ch"}
|
||||||
|
<div class="it-1-2"><a href="{$ch.link}">{$ch.name}</a></div>
|
||||||
|
{/volist}
|
||||||
|
{/empty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
<!-- 顶部搜索-->
|
||||||
|
<div class="top-search">
|
||||||
|
<div class="marsk-container">
|
||||||
|
<div class="popup-quick">
|
||||||
|
<div class="ac-close float_r "><img src="__IMAGES__/close.png"></div>
|
||||||
|
<div class="search-in">
|
||||||
|
<form action="{:url('product/search')}" method="get">
|
||||||
|
<input type="text" name="keywords" placeholder="{:lang_i18n('产品')} USB 2.0...">
|
||||||
|
<button type="submit" id="search-btnput" class="search-button">{:lang_i18n('搜索')}</button>
|
||||||
|
</form>
|
||||||
|
<div class="title-text">
|
||||||
|
<p><a href="#">{:lang_i18n('搜索历史')}</a></p>
|
||||||
|
<div id="history"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 顶部国家选择-->
|
||||||
|
<div class="top-country">
|
||||||
|
<div class="mask"></div>
|
||||||
|
<div class="action-sheet">
|
||||||
|
<div class="menu-title">
|
||||||
|
<div class="menu-name">{:lang_i18n('请择地区')}</div>
|
||||||
|
<div class="close-icon">
|
||||||
|
<img src="__IMAGES__/close.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
{volist name="header_languages" id="la"}
|
||||||
|
<li>
|
||||||
|
<a href="{$la.lang_url}" target="_blank">
|
||||||
|
<img src="{$la.lang_icon}">{$la.country_en_name} - {$la.lang_en_name}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function() {
|
||||||
|
// 点击顶部菜单
|
||||||
|
$(".top-menu-toggle").click(function() {
|
||||||
|
$(".top-menu").slideToggle(800);
|
||||||
|
})
|
||||||
|
// 点击一级菜单显示二级菜单
|
||||||
|
$(".it-1-more").on("click", function() {
|
||||||
|
$('.it-1-2').hide();
|
||||||
|
$('.icon-arrow').removeClass('rotate');
|
||||||
|
$(this).siblings('.it-1-2').slideToggle(800);
|
||||||
|
$(this).find('.icon-arrow').addClass('rotate');
|
||||||
|
});
|
||||||
|
//点击搜索
|
||||||
|
$('.top-search-toggle').click(function() {
|
||||||
|
$(".marsk-container").show();
|
||||||
|
})
|
||||||
|
$('.ac-close').click(function() {
|
||||||
|
$(".marsk-container").hide();
|
||||||
|
})
|
||||||
|
// 顶部国家选择
|
||||||
|
$('.top-country-toggle').click(function(){
|
||||||
|
$(".mask,.action-sheet").show();
|
||||||
|
})
|
||||||
|
$('.top-country .close-icon').click(function(){
|
||||||
|
$(".mask,.action-sheet").hide();
|
||||||
|
})
|
||||||
|
|
||||||
|
// 移动端顶部宽度设置和主体内容宽度一致
|
||||||
|
var pageWidth = $('.oricoEGapp').outerWidth();
|
||||||
|
// 设置.header-PC元素的宽度
|
||||||
|
$('.oircoEgapp-head').css('width', pageWidth + 'px');
|
||||||
|
// 可选:监听窗口大小变化,实时更新宽度
|
||||||
|
$(window).resize(function() {
|
||||||
|
var newWidth = $('.oricoEGapp').outerWidth();
|
||||||
|
$('.oircoEgapp-head').css('width', newWidth + 'px');
|
||||||
|
});
|
||||||
|
|
||||||
|
// 回显搜索历史记录
|
||||||
|
history();
|
||||||
|
})
|
||||||
|
|
||||||
|
function history() {
|
||||||
|
var keywords = new URL(window.location.href).searchParams.get('keywords')
|
||||||
|
var history_keywords = localStorage.getItem('header_search_keywords');
|
||||||
|
if (!history_keywords) {
|
||||||
|
history_keywords = [];
|
||||||
|
} else {
|
||||||
|
history_keywords = JSON.parse(history_keywords);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 记录搜索关键词
|
||||||
|
if (keywords) {
|
||||||
|
if (history_keywords.includes(keywords)) {
|
||||||
|
history_keywords.splice(history_keywords.indexOf(keywords), 1);
|
||||||
|
}
|
||||||
|
history_keywords.unshift(keywords);
|
||||||
|
if (history_keywords.length > 3) {
|
||||||
|
history_keywords.pop();
|
||||||
|
}
|
||||||
|
localStorage.setItem('header_search_keywords', JSON.stringify(history_keywords));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回显搜索历史
|
||||||
|
history_keywords.forEach(function(item) {
|
||||||
|
$('#history').append(
|
||||||
|
$('<a>')
|
||||||
|
.css({
|
||||||
|
'margin-right': '10px'
|
||||||
|
})
|
||||||
|
.attr('href', '{:url("product/search")}?keywords=' + item)
|
||||||
|
.text(item)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
return history_keywords;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
112
app/index/view/mobile/public/nas_header.html
Normal file
112
app/index/view/mobile/public/nas_header.html
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
<header class="oircoEgapp-head">
|
||||||
|
<div class="headtop">
|
||||||
|
{eq name=":cookie('think_lang')" value="zh-cn"}
|
||||||
|
<a href="{:url('/index/topic/nas/index')}">
|
||||||
|
{else/}
|
||||||
|
<a>
|
||||||
|
{/eq}
|
||||||
|
<img src="__IMAGES__/logo.png" class="headerlogimg" />
|
||||||
|
</a>
|
||||||
|
<div class="action-r">
|
||||||
|
<div class="right img-responsive cursor_p">
|
||||||
|
<span class="icon-category cursor_p top-menu-toggle"><i class="icon-menu-svg"></i></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 顶部菜单-->
|
||||||
|
<div class="top-menu">
|
||||||
|
<div class="it-ct">
|
||||||
|
<div class="it-1"><a href="/">{:lang_i18n('首页')}</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="it-ct">
|
||||||
|
<div class="it-1">
|
||||||
|
<div class="it-1-more">{:lang_i18n('产品列表')}<i class="icon-arrow"></i></div>
|
||||||
|
{notempty name="header_categorys"}
|
||||||
|
{volist name="header_categorys" id="ca"}
|
||||||
|
<div class="it-1-2"><a href="{:url('product/category', ['id' => $ca.id])}">{$ca.name}</a></div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{notempty name="header_navigation"}
|
||||||
|
{volist name="header_navigation" id="nav"}
|
||||||
|
<div class="it-ct">
|
||||||
|
<div class="it-1">
|
||||||
|
{empty name="nav.children"}
|
||||||
|
<a href="{$nav.link}">{$nav.name}</a>
|
||||||
|
{else/}
|
||||||
|
<div class="it-1-more">{$nav.name}<i class="icon-arrow"></i></div>
|
||||||
|
{volist name="nav.children" id="ch"}
|
||||||
|
<div class="it-1-2"><a href="{$ch.link}">{$ch.name}</a></div>
|
||||||
|
{/volist}
|
||||||
|
{/empty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function() {
|
||||||
|
// 点击顶部菜单
|
||||||
|
$(".top-menu-toggle").click(function() {
|
||||||
|
$(".top-menu").slideToggle(800);
|
||||||
|
})
|
||||||
|
// 点击一级菜单显示二级菜单
|
||||||
|
$(".it-1-more").on("click", function() {
|
||||||
|
$('.it-1-2').hide();
|
||||||
|
$('.icon-arrow').removeClass('rotate');
|
||||||
|
$(this).siblings('.it-1-2').slideToggle(800);
|
||||||
|
$(this).find('.icon-arrow').addClass('rotate');
|
||||||
|
});
|
||||||
|
|
||||||
|
// 移动端顶部宽度设置和主体内容宽度一致
|
||||||
|
var pageWidth = $('.oricoEGapp').outerWidth();
|
||||||
|
// 设置.header-PC元素的宽度
|
||||||
|
$('.oircoEgapp-head').css('width', pageWidth + 'px');
|
||||||
|
// 可选:监听窗口大小变化,实时更新宽度
|
||||||
|
$(window).resize(function() {
|
||||||
|
var newWidth = $('.oricoEGapp').outerWidth();
|
||||||
|
$('.oircoEgapp-head').css('width', newWidth + 'px');
|
||||||
|
});
|
||||||
|
|
||||||
|
// 回显搜索历史记录
|
||||||
|
history();
|
||||||
|
})
|
||||||
|
|
||||||
|
function history() {
|
||||||
|
var keywords = new URL(window.location.href).searchParams.get('keywords')
|
||||||
|
var history_keywords = localStorage.getItem('header_search_keywords');
|
||||||
|
if (!history_keywords) {
|
||||||
|
history_keywords = [];
|
||||||
|
} else {
|
||||||
|
history_keywords = JSON.parse(history_keywords);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 记录搜索关键词
|
||||||
|
if (keywords) {
|
||||||
|
if (history_keywords.includes(keywords)) {
|
||||||
|
history_keywords.splice(history_keywords.indexOf(keywords), 1);
|
||||||
|
}
|
||||||
|
history_keywords.unshift(keywords);
|
||||||
|
if (history_keywords.length > 3) {
|
||||||
|
history_keywords.pop();
|
||||||
|
}
|
||||||
|
localStorage.setItem('header_search_keywords', JSON.stringify(history_keywords));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回显搜索历史
|
||||||
|
history_keywords.forEach(function(item) {
|
||||||
|
$('#history').append(
|
||||||
|
$('<a>')
|
||||||
|
.css({
|
||||||
|
'margin-right': '10px'
|
||||||
|
})
|
||||||
|
.attr('href', '{:url("product/search")}?keywords=' + item)
|
||||||
|
.text(item)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
return history_keywords;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
69
app/index/view/mobile/topic_nas/cooperation.html
Normal file
69
app/index/view/mobile/topic_nas/cooperation.html
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/topic_nas_cooperation.css">
|
||||||
|
{/block}
|
||||||
|
{block name="header"}
|
||||||
|
{include file="public/nas_header" /}
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<div class="narshzhbMbpage">
|
||||||
|
<!-- banner -->
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<div class="narshzhb-banner">
|
||||||
|
<img src="{$focus_image.image}" style="margin-top: 3.7rem;">
|
||||||
|
<!-- <div class="narshzhb-banner-content">
|
||||||
|
<span class="t1">{:lang_i18n('成为ORICO合作伙伴')}</span>
|
||||||
|
<h2><strong style="color: #004BFA;">NAS</strong>{:lang_i18n('合作伙伴招募')}</h2>
|
||||||
|
<div class="narshzhb-banner-btct">
|
||||||
|
<span>{:lang_i18n('广告代理')}</span>
|
||||||
|
<span>{:lang_i18n('抖音销售')}</span>
|
||||||
|
<span>{:lang_i18n('代理经销合作')}</span>
|
||||||
|
<span>{:lang_i18n('ODM合作')}</span>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- top 介绍 -->
|
||||||
|
{notempty name="cooperation_methods"}
|
||||||
|
{volist name="cooperation_methods" id="method" key="idx"}
|
||||||
|
<div class="narshzhbmb-cttop-it {neq name='idx' value='1'}narshzhbmb-cttop-it2{/neq}">
|
||||||
|
<img src="{$method.image}">
|
||||||
|
<div class="cts" {:style(['color' => $method.desc_txt_color])}>{$method.desc|raw}</div>
|
||||||
|
{eq name="idx" value="1"}
|
||||||
|
<h2 {:style(['color' => $method.title_txt_color])}>{$method.title}</h2>
|
||||||
|
{/eq}
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="cooperation_advantages"}
|
||||||
|
<h2 class="narshzhb-title">{:lang_i18n('合作优势')}</h2>
|
||||||
|
{assign name="cooperation_advantages_chunk" value=":array_chunk($cooperation_advantages, 2)" /}
|
||||||
|
{volist name="cooperation_advantages_chunk" id="adv"}
|
||||||
|
<div class="narshzhbmb-rowits">
|
||||||
|
{volist name="adv" id="it"}
|
||||||
|
<div class="narshzhbmb-item">
|
||||||
|
<img src="{$it.image}" class="hzhbappico">
|
||||||
|
<h3 class="hzhbapptitle" {:style(['color' => $it.title_txt_color])}>{$it.title}</h3>
|
||||||
|
<div class="srt" {:style(['color' => $it.desc_txt_color])}>{$it.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
<!-- 期待与您的合作 -->
|
||||||
|
{notempty name="cooperation_cotacts"}
|
||||||
|
<h2 class="narshzhb-title">{:lang_i18n('期待与您的合作')}</h2>
|
||||||
|
{assign name="cooperation_cotacts_flat" value=":array_flatten($cooperation_cotacts)" /}
|
||||||
|
{volist name="cooperation_cotacts_flat" id="ct" key="idx"}
|
||||||
|
<div class="narshzhbmb-rowits">
|
||||||
|
<div class="narshzhbmb-item narshzhbmb-item2">
|
||||||
|
<img src="{$ct.image}" class="hzhbappico">
|
||||||
|
<span class="srt" {:style(['color'=>$ct.title_txt_color])}>{$ct.title}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
89
app/index/view/mobile/topic_nas/download.html
Normal file
89
app/index/view/mobile/topic_nas/download.html
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/topic_nas_download.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="header"}
|
||||||
|
{include file="public/nas_header" /}
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<div class="narsDowloadPc">
|
||||||
|
{egt name=":count($data)" value="2"}
|
||||||
|
<div class="narsDtabs">
|
||||||
|
{notempty name="data.cyber"}
|
||||||
|
<div class="narsDtabIt narsDtabIt_active">{:lang_i18n('CyberData赛博云空间')}</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="data.weline"}
|
||||||
|
<div class="narsDtabIt">{:lang_i18n('Weline微链接')}</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{/egt}
|
||||||
|
<!-- 赛博云 -->
|
||||||
|
{notempty name="data.cyber"}
|
||||||
|
<div class="nDtopCtMian narssbshow" style="display: block;">
|
||||||
|
{notempty name="data.cyber.focus_image"}
|
||||||
|
<div class="nDtopIt">
|
||||||
|
<img src="{$data.cyber.focus_image.image}" class="tpimg">
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="data.cyber.down_items"}
|
||||||
|
<div class="nDtopIt2">
|
||||||
|
{volist name="data.cyber.down_items" id="it" length="4"}
|
||||||
|
<a class="nDitImg" {notempty name="it.link"}href="{$it.link}"{/notempty}>
|
||||||
|
<div class="nDitImg"><img src="{$it.image}"></div>
|
||||||
|
{eq name=":cookie('think_lang')" value="en-us"}
|
||||||
|
<div class="yy_name" {:style(['color'=>$it.title_txt_color])}>{$it.title}</div>
|
||||||
|
<div class="dwbt">Download</div>
|
||||||
|
{/eq}
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{volist name="data.cyber.down_items" id="it" offset="4"}
|
||||||
|
<a {notempty name="it.link"}href="{$it.link}"{/notempty}>
|
||||||
|
<div class="nDitImg nrowimg" style="margin-bottom: 25px;">
|
||||||
|
<img src="{$it.image}">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 微链接 -->
|
||||||
|
{notempty name="data.weline"}
|
||||||
|
<div class="nDtopCtMian narswljshow">
|
||||||
|
{notempty name="data.weline.focus_image"}
|
||||||
|
<div class="nDtopIt">
|
||||||
|
<img src="{$data.weline.focus_image.image}" class="tpimg">
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="data.weline.down_items"}
|
||||||
|
<div class="nDtopIt2" style="margin-bottom: 25px;">
|
||||||
|
{volist name="data.weline.down_items" id="it"}
|
||||||
|
<a class="nDitImg" {notempty name="it.link"}href="{$it.link}"{/notempty}>
|
||||||
|
<div class="nDitImg"><img src="{$it.image}"></div>
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('.narsDtabIt').click(function () {
|
||||||
|
$('.narsDtabIt').removeClass('narsDtabIt_active');
|
||||||
|
$(this).addClass('narsDtabIt_active');
|
||||||
|
if ($(this).index() === 0) {
|
||||||
|
$('.narssbshow').show();
|
||||||
|
$('.narswljshow').hide();
|
||||||
|
} else {
|
||||||
|
$('.narssbshow').hide();
|
||||||
|
$('.narswljshow').show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
137
app/index/view/mobile/topic_nas/help.html
Normal file
137
app/index/view/mobile/topic_nas/help.html
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/topic_nas_help.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="header"}
|
||||||
|
<!-- 重置header头为空 -->
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<div class="narshelpCenterPc-app">
|
||||||
|
<div class="headtop">
|
||||||
|
{eq name=":cookie('think_lang')" value="zh-cn"}
|
||||||
|
<a href="{:url('/index/topic/nas/index')}">
|
||||||
|
{else/}
|
||||||
|
<a>
|
||||||
|
{/eq}
|
||||||
|
<img src="__IMAGES__/logo.png" class="logoicoimg">
|
||||||
|
</a>
|
||||||
|
<img src="__IMAGES__/ssapp.png" class="ssicoimg">
|
||||||
|
</div>
|
||||||
|
<!-- banner -->
|
||||||
|
<img src="__IMAGES__/nhlpapp-banner.webp" class="nhlpbner">
|
||||||
|
<!-- 使用教程 -->
|
||||||
|
{notempty name="article_categorys"}
|
||||||
|
<h1 class="nhlpapp-title">{:lang_i18n('使用教程')}</h1>
|
||||||
|
{volist name="article_categorys" id="vo" key="idx"}
|
||||||
|
<div class="nhlpappit">
|
||||||
|
<div class="nhlptl">
|
||||||
|
<img src="{$vo.icon}" class="bhlpicoimg">{$vo.name}
|
||||||
|
</div>
|
||||||
|
<div class="nhlp-tx-list">
|
||||||
|
{volist name="vo.article" id="va"}
|
||||||
|
<a class="txrow" href="{:url('/index/topic/nas/help_detail', ['cid' => $vo.id,'id' => $va.id])}">
|
||||||
|
<div class="nhlp-point"></div>
|
||||||
|
<span class="nhlpsp">{$va.title}</span>
|
||||||
|
<span class="narhelpgoimg"><img src="__IMAGES__/nars-jt.png"></span>
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
{if condition="count($vo.article) >= 3"}
|
||||||
|
<a href="{:url('/index/topic/nas/help_detail', ['cid' => $vo.id, 'id' => isset($vo.article[0])?$vo.article[0]['id']:0, 'view' => 'more'])}">
|
||||||
|
<div class="ckgdbt">{:lang_i18n('查看更多')} <img src="__IMAGES__/nars-jt.png"></div>
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{/notempty}
|
||||||
|
<!-- 联系我们 -->
|
||||||
|
{notempty name="contacts"}
|
||||||
|
<h1 class="nhlpapp-title">{:lang_i18n('联系我们')}</h1>
|
||||||
|
<div class="nhlpapp-row">
|
||||||
|
{assign name="first_section" value=":array_splice($contacts, 0, count($contacts) - 3)"}
|
||||||
|
<div class="sec-1">
|
||||||
|
{volist name="first_section" id="co"}
|
||||||
|
<a class="nhlplxwmit" {notempty name="co.link"}href="{$co.link}"{/notempty}>
|
||||||
|
<img src="{$co.image}" class="lximg">
|
||||||
|
<span class="t1" {:style(['color'=>$co.title_txt_color])}>{$co.title}</span>
|
||||||
|
{notempty name="co.desc"}
|
||||||
|
<span class="t2" {:style(['color'=>$co.desc_txt_color])}>{$co.desc|raw}</span>
|
||||||
|
{/notempty}
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<div class="sec-2">
|
||||||
|
{volist name="contacts" id="co"}
|
||||||
|
<a class="nhlplxwmit nhlplxwmit-w1" {notempty name="co.link"}href="{$co.link}"{/notempty}>
|
||||||
|
<img src="{$co.image}" class="lximg">
|
||||||
|
<span class="t1" {:style(['color'=>$co.title_txt_color])}>{$co.title}<br></span>
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div class="nhlpapp-search">
|
||||||
|
<div class="nhlpappshtop">
|
||||||
|
<div class="nhlpapp-shdiv">
|
||||||
|
<input class="nhlp-ipt" id="search-input" placeholder="{:lang_i18n('请输入搜索关键字,如安装赛博云空间,影视库')}" autocomplete="off">
|
||||||
|
<img src="__IMAGES__/ssapp.png" class="searchimg">
|
||||||
|
</div>
|
||||||
|
<span class="closetx">{:lang_i18n('取消')}</span>
|
||||||
|
</div>
|
||||||
|
<div class="nhlpappline"></div>
|
||||||
|
<!-- 下拉搜索框 -->
|
||||||
|
<div class="dropdown" id="dropdown"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('.closetx').click(function () {
|
||||||
|
$('.nhlpapp-search').hide();
|
||||||
|
});
|
||||||
|
$('.ssicoimg').click(function () {
|
||||||
|
$('.nhlpapp-search').show();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
var timeout = null;
|
||||||
|
$('#search-input').on('focus input', function () {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
var _this = this;
|
||||||
|
timeout = setTimeout(function () {
|
||||||
|
var keywords = $(_this).val();
|
||||||
|
if (keywords == '') {
|
||||||
|
$('#dropdown').hide().html('');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
url: "{:url('/index/topic/nas/help_search')}",
|
||||||
|
type: 'POST',
|
||||||
|
data: { keywords: keywords },
|
||||||
|
dataType: 'JSON',
|
||||||
|
success: function (r) {
|
||||||
|
var html = '';
|
||||||
|
if (r.code == 0) {
|
||||||
|
html = '<ul>'
|
||||||
|
$.each(r.data, function (k, v) {
|
||||||
|
html += '<li><a class="search-item" href="{:url(\'/index/topic/nas/help_detail\')}?id=' + v.id + '">' + v.title + '</a></li>'
|
||||||
|
})
|
||||||
|
html += '</ul>'
|
||||||
|
}
|
||||||
|
$('#dropdown').show().html(html);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
$('.nhlplxwmit:not(:first)').hover(function () {
|
||||||
|
$(this).find('.lximg').show();
|
||||||
|
}, function () {
|
||||||
|
$(this).find('.lximg').show();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
147
app/index/view/mobile/topic_nas/help_detail.html
Normal file
147
app/index/view/mobile/topic_nas/help_detail.html
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="title"}
|
||||||
|
{notempty name="article.seo_title"}<title>{$article.seo_title}</title>{else /}{__BLOCK__}{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="seo"}
|
||||||
|
{notempty name="article.seo_keywords"}
|
||||||
|
<meta name="keywords" content="{$article.seo_keywords}" />
|
||||||
|
<meta name="description" content="{$article.seo_desc}" />
|
||||||
|
{else /}
|
||||||
|
{__BLOCK__}
|
||||||
|
{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/topic_nas_help-detail.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="header"}
|
||||||
|
<!-- 重置header头为空 -->
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<div class="narshelpCenterdetail-app">
|
||||||
|
<div class="headtop">
|
||||||
|
{eq name=":cookie('think_lang')" value="zh-cn"}
|
||||||
|
<a href="{:url('/index/topic/nas/index')}">
|
||||||
|
{else/}
|
||||||
|
<a>
|
||||||
|
{/eq}
|
||||||
|
<img src="__IMAGES__/logo.png" class="logoicoimg">
|
||||||
|
</a>
|
||||||
|
<div style="display: flex;">
|
||||||
|
<img src="__IMAGES__/fenlei.png" class="ssicoimg" id="flico">
|
||||||
|
<img src="__IMAGES__/sousuo.png" class="ssicoimg" id="ssico" style="margin-right:32px">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 文章内容 -->
|
||||||
|
<div id="rendered-content" class="nhlp-app-content">
|
||||||
|
{$article.content|raw|default=''}
|
||||||
|
</div>
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div class="nhlpapp-search">
|
||||||
|
<div class="nhlpappshtop">
|
||||||
|
<div class="nhlpapp-shdiv">
|
||||||
|
<input class="nhlp-ipt" id="search-input" placeholder="{:lang_i18n('请输入搜索关键字,如安装赛博云空间,影视库')}" autocomplete="off">
|
||||||
|
<img src="__IMAGES__/ssapp.png" class="searchimg">
|
||||||
|
</div>
|
||||||
|
<span class="closetx">{:lang_i18n('取消')}</span>
|
||||||
|
</div>
|
||||||
|
<div class="nhlpappline"></div>
|
||||||
|
<!-- 下拉搜索框 -->
|
||||||
|
<div class="dropdown" id="dropdown"></div>
|
||||||
|
</div>
|
||||||
|
<!-- 分类文章目录 -->
|
||||||
|
<div class="nhlpapp-pagescate" {:style(['display' => $Request.get.view == 'more' ? 'block' : 'none'])}>
|
||||||
|
<div class="nars-hlpdt-ml">
|
||||||
|
{notempty name="article_categorys"}
|
||||||
|
<div class="nav-tree">
|
||||||
|
{volist name="article_categorys" id="ac" key="idx"}
|
||||||
|
<div class="categoryhelp">
|
||||||
|
<div class="categoryhelp-title">
|
||||||
|
<div>
|
||||||
|
<img src="__IMAGES__/nars-jt.png" class="arrow {if condition='$ac.id == $Request.get.cid'}rotate{/if}">
|
||||||
|
</div>
|
||||||
|
<span>{$ac.name}</span>
|
||||||
|
</div>
|
||||||
|
<ul class="sub-list" {if condition='$ac.id == $Request.get.cid'}style="display: block;"{/if}>
|
||||||
|
{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;">
|
||||||
|
{$ar.title}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function () {
|
||||||
|
// 点击顶部分类图标
|
||||||
|
$('#flico').click(function () {
|
||||||
|
$('.nhlpapp-pagescate').toggle();
|
||||||
|
// 检查分类菜单是否显示
|
||||||
|
if ($('.nhlpapp-pagescate').is(':visible')) {
|
||||||
|
// 如果分类菜单显示,则隐藏文章内容
|
||||||
|
$('#rendered-content').hide();
|
||||||
|
$('.footer').hide()
|
||||||
|
} else {
|
||||||
|
// 如果分类菜单隐藏,则显示文章内容
|
||||||
|
$('#rendered-content').show();
|
||||||
|
$('.footer').show()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 点击分类的交互
|
||||||
|
$('.categoryhelp-title').click(function () {
|
||||||
|
$(this).next('.sub-list').slideToggle();
|
||||||
|
$(this).find('.arrow').toggleClass('rotate');
|
||||||
|
});
|
||||||
|
// 点击顶部搜索图标-点击取消关闭
|
||||||
|
$('#ssico').click(function () {
|
||||||
|
$('.nhlpapp-pagescate').hide();
|
||||||
|
$('.nhlpapp-search').show();
|
||||||
|
});
|
||||||
|
$('.closetx').click(function () {
|
||||||
|
$('.nhlpapp-search').hide();
|
||||||
|
});
|
||||||
|
// 搜索
|
||||||
|
var timeout = null;
|
||||||
|
$('#search-input').on('focus input', function () {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
var _this = this;
|
||||||
|
timeout = setTimeout(function () {
|
||||||
|
var keywords = $(_this).val();
|
||||||
|
if (keywords == '') {
|
||||||
|
$('#dropdown').hide().html('');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
url: "{:url('/index/topic/nas/help_search')}",
|
||||||
|
type: 'POST',
|
||||||
|
data: {
|
||||||
|
keywords: keywords
|
||||||
|
},
|
||||||
|
dataType: 'JSON',
|
||||||
|
success: function (r) {
|
||||||
|
var html = '';
|
||||||
|
if (r.code == 0) {
|
||||||
|
html = '<ul>'
|
||||||
|
$.each(r.data, function (k, v) {
|
||||||
|
html += '<li><a class="search-item" href="{:url(\'/index/topic/nas/help_detail\')}?id=' + v.id + '">' + v.title + '</a></li>'
|
||||||
|
})
|
||||||
|
html += '</ul>'
|
||||||
|
}
|
||||||
|
$('#dropdown').show().html(html);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
153
app/index/view/mobile/topic_nas/index.html
Normal file
153
app/index/view/mobile/topic_nas/index.html
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
{extend name="public/base"/}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/topic_nas_index.css">
|
||||||
|
{/block}
|
||||||
|
{block name="header"}
|
||||||
|
{include file="public/nas_header" /}
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="oricoEGapp">
|
||||||
|
<!-- 首页 -->
|
||||||
|
<div class="oricoCN-nasindex">
|
||||||
|
<div class="narsMBpage">
|
||||||
|
<!-- 轮播 banner -->
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<div class="narsMB-banner">
|
||||||
|
<div class="swiper-container narsMBbannerSwiper">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{volist name="focus_image" id="fo"}
|
||||||
|
<div class="swiper-slide">
|
||||||
|
<div class="narsMB-banner-st">
|
||||||
|
<h2></h2>
|
||||||
|
<span class="narsMB-bannersm"></span>
|
||||||
|
</div>
|
||||||
|
<a href="{$fo.link}"><img src="{$fo.image}" class="narsmb-img" /></a>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<!-- Add Pagination -->
|
||||||
|
<div class="swiper-pagination"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 九大模块分类 -->
|
||||||
|
{notempty name="nas_category"}
|
||||||
|
{assign name="categories" value=":array_flatten($nas_category)"/}
|
||||||
|
<div class="narsmb-cate">
|
||||||
|
{assign name="categories_idx1" value=":array_shift($categories)"/}
|
||||||
|
{notempty name="categories_idx1"}
|
||||||
|
<a class="{$categories_idx1.link}">
|
||||||
|
<img src="{$categories_idx1.image}" style="width:100%" />
|
||||||
|
</a>
|
||||||
|
{/notempty}
|
||||||
|
{assign name="categories_chunk" value=":array_chunk($categories, 2)"/}
|
||||||
|
{volist name="categories_chunk" id="chunk"}
|
||||||
|
<div class="narsmbcateits">
|
||||||
|
{volist name="chunk" id="cc"}
|
||||||
|
<a class="narsmbcate-it" href="{$cc.link}">
|
||||||
|
<img src="{$cc.image}" style="width:100%" />
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 视频 -->
|
||||||
|
{notempty name="nas_video"}
|
||||||
|
<div class="narsmbvd">
|
||||||
|
<video class="narsmbvideo" poster="{$nas_video.image}" controls autoplay loop muted>
|
||||||
|
<source type="video/mp4" src="{$nas_video.video}">
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 解决方案 -->
|
||||||
|
{notempty name="nas_solution"}
|
||||||
|
<div class="narsmb-jjfa">
|
||||||
|
<span class="narsmbjjfa-title"><span style="color:#084BFA">ORICO</span>{:lang_i18n('网络存储解决方案')}</span>
|
||||||
|
<div class="swiper narsmbjjfaSwiper">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{volist name="nas_solution" id="so"}
|
||||||
|
<div class="swiper-slide narsmbjjfa-slide">
|
||||||
|
<div class="narsmb-jjfa-ct" {:style(['color' => $so.title_txt_color])}>{$so.title}</div>
|
||||||
|
<img src="{$so.image}" class="narsmb-jjfabgimg" />
|
||||||
|
<!-- 点击移入效果-->
|
||||||
|
<div class="narsmb-jjfa-info" style="text-align:left;white-space:pre-line;">
|
||||||
|
<div class="box">
|
||||||
|
<p {:style(['color' => $so.title_txt_color])}>{$so.title}</p>
|
||||||
|
<div {:style(['color' => $so.desc_txt_color])}>{$so.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<!-- 微链接 -->
|
||||||
|
{notempty name="nas_software"}
|
||||||
|
<div class="narsmb-wlj">
|
||||||
|
<span class="narsmbwlj-title"><span style="color:#084BFA">NAS</span> {:lang_i18n('配套软件')}</span>
|
||||||
|
{volist name="nas_software" id="soft" offset="0" length="3"}
|
||||||
|
<div class="narsmbwltitem">
|
||||||
|
<div class="narsmbwljcp">
|
||||||
|
<img src="{$soft.image}" class="narsmbwljimg" />
|
||||||
|
</div>
|
||||||
|
<div class="narsmbwljcpinfo">
|
||||||
|
<span class="narsmbif-title" {:style(['color' => $soft.title_txt_color])}>{$soft.title}</span>
|
||||||
|
<span class="narsmbif-info" {:style(['color' => $soft.desc_txt_color])}>{$soft.desc|raw}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
{volist name="nas_software" id="soft" offset="3"}
|
||||||
|
<div class="narsmbwltitem">
|
||||||
|
<a style="height:100%;width:100%" {notempty name="soft.link"}href="{$soft.link}"{/notempty}>
|
||||||
|
<img src="{$soft.image}" style="height:100%;width:100%" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function () {
|
||||||
|
// banner轮播
|
||||||
|
var bannerswiper = new Swiper('.narsMBbannerSwiper', {
|
||||||
|
// 配置选项
|
||||||
|
loop: true,
|
||||||
|
autoplay: {
|
||||||
|
delay: 3000,
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
el: '.swiper-pagination',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 解决方案轮播
|
||||||
|
var swiper1 = new Swiper(".narsmbjjfaSwiper", {
|
||||||
|
slidesPerView: "auto",
|
||||||
|
spaceBetween: 6,
|
||||||
|
freeMode: true,
|
||||||
|
autoplay: 5000,
|
||||||
|
loop: true
|
||||||
|
});
|
||||||
|
// 解决方案轮播点击显示文案
|
||||||
|
var swiperSlides = document.querySelectorAll('.narsmbjjfa-slide');
|
||||||
|
// 为每个 swiper-slide 添加点击事件
|
||||||
|
swiperSlides.forEach(function (slide) {
|
||||||
|
slide.addEventListener('click', function () {
|
||||||
|
var infoElement = this.querySelector('.narsmb-jjfa-info');
|
||||||
|
if (window.getComputedStyle(infoElement).display === 'none') {
|
||||||
|
infoElement.style.display = 'flex';
|
||||||
|
swiper1.stopAutoplay()
|
||||||
|
} else {
|
||||||
|
infoElement.style.display = 'none';
|
||||||
|
swiper1.startAutoplay()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
61
app/index/view/mobile/topic_nas/product.html
Normal file
61
app/index/view/mobile/topic_nas/product.html
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/topic_nas_product.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="header"}
|
||||||
|
{include file="public/nas_header" /}
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="narsZTPC">
|
||||||
|
<div class="nZTtopCtMian narssbshow">
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<a {notempty name="focus_image.link"}href="{$focus_image.link}"{/notempty}>
|
||||||
|
<img src="{$focus_image.image}" class="narsZCimg">
|
||||||
|
</a>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="step"}
|
||||||
|
<div class="narsZTicos">
|
||||||
|
{volist name="step" id="st"}
|
||||||
|
<div class="nztit">
|
||||||
|
<img src="{$st.image}" class="narsicimg">
|
||||||
|
<span class="narsstep">{$st.title}</span>
|
||||||
|
<span class="narszttext">{$st.desc|raw}</span>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
{notempty name="trial_instructions"}
|
||||||
|
<div class="narsZTinfo">
|
||||||
|
<div class="nztif-left">
|
||||||
|
{volist name="trial_instructions" id="trial" offset="0" length="2"}
|
||||||
|
<div class="narsztewmit">
|
||||||
|
<a {notempty name="trial.link"}href="{$trial.link}" target="_blank"{/notempty}>
|
||||||
|
<img src="{$trial.image}" class="nztewmimg">
|
||||||
|
</a>
|
||||||
|
<p {:style(["color"=>$trial.title_txt_color])}>{$trial.title}</p>
|
||||||
|
<span {:style(["color"=>$trial.desc_txt_color])}>{$trial.desc|raw}</span>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
<div class="nztif-right">
|
||||||
|
{notempty name="trial_instructions.2"}
|
||||||
|
<span class="sysmtxt" {:style(["color"=>$trial_instructions.2.title_txt_color])}>
|
||||||
|
{$trial_instructions.2.title|default=''}
|
||||||
|
</span>
|
||||||
|
<div class="sminfo" {:style(["color"=>$trial_instructions.2.desc_txt_color])}>
|
||||||
|
{$trial_instructions.2.desc|raw|default=''}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="nztbzyj">
|
||||||
|
{volist name="trial_instructions" id="trial" offset="3"}
|
||||||
|
<a {notempty name="trial.link"}href="{$trial.link}" target="_blank"{/notempty}>
|
||||||
|
<span {:style(["color"=>$trial.title_txt_color])}>{$trial.title}</span>
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
71
app/index/view/pc/about_us/culture.html
Normal file
71
app/index/view/pc/about_us/culture.html
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="title"}
|
||||||
|
{notempty name=":lang_i18n('文化介绍')"}<title>{:lang_i18n('文化介绍')}</title>
|
||||||
|
{else/}{__BLOCK__}{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/aboutus_culture.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="__CSS__/animate.min.css" />
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="orico_Page_productxc">
|
||||||
|
<!--内容 -->
|
||||||
|
<div class="productxcMain">
|
||||||
|
{notempty name="focus_image"}
|
||||||
|
<a class="topimg" {notempty name="focus_image.link"}href="{$focus_image.link}"{/notempty}>
|
||||||
|
<img src="{$focus_image.image}">
|
||||||
|
</a>
|
||||||
|
{/notempty}
|
||||||
|
<div class="culture_top">
|
||||||
|
|
||||||
|
{notempty name="culture"}
|
||||||
|
<div class="culture_bril_con">
|
||||||
|
{volist name="culture" id="cul" offset="0" length="3"}
|
||||||
|
<div class="culture_bril_div animated fadeInUp">
|
||||||
|
<div class="iconimg"><img src="{$cul.image}"></div>
|
||||||
|
<div class="title">
|
||||||
|
<p>{$cul.title}</p>
|
||||||
|
</div>
|
||||||
|
<div class="subtitle">{$cul.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{notempty name="culture"}
|
||||||
|
<div class="culture_vision">
|
||||||
|
<div class="swt-Container">
|
||||||
|
<div class="title">
|
||||||
|
<!--Vision and Mission-->
|
||||||
|
</div>
|
||||||
|
{volist name="culture" id="cul" key="k" offset="3" mod="2"}
|
||||||
|
{eq name="mod" value="1"}
|
||||||
|
<div class="swt-Table img-responsive culture_vision_02">
|
||||||
|
<div id="tab{$k}" class="Table-Row">
|
||||||
|
<div class="Table-Cell left animated fadeInLeft">
|
||||||
|
<p class="subtitle">{$cul.title}</p>
|
||||||
|
<div class="des">{$cul.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
<div class="Table-Cell center"></div>
|
||||||
|
<div class="Table-Cell right animated fadeInRight"><img src="{$cul.image}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{else /}
|
||||||
|
<div class="swt-Table img-responsive">
|
||||||
|
<div id="tab{$k}" class="Table-Row">
|
||||||
|
<div class="Table-Cell left animated fadeInLeft"><img src="{$cul.image}"></div>
|
||||||
|
<div class="Table-Cell center"></div>
|
||||||
|
<div class="Table-Cell right animated fadeInRight">
|
||||||
|
<p class="subtitle">{$cul.title}</p>
|
||||||
|
<div class="des">{$cul.desc|raw}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/eq}
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{extend name="public/base" /}
|
{extend name="public/base" /}
|
||||||
{block name="title"}
|
{block name="title"}
|
||||||
{notempty name=":lang('aboutus_introduction.title')"}<title>{:lang('aboutus_introduction.title')}</title>{else/}{__BLOCK__}{/notempty}
|
{notempty name=":lang_i18n('品牌介绍')"}<title>{:lang_i18n('品牌介绍')}</title>{else/}{__BLOCK__}{/notempty}
|
||||||
{/block}
|
{/block}
|
||||||
{block name="style"}
|
{block name="style"}
|
||||||
<link rel="stylesheet" href="__CSS__/aboutus_introduction.css" />
|
<link rel="stylesheet" href="__CSS__/aboutus_introduction.css" />
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<img src="{$focus_image.image}" alt="" class="bdimg1">
|
<img src="{$focus_image.image}" alt="" class="bdimg1">
|
||||||
{/notempty}
|
{/notempty}
|
||||||
<div class="iotb_bgw">
|
<div class="iotb_bgw">
|
||||||
<h1 class="iotbt1">{:lang('aboutus_introduction.section_why_title')}</h1>
|
<h1 class="iotbt1">{:lang_i18n('选择我们的理由')}</h1>
|
||||||
<div class="iotb_part1">
|
<div class="iotb_part1">
|
||||||
{notempty name="why"}
|
{notempty name="why"}
|
||||||
{volist name="why" id="wh"}
|
{volist name="why" id="wh"}
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="iotb_part2" style="background: #fff;">
|
<div class="iotb_part2" style="background: #fff;">
|
||||||
<h1 class="iotbt1">{:lang('aboutus_introduction.section_service_title')}</h1>
|
<h1 class="iotbt1">{:lang_i18n('为您提供专属定制服务')}</h1>
|
||||||
{notempty name="service"}
|
{notempty name="service"}
|
||||||
{volist name="service" id="se"}
|
{volist name="service" id="se"}
|
||||||
<div class="fdimgs">
|
<div class="fdimgs">
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="iotb_part2" style="padding-bottom:0;background: #f2f2f2;">
|
<div class="iotb_part2" style="padding-bottom:0;background: #f2f2f2;">
|
||||||
<h1 class="iotbt1">{:lang('aboutus_introduction.section_difference_title')}</h1>
|
<h1 class="iotbt1">{:lang_i18n('对于不同的情况')}</h1>
|
||||||
{notempty name="difference"}
|
{notempty name="difference"}
|
||||||
{volist name="difference" id="diff"}
|
{volist name="difference" id="diff"}
|
||||||
<div class="fdimgs fdimgs1">
|
<div class="fdimgs fdimgs1">
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
{extend name="public/base" /}
|
{extend name="public/base" /}
|
||||||
{block name="style"}
|
{block name="style"}
|
||||||
<link rel="stylesheet" href="__CSS__/achievement.css" />
|
<link rel="stylesheet" href="__CSS__/aboutus_mileage.css" />
|
||||||
{/block}
|
{/block}
|
||||||
{block name="main"}
|
{block name="main"}
|
||||||
<div class="orico_Page_achievement">
|
<div class="orico_Page_achievement">
|
||||||
<div class="achievementMain">
|
<div class="achievementMain">
|
||||||
<img src="__IMAGES__/Achievement.png" class="acvImg" />
|
<img src="__IMAGES__/Achievement.png" class="acvImg" />
|
||||||
<div class="achInfo">
|
<div class="achInfo">
|
||||||
<div class="title">{:lang('aboutus_mileage.achievement')}</div>
|
<div class="title">{:lang_i18n('ORICO荣耀')}</div>
|
||||||
{notempty name="achievement"}
|
{notempty name="achievement"}
|
||||||
<div class="achNums">
|
<div class="achNums">
|
||||||
{volist name="achievement" id="ac"}
|
{volist name="achievement" id="ac"}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<div class="achTimes">
|
<div class="achTimes">
|
||||||
{notempty name="events"}
|
{notempty name="events"}
|
||||||
<div class="timecontent">
|
<div class="timecontent">
|
||||||
<div class="title">{:lang('aboutus_mileage.events')}</div>
|
<div class="title">{:lang_i18n('品牌里程')}</div>
|
||||||
<div class="timelist">
|
<div class="timelist">
|
||||||
<div class="timeline-time">
|
<div class="timeline-time">
|
||||||
<ul class="event_year">
|
<ul class="event_year">
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<div class="tech">
|
<div class="tech">
|
||||||
{notempty name="development"}
|
{notempty name="development"}
|
||||||
<div class="techcontent">
|
<div class="techcontent">
|
||||||
<div class="title">{:lang('aboutus_mileage.development')}</div>
|
<div class="title">{:lang_i18n('品牌活动')}</div>
|
||||||
{volist name="development" id="de"}
|
{volist name="development" id="de"}
|
||||||
<div class="techcon ">
|
<div class="techcon ">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{extend name="public/base" /}
|
{extend name="public/base" /}
|
||||||
{block name="title"}
|
{block name="title"}
|
||||||
<title>{:lang('aboutus_policy.title')}</title>
|
<title>{:lang_i18n('售后政策_注意事项')}</title>
|
||||||
{/block}
|
{/block}
|
||||||
{block name="style"}
|
{block name="style"}
|
||||||
<link rel="stylesheet" href="__CSS__/aboutus_policy.css">
|
<link rel="stylesheet" href="__CSS__/aboutus_policy.css">
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
{/notempty}
|
{/notempty}
|
||||||
</div>
|
</div>
|
||||||
{/notempty}
|
{/notempty}
|
||||||
<div class="lj_sale_policy">{:lang('aboutus_policy.banner_1_title')}</div>
|
<div class="lj_sale_policy">{:lang_i18n('售后政策')}</div>
|
||||||
<div class="lj_sale_t">{:lang('aboutus_policy.banner_1_desc')}</div>
|
<div class="lj_sale_t">{:lang_i18n('ORICO/奥睿科商城为您提供七天包退、15天换新、1年保修、终身维护的服务承诺')}</div>
|
||||||
<div class="swt-Container">
|
<div class="swt-Container">
|
||||||
<div class="lj_icon_l clearfix">
|
<div class="lj_icon_l clearfix">
|
||||||
{notempty name="policy.banner_1"}
|
{notempty name="policy.banner_1"}
|
||||||
@@ -47,8 +47,8 @@
|
|||||||
</div>
|
</div>
|
||||||
{/volist}
|
{/volist}
|
||||||
{/notempty}
|
{/notempty}
|
||||||
<div class="lj_three_policy">{:lang('aboutus_policy.banner_3_title')}</div>
|
<div class="lj_three_policy">{:lang_i18n('为了保障您的合法权益,敬请关注以下信息')}</div>
|
||||||
<div class="lj_t_small">{:lang('aboutus_policy.banner_3_desc')}</div>
|
<div class="lj_t_small">{:lang_i18n('为了得到深圳市元创时代科技有限公司给予您的“包修、包换、包退”的权益,请您:')}</div>
|
||||||
<div class="lj_policy_icon clearfix">
|
<div class="lj_policy_icon clearfix">
|
||||||
{notempty name="policy.banner_3"}
|
{notempty name="policy.banner_3"}
|
||||||
<ul>
|
<ul>
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{/volist}
|
{/volist}
|
||||||
{/notempty}
|
{/notempty}
|
||||||
<div class="lj_three_policy">{:lang('aboutus_policy.banner_5_title')}</div>
|
<div class="lj_three_policy">{:lang_i18n('特别说明')}</div>
|
||||||
<div class="lj_policy_four clearfix">
|
<div class="lj_policy_four clearfix">
|
||||||
{notempty name="policy.banner_5"}
|
{notempty name="policy.banner_5"}
|
||||||
<ul>
|
<ul>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{extend name="public/base" /}
|
{extend name="public/base" /}
|
||||||
{block name="style"}
|
{block name="style"}
|
||||||
<link rel="stylesheet" href="__CSS__/brand.css" />
|
<link rel="stylesheet" href="__CSS__/aboutus_story.css" />
|
||||||
{/block}
|
{/block}
|
||||||
{block name="main"}
|
{block name="main"}
|
||||||
<div class="orico_Page_brand">
|
<div class="orico_Page_brand">
|
||||||
162
app/index/view/pc/article/detail.html
Normal file
162
app/index/view/pc/article/detail.html
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
{extend name="public/base" /}
|
||||||
|
{block name="title"}
|
||||||
|
{notempty name="detail.seo_title"}<title>{$detail.seo_title}</title>{else /}{__BLOCK__}{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="seo"}
|
||||||
|
{notempty name="detail.seo_keywords"}
|
||||||
|
<meta name="keywords" content="{$detail.seo_keywords}" />
|
||||||
|
<meta name="description" content="{$detail.seo_desc}" />
|
||||||
|
{else /}
|
||||||
|
{__BLOCK__}
|
||||||
|
{/notempty}
|
||||||
|
{/block}
|
||||||
|
{block name="style"}
|
||||||
|
<link rel="stylesheet" href="__CSS__/article_detail.css">
|
||||||
|
{/block}
|
||||||
|
{block name="main"}
|
||||||
|
<div class="orico_Page_articleDetail">
|
||||||
|
<!--内容 -->
|
||||||
|
<div class="articleDetailMain">
|
||||||
|
<div class="atmleft">
|
||||||
|
<div class="ct">
|
||||||
|
<div class="blog_title">
|
||||||
|
<h2>{$detail.title}</h2>
|
||||||
|
<p>{$detail.release_time|date_format_i18n}</p>
|
||||||
|
</div>
|
||||||
|
<!-- 文本渲染-->
|
||||||
|
<div class="blog_content">{$detail.content|raw}</div>
|
||||||
|
</div>
|
||||||
|
<!-- 评论只显示前面五条--->
|
||||||
|
{notempty name="comments"}
|
||||||
|
<div class="plmain">
|
||||||
|
<div class="pl">
|
||||||
|
<span class="titlepp">{:lang_i18n('评论')}</span>
|
||||||
|
{volist name="comments" id="cm"}
|
||||||
|
<div class="plit">
|
||||||
|
<span class="name">{$cm.name}:</span>
|
||||||
|
<p>{$cm.content}</p>
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
<div class="atmright">
|
||||||
|
{notempty name="share_config"}
|
||||||
|
<div class="blog_share">
|
||||||
|
<h3>{:lang_i18n('分享')}</h3>
|
||||||
|
<div class="share_list">
|
||||||
|
{volist name="share_config" id="sc"}
|
||||||
|
<a class="atdit" {if condition="!empty($sc.is_blank) && $sc.is_blank.value == 1" }target="_blank" {/if} {notempty name="sc.url.value" }href="{$sc.url.value}" {/notempty}> <img src="{$sc.image.value}" />
|
||||||
|
{eq name=":array_key_exists('triggered_qrcode', $sc)" value="true"}
|
||||||
|
<div class="triggered_qrcode">
|
||||||
|
<img src="{$sc.triggered_qrcode.value}" />
|
||||||
|
</div>
|
||||||
|
{/eq}
|
||||||
|
</a>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
<div class="repply">
|
||||||
|
<h3>{:lang_i18n('留言')}</h3>
|
||||||
|
<form action="{:url('article/comment', ['id' => $detail.id])}" method="POST" autocomplete="off">
|
||||||
|
<span>{:lang_i18n('名称')}</span>
|
||||||
|
<input class="form-control itinp new_name" type="text" name="name" style="text-indent: 10px;">
|
||||||
|
<span>{:lang_i18n('电子邮箱')}</span>
|
||||||
|
<input class="form-control itinp new_email" type="email" name="email" style="text-indent: 10px; margin-bottom:0;">
|
||||||
|
<p style="color: #C6C7C9; font-size: 0.75rem; margin-bottom: 0.625rem;">{:lang_i18n('您的电子邮件地址不会被公开')}</p>
|
||||||
|
<span>{:lang_i18n('留言内容')}</span>
|
||||||
|
<textarea class="form-control itinp new_comment" name="content" rows="3" style="text-indent: 10px;width: 98%; margin-top: 0.625rem;margin-bottom: 0.625rem;border: 1px solid #DBDBDB;"></textarea>
|
||||||
|
<div class="comment_btn" style="color:#ffffff;">{:lang_i18n('提交留言')}</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{notempty name="$recommends"}
|
||||||
|
<div class="xq">
|
||||||
|
<!-- 猜您喜欢 -->
|
||||||
|
<div class="love">
|
||||||
|
<div class="love1">
|
||||||
|
<p class="tt">{:lang_i18n('你可能还喜欢')}</p>
|
||||||
|
<p><img src="__IMAGES__/1line.png" height="7"></p>
|
||||||
|
</div>
|
||||||
|
<ul class="love2">
|
||||||
|
{volist name="recommends" id="vo"}
|
||||||
|
<li>
|
||||||
|
<a href="{:url('article/detail', ['id' => $vo.id])}">
|
||||||
|
<div class="lvimg"><img src="{$vo.image}"></div>
|
||||||
|
<p class="lvtit">{$vo.title}</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/volist}
|
||||||
|
<div class="clear"></div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/notempty}
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
{block name="script"}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('.comment_btn').click(function () {
|
||||||
|
var form = $(this).parents('form');
|
||||||
|
var form_data = form.serialize();
|
||||||
|
$.ajax({
|
||||||
|
url: form.attr('action'),
|
||||||
|
type: 'POST',
|
||||||
|
data: form_data,
|
||||||
|
dataType: 'json',
|
||||||
|
success: function (data) {
|
||||||
|
alert(data.msg);
|
||||||
|
if (data.code == 0) {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
// 滚动到猜你喜欢部分,右边提交信息不固定
|
||||||
|
// 获取视口高度
|
||||||
|
|
||||||
|
// 保存原始样式
|
||||||
|
const originalAlign = $(".orico_Page_articleDetail .articleDetailMain").css("align-items");
|
||||||
|
$(document).on("scroll", function () {
|
||||||
|
const viewportHeight = $(this).height();
|
||||||
|
// 获取当前滚动距离
|
||||||
|
const scrollTop = $(this).scrollTop();
|
||||||
|
$(".xq").each(function () {
|
||||||
|
const $el = $(this);
|
||||||
|
const elTop = $el.offset().top;
|
||||||
|
const elHeight = $el.outerHeight();
|
||||||
|
// 元素底部距离视口顶部还有 50px 时触发动画
|
||||||
|
const triggerPosition = scrollTop + viewportHeight;
|
||||||
|
if (scrollTop > $('.orico_Page_articleDetail').height() - 350 - 900) {
|
||||||
|
$(".atmright").css("position", "static");
|
||||||
|
$(".orico_Page_articleDetail .articleDetailMain").css("align-items", "flex-end");
|
||||||
|
} else {
|
||||||
|
// 还原原始样式
|
||||||
|
$(".atmright").removeAttr("style"); // 清除自定义样式
|
||||||
|
$(".orico_Page_articleDetail .articleDetailMain").css("align-items",
|
||||||
|
originalAlign);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
function shareCustomers() {
|
||||||
|
// 复制到粘贴板
|
||||||
|
const input = document.createElement('input')
|
||||||
|
input.setAttribute('readonly', 'readonly')
|
||||||
|
let url = window.location.href
|
||||||
|
input.setAttribute('value', url)
|
||||||
|
document.body.appendChild(input)
|
||||||
|
input.select()
|
||||||
|
if (document.execCommand('copy')) {
|
||||||
|
document.execCommand('copy')
|
||||||
|
alert("{:lang_i18n('链接复制成功')}")
|
||||||
|
}
|
||||||
|
document.body.removeChild(input)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{/block}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{extend name="public/base" /}
|
{extend name="public/base" /}
|
||||||
{block name="style"}
|
{block name="style"}
|
||||||
<link rel="stylesheet" type="text/css" href="__CSS__/article_category.css" />
|
<link rel="stylesheet" type="text/css" href="__CSS__/article_index.css" />
|
||||||
{/block}
|
{/block}
|
||||||
{block name="main"}
|
{block name="main"}
|
||||||
<div class="orico_Page_category">
|
<div class="orico_Page_category">
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
<div class="categorySearch">
|
<div class="categorySearch">
|
||||||
<form action="{:url('article/index', ['pid' => $Request.param.pid])}" method="get">
|
<form action="{:url('article/index', ['pid' => $Request.param.pid])}" method="get">
|
||||||
<i class="search_icon"></i>
|
<i class="search_icon"></i>
|
||||||
|
<input type="hidden" name="cid" value="{$Request.param.cid}" />
|
||||||
<input type="text" class="search" id="article-search-in" name="keywords" value="">
|
<input type="text" class="search" id="article-search-in" name="keywords" value="">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -36,12 +37,15 @@
|
|||||||
<img src="{$ar.image}" />
|
<img src="{$ar.image}" />
|
||||||
<h3>{$ar.title}</h3>
|
<h3>{$ar.title}</h3>
|
||||||
<p>{$ar.desc}</p>
|
<p>{$ar.desc}</p>
|
||||||
|
<p>{$ar.release_time|date_format_i18n}</p>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{/volist}
|
{/volist}
|
||||||
</div>
|
</div>
|
||||||
<!-- 分页-->
|
<!-- 分页-->
|
||||||
<div>{$articles|raw}</div>
|
<div>{$articles|raw}</div>
|
||||||
|
{else/}
|
||||||
|
<div style="text-align: center; padding: 10%;">暂无数据</div>
|
||||||
</div>
|
</div>
|
||||||
{/notempty}
|
{/notempty}
|
||||||
</div>
|
</div>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{extend name="public/base" /}
|
{extend name="public/base" /}
|
||||||
{block name="style"}
|
{block name="style"}
|
||||||
<link rel="stylesheet" href="__CSS__/download.css" />
|
<link rel="stylesheet" href="__CSS__/attachment_index.css" />
|
||||||
{/block}
|
{/block}
|
||||||
{block name="main"}
|
{block name="main"}
|
||||||
<div class="orico_Page_download">
|
<div class="orico_Page_download">
|
||||||
@@ -8,14 +8,14 @@
|
|||||||
<div class="downloadMain">
|
<div class="downloadMain">
|
||||||
<div class="topimg">
|
<div class="topimg">
|
||||||
<img src="__IMAGES__/banner_01.png" />
|
<img src="__IMAGES__/banner_01.png" />
|
||||||
<div class="banner_title">{:lang('attachment.software_drives')}</div>
|
<div class="banner_title">{:lang_i18n('软件和驱动程序')}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="contact_c">
|
<div class="contact_c">
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<form action="{:url('attachment/index')}" method="get">
|
<form action="{:url('attachment/index')}" method="get">
|
||||||
<div class="search_all">
|
<div class="search_all">
|
||||||
<input type="hidden" name="id" value="{$Request.get.id}" />
|
<input type="hidden" name="id" value="{$Request.get.id}" />
|
||||||
<input type="text" name="keyword" placeholder="{:lang('attachment.search_placeholder')}" />
|
<input type="text" name="keyword" placeholder="{:lang_i18n('搜索')}" />
|
||||||
<button class="searchbtn" type="submit"><img src="__IMAGES__/search_blue.png" /></button>
|
<button class="searchbtn" type="submit"><img src="__IMAGES__/search_blue.png" /></button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
</a>
|
</a>
|
||||||
{/volist}
|
{/volist}
|
||||||
{/notempty}
|
{/notempty}
|
||||||
<a href="{:url('attachment/video')}"><div class="tabit">{:lang('attachment.video')}</div></a>
|
<a href="{:url('attachment/video')}"><div class="tabit">{:lang_i18n('视频')}</div></a>
|
||||||
</div>
|
</div>
|
||||||
<!-- 切换的内容 -->
|
<!-- 切换的内容 -->
|
||||||
<div class="softlist">
|
<div class="softlist">
|
||||||
@@ -46,9 +46,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p class="title">{$att.name}</p>
|
<p class="title">{$att.name}</p>
|
||||||
<p class="sub_title">{:lang('attachment.support_model')}: </p>
|
<p class="sub_title">{:lang_i18n('支持型号')}: </p>
|
||||||
<p class="des">{$att.applicable_to}</p>
|
<p class="des">{$att.applicable_to}</p>
|
||||||
<p class="sub_title">{:lang('attachment.support_platform')}: </p>
|
<p class="sub_title">{:lang_i18n('支持系统')}: </p>
|
||||||
<p class="des">{$att.support_platform}</p>
|
<p class="des">{$att.support_platform}</p>
|
||||||
<p>
|
<p>
|
||||||
{notempty name="att.attach"}
|
{notempty name="att.attach"}
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
{/volist}
|
{/volist}
|
||||||
<div class="page-box">{$page|raw}</div>
|
<div class="page-box">{$page|raw}</div>
|
||||||
{else/}
|
{else/}
|
||||||
<div class="softit">{:lang('attachment.no_data')}</div>
|
<div class="softit">{:lang_i18n('查询无结果!')}</div>
|
||||||
{/notempty}
|
{/notempty}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{extend name="public/base" /}
|
{extend name="public/base" /}
|
||||||
{block name="style"}
|
{block name="style"}
|
||||||
<link rel="stylesheet" href="__CSS__/download.css" />
|
<link rel="stylesheet" href="__CSS__/attachment_index.css" />
|
||||||
{/block}
|
{/block}
|
||||||
{block name="main"}
|
{block name="main"}
|
||||||
<div class="orico_Page_download">
|
<div class="orico_Page_download">
|
||||||
@@ -8,13 +8,14 @@
|
|||||||
<div class="downloadMain">
|
<div class="downloadMain">
|
||||||
<div class="topimg">
|
<div class="topimg">
|
||||||
<img src="__IMAGES__/banner_01.png" />
|
<img src="__IMAGES__/banner_01.png" />
|
||||||
<div class="banner_title">{:lang('attachment.software_drives')}</div>
|
<div class="banner_title">{:lang_i18n('软件和驱动程序')}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="contact_c">
|
<div class="contact_c">
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<form action="{:url('attachment/video')}" method="get">
|
<form action="{:url('attachment/video')}" method="get">
|
||||||
<div class="search_all">
|
<div class="search_all">
|
||||||
<input type="text" name="keyword" placeholder="{:lang('attachment.search_placeholder')}" />
|
<input type="hidden" name="id" value="{$Request.get.id}" />
|
||||||
|
<input type="text" name="keyword" placeholder="{:lang_i18n('搜索')}" />
|
||||||
<button class="searchbtn" type="submit"><img src="__IMAGES__/search_blue.png" /></button>
|
<button class="searchbtn" type="submit"><img src="__IMAGES__/search_blue.png" /></button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@@ -29,7 +30,9 @@
|
|||||||
</a>
|
</a>
|
||||||
{/volist}
|
{/volist}
|
||||||
{/notempty}
|
{/notempty}
|
||||||
<div class="tabit on">{:lang('attachment.video')}</div>
|
<a>
|
||||||
|
<div class="tabit on">{:lang_i18n('视频')}</div>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<!-- VIDEO 切换 -->
|
<!-- VIDEO 切换 -->
|
||||||
<div class="vidotabs">
|
<div class="vidotabs">
|
||||||
@@ -69,7 +72,7 @@
|
|||||||
{/volist}
|
{/volist}
|
||||||
<div class="page-box">{$page|raw}</div>
|
<div class="page-box">{$page|raw}</div>
|
||||||
{else/}
|
{else/}
|
||||||
<ul><dl class="video-empty">{:lang('attachment.no_video')}</dl></ul>
|
<ul><dl class="video-empty">{:lang_i18n('查询无此视频!')}</dl></ul>
|
||||||
{/notempty}
|
{/notempty}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user