1export default {"/404":"<div id=\"app\" page-type=\"404\">\n\t<div style=\"font-size: 1000px;\">\n\t\t<img class=\"div_img\" src=\"https://img.yfisher.com/1607493270519.svg\">\n\t\t<div class=\"div_404\">\n\t\t\t<div class=\"div_404_title\">404</div>\n\t\t</div>\n\t\t<div class=\"div_404_title\">you may have mistyped the address or the page may have moved</div>\n\t</div>\n</div>\n<style>\n\tdiv#app {\n\t\ttext-align: center;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\theight: 100%;\n\t}\n\n\t.div_404_title {\n\t\tfont-size: 2rem;\n\t\tfont-weight: 100;\n\t\tpadding: 20px 0;\n\t}\n\n\t.div_img {\n\t\twidth: 30rem;\n\t\theight: auto;\n\t}\n</style>","/index":"<?- body -?>","/layout/app":"<?\n const arr = [site.site_config?.knowledge_website_help_center_switch, site.site_config?.knowledge_kefu_switch]\n const buttomFixed = arr.filter(i => i).length * 66\n // è®¡ç® social-media-chat 䏿¹å¾æ çå®ä½åç§»é\n let isChat = site.site_plugins && (site.site_plugins.filter(p => p.status === 1).length > 0)\n let hasInquiry = site.site_inquiry.status\n let needInquiry = site.site_config?.chat_inquiry_switch != 0\n let pluginsList = site.site_plugins.filter((item,index) => item.status === 1)\n let socialHeight = 0\n if (isChat || hasInquiry) {\n if (!hasInquiry && pluginsList.length > 0 || !needInquiry) {\n socialHeight += pluginsList.length * 66\n }\n if (hasInquiry) {\n socialHeight += 60\n }\n }\n if (socialHeight) socialHeight += 10\n?>\n<div package-group=\"block\">\n <?\n const blockNameList = ['header', 'breadcrumb', 'info', 'main', 'extend', 'footer', 'copyright']\n blockNameList.forEach(blockName => {\n const thisBlock = ctx.state.template.block[blockName]\n if (thisBlock && !thisBlock.hide) {\n -?><?- include(getViewsPath('/layout/block'), { package: thisBlock }) ?><?\n }\n })\n -?>\n</div>\n\n<? if(!ctx.state.postCtxState) { -?>\n<style>\n [package-group=\"widget\"]{\n --FAQ-B:<?-buttomFixed-?>px;\n --social-height:<?-socialHeight-?>px;\n }\n @media (max-width:768px){\n [package-group=\"widget\"]{\n --social-height:<?- hasInquiry ? 70 : 0 -?>px;\n }\n }\n</style>\n<div package-group=\"widget\">\n <? if (site.site_config.product_multi_inquiry_switch && ctx.state.page.page_type !== 'landing_page') { ?>\n <div package-item=\"widget\" package-widget-type=\"quote-list\">\n <?- include(getViewsPath(`/package/widget/quote-list`), {}) -?>\n </div>\n <? } ?>\n <div package-item=\"widget\" package-widget-type=\"product-lives\">\n <div class=\"widget-product-lives-wrap\">\n <a title=\"Product Lives\" href=\"/product-lives.html\">\n <img alt=\"Product Lives\" lazy-src=\"/assets/images/product-lives.webp\">\n </a>\n </div>\n </div>\n <div package-item=\"widget\" package-widget-type=\"social-media-chat\">\n <?- include(getViewsPath(`/package/widget/social-media-chat`), {}) -?>\n </div>\n <div package-item=\"widget\" package-widget-type=\"ai-chat\">\n <?- include(getViewsPath(`/package/widget/ai-chat`), {}) -?>\n </div>\n <div package-item=\"widget\" package-widget-type=\"toTop\">\n <div class=\"\" id=\"widget-toTop\">\n <div class=\"widget-toTop-wrap\">\n <div class=\"widget-toTop-btn\">\n <span class=\"iconfont icon-action-top\"></span>\n </div>\n </div>\n </div>\n </div>\n <? if (site.cookie_status && ((ctx.state.page.page_type !== 'landing_page' && ctx.state.site.site_config.site_cookie_switch) || (ctx.state.page.page_type === 'landing_page' && ctx.state.site.site_config.ads_cookie_switch))) { -?>\n <div package-item=\"widget\" package-widget-type=\"cookie-sett
1ings\">\n <?- include(getViewsPath(`/package/widget/cookie-settings`), {}) -?>\n </div>\n <? } -?>\n</div>\n<? } -?>\n","/layout/base":"<? if (!package.type) return ?>\n<?- include(getViewsPath(`/package/base/${package.type}`), { config: package.config || {} }) -?>","/layout/block":"<?\nconst display_status = package.getDisplayStatus()\nlet is_clear = display_status === ' hide-phone hide-pad hide-pc'\nif (ctx.query.design) {\n is_clear = false\n}\nlet floatTopInside = package.float_top_inside\nif (package.type === 'header' && floatTopInside === 1) {\n const allColumn = package.float_column\n if (allColumn.length && page.page_category_id) {\n if (allColumn.includes(page.page_category_id)) floatTopInside = 1\n else floatTopInside = 0\n }\n if ([\"product_detail\", \"article_detail\", \"video_detail\", \"ai_product_detail\", \"ai_article_detail\", \"polymerize_product_detail\", \"polymerize_article_detail\", \"polymerize_multiple_detail\", \"polymerize_tag_detail\", \"store_detail\", \"faq_detail\", \"register\", \"login\", \"findpwd\", \"search\", \"cart\", \"checkout\", \"complete\", \"user\", \"affiliate\", \"affiliate2\", \"ai_product_detail\", \"polymerize_tag_detail\", \"content_tag\", \"all_video\", \"store_detail\",\"sitemap\",\"sitemap_products\",\"sitemap_articles\",\"sitemap_videos\",\"sitemap_derivative_products\",\"sitemap_topics_blogs\",\"404\",\"doc_terms_and_conditions\",\"doc_privacy_policy\",\"multi_language\"].includes(page.page_type)) floatTopInside = 0\n}\n?>\n<? if (!is_clear) { ?>\n<div id=\"<?= package.attr_id ?>\" package-item=\"block\" <?- package.type === 'header' ? `float-top=\"${package.float_top}\" bg-transparent=\"${package.bg_transparent}\" float-top-inside=\"${floatTopInside}\" bg-transparent-inside=\"${package.bg_transparent_inside}\" customer-inside=\"${package.customer_inside}\" class=\"` + (ctx.query.design ? '' : 'header-position') + `\"` : '' ?> package-type=\"<?= package.type ?>\" package-block-type=\"<?= package.type ?>\" position=\"<?= package.position ?>\" position-index=\"<?= package.position_index ?>\" <?- package.getLazyBGString() ?> <?- display_status ?>>\n <div package-group=\"module\">\n <? package.children.forEach(info => { -?>\n <?- include(getViewsPath(`/layout/module`), { package:info }) -?>\n <? }) -?>\n </div>\n\n<? if(package.type === 'header' && ctx.state.m_list_sorts?.length && !ctx.state.m_list_sorts[Symbol.for('renderred')]) {\n // <<<ç§»å¨ç«¯å¤´é¨å¯¼èª\n ctx.state.m_list_sorts[Symbol.for('renderred')] = true;\n ctx.state.m_list_sorts.forEach((pkg) => {\n?>\n<?- include(getViewsPath(`/package/unit/list_sort_m`), { package: pkg }) -?>\n<?\n })}\n // ç§»å¨ç«¯å¤´é¨å¯¼èª END>>>\n?>\n\n</div>\n<? } ?>\n","/layout/cell":"<? \nconst display_status = package.getDisplayStatus()\nlet is_clear = display_status === ' hide-phone hide-pad hide-pc'\nif (ctx.query.design) {\n is_clear = false\n}\n/**\n * fix: å½cell设置äºdisplay:flex\n * 1. childrenä¸å¸¦æè½®æææçç»ä»¶ä¼æº¢åºå®½åº¦;\n * 2. å¾çåºå®å®½é«æ¯æ¶, è·åç¶å
ç´ å®½åº¦ä¸æ£ç¡®å¯¼è´å è½½å¾çåå°(è·lazyImg.jsä¸çå¾ç转æ¢é»è¾ç¸å
³);\n */\nconst has_list = package.children.some(info => {\n if (/list$/.test(info.type) || ['image', 'graph', 'video-popup', 'product-detail'].includes(info.type)) {\n return true\n }\n})\nvar tab_panel_info = tab_panel_info || []\n?>\n<? if (!is_clear) { ?>\n<div id=\"<?= package.attr_id ?>\" package-item=\"cell\" class=\"col col-<?= package.cols_col || 12 ?> col-md-<?= package.cols_md ?> col-xl-<?= package.cols_xl ?>\" <?- package.getLazyBGString() ?> <?- display_status ?>>\n <div package-group=\"unit\" class=\"<?= has_list ? 'cell-has-list' : '' -?>\">\n <? package.children.forEach(info => { -?>\n <?- include(getViewsPath(`/layout/unit`), { package: info, tab_panel_info }) -?>\n <? }) -?>\n </div>\n</div>\n<? } ?>","/layout/grid":"<? \nconst display_status = package.getDisplayStatus()\nlet is_clear = display_status === ' hide-phone hide-pad hide-pc'\nif (ctx.query.design) {\n is_clear = false\n}\nvar tab_panel_info = tab_panel_info || []\n?>\n<? if (!is_clear) { ?>\n<div id=\"<?= package.attr_id ?>\" package-item=\"grid\" class=\"container <?= page.transfer_product_id ? '' : package.is_fluid ? 'container-fluid' : '' ?>\" <?- package.tab_key ? 'tab-key=\"#' + package.tab_key + '\"' : ''?> <?- package.getLazyBGString() ?>
1 <?- display_status ?>>\n <div package-group=\"cell\" class=\"row no-gutters\">\n <? package.children.forEach(info => { -?>\n <?- include(getViewsPath(`/layout/cell`), { package:info, tab_panel_info }) -?>\n <? }) -?>\n </div>\n</div>\n<? } ?>","/layout/module":"<?\nlet module_code = ''\nlet pop_up_class = package.code.indexOf('pop-up') !== -1 ? 'hiddent-pop_up' : ''\nlet is_collected = 0\nconst display_status = package.getDisplayStatus()\nlet is_clear = display_status === ' hide-phone hide-pad hide-pc'\nif (ctx.query.design) {\n is_clear = false\n module_code = package.code\n is_collected = package.is_collected\n} else if (package.code.indexOf('pop-up') !== -1) {\n is_clear = false\n}\nconst tab_panel_info = []\nconst package_filtered = []\nlet hasOneTabKey = false\nlet hasProductSortM = false\nif(package.code.indexOf('product')>-1){\n hasProductSortM = true\n}\npackage.children.forEach(info => {\n if (info.tab_key && /^module\\/tabs/.test(ctx.query.render)) {\n // éæ©æ¨¡åé¢è§æ¶ï¼æ¾ç¤ºç¬¬ä¸ä¸ªtab_panel\n if (!hasOneTabKey) {\n hasOneTabKey = true\n package_filtered.push(info)\n } else {\n tab_panel_info.push(info)\n }\n } else if (info.tab_key && !ctx.query.render) {\n tab_panel_info.push(info)\n } else {\n // tabs å
é¨éæ©ç»ä»¶ï¼grid渲æå¨å¤é¨æè½æ¾ç¤º\n package_filtered.push(info)\n }\n})\n\n?>\n<? if (!is_clear) { ?>\n<div id=\"<?= package.attr_id ?>\" class=\"<?= (package.tab_key && !/^column-tab-panel-item__0/.test(package.tab_key) && !ctx.query.render)? 'd-none' : '' ?> <?= pop_up_class ? pop_up_class : '' ?>\" package-item=\"module\" <?- package.tab_key ? 'tab-key=\"#' + package.tab_key + '\"' : ''?> <?- package.getLazyBGString() ?> <?- display_status ?> <?= package.is_show_top ? 'is-show-top=' + package.is_show_top : '' ?> <?= is_collected ? 'is-collected=' + is_collected : '' ?> <?- package.name ? 'anchor-name=\"#' + package.name + '\"' : ''?> <?= module_code ? 'code=' + module_code : '' ?>>\n <? if (hasProductSortM) { ?>\n <? if(ctx.state.has_product_sort_m) {\n ?>\n <?- include(getViewsPath(`/package/unit/product-sort-m`),{ package: package }) -?>\n <?\n ctx.state.has_product_sort_m = false\n }\n ?>\n <? } -?>\n <div package-group=\"grid\" style=\"width: 100%;\">\n <? package_filtered.forEach(info => { -?>\n <?- include(getViewsPath(`/layout/grid`), { package:info, tab_panel_info: tab_panel_info }) -?>\n <? }) -?>\n </div>\n</div>\n<? } ?>\n","/layout/package":"{\n \"site\": <?- JSON.stringify(site) ?>,\n \"page\": <?- JSON.stringify(page) ?>,\n \"packages\": <?- JSON.stringify(packages) ?>,\n \"data\": <?- JSON.stringify(data) ?>\n}\n:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:\n<?- include(getViewsPath(`layout/style`)) ?>\n:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:\n<?- include(getViewsPath(`layout/${selector.selfDir}`), { package }) ?>","/layout/template":"<!DOCTYPE html>\n<html data-app-version=\"<?- globalThis.Server.version ?>\" lang=\"<?= ctx.query.design ? 'en' : (ctx.state.site.show_language_code || ctx.state.site.language_code) ?>\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0, viewport-fit=cover\">\n <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n <? if ((!ctx.query.design && ctx.state.page.page_open_type == 3 && !/detail/i.test(ctx.state.page?.page_type || '')) || ctx.state.site?.is_init_domain || ['/cart.html','/login.html','/register.html','/findpwd.html','/user.html','/due'].includes(ctx.state.page?.page_url_suffix) ) { ?>\n <meta name=\"robots\" content=\"noindex, nofollow\">\n <? } else if (['/inquire','/updating'].includes(ctx.state.page?.page_url_suffix)) { ?>\n <meta name=\"robots\" content=\"noindex\">\n <? } ?>\n <? if (!ctx.query.design) { ?>\n <title>\n <?- ctx.state.page.meta_title ?>\n </title>\n <? if (ctx.state.fontList.length > 0) { -?>\n <? ctx.state.fontList.forEach(item => { -?>\n\n <? }) ?>\n <? } ?>\n <link rel=\"preload\" href=\"<?- globalThis.Server.versionUrl('/font/icon/icon.woff2') ?>\" as=\"font\" type=\"font/woff2\" crossorigin>\n <meta name=\"keywords\" content=\"<?= ctx.state.page.meta_keywords ?>\" />\n <meta name=\"description\" content=\"<?= ctx.state.page.meta_description ?>\" />\n <meta property=\"og:title\" content=\"<?= ctx.state.page.meta_title ?>\" />\n\n <? // ä¼åFacebookæåå¾ç,åç»æ ¹æ®é¡µé¢çååéè¦æç»æ´æ° ?>\n <?\n let { logo_url } = ctx.state.page;\n let imgUrl = '';\n try {\n if (ctx.state.page.page_type.includes('list')) {\n imgUrl = ctx.state.page.children[0].thumb_prefix || logo_url;\n } else if (ctx.state.page.page_type.includes('detail')) {\n imgUrl = ctx.state.page.detail_thumb || ctx.state.page.detail_first_img || logo_url;\n } else {\n imgUrl = logo_url;\n }\n ?>\n <meta property=\"og:image\" content=\"<?= imgUrl ?>\"/>\n <? } catch (error) { ?>\n <meta property=\"og:image\" content=\"<?= logo_url ?>\"/>\n <? } ?>\n\n <meta property=\"og:description\" content=\"<?= ctx.state.page.meta_description ?>\" />\n <meta property=\"og:url\" content=\"<?= ctx.state.page.canonical_href ?>\" />\n\n <?- codeHtmlHead ?>\n\n <? if (ctx.query.force && ctx.query.force === 'html') { ?>\n <!--#include file=\"/shtml_include/header/code-verification.html\"-->\n <? } else { ?>\n <?- codeVerification ?>\n <? } ?>\n\n <script type=\"application/ld+json\"><?- JSON.stringify(ctx.state.template.structured_data, null, 2) -?></script>\n\n <link rel=\"icon\" href=\"<?- globalThis.Server.getTransferImgUrl(ctx.state.site.ico_url, {}, 'webp', ctx.state.site) ?>\">\n <link rel=\"canonical\" href=\"<?= ctx.state.page.canonical_href.replace(/[_-]list\\d+(\\.html)$/, '$1').replace('/.html', '/') ?>\" />
1\n <? ctx.state.page.language_list.forEach(item => { ?>\n <link rel=\"alternate\" hreflang=\"<?= item.code === 'iw' ? 'he' : item.code ?>\" href=\"<?= item.href ?>\" />\n <? }) ?>\n <link rel=\"preconnect\" href=\"<?= ctx.state.page.canonical_href ?>\" />\n <link rel=\"dns-prefetch\" href=\"<?= ctx.state.page.canonical_href ?>\" />\n <link rel=\"dns-prefetch\" href=\"https://www.googletagmanager.com\" />\n <? } ?>\n <link rel=\"dns-prefetch\" href=\"https://img.yfisher.com/\" />\n <link rel=\"dns-prefetch\" href=\"https://www.google-analytics.com/\" />\n <link rel=\"dns-prefetch\" href=\"https://api-qqt.weyescloud.com/\" />\n\n<? if (!ctx.query.design && !ctx.state?.site_config?.server_config?.scripts_in_head) { ?>\n <? if (ctx.state.site.ga_id) { ?>\n <script type=\"text/javascript\">\n window.thirdScripts = JSON.parse('<?- JSON.stringify(ctx.state.site.ga_id) ?>')\n const performanceStartTime = performance.now()\n fetch('/uncache/base.js', { method: 'HEAD' }).then(response => {\n console.log('rtt:' + (performance.now() - performanceStartTime))\n if (!response.ok || performance.now() - performanceStartTime < 300) {\n window.thirdScripts.forEach(item => {\n const script = document.createElement('script')\n script.src = '/gtag/js?id=' + item\n script.async = true\n document.head.appendChild(script)\n })\n window.thirdScripts = []\n }\n }).catch(error => {\n console.error('Fetch error:', error)\n })\n </script>\n <? } ?>\n</head>\n\n<body <?= ctx.query.design ? ` design-mode=${ctx.query.design}` : '' ?>>\n <div id=\"loading\" style=\"left: 50%;top: 0;z-index: -999; position: fixed;transform: translateY(-50%);\">loading</div>\n<? } ?>\n <!-- base start -->\n<? if (ctx.query.force && ctx.query.force === 'html') { ?>\n <style id=\"entire\"> <!--#include virtual=\"/dist/css/entire.css\" --> </style>\n<? } else { ?>\n <link rel=\"preload\" fetchpriority=\"high\" href=\"<?- globalThis.Server.versionUrl('/dist/css/entire.css') ?>\" as=\"style\"/>\n <link rel=\"stylesheet\" fetchpriority=\"high\" href=\"<?- globalThis.Server.versionUrl('/dist/css/entire.css') ?>\"/>\n<? } ?>\n <!--\n <link rel=\"preload\" async href=\"/assets/plugins/swiper.simple.css\" as=\"style\" onload=\"this.onload=null;this.rel='stylesheet'\">\n <link rel=\"preload\" async href=\"/assets/plugins/iconfont.css\" as=\"style\" onload=\"this.onload=null;this.rel='stylesheet'\">\n -->\n <? if (ctx.query.design || ctx.state.page.effect['animate']) { ?>\n <link rel=\"preload\" fetchpriority=\"high\" href=\"<?- globalThis.Server.versionUrl('/assets/plugins/animate.css') ?>\" as=\"style\" onload=\"this.onload=null;this.rel='stylesheet'\">\n <? } ?>\n <? if (ctx.query.design || ctx.state.site.is_shop) { ?>\n <link rel=\"preload\" fetchpriority=\"high\" href=\"<?- globalThis.Server.versionUrl('/assets/plugins/coupon-list.css') ?>\" as=\"style\" onload=\"this.onload=null;this.rel='stylesheet'\">\n <? } ?>\n <!--\n <link rel=\"preload\" async href=\"/assets/css/interactive.css\" as=\"style\" onload=\"this.onload=null;this.rel='stylesheet'\">\n -->\n <? if (!ctx.query.design) { ?>\n <? if (ctx.state.page.detailCssMode.length) { ?>\n <? if (ctx.state.page.detailCssMode[0] === 1) { ?>\n <!-- å¯è§åè£
ä¿®çcss -->\n <link rel=\"stylesheet\" fetchpriority=\"high\" style-mode=\"editor\" href=\"<?- globalThis.Server.versionUrl('/dist/css/cloud-editor-responsive-out.css') ?>\" />\n <? } else if (ctx.state.page.detailCssMode[0] === 2) { ?>\n <!-- åºç¡ç¼è¾çcss -->\n <? if (typeof ctx.state.page.detail_css_name === 'string' && ctx.state.page.detail_css_name.length) { ?>\n <?- `<style detail-style>${ detailStyleContent }</style>` ?>\n <? } ?>\n <link rel=\"stylesheet\" fetchpriority=\"high\" style-mode=\"editor\" href=\"\" />\n <? } ?>\n <? } ?>\n <?- `<style>${ unitStyleContent }</style>` ?>\n <? } else { ?>\n <link rel=\"stylesheet\" style-mode=\"editor\" href=\"\" />\n <? } ?>\n <?- `<style id=\"style\" class=\"koa\">${ ctx.query.design ? '' : styleContent }</style>` ?>\n <?- `<script>\n window.fontList = ${JSON.stringify(ctx.state.fontList)}\n window.scriptQueue = []\n window.serverInfo = {\n env: '${process.env.ENV}',\n dev: ${process.env.DEV},\n appkey: '${process.env.APPKEY}',\n debug: ${process.env.DEBUG},\n token: '${process.env.TOKEN}',\n domain: '${ctx.state.local.domain}',\n baseUrl: '${process.env.BASE_URL || ''}',\n editorDomain: '${process.env.EDITOR}',\n hasEditor: ${ctx.query.design ? false : ctx.state.page.detailCssMode.includes(1)},\n isLighthouse: false,\n visitorIp: '',\n date: new Date().getTime()\n }\n </script>`?>\n <!-- base end -->\n\n <? if (ctx.query.design) { ?>\n <!-- design start -->\n <? if (ctx.query.render) { ?>\n <link href=\"<?- globalThis.Server.versionUrl('/assets/css/design-package.css') ?>\" fetchpriority=\"high\" rel=\"stylesheet\" />\n <? } else { ?>\n <link href=\"<?- globalThis.Server.versionUrl('/assets/css/design-inside.css') ?>\" fetchpriority=\"high\" rel=\"stylesheet\" />\n <? } ?>\n <!-- design end -->\n <? } else { ?>\n <? if (ctx.state.page.effect['partytown_header']) { ?>\n <? if (!ctx.state?.site_config?.server_config?.disable_partytown) { ?>\n <script src=\"/~partytown/partytown.js\"></script>\n <script static=\"~partytown\">\n partytown = {\n debug: true,\n resolveUrl(url, location) {\n if (url.hostname.includes('google-analytics') || url.hostname.includes('connect.facebook.net')) {\n const proxyUrl = new URL('https://cdn.builder.io/api/v1/proxy-api');\n proxyUrl.searchParams.append('url', url);\n return proxyUrl;\n }\n return url;\n },\n forward: [\"<?- ctx.state.page.effect['partytown_header']['forward'].join('\\\", \\\"') ?>\"],\n }\n </script>\n <? } ?>\n <? } ?>\n <? if (ctx.query.force && ctx.query.force === 'html') { ?>\n <? if (ctx.state.page.page_type && ['ai_article_detail', 'polymerize_article_detail', 'ai_product_detail', 'polymerize_product_detail', 'polymerize_multiple_detail', 'polymerize_tag_detail'].includes(ctx.state.page.page_type)) { ?>\n <!--#include file=\"/shtml_include/header/code-ai-page.html\"-->\n <? } else { ?>\n <!--#include file=\"/shtml_include/header/code-other.html\"-->\n <? } ?>\n <? } ?>\n <?- codeHtmlHeader ?>\n <? } ?>\n\n<? if (ctx.query.design || ctx.state?.site_config?.server_config?.scripts_in_head) { ?>\n</head>\n\n<body <?= ctx.query.design ? ` design-mode=${ctx.query.design}` : '' ?>>\n<? } ?>\n <? if (ctx.query.design) { ?>\n <!-- design start -->\n <div id=\"app\" page-type=\"index\"></div>\n <code id=\"koa-data-ctx\" hidden><?= JSON.stringify(windowCtx) ?></code>\n <script>window.ctx = JSON.parse(document.getElementById('koa-data-ctx').innerHTML)</script>\n <div id=\"design-loading\" class=\"loading\" style=\"position:fixed;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:#FFF\"></div>\n <!-- design end -->\n <? } else {\n // 导å
¥æ¥æº 1-é¿éå·´å·´ï¼2-ä¸å½å¶é ï¼3-è¡ä¸ï¼4-å
¨ç½éï¼5-1688\n const transfer_source_attr = ctx.state.site.transfer_source ? `transfer_source=\"${ctx.state.site.transfer_source}\"` : 'transfer_source';\n ?>\n <!-- web start -->\n <div id=\"app\" page-type=\"<?= ctx.state.page.page_type || '' ?>\" page-category-id=\"<?= ctx.state.page?.page_category_id || '' ?>\" <?= ctx.state.page?.transfer_product_id ? `transfer-product-id=\"${ctx.state.page?.transfer_product_id}\"` : '' ?> <?- transfer_source_attr ?> class=\"not-open-user\">\n <?- include(getViewsPath('/layout/app')) ?>\n </div>\n <?- `<script>window.renderInfo = ${JSON.stringify(renderInfo)}</script>` ?>\n <!-- web end -->\n <? } ?>\n\n <!-- base start -->\n <div id=\"message\"></div>\n <div id=\"modal\"></div>\n <!-- use popup -->\n <div id=\"popup__window\"></div>\n <? if (!ctx.query.design) { ?>\n <? if (ctx.state.page.effect['partytown_bottom']) { ?>\n <? if (!ctx.state?.site_config?.server_config?.disable_partytown) { ?>\n <script src=\"/~partytown/partytown.js\"></script>\n <script static=\"~partytown\">\n partytown = {\n debug: true,\n resolveUrl(url, location) {\n if (url.hostname.includes('google-analytics') || url.hostname.includes('connect.facebook.net')) {\n const proxyUrl = new URL('https://cdn.builder.io/api/v1/proxy-api');\n proxyUrl.searchParams.append('url', url);\n return proxyUrl;\n }\n return url;\n },\n forward: [\"<?- ctx.state.page.effect['partytown_bottom']['forward'].join('\\\", \\\"') ?>\"],\n }\n </script>\n <? } ?>\n <? } ?>\n <? if (ctx.state.site.language_code !== 'en' || (ctx.state.site.show_language_code && ctx.state.site.show_language_code !== 'en')) { ?>\n <script src=\"/lang/<?= ctx.state.site.show_language_code || ctx.state.site.language_code ?>.js\" defer=\"defer\"></script>\n <? } ?>\n <!--<script src=\"/uncache/base.js\" defer=\"defer\"></script>-->\n <? } ?>\n <script src=\"<?- globalThis.Server.versionUrl('/dist/js/main.js') ?>\" defer=\"defer\"></script>\n <!-- base end -->\n\n <!-- code start -->\n <? if (!ctx.query.design) { ?>\n <? if (ctx.query.force && ctx.query.force === 'html') { ?>\n <? if (ctx.state.page.page_type && ['ai_article_detail', 'polymerize_article_detail', 'ai_product_detail', 'polymerize_product_detail', 'polymerize_multiple_detail', 'polymerize_tag_detail'].includes(ctx.state.page.page_type)) { ?>\n <!--#include file=\"/shtml_include/footer/code-ai-page.html\"-->\n <? } else { ?>\n <!--#include file=\"/shtml_include/footer/code-other.html\"-->\n <? } ?>\n <? } ?>\n <?- codeHtmlFooter ?>\n <? } ?>\n <script>\n window.addEventListener('load', () => {\n window.dispatchEvent(new CustomEvent('pageLoad'))\n if (document.getElementById('loading')) document.getElementById('loading').remove()\n })\n </script>\n <picture style=\"opacity: 0; width: 0; height: 0; display: block;\">\n <source type=\"image/avif\" srcset=\"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdj
1FDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=\"/>\n <source type=\"image/webp\" srcset=\"data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA\" />\n <img id=\"detectImg\" loading=\"eager\" alt=\"detect\" width=0 height=0/>\n </picture>\n<script>\n (() => {\n function checkPrevSafari() {\n const matchVersion = navigator.userAgent.match(/version\\/([0-9]+)/i)\n const version = (matchVersion && matchVersion[1]) || 0\n return /safari/i.test(navigator.userAgent) && /macintosh/i.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && version <= 14\n }\n function detectPriorImageMime(base64Url) {\n const runtimeOptions = window.runtimeOptions;\n // æ£æµå¾çä¼å
å è½½MIMEç±»å\n const start = base64Url.indexOf(':');\n const end = base64Url.indexOf(';');\n let mime = '';\n if (start > -1 && end > -1) {\n mime = base64Url.substring(start + 1, end);\n }\n runtimeOptions.priorImageMime = mime; // image/avif | image/webp\n }\n if (!window.hasOwnProperty('runtimeOptions')) {\n window.runtimeOptions = {\n priorImageMime: checkPrevSafari() ? '' : 'image/webp'\n };\n }\n window.addEventListener('load', () => {\n const img = document.querySelector('#detectImg');\n if (img) {\n img.addEventListener('load', () => {\n detectPriorImageMime(img.currentSrc)\n })\n }\n })\n })();\n</script>\n <script id=\"__APP_SITE_CONFIG__\" type=\"application/json\"><?- JSON.stringify(ctx.state.site_config?.public_config) ?></script>\n <!-- code end -->\n</body>\n\n</html>\n","/layout/unit":"<? \nconst display_status = package.getDisplayStatus()\n\nlet is_clear = display_status === ' hide-phone hide-pad hide-pc'\nlet is_shtml = ctx.query.force === 'html' && ['header', 'footer', 'copyright'].includes(package.sequence?.[0]) && ['header-menu', 'header-nav', 'text'].includes(package.type)\nlet shtml_name = ctx.state?.cache?.getShtmlName(package)\nlet create_html = ctx.query.force !== 'html' || !['header', 'footer', 'copyright'].includes(package.sequence?.[0]) || !ctx.state?.cache?.existsShtml(package)\n\nvar tab_panel_info = tab_panel_info || []\nlet renderStyle = ''\nif(/^module\\/irregular\\/6|^unit\\/graph\\/2/.test(ctx.query.render)) {\n // éæ©æ¨¡åé¢è§æ¶ï¼è°æ´æ¾ç¤º\n if (['module-irregular-6-unit-1'].includes(package.code)) {\n renderStyle = 'transform: translateY(-22%);'\n } else if (['unit-graph-2'].includes(package.code)) {\n renderStyle = 'transform: translateY(-25%);'\n }\n}\n\nlet unitWrapCls = package?.code ? `${package.code}__wrapper` : '';\nlet packageHtml = ''\nif (create_html) {\n packageHtml += `<div id=\"${package.attr_id}\" ${renderStyle ? `style=\"${renderStyle}\"`:''} class=\"${unitWrapCls}\" animate package-item=\"unit\" package-type=\"${package.type}\" package-unit-type=\"${package.type}\" ${package.getLazyBGString()} ${display_status}>`\n if (package.type) {\n try {\n const html = include(getViewsPath(`/package/unit/${package.type}`), { package, tab_panel_info })\n packageHtml += globalThis.Server.setH1TagToHtml(ctx, html, package)\n } catch(err) {\n console.warn(package)\n console.error(err)\n }\n }\n packageHtml += `</div>`\n}\n\nif (ctx.query.design) {\n is_clear = false\n} else if (is_shtml && create_html) {\n ctx.state.shtml[package.sequence[0]][shtml_name] = packageHtml\n}\n\n?>\n<?- is_clear ? '' : (is_shtml ? `<!--#include file=\"/${site.domain_mode === 2 && site.language_code !== 'en' ? site.language_code + '/' : ''}shtml_include/${package.sequence[0]}/${shtml_name}.html\"-->` : packageHtml) ?>\n","/package/base/button":"<?\n let description = config.description || ''\n let href = config.href || 'javascript:;'\n let mode = config.mode || 'default'\n let target = config.target || '_self'\n let icon = config.icon || ''\n let has_nofollow = config.has_nofollow || 0\n let href_attr = config.href_attr || ''\n-?>\n<div class=\"base-button\">\n <? if (mode === 'text') { -?>\n <div class=\"base-button__inner btn\">\n <? if (icon) { -?>\n <i class=\"iconfont <?= icon ?>\"></i>\n <? } -?>\n <div class=\"d-inline-block\"><?- description ?></div>\n </div>\n <? } else if (mode === 'submit') { -?>\n <button class=\"base-button__inner btn\" type=\"submit\">\n <? if (icon) { -?>\n <i class=\"iconfont <?= icon ?>\"></i>\n <? } -?>\n <? if (description) { -?>\n <div class=\"d-inline-block\"><?- description ?></div>\n <? } else { ?>\n <div class=\"d-inline-block\"><?= $t('send inquiry now') ?></div>\n <? } ?>\n </button>\n <? } else { -?>\n <? if (target !== 'anchor') { -?>\n <a class=\"base-button__inner btn custom-color\" style=\"<?= config.date_and_button?'margin-top:0':'' ?>\" href=\"<?= target === 'block'?'javascript:;':globalThis.Server.getRinseHref(href, site) ?>\" target=\"<?= target === 'block'?'_self':target ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" link-button <?- href_attr ?>>\n <? } else { -?>\n <a class=\"base-button__inner btn custom-color\" href=\"#<?= target === 'block'?'javascript:;':href ?>\" anchor-href=\"#<?= href ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" <?- href_attr ?>>\n <? } -?>\n <? if (icon) { -?>\n <i class=\"iconfont <?= icon ?>\"></i>\n <? } -?>\n <div class=\"d-inline-block\"><?- description ?></div>\n </a>\n <? } -?>\n</div>","/package/base/image":"<?\n let default_src = config.img || config.original_picture_url || ''\n let portrait_src = config.img_portrait || ''\n let alt = (config.content || config.alt || '').replace(/<[^>]+>/g, '')\n let image_config = config?.config || {}\n config.loading = config?.loading || 'eager'\n let fetchpriority = config?.fetchpriority || 'auto'\n let type = config.type || ''\n // æ¯å¦å
³éæå è½½\n let close_lazy = config.close_lazy || ''\n let instant_load = image_config.instant_load || 0\n let from = config.from || ''\n let listIndex = config.index || 0\n let scale = ''\n let effect = 0\n // 夿æ¯å¦æ¯ä¸ªæ¨¡å第ä¸å¼ 徿¯å¦ä½¿ç¨pictureæ ¼å¼\n let usePicture = false\n // æ¯å¦å¨ææ°æ®\n let isDynamic = config.isDynamic || false\n if (isDynamic && config.title!=='') {\n alt = (config.title || '').replace(/<[^>]+>/g, '')\n }\n if(config.thumb_alt){\n alt = config.thumb_alt\n }\n const using_avif = ctx.state.site_config?.public_config?.img_using_avif; // é
ç½®æ¯å¦ä½¿ç¨avif\n\n const hover_img_origin_clss = config?.hover_img_origin ? 'animate__animated hover_img_origin' : '' // hoverå¾çæ¶å徿æ\n\n let moduleIndex = 99\n let need_size = ['list', 'banner_list', 'product_list', 'download_list', 'search_list', 'detail'].includes(from)\n if (image_config) {\n scale = image_config.scale || ''\n if (scale && scale !== 'origin') scale = Number(scale) * 100 + '%'\n effect = image_config.effect\n if (\n (from === 'list' || (['product_list', 'video_list', 'download_list', 'banner_list', 'video_detail'].includes(from) && image_config.use_original !== 0)) &&\n (image_config.use_original < 2 || (config.img_width && config.img_width < 350))\n ) {\n need_size = false\n }\n if (image_config.sequence) {\n if (\n !instant_load &&\n site.site_id === 5284 &&\n image_config.sequence[0] === 'main' &&\n image_config.sequence[1] < 1 &&\n page.page_type === 'blank_one_page'\n ) {\n instant_load = 1\n }\n }\n }\n\n let iopcmd = {}\n // é»è®¤è´¨é\n const DEFAULT_QUALITY = 80\n if (!default_src) {\n if (image_config.alternate && image_config.alternate === 'site.logo_url') {\n default_src = `${site.logo_url}`\n } else if (globalThis.Server.checkDesign() && !config.cover_url) {\n default_src = '//img.yfisher.com/design/1589287329383.png'\n }\n } else {\n let query_arr = default_src.split('?')\n if (query_arr.length > 1) {\n let iopcmd_arr = query_arr[1].split('iopcmd=')\n if (iopcmd_arr.length > 1) {\n iopcmd_arr.shift()\n iopcmd.query = 'iopcmd=' + iopcmd_arr.join('iopcmd=')\n }\n }
1\n let compress = 100\n if (site.style?.[':root']?.['default']) {\n if (site.style[':root']?.['default']?.['--img__convert_quality'] === 'false') {\n compress = 100\n } else if (from === 'banner_list' && site.style[':root']?.['default']?.['--compress_banner__ratio']) {\n compress = site.style[':root']?.['default']?.['--compress_banner__ratio'] || 80\n } else if (site.style[':root']?.['default']?.['--compress__ratio']) {\n compress = site.style[':root']?.['default']?.['--compress__ratio']?.split(',').sort().reverse()[0] || 70\n }\n } else { // 客æ·ç«¯æ¸²æ\n if (site.img__convert_quality === 'false') {\n compress = 100\n } else if (from === 'banner_list' && site.compress_banner__ratio) {\n compress = site.compress_banner__ratio || 80\n } else if (site.compress__ratio) {\n compress = site.compress__ratio.split(',').sort().reverse()[0] || 70\n }\n }\n iopcmd.convert = {quality: compress}\n }\n\n if (\n (\n (\n !scale &&\n (!effect || ![3, 4].includes(effect)) &&\n ['banner_list', 'product_list', 'video_list', 'download_list', 'list'].includes(from)\n ) ||\n scale === 'origin'\n ) &&\n config.img_width &&\n config.img_height &&\n config.img_width > 100\n ) {\n scale = (config.img_height / config.img_width * 100) + '%'\n } else if (scale === 'origin') {\n scale = ''\n }\n\n // å¾çæ¯ä¾ åscaleåæ°\n let ratio = ''\n if (scale && /[0-9]+%/.test(scale)) {\n ratio = (100 / scale.replace('%', '')).toFixed(2)\n } else if (scale && /^[0-9.]$/.test(scale)) {\n ratio = (1 / scale).toFixed(2)\n }\n\n if (site.prefix_domain) {\n default_src = globalThis.Server.replaceImgDomain(default_src, site.prefix_domain, site.is_replace_domain)\n portrait_src = globalThis.Server.replaceImgDomain(portrait_src, site.prefix_domain, site.is_replace_domain)\n }\n\n const borderConfig = config.config?.image_item_has_border\n const image_item_has_border_attr = borderConfig ? [\n `with-border=${borderConfig?.default ? '\"true\"' : '\"false\"'}`,\n `with-border-md=${borderConfig?.md ? '\"true\"' : '\"false\"'}`,\n `with-border-xl=${borderConfig?.xl ? '\"true\"' : '\"false\"'}`\n ].join(' ') : '';\n\n // ç»ä»¶é
ç½® > å
¨å±è®¾ç½® > é»è®¤è®¾ç½®\n const quality = config?.quality ? config.quality : (iopcmd?.convert?.quality || DEFAULT_QUALITY)\n if(iopcmd?.convert) iopcmd.convert.quality = quality\n\n // ç»ä»¶ç¼©ç¥é
ç½® ç¸å detail-album\n const thumbnail = config?.thumbnail?.type ? config?.thumbnail : {type: 3, scale: 100}\n\n // éæå è½½url\n const instant_src = globalThis.Server.getTransferImgUrl(default_src, {thumbnail: thumbnail, convert: {quality: quality, dst: 'webp'}}, 'webp')\n\n-?>\n<div class=\"base-image <?= effect ? 'base-image--effect-' + effect : '' ?> <?= scale ? 'base-image--scale' : '' ?>\" <?- scale ? `style=\"--image-effect:${effect};--img-ratio:${ratio};--img-pt:${scale}\"` : '' ?>>\n\n<? if( config?.image_item__picture && default_src && default_src.indexOf('<svg') === -1 ) { ?>\n<!-- picture base-image__item -->\n<picture class=\"base-image__item base-image__item--default <?-hover_img_origin_clss-?>\">\n <? const srcInfo = globalThis.Server.transferImgSrcset(default_src, {width: config?.img_width, height: config?.img_height}, config?.thumbSizes, null, site) ?>\n <?- srcInfo.sources -?>\n <img class=\"base-image__img img-fluid\" decoding=\"async\" fetchpriority=\"<?=fetchpriority?>\" loading=\"<?= config?.loading ?>\" alt=\"<?= alt ?>\" from=\"<?= from ?>\" src=\"<?= instant_src ?>\">\n</picture>\n<!-- end picture base-image__item -->\n\n <? } else if (default_src) { ?>\n <?\n const domainPrefix = (from === 'banner_list' || from === 'logo') && [4719, 4721].includes(site.site_id) ? site.prefix_domain : ''\n const default_srcset = globalThis.Server.getTransferImgSrcSet(default_src, iopcmd, from, config.img_width || 0, domainPrefix, (site.style?.[':root']?.['default']?.['--img__convert_dst'] || site.img__convert_dst), (site.style?.[':root']?.['default']?.['--img__convert_banner_dst'] || site.img__convert_banner_dst))\n const typeAvifUrls = using_avif ? default_srcset.typeAvifUrls : [];\n default_srcset.sourceTypeUrls = using_avif ? default_srcset.sourceTypeUrls : default_srcset.sourceTypeUrls.filter(typeUrl =>
1 typeUrl.type !== 'image/avif');\n if (from === 'banner_list' || usePicture) {\n default_src = default_srcset['origin']\n } else if (default_srcset['first']) {\n default_src = default_srcset['first']\n }\n -?>\n <div class=\"base-image__item base-image__item--default <?-hover_img_origin_clss-?>\" <?-image_item_has_border_attr?>>\n <? if (default_src.indexOf('<svg') !== -1) { ?>\n <div class=\"base-image__img img-fluid\"><?- default_src ?></div>\n <? } else if (instant_load) { ?>\n <img data-hidden onload=\"this.removeAttribute('data-hidden')\" fetchpriority=\"<?=fetchpriority?>\" decoding=\"async\" loading=\"<?= config.loading || 'eager' ?>\" class=\"base-image__img img-fluid\" alt=\"<?= alt ?>\" src=\"<?= instant_src ?>\">\n <? } else if (!listIndex && !image_config.current_hide_phone && (from === 'banner_list' || usePicture)) { ?>\n <?\n if (from === 'banner_list' || usePicture ) {\n let sources = [...typeAvifUrls, ...default_srcset.widthList].map(item => `<source type=\"${item.type}\" media=\"(max-width: ${item.width}px)\" srcset=\"${[...item.dprUrls, item.url].join(', ')}\" />`).join('');\n sources += default_srcset.sourceTypeUrls?.map(item => `<source type=\"${item.type}\" srcset=\"${item.url}\" />`).join(\"\");\n ?>\n <picture class=\"base-image__img\"><?- sources ?><img data-hidden onload=\"this.removeAttribute('data-hidden')\" fetchpriority=\"<?=fetchpriority?>\" decoding=\"async\" class=\"base-image__img img-fluid\" alt=\"<?= alt ?>\" src=\"<?= default_src ?>\" from=\"<?= from ?>\"></picture>\n <? } else if([0, 1].includes(image_config.effect) && default_srcset.urls?.includes(',')) { ?>\n <img data-hidden onload=\"this.removeAttribute('data-hidden')\" fetchpriority=\"<?=fetchpriority?>\" decoding=\"async\" class=\"base-image__img img-fluid\" alt=\"<?= alt ?>\" srcset=\"<?= default_srcset.urls || default_src ?>\" src=\"<?= default_src ?>\" from=\"<?= from ?>\" />`\n <? } else { ?>\n <img data-hidden onload=\"this.removeAttribute('data-hidden')\" fetchpriority=\"<?=fetchpriority?>\" decoding=\"async\" class=\"base-image__img img-fluid\" alt=\"<?= alt ?>\" src=\"<?= default_src ?>\" from=\"<?= from ?>\" />`\n <? } ?>\n\n <? } else if (from === 'logo') { ?>\n <picture class=\"base-image__img\">\n <?- default_srcset.sourceTypeUrls?.map(item => `<source type=\"${item.type}\" srcset=\"${item.url}\" />`).join(\"\") ?>\n <img data-hidden onload=\"this.removeAttribute('data-hidden')\" fetchpriority=\"<?=fetchpriority?>\" decoding=\"async\" class=\"base-image__img img-fluid\" alt=\"<?= site.logo_alt || site.company_brand_name ?>\" src=\"<?= default_src ?>\">\n </picture>\n <? } else { ?>\n <img loading=\"<?- close_lazy ? 'lazy' : 'eager' ?>\" fetchpriority=\"<?=fetchpriority?>\" class=\"base-image__img img-fluid\" alt=\"<?= alt ?>\" from=\"<?= from ?>\" src=\"<?= close_lazy?default_src:'' ?>\" lazy-src=\"<?= default_src ?>\" img-index=\"<?= listIndex ?>\" <?- need_size && (!config.img_width || config.img_width > 220) ? 'data-sizes=\"' + (config.img_width || 0) + '\"' : '' ?>>\n <? } ?>\n </div>\n <? } ?>\n <? if (portrait_src) { ?>\n <div class=\"base-image__item base-image__item--portrait\">\n <img data-hidden onload=\"this.removeAttribute('data-hidden')\" fetchpriority=\"<?=fetchpriority?>\" decoding=\"async\" class=\"base-image__img img-fluid\" alt=\"<?= alt ?>\" <?= instant_load ? '' : 'lazy-' ?>src=\"<?= portrait_src ?>\">\n </div>\n <? } ?>\n</div>\n","/package/base/lifisher-copyright":"<?\nconst copyright = package.sequence?.[0] === 'copyright' ? (package.config?.text?.lifisher_copyright || { enable: 1, text:'design' }) : null\nconst href = copyright.href ? `href=\"${encodeURI(copyright.href)}\"` : ''\nconst text = copyright?.text || ''\nconst expandContent = []\nconst is_show_privacy = package.sequence?.[0] === 'copyright' ? site.is_show_privacy && package.config?.text?.privacy_policy : null\nif (is_show_privacy) {\n expandContent.push({\n class: \"privacy-policy\",\n href: 'href=\"/doc/privacy-policy.html\"',\n text: $t('privacy policy'),\n icon: '',\n order: '0'\n })\n}\n-?>\n<? if(copyright?.enable || expandContent.length) { ?>\n<template>\n <? if (copyright?.enable) {?>\n <div class=\"lifisher-copyright\">\n <a class=\"lifisher-copyright__link\" target=\"_blank\" <?- href ?> style=\"display: flex; align-items:center;color: inherit;text-decoration: none;\">\n <div class=\"lifisher-copyright__icon\" style=\"display: flex; padding-right: 0.3ch; padding-bottom: 0.2ch;\">\n <svg style=\"height: var(--lifisher-copyright-font-size);width:auto;\" width=\"175\" height=\"36\" viewBox=\"0 0 175 36\" xmlns=\"http://www.w3.org/2000/svg\"><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"M64.468 31v-3.852H53.56V5.8h-4.248V31h15.156zm5.868-22.176c1.368 0 2.412-1.044 2.412-2.448 0-1.44-1.044-2.484-2.412-2.484-1.368 0-2.412 1.044-2.412 2.484 0 1.404 1.044 2.448 2.412 2.448zM72.388 31V11.848h-4.104V31h4.104zm20.52-22.176c1.368 0 2.412-1.044 2.412-2.448 0-1.44-1.044-2.484-2.412-2.484-1.368 0-2.412 1.044-2.412 2.484 0 1.404 1.044 2.448 2.412 2.448zM83.404 31V15.664h5.004v-3.096h-5.004V10.3c0-1.872 1.116-2.556 2.592-2.556 1.008 0 2.196.324 3.312.828l.144-3.6c-1.008-.576-2.268-.864-3.564-.864-3.204 0-6.588 2.016-6.588 6.588v1.872h-2.52v3.096h2.52V31h4.104zm11.556 0V11.848h-4.104V31h4.104zm11.52.144c3.852 0 7.344-1.764 7.344-5.688.036-6.948-10.152-5.04-10.152-8.568 0-1.368 1.188-1.908 2.808-1.908 1.692 0 3.816.648 5.508 1.692l1.512-3.06c-1.728-1.224-4.284-1.944-6.696-1.944-3.672 0-7.056 1.656-7.056 5.544-.036 6.912 10.044 4.716 10.044 8.64 0 1.44-1.368 2.052-3.132 2.052-2.088 0-4.752-.9-6.408-2.376l-1.476 2.952c1.908 1.728 4.896 2.664 7.704 2.664zM122.32 31v-9.432c0-3.384 2.052-5.94 5.472-5.976 2.88 0 4.608 1.764 4.608 4.644V31h4.14V19.084c0-4.572-2.664-7.38-7.128-7.38-3.276 0-5.724 1.188-7.092 3.888V4.288h-4.14V31h4.14zm27.756.144c3.312 0 6.048-1.
1188 7.92-3.24l-2.196-2.34c-1.404 1.44-3.312 2.232-5.4 2.232-3.024 0-5.292-1.836-5.94-4.788h14.472c.504-6.912-2.232-11.304-8.964-11.304-5.688.036-9.684 3.96-9.684 9.756 0 5.76 3.888 9.684 9.792 9.684zm5.256-11.16h-10.944c.432-3.06 2.592-4.968 5.616-4.968 3.132 0 5.184 1.872 5.328 4.968zM167.392 31V20.992c.324-3.276 2.772-5.544 6.624-5.328v-3.96c-3.024 0-5.328 1.368-6.624 3.96v-3.816h-4.14V31h4.14z\" fill=\"currentcolor\" fill-rule=\"nonzero\"/><path d=\"M35.977 17.6c-.334-.112-.672-.228-1.019-.302-4.865-1.23-10.03.268-13.409 3.888-2.9 3.04-7.102 4.572-11.342 4.138C5.968 24.89 2.187 22.54 0 18.98c.182 6.301 3.832 12.021 9.556 14.976 5.725 2.956 12.64 2.69 18.107-.695 5.467-3.384 8.643-9.366 8.314-15.662zm-2.117 2.52a1.07 1.07 0 01-.895.778 1.09 1.09 0 01-1.08-.507 1.026 1.026 0 01.068-1.165c.263-.34.71-.49 1.133-.384.577.145.923.718.774 1.279z\" fill=\"currentcolor\" fill-rule=\"nonzero\"/><path d=\"M9 2.77a8.491 8.491 0 002.89 1.435c3.623.992 7.44-.573 9.485-3.89C17.105-.532 12.69.344 9 2.772z\" fill=\"currentcolor\" fill-rule=\"nonzero\"/><path d=\"M.395 13.807c-.17.64-.302 1.288-.395 1.943 1.443-3.518 4.326-6.29 7.956-7.652a14.313 14.313 0 0111.169.48c-.252-3.292-2.375-6.17-5.497-7.453C7.152 2.648 2.064 7.524.395 13.807z\" fill=\"currentcolor\" fill-rule=\"nonzero\"/><path d=\"M32.907 18.036a1.125 1.125 0 10-.565 2.178 1.125 1.125 0 00.565-2.178z\"/><path d=\"M22.5 20.148a13.968 13.968 0 01-8.627.587 14.03 14.03 0 01-2.989-1.117 13.93 13.93 0 00-2.995-1.143c-2.704-.686-5.434-.635-7.889.192.078 1.977.5 3.926 1.246 5.767 2.219 3.048 5.594 5.114 9.381 5.741a14.795 14.795 0 0010.808-2.398h.019c.338-.228.689-.422 1.046-.612v-7.017z\" fill=\"currentcolor\" fill-rule=\"nonzero\"/><path d=\"M35.985 17.588c-.333-.11-.671-.223-1.019-.297-4.866-1.21-10.032.265-13.412 3.828-2.9 2.991-7.104 4.5-11.344 4.073-4.24-.427-8.023-2.74-10.21-6.245a16.53 16.53 0 001.236 5.632c2.201 2.975 5.549 4.991 9.304 5.602 3.756.61 7.611-.233 10.716-2.346h.019c3.397-2.172 7.602-2.85 11.555-1.866.376.092.742.203 1.103.322a16.595 16.595 0 002.052-8.705v.002zm-2.117 2.482c-.11.405-.462.707-.895.765a1.096 1.096 0 01-1.08-.5.997.997 0 01.068-1.146c.263-.334.71-.483 1.133-.378.577.143.923.707.774 1.259z\" fill=\"currentcolor\" fill-rule=\"nonzero\"/></g></svg>\n </div>\n <div class=\"lifisher-copyright__text\"><?= copyright?.text -?></div>\n </a>\n </div>\n <? } -?>\n <? expandContent.forEach((item, index) => { -?>\n <div class=\"<?= item.class ?>\">\n <a class=\"<?= item.class ?>__link\" target=\"_blank\" <?- item.href ?> style=\"display: flex; align-items:center;color: inherit;text-decoration: none;\">\n <div class=\"<?= item.class ?>__text\"><?= item.text -?></div>\n </a>\n </div>\n <? }) -?>\n</template>\n<script>\n (function () {\n window.scriptQueue.push({\n file: '/assets/js/unit/lifisher-copyright.js',\n name: 'ScriptLifisherCopyright',\n href: '<?= href ?>',\n text: '<?= text ?>',\n expandContent: '<?= JSON.stringify(expandContent.map(item => ({class: item.class, icon: item.icon, order: item.order}))) ?>',\n attrId: '<?= package.attr_id ?>'\n })\n })()\n</script>\n<? } ?>\n","/package/base/no-data":"<div class=\"base-no-data\">\n <div class=\"base-no-data__inner\">\n <div class=\"base-no-data__image\">\n <img lazy-src=\"/assets/images/noDate.svg\" >\n </div>\n <div class=\"base-no-data__text\">\n\n </div>\n </div>\n</div>","/package/base/order":"","/package/base/pagination":"<?\n const type = config.type || ''\n?>\n<nav class=\"base-pagination\">\n <ul class=\"base-pagination__items\">\n <!-- <li\n class=\"base-pagination__item base-pagination__item--first <?= type === 'vue' ? '' : (page.page_number === 1 || page.page_count === 1) ? 'disabled' : '' ?>\"\n :class=\"{'disabled': (page.page_number === 1 || page.page_count === 1) }\">\n <a class=\"base-pagination__link\"\n href=\"<?= (page.page_number === 1 || page.page_count === 1) ? 'javascript:;' :type === 'vue' ? 'javascript:;' : (page.page_base_url + (/\\/$/.test(page.page_base_url) ? '' : '.html')) ?>\"\n @click=\"onPagination(1)\"><span class=\"iconfont icon-action-left-lighter\"></span></a>\n </li> -->\n <li\n class=\"base-pagination__item base-pagination__item--prev <?= type === 'vue' ? '' : page.page_number === 1 ? 'disabled' : '' ?>\"\n :class=\"{'disabled': page.page_number === 1 }\">\n <a class=\"base-pagination__link\"\n href=\"<?= page.page_number === 1 ? 'javascript:;
1' : type === 'vue' ? 'javascript:;' : (page.page_base_url + (page.page_number - 1 > 1 ? `_list${page.page_number - 1}` : '') + (/\\/$/.test(page.page_base_url) ? '' : '.html')) ?>\"\n @click=\"onPagination(page.page_number - 1)\"><span class=\"iconfont icon-action-left-lighter\"></span></a>\n </li>\n <? if (type === 'vue' || (type !== 'vue' && page.page_number > 2)) { ?>\n <li v-if=\"page.page_number > 2\" class=\"base-pagination__item <?= page.page_count > 3 ? 'base-pagination__item-first' : '' ?>\">\n <a class=\"base-pagination__link\"\n href=\"<?= type === 'vue' ? 'javascript:;' : (page.page_base_url + (/\\/$/.test(page.page_base_url) ? '' : '.html')) ?>\"\n @click=\"onPagination(1)\">1</a>\n </li>\n <? } ?>\n <? if (type === 'vue' || (type !== 'vue' && page.page_number > 2 && page.page_number - 2 > 1)) { ?>\n <li v-if=\"page.page_number > 2 && page.page_number - 2 > 1\" class=\"base-pagination__item base-pagination__item-more disabled\">\n <a class=\"base-pagination__link base-pagination__link-more\" href=\"javascript:;\">...</a>\n </li>\n <? } ?>\n <? if (type === 'vue' || (type !== 'vue' && page.page_number > 1)) { ?>\n <li v-if=\"page.page_number > 1\" class=\"base-pagination__item\">\n <a class=\"base-pagination__link\"\n href=\"<?= type === 'vue' ? 'javascript:;' : (page.page_base_url + (page.page_number - 1 > 1 ? `_list${page.page_number - 1}` : '') + (/\\/$/.test(page.page_base_url) ? '' : '.html')) ?>\"\n @click=\"onPagination(page.page_number - 1)\">\n <?= type === 'vue' ? `{{ page.page_number - 1 }}` : page.page_number - 1 ?>\n </a>\n </li>\n <? } ?>\n <li class=\"base-pagination__item active unit-pagination-active\">\n <a class=\"base-pagination__link\"\n href=\"<?= type === 'vue' ? 'javascript:;' : (page.page_base_url + (page.page_number > 1 ? `_list${page.page_number}` : '') + (/\\/$/.test(page.page_base_url) ? '' : '.html')) ?>\"\n @click=\"onPagination(page.page_number)\">\n <?= type === 'vue' ? `{{ page.page_number }}`: page.page_number ?>\n </a>\n </li>\n <? if (type === 'vue' || (type !=='vue' && page.page_count - page.page_number > 1)) { ?>\n <li v-if=\"page.page_count - page.page_number > 1\" class=\"base-pagination__item\">\n <a class=\"base-pagination__link\"\n href=\"<?= type === 'vue' ? 'javascript:;' : `${page.page_base_url}_list${page.page_number + 1}.html` ?>\"\n @click=\"onPagination(page.page_number+1)\">\n <?= type === 'vue' ? `{{ page.page_number+ 1 }}`: page.page_number + 1 ?>\n </a>\n </li>\n <? } ?>\n <? if (type === 'vue' || (type !=='vue' && page.page_number == 1 && page.page_count > 3)) { ?>\n <li v-if=\"page.page_number == 1 && page.page_count > 3\" class=\"base-pagination__item base-pagination__item-third\">\n <a class=\"base-pagination__link\"\n href=\"<?= type === 'vue' ? 'javascript:;' : `${page.page_base_url}_list${3}.html` ?>\"\n @click=\"onPagination(3)\">3</a>\n </li>\n <? } ?>\n <? if (type === 'vue' || (type !=='vue' && page.page_count - page.page_number > 2 )) { ?>\n <li v-if=\"page.page_count - page.page_number > 2\" class=\"base-pagination__item base-pagination__item-more disabled\">\n <a class=\"base-pagination__link\" href=\"javascript:;\">...</a>\n </li>\n <? } ?>\n <? if (type === 'vue' || (type !=='vue' && page.page_count !== page.page_number && page.page_count > page.page_number)) { ?>\n <li v-if=\"page.page_count !== page.page_number && page.page_count > page.page_number\" class=\"base-pagination__item <?= page.page_count > 3 && page.page_count - page.page_number !== 1 ? 'base-pagination__item-last' : '' ?>\">\n <a class=\"base-pagination__link\"\n href=\"<?= type === 'vue' ? 'javascript:;' : `${page.page_base_url}_list${page.page_count}.html` ?>\"\n @click=\"onPagination(page.page_count)\">\n <?= type === 'vue' ? `{{ page.page_count }}`: page.page_count ?>\n </a>\n </li>\n <? } ?>\n <li\n class=\"base-pagination__item base-pagination__item--next <?= type === 'vue' ?'': page.page_number >= page.page_count ? 'disabled' : '' ?> page-next\"\n :class=\"{'disabled': page.page_number === page.page_count }\">\n <a class=\"base-pagination__link\"\n href=\"<?= page.page_number >= page.page_count ? 'javascript:;
1' : type === 'vue' ? 'javascript:;' : `${page.page_base_url}_list${page.page_number + 1}.html` ?>\"\n @click=\"onPagination(page.page_number+1)\"><span class=\"iconfont icon-action-left-lighter\"></span></a>\n </li>\n <!-- <li\n class=\"base-pagination__item base-pagination__item--last <?= type === 'vue' ?'': (page.page_number === page.page_count || page.page_count === 1) ? 'disabled' : '' ?>\"\n :class=\"{'disabled': (page.page_number === page.page_count || page.page_count === 1) }\">\n <a class=\"base-pagination__link\"\n href=\"<?= (page.page_number === page.page_count || page.page_count === 1) ? 'javascript:;' : type === 'vue' ? 'javascript:;' :`${page.page_base_url}_list${page.page_count}.html` ?>\"\n @click=\"onPagination(page.page_count)\"><span class=\"iconfont icon-action-left-lighter\"></span></a>\n </li> -->\n </ul>\n</nav>","/package/base/pagination2":"<!-- å页æä»¶ï¼åéä¸å±ï¼ -->\n<div class=\"paging-unit d-flex mg-top20 w-100 align-items-center\">\n <div class=\"paging-left d-flex\">\n <div :class=\"['paging-item','paging-prev', page_number == 1 ? 'disabled' : '']\" @click=\"changePageIndex('prev')\"><span class=\"iconfont icon-action-left-lighter\"></span></div>\n <template v-if=\"page_count >= 7\">\n <div class=\"paging-item\" :class=\"{active:page_number == 1}\" @click=\"changePageIndex(1)\">1</div>\n <div v-if=\"page_number < 3 || page_number > 4\" class=\"paging-item\" :class=\"{active:page_number == 2}\" @click=\"changePageIndex(2)\">2</div>\n <div v-if=\"page_number < 3\" class=\"paging-item\" :class=\"{active:page_number == 3}\" @click=\"changePageIndex(3)\">3</div>\n <div v-if=\"page_number > 3\" class=\"paging-item-dot flex-shrink-0\">...</div>\n\n <div v-if=\"page_number >= 3 && page_number <= page_count - 2\" class=\"paging-item\" @click=\"changePageIndex(page_number - 1)\">{{Number(page_number) - 1}}</div>\n <div v-if=\"page_number >= 3 && page_number <= page_count - 2\" class=\"paging-item active\">{{page_number}}</div>\n <div v-if=\"page_number >= 3 && page_number <= page_count - 2\" class=\"paging-item\" @click=\"changePageIndex(page_number + 1)\">{{Number(page_number) + 1}}</div>\n \n <div v-if=\"page_number < page_count - 2\" class=\"paging-item-dot flex-shrink-0\">...</div>\n <div v-if=\"page_number > page_count - 2 || page_number < 3\" class=\"paging-item\" :class=\"{active:page_number == page_count - 2}\" @click=\"changePageIndex(page_count - 2)\">{{page_count - 2}}</div>\n <div v-if=\"page_number > page_count - 2 || page_number < page_count - 3\" class=\"paging-item\" :class=\"{active:page_number == page_count - 1}\" @click=\"changePageIndex(page_count - 1)\">{{page_count - 1}}</div>\n <div class=\"paging-item\" :class=\"{active:page_number == page_count}\" @click=\"changePageIndex(page_count)\">{{page_count}}</div>\n </template>\n <template v-else>\n <div v-for=\"(item,index) in page_count\" :index=\"index\" :class=\"'paging-item' + (page_number == (index + 1) ? ' active' : '')\" @click=\"changePageIndex(index + 1)\">{{index + 1}}</div>\n </template>\n \n <div :class=\"['paging-item','paging-next', page_number == page_count ? 'disabled' : '']\" @click=\"changePageIndex('next')\"><span class=\"iconfont icon-action-left-lighter\"></span></div>\n </div>\n <div class=\"paging-right\">\n <input class=\"form-control\" type=\"number\" :min=\"1\" :max=\"page_count\" v-model=\"page_number\" placeholder=\"\" @keyup.enter=\"changePageIndex('go')\" @blur=\"changePageIndex('go', 'blur')\">\n <div class=\"paging-go-btn\" @click=\"changePageIndex('go')\"><?= $t('Go') ?></div>\n </div>\n</div>","/package/base/video":"<?\n const showIcon = config.config.icon || '1'\n config.from = config.from || 'video_detail'\n let video_config = config?.config\n let image_scale = video_config?.scale\n let image_width = config?.img_width\n let iamge_height = config?.img_height\n config.thumb_alt = video_config?.thumb_alt || ''\n const handleScale = (videoscale, img_scale) => {\n let scale = ''\n // æ¯ä¾ åvideoscaleåæ°\n if (videoscale === 'cover_ratio') {\n if ((!img_scale || img_scale === 'origin') && image_width && iamge_height) {\n img_scale = iamge_height / image_width\n }\n scale = img_scale ? Number(img_scale) * 100 + '%' : ''\n } else if (videoscale && videoscale !== 'origin') {\n scale = Number(videoscale) * 100 + '%'\n }\n\n let ratio = ''\n if (scale && /[0-9]+%/.test(scale)) {\
1n ratio = (100 / scale.replace('%', '')).toFixed(2)\n } else if (scale && /^[0-9.]+$/.test(scale)) {\n ratio = (1 / scale).toFixed(2)\n }\n if(videoscale === 'origin') {\n scale = ''\n }\n\n return {scale, ratio}\n }\n let videoscale = {\n default: { scale:'', ratio: '' },\n md: { scale:'', ratio: '' },\n xl: { scale:'', ratio: '' },\n }\n if (video_config) {\n videoscale.default = handleScale(video_config.videoscale, image_scale)\n videoscale.md = handleScale(video_config.videoscale_md || '', image_scale)\n videoscale.xl = handleScale(video_config.videoscale_xl || '', image_scale)\n }\n\n const scaleClass = video_config.aspectRatio ? 'base-video--aspect-ratio' : 'base-video--scale'\n // æ¯å¦å¨ææ°æ®\n let isDynamic = config.isDynamic || false\n let videoUrl = globalThis.Server.replaceImgDomain(config.cover_url, site.prefix_domain, site.is_replace_domain)\n const isIframe = /^\\s*<iframe[^>]*>[\\s\\S]*?<\\/iframe>\\s*$/.test(videoUrl)\n let iframeUrl = []\n if(isIframe){\n iframeUrl = videoUrl.split('<iframe')\n videoUrl = `<iframe style=\"filter:brightness(${video_config.show_mask ? video_config.opacity : '1'})\"` + iframeUrl[1]\n }\n?>\n\n<div class=\"base-video <?= videoscale.default.scale ? scaleClass : '' ?> <?= videoscale.md.scale ? `${scaleClass}-md` : '' ?> <?= videoscale.xl.scale ? `${scaleClass}-xl` : '' ?>\"\n\nvideo-src=\"<?= videoUrl ?>\"\nvideo-href=\"<?= config.href ?>\" video-target=\"<?= config.target ?>\" <?- config.is_allow_gif && config.video_gif ? `video-gif=\"${config.video_gif}\"` : '' -?>\n<?- videoscale ? `style=\"--img-ratio:${videoscale.default.ratio};--img-pt:${videoscale.default.scale};--img-ratio-md:${videoscale.md.ratio};--img-pt-md:${videoscale.md.scale};--img-ratio-xl:${videoscale.xl.ratio};--img-pt-xl:${videoscale.xl.scale};\"` : '' ?>\n>\n <div class=\"base-video__preview\">\n <? if (showIcon === '1') { ?>\n <div class=\"base-video__play\">\n <i class=\"iconfont icon-action-play\"></i>\n </div>\n <? } ?>\n <div class=\"base-video__thumb\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config } }) -?>\n </div>\n </div>\n</div>\n","/package/base/xg-video":"<?\n const showIcon = config.config.icon || '1'\n config.from = config.from || 'video_detail'\n let video_config = config?.config || {}\n let image_scale = video_config?.scale\n let image_width = config?.img_width\n let image_height = config?.img_height\n let file_info = config.file_info\n const handleScale = (videoscale, img_scale) => {\n let scale = ''\n // æ¯ä¾ åvideoscaleåæ°\n if (videoscale === 'cover_ratio') {\n if (!img_scale && image_width && image_height) {\n img_scale = image_height / image_width\n }\n scale = img_scale ? Number(img_scale) * 100 + '%' : ''\n } else if (videoscale && videoscale !== 'origin') {\n scale = Number(videoscale) * 100 + '%'\n }\n\n let ratio = ''\n if (scale && /[0-9]+%/.test(scale)) {\n ratio = (100 / scale.replace('%', '')).toFixed(2)\n } else if (scale && /^[0-9.]+$/.test(scale)) {\n ratio = (1 / scale).toFixed(2)\n }\n if(videoscale === 'origin') {\n scale = ''\n }\n\n return {scale, ratio}\n }\n let videoscale = {\n default: { scale:'', ratio: '' },\n md: { scale:'', ratio: '' },\n xl: { scale:'', ratio: '' },\n }\n if (video_config) {\n videoscale.default = handleScale(video_config.videoscale, image_scale)\n videoscale.md = handleScale(video_config.videoscale_md || '', image_scale)\n videoscale.xl = handleScale(video_config.videoscale_xl || '', image_scale)\n }\n if (file_info?.width && file_info?.height) { // 妿è§é¢æ¯ä¾è½éºæ»¡åéèå¨æèæ¯ï¼é¿å
åè§å¤æ´é²ä¸ç¹ç¹èæ¯\n let videoScaleOriginal = (file_info.width / file_info.height).toFixed(2)\n if (videoscale.default.ratio === videoScaleOriginal) videoscale.default.hide_dynamic_bg = true\n if (videoscale.md.ratio === videoScaleOriginal) videoscale.md.hide_dynamic_bg = true\n if (videoscale.xl.ratio === videoScaleOriginal) videoscale.xl.hide_dynamic_bg = true\n }\n const scaleClass = video_config.aspectRatio ? 'base-video--aspect-ratio' : 'base-video--scale'\n \n function customRound(number) { // èªå®ä¹èå
¥è®¡ç®\n let decimalPart = (number % 1).toFixed(1) - 0; // è·åå°æ°é¨åï¼å
è¿è¡åèäºå
¥ä¿ç1ä½å°æ°\n let integerPart = Math.floor(number); // è·åæ´æ°é¨å\n let result;\n \n if (decimalPart >
1= 0.6) { // å
å
¥\n result = Math.ceil(number);\n } else {\n result = integerPart; // ç´æ¥ä½¿ç¨æ´æ°é¨å\n }\n return result;\n }\n function formatTime(seconds) {\n // å¤çè¾å
¥ä¸ºéè´æ´æ°\n let sec = Math.max(0, customRound(Number(seconds)));\n \n // 计ç®åéåç§æ°\n const minutes = Math.floor(sec / 60);\n const remainingSeconds = sec % 60;\n \n // è¡¥é¶å¹¶æ¼æ¥æå符串\n return [\n String(minutes).padStart(2, '0'),\n String(remainingSeconds).padStart(2, '0')\n ].join(':');\n }\n\n let videoUrl = globalThis.Server.replaceImgDomain(config.m3u8_url || config.cover_url, site.prefix_domain, site.is_replace_domain)\n?>\n\n<div\n class=\"base-video xg-video <?= videoscale.default.scale ? scaleClass : '' ?> <?= videoscale.md.scale ? `${scaleClass}-md` : '' ?> <?= videoscale.xl.scale ? `${scaleClass}-xl` : '' ?>\"\n video-src=\"<?= videoUrl ?>\"\n controls=\"<?= !!parseInt(video_config.controls) ?>\"\n <?- videoscale.default.hide_dynamic_bg ? 'hide-dynamic-bg': '' ?>\n <?- videoscale.md.hide_dynamic_bg ? 'hide-dynamic-bg-md': '' ?>
1\n <?- videoscale.xl.hide_dynamic_bg ? 'hide-dynamic-bg-xl': '' ?>\n <?- videoscale ? `style=\"--img-ratio:${videoscale.default.ratio};--img-pt:${videoscale.default.scale};--img-ratio-md:${videoscale.md.ratio};--img-pt-md:${videoscale.md.scale};--img-ratio-xl:${videoscale.xl.ratio};--img-pt-xl:${videoscale.xl.scale};\"` : '' ?>\n text-style=\"3\"\n >\n <div class=\"base-video__preview video-container\" <?- video_config.show_mask-0 ? `style=\"--brightness:${video_config.opacity}\"` : '' ?>>\n <? if (showIcon === '1') { ?>\n <div class=\"base-video__play\">\n <i class=\"iconfont icon-action-play\"></i>\n </div>\n <? } ?>\n <div class=\"base-video__thumb\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config } }) -?>\n <? if(file_info?.duration) { ?>\n <div class=\"base-video__info\"><?= formatTime(file_info.duration) ?></div>\n <? } ?>\n </div>\n </div>\n</div>","/package/components/unit-affiliate-account":"<div class=\"unit-affiliate--box unit-affiliate_account\">\n <div class=\"unit-block__white affiliate-account_row d-flex align-items-center\">\n <div class=\"account-avatar_box\">\n <img src=\"/assets/images/user-avatar.svg\" alt=\"\">\n </div>\n <div class=\"account-data_box\">\n <div class=\"account-data_name\">{{accountInfo.username}}<span v-if=\"accountInfo.level_name\">{{accountInfo.level_name}}</span><i class=\"iconfont icon-action-edit\" style=\"cursor: pointer;padding-left: 4px;\" @click=\"toViewInfo()\"></i></div>\n <div class=\"account-data_ratio\"><?= $t('Commission Ratio') ?>ï¼{{accountInfo.primary_rate | priceFormat}}%</div>\n <div class=\"account-data_code\">\n <?= $t('Affiliate Code') ?>ï¼{{accountInfo.member_code}}\n <div class=\"tooltips-box_wrap\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('The affiliate code is used to track clicks and conversions, an affiliate link is a specific URL that contains the affiliateâs ID.') ?></span>\n </div>\n <span class=\"copy_span\" @click=\"tool.copyText(accountInfo.member_code)\"><?= $t('copy') ?></span>\n </div>\n <div class=\"account-data_other\" @click=\"toView('links')\"><?= $t('How to use') ?>?</div>\n </div>\n <div class=\"account-commission_box commission-right_border\">\n <div class=\"account-commission_name\"><?= $t('Pending') ?><br><?= $t('Commission') ?></div>\n <div class=\"account-commission_money\">${{accountInfo.pending_commission | priceFormat | addComma}}</div>\n </div>\n <div class=\"account-commission_box\">\n <div class=\"account-commission_name\"><?= $t('Withdrawable') ?><br><?= $t('Commission') ?></div>\n <div class=\"account-commission_money\">${{accountInfo.income_commission | priceFormat | addComma}}</div>\n </div>\n <div class=\"dropdown affiliate-dropdown\">
1\n <span class=\"btn dropdown-toggle\">\n <?= $t('Menu') ?>\n </span>\n <div class=\"dropdown-menu\">\n <span class=\"dropdown-item\" v-on:[eventname]=\"dropdownClick($event,'withdrawal','index')\"><?= $t('Withdrawal') ?></span>\n <span class=\"dropdown-item\" v-on:[eventname]=\"dropdownClick($event,'income_details','index')\"><?= $t('Income Details') ?></span>\n </div>\n </div>\n </div>\n\n <div class=\"unit-block__white\">\n <div class=\"summary-data-title_box d-flex justify-content-between align-items-center\">\n <div class=\"summary-data_title\"><?= $t('Promotion Report Summary') ?></div>\n <div class=\"dropdown affiliate-dropdown\">\n <span class=\"btn dropdown-toggle\">\n {{report_date_list.find(item=> item.value === report_traffic_date_type).label}}\n </span>\n <div class=\"dropdown-menu\">\n <span v-for=\"(item,index) in report_date_list\" :class=\"['dropdown-item',{active:item.value === report_traffic_date_type}]\" :key=\"index\" v-on:[eventname]=\"dropdownClick($event,item.value,'traffic')\">{{item.label}}</span>\n </div>\n </div>\n </div>\n <div class=\"summary-list_box d-flex\">\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\"><?= $t('Number of your links clicks') ?></div>\n <div class=\"summary-list-item_data\">{{reportSummary.link_clicks}}</div>\n </div>\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\">\n <?= $t('Promotion Order Count') ?>\n <div class=\"tooltips-box_wrap\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('Number of orders generated') ?></span>\n </div>\n </div>\n <div class=\"summary-list-item_data\">{{traffic_promotion_order}}</div>\n </div>\n </div>\n <div class=\"summary-data-title_box mg-top20 d-flex justify-content-between align-items-center\">\n <div class=\"summary-data_title\"><?= $t('Order Report Summary') ?></div>\n <div class=\"dropdown affiliate-dropdown\">\n <span class=\"btn dropdown-toggle\">\n {{report_date_list.find(item=> item.value === report_order_date_type).label}}\n </span>\n <div class=\"dropdown-menu\">\n <span v-for=\"(item,index) in report_date_list\" :key=\"index\" :class=\"['dropdown-item',{active:item.value === report_order_date_type}]\" v-on:[eventname]=\"dropdownClick($event,item.value,'order')\">{{item.label}}</span>\n </div>\n </div>\n </div>\n <div class=\"summary-list_box d-flex\">\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\">\n <?= $t('Promotion Order Count') ?>\n <div class=\"tooltips-box_wrap\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('Number of orders generated') ?></span>\n </div>\n </div>\n <div class=\"summary-list-item_data\">{{order_promotion_order}}</div>\n </div>\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\">\n <?= $t('Effective Order Count') ?>\n <div class=\"tooltips-box_wrap too-long\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('The number of orders paid through your link (including refunds, refund orders do not count commissions)') ?></span>\n </div>\n </div>\n <div class=\"summary-list-item_data\">{{reportSummary.effective_order}}</div>\n </div>\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\"><?= $t('Effective Sale Amount') ?></div>\n <div class=\"summary-list-item_data\">{{reportSummary.effective_sale_amount}}</div>\n </div>\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\"><?= $t('Pending Commission') ?></div>\n <div class=\"summary-list-item_data\">{{reportSummary.pending_commission}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"unit-block__white\">\n <div class=\"summary-data-title_box d-flex justify-content-between\">\n <div class=\"summary-data_title\"><?= $t('How to make money') ?></div>\n </div>\n <div class=\"how-list_box d-flex align-items-lg-stretch\">\n <div class=\"how-list_item d-flex flex-column justify-content-between\" v-for=\"(item,index) in howEarnData\" :key=\"index\">\n <div class=\"how-list-item_word\">\n <div class=\"how-list-item_title\">{{item.index}}.{{item.title}}</div>\n <div class=\"how-list-item_desc\">{{item.desc}}</div>\n </div>\n <div class=\"how-list-item_img mt-3\" @click=\"makeMoneyFun(true)\">\n <img :src=\"`/assets/images/affiliate/step${item.index}.png`\" alt=\"\">\n </div>\n </div>\n </div>\n </div>\n\n <!-- swiperå¼¹çª -->\n <div class=\"how-earn-money_pop d-none\">\n <div class=\"how-earn-money_pop_content d-flex flex-column\">\n <div class=\"how-earn-money_pop_title text-center w-100\">\n <?= $t('How To Promote') ?>
1\n <span class=\"iconfont animate__animated animate__delay-1s animate__rotateIn cursor-pointer icon-action-close-2\" @click=\"makeMoneyFun(false)\"></span>\n </div>\n <div v-if=\"currentSwiperIndex > 0 && currentSwiperIndex < 5\" class=\"how-earn-money_pop_step d-flex justify-content-between w-100\">\n <div v-for=\"(item,index) in howEarnData\" :key=\"index\" :class=\"`how-earn-money_step_item${currentSwiperIndex === item.index ? ' active' : ''}`\" >\n <div class=\"how-earn_step_ball\">{{item.index}}</div>\n <div class=\"how-earn_step_name\">{{item.title}}</div>\n </div>\n </div>\n <!-- swiperåºå -->\n <div class=\"swiper how-swiper_pop flex-grow-1\">\n <div class=\"swiper-wrapper\">\n <div v-for=\"(item,index) in howEarnData\" :key=\"index\" class=\"swiper-slide pb-5 d-flex flex-column align-items-center justify-content-center\">\n <div class=\"how-earn_item_desc text-center\">{{item.desc}}</div>\n <img class=\"how-earn_item_img\" :src=\"`/assets/images/affiliate/step_pop${item.index}.png`\" :alt=\"item.title\">\n </div>\n <div class=\"swiper-slide d-flex flex-column align-items-center\">\n <img class=\"how-earn_item_img_money\" src=\"/assets/images/affiliate/step_pop5.png\" alt=\"Make Money\">\n <div class=\"how-earn_item_desc text-center\"><?= $t('Click to make money now') ?></div>\n <div class=\"how-earn_item_btn\" @click=\"makeMoneyFun(false)\"><?= $t('Make Money') ?></div>\n </div>\n </div>\n <div class=\"swiper-pagination swiper-pagination_how\"></div>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-affiliate-commission-details":"<div class=\"unit-affiliate--box unit-affiliate_commission_details\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('Commission Details') ?></div>\n\n <div class=\"affiliate-tab-bar mg-bottom20\">\n <div :class=\"'affiliate-tab-item' + `${commissionTab === 0 ? ' active' : ''}`\" @click=\"changeCommissionTab(0)\"><?= $t('Withdrawal') ?></div>\n <div :class=\"'affiliate-tab-item' + `${commissionTab === 1 ? ' active' : ''}`\" @click=\"changeCommissionTab(1)\"><?= $t('Income Details') ?></div>\n </div>\n <div class=\"filter-row_box d-flex flex-wrap align-items-center\">\n <template v-if=\"commissionTab === 0\">\n <div class=\"filter-row_item\">\n <div class=\"filter-row_component d-flex align-items-center\">\n <input type=\"date\" class=\"form-control\" v-model=\"wd_start_time\">\n <div class=\"form-center-line\"></div>\n <input type=\"date\" class=\"form-control\" v-model=\"wd_end_time\">\n </div>\n </div>\n \n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('Status') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center flex-nowrap\">\n <select class=\"form-select form-control mg-right30\" v-model=\"withdrawalStatus\">\n <option v-for=\"(item,index) in withdrawalStatusList\" :key=\"index\" :value=\"item.value\">{{item.label}}</option>\n </select>\n </div>\n </div>\n </template>\n \n <template v-else>\n <div class=\"filter-row_item\">\n <div class=\"filter-row_component d-flex align-items-center\">\n <input type=\"date\" class=\"form-control\" v-model=\"dc_start_time\">\n <div class=\"form-center-line\"></div>\n <input type=\"date\" class=\"form-control\" v-model=\"dc_end_time\">\n </div>\n </div>\n\n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('Form') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center flex-nowrap\">\n <select class=\"form-select form-control mg-right30\" v-model=\"commissionForm\">\n <option v-for=\"(item,index) in commissionFormList\" :key=\"index\" :value=\"item.value\">{{item.label}}</option>\n </select>\n </div>\n </div>\n </div>\n </template>\n\n <div class=\"filter-row_item\">\n <button class=\"affiliate-btn affiliate-btn_main mg-right20\" type=\"button\" @click=\"changeCommissionParam\"><?= $t('Fliters') ?></button>\n </div>\n </div>\n\n <!-- è¡¨æ ¼1 -->\n <div v-if=\"commissionTab === 0\" class=\"affiliate-table-entity-wrap\">\n <table class=\"affiliate-table-entity\">\n <thead>\n <tr>\n <th><?= $t('Date') ?></th>\n <th><?= $t('Withdrawal Method') ?></th>\n <th><?= $t('Withdrawal Account') ?></th>\n <th><?= $t('Withdrawal Amount') ?></th>\n <th><?= $t('Status') ?></th>\n <th><?= $t('Action') ?></th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item,index) in withdrawalList\" :key=\"index\">\n <td>{{item.create_time}}</td>\n <td>{{item.method_format}}</td>\n <td>{{item.account_name}}</td>\n <td>{{moneyUnit}}{{item.amount | priceFormat}}</td>\n <td>{{item.status_format}}</td>\n <!-- 夿æ¯å¦ä¸ºå¤çä¸ -->\n <td class=\"flex flex-nowrap\">\n <button type=\"button\" class=\"affiliate-btn affiliate-btn_primary\" @click=\"lookWithdrawalDetail(item.id)\"><?= $t('Details') ?></button>\n <button v-if=\"item.status === 1\" type=\"button\" class=\"affiliate-btn affiliate-btn_primary mg-left10\" @click=\"cancelWithdrawal(item.id,index)\"><?= $t('Cancel') ?></button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n \n <!-- è¡¨æ ¼2 -->\n <div v-else class=\"affiliate-table-entity-wrap\">\n <table class=\"affiliate-table-entity\">\n <thead>\n <tr>\n <th><?= $t('Date') ?></th>\n <th><?= $t('Commission') ?></th>\n <th><?= $t('Form') ?></th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item,index) in commissionList\" :key=\"index\">\n <td>{{item.create_time}}</td>\n <td>{{item.form === 1 ? '+ ':'- '}}{{moneyUnit}}{{item.amount | priceFormat}}</td>\n <td>{{item.form_format}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n <template v-if=\"page_count > 1\">\n <?- include(getViewsPath(`/package/base/pagination2`), {}) -?>\n </template>\n </div>\n</div>","/package/components/unit-affiliate-faq":"<div class=\"unit-affiliate--box unit-affiliate_message unit-affiliate_faq\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('FAQ') ?></div>\n <div v-if=\"!loadingPage\" class=\"affiliate-message_list_box w-100\">\n <div class=\"affiliate-message_list_item\" v-for=\"(item,index) in messageList\" :key=\"index\" :class=\"{opened:currentMsgIndex === index}\">\n <div class=\"affiliate-message_list_title w-100 d-flex justify-content-between align-items-center\" @click=\"messageShutter(index)\">\n <div class=\"affiliate-message_title_left\">{{item.title}}</div>\n <div class=\"affiliate-message_title_right flex-shrink-0\">{{item.create_time}}
1<span class=\"iconfont icon-action-bottom-lighter\"></span></div>\n </div>\n <div class=\"affiliate-message_list_data\">\n <div class=\"affiliate-message_list_line\" v-html=\"item.detail\"></div>\n </div>\n </div>\n </div>\n <template v-if=\"page_count > 1\">\n <?- include(getViewsPath(`/package/base/pagination2`), {}) -?>\n </template>\n </div>\n</div>","/package/components/unit-affiliate-income-details":"<div class=\"unit-affiliate--box unit-affiliate_income_details\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title mg-bottom0\"><?= $t('Commission Details') ?></div>\n <div class=\"commission-details_list row\">\n <div class=\"col col-12 col-xl-4 d-flex align-items-center\"><span class=\"flex-shrink-0\"><?= $t('Status') ?>ï¼</span><span class=\"grey\">{{withdrawalDetail.status_format}}</span></div>\n <div class=\"col col-12 col-xl-4 d-flex align-items-center\"><span class=\"flex-shrink-0 text-capitalize\"><?= $t('message') ?>ï¼</span><span class=\"grey\">{{withdrawalDetail.message || '--'}}</span></div>\n <div class=\"col col-12 col-xl-4 d-flex align-items-center\"><span class=\"flex-shrink-0\"><?= $t('Date') ?>ï¼</span><span class=\"grey\">{{withdrawalDetail.process_time}}</span></div>\n <div v-if=\"withdrawalDetail.remittance_voucher\" class=\"col col-12 col-xl-4 d-flex align-items-center\"><span class=\"flex-shrink-0\"><?= $t('Remittance certificate') ?>ï¼</span><a class=\"affiliate-btn affiliate-btn_grey\" download=\"certificate\" :href=\"withdrawalDetail.remittance_voucher\"><span class=\"iconfont icon-xiazai\"></span><?= $t('Download') ?></a></div>\n <div v-if=\"withdrawalDetail.invoice_file\" class=\"col col-12 col-xl-4 d-flex align-items-center\"><span class=\"flex-shrink-0\"><?= $t('Download Invoice') ?>ï¼</span><a class=\"affiliate-btn affiliate-btn_grey\" download=\"invoice\" :href=\"withdrawalDetail.invoice_file\"><span class=\"iconfont icon-xiazai\"></span><?= $t('Download') ?></a></div>\n </div>\n </div>\n <div class=\"unit-block__white\">\n <div class=\"commission-details_list row\">\n <div class=\"col col-12 d-flex align-items-center mg-bottom0\"><span class=\"flex-shrink-0\"><?= $t('Date') ?>ï¼</span><span class=\"grey\">{{withdrawalDetail.create_time}}</span></div>\n <div class=\"col col-12 d-flex align-items-center mg-bottom0\"><span class=\"flex-shrink-0\"><?= $t('Withdrawal Method') ?>ï¼</span><span class=\"grey\">{{withdrawalDetail.method_format}}</span></div>\n <div v-if=\"withdrawalDetail.method === 1\" class=\"col col-12 d-flex align-items-center mg-bottom0\"><span class=\"flex-shrink-0\"><?= $t('Withdrawal Account') ?>ï¼</span><span class=\"grey\">{{withdrawalDetail.account_name}}</span></div>\n <div class=\"col col-12 d-flex align-items-center mg-bottom0\"><span class=\"flex-shrink-0\"><?= $t('Withdrawal Amount') ?>ï¼</span><span class=\"grey\">{{moneyUnit}}{{withdrawalDetail.amount | priceFormat}}</span></div>\n <div class=\"col col-12 d-flex align-items-center mg-bottom0\" v-for=\"(value,key) in withdrawalDetail.content\">\n <span v-if=\"key !== 'upload_invoice' || value\" class=\"flex-shrink-0\">{{key | keyFormat}}ï¼</span>\n <template v-if=\"key === 'upload_invoice'\">\n <a v-if=\"value\" class=\"main_color_important\" :href=\"value\" download=\"invoice_file\"><?= $t('Download File') ?></a>\n </template>\n <span v-else class=\"grey\">{{value}}</span>\n </div>\n </div>\n </div>\n <div class=\"flex align-items-center\">\n <button class=\"affiliate-btn affiliate-btn_primary \" type=\"button\" @click=\"commissionView = 'index'\"><?= $t('Back') ?></button>\n <button v-if=\"withdrawalDetail.status === 1\" class=\"affiliate-btn affiliate-btn_primary mg-left20\" type=\"button\" @click=\"cancelWithdrawal(withdrawalDetail.id,'detail')\"><?= $t('Cancel withdrawal') ?></button>\n </div>\n</div>","/package/components/unit-affiliate-links-report":"<div class=\"unit-affiliate--box unit-affiliate_links_report\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('Links report') ?></div>\n <div class=\"filter-row_box d-flex flex-wrap align-items-center\">\n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('order time') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center\">\n <input type=\"date\" class=\"form-control\" v-model=\"lp_start_time\">\n <div class=\"form-center-line\"></div>\n <input type=\"date\" class=\"form-control\" v-model=\"lp_end_time\">\n </div>\n </div> \n <div class=\"filter-row_item\">\n <button class=\"affiliate-btn affiliate-btn_main mg-right20\" type=\"button\" @click=\"changeLinksReportParam\"><?= $t('Fliters') ?></button>\n <button class=\"affiliate-btn affiliate-btn_primary\" type=\"button\" @click=\"exportExcelHandler('links_report')\"><?= $t('Export') ?></button>\n </div>\n </div>\n\n <!-- è¡¨æ ¼ -->\n <div class=\"affiliate-table-entity-wrap\" style=\"padding-top: 20px;\">\n <table class=\"affiliate-table-entity\">\n <thead>\n <tr>\n <th><?= $t('Product Name') ?></th>\n <th><?= $t('Clicks') ?>\n <div class=\"tooltips-box_wrap left_align\">
1\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('The number of times this link was clicked after it was shared.') ?></span>\n </div>\n </th>\n <th>\n <?= $t('Order Count') ?>\n <div class=\"tooltips-box_wrap\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('Share the number of all orders brought by the spread.') ?></span>\n </div>\n </th>\n <th>\n <span style=\"text-transform:capitalize;\"><?= $t('order amount') ?></span>\n <div class=\"tooltips-box_wrap\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('A summary of the order amount brought by sharing and spreading.') ?></span>\n </div>\n </th>\n <th>\n <?= $t('Valid Orders') ?>\n <div class=\"tooltips-box_wrap\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('The number of orders completed to pay for the purchase.') ?></span>\n </div>\n </th>\n <th>\n <?= $t('Valid Amount') ?>\n <div class=\"tooltips-box_wrap\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('A summary of the order amount for which payment was made.') ?></span>\n </div>\n </th>\n <th>\n <?= $t('Pending Commission') ?>\n <div class=\"tooltips-box_wrap\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('Estimated commission for the order you can get.') ?></span>\n </div>\n </th>\n <th>\n <?= $t('Active Commission') ?>\n <div class=\"tooltips-box_wrap right_align\">\n <i class=\"iconfont icon-wenhao\"></i>\n <span class=\"tooltips-brick\"><?= $t('You can get commissions for the orders you get.') ?></span>\n </div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item,index) in linkReportList\" :key=\"index\">\n <td style=\"max-width:300px;\">{{item.product_title}}</td>\n <td>{{item.share_product_clicks}}</td>\n <td>{{item.orders}}</td>\n <td>{{item.order_amounts}}</td>\n <td>{{item.pay_orders}}</td>\n <td>{{item.pay_order_amounts}}</td>\n <td>{{item.pending_commission}}</td>\n <td>{{item.active_commission}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n <template v-if=\"page_count > 1\">\n <?- include(getViewsPath(`/package/base/pagination2`), {}) -?>\n </template>\n </div>\n</div>","/package/components/unit-affiliate-links":"<div class=\"unit-affiliate--box unit-affiliate_links\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title mg-bottom\"><?= $t('Custom combination link') ?></div>\n <div class=\"affiliate-links_title mg-top10 mg-bottom10\">1ã<?= $t('Custom combination link') ?>.</div>\n <div class=\"affiliate-links_sub pd-left20\">\n <div class=\"affiliate-links_title mg-top10 mg-bottom10\">1.1. <?= $t('You can click Copy Affiliate Code in My Account') ?>.</div>\n <img class=\"w-100\" src=\"/assets/images/affiliate/group1.png\" alt=\"\">\n <div class=\"affiliate-links_title mg-top10 mg-bottom10\">1.2 ã<?= $t('Copy the promotion product URL in the store') ?>.</div>\n <img class=\"w-100\" src=\"/assets/images/affiliate/group2.png?v=1\" alt=\"\">\n <div class=\"affiliate-links_title mg-top10 mg-bottom10\">1.3ã<?= $t('Add Affiliate Code at the end of the promotion url') ?>.</div>\n <img class=\"w-100\" src=\"/assets/images/affiliate/group3.png?v=1\" alt=\"\">\n </div>\n <div class=\"affiliate-links_title mg-top10 mg-bottom10\">2ã<?= $t('Affiliate Center - Promotion Center. you can copy link or send to
1social media.') ?></div>\n <div class=\"affiliate-links_sub pd-left20\">\n <img class=\"w-100\" src=\"/assets/images/affiliate/group4.png?v=1\" alt=\"\">\n </div>\n </div>\n </div>\n</div>","/package/components/unit-affiliate-message":"<div class=\"unit-affiliate--box unit-affiliate_message\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title text-capitalize\"><?= $t('message') ?></div>\n <div v-if=\"!loadingPage\" class=\"affiliate-message_list_box w-100\">\n <div class=\"affiliate-message_list_item\" v-for=\"(item,index) in messageList\" :key=\"index\" :class=\"{opened:currentMsgIndex === index}\">\n <div class=\"affiliate-message_list_title w-100 d-flex justify-content-between align-items-center\" @click=\"messageShutter(index)\">\n <div class=\"affiliate-message_title_left\">{{item.title}}</div>\n <div class=\"affiliate-message_title_right flex-shrink-0\">{{item.create_time}}<span class=\"iconfont icon-action-bottom-lighter\"></span></div>\n </div>\n <div class=\"affiliate-message_list_data\">\n <div class=\"affiliate-message_list_line\" v-html=\"item.detail\"></div>\n </div>\n </div>\n </div>\n <template v-if=\"page_count > 1\">\n <?- include(getViewsPath(`/package/base/pagination2`), {}) -?>\n </template>\n </div>\n\n</div>","/package/components/unit-affiliate-orders-report":"<div class=\"unit-affiliate--box unit-affiliate_orders_report\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('Orders Report') ?></div>\n <div class=\"filter-row_box d-flex flex-wrap align-items-center\">\n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('order time') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center\">\n <input type=\"date\" v-model=\"op_start_time\" class=\"form-control\">\n <div class=\"form-center-line\"></div>\n <input type=\"date\" v-model=\"op_end_time\" class=\"form-control\">\n </div>\n </div>\n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('order status') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center flex-nowrap\">\n <select class=\"form-select form-control mg-right30\" v-model=\"op_order_status\">\n <option value=\"\" disabled class=\"d-none\"><?= $t('Please choice') ?></option>\n <option v-for=\"(item,index) in order_status_list\" :key=\"index\" :value=\"item.value\">{{item.label}}</option>\n </select>\n </div>\n </div>\n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('Commission Status') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center flex-nowrap\">\n <select class=\"form-select form-control mg-right30\" v-model=\"op_commission_status\">\n <option v-for=\"(item,index) in commission_status_list\" :key=\"index\" :value=\"item.value\">{{item.label}}</option>\n </select>\n </div>\n </div>\n \n <div class=\"filter-row_item\">\n <button class=\"affiliate-btn affiliate-btn_main mg-right20\" type=\"button\" @click=\"changeOrdersReportParam\"><?= $t('Fliters') ?></button>\n <button class=\"affiliate-btn affiliate-btn_primary\" type=\"button\" @click=\"exportExcelHandler('orders_report')\"><?= $t('Export') ?></button>\n </div>\n </div>\n\n <!-- è¡¨æ ¼ -->\n <div class=\"affiliate-table-entity-wrap\">\n <table class=\"affiliate-table-entity\">\n <thead>\n <tr>\n <th><?= $t('order id') ?></th>\n <th><?= $t('order amount') ?></th>\n <th><?= $t('Date') ?></th>\n <th><?= $t('order status') ?></th>\n <th><?= $t('Commission') ?></th>\n <th><?= $t('Commission Status') ?></th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item,index) in orderReportList\" :key=\"index\">\n <td>{{item.serial_number}}</td>\n <td>{{item.order_amount}}</td>\n <td>{{item.order_time}}</td>\n <td>{{item.order_status_format}}</td>\n <td>{{item.commission}}</td>\n <td>{{item.commission_status_format}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n <template v-if=\"page_count > 1\">\n <?- include(getViewsPath(`/package/base/pagination2`), {}) -?>\n </template>\n </div>\n</div>","/package/components/unit-affiliate-product":"<div class=\"unit-affiliate--box unit-affiliate_product\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('Share Product') ?></div>\n <div class=\"filter-row_box d-flex flex-wrap align-items-center\">\n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('Categories') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center flex-nowrap\">\n <select class=\"form-select form-control mg-right30\" v-model=\"sp_category_id\" @change=\"changeShareProductParam\">\n <option value=\"0\"><?= $t('All Categories') ?></option>\n <option v-for=\"(item,index) in sp_category_list\" :key=\"index\" :value=\"item.id\">{{item.title}}</option>\n </select>\n </div>\n </div>\n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('Sort') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center flex-nowrap\">\n <select class=\"form-select form-control mg-right30\" v-model=\"sp_sort\" @change=\"changeShareProductParam\">\n <option v-for=\"(item,index) in sp_sort_list\" :key=\"index\" :value=\"item.value\">{{item.label}}</option>\n </select>\n </div>\n </div>\n \n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('price') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center flex-nowrap\">\n <input class=\"form-control form-input_short\" v-model=\"sp_min_price\" placeholder=\"<?= $t('min price') ?>\" min=\"0\" max=\"999999\" type=\"number\" @blur=\"changeShareProductParam\">\n <div class=\"form-center-line\"></div>\n <input class=\"form-control form-input_short\" v-model=\"sp_max_price\" placeholder=\"<?= $t('max price') ?>\" min=\"0\" max=\"999999\" type=\"number\" @blur=\"changeShareProductParam\">\n </div>\n </div>\n\n <div class=\"filter-row_item\">\n <div class=\"filter-row_search position-relative\">\n <input class=\"form-control\" placeholder=\"<?= $t('Search') ?>\" v-model=\"sp_title\" type=\"text\" @blur=\"changeShareProductParam\">
1\n <span class=\"iconfont icon-action-search-lighter\"></span>\n </div>\n </div>\n </div>\n\n <!-- 产ååºå -->\n <div class=\"share-product_box d-flex flex-wrap\">\n <div class=\"share-product_item d-flex align-items-center flex-nowrap\" v-for=\"(item,index) in shareProductList\" :key=\"index\">\n <div class=\"share-product_img flex-shrink-0 mg-right10\">\n <img class=\"w-100\" :src=\"item.thumb\" alt=\"\">\n </div>\n <div class=\"share-product_data flex-grow-1\">\n <div class=\"share_product_name\" :title=\"item.title\">{{item.title}}</div>\n <div class=\"share_product_price mg-top10\">{{moneyUnit}}{{item.selling_min | priceFormat}}</div>\n <div class=\"share_product_other d-flex justify-content-between mg-top10\">\n <div class=\"share_product_likes d-flex align-items-center\">\n <img class=\"flex-shrink-0\" src=\"/assets/images/affiliate/love.png\" alt=\"\">\n <span>{{item.favorite}}</span>\n </div>\n <div class=\"share_product_btn\" @click=\"goSharePop(true,item.page_url_suffix,item.dt_product_id)\">\n <span class=\"iconfont icon-fenxiang\"></span>\n <?= $t('Earn') ?> {{moneyUnit}}{{item.min_commission | priceFormat}}\n </div>\n </div>\n </div>\n </div>\n </div>\n <template v-if=\"page_count > 1\">\n <?- include(getViewsPath(`/package/base/pagination2`), {}) -?>\n </template>\n </div>\n\n <!-- åäº«å¼¹çª -->\n <div class=\"affiliate-share_pop d-none\">\n <div class=\"share_pop_box\">\n <div class=\"share_pop_title ft-16 d-flex align-items-center justify-content-between\">\n <span><?= $t('Choose Way To Share') ?></span>\n <span class=\"iconfont cursor-pointer icon-action-close-2\" @click=\"goSharePop(false)\"></span>\n </div>\n <div class=\"form-group grey mg-top20 mg-bottom20\">\n <div class=\"form-check form-check-inline first-form-check\">\n <input class=\"form-check-input\" type=\"radio\" id=\"share_link\" value=\"link\" v-model=\"shareType\">\n <label class=\"form-check-label\" for=\"share_link\"><?= $t('Link') ?></label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" id=\"share_social\" value=\"social\" v-model=\"shareType\">\n <label class=\"form-check-label\" for=\"share_social\"><?= $t('Send To My Social Media') ?></label>\n </div>\n </div>\n <div v-if=\"shareType === 'link'\" class=\"share_link_row d-flex align-items-center\">\n <input :value=\"shareProductLink\" readonly class=\"form-control flex-grow-1 mg-right20\" type=\"text\">\n <button class=\"affiliate-btn affiliate-btn_main flex-shrink-0\" type=\"submit\" @click=\"goShareProduct(false)\">\n <?= $t('Copy link') ?>\n </button>\n </div>\n <div v-if=\"shareType === 'social'\" class=\"share_link_row_social d-flex justify-content-center align-items-center\">\n <img src=\"/assets/images/share/facebook.png\" alt=\"\" @click=\"goShareProduct('facebook')\">\n <img src=\"/assets/images/share/pinterest.png\" alt=\"\" @click=\"goShareProduct('pinterest')\">\n <img src=\"/assets/images/share/twitter.png\" alt=\"\" @click=\"goShareProduct('twitter')\">\n <!-- <img src=\"/assets/images/share/vk.png\" alt=\"\"> -->\n </div>\n </div>\n </div>\n</div>","/package/components/unit-affiliate-promotion-reports":"<div class=\"unit-affiliate--box unit-affiliate_promotion_reports\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('Promotion Reports') ?></div>\n <div class=\"filter-row_box d-flex flex-wrap align-items-center\">\n <div class=\"filter-row_item\">\n <div class=\"filter-row_name flex-shrink-0\"><?= $t('order time') ?>ï¼</div>\n <div class=\"filter-row_component d-flex align-items-center\">\n <input type=\"date\" class=\"form-control\" v-model=\"pp_start_time\" @change=\"changePromotionParamDate($event,'start')\">\n <div class=\"form-center-line\"></div>\n <input type=\"date\" class=\"form-control\" v-model=\"pp_end_time\" @change=\"changePromotionParamDate($event,'end')\">\n </div>\n </div>\n <div class=\"filter-row_item\">\n <button class=\"affiliate-btn affiliate-btn_main mg-right20\" type=\"button\" @click=\"changePromotionReportParam\"><?= $t('Fliters') ?></button>\n <button class=\"affiliate-btn affiliate-btn_primary\" type=\"button\" @click=\"exportExcelHandler('promotion_reports')\"><?= $t('Export') ?></button>\n </div>\n </div>\n <div class=\"affiliate-row_line\"></div>\n <div class=\"summary-list_box d-flex mg-bottom20 mg-top10\">\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\"><?= $t('Promotion Link Click Amount') ?></div>\n <div class=\"summary-list-item_data\">{{promotionStatisticInfo.share_product_total_clicks | addComma}}</div>\n </div>\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\"><?= $t('Promotion Order Count') ?></div>\n <div class=\"summary-list-item_data\">{{promotionStatisticInfo.orders | addComma}}</div>\n </div>\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\"><?= $t('Pending Commission') ?></div>\n <div class=\"summary-list-item_data\">{{moneyUnit}}{{promotionStatisticInfo.pending_commission | priceFormat | addComma}}</div>\n </div>\n <div class=\"summary-list_item\">\n <div class=\"summary-list-item_title\"><?= $t('Active Commission') ?></div>\n <div class=\"summary-list-item_data\">{{moneyUnit}}{{promotionStatisticInfo.active_commission | priceFormat | addComma}}</div>\n </div>\n </div>\n\n <!-- å¾è¡¨ -->\n <div class=\"promotion-echarts-box-wrap affiliate-scroll-bar\">\n <div class=\"promotion-echarts-box\">\n </div>\n </div>\n\n <!-- è¡¨æ ¼ -->\n <div class=\"affiliate-table-entity-wrap\">\n <table class=\"affiliate-table-entity\">\n <thead>\n <tr>\n <th style=\"min-width: 100px;\"><?= $t('Date') ?></th>\n <th><?= $t('Promoted link clicks') ?></th>\n <th><?= $t('Promotion Order Count') ?></th>\n <th><?= $t('Sales Amount') ?></th>\n <th><?= $t('Effective Order Count') ?></th>\n <th><?= $t('Effective Sale Amount') ?></th>\n <th><?= $t('Pending Commission') ?></th>\n <th><?= $t('Active Commission') ?></th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item,index) in promotionReportList\" :key=\"index\">\n <td>{{item.date_time}}</td>\n <td>{{item.share_product_total_clicks}}</td>\n <td>{{item.orders}}</td>\n <td>{{item.order_amounts}}</td>\n <td>{{item.pay_orders}}</td>\n <td>{{item.pay_order_amounts}}</td>\n <td>{{item.pending_commission}}</td>\n <td>{{item.active_commission}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>","/package/components/unit-affiliate-sidebar":"<div class=\"unit-user__side\">\n <div class=\"unit-user__side-inner\">\n <div class=\"unit-user__side-list\">\n <template v-for=\"(item,index) in sideNav\" :key=\"index\">\n <div class=\"unit-user__side-title\">{{item.title}}</div>\n <a v-for=\"view in item.list\" :key=\"view\" :href=\"`#${view.view}`\" :class=\"['unit-user__side-item', { 'active': thisView === view.view }, {'disable_click': loadingPage} ]\"\n @click=\"toView(view.view)\">{{ view.title }}</a>\n </template>\n </div>\n </div>\n</div>","/package/components/unit-affiliate-tutorial":"<div class=\"unit-affiliate--box unit-affiliate_message unit-affiliate_tutorial\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('Tutorial') ?></div>\n <div v-if=\"!loadingPage\" class=\"affiliate-message_list_box w-100\">\n <div class=\"affiliate-message_list_item\" v-for=\"(item,index) in messageList\" :key=\"index\" :class=\"{opened:currentMsgIndex === index}\">\n <div class=\"affiliate-message_list_title w-100 d-flex justify-content-between align-items-center\" @click=\"messageShutter(index)\">\n <div class=\"affiliate-message_title_left\">{{item.title}}</div>\n <div class=\"affiliate-message_title_right flex-shrink-0\">{{item.create_time}}
1<span class=\"iconfont icon-action-bottom-lighter\"></span></div>\n </div>\n <div class=\"affiliate-message_list_data\">\n <div class=\"affiliate-message_list_line\" v-html=\"item.detail\"></div>\n </div>\n </div>\n </div>\n <template v-if=\"page_count > 1\">\n <?- include(getViewsPath(`/package/base/pagination2`), {}) -?>\n </template>\n </div>\n</div>","/package/components/unit-affiliate-withdrawal":"<div class=\"unit-affiliate--box unit-affiliate_withdrawal\">\n <div class=\"unit-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('Withdrawal') ?></div>\n <div class=\"withdrawal-info d-flex align-items-center\">\n <img src=\"/assets/images/affiliate/wallet.png\" alt=\"\">\n <?= $t('Current Amount') ?> (US$): ${{accountInfo.income_commission | priceFormat | addComma}}\n </div>\n <div v-if=\"paymentData.PayPal\" class=\"withdrawal-desc\"><?= $t('When using PayPal to withdraw cash') ?>ï¼<span><?= $t('The amount of a single offer is greater than or equal to') ?> ${{paypalLimit.draw_min_amount | addComma}},<?= $t('Less than') ?> ${{paypalLimit.single_draw_max_amount | addComma}}</span></div>\n <div v-if=\"paymentData.bank_transfer\" class=\"withdrawal-desc\"><?= $t('When using Bank Transfer to withdraw cash') ?>ï¼<span><?= $t('The amount of a single offer is greater than or equal to') ?> ${{bankLimit.draw_min_amount | addComma}},<?= $t('Less than') ?> ${{bankLimit.single_draw_max_amount | addComma}}</span></div>\n </div>\n <div class=\"unit-block__white withdrawal-block__white\">\n <div class=\"unit-block__white_title\"><?= $t('Withdrawal Method') ?></div>\n <radio-group v-if=\"paymentData.PayPal || paymentData.bank_transfer\" class=\"form-group withdrawal-type_radio\" @change=\"changeWithdrawType\">\n <div v-if=\"paymentData.PayPal\" class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" id=\"pay_paypal\" value=\"paypal\" v-model=\"withdrawType\">\n <label class=\"form-check-label\" for=\"pay_paypal\"><?= $t('Paypal') ?></label>\n </div>\n <div v-if=\"paymentData.bank_transfer\" class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" id=\"pay_bank\" value=\"bank\" v-model=\"withdrawType\">\n <label class=\"form-check-label\" for=\"pay_bank\"><?= $t('Bank Transfer') ?></label>\n </div>\n </radio-group>\n <div v-else class=\"grey\"><?= $t('No withdrawal method is configured') ?></div>\n <form v-show=\"withdrawType === 'paypal' && paymentData.PayPal\" id=\"paypalForm\" class=\"needs-validation\" novalidate>\n <div v-if=\"withdrawType === 'paypal' && paymentData.PayPal\" class=\"form-control-group\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <span class=\"red\">*</span>\n <?= $t('PayPal Account') ?>\n </label>\n <input type=\"text\" class=\"form-control\" v-model=\"paymentData.PayPal.account_name\" required name=\"paypalAccount\"\n >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input your PayPal account') ?>.</div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <span class=\"red\">*</span>\n <?= $t('Withdrawal Amount') ?> (US$)\n </label>\n <input type=\"number\" class=\"form-control\" step=\"0.01\" v-model=\"paymentData.PayPal.amount\" :max=\"paypalLimit.single_draw_max_amount\" :min=\"paypalLimit.draw_min_amount\"\n name=\"withdrawAmount\" required>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('The amount of a single offer is greater than or equal to') ?> ${{paypalLimit.draw_min_amount | addComma}},<?= $t('Less than') ?> ${{paypalLimit.single_draw_max_amount | addComma}}\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">
1\n <span class=\"red\">*</span>\n <?= $t('Login Password') ?>\n </label>\n <input type=\"password\" class=\"form-control\" v-model=\"paymentData.PayPal.login_pwd\" :pattern=\"formPattern.password\"\n name=\"loginPassword\" required autocomplete=\"off\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input withdrawal password') ?></div>\n <div class=\"valid-tips\"><?= $t('Same as login password') ?>ï¼<a href=\"/findpwd.html\" class=\"main_color_important\"><?= $t('Forgot the password') ?></a></div>\n </div>\n </div>\n </form>\n <!-- é¶è¡è½¬è´¦ -->\n <form v-show=\"withdrawType === 'bank' && paymentData.bank_transfer\" id=\"bankForm\" class=\"needs-validation\" novalidate>\n <div v-if=\"withdrawType === 'bank' && paymentData.bank_transfer\" class=\"form-control-group\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Country') ?></label>\n <div ref=\"countrySelectBox\" class=\"flex-grow-1\"></div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('city') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"paymentData.bank_transfer.city\" required name=\"city\" >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input your city') ?>.</div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('bank address') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"paymentData.bank_transfer.bank_address\" required name=\"bank_address\" >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input bank address') ?>.</div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Name of Bank') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"paymentData.bank_transfer.bank_name\" required name=\"bank_name\" >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input bank name') ?>.</div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Bank Swift Code') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"paymentData.bank_transfer.swift_code\" required name=\"swift_code\" >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input bank swift code') ?>.</div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Account Name') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"paymentData.bank_transfer.account_name\" required name=\"bank_account_name\" autocomplete=\"off\" >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input account name') ?>.</div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Account Number') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"paymentData.bank_transfer.account_number\" required name=\"account_number\" autocomplete=\"off\" >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input account number') ?>.</div>\n </div>\n <!-- å票ç¸å
³ -->\n <template v-if=\"needInvoice\">\n <div v-if=\"paymentData.bank_transfer.invoice_template_file\" class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><?= $t('Download Invoice') ?></label>\n <div class=\"form-group_file d-flex align-items-center\">\n <a :href=\"paymentData.bank_transfer.invoice_template_file\" download=\"invoice_template_file\" class=\"affiliate-file_btn mg-right20\"><?= $t('Template File') ?></a>\n <div class=\"grey\"><?= $t('Please use the template to create your invoice') ?>.</div>\n </div>\n </div>\n <div class=\"form-group file\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Upload Invoice') ?></label>\n <div class=\"form-group_file d-flex align-items-center\">\n <a href=\"#\" class=\"affiliate-file_btn mg-right20\"><?= $t('Select File') ?></a>\n <div class=\"grey\"><?= $t('Only doc, docx, pdf, png, jpeg, jpg files are supported.') ?></div>\n </div>\n <input class=\"form-control form-control-file hidden\" type=\"file\" name=\"file\" autocomplete=\"off\" required @change=\"changeInvoiceFile\" />\n <div class=\"valid-tips-main\" v-if=\"temporaryInvoice\"><?= $t('Current File') ?>ï¼{{temporaryInvoice.name}}</div>\n <div class=\"invalid-feedback\"><?= $t('Please upload the file') ?></div>\n </div>\n </template>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Withdrawal Amount') ?> (US$)</label>\n <input type=\"number\" class=\"form-control\" step=\"0.01\" v-model=\"paymentData.bank_transfer.amount\" :min=\"bankLimit.draw_min_amount\" :max=\"bankLimit.single_draw_max_amount\" required name=\"bank_amount\" >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"></div>\n <div class=\"valid-tips\"><?= $t('The amount of a single offer is greater than or equal to') ?> ${{bankLimit.draw_min_amount | addComma}},<?= $t('Less than') ?> ${{bankLimit.single_draw_max_amount | addComma}}</div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Currency Type') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"paymentData.bank_transfer.currency_type\" required name=\"currency_type\" >\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"></div>\n <div class=\"valid-tips\"><?= $t('The type of currency you expect to receive at the time of bank transfer.') ?></div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><span class=\"red\">*</span><?= $t('Login Password') ?></label>\n <input type=\"password\" class=\"form-control\" v-model=\"paymentData.bank_transfer.login_pwd\" name=\"bank_login_pwd\" :pattern=\"formPattern.password\" required autocomplete=\"off\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Please input withdrawal password') ?></div>\n <div class=\"valid-tips\"><?= $t('Same as login password') ?>ï¼<a href=\"/findpwd.html\" class=\"main_color_important\"><?= $t('Forgot the password') ?></a></div>\n </div>\n </div>\n </form>\n\n <div class=\"form-group withdrawal-submit d-flex align-items-center flex-wrap\">\n <button v-if=\"paymentData.PayPal || paymentData.bank_transfer\" class=\"affiliate-btn affiliate-btn_main mg-left20\" type=\"button\" @click.stop=\"commitWithdrawal\">\n <?= $t('Confirm Withdrawal') ?>\n </button>\n <button class=\"affiliate-btn affiliate-btn_primary mg-left20\" type=\"button\" @click=\"accountView = 'index'\">\n <?= $t('Cancel') ?>\n </button>\n <div class=\"grey mg-left20\"><?= $t('If you have any questions about withdrawalï¼you can contact us at any time') ?>.</div>\n </div>\n </div>\n</div>","/package/components/unit-cart-address":"<div class=\"unit-cart__order unit-cart__content--padding\">\n <link rel=\"stylesheet\" href=\"/assets/plugins/country.css\">\n <!-- å·²ç»å½ -->\n <template v-if=\"window.app.info.user.is_login\">\n <div class=\"unit-cart-address__items\">\n <div class=\"unit-cart__block\">\n <div class=\"unit-cart__block-title\">\n <?= $t('please confirm your shipping address') ?>\n </div>\n <div class=\"unit-cart__block--more\" data-target=\"#addressModal\" data-toggle=\"modal\"\n @click.prevent=\"addAddress($event)\">
1\n <span class=\"iconfont icon-action-add\"></span>\n <?= $t('address') ?>\n </div>\n </div>\n <!-- éä¸å°å -->\n <div class=\"unit-cart-address__item default\" v-if=\"!!order_address\">\n <div class=\"unit-cart-address__info\">\n <dl>\n <dt>\n <?= $t('name') ?>:\n </dt>\n <dd> {{ order_address.first_name }} {{ order_address.last_name }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('phone') ?>:\n </dt>\n <dd :class=\"{invalid: [93, 134].includes(order_address.country_id) && ['1', '+1'].includes(order_address.area_code) && !/^\\d{10}$/.test(order_address.phone)}\">\n <p class=\"item\">({{ order_address.area_code}}){{ order_address.phone }}</p>\n <p class=\"tips\"><?= $t('Phone numbers can only be 10 digits.') ?></p>\n </dd>\n </dl>\n <dl>\n <dt>\n <?= $t('e-mail') ?>:\n </dt>\n <dd>{{ order_address.email }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('address') ?>:\n </dt>\n <dd>{{ order_address.address_one }}, {{ order_address.city }}, {{ order_address.province_en_name }}, {{\n order_address.country_en_name }}</dd>\n </dl>\n </div>\n <div class=\"unit-cart-address__operate\">\n <span class=\"unit-cart-address__operate--default\" v-if=\"order_address.is_default\">\n <?= $t('Default') ?>\n </span>\n </div>\n </div>\n <!-- æ¾ç¤ºææå°å -->\n <div class=\"unit-cart-address__add\" @click=\"is_fold = !is_fold\" v-if=\"address_list.length > 0\">\n <?= $t('all addresses') ?>\n <span class=\"iconfont icon-action-bottom-lighter pr-2\" :class=\"{ 'is_roate': !is_fold }\"></span>\n </div>\n <!-- å°åå表 -->\n <div class=\"unit-cart-address__item\" :class=\"{active: item.is_select}\" v-for=\"(item, index) in address_list\"\n :key=\"`address_list_${index}`\" v-show=\"address_list.length && !is_fold\" @click=\"selectAddress(item, index)\">\n <div class=\"unit-cart__status\"><span class=\"unit-cart__status--choose\" :class=\"{ active: item.is_select }\"></span></div>\n <div class=\"unit-cart-address__info\">\n <dl>\n <dd> {{ item.first_name }} {{ item.last_name }}</dd>\n </dl>\n <dl>\n <dd :class=\"{invalid: [93, 134].includes(item.country_id) && ['1', '+1'].includes(item.area_code) && !/^\\d{10}$/.test(item.phone)}\">\n <p class=\"item\">({{ item.area_code}}){{ item.phone }}</p>\n <p class=\"tips\"><?= $t('Phone numbers can only be 10 digits.') ?></p>\n </dd>\n </dl>\n <dl>\n <dd>{{ item.email }}</dd>\n </dl>\n <dl>\n <dd>{{ item.address_one }}, {{ item.city }}, {{ item.province_en_name }}, {{ item.country_en_name }}</dd>\n </dl>\n </div>\n <div class=\"unit-cart-address__operate\">\n <span class=\"unit-cart-address__operate--del\" @click.stop=\"deleteThisAddress(item, index)\">\n <?= $t('delete') ?>\n </span>\n <span class=\"unit-cart-address__operate--edit\" data-target=\"#addressModal\" data-toggle=\"modal\"\n @click.stop=\"editModalAddress(item, $event)\">\n <?= $t('edit') ?>\n </span>\n </div>\n </div>\n </div>\n <div hidden>\n <div class=\"unit-cart-address__modal-form\" ref=\"addressForm\">\n <form class=\"needs-validation\" novalidate @submit.prevent=\"submitForm($event)\">\n <div class=\"form-group\">\n <label for=\"recipient-name\" class=\"col-form-label\">\n <span class=\"red\">*</span>\n <?= $t('your name') ?>\n </label>\n <input type=\"text\" class=\"form-control\" name=\"first_name\" :pattern=\"formPattern.length\" required\n v-model=\"formData.first_name\" placeholder=\"<?= $t('first name') ?>\">\n <input type=\"text\" class=\"form-control ml-3\" name=\"last_name\" :pattern=\"formPattern.length\" required\n v-model=\"formData.last_name\" placeholder=\"<?= $t('last name') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content cannot be empty and cannot exceed 30') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">
1\n <span class=\"red\">*</span>\n <?= $t('Country') ?>/<?= $t('Region') ?>\n </label>\n <div ref=\"country\" style=\"flex: 1\"></div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <?= $t('State/Province/Territory') ?>\n </label>\n <div ref=\"province\" style=\"flex: 1\"></div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <span class=\"red\">*</span>\n <?= $t('city') ?>\n </label>\n <input type=\"text\" class=\"form-control\" name=\"city\" :pattern=\"formPattern.length\" required\n v-model=\"formData.city\" placeholder=\"<?= $t('city') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content cannot be empty and cannot exceed 30') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <span class=\"red\">*</span>\n <?= $t('address') ?>\n </label>\n <textarea name=\"address\" class=\"form-control\" rows=\"3\" required resize maxlength=\"250\"\n v-model=\"formData.address_one\" placeholder=\"<?= $t('address') ?>\"></textarea>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content can not be blank') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\"><span class=\"red\">*</span>\n <?= $t('zip code') ?>\n </label>\n <input type=\"text\" class=\"form-control\" name=\"zip\" v-model=\"formData.zip_code\" required maxlength=\"50\"\n placeholder=\"<?= $t('zip code') ?>\">\n <div class=\"invalid-feedback\">\n <?= $t('the content cannot be empty') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <span class=\"red\">*</span>\n <?= $t('phone') ?>\n </label>\n <div class=\"row\" style=\"flex: 1 0 0;\">\n <div class=\"col-3\">\n <input type=\"text\" class=\"form-control\" name=\"areaCode\" required v-model=\"formData.area_code\"\n placeholder=\"<?= $t('Area code') ?>\" maxlength=\"8\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback pl-0\">\n <?= $t('Area code can not empty') ?>\n </div>\n </div>\n <div class=\"col-9 pl-0\">\n <input type=\"text\" class=\"form-control\" name=\"phone\" :pattern=\"phone_limit ? formPattern.number_10_digits : formPattern.phone\" required\n v-model=\"formData.phone\" placeholder=\"<?= $t('phone') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback pl-0\" v-if=\"phone_limit\"><?= $t('Phone numbers can only be 10 digits.') ?></div>\n <div class=\"invalid-feedback pl-0\" v-else><?= $t('phone can only be numbers or line') ?></div>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <span class=\"red\">*</span>\n <?= $t('e-mail') ?>\n </label>\n <input type=\"email\" class=\"form-control\" name=\"email\" :pattern=\"formPattern.email\" required\n v-model=\"formData.email\" placeholder=\"<?= $t('e-mail') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('email format does not match') ?>\n </div>\n </div>\n <div class=\"form-group-default\">\n <div class=\"custom-control custom-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" id=\"is_default\" v-model=\"formData.is_default\">\n <label class=\"custom-control-label\" for=\"is_default\">\n <?= $t('save this information for next time') ?>.\n </label>\n </div>\n </div>\n <div class=\"modal-footer base-button\">\n <button type=\"submit\" class=\"unit-cart__button-background\">\n <?= $t('Save') ?>\n </button>\n <button type=\"button\" class=\"unit-cart__button-border\">\n <?= $t('Cancel') ?>\n </button>\n </div>\n </form>\n </div>\n </div>\n </template>\n <!-- æªç»å½ -->\n <template v-else>\n <div class=\"unit-cart__block\">\n <div class=\"unit-cart__block-title\">\n <?= $t('please confirm your shipping address') ?>\n </div>\n <a class=\"unit-cart__block--more pl-2\" href=\"<?=globalThis.Server.getRinseHref('/login.html', site) -?>\">\n <i class=\"iconfont icon-base-user pr-1\"></i>\n <?= $t('sign in') ?>\n </a>\n </div>\n <form class=\"no-login-form needs-validation\" novalidate>\n <div class=\"row\">\n <div class=\"col-12 col-md-3 py-2\">\n <input type=\"text\" class=\"form-control\" name=\"first_name\" :pattern=\"formPattern.length\" required\n v-model=\"formData.first_name\" placeholder=\"<?= $t('first name') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content cannot be empty and cannot exceed 30') ?>\n </div>
1\n <span class=\"unit-form__label col-form-label\"><?= $t('first name') ?></span>\n </div>\n <div class=\"col-12 col-md-3 py-2\">\n <input type=\"text\" class=\"form-control\" name=\"last_name\" :pattern=\"formPattern.length\" required\n v-model=\"formData.last_name\" placeholder=\"*<?= $t('last name') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content cannot be empty and cannot exceed 30') ?>\n </div>\n <span class=\"unit-form__label col-form-label\"><?= $t('last name') ?></span>\n </div>\n <div class=\"col-12 col-md-6 py-2\">\n <div ref=\"country\" style=\"flex: 1\"></div>\n </div>\n <div class=\"col-12 col-md-6 py-2\">\n <div ref=\"province\" style=\"flex: 1\"></div>\n </div>\n <div class=\"col-12 col-md-6 py-2\">\n <input type=\"text\" class=\"form-control\" name=\"city\" :pattern=\"formPattern.length\" required\n v-model=\"formData.city\" placeholder=\"*<?= $t('city') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content cannot be empty and cannot exceed 30') ?>\n </div>\n <span class=\"unit-form__label col-form-label\"><?= $t('city') ?></span>\n </div>\n <div class=\"col-12 py-2\">\n <textarea name=\"address\" class=\"form-control\" rows=\"3\" required resize v-model=\"formData.address_one\"\n placeholder=\"*<?= $t('address') ?>\" maxlength=\"250\"></textarea>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content can not be blank') ?>\n </div>\n <span class=\"unit-form__label col-form-label\"><?= $t('address') ?></span>\n </div>\n <div class=\"col-12 col-md-12 py-2\">\n <input type=\"text\" class=\"form-control\" name=\"zip\" v-model=\"formData.zip_code\" required maxlength=\"50\"\n placeholder=\"*<?= $t('zip code') ?>\">\n <div class=\"invalid-feedback\">\n <?= $t('the content can not be blank') ?>\n </div>\n <span class=\"unit-form__label col-form-label\"><?= $t('zip code') ?></span>\n </div>\n <div class=\"col-12 col-md-6 py-2\">\n <div class=\"row\" style=\"flex: 1 0 0;\">\n <div class=\"col-5 col-sm-4 col-first\">\n <input type=\"text\" class=\"form-control\" name=\"areaCode\" required v-model=\"formData.area_code\"\n placeholder=\"*<?= $t('Area code') ?>\" maxlength=\"8\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('Area code can not empty') ?>\n </div>\n <span class=\"unit-form__label col-form-label\"><?= $t('Area code') ?></span>\n </div>\n <div class=\"col-7 col-sm-8 pl-0\">\n <input type=\"text\" class=\"form-control\" name=\"phone\" :pattern=\"phone_limit ? formPattern.number_10_digits : formPattern.phone\" required\n v-model=\"formData.phone\" placeholder=\"*<?= $t('phone') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\" v-if=\"phone_limit\"><?= $t('Phone numbers can only be 10 digits.') ?></div>\n <div class=\"invalid-feedback\" v-else><?= $t('phone can only be numbers or line') ?></div>\n <span class=\"unit-form__label col-form-label\"><?= $t('phone') ?></span>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-6 py-2\">\n <input type=\"email\" class=\"form-control\" @blur=\"emailBlur\" name=\"email\" :pattern=\"formPattern.email\" required\n v-model=\"formData.email\" placeholder=\"*<?= $t('e-mail') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('email format does not match') ?>\n </div>
1\n <span class=\"unit-form__label col-form-label\"><?= $t('e-mail') ?></span>\n </div>\n <div class=\"col-12 col-md-12 py-2\">\n <div class=\"custom-control custom-checkbox\" style=\"display: inline-block;\">\n <input type=\"checkbox\" @change=\"changeCreateAccount\" class=\"custom-control-input\" id=\"is_create_account\" v-model=\"is_create_account\">\n <label class=\"custom-control-label\" for=\"is_create_account\">\n <?= $t('Create an account?') ?>\n </label>\n </div>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\" id=\"create_account_invalid_feedback\">\n <span v-if=\"formData.email && is_create_account\">\n <?= $t('The email account has been registered, no need to create it.') ?>\n </span>\n <span v-if=\"!formData.email\">\n <?= $t('Please fill in your email address first.') ?>\n </span>\n </div>\n </div>\n <div class=\"col-12 col-md-6 py-2\" v-if=\"is_create_account && !email_is_register\">\n <input type=\"password\" class=\"form-control\" name=\"account_password\" maxlength=\"20\" :pattern=\"account_password_pattern\" required\n v-model=\"account_password\" placeholder=\"*<?= $t('create account password') ?>\">\n <span class=\"unit-form__label col-form-label\"><?= $t('password') ?></span>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('Password contains at least numbers and letters length should be 6-20') ?>\n </div>\n </div>\n </div>\n </form>\n </template>\n</div>","/package/components/unit-cart-header":"<div v-if=\"step===1\">\n <div v-if=\"!window.app.info.user.is_login\" class=\"unit-cart__notlogin\">\n <div class=\"unit-cart__notlogin--text\">\n <?= $t('Login in to synchronize your shopping bag') ?>\n </div>\n <a class=\"unit-cart__notlogin--btn btn\" href=\"<?=globalThis.Server.getRinseHref('/login.html?from=cart', site) -?>\">\n <?= $t('sign in') ?>\n </a>\n </div>\n <div class=\"unit-cart__header\">\n <div class=\"unit-cart__header--name\"><?= $t('my shopping cart') ?></div>\n <div class=\"unit-cart__header--clear\" @click=\"deleteCart()\" v-show=\"selected_pro.length > 0\">
1\n <span class=\"iconfont icon-action-delete-lighter mr-1\"></span>\n <?= $t('delete') ?>\n </div>\n </div>\n</div>","/package/components/unit-cart-list":"<div class=\"unit-cart-list__items\">\n <div class=\"unit-cart-list__foot\">\n <div class=\"unit-cart-list__pack\">\n <div class=\"unit-cart-list__check custom-control custom-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" id=\"customCheckAll\" :checked=\"is_select_all\"\n @change=\"selectAllCart()\">\n <label class=\"custom-control-label\" for=\"customCheckAll\">\n <?= $t('goods') ?>\n </label>\n </div>\n </div>\n </div>\n <div class=\"unit-cart-list__body\">\n <div ref=\"cartListItem\" class=\"unit-cart-list__item\" v-for=\"(groupItem, index) in reductionList\"\n :key=\"`cart${groupItem.groupId}`\">\n <div class=\"unit-cart-list__gorup\" v-if=\"groupItem.groupId\">\n <div class=\"unit-cart-list__gorup--content\">\n <div class=\"unit-cart-list__group--left\">\n <div class=\"unit-cart-list__group-discount-box\">\n <i class=\"iconfont icon-manjian\" style=\"font-size: 150%; flex-shrink: 0;\"></i>\n <div class=\"unit-cart-list__group-discount\">\n <div class=\"unit-cart-list__group-discount-item\" v-for=\"(item, index) in groupItem.contentList\" :key=\"item\">\n <div class=\"unit-cart-list__group-discount-item-txt\">{{ item }}</div>\n </div>\n </div>\n <div class=\"unit-cart-list_group--show\" @click=\"showReduceModal(groupItem)\">\n <span class=\"iconfont icon-base-dot\"></span>\n </div>\n </div>\n <span class=\"unit-cart-list_group--save\" v-if=\"groupItem.save\">\n {{groupItem.save}}\n </span>\n </div>\n <div class=\"unit-cart-list_group--right\">\n <a :href=\"'/reduction_detail/'+groupItem.groupId+'.html'\" class=\"unit-cart-list__group--a\">\n <span><?= $t('Continue Shopping') -?></span>\n <span class=\"iconfont icon-action-left-lighter\" style=\"display: inline-block; transform: rotate(180deg);\"></span>\n </a>\n </div>\n </div>\n </div>\n <div class=\"unit-cart-list__item-content\" v-for=\"(item, item_index) in groupItem.list\"\n :key=\"`cart_item${item.id}`\">\n <div class=\"unit-cart-list__item-info d-flex align-items-center\">\n <div class=\"unit-cart-list__ID\">\n <div class=\"unit-cart-list__check custom-control custom-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" :id=\"`customCheck${item.id}`\"\n :checked=\"item.is_select\" @change=\"singleChoice(item.is_select, item.id)\">\n <label class=\"custom-control-label\" :for=\"`customCheck${item.id}`\"></label>\n </div>\n </div>\n <div class=\"unit-cart-list__item-pro d-flex\">\n <a class=\"unit-cart-list__img\" :href=\"item.cart_product.product_url\">\n <div class=\"unit-cart-list__image\">\n <img :src=\"item.cart_product.thumb_prefix\" :alt=\"item.cart_product.product_title\"\n class=\"unit-cart-list-image__img\">\n </div>\n </a>\n <div class=\"unit-cart-list__item-right d-flex align-items-center\">\n <a class=\"unit-cart-list__name\" :href=\"item.cart_product.product_url\">\n <div class=\"unit-cart-list__text\">\n <div class=\"unit-cart-list__title\">{{ item.cart_product.product_title }}</div>\n <div class=\"unit-cart-list__description\">\n <span v-for=\"attr in item.cart_product.product_attr_detail\" :key=\"attr.title\">\n {{ attr.title }} : {{ attr.content }}\n </span>\n </div>\n <div v-if=\"item.is_discount === 1\" class=\"unit-cart-list__limit\">\n <div class=\"discount-timer is-loaded\">\n <div class=\"discount-timer__title text-truncate\"><?= $t('Sale ends in') ?></div>\n <div class=\"discount-timer__date-wrap discount-timer__date-wrap--day\">\n <div class=\"discount-timer__date discount-timer__date--dd\">\n <em>{{item.countDown.dayStr}}</em><i>
1d</i>\n </div>\n </div>\n <div class=\"discount-timer__date-wrap discount-timer__date-wrap--time\">\n <div class=\"discount-timer__date discount-timer__date--hh\">\n <em>{{item.countDown.hourStr}}</em><i>:</i>\n </div>\n <div class=\"discount-timer__date discount-timer__date--mm\">\n <em>{{item.countDown.minuteStr}}</em><i>:</i>\n </div>\n <div class=\"discount-timer__date discount-timer__date--ss\">\n <em>{{item.countDown.secondStr}}</em>\n </div>\n </div>\n </div>\n </div>\n </div>\n </a>\n <div class=\"unit-cart-list__price\">\n <span>${{ item.unit_price.toFixed(2) }}</span>\n <del v-if=\"item.cost_price\">${{ item.cost_price.toFixed(2) }}</del>\n <span v-if=\"item.is_discount === 1\" class=\"cart-list-dis\">{{item.discount_percent}}% <?= $t('Off') ?></dspanel>\n </div>\n <div class=\"unit-cart-list__quantity\">\n <div class=\"unit-cart-list__quantity-div\">\n <span class=\"minus\" @click=\"updateAmount(item.id, 'minus')\">\n <span class=\"iconfont icon-action-minus\"></span>\n </span>\n <input type=\"number\" v-model=\"item.quantity\" @change=\"inputMount(item.quantity, item.id, item)\">\n <span class=\"increase\" @click=\"updateAmount(item.id, 'add')\">\n <span class=\"iconfont icon-action-plus\"></span>\n </span>\n </div>\n <div class=\"unit-cart-list__quantity-moq\" v-if=\"item.cart_product.product_moq > 1\">\n <span class=\"unit-cart-list__quantity-moq-num\">{{ item.cart_product.product_moq }}</span>\n Piece (<?= $t('MOQ') ?>)\n </div>\n </div>\n <div class=\"unit-cart-list__total\">\n ${{ item.total_price.toFixed(2) }}\n </div>\n <div class=\"unit-cart-list__operation d-flex align-items-center\">\n <div class=\"unit-cart-list__operation-item unit-cart-list__operation-view\"\n @click=\"deleteCartSetLike(item)\">\n <i class=\"unit-cart-list__operation-icon iconfont icon-action-move-to-favorite\"></i>\n <span class=\"unit-cart-list__operation-text\">\n <?= $t('Save in wishlist') ?>\n </span>\n </div>\n <div class=\"unit-cart-list__operation-item unit-cart-list__operation-delete\"\n @click=\"deleteSingleCart(item)\">\n <i class=\"unit-cart-list__operation-icon iconfont icon-action-delete-lighter\"></i>\n <span class=\"unit-cart-list__operation-text\">\n <?= $t('delete') ?>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-cart-list__coupon-list\">\n <div class=\"unit-cart-list__coupon\" v-if=\"item.cart_product.coupon && item.cart_product.coupon.length>0\">\n <div class=\"unit-cart-list__coupon-box\">\n <div class=\"unit-cart-list__coupon--div\" v-for=\"(coupon,index) in item.coupon\" v-show=\"coupon.isShow\">\n <span class=\"unit-cart-list_coupon--sapn\">{{coupon.title}}</span>\n </div>\n </div>\n <div v-if=\"item.coupon.length>4\" class=\"unit-cart-list__coupon--detail\" @click.stop=\"moreCoupon(item)\">\n <i class=\"unit-cart-list__coupon--detail_icon iconfont icon-action-bottom-lighter\"\n :class=\"{'rotate-icon':item.isShowMore}\"></i>\n </div>\n </div>\n <div v-else></div>\n <div class=\"unit-cart-list__operation-m\"\n :style=\"{'margin-left': item.cart_product.coupon && item.cart_product.coupon.length>0 ? '20px' : ''}\">\n <div class=\"unit-cart-list__operation-icon\" @click.stop=\"deleteOperation(item)\">\n <i class=\"iconfont icon-base-dot\"></i>\n </div>\n <div class=\"unit-cart-list__operation-items\" :class=\"{'d-none': !item.showDelete}\">\n <div class=\"unit-cart-list__operation-items-item\" @click.stop=\"deleteCartSetLike(item)\">\n <i class=\"iconfont icon-action-move-to-favorite\"></i>
1\n <span>\n <?= $t('Save in wishlist') ?>\n </span>\n </div>\n <div class=\"unit-cart-list__operation-items-item\" @click.stop=\"deleteSingleCart(item)\">\n <i class=\"iconfont icon-action-delete-lighter\"></i>\n <span>\n <?= $t('delete') ?>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-cart-message":"<div class=\"unit-cart__message unit-cart__content--padding\">\n <div class=\"unit-cart__block\">\n <div class=\"unit-cart__block-title\"><?= $t('message') ?></div>\n </div>\n <div class=\"unit-cart__block-attachmentUpload\" @click=\"clickInvoiceFile\">\n <input ref=\"formControlFile\" hidden type=\"file\" name=\"file\" autocomplete=\"off\" required @change=\"changeInvoiceFile\" />\n <span class=\"iconfont icon-action-plus\"></span>\n <span class=\"unit-cart__block-attachmentUpload-text\">Upload attachments</span>\n </div>\n <div v-if=\"attachmentsLoading||+attachments.length\" class=\"unit-cart__block-attachmentUpload-viewList\">\n <div class=\"unit-cart__block-attachmentUpload-list\" v-if=\"attachmentsLoading\">\n <div>Uploading...</div>\n </div>\n <div v-for=\"(item,index) in attachments\" class=\"unit-cart__block-attachmentUpload-list\">\n <div>{{item.name}}</div>
1\n <span class=\"iconfont icon-base-close-fill\" @click=\"delAttachmentUploadFiles(attachments,index)\"></span>\n </div>\n </div>\n <div class=\"unit-cart-checkout__items\">\n <textarea type=\"text\" class=\"form-control\" placeholder=\"<?= $t('Order notes, optional') ?>\" \n v-model=\"order_remarks\" :pattern=\"formPattern.message\" rows=\"3\" maxlength=\"1000\"></textarea>\n </div>\n</div>","/package/components/unit-cart-nodata":"<div class=\"unit-cart-list__nodata\">\n <div class=\"image\">\n <img src=\"https://img.yfisher.com/1597193973833.png\" alt=\"Your shopping cart is empty\">\n </div>\n <p class=\"unit-cart-list__nodata--title\"> <?= $t('your shopping cart is empty') ?>.</p>\n <div class=\"unit-cart-list__nodata--button\">\n <a href=\"<?=globalThis.Server.getRinseHref('/', site) -?>\" class=\"unit-cart__button-background\"> <?= $t('Continue Shopping') ?></a>\n </div>\n</div>","/package/components/unit-cart-package":"<div class=\"unit-cart__shipping unit-cart__content--padding\"\n v-for=\"(order, key, index) in calcProductOrder(order_product)\">\n <div class=\"unit-cart__block\">\n <div class=\"unit-cart__block-title\">\n <?= $t('package') ?> {{ index+1 }}\n </div>\n </div>\n <div class=\"unit-cart-shipping__items\">\n <div class=\"unit-cart-product_body\" v-for=\"(item, i) in order.resultData\" :key=\"i\">\n <div class=\"unit-cart-shipping__item\" v-for=\"(cart, index) in item.datas\" :key=\"`shipping_${index}`\">\n <div class=\"unit-cart-shipping__image\">\n <img :src=\"cart.cart_product.thumb_prefix\" :alt=\"cart.cart_product.product_title\" class=\"unit-cart-image__img\">\n </div>\n <div class=\"unit-cart-shipping__text\">\n <div class=\"unit-cart-shipping__txt\">\n <div class=\"unit-cart-shipping__title\">{{ cart.cart_product.product_title }}</div>\n <div class=\"unit-cart-shipping__description\">\n <span v-for=\"attr in cart.cart_product.product_attr_detail\" :key=\"attr.title\">\n {{ attr.title }} : {{ attr.content }}\n </span>\n </div>\n </div>\n <div class=\"unit-cart-shipping__price\">\n <span>${{ cart.unit_price }}</span>\n <del v-show=\"cart.cost_price !== cart.unit_price\">${{ cart.cost_price }}</del>\n <p>x{{ cart.quantity }}</p>\n </div>\n </div>\n </div>\n <div class=\"unit-cart-shipping__inner\" v-if=\"item.logistics\">\n <div class=\"unit-cart__logistics\">\n <div class=\"unit-cart__block\">\n <div class=\"unit-cart__block-title\">\n <?= $t('Shipping Method') ?>\n </div>\n </div>\n <!-- 妿䏿¯æ¸¸å®¢ï¼å¹¶ä¸æ²¡æéä¸å°å -->\n <template v-if=\"!formData.country_id && (!order_address || !order_address.country_id)\">\n <div class=\"unit-cart__address-shipping\">\n <?= $t('Please enter your address to view shipping') -?>\n </div>\n </template>\n <!-- 妿䏿¯å
è´¹é®ï¼å¹¶ä¸æ²¡æç©æµ -->\n <template v-else-if=\"item.logistics.length===0&&key!=='free'\">\n <div class=\"unit-cart__address-shipping\">\n <?= $t('This Supplier/Shipping Company does not deliver to your selected Country/Region.') ?>\n </div>\n </template>\n <template v-else>\n <p v-if=\"!item.logistics.length && key === 'free'\">\n <?= $t('Free Shipping') ?>\n </p>\n <div class=\"unit-cart__logistics-item\" v-for=\"child in item.logistics\" :key=\"child.id\"\n @click=\"changeLogistics(child, key, item.shipment_method_ids)\" v-if=\"item.logistics.length\">\n <div class=\"unit-cart__status\"><span class=\"unit-cart__status--choose\"\n :class=\"{ active: child.is_select }\"></span></div>\n <div class=\"unit-cart__logistics-info\">\n <div class=\"name\">{{ child.shipment_name }}</div>\n <div class=\"description\">{{ child.shipping_tips }}</div>\n <div class=\"price\">\n <template v-if=\"!Array.isArray(child.shipment_cost_range)\">${{ child.shipment_cost_range.min_cost }}ï½{{ child.shipment_cost_range.max_cost }}</template>\n <template v-else-if=\"child.shipment_cost>0\">${{ child.shipment_cost }}</template>\n <template v-else-if=\"child.shipment_cost===0&&child.shipment_reduction_amount!==0\">\n <?= $t('Free shipping discount') ?>\n </template>\n <template v-else-if=\"child.shipment_cost===0&&child.shipment_reduction_amount===0\">\n <?= $t('Free Shipping') ?>\n </template>\n </div>\n </div>\n </div>\n </template>\n </div>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-cart-payment":"<div class=\"unit-cart__pay unit-cart__content--padding\">\n <div class=\"unit-cart__block\">\n <div class=\"unit-cart__block-title\">\n <?= $t('payment methods') ?>\n </div>\n </div>\n <div class=\"unit-cart-pay__items\">\n <template v-for=\"(item, index) in payType\">\n <div class=\"unit-cart-pay__item\" :key=\"index\" @click=\"changePayType(item.id, 1)\">\n <div class=\"unit-cart__status\">
1\n <span class=\"unit-cart__status--choose\" :class=\"{active: item.isChoose}\"></span>\n </div>\n <div class=\"unit-cart-pay__info\">\n <div class=\"unit-cart-pay__info-title\">{{ item.name }}</div>\n <div class=\"unit-cart-pay__image\">\n <img :src=\"item.img\" :alt=\"item.name\">\n </div>\n </div>\n </div>\n <template v-if=\"item.is_credit_card === 1\">\n <div v-show=\"is_credit_card\" class=\"unit-cart-pay__credit-card\">\n <h5>\n <?= $t('Billing Address') ?>\n </h5>\n <div class=\"form-group-default unit-cart-pay__credit-card_checkbox\">\n <div class=\"custom-control custom-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" id=\"is_same_address\" v-model=\"is_same_address\" @change=\"initCreditAddressSelect\">\n <label class=\"custom-control-label\" for=\"is_same_address\">\n <?= $t('Same as shipping address') ?>\n </label>\n </div>\n </div>\n <form v-show=\"!is_same_address\" class=\"unit-cart-pay__form\" novalidate>\n <div class=\"row\">\n <div class=\"form-group col-6 col-md-3\">\n <input type=\"text\" class=\"form-control\" name=\"first_name\" :pattern=\"formPattern.length\" required\n v-model=\"creditformData.first_name\" placeholder=\"*<?= $t('first name') ?>\">\n </div>\n <div class=\"form-group col-6 col-md-3 unit-cart-pay__form-group__last_name\">\n <input type=\"text\" class=\"form-control\" name=\"last_name\" :pattern=\"formPattern.length\" required\n v-model=\"creditformData.last_name\" placeholder=\"*<?= $t('last name') ?>\">\n </div>\n <div class=\"form-group col-md-6\">\n <input type=\"number\" class=\"form-control\" name=\"phone\" :pattern=\"formPattern.phone\" required\n v-model=\"creditformData.phone\" placeholder=\"*<?= $t('phone') ?>\">\n </div>\n </div>\n <div class=\"row\">\n <div class=\"form-group col-md-6\">\n <div ref=\"creditCountry\" style=\"flex: 1\"></div>\n </div>\n <div class=\"form-group col-md-6\">\n <div ref=\"creditProvince\" style=\"flex: 1\"></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"form-group col-md-6\">\n <input type=\"text\" class=\"form-control\" name=\"city\" :pattern=\"formPattern.length\" required\n v-model=\"creditformData.city\" placeholder=\"*<?= $t('city') ?>\">\n </div>\n <div class=\"form-group col-md-6\">\n <input type=\"text\" class=\"form-control\" name=\"zip\" :pattern=\"formPattern.number\" required\n v-model=\"creditformData.address_one\" placeholder=\"*<?= $t('address') ?>\" maxlength=\"250\">\n </div>\n </div>\n <div class=\"row\">\n <div class=\"form-group col-md-6\">\n <input type=\"text\" class=\"form-control\" name=\"zip\" maxlength=\"50\" required\n v-model=\"creditformData.zip_code\" placeholder=\"*<?= $t('postal code') ?>\">\n </div>\n <div class=\"form-group col-md-6\">\n <input type=\"email\" class=\"form-control\" name=\"email\" :pattern=\"formPattern.email\" required\n v-model=\"creditformData.email\" placeholder=\"*<?= $t('e-mail') ?>\">\n </div>\n </div>\n </form>\n </div>\n </template>\n </template>\n </div>\n</div>","/package/components/unit-cart-tab":"<div class=\"unit-cart__tab\">\n <ul>\n <li :class=\"{ active: step === 1, ok: step === 2 }\">\n <span><?= $t('shopping bag') ?></span>\n </li>\n <li :class=\"{ active: step === 2 }\">
1\n <span><?= $t('place order') ?></span>\n </li>\n <li>\n <span><?= $t('pay') ?></span>\n </li>\n <li>\n <span><?= $t('order complete') ?></span>\n </li>\n </ul>\n</div>","/package/components/unit-cart-total-price":"<div class=\"unit-cart__account\">\n <div class=\"unit-cart__account-text\"\n :class=\"{ 'unit-cart__account-show--m': is_mobile_coupon_show && step === 1, 'unit-cart__account-hide--m': step === 1 }\">\n <div v-if=\"globalConfig.has_coupon_code || hasCoupon || hasChooseCoupon\" class=\"unit-cart__account--title\" v-show=\"step === 1||(step === 2&&!order_detail.id)\">\n <div class=\"unit-cart__account--info\">\n <span>\n <?= $t('order summary') ?>\n </span>\n <span class=\"iconfont icon-action-close-2 close\" @click=\"toggleCouponMobile\" v-if=\"step !== 2\"></span>\n </div>\n <div class=\"unit-cart__account-discount-total\">\n <div v-if=\"globalConfig.has_coupon_code\" class=\"unit-cart__account-discount-total--radio-box\">\n <div class=\"unit-cart__account-discount-total--radio\" @click=\"onRadio(2)\">\n <div class=\"unit-cart__status\">\n <span class=\"unit-cart__status--choose\" :class=\"{active: checkValue===2}\"></span>\n </div>\n <span class=\"unit-cart__account-discount-total--radio-text\">\n <?= $t('Coupon code') -?>\n </span>\n </div>\n <div v-show=\"checkValue===2\" class=\"input-group unit-cart__promotion--code\">\n <div class=\"unit-cart__promotion--code-warp\" ref=\"coupon_code\">\n <template v-if=\"couponCode.ok\">\n <input v-model=\"couponCode.value\" disabled=\"disabled\" type=\"text\" maxlength=\"18\"\n class=\"form-control unit-cart__promotion--text\" placeholder=\"<?= $t('Coupon code') -?>\">\n <span class=\"iconfont icon-action-close-2 close\" @click=\"clearCouponCode\"></span>\n </template>\n <template v-if=\"!couponCode.ok\">\n <input v-model=\"couponCode.value\" type=\"text\" class=\"form-control unit-cart__promotion--text\"\n placeholder=\"<?= $t('Coupon code') -?>\" maxlength=\"18\" @input=\"onInputCode\" @focus=\"onInputFocus\">\n </template>\n </div>\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary unit-cart__promotion--button\" type=\"button\"\n @click=\"onApplyCouponCode\"><?= $t('Apply') -?></button>\n </div>\n </div>\n <div v-show=\"checkValue===2&&couponCode.messages\" class=\"unit-cart__promotion-message\">\n <span :class=\"{'red':!couponCode.ok}\">{{couponCode.messages}}</span>\n </div>\n <div class=\"unit-cart_acount-discount-get-coupons\" v-if=\"checkValue===2 && hasCode\">\n <span class=\"unit-cart_acount-discount-get-coupons--gray\">\n <?= $t('The best discount, here') -?>\n </span>\n <a class=\"unit-cart_acount-discount-get-coupons--link\" href=\"javascript:;\" @click=\"onShowCoupon('code')\"><?= $t('Get coupons') -?></a>\n </div>\n </div>\n <div v-if=\"hasCoupon || hasChooseCoupon\" class=\"unit-cart__account-discount-total--radio-box\">\n <div class=\"unit-cart__account-discount-total--radio\" @click=\"onRadio(1)\">\n <div class=\"unit-cart__status\">\n <span class=\"unit-cart__status--choose\" :class=\"{active: checkValue===1}\"></span>\n </div>\n <span class=\"unit-cart__account-discount-total--radio-text\"><?= $t('Coupon discount') -?></span>\n </div>\n <div v-show=\"checkValue===1\" class=\"unit-cart__account-discount-total--dropdown dropdown\">\n <button class=\"btn btn-secondary dropdown-toggle\" type=\"button\" @click.stop=\"showDropdown\">\n {{selectedCoupon}}\n </button>\n <div v-show=\"showSelectCoupon\" class=\"div-show\">\n <div class=\"dropdown-menu\">\n <template v-if=\"filterCouponList.length>0\">\n <a v-for=\"(item,index) in filterCouponList\" :key=\"index\" class=\"dropdown-item\"\n :class=\"{'disabled': !item.isUse}\" href=\"javascript:;\"\n @click.stop=\"onSelectCoupon(item)\">{{item.showValue}}</a>\n </template>\n <template v-if=\"filterCouponList.length<=0\">\n <a>\n <?= $t('No coupons') -?>\n </a>\n </template>\n </div>\n </div>\n </div>\n <div class=\"unit-cart_acount-discount-get-coupons\" v-if=\"checkValue===1 && hasCoupon\">
1\n <span class=\"unit-cart_acount-discount-get-coupons--gray\">\n <?= $t('The best discount, here') -?>\n </span>\n <a class=\"unit-cart_acount-discount-get-coupons--link\" href=\"javascript:;\"\n @click=\"onShowCoupon('ticket')\"><?= $t('Get coupons') -?></a>\n </div>\n </div>\n <div class=\"unit-cart__account-discount-total--radio-box\" hidden>\n <div class=\"unit-cart__account-discount-total--radio\" @click=\"onRadio(0)\">\n <div class=\"unit-cart__status\">\n <span class=\"unit-cart__status--choose\" :class=\"{active: checkValue===0}\"></span>\n </div>\n <span class=\"unit-cart__account-discount-total--radio-text\"><?= $t('Do not use any discount') -?></span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-cart__account-total\">\n <dl v-if=\"!(globalConfig.has_coupon_code || hasCoupon)\">\n <dt>\n <span class=\"unit-cart__account--no-discount-title\">\n <?= $t('order summary') ?>\n </span>\n </dt>\n <dd></dd>\n </dl>\n <dl>\n <dt>\n <?= $t('Subtotal') ?>\n </dt>\n <dd v-html=\"'$' + (selected_original_price || 0).toFixed(2)\"></dd>\n </dl>\n <dl v-show=\"selected_discount_price > 0\">\n <dt>\n <?= $t('Event discount') ?>\n </dt>\n <dd>-${{ (selected_discount_price || 0).toFixed(2) }}</dd>\n </dl>\n <dl v-show=\"selected_reduction_price > 0\">\n <dt>\n <?= $t('Discount') ?>\n </dt>\n <dd>-${{ selected_reduction_price }}</dd>\n </dl>\n <dl v-show=\"selected_coupon_price > 0\">\n <dt>\n <?= $t('Coupons') ?>\n </dt>\n <dd>-${{ (selected_coupon_price || 0).toFixed(2) }}</dd>\n </dl>\n <dl v-show=\"selected_code_price > 0\">\n <dt>\n <?= $t('Coupon') ?>\n </dt>\n <dd>-${{ (selected_code_price || 0).toFixed(2) }}</dd>\n </dl>\n <dl v-show=\"step === 2 && !isOrderDisable\">\n <dt>\n <?= $t('Shipping') ?>\n </dt>\n <dd>${{ (logistics_price || 0).toFixed(2) }}</dd>\n </dl>\n <dl v-show=\"step === 2 && !isOrderDisable && surcharge_price > 0\">\n <dt>\n <?= $t('Surcharge') ?>\n </dt>\n <dd>${{ (surcharge_price || 0).toFixed(2) }}</dd>\n </dl>\n <dl class=\"last\" @click=\"toggleCouponMobile\">\n <dt>\n <?= $t('Total') ?>\n </dt>\n <dd v-html=\"'$' + (orderTotalPrice || 0).toFixed(2)\"></dd>\n </dl>\n <div class=\"tips\" @click=\"toggleCouponMobile\">\n <span class=\"iconfont icon-base-gift\" style=\"color: #f00;\"></span>\n <?= $t('Use discounts') -?>\n </div>\n </div>\n </div>\n <div class=\"unit-cart__account-button\" :class=\"{'unit-cart__account-button--create': step === 2}\">\n <div class=\"unit-cart__account-button--next base-button\">\n <button @click=\"cartNextStep\" v-show=\"step===1\" class=\"unit-cart__button-background\" type=\"button\"\n :disabled=\"isOrderDisable\">\n <?= $t('checkout') ?>\n </button>\n <button @click=\"cartNextStep\" v-show=\"step!==1 && payment_type !== 11\" class=\"unit-cart__button-background\"\n type=\"button\" :disabled=\"isOrderDisable\">\n <?= $t('place order') ?>\n </button>\n <div v-show=\"payment_type === 11 && step!==1\" id=\"paypalCheckoutContainer\"></div>\n <a href=\"/cart.html?from=checkout\" v-show=\"step!==1\" class=\"unit-cart__text-return\">\n <?= $t('Return to cart') ?>\n </a>\n </div>\n </div>\n <div class=\"unit-cart__account-mask\" :class=\"{ 'show': is_mobile_coupon_show }\" @click=\"toggleCouponMobile\"></div>\n <div hidden>\n <div ref=\"couponModel\" class=\"unit-cart__account_model\">\n <div ref=\"couponModelContent\" class=\"unit-cart__account_model--content\">\n </div>\n </div>\n </div>\n</div>","/package/components/unit-content-list-card__image":"<?\n let list_config = package.config.list\n let image_config = package.config.image || {}\n let video_config = package.config.video || {}\n if (video_config) {\n video_config.scale = image_config.scale || ''\n video_config.effect = image_config.effect || 0\n }\n let show_img = list_config.show_img % 10\n let has_nofollow = list_config.has_nofollow\n\n let hoverImg = package.content.hover_img || false\n let hoverImgEffect = package.content.hover_img_effect.split(',')\n let hoverImgIn = hoverImgEffect[0] || ''\n let hoverImgOut = hoverImgEffect[1] || ''\n let hoverImgDuration = hoverImgEffect[2] || ''\n\n let isDetailContent = package.content.type === 'detail'\n?>\n<? if (show_img) { -?>\n <a class=\"unit-list__image align-self <? if (list_config.target === 'zoom') { -?>unit-list__image--zoom<? }-?>\" <? if (list_config.target !== 'zoom') { -?> href=\"<?= list_config.target === 'block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= (list_config.target==='block'?'_self':list_config.target) || item.target || '_self' ?>\"<? } else { -?>zoom-img=\"true\"<? } -?> rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" content-render=\"product_hover<?= video_config && video_config.icon === '1' ? ',video_icon' : '' ?>\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" <?- hoverImg ? `open-hover=\"${package.content?.hover_img_effect}\" hover-img=\"true\"` : '' -?> <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config, from: from, index: subIndex, hover_img_origin: hoverImg , isDynamic: !isDetailContent } } }) -?>\n <? if ( item.video_url ) { ?> <div class=\"base-video__play\"><i class=\"iconfont icon-action-play\"></i></div> <? } ?>\n <? if (hoverImg && item?.content_id) {\n item.alt = item.title\n -?>\n <div class=\"unit-list-hover__image hover_img_before_load animate__animated <?= hoverImgDuration -?>\">\n <img class=\"base-image__img img-fluid animate__animated <?= hoverImgDuration -?>\" effect-in=\"<?= hoverImgIn -?>\" effect-out=\"<?= hoverImgOut -?>\" lazy-src=\"<?= parseInt(item?.content_id) ? item.hover_img : '' ?>\" alt=\"<?= item.alt ?>\">\n </div>\n <? } -?>\n </a>\n<? } -?>\n\n<?- include(getViewsPath(`/package/components/unit-content-list-text`), { package, item, from, subIndex }) -?>","/package/components/unit-content-list-card__video":"<?\n let list_config = package.config.list\n let image_config = package.config.image || {}\n let video_config = package.config.video || {}\n if (video_config) {\n video_config.scale = image_config.scale || ''\n video_config.effect = image_config.effect || 0\n }\n let show_img = list_config.show_img % 10\n let has_nofollow = list_config.has_nofollow\n let isDetailContent = package.content.type === 'detail'\n?>\n<? if (show_img) { -?>\n <a class=\"unit-list__video\"\n target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\"\n rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\"\n content-type=\"<?= item.content_type ?>\"\n content-id=\"<?= item.content_id -?>\" <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?>\n content-render=\"product_hover,video_icon\"\n hover-img=\"true\"\n <?- ((isDetailContent && item.is_allow_gif && item.video_gif) || (!isDetailContent && item.video_gif)) ? `video-gif=\"${item.video_gif}\"` : '' -?>\n >\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'xg-video', config: { ...item, config: { ...video_config, ...image_config}, from: from, index: subIndex } } }) -?>\n </a>\n<? } -?>\n\n<?- include(getViewsPath(`/package/components/unit-content-list-text`), { package, item, from, subIndex }) -?>","/package/components/unit-content-list-text":"<?\n let content_list_config = package.config.content_list\n let list_config = package.config.list\n\n let has_title = list_config.has_title === undefined ? show_title : list_config.has_title\n let has_subtitle = list_config.has_subtitle === undefined ? show_subtitle : list_config.has_subtitle\n let has_description = list_config.has_description === undefined ? show_description : list_config.has_description\n let show_title = content_list_config.show_title % 10\n let show_content_tag = content_list_config.show_content_tag % 10\n let show_subtitle = content_list_config.show_subtitle % 10\n let show_description = content_list_config.show_description % 10\n \n let show_date_show = content_list_config.show_date_show % 10\n let show_date_yyyy = content_list_config.show_date_yyyy || 1\n let show_date_mm = content_list_config.show_date_mm || 1\n let show_date_dd = content_list_config.show_date_dd || 1\n let show_like_count = content_list_config.show_like_count % 10\n let show_reads = content_list_config.show_reads % 10\n let show_keywords = list_config.show_keywords % 10\n let show_read_more = content_list_config.show_read_more % 10\n let date_and_button = list_config.date_and_button\n let date_title = list_config.date_title\n\n let has_nofollow = list_config.has_nofollow\n \n let isDetailContent = package.content.type === 'detail'\n\n const formatTime = (time) => {\n if (!time) return ''\n return globalThis.Server.formatTimeAgo(time, site.language_code)\n }\n?>\n<div class=\"unit-list__text\">\n <div class=\"unit-list__text-inner\">\n <? if (show_date_show || (has_title && show_title) || show_content_tag || (has_subtitle && show_subtitle) || (has_description && show_description) || show_like_count || show_reads) { -?>\n <div class=\"unit-list__content\">\n <? if (show_date_show) { -?>\n <div class=\"unit-list__date\" text-style=\"<?= list_config.style_type_date ?>
1\" <? if (show_date_show > 1) { -?>display-style=\"<?= show_date_show ?>\"<? } -?>>\n <?= formatTime((item.update_time)) -?>\n </div>\n <? } -?>\n\n <? if (has_title && show_title && item.title) { -?>\n <div class=\"unit-list__title\" \n text-style=\"<?= list_config.style_type_title ?>\" \n <? if (show_title > 1) { -?> display-style=\"<?= show_title ?>\" <? } -?> \n <?- list_config.title_animate ? 'content-animate=\"' + list_config.title_animate + '\"' : '' ?>\n >\n <a class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.title_sign || '' ?>\" toolbar=\"false\"<? } -?> href=\"<?= list_config.target==='block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" title=\"<?= (item.caption || '').replace(/<[^>]+>/g, '') ?>\"><?- item.title ?></a>\n </div>\n <? } -?>\n <? if (show_content_tag && item.tag_list.length) { -?>\n <div class=\"unit-list__tags\" text-style=\"3\"\n <? if (show_content_tag > 1) { -?>\n display-style=\"<?= show_content_tag ?>\"\n <? } -?>\n >\n <?- item.tag_list.map(item => `<a class=\"unit-list__tag\" href=\"${globalThis.Server.getRinseHref(item.page_url_suffix, site)}\" title=\"${item.title}\">#${item.title}</a>`).join('') ?>\n </div>\n <? } -?>\n <? if (has_subtitle && show_subtitle && item.subtitle) { -?>\n <div class=\"unit-list__subtitle\"\n text-style=\"<?= list_config.style_type_subtitle ?>\"\n <? if (show_subtitle > 1) { -?>display-style=\"<?= show_subtitle ?>\"<? } -?>\n >\n <div class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.subtitle_sign || '' ?>\" toolbar=\"false\"<? } -?>><?- item.subtitle ?></div>\n </div>\n <? } -?>\n\n <? if (has_description && show_description && item.description) { -?>\n <? const filterHtml = globalThis.Server.removeHtmlTags(`${item?.description || ''}`) -?>\n <div\n class=\"unit-list__description\"\n text-style=\"<?= list_config.style_type_description ?>\"\n title=\"<?- package.content.type === 'detail' ? '' : filterHtml.replace(/<br[\\s\\/]*>/ig, ' ') ?>\"\n <? if (show_description > 1) { -?>\n display-style=\"<?= show_description ?>\"\n <? } -?>\n >\n <div\n class=\"text_ellipsis\"\n <? if (isDetailContent) { -?>\n _html=\"<?= item.description_sign || '' ?>\" toolbar=\"false\"\n <? } -?>\n ><?- package.use_html ? item?.description : filterHtml -?>\n </div>\n </div>\n <? } -?>\n\n <? if (show_like_count || show_reads) { -?>\n <div class=\"unit-list__count-wrap\" text-style=\"<?= list_config.style_type_count ?>\">\n <? if (show_reads) { -?>\n <div class=\"unit-list__reads unit-list__count-item\" <? if (show_reads > 1) { -?>display-style=\"<?= show_reads ?>\"<? } -?>>\n <i class=\"iconfont icon-eye\"></i>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= globalThis.Server.transformNumber(item.browse_count) ?></span>\n <span class=\"unit-list__count-name\"> <?= $t('views') -?></span>\n </div>\n <? } -?>\n <? if (show_like_count) { -?>\n <div class=\"unit-list__count-split <?= !show_reads ? 'd-none' : '' ?>\" <? if (show_reads > 1) { -?>display-style=\"<?= show_reads ?>\"<? } -?>></div>\n <div class=\"unit-list__like_count unit-list__count-item\" <? if (show_like_count > 1) { -?>display-style=\"<?= show_like_count ?>\"<? } -?>>\n <i class=\"iconfont icon-base-like-fill\"></i>\n <span content-render=\"like_count\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= globalThis.Server.transformNumber(item.like_count) ?></span>
1\n <span class=\"unit-list__count-name\"> <?= $t('likes') -?></span>\n </div>\n <? } -?>\n </div>\n <? } -?>\n </div>\n <? } -?>\n\n <? if (show_read_more) { -?>\n <? if ((!isDetailContent || !list_config.hide_button || !list_config.hide_button.includes(subIndex + 1)) && !date_and_button) { -?>\n <div class=\"read_more\" button-style=\"<?= list_config.style_type_button ?>\" <? if (show_read_more > 1) { -?>display-style=\"<?= show_read_more ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, description: list_config.button_text || $t('read more'), isDetailContent: isDetailContent, has_nofollow: has_nofollow, target: list_config.target || item.target || '_self' } } }) -?>\n </div>\n <? } -?>\n <? } -?>\n </div>\n</div>","/package/components/unit-product-detail-album":"<?\nlet image_config = package.config.image\nlet album_list = page.album_list\nlet videoType = ''\nlet video_url = ''\n// console.log('config', package.config)\n// console.log('video config', package.config.video)\nlet video_config = package.config.video\n// console.log('video_config', video_config)\nif (album_list.length) {\n let main_pic = album_list[0]\n video_url = main_pic.video_url || ''\n if (main_pic) {\n if (video_url.indexOf('url_inline') > 0) videoType = 'url_inline'\n else if (video_url.indexOf('video_inline') > 0 && main_pic.album_type === 2) videoType = 'video_inline'\n else if (/\\.mp4/i.test(video_url) ) videoType = 'local'\n }\n}\n\nlet url_3d = ''\nlet poster_3d = ''\nlet poster_3d_mini = ''\nconst data3d = page['3d_display_list']\nif (data3d) {\n url_3d = data3d['glb_file'] || ''\n poster_3d = data3d['img_file'] || ''\n poster_3d_mini = '//img.yfisher.com/static/3d-icon.svg'\n}\n\nlet exclude_3d = false\nfor (let i = 0; i < album_list.length; i++) {\n if (album_list[i]['album_type'] === 13) {\n exclude_3d = true\n break\n }\n}\nif (url_3d && !exclude_3d) {\n album_list.splice(1, 0, {album_type: 13, alt: '3d model', img: poster_3d_mini, video_url: ''})\n}\n?>\n<div class=\"unit-detail-album\">\n <link rel=\"stylesheet\" href=\"/assets/plugins/image-zoom.css\">\n <div class=\"unit-detail-album__content\">\n <div class=\"unit-detail-album__picture\">\n <? if(videoType !== '' && false){ ?>\n <div class=\"unit-detail-album__video-box 321\">\n <div class=\"unit-detail-album__video\">\n <span class=\"iconfont icon-action-close unit-detail-album__video-close\"></span>\n </div>\n </div>\n <span class=\"iconfont icon-action-play unit-detail-album__video-play\" data-type=\"<?= videoType ?>\" data-src=\"<?= globalThis.Server.replaceImgDomain(video_url, site.prefix_domain, site.is_replace_domain) ?>\"></span>\n <? } ?>\n <div class=\"unit-detail-album__picture-container swiper-container\" custom-swiper={}>\n <div class=\"unit-detail-album__picture-items swiper-wrapper\">\n <? album_list.forEach((item, index) => { const imgCfg = {...image_config}; if( index === 0) { imgCfg.instant_load = 1 }?>\n <? if(item.album_type === 13){ ?>\n <div class=\"unit-detail-album__picture-item swiper-slide swiper-slide-3d-item\" album-type=\"<?= item.album_type ?>\">\n <div style=\"width: 100%;height: auto;opacity: 0;\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, img: poster_3d, config: image_config } } }) -?>\n </div>\n <div class=\"unit-detail-album__3d-box\">\n <model-viewer style=\"width: 100%;height: 100%;\"\n id=\"lazy-load\"\n src=\"<?= url_3d -?>\"\n alt=\"A 3D model\"\n auto-rotate\n camera-controls>\n <div id=\"lazy-load-poster\" style=\"background-image: url('<?= poster_3d ?>');\" slot=\"poster\"></div>\n <div id=\"button-load\" slot=\"poster\"><span class=\"iconfont icon-a-3D\"></span>Play</div>\n </model-viewer>\n </div>\n </div>\n <? } else if (item.album_type === 2) { ?>\n <div class=\"unit-detail-album__picture-item swiper-slide\" album-type=\"<?= item.album_type ?>\">
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'video', config: { ...item, cover_url: item.video_url, config: { ...imgCfg, ...video_config } } } }) -?>\n </div>\n <? } else { ?>\n <div class=\"unit-detail-album__picture-item swiper-slide\" album-type=\"<?= item.album_type ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: imgCfg, from: 'album_detail' } } }) -?>\n </div>\n <? } ?>\n <? }) ?>\n </div>\n </div>\n <div class=\"unit-detail-album__picture-navigation\">\n <div class=\"unit-detail-album__picture-next swiper-button-next\"></div>\n <div class=\"unit-detail-album__picture-prev swiper-button-prev\"></div>\n </div>\n <div class=\"unit-detail-album__pattern\">\n <img lazy-src=\"\" alt=\"\">\n </div>\n <div class=\"unit-detail-album__picture-pagination\"></div>\n </div>\n <div class=\"unit-detail-album__thumb position-relative\">\n <div class=\"unit-detail-album__thumb-inner\">\n <div class=\"unit-detail-album__thumb-container swiper-container\">\n <div class=\"unit-detail-album__thumb-items swiper-wrapper\">\n <? album_list.forEach(item => { ?>\n <div class=\"unit-detail-album__thumb-item swiper-slide\">\n <div class=\"unit-detail-album__thumb-image\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config, from: 'album_thumb' } } }) -?>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n <div class=\"unit-detail-album__thumb-navigation\">\n <div class=\"unit-detail-album__thumb-next unit-detail-album__icon\">\n <span class=\"iconfont icon-action-bottom-lighter\"></span>\n </div>\n <div class=\"unit-detail-album__thumb-prev unit-detail-album__icon\">\n <span class=\"iconfont icon-action-bottom-lighter\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/image.js',\n name: 'ScriptImage',\n attrId: '<?= package.attr_id ?>',\n config: '<?- JSON.stringify(image_config) ?>',\n video_config: '<?- JSON.stringify(video_config) ?>',\n images: '<?- JSON.stringify(package.content.data) ?>'\n })\n</script>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/video-popup.js',\n name: 'ScriptVideoPopup',\n attrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(video_config) ?>'\n })\n</script>\n","/package/components/unit-product-detail-alert-size-chart":"<? if(page.chart_img.length){ ?>\n <div class=\"detail-alert-size-chart\">\n <div class=\"detail-alert-size-chart__btn text-capitalize\"><?= $t('View size guide') ?></div>\n <div hidden>\n <div class=\"detail-alert-size-chart__con\">\n <div class=\"detail-alert-size-chart__image\">\n <img lazy-src=\"<?= page.chart_img[0].attach ?>\" alt=\"\">\n </div>\n </div>\n </div>\n </div>\n<? } ?>","/package/components/unit-product-detail-button-buy":"<div class=\"unit-detail-button-buy\" button-style=\"2\" onclick=\"window.app.utilts.setGtag('add_to_buynow')\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Buy Now') } } }) -?>\n</div>","/package/components/unit-product-detail-button-cart":"<div class=\"unit-detail-button-cart\" button-style=\"2\" onclick=\"window.app.utilts.setGtag('add_to_cart')\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Add to Cart'), icon: 'icon-base-cart-lighter' } } }) -?>\n</div>","/package/components/unit-product-detail-button-comment":"<div class=\"unit-detail-button-comment\" button-style=\"2\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Write a Review'), icon: 'icon-action-edit' } } }) -?>\n</div>","/package/components/unit-product-detail-button-download":"<div class=\"unit-detail-button-download\" button-style=\"2\">\n <div class=\"button-download\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('download'), icon: 'icon-download' } } }) -?>\n </div>
1\n <div class=\"download-list\">\n <div class=\"download-list-inner\">\n <? page.file_list.forEach((item,index) => { -?>\n <div class=\"download-item\">\n <div class=\"download-item-inner d-flex align-items-center\">\n <img alt=\"<?= item.title ?>\" class=\"download-item-img img-fluid\" src=\"<?= item.img ?>\" />\n <div class=\"download-item-text\">\n <div class=\"download-item-text__inner\">\n <div class=\"download-item-title\">\n <?- item.title ?>\n </div>\n <div class=\"download-item-btn\">\n <a class=\"download-item-btn__a\" href=\"javascript:;\" content-id=\"<?= item.product_file_id ?>\" target=\"_blank\" download-switch=\"<?- item.download_switch ?>\" file-url=\"<?- item.url ?>\">\n <i class=\"iconfont icon-download\"></i>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <? }) -?>\n </div>\n </div>\n</div>\n","/package/components/unit-product-detail-button-inquiry":"<?\n if (site.site_inquiry.product_status) {\n package.config.form.list = site.site_inquiry.package.config.form.list.map(item => {\n if (item.type === 'checkbox') {\n item = JSON.parse(JSON.stringify(item))\n item.option_items_cols_col = 12\n item.option_items_cols_md = 12\n item.option_items_cols_xl = 12\n item.style_type = 2\n }\n return item\n })\n package.config.form.minLength = site.site_inquiry.package.config.form.minLength\n package.config.form.use_common = 0\n package.config.form.content = 'product-detail-inquiry'\n }\n package.config.form.style_type_form = 2\n package.config.button.style_type_button = 2\n const deepStyle = package.config.button.deep_inquiry_btn ? 'deep-btn' : ''\n package.button_inquiry = true;\n?>\n<div class=\"unit-detail-button-inquiry <?= deepStyle ?>\" button-style=\"2\" onclick=\"window.app.utilts.setGtag('add_to_inquiy')\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Inquiry') } } }) -?>\n\n <div class=\"d-none\">\n <link rel=\"stylesheet\" href=\"<?- globalThis.Server.versionUrl('/assets/css/unit/inquire-list.css') ?>\">\n <div class=\"inquiry-modal-inner\">\n <div class=\"inquiry-modal__description follow-font-family\" text-style=\"3\">\n <?= $t('Please fill out the form below to request a quote or to request more information about us. please be as detailed as possible in your message, and we will get back to you as soon as possible with a response. weâre ready to start working on your new project, contact us now to get started.') ?>\n </div>\n <div class=\"row\">\n <div class=\"col col-12 col-md-12 col-xl-6 form-wrap\">\n <?- include(getViewsPath(`/package/unit/form`), { package } ) -?>\n </div>\n <div class=\"col col-12 col-md-12 col-xl-6 py-4\">\n <?- include(getViewsPath(`/package/unit/inquire-list`), { package } ) -?>\n </div>\n </div>\n </div>\n </div>\n</div>\n","/package/components/unit-product-detail-button-quote":"<div class=\"unit-detail-button-quote\" button-style=\"2\" content-id=\"<?= ctx.state.page.content_id ?>\">\n <div class=\"button-quote-add\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Add to Quote List'), icon: 'icon-action-add' } } }) -?>\n </div>\n <div class=\"button-quote-list\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Browse the list') + ' â', href: globalThis.Server.getRinseHref('/inquire_form.html?type=quoteList',site)} } }) -?>\n </div>\n</div>","/package/components/unit-product-detail-buy-on":"<? if(page.platform_relate.length > 0) { ?>\n<div class=\"unit-detail-by-on\">\n <div class=\"unit-detail-by-on\">\n <div class=\"unit-detail-by-on__label text-capitalize\">\n <?= $t('Buy on') ?>:\n </div>\n <div class=\"d-flex unit-detail-by-on__item-wrap\">\n <? page.platform_relate.forEach((item,index) => { -?>\n <? if(item.name) { ?>\n <a href=\"<?=globalThis.Server.getRinseHref(item.link, site) ?>\" target=\"<?=item.targetType -?>\" tname=\"<?=item.name -?>\" class=\"unit-detail-by-on__item\" link-button>\n <i class=\"unit-detail-by-on__icon iconfont icon-ec-<?=item.name -?>\"></i>\n </a>\n <? } ?>\n <? }) -?>\n </div>\n </div>\n</div>\n<? } else if (ctx.query.design) { ?>\n<div class=\"alert alert-light border\" role=\"alert\">\n 请å¨åå°äº§å--å¹³å°å¯¼æµ--导æµè®¾ç½®æ·»å \n</div>\n<? } ?>
1","/package/components/unit-product-detail-comment-score":"<div class=\"unit-detail-comment-score d-none\">\n <div class=\"unit-detail-comment-score__content\">\n <div class=\"unit-detail-comment-score__icons\">\n <? for (let i = 0; i < 5; i++) { ?>\n <span class=\"iconfont icon-base-collection star-item on\"></span>\n <? } ?>\n </div>\n <div class=\"unit-detail-comment-score__scores pl-1\">5.0</div>\n </div>\n</div>\n","/package/components/unit-product-detail-customized":"<div class=\"unit-detail-customized\">\n <div class=\"unit-detail-customized__btn\">\n <span class=\"iconfont icon-base-customized\"></span>\n <div class=\"unit-detail-customized__title text-capitalize\">design customization</div>\n </div>\n <div hidden>\n <div class=\"unit-detail-customized__modal\">\n <div class=\"unit-detail-customized__form\">\n <div class=\"unit-detail-customized__form--text\">\n <div class=\"unit-detail-customized__form--description\">\n Please fill out the form below to request a quote or to request more information about us. Please be sure to upload customized requirement documents or pictures, and we will get back to you as soon as possible with a response. we're ready to start working on your new project, contact us now to get started.\n </div>\n </div>\n <?- include(getViewsPath(`/package/unit/form`), { package }) -?>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-product-detail-like":"<div class=\"unit-detail-like d-none\" onclick=\"window.app.utilts.setGtag('add_to_wishlist')\">\n <div class=\"unit-detail-like__item\">\n <span class=\"iconfont icon-base-collect\"></span>\n <div class=\"unit-detail-like__text text-capitalize\">\n <?= $t('Like') ?>\n <em class=\"unit-detail-like__num\"></em>\n </div>\n </div>\n</div>","/package/components/unit-product-detail-logistics":"<div class=\"unit-detail-logistics\">\n <link rel=\"stylesheet\" href=\"/assets/plugins/country.css\">\n <div class=\"unit-detail-logistics__item\">\n <div class=\"unit-detail-logistics__title\">
1\n <span class=\"unit-detail-logistics__freighPrice\"></span>\n </div>\n <div class=\"unit-detail-logistics__freighWap\">\n <span class=\"label pr-2\"><?= $t('Shipped to') ?>:</span>\n <div class=\"unit-detail-logistics__freighWap-btn\">\n <div class=\"unit-detail-logistics__region\"><?= $t('Choose a country/region') ?></div>\n <span class=\"iconfont icon-action-bottom-lighter detail-logistics-alert\"></span>\n </div>\n </div>\n <div class=\"unit-detail-logistics__arrivalTime\">\n <span class=\"unit-detail-logistics__time\"></span>\n </div>\n <div class=\"unit-detail-logistics__modal\" id=\"unit-detail-logistics-modal-<?= package.attr_id ?>\">\n <div class=\"unit-detail-logistics__form\">\n <div class=\"unit-detail-logistics-form__head\">\n <div class=\"unit-detail-logistics-form__head-title\"><?= $t('Shipping') ?></div>\n <div class=\"unit-detail-logistics__close\">\n <span class=\"iconfont icon-action-close\"></span>\n </div>\n </div>\n <div class=\"unit-detail-logistics-form__body\">\n <div class=\"form-group row unit-detail-logistics__label\">\n <div class=\"col-12 col-md-2\">\n <label for=\"message-text\" class=\"col-form-label\"><?= $t('Shipped to') ?></label>\n </div>\n <div class=\"col-12 col-md-10\">\n <div class=\"form-select\"></div>\n </div>\n </div>\n <div class=\"form-group mb-0 row\">\n <div class=\"col-12 col-md-2 unit-detail-logistics__label\">\n <label for=\"message-text\" class=\"col-form-label\"><?= $t('Shipping Method') ?></label>\n </div>\n <div class=\"col-12 col-md-10 table-responsive\">\n <div class=\"unit-detail-logistics-table-box\">\n <div class=\"unit-detail-logistics-table-content\">\n <table class=\"table table-hover\" style=\"margin-bottom: 0;\">\n <thead>\n <tr>\n <th class=\"first-col\" style=\"border-bottom: none;\"><?= $t('Shipping Country/region') ?></th>\n <th style=\"border-bottom: none;\"><?= $t('Estimated Delivery Time') ?></th>\n <th style=\"border-bottom: none;\"><?= $t('Shipping Cost') ?></th>\n </tr>\n </thead>\n <tbody class=\"table-tbody-content\"></tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-logistics__modal-warning\">\n <span class=\"iconfont icon-base-error-fill\"></span>\n <?= $t('This Supplier/Shipping Company does not deliver to your selected Country/Region.') ?>\n </div>\n </div>\n <div class=\"unit-detail-logistics__model-buttons\">\n <button class=\"btn base-button__inner unit-detail-logistics__model-btn\" btn-type=\"ok\"><?= $t('ok') ?></button>\n <button class=\"btn base-button__inner unit-detail-logistics__model-close-btn\" btn-type=\"cancel\"><?= $t('Cancel') ?></button>\n </div>\n </div>\n </div>\n </div>\n</div>\n","/package/components/unit-product-detail-matching":"<div class=\"unit-matching-product\">\n <link rel=\"stylesheet\" href=\"/assets/plugins/quick-search.css\">\n <div class=\"unit-matching-product__box\" :class=\"{'is-success': result.status}\">\n <span class=\"iconfont d-flex\" :class=\"[result.status ? 'icon-base-success-fill' : 'icon-base-error-fill']\"></span>\n <div class=\"unit-matching-product__box-text\">\n <p v-if=\"is_default\"><?= $t('Please confirm whether the parts match the model') ?>!</p>\n <p v-else>\n <span v-if=\"result.status\"><?= $t('Exact fit for your') ?></span> \n <span v-else><?= $t('Doesnât fit your') ?></span> \n {{ result.content }}\n </p>\n <div class=\"unit-matching-product__box-btn mt-2\">\n <a href=\"<?= globalThis.Server.getRinseHref('/search.html', site) -?>\" v-if=\"!is_default\"><?= $t('View Correct Part') ?></a>
1\n <span class=\"mr-4\" v-if=\"!is_default\"></span>\n <a href=\"javascript:;\" @click=\"showModal\"><?= $t('Change Vehicle') ?></a>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-product-detail-order-quantity":"\n<div class=\"unit-detail-order-quantity d-none\">\n <div class=\"unit-detail-order-quantity__item\">\n <i class=\"iconfont icon-base-order unit-detail-order-quantity__iconfont\"></i>\n <span class=\"text-capitalize\"><?= $t('order') ?></span>\n <div class=\"unit-detail-order-quantity__num pl-1\"></div>\n </div>\n</div>","/package/components/unit-product-detail-pattern":"<div class=\"unit-detail-pattern\"></div>","/package/components/unit-product-detail-payment":"\n<div class=\"unit-detail-payment d-none\">\n <div class=\"unit-detail-payment__items\">\n <span class=\"text-capitalize\"><?= $t('payments') ?>:</span>\n <div class=\"unit-detail-payment__item\"></div>\n </div>\n</div>","/package/components/unit-product-detail-price":"\n<?\n let { style_type_sell, style_type_cost } = package.config.product_detail\n?>\n<div class=\"unit-detail-price\">\n <div class=\"unit-detail-price__wholesale d-none\">\n <div class=\"unit-detail-price__wholesale--items row\">\n </div>\n </div>\n <div class=\"unit-detail-price__items\">\n <div class=\"unit-detail-price__box-time\">\n <div class=\"unit-detail-price--prices\">\n <span class=\"unit-detail-price--prices_sell\" text-style=\"<?= style_type_sell ?>\">\n <i class=\"unit-detail-price--prices_sell--i d-none\" text-style=\"<?= style_type_sell ?>\">$</i>\n <span class=\"unit-detail-price--prices_sell-price\">\n <span class=\"unit-detail-price--prices_sell-price_original d-none\">\n <span class=\"unit-detail-price--price_sell-price_original--min\">\n </span>\n <span class=\"unit-detail-price--price_sell-price_original--max\">\n </span>\n </span>\n <span class=\"unit-detail-price--prices_sell-price_new\"></span>\n </span>\n </span>\n <span class=\"unit-detail-price--prices_cost\" text-style=\"<?= style_type_cost ?>\">\n <span class=\"unit-detail-price--prices_cost-price\">\n <span class=\"unit-detail-price--prices_cost-price_original d-none\">\n <span class=\"unit-detail-price--price_cost-price_original--min\">\n </span>\n <span class=\"unit-detail-price--price_cost-price_original--max\">\n </span>\n </span>\n <span class=\"unit-detail-price--prices_cost-price_new\"></span>\n </span>\n </span>\n <span class=\"unit-detail-price--prices__off d-none\">\n <span class=\"unit-detail-price--prices_icon iconfont icon-2c-coupon\"></span>\n <span class=\"unit-detail-price--prices_dis\">0% OFF</span>\n </span>\n </div>\n <div class=\"unit-detail-price--date d-none\">\n <div class=\"discount-timer\">\n <div class=\"discount-timer__title text-truncate\"></div>\n <div class=\"discount-timer__date-content\">\n <div class=\"discount-timer__date-wrap discount-timer__date-wrap--day\">\n <div class=\"discount-timer__date discount-timer__date--dd\"><em>00</em><i>d</i></div>\n </div>\n <div class=\"discount-timer__date-wrap discount-timer__date-wrap--time\">\n <div class=\"discount-timer__date discount-timer__date--hh\"><em>00</em><i>:</i></div>\n <div class=\"discount-timer__date discount-timer__date--mm\"><em>00</em><i>:</i></div>\n <div class=\"discount-timer__date discount-timer__date--ss\"><em>00</em></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-price__reduce d-none\">\n <div class=\"unit-detail-price-icon\">\n <span class=\"iconfont icon-manjian\"></span>\n </div>\n <div class=\"unit-detail-price__reduce-content\">\n <div class=\"unit-detail-price__reduce--list text-truncate\"></div>\n <div class=\"unit-detail-price__reduce--show\">
1\n <span class=\"iconfont icon-base-dot\"></span>\n </div>\n </div>\n <a href=\"javascript:;\" class=\"unit-detail-price__reduce--a\">\n <?= $t('Shop now') -?> >\n </a>\n </div>\n <div class=\"unit-detail-price_box--list d-none\">\n <div class=\"unit-detail-price-icon\">\n <span class=\"iconfont icon-youhui\"></span>\n </div>\n <div class=\"unit-detail-price--discount-list\">\n </div>\n <div class=\"unit-detail-price--detail\">\n <?= $t('Details') -?> <i class=\"unit-detail-price--detail_icon iconfont icon-action-bottom-lighter\"></i>\n </div>\n </div>\n </div>\n <div hidden>\n <div class=\"unit-detail-price__model\">\n <div class=\"unit-detail-price__model_content\">\n </div>\n </div>\n </div>\n</div>","/package/components/unit-product-detail-product-match":"<?\n let match_products = page.match_products\n let match_type = 1\n if(match_products.length){\n match_type = match_products[0].match_type || 1\n }\n?>\n<!-- é¿å
ä¸ç¶çº§idéå¤,å ä¸ç»ä»¶ååç¼ -->\n<div id=\"product_match_<?= package.attr_id ?>\" class=\"unit-detail-product-match <?= match_products.length?'':'pm-none' ?>\">\n <div text-style=\"3\" class=\"pm-title pm-title-18 pm-click-more\">\n <span><?= match_type === 1?'Required Products':'Frequently Bought Together' -?></span>\n <!-- <i class=\"pm-showmore\"></i> -->\n <i class=\"iconfont icon-action-bottom-lighter pm-showmore\"></i>\n </div>\n <? match_products.forEach((item,i) => { ?>\n <div id=\"product_id_<?= item.product_id ?>\" class=\"pm-items-center pm-mb-15 pm-more\" text-style=\"3\">\n <label class=\"pm-checkbox <?=match_type===1 ? 'pm-none' : '' ?>\">\n <input type=\"checkbox\" checked/>\n <span></span>\n </label>\n <div class=\"pm-img\">\n <img src=\"<?= item.is_pattern?(item.attr_list[0].thumb || item.thumb):item.thumb -?>\" alt=\"\">\n </div>\n <div class=\"pm-flex1\">\n <a href=\"<?= item.page_url_suffix ?>\" class=\"pm-title\">\n <?= item.title -?>\n </a>\n <div class=\"pm-items-center pm-between\">\n <div class=\"pm-select <?= item.is_pattern===1?'':'pm-none' ?>\"></div>\n <div class=\"pm-items-center hiditem\">\n <span class=\"pm-price\"></span>\n <span class=\"pm-original-price line-through\"></span>\n </div>\n </div>\n </div>\n </div>\n <? }) ?>\n <div text-style=\"3\" class=\"pm-items-center pm-mb-15 hiditem pm-more\">\n <span>Total price discount:</span>\n <span class=\"pm-total-price\"></span>\n <span class=\"pm-original-price line-through pm-original-total-price\"></span>\n </div>\n <div class=\"pm-flex pm-more\">\n <div class=\"unit-detail-button-buytogether\" button-style=\"2\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('BUY TOGETHER') } } }) -?>\n </div>\n <div class=\"unit-detail-match-product-inquiry\" button-style=\"1\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Inquiry together') } } }) -?>\n </div>\n </div>\n</div>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-product-match.js',\n name: 'ScriptProductMatch',\n load_immediate: true,\n attrId: '<?= \"product_match_\"+package.attr_id ?>',\n matchProducts: `<?- JSON.stringify(match_products) ?>`\n })\n</script>","/package/components/unit-product-detail-quantity":"<div class=\"unit-detail-quantity\">\n <div class=\"unit-detail-quantity__item\">\n <div class=\"unit-detail-quantity__label text-capitalize\">\n <?= $t('quantity') ?>:\n </div>\n <div class=\"unit-detail-quantity__value\">\n <div class=\"unit-detail-quantity__num\">\n <div class=\"unit-detail-quantity__min\">\n <span class=\"minus\">\n <i class=\"iconfont icon-action-minus\"></i>\n </span>\n <input type=\"number\" value=\"1\" class=\"unit-detail-quantity__input\">\n <span class=\"increase\">\n <i class=\"iconfont icon-action-plus\"></i>\n </span>\n </div>\n </div>\n <div class=\"unit-detail-quantity__stock d-none\">
1\n <span class=\"unit-detail-quantity__stock--num\"></span>\n <span class=\"unit-detail-quantity__stock--available d-none\">\n <?= $t('pieces available') -?>\n </span>\n <span class=\"unit-detail-quantity__stock--out d-none\">\n <?= $t('sold out') -?>\n </span>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-quantity__moq d-none\">\n <div class=\"unit-detail-quantity__label text-capitalize\">\n <?= $t('MOQ') ?>:\n </div>\n <span class=\"unit-detail-quantity__moq-num\">200</span> Piece\n </div>\n</div>","/package/components/unit-product-detail-tradeinfo":"<? if (page.tradeInfo_list.length) { ?>\n <div class=\"unit-detail-tradeinfo\">\n <div class=\"unit-detail-tradeinfo__items\">\n <? page.tradeInfo_list.forEach(item => { ?>\n <div class=\"unit-detail-tradeinfo__item\">\n <div class=\"unit-detail-tradeinfo__label <?= item.label?.length >= 40 ? 'label-40ch':'' ?>\"><?- item.label ?>:</div>\n <div class=\"unit-detail-tradeinfo__value\">\n <? if (item.input_type === 1) { ?>\n <?= item.value -?>\n <? } else { ?>\n <?- item.value ?>\n <? } ?>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n<? } else if (ctx.query.design) { ?>\n <div class=\"alert alert-light border\" role=\"alert\">\n 请å¨åå°äº§å--产å管ç--产ååæ°æ·»å --产å管ç--æ·»å /ç¼è¾ç®¡ç产ååæ°\n </div>\n<? } ?>\n","/package/components/unit-product-detail-wholesale":"<div class=\"unit-detail-wholesale d-none\">\n\t<div class=\"unit-detail-wholesale__items\">\n\t\t<div class=\"unit-detail-wholesale__item-header\">\n\t\t\t<div class=\"unit-detail-wholesale--number bold\"><?= $t('quantity') ?></div>\n\t\t\t<div class=\"unit-detail-wholesale--discont bold\"><?= $t('Discount') ?></div>\n\t\t\t<div class=\"unit-detail-wholesale--price bold\"><?= $t('price') ?></div>\n\t\t</div>\n\t\t<div class=\"unit-detail-wholesale__item-content\">\n\t\t</div>\n\t</div>\n</div>","/package/components/unit-user-account":"<div class=\"unit-user-account\">\n <div class=\"unit-user__header\">\n <div class=\"unit-user__title\">\n <?= $t('account security') ?>\n </div>\n </div>\n <div class=\"unit-user__body unit-user__body--account\">\n <!-- <div class=\"unit-user-account__title\"><?= $t('change password') ?></div> -->\n <div class=\"unit-user-form\">\n <form class=\"needs-validation\" novalidate @submit.prevent=\"changePwd($event)\">\n <div class=\"form-control-group\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <?= $t('original password') ?>\n </label>\n <input type=\"password\" class=\"form-control\" v-model=\"account.originPwd\" required name=\"originPwd\"\n aria-describedby=\"\" required>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"></div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <?= $t('new password') ?>\n </label>\n <input type=\"password\" class=\"form-control\" v-model=\"account.newPwd\" :pattern=\"formPattern.password\"\n name=\"newPwd\" aria-describedby=\"\" required>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('Password contains at least numbers and letters length should be 6-20') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <?= $t('confirm new password') ?>\n </label>\n <input type=\"password\" class=\"form-control\" v-model=\"account.confirmPwd\" :pattern=\"account.newPwd\"\n name=\"confirmPwd\" aria-describedby=\"\" required>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('Confirm password is inconsistent with new password') ?>\n </div>\n </div>\n </div>\n <div class=\"form-group form-group-sbumit\">\n <button class=\"base-button__inner btn\" type=\"submit\">\n <?= $t('submit') ?>\n </button>\n </div>\n </form>\n </div>\n </div>\n</div>
1","/package/components/unit-user-address":"<div class=\"unit-user-address\">\n <!-- çµè -->\n <div class=\"unit-user-address__computer\" v-show=\"!is_address_edit\">\n <template>\n <div class=\"unit-user-address__head\">\n <div class=\"unit-user-address__title\" data-target=\"#addressModal\" data-toggle=\"modal\" @click=\"addAddress()\">\n <span class=\"iconfont icon-action-add mr-1\"></span>\n <?= $t('Shipping Address') ?>\n </div>\n </div>\n <div class=\"table-responsive\" v-show=\"!!address_list.length\">\n <table class=\"table\">\n <thead>\n <tr>\n <td>\n <?= $t('first name') ?>\n </td>\n <td>\n <?= $t('last name') ?>\n </td>\n <td>\n <?= $t('phone') ?>\n </td>\n <td>\n <?= $t('e-mail') ?>\n </td>\n <td>\n <?= $t('postal code') ?>\n </td>\n <td>\n <?= $t('address') ?>\n </td>\n <td>\n <?= $t('operating') ?>\n </td>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item, index) in address_list\" :key=\"`address_list_${index}`\" v-show=\"address_list.length\">\n <td>{{ item.first_name }}</td>\n <td>{{ item.last_name }}</td>\n <td :class=\"{invalid: [93, 134].includes(item.country_id) && ['1', '+1'].includes(item.area_code) && !/^\\d{10}$/.test(item.phone)}\">\n <p class=\"item\">({{ item.area_code}}){{ item.phone }}</p>\n <p class=\"tips\"><?= $t('Phone numbers can only be 10 digits.') ?></p>\n </td>\n <td>{{ item.email }}</td>\n <td>{{ item.zip_code }}</td>\n <td>{{ item.address_one }}, {{ item.city }}, {{ item.province_en_name }}, {{ item.country_en_name }} </td>\n <td class=\"unit-user__address-operate\">\n <div class=\"left\">\n <span class=\"unit-user-address__delete\" @click=\"deleteAddress(item.id, index)\">\n <?= $t('delete') ?>\n </span>\n <span class=\"unit-user-address__edit\" data-target=\"#addressModal\" data-toggle=\"modal\"\n @click=\"editModalAddress(item)\">\n <?= $t('edit') ?>\n </span>\n </div>\n <div class=\"right\">\n <span class=\"unit-user-address__default\" v-if=\"item.is_default\">\n <?= $t('Default') ?>\n </span>\n <span class=\"unit-user-address__set-default\" v-else @click=\"setAddressDefault(item)\">\n <?= $t('set as default') ?>\n </span>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </template>\n </div>\n <!-- ææº -->\n <div class=\"unit-user-address__phone\" v-show=\"!is_address_edit\">\n <div class=\"unit-user-address__items\">\n <div :class=\"['unit-user-address__item', {active: item.is_default}]\" v-for=\"(item, index) in address_list\"\n :key=\"`address_list_${index}`\" v-show=\"address_list.length\">\n <div class=\"unit-user-address__info\">\n <dl>\n <dt>\n <?= $t('name') ?>:\n </dt>\n <dd>{{ item.last_name }} {{ item.first_name }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('phone') ?>:\n </dt>\n <dd :class=\"{invalid: [93, 134].includes(item.country_id) && ['1', '+1'].includes(item.area_code) && !/^\\d{10}$/.test(item.phone)}\">\n <p class=\"item\">({{ item.area_code}}){{ item.phone }}</p>\n <p class=\"tips\"><?= $t('Phone numbers can only be 10 digits.') ?></p>\n </dd>\n </dl>\n <dl>\n <dt>\n <?= $t('e-mail') ?>:\n </dt>\n <dd>{{ item.email }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('postal code') ?>:\n </dt>\n <dd>{{ item.zip_code }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('address') ?>:\n </dt>\n <dd>{{ item.address_one }}, {{ item.city }}, {{ item.province_en_name }}, {{ item.country_en_name }}</dd>\n </dl>\n </div>
1\n <div class=\"unit-user-address__operate\">\n <div class=\"unit-user-address__operate--select custom-checkbox\" @change=\"setAddressDefault(item)\">\n <input type=\"checkbox\" :id=\"`setDefaultAddress${index+1}`\" class=\"custom-control-input\"\n :checked=\"!!item.is_default\">\n <label :for=\"`setDefaultAddress${index+1}`\" class=\"custom-control-label\">\n <?= $t('set as default') ?>\n </label>\n </div>\n <div class=\"unit-user-address__operate--edit\">\n <span class=\"del\" @click=\"deleteAddress(item.id, index)\">\n <?= $t('delete') ?>\n </span>\n <span class=\"edit\" data-target=\"#addressModal\" data-toggle=\"modal\" @click=\"editModalAddress(item)\">\n <?= $t('edit') ?>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-address__add--btn base-button\">\n <div class=\"base-button__inner btn\" data-toggle=\"modal\" data-target=\"#addressModal\" data-whatever=\"@mdo\"\n @click=\"addAddress()\"><span class=\"iconfont icon-action-add\"></span>\n <?= $t('address') ?>\n </div>\n </div>\n </div>\n <!-- 表å -->\n <div class=\"unit-user-address__add\" v-show=\"is_address_edit\">\n <form class=\"needs-validation\" novalidate @submit.prevent=\"submitForm($event)\">\n <div class=\"no-gutters\">\n <div class=\"unit-user-address__add--title\">\n <?= $t('add address') ?>\n </div>\n <div class=\"form-group\" style=\"align-items: flex-start;\">\n <label for=\"recipient-name\" class=\"col-form-label\">\n <?= $t('your name') ?>\n <span class=\"red\">*</span>\n </label>\n <div style=\"display: flex; flex-wrap: wrap; flex: 1;\">\n <input type=\"text\" class=\"form-control\" name=\"first_name\" :pattern=\"formPattern.length\" required\n v-model=\"formData.first_name\" placeholder=\"<?= $t('first name') ?>\">\n <input type=\"text\" class=\"form-control ml-3\" name=\"last_name\" :pattern=\"formPattern.length\" required\n v-model=\"formData.last_name\" placeholder=\"<?= $t('last name') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\" style=\"padding-left: 0;\">\n <?= $t('the content cannot be empty and cannot exceed 30') ?>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\"><?= $t('Country') ?>/<?= $t('Region') ?> <span class=\"red\">*</span></label>\n <div ref=\"country\" style=\"flex: 1\"></div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\"><?= $t('State/Province/Territory') ?></label>\n <div ref=\"province\" style=\"flex: 1\"></div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <?= $t('city') ?> <span class=\"red\">*</span>\n </label>\n <input type=\"text\" class=\"form-control\" name=\"city\" :pattern=\"formPattern.length\" required\n v-model=\"formData.city\" placeholder=\"<?= $t('city') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content cannot be empty and cannot exceed 30') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <?= $t('address') ?> <span class=\"red\">*</span>\n </label>\n <textarea name=\"address\" class=\"form-control\" rows=\"3\" required resize maxlength=\"250\"\n v-model=\"formData.address_one\" placeholder=\"<?= $t('address') ?>\" maxlength=\"250\"></textarea>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content can not be blank') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\"><span class=\"red\">*</span>\n <?= $t('zip code') ?>\n </label>\n <input type=\"text\" class=\"form-control\" name=\"zip\" v-model=\"formData.zip_code\" required maxlength=\"50\"\n placeholder=\"<?= $t('zip code') ?>\">\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <?= $t('phone') ?> <span class=\"red\">*</span>\n </label>\n <div class=\"row\" style=\"flex: 1 0 0;\">\n <div class=\"col-3\">\n <input type=\"text\" class=\"form-control\" name=\"areaCode\" required v-model=\"formData.area_code\"\n placeholder=\"<?= $t('Area code') ?>\" maxlength=\"8\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback pl-0\">\n <?= $t('Area code can not empty') ?>\n </div>\n </div>\n <div class=\"col-9 pl-0\">\n <input type=\"text\" class=\"form-control\" name=\"phone\" :pattern=\"phone_limit ? formPattern.number_10_digits : formPattern.phone\" required\n v-model=\"formData.phone\" placeholder=\"<?= $t('phone') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback pl-0\" v-if=\"phone_limit\"><?= $t('Phone numbers can only be 10 digits.') ?></div>\n <div class=\"invalid-feedback pl-0\" v-else><?= $t('phone can only be numbers or line') ?></div>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <?= $t('e-mail') ?> <span class=\"red\">*</span>\n </label>\n <input type=\"email\" class=\"form-control\" name=\"email\" :pattern=\"formPattern.email\" required\n v-model=\"formData.email\" placeholder=\"<?= $t('e-mail') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('email format does not match') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <div class=\"custom-control custom-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" id=\"is_default\" v-model=\"formData.is_default\">\n <label class=\"custom-control-label\" for=\"is_default\">\n <?= $t('whether to set as default address') ?>\n </label>\n </div>\n </div>\n </div>\n <div class=\"unit-cart-address__button base-button\">\n <button type=\"submit\" class=\"base-button__inner btn base-button__ok\">\n <?= $t('Save') ?>\n </button>\n <button type=\"button\" class=\"base-button__inner btn base-button__return\" @click=\"is_address_edit=false\">\n <?= $t('Cancel') ?>\n </button>\n </div>\n </form>\n </div>\n</div>","/package/components/unit-user-comment":"<link rel=\"stylesheet\" href=\"/assets/plugins/comment-form.css\">\n<template v-if=\"reviews.step === 1\">\n <div class=\"unit-user-order__tab\">\n <ul>\n <li :class=\"{ active: reviews.tabIndex === item.type }\" @click=\"reviewsChange(item, index)\"\n v-for=\"(item, index) in reviews.tabs\" :key=\"index\">
1\n <span>{{ item.name }}</span>\n </li>\n </ul>\n </div>\n <div class=\"unit-user__body unit-user__body--reviews unit-user__body--order\">\n <div v-if=\"reviews.tabIndex == 0\" class=\"unit-user-order unit-user-reviews__await\">\n <div v-if=\"reviews.toComment.length\">\n <div class=\"unit-user-order__item\" v-for=\"(item, index) in reviews.toComment\">\n <div class=\"unit-user-order__info unit-user-order__product-list\">\n <div class=\"unit-user-order__product-content\">\n <div class=\"unit-user-order__product-item\">\n <div class=\"unit-user-order__product-\">\n <div class=\"unit-user-order__product-item--info\">\n <span :title=\"item.create_time\">\n <strong>\n <?= $t('order time') ?>:\n </strong>{{ item.create_time }}</span>\n <span :title=\"item.serial_number\"><strong>\n <?= $t('order id') ?>:\n </strong>\n <span> {{ item.serial_number }}</span>\n </span>\n </div>\n <div class=\"unit-user-order__product-item--type\">\n <?= $t('commodity price') ?>\n </div>\n <div class=\"unit-user-order__product-item--type\">\n <?= $t('purchase quantity') ?>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-status order-pro-style\">\n <?= $t('order status') ?>\n </div>\n <div class=\"unit-user-order__product-price order-pro-style\">\n <?= $t('order amount') ?>\n </div>\n <div class=\"unit-user-order__product-operate order-pro-style\">\n <?= $t('operating') ?>\n </div>\n <div class=\"unit-user-order__product-status--m order-pro-style\">\n <div class=\"unit-user-order__status\" v-if=\"item.status === 1\">\n <?= $t('Awaiting Payment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 4\">\n <?= $t('Awaiting Shipment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 12\">\n <?= $t('Shipping') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 21\">\n <?= $t('Completed') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 31\">\n <?= $t('Cancel') ?>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-list\">\n <div class=\"unit-user-order__product-content\">\n <div class=\"unit-user-order__product-item\" v-for=\"pro in item.order_product\">\n <div class=\"unit-user-order__product-\">\n <a class=\"unit-user-order__product-item--info\"\n :href=\"globalThis.Server.getRinseHref(pro.product_url, window.app.info.site)\">\n <div class=\"unit-user-order__product-img\">\n <img :src=\"pro.thumb\" :alt=\"pro.product_title\" class=\"img-fluid\">\n </div>\n <div class=\"unit-user-order__product-txt\">\n <div class=\"unit-user-order__product-title\">{{ pro.product_title }}</div>\n <div class=\"unit-user-order__product-description\">\n <p v-for=\"attr in pro.style\" :key=\"attr.title\">\n {{ attr.title }} : {{ attr.content }}\n </p>\n </div>\n </div>\n </a>\n <div class=\"unit-user-order__product-item--type\">${{ pro.price }}</div>\n <div class=\"unit-user-order__product-item--type\">x{{ pro.quantity }}</div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-status\">\n <div class=\"unit-user-order__status\" v-if=\"item.status === 1\">\n <?= $t('Awaiting Payment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 4\">\n <?= $t('Awaiting Shipment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 12\">\n <?= $t('Shipping') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 21\">\n <?= $t('Completed') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 31\">\n <?= $t('Cancel') ?>\n </div>\n </div>\n <div class=\"unit-user-order__product-price\">
1\n <span>\n <?= $t('total price') ?>:\n </span>\n <p>${{ item.total_amount }}</p>\n </div>\n <div class=\"unit-user-order__product-operate\">\n <div class=\"unit-user-order__product-btn\">\n <div class=\"write-review\" @click=\"writeReview(item)\">\n <?= $t('Write a Review') ?>\n </div>\n <button class=\"btn unit-user__button base-button__inner unit-user__button-write\"\n @click=\"writeReview(item)\">\n <?= $t('Write a Review') ?>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__nodata\" v-else>\n <img src=\"/assets/images/no_inquire.svg\" alt=\"\">\n <p>\n <?= $t('no to be commented') ?>\n </p>\n </div>\n </div>\n <div v-if=\"reviews.tabIndex == 1\" class=\"unit-user-reviews__already\">\n <div v-if=\"reviews.alreadyCommented.length\">\n <div class=\"unit-user-reviews__already-p\">\n <div class=\"unit-user-reviews__already-header reviews-already-content\">\n <div class=\"reviews-already-content__item commodity-item\">\n <div>\n <?= $t('Commodity') ?>\n </div>\n </div>\n <div class=\"reviews-already-content__item time-item\">\n <?= $t('Comment time') ?>\n </div>\n <div class=\"reviews-already-content__item\">\n <?= $t('operating') ?>\n </div>\n </div>\n <div class=\"unit-user-reviews__already-list\">\n <div class=\"unit-user-reviews__already-item reviews-already-content\"\n v-for=\"(item, index) in reviews.alreadyCommented\" :key=\"index\">\n <div class=\"reviews-already-content__item commodity-item\">\n <!-- <div class=\"reviews-icon iconfont icon-base-email\" v-if=\"item.is_read == 0\" style=\"color: #F7BB00;\" ></div>\n <div class=\"reviews-icon iconfont icon-base-email-read\" v-if=\"item.is_read == 1\" style=\"color: #d8d8d8;\" ></div> -->\n <div class=\"text-left\">\n <div class=\"unit-user-comment__img\" v-if=\"item.product_thumb\">\n <img class=\"img-fuild\" :src=\"item.product_thumb\" alt=\"\">\n </div>\n <div class=\"unit-user-comment__text\">{{item.product_title}}</div>\n </div>\n </div>\n <div class=\"reviews-already-content__item time-item\">{{item.comment_time}}</div>\n <div class=\"reviews-already-content__item operating-item\">\n <div class=\"reviews-already-product__btn\">\n <button class=\"btn unit-user__button base-button__inner unit-user__button-detail\"\n v-if=\"Array.isArray(item.add)\" @click=\"addReview(item)\">\n <?= $t('Comment') ?>\n </button>\n <div class=\"write-review\" @click=\"viewComments(item)\"\n :style=\"{ 'padding-top': Array.isArray(item.add) ? '10px' : '0' }\">\n <?= $t('View comments') ?>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-reviews__already-m\">\n <div class=\"reviews-already-m__item\" v-for=\"(item, index) in reviews.alreadyCommented\" :key=\"index\">\n <div>\n <div class=\"reviews-already-m__img\">\n <img :src=\"item.product_thumb\" alt=\"\" class=\"img-fluid\">\n </div>\n <div class=\"reviews-already-m__content\">\n <div class=\"unit-user-comment__text\">{{item.product_title}}</div>\n <div class=\"reviews-already-m__time\">{{item.comment_time}}</div>\n <div class=\"unit-user-order__product-btn\">\n <button class=\"btn unit-user__button base-button__inner unit-user__button-detail btn-Continue\"\n @click=\"addReview(item)\" v-if=\"Array.isArray(item.add)\">\n <?= $t('Comment') ?>\n </button>\n <button class=\"btn unit-user__button base-button__inner unit-user__button-write\"\n @click=\"viewComments(item)\">\n <?= $t('View comments') ?>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__nodata\" v-else>\n <img src=\"/assets/images/no_inquire.svg\" alt=\"\">\n <p>\n <?= $t('no already commented') ?>\n </p>\n </div>\n </div>\n <div class=\"unit-pagination unit-user-order_pagination\">\n <nav class=\"base-pagination\">\n <ul class=\"base-pagination__items\">\n <li \n class=\"base-pagination__item base-pagination__item--first\"\n :class=\"{disabled: (reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number === 1 || reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count === 1) }\"\n >\n <div class=\"base-pagination__link\" @click=\"onPagination(1)\">
1\n <span class=\"iconfont icon-action-left-lighter\"></span>\n </div>\n </li>\n <li class=\"base-pagination__item base-pagination__item--prev\" :class=\"{disabled: reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number === 1 }\">\n <div class=\"base-pagination__link\" @click=\"onPagination(reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number - 1)\">\n <span class=\"iconfont icon-action-left-lighter\"></span>\n </div>\n </li>\n <li v-if=\"reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number > 2\" class=\"base-pagination__item\">\n <div class=\"base-pagination__link\" @click=\"onPagination(1)\">1</div>\n </li>\n <li v-if=\"reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number > 2 && reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number -2 > 1\" class=\"base-pagination__item disabled\">\n <div class=\"base-pagination__link\">...</div>\n </li>\n <li v-if=\"reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number > 1\" class=\"base-pagination__item\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number - 1)\">\n {{ reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number - 1 }}\n </div>\n </li>\n <li class=\"base-pagination__item active\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number)\">\n {{reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number}}\n </div>\n </li>\n <li v-if=\"reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count - reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number > 1\" class=\"base-pagination__item\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number+1)\">\n {{ reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number+ 1 }}\n </div>\n </li>\n <li v-if=\"reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count - reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number > 2\" class=\"base-pagination__item disabled\">\n <div class=\"base-pagination__link\">...</div>\n </li>\n <li v-if=\"reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count !== reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number && reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count > reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number\" class=\"base-pagination__item\">\n <div class=\"base-pagination__link\" \n @click=\"onPagination(reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count)\">\n {{ reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count }}\n </div>\n </li>\n <li\n class=\"base-pagination__item base-pagination__item--next page-next\"\n :class=\"{'disabled': reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number === reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count }\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number+1)\"><span class=\"iconfont icon-action-left-lighter\"></span></div>\n </li>\n <li\n class=\"base-pagination__item base-pagination__item--last\"\n :class=\"{'disabled': (reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_number === reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count || reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count === 1) }\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(reviews.tabs.find(_val=>_val.type == reviews.tabIndex).page_count)\"><span class=\"iconfont icon-action-left-lighter\"></span></div>\n </li>\n </ul>\n </nav>\n <!-- è¾å
¥æ¡ -->\n <div class=\"base-pagination__input\">\n <input type=\"text\" class=\"base-pagination__input-inner\" v-model=\"reviews.pagination_number\" :placeholder=\"`${window.app.utilts.$t('Go to Page')}`\" @input=\"paginationInput()\" @keyup.enter.native=\"onPagination(reviews.pagination_number)\" />\n <div class=\"iconfont icon-action-left-lighter base-pagination__input-href\" @click=\"onPagination(reviews.pagination_number)\"></div>\n </div>\n </div>\n </div>\n</template>\n<template v-else-if=\"reviews.step === 2\">
1\n <div class=\"unit-user__body unit-user__body--user-detail unit-detail-comment\">\n <div class=\"unit-detail-comment__product-info\">\n <div class=\"comment-product-info__items\">\n <div class=\"express-product-inner\">\n <div class=\"comment-product-info__img\">\n <img :src=\"reviews.commentdetail.product_thumb\" alt=\"\" class=\"img-fluid\">\n </div>\n <div class=\"comment-product-info__content\">\n <div class=\"comment-product-info__content-product\">\n <div class=\"comment-product-info__content-product-title\">{{ reviews.commentdetail.product_title }}</div>\n <div class=\"comment-product-info__content-product-description\">\n <p v-for=\"desc in reviews.commentdetail.style\">\n <span>{{ desc.title }}</span>: <span>{{ desc.content }}</span>\n </p>\n </div>\n </div>\n <div class=\"comment-product-info__content-product-amount\">\n <p>${{ reviews.commentdetail.product_price }}</p>\n <p>x{{ reviews.commentdetail.product_quantity }}</p>\n </div>\n <div class=\"comment-product-info__content-product-total\">\n <p>${{ reviews.commentdetail.product_amount }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-comment__list-container\">\n <div class=\"unit-detail-comment__list-item d-flex\">\n <div class=\"unit-detail-comment__list-image\">\n <img class=\"img-fuild\" :src=\"reviews.commentdetail.avatar_url || '/assets/images/product_comment_default.svg'\"\n alt=\"\">\n </div>\n <div class=\"unit-detail-comment__list-content\">\n <div class=\"unit-detail-comment__list-title text-title\">{{reviews.commentdetail.nickname ?\n (reviews.commentdetail.nickname.slice(0, 2) + '*****') : reviews.commentdetail.source === 1 ? 'mall buyer' :\n '--'}}</div>\n <div class=\"unit-detail-comment__list-style d-flex justify-content-between align-items-center mb-10\">\n <div class=\"unit-detail-comment__list-time\">\n <span class=\"text-small time\">{{reviews.commentdetail.comment_time}}</span>\n <span class=\"text-small\" v-if=\"reviews.commentdetail.country\">Review in the {{reviews.commentdetail.country}}</span>\n </div>\n <div class=\"unit-detail-comment__list-specification d-flex align-items-center\">\n <span class=\"text-title specification-attr\" v-show=\"reviews.commentdetail.product_attr_value\"\n v-for=\"(itemAttr, indexAttr) in reviews.commentdetail.attrs\" :key=\"indexAttr\">\n {{itemAttr.params_key}}: {{itemAttr.params_value}}\n </span>\n <div class=\"unit-detail-comment__ratings-box\">\n <span v-for=\"(itemClass, index) in itemClasses(reviews.commentdetail.score)\" class=\"iconfont star-item\"\n :class=\"itemClass\"></span>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-comment__list-description text-description\"\n :class=\"{'mb-20': reviews.commentdetail.comment_img}\" v-html=\"reviews.commentdetail.comment\"></div>\n <div class=\"unit-detail-comment__list-imgs row mb-20\" v-if=\"reviews.commentdetail.comment_img\">\n <div class=\"col col-3 col-md-2\" v-for=\"(itemImg, indexImg) in reviews.commentdetail.comment_img.split(',')\"\n :key=\"indexImg\">\n <a :href=\"globalThis.Server.getRinseHref(itemImg, window.app.info.site)\" target=\"_blank\"><img\n :src=\"itemImg\" alt=\"\"></a>\n </div>\n </div>\n <div class=\"unit-detail-comment__list-reply\"\n v-if=\"(reviews.commentdetail.reply || (!Array.isArray(reviews.commentdetail.add) && (reviews.commentdetail.add.comment || reviews.commentdetail.add.reply)))\">\n <div class=\"unit-detail-comment__list-reply-items d-flex\" v-if=\"reviews.commentdetail.reply\">\n <div class=\"reply-avatar\">\n <img class=\"img-fuild\" src=\"/assets/images/merchant_default.svg\" alt=\"\">\n </div>\n <div class=\"unit-reply-items__content\">\n <div class=\"d-flex justify-content-between align-items-center mb-10 flex-wrap\">\n <div class=\"unit-reply-items__content-title text-title\">Merchant reply</div>\n <div class=\"text-small time\">{{reviews.commentdetail.reply_time}}</div>\n </div>\n <div class=\"unit-reply-items__content-description text-description\">{{reviews.commentdetail.reply}}\n </div>\n </div>\n </div>\n <div v-if=\"!Array.isArray(reviews.commentdetail.add)\">\n <div class=\"unit-detail-comment__list-reply-items d-flex\" v-if=\"reviews.commentdetail.add.comment\">\n <div class=\"reply-avatar\">\n <img class=\"img-fuild\"\n :src=\"reviews.commentdetail.avatar_url || '/assets/images/product_comment_default.svg'\" alt=\"\">\n </div>\n <div class=\"unit-reply-items__content\">\n <div class=\"d-flex justify-content-between align-items-center mb-10 flex-wrap\">\n <div class=\"unit-reply-items__content-title text-title\">{{reviews.commentdetail.nickname ?\n (reviews.commentdetail.nickname.slice(0, 2) + '*****') : reviews.commentdetail.source === 1 ?\n 'mall buyer' : '--'}}</div>\n <div class=\"text-small time\">{{reviews.commentdetail.add.comment_time}}</div>\n </div>\n <div class=\"unit-reply-items__content-description text-description mb-20\">\n {{reviews.commentdetail.add.comment}}</div>\n <div class=\"unit-detail-comment__list-imgs row mb-20\" v-if=\"reviews.commentdetail.add.comment_img\">\n <div class=\"col col-3 col-md-2\"\n v-for=\"(itemAddImg, indexAddImg) in reviews.commentdetail.add.comment_img.split(',')\"\n :key=\"indexAddImg\">\n <a :href=\"globalThis.Server.getRinseHref(itemAddImg, window.app.info.site)\" target=\"_blank\"><img\n :src=\"itemAddImg\" alt=\"\"></a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-comment__list-reply-items d-flex\" v-if=\"reviews.commentdetail.add.reply\">\n <div class=\"reply-avatar\">\n <img class=\"img-fuild\" src=\"/assets/images/merchant_default.svg\" alt=\"\">\n </div>\n <div class=\"unit-reply-items__content\">\n <div class=\"d-flex justify-content-between align-items-center mb-10 flex-wrap\">\n <div class=\"unit-reply-items__content-title text-title\">Merchant reply</div>\n <div class=\"text-small time\">{{reviews.commentdetail.add.reply_time}}</div>\n </div>\n <div class=\"unit-reply-items__content-description text-description\">\n {{reviews.commentdetail.add.reply}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__detail-bottom\" style=\"margin-top: 0;\">\n <button type=\"button\" class=\"btn unit-user__button\" @click=\"reviews.step = 1\"><span\n class=\"iconfont icon-action-left-arrow-lighter\"></span>\n <?= $t('return') ?>\n </button>\n </div>\n </div>\n\n</template>\n<div v-else-if=\"reviews.step === 3\">
1\n <div class=\"unit-user-comment-modal\" ref=\"commentModal\"></div>\n <div class=\"review-btn-group\" button-style=\"2\">\n <button class=\"btn base-button-inner\" type=\"button\" @click=\"submitComment\">ok</button>\n <button class=\"btn base-button-inner ml-2 btn-default\" type=\"button\" @click=\"cancelComment\">cancel</button>\n </div>\n</div>","/package/components/unit-user-coupons":"<div class=\"unit-user-coupons\">\n <div class=\"unit-user-coupons_tab\">\n <div class=\"unit-user-coupons_tab-item\" :class=\"{ 'active': coupons.type === 'coupons' }\"\n @click=\" coupons.type = 'coupons'\">\n <?= $t('my coupons') ?>\n </div>\n <!-- <div class=\"unit-user-coupons_tab-item\" :class=\"{ 'active': coupons.type === 'code' }\" @click=\" coupons.type = 'code'\"><?= $t('my promo code') ?></div> -->\n </div>\n <template v-if=\"coupons.type === 'coupons'\">\n <div class=\"unit-user-coupons_container\">\n <div class=\"unit-user-coupons_nav\">\n <div class=\"unit-user-coupons_nav-item\" v-for=\"key in Object.keys(coupons.list)\"\n :class=\"{'active':coupons.list[key].active}\" :key=\"key\" @click=\"getFilterCouponList(coupons.list[key])\">\n {{ coupons.list[key].name }} {{ coupons.list[key].num > 0 ? `(${coupons.list[key].num})` : '' }}\n </div>\n </div>\n <div class=\"unit-user-coupons_list\">\n\n </div>\n </div>\n </template>\n <template v-else-if=\"coupons.type === 'code'\"></template>\n</div>","/package/components/unit-user-index":"<div class=\"unit-user-center--body unit-user__body\">\n <div class=\"unit-user-center__account\">\n <div class=\"unit-user-center__account--info\">\n <div class=\"unit-user-center__account--info-avatar\">\n <img :src=\"userInfo.avatar_url\" :alt=\"userInfo.nickname\" class=\"img-fluid\">\n </div>\n <div class=\"unit-user-center__account--info-text\">\n <div class=\"unit-user-center__account--info-name\" v-if=\"userInfo.nickname\">{{ userInfo.nickname }}</div>\n <div class=\"unit-user-center__account--info-more\" @click=\"toView($event,'info')\">\n <?= $t('complete profile') ?>\n </div>\n </div>\n </div>\n <div class=\"unit-user-center__account--another\">\n <div v-if=\"hasDistribute\" @click=\"toView($event,'affiliate')\" class=\"unit-user-center__account--another-item affiliate_entrance\">\n <img class=\"unit-user-center__account--another-img\" src=\"https://img.yfisher.com/1651203196883.png\" alt=\"\">\n <span class=\"unit-user-center__account--another-span\">\n <span class=\"unit-user-center__account--another-title main-color\">\n <?= $t('Affiliate Program') -?>\n </span>\n <span class=\"unit-user-center__account--another-arrow\"></span>\n </span>\n </div>\n <div v-if=\"false\" @click=\"toView($event,'coupons')\" class=\"unit-user-center__account--another-item\">\n <img src=\"https://img.yfisher.com/1626397827674.svg\" alt=\"\">\n <span class=\"unit-user-center__account--another-span\">\n <span class=\"unit-user-center__account--another-title\">\n <?= $t('my coupons') -?>\n </span>\n <span class=\"unit-user-center__account--another-arrow\">(100)</span>\n </span>\n </div>\n <div v-if=\"false\" class=\"unit-user-center__account--another-item\">\n <img src=\"https://img.yfisher.com/1626397823421.svg\" alt=\"\">\n <span class=\"unit-user-center__account--another-span\">\n <span class=\"unit-user-center__account--another-title\">\n <?= $t('My message') -?>\n </span>\n <span class=\"unit-user-center__account--another-num\">(100)</span>\n </span>\n </div>\n <div v-if=\"false\" @click=\"toView($event,'reviews')\" class=\"unit-user-center__account--another-item\">\n <img src=\"https://img.yfisher.com/1626397818486.svg\" alt=\"\">\n <span class=\"unit-user-center__account--another-span\">\n <span class=\"unit-user-center__account--another-title\">\n <?= $t('Comments Feedback') -?>\n </span>
1\n <span class=\"unit-user-center__account--another-num\">(100)</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"unit-user-center__order\">\n <div class=\"unit-user-order__tab\">\n <ul>\n <li :class=\"{ active: order.thisType === item.type }\" v-for=\"(item, index) in order.type\"\n v-if=\"item.status < 21\" @click=\"toOrder(item, index)\">\n <span>{{ item.name }} <em v-if=\"item.total\">{{ item.total }}</em></span>\n </li>\n </ul>\n </div>\n <div class=\"unit-user__body\">\n <div class=\"unit-user-order\" v-if=\"order.list['pay'].length\">\n <div class=\"d-flex justify-content-between align-items-center unit-user-center__title-box\">\n <div class=\"unit-user-center__title\">\n <?= $t('Awaiting Payment') ?>\n </div>\n <div class=\"base-button\" @click=\"toOrder({type: 'pay',status: 1})\">\n <div class=\"base-button__inner btn\">\n <div class=\"d-inline-block\"><?= $t('read more') ?></div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__item\" v-for=\"(item, index) in order.list['pay']\" v-if=\"item.status === 1\">\n <div class=\"unit-user-order__info unit-user-order__product-list\">\n <div class=\"unit-user-order__product-content\">\n <div class=\"unit-user-order__product-item\">\n <div class=\"unit-user-order__product-\">\n <div class=\"unit-user-order__product-item--info\">\n <span :title=\"item.create_time\">\n <strong>\n <?= $t('order time') ?>:\n </strong>{{ item.create_time }}\n </span>\n <span :title=\"item.serial_number\">\n <strong>\n <?= $t('order id') ?>:\n </strong>\n <span>{{ item.serial_number }}</span>\n </span>\n </div>\n <div class=\"unit-user-order__product-item--type\" title=\"<?= $t('commodity price') ?>\">\n <?= $t('commodity price') ?>\n </div>\n <div class=\"unit-user-order__product-item--type\" title=\"<?= $t('purchase quantity') ?>\">\n <?= $t('purchase quantity') ?>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-status\">\n <?= $t('order status') ?>\n </div>\n <div class=\"unit-user-order__product-price\">\n <?= $t('order amount') ?>\n </div>\n <div class=\"unit-user-order__product-operate\">\n <?= $t('operating') ?>\n </div>\n <div class=\"unit-user-order__product-status--m\">\n <div class=\"unit-user-order__status\">\n <?= $t('Awaiting Payment') ?>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-list\">\n <div class=\"unit-user-order__product-content\">\n <div class=\"unit-user-order__product-item\" v-for=\"pro in item.order_product\">\n <div class=\"unit-user-order__product-\">\n <a class=\"unit-user-order__product-item--info\"\n :href=\"globalThis.Server.getRinseHref(pro.product_url, window.app.info.site)\">\n <div class=\"unit-user-order__product-img\">\n <img :src=\"pro.thumb\" :alt=\"pro.product_title\" class=\"img-fluid\">\n </div>\n <div class=\"unit-user-order__product-txt\">\n <div class=\"unit-user-order__product-title\">{{ pro.product_title }}</div>\n <div class=\"unit-user-order__product-description\">\n <p v-for=\"attr in pro.style\" :key=\"attr.title\">\n {{ attr.title }} : {{ attr.content }}\n </p>\n </div>\n </div>\n </a>\n <div class=\"unit-user-order__product-item--type\">${{ pro.price }}</div>\n <div class=\"unit-user-order__product-item--type\">x{{ pro.quantity }}</div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-status\">\n <div class=\"unit-user-order__status\" v-if=\"item.status === 1\">\n <?= $t('Awaiting Payment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 4\">\n <?= $t('Awaiting Shipment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 12\">\n <?= $t('Shipping') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 21\">\n <?= $t('Completed') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 31\">\n <?= $t('Cancel') ?>\n </div>\n </div>\n <div class=\"unit-user-order__product-price\">
1\n <span>\n <?= $t('total price') ?>:\n </span>\n <p>${{ item.total_amount }}</p>\n </div>\n <div class=\"unit-user-order__product-operate\">\n <div class=\"unit-user-order__product-btn\">\n <button class=\"btn unit-user__button base-button__inner unit-user__button-pay\" v-if=\"item.status === 1\"\n @click=\"payOrder($event, item)\">\n <?= $t('pay') ?>\n </button>\n <button class=\"btn unit-user__button base-button__inner unit-user__button-detail\"\n @click=\"toView($event,'order')\">\n <?= $t('detail') ?>\n </button>\n <!-- <button class=\"btn unit-user__button base-button__inner unit-user__button-addCart\" @click=\"addCart(item.order_product)\"><?= $t('Add to Cart') ?></button> -->\n <button class=\"btn unit-user__button base-button__inner unit-user__button-cancle\"\n v-if=\"item.status === 1\" @click=\"cancelOrder($event,item.id)\">\n <?= $t('Cancel') ?>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-center__like\" v-if=\"historyProductList.length\">\n <div class=\"unit-user-center__title\">\n <?= $t('products you have viewed') ?>\n </div>\n <div class=\"unit-user-like__items unit-user-like__direction-row\">\n <div class=\"unit-user-like__item\" v-for=\"(item, index) in historyProductList\" :key=\"item.id\">\n <div class=\"unit-user-like__content\">\n <a class=\"unit-user-like__image\"\n :href=\"globalThis.Server.getRinseHref(item.page_url_suffix, window.app.info.site)\">\n <img :src=\"item.thumb\" :alt=\"item.title\">\n </a>\n <div class=\"unit-user-like__text\">\n <a class=\"unit-user-like__title\"\n :href=\"globalThis.Server.getRinseHref(item.page_url_suffix, window.app.info.site)\">{{ item.title }}</a>\n <div class=\"unit-user-like__price\">\n <em>\n <i>$</i>\n <span>\n {{ item.price.selling_min | priceFormat }}\n <span v-show=\"item.price.selling_min !== item.price.selling_max\">-{{ item.price.selling_max |\n priceFormat }}</span>\n </span>\n </em>\n <del v-show=\"item.price.cost_min\">\n <span>\n ${{ item.price.cost_min | priceFormat }}\n <span v-show=\"item.price.cost_min !== item.price.cost_max\">-{{ item.price.cost_max | priceFormat\n }}</span>\n </span>\n </del>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-user-info":"<div class=\"unit-user-info\">\n <div class=\"unit-user__header\">\n <div class=\"unit-user__title\"><?= $t('information') ?></div>\n <div class=\"unit-user__edit\" @click=\"userInfoEdit\" v-show=\"!userInfo.isEdit\"><span class=\"iconfont icon-action-edit\"></span><?= $t('edit') ?></div>\n </div>\n <div class=\"unit-user__body unit-user__body--personInfo\">\n <div class=\"unit-user-info__body--show\" v-if=\"!userInfo.isEdit\">\n <div class=\"unit-user-info__avatar\">\n <img :src=\"userInfo.avatar_url\" alt=\"\" class=\"img-fluid\">\n </div>\n <div class=\"unit-user-info__name\" v-if=\"userInfo.nickname\">{{ userInfo.nickname }}</div>\n <div class=\"unit-user-info__list\">\n <div class=\"unit-user-info__item\">\n <div class=\"unit-user-info__content-label\"><?= $t('e-mail') ?> :</div>\n <div class=\"unit-user-info__content-value\">{{ userInfo.email }}</div>\n </div>\n <div class=\"unit-user-info__item\">\n <div class=\"unit-user-info__content-label\"><?= $t('First Name') ?> :</div>\n <div class=\"unit-user-info__content-value\">{{userInfo.first_name}}</div>\n </div>\n <div class=\"unit-user-info__item\">\n <div class=\"unit-user-info__content-label\"><?= $t('Last Name') ?> :</div>\n <div class=\"unit-user-info__content-value\">{{userInfo.last_name}}</div>\n </div>\n <div class=\"unit-user-info__item\" v-for=\"item in userInfo.member_fields\">\n <div class=\"unit-user-info__content-label\">{{ item.custom_name }} :</div>\n <div class=\"unit-user-info__content-value\">{{ item.value }}</div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-info__body--edit\" v-else>\n <div class=\"unit-user-info__avatar\">\n <img :src=\"userInfo.avatar_url\" alt=\"\" class=\"img-fluid\">\n </div>\n <div class=\"unit-user-info__form\">\n <form class=\"needs-validation\" novalidate @submit.prevent=\"setUserInfo($event)\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><?= $t('Username') + ' / ' + $t('Nickname') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"userFormInfo.nickname\" name=\"nickname\" aria-describedby=\"\" required :pattern=\"formPattern.length\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('User name is greater than 1 and less than 30 characters') ?></div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><?= $t('First Name') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"userFormInfo.first_name\" name=\"firstname\" aria-describedby=\"\" required :pattern=\"formPattern.length\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('First name is greater than 1 and less than 30 characters') ?></div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><?= $t('Last Name') ?></label>\n <input type=\"text\" class=\"form-control\" v-model=\"userFormInfo.last_name\" name=\"lastname\" aria-describedby=\"\" required :pattern=\"formPattern.length\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Last name is greater than 1 and less than 10 characters') ?></div>\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><?= $t('e-mail') ?></label>\n <input type=\"email\" class=\"form-control\" v-model=\"userFormInfo.email\" :pattern=\"formPattern.email\" name=\"email\" aria-describedby=\"\" required disabled>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('email format does not match') ?></div>\n </div>\n <div class=\"form-group\" :class=\"{'form-group-gender': item.name === 'gender'}\" v-for=\"item in userFormInfo.member_fields\" :key=\"item.id\">\n <template v-if=\"item.name === 'gender'\">\n <label class=\"col-form-label\">{{ item.custom_name }}</label>\n <div class=\"\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" id=\"gender_male\" :name=\"item.name\" value=\"male\" v-model=\"item.value\">\n <label class=\"form-check-label\" for=\"gender_male\"><?= $t('male') ?></label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" id=\"gender_female\" :name=\"item.name\" value=\"female\" v-model=\"item.value\">\n <label class=\"form-check-label\" for=\"gender_female\"><?= $t('female') ?></label>\n </div>\n </div>\n </template>\n <template v-else-if=\"item.name.indexOf('phone') > -1\">\n <label for=\"\" class=\"col-form-label\">{{ item.custom_name }}</label>\n <input type=\"tel\" class=\"form-control\" v-model=\"item.value\" :name=\"item.name\" :pattern=\"formPattern.phone\" aria-describedby=\"\" :required=\"!!item.is_require\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('phone can only be numbers or line') ?></div>\n </template>\n <template v-else>\n <label for=\"\" class=\"col-form-label\">{{ item.custom_name }}</label>\n <input type=\"text\" class=\"form-control\" v-model=\"item.value\" :pattern=\"formPattern.length\" :name=\"item.name\" aria-describedby=\"\" :required=\"!!item.is_require\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('the content cannot be empty and cannot exceed 30') ?></div>\n </template>\n </div>\n <div class=\"unit-user-info__bottom base-button\">\n <div class=\"unit-user__button\" @click=\"userInfo.isEdit = false\"><span class=\"iconfont icon-action-left-arrow-lighter\"></span><?= $t('return') ?></div>\n <button class=\"base-button__inner btn\" type=\"submit\"><?= $t('submit') ?></button>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-user-inquiry":"<div class=\"unit-user-inquiry\">\n <div class=\"unit-user__header\">\n <div class=\"unit-user__title\"><?= $t('my inquiry') ?></div>\n </div>\n <div class=\"unit-user__body\">\n <!-- <div class=\"unit-user-inquiry__title\"><?= $t('order') ?></div> -->\n <div class=\"unit-user-inquiry__table table-responsive\">\n <table class=\"table\">\n <thead>\n <tr>\n <td><?= $t('e-mail') ?></td>\n <td><?= $t('message') ?></td>\n <td><?= $t('time') ?></td>\n <td><?= $t('operating') ?></td>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"item in inquire.list\" :key=\"'inquire'+item.id\">\n <td>{{ item.email }}</td>\n <td><div class=\"unit-user-inquiry__message\" :title=\"item.content\">{{ item.content }}</div></td>\n <td>{{ item.create_time }}</td>\n <td><div class=\"unit-user-inquiry__button btn\" data-toggle=\"modal\" data-target=\"#inquireModal\" @click.prevent=\"showInquireDetail(item.id)\"><?= $t('detail') ?></div></td>\n </tr>\n </tbody>\n </table>\n </div>\n <div hidden>\n <div ref=\"inquiry-detail-modal\">\n <div class=\"unit-user-inquiry__modal-content\">\n <div class=\"unit-user-inquiry__modal-content-inner\">\n {{ inquireDetail.content }}\n </div>\n </div>\n <div class=\"unit-user-inquiry__modal-info\">\n <div class=\"unit-user-inquiry__modal-info-inner\">\n <div class=\"unit-user-inquiry__modal-email\">{{ inquireDetail.email }}</div>\n <div class=\"unit-user-inquiry__modal-date\">{{ inquireDetail.create_time }}</div>\n </div>\n </div>\n </div>\n </div>\n <div hidden>\n <div ref=\"logic-modal\">\n <div class=\"unit-user-inquiry__modal-content\">\n <div class=\"unit-user-inquiry__modal-content-inner\">\n {{ inquireDetail.content }}\n </div>\n </div>\n <div class=\"unit-user-inquiry__modal-info\">\n <div class=\"unit-user-inquiry__modal-info-inner\">\n <div class=\"unit-user-inquiry__modal-email\">{{ inquireDetail.email }}</div>\n <div class=\"unit-user-inquiry__modal-date\">{{ inquireDetail.create_time }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-user-like":"<div class=\"unit-user-like\">\n <div class=\"unit-user__header\">\n <div class=\"unit-user__title\"><?= $t('my like') ?>
1 <span v-show=\"like.total\">({{ like.total }})</span> </div>\n </div>\n <div class=\"unit-user__body\">\n <template v-if=\"like.list.length\">\n <div class=\"unit-user-like__direction\">\n <div class=\"unit-user-like__direction-left\">\n <span class=\"iconfont mr-1 icon-base-cascades\" :class=\"{active: like.direction === 'row'}\" @click=\"like.direction = 'row'\"></span>\n <span class=\"iconfont icon-base-list\" :class=\"{active: like.direction === 'column'}\" @click=\"like.direction = 'column'\"></span>\n </div>\n <div class=\"unit-user-like__direction-right\" @click=\"like.showSelect = !like.showSelect\"><?= $t('management') ?></div>\n </div>\n <div class=\"unit-user-like__items\" :class=\"[`unit-user-like__direction-${like.direction}`,{selected: like.showSelect}]\">\n <div class=\"unit-user-like__item\" v-for=\"(item, index) in like.list\" :key=\"item.id\">\n <div class=\"unit-user-like__item-date\">{{ item.create_time }}</div>\n <div class=\"unit-user-like__item-select custom-checkbox\" @change=\"singleChoiceLike(item.is_select, index)\" v-show=\"like.showSelect\">\n <input type=\"checkbox\" :id=\"`customCheck${index+1}`\" :checked=\"item.is_select\" class=\"custom-control-input\">\n <label :for=\"`customCheck${index+1}`\" class=\"custom-control-label\"></label>\n </div>\n <div class=\"unit-user-like__content\">\n <a class=\"unit-user-like__image\" :href=\"globalThis.Server.getRinseHref(item.product.page_url_suffix, window.app.info.site)\">\n <img :src=\"item.product.thumb\" :alt=\"item.product.title\">\n </a>\n <div class=\"unit-user-like__text\">\n <a class=\"unit-user-like__title\" :href=\"globalThis.Server.getRinseHref(item.product.page_url_suffix, window.app.info.site)\">{{ item.product.title }}</a>\n <div class=\"unit-user-like__price\">\n <em>\n <i>$</i>\n <span>\n {{ item.price.selling_min | priceFormat }}\n <span v-show=\"item.price.selling_min !== item.price.selling_max\">-{{ item.price.selling_max | priceFormat }}</span>\n </span>\n </em>\n <del v-show=\"item.price.cost_min\">\n <span>\n ${{ item.price.cost_min | priceFormat }}\n <span v-show=\"item.price.cost_min !== item.price.cost_max\">-{{ item.price.cost_max | priceFormat }}</span>\n </span>\n </del>\n </div>\n <div class=\"unit-user-like__info\">\n <a class=\"unit-user-like__toBuy base-button__inner btn\" :href=\"globalThis.Server.getRinseHref(item.product.page_url_suffix, window.app.info.site)\"><?= $t('Add to Cart') ?></a>\n <div class=\"unit-user-like__delete\" @click=\"cancelLike(item.product.id, index)\">\n <span class=\"iconfont icon-base-collect-fill\"></span>\n <em><?= $t('delete') ?></em>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-like__selected\" v-show=\"like.showSelect\">\n <div class=\"unit-user-like__selected-total\">\n <div class=\"custom-checkbox\">\n <input type=\"checkbox\" id=\"customCheckAll\" class=\"custom-control-input\" :checked=\"like.isSelectAll\" @change=\"selectAllLike(like.isSelectAll)\">\n <label for=\"customCheckAll\" class=\"custom-control-label\"><?= $t('select all') ?></label>\n </div>\n <template v-if=\"like.selectList.length\">\n <span class=\"mr-1\">{{ like.selectList.length }}</span>\n <?= $t('item selected') ?>\n </template>\n </div>\n <div class=\"unit-user-like__selected-del\" v-if=\"like.selectList.length\" @click=\"deleteSelectAllLike()\">\n <span class=\"iconfont icon-action-delete-lighter\"></span>\n </div>\n </div>\n </template>\n <div class=\"unit-user-order__nodata\" v-else>\n <img src=\"/assets/images/no_like.png\" alt=\"\">\n <p><?= $t('there is no product you like, go shopping right now') ?>.</p>\n <div class=\"base-button pt-3\">\n <a href=\"<?=globalThis.Server.getRinseHref('/', site) -?>\" class=\"base-button__inner btn\"><?= $t('Go shopping') ?></a>\n </div>\n </div>\n </div>\n</div>","/package/components/unit-user-order":"<!-- 订åå表 -->\n<template v-if=\"order.step === 1\">\n <div class=\"unit-user-order__tab\">\n <ul>\n <li :class=\"{ active: order.thisType === item.type }\" @click=\"orderChange(item, index)\"\n v-for=\"(item, index) in order.type\">
1\n <span>{{ item.name }} ({{ item.total }})</span>\n </li>\n </ul>\n </div>\n <div class=\"unit-user__body unit-user__body--order\">\n <div class=\"loading absolute-shade\" v-if=\"userOrderLoading\"></div>\n <div class=\"unit-user-order\" v-if=\"order.list[order.thisType].length\">\n <div class=\"unit-user-order__item\" v-for=\"(item, index) in order.list[order.thisType]\">\n <div class=\"unit-user-order__info unit-user-order__product-list\">\n <div class=\"unit-user-order__product-content\">\n <div class=\"unit-user-order__product-item\">\n <div class=\"unit-user-order__product-\">\n <div class=\"unit-user-order__product-item--info\">\n <span :title=\"item.create_time\">\n <strong>\n <?= $t('order time') ?>:\n </strong>\n {{ item.create_time }}\n </span>\n <span :title=\"item.serial_number\">\n <strong>\n <?= $t('order id') ?>:\n </strong>\n <span>\n {{ item.serial_number }}\n </span>\n </span>\n </div>\n <div class=\"unit-user-order__product-item--type\">\n <?= $t('commodity price') ?>\n </div>\n <div class=\"unit-user-order__product-item--type\">\n <?= $t('purchase quantity') ?>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-status\">\n <?= $t('order status') ?>\n </div>\n <div class=\"unit-user-order__product-price\">\n <?= $t('order amount') ?>\n </div>\n <div class=\"unit-user-order__product-operate\">\n <?= $t('operating') ?>\n </div>\n <div class=\"unit-user-order__product-status--m\">\n <div class=\"unit-user-order__status\" v-if=\"item.status === 1 && item.refund_status < 1\">\n <?= $t('Awaiting Payment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 4 && item.refund_status < 1\">\n <?= $t('Awaiting Shipment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 12 && item.refund_status < 1\">\n <?= $t('Shipping') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 21 && item.refund_status < 1\">\n <?= $t('Completed') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 31 && item.refund_status < 1\">\n <?= $t('Cancel') ?>\n </div>\n <div class=\"unit-user-order__status unit-user-order__refund-status\"\n v-if=\"item.refund_status && item.refund_status === 1 && order.thisType == 'all'\">\n <?= $t('Refund application') ?>\n </div>\n <div class=\"unit-user-order__status unit-user-order__refund-status\"\n v-if=\"item.refund_status && item.refund_status === 2 && order.thisType == 'all'\">\n <?= $t('Pending refund') ?>\n </div>\n <div class=\"unit-user-order__status unit-user-order__refund-status\"\n v-if=\"item.refund_status && item.refund_status === 3 && order.thisType == 'all'\">\n <?= $t('Refunding') ?>\n </div>\n <div class=\"unit-user-order__status unit-user-order__refund-successfully\"\n v-if=\"item.refund_status && item.refund_status === 4 && order.thisType == 'all'\">\n <?= $t('Refund successfully') ?>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-list\">\n <div class=\"unit-user-order__product-content\">\n <div class=\"unit-user-order__product-item\" v-for=\"pro in item.order_product\">\n <div class=\"unit-user-order__product-\">\n <a class=\"unit-user-order__product-item--info\"\n :href=\"globalThis.Server.getRinseHref(pro.product_url, window.app.info.site)\">\n <div class=\"unit-user-order__product-img\">\n <img :src=\"pro.thumb\" :alt=\"pro.product_title\" class=\"img-fluid\">\n </div>\n <div class=\"unit-user-order__product-txt\">\n <div class=\"unit-user-order__product-title\">{{ pro.product_title }}</div>\n <div class=\"unit-user-order__product-description\">\n <p v-for=\"attr in pro.style\" :key=\"attr.title\">\n {{ attr.title }} : {{ attr.content }}\n </p>\n </div>\n </div>\n </a>\n <div class=\"unit-user-order__product-item--type\">${{ pro.price }}</div>\n <div class=\"unit-user-order__product-item--type\">x{{ pro.quantity }}</div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__product-status\">\n <div class=\"unit-user-order__status\" v-if=\"item.status === 1 && item.refund_status < 1\">\n <?= $t('Awaiting Payment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 4 && item.refund_status < 1\">\n <?= $t('Awaiting Shipment') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 12 && item.refund_status < 1\">\n <?= $t('Shipping') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 21 && item.refund_status < 1\">\n <?= $t('Completed') ?>\n </div>\n <div class=\"unit-user-order__status\" v-if=\"item.status === 31 && item.refund_status < 1\">\n <?= $t('Cancel') ?>\n </div>\n <div class=\"unit-user-order__status unit-user-order__refund-status\"\n v-if=\"item.refund_status && item.refund_status === 1 && order.thisType == 'all'\">\n <?= $t('Refund application') ?>\n </div>\n <div class=\"unit-user-order__status unit-user-order__refund-status\"\n v-if=\"item.refund_status && item.refund_status === 2 && order.thisType == 'all'\">\n <?= $t('Pending refund') ?>\n </div>\n <div class=\"unit-user-order__status unit-user-order__refund-status\"\n v-if=\"item.refund_status && item.refund_status === 3 && order.thisType == 'all'\">\n <?= $t('Refunding') ?>\n </div>\n <div class=\"unit-user-order__status unit-user-order__refund-successfully\"\n v-if=\"item.refund_status && item.refund_status === 4 && order.thisType == 'all'\">\n <?= $t('Refund successfully') ?>\n </div>\n </div>\n <div class=\"unit-user-order__product-price\">\n <div class=\"d-flex align-items-center\">
1\n <span>\n <?= $t('total price') ?>:\n </span>\n <p>${{ item.total_amount }}</p>\n </div>\n </div>\n <div class=\"unit-user-order__product-operate\">\n <div class=\"unit-user-order__product-btn\">\n <button class=\"btn unit-user__button base-button__inner unit-user__button-pay\" v-if=\"item.status === 1\"\n @click=\"payOrder($event, item)\">\n <?= $t('pay now') ?>\n </button>\n <button class=\"btn unit-user__button base-button__inner unit-user__button-detail\"\n @click=\"getOrderDetail($event,item.id)\">\n <?= $t('detail') ?>\n </button>\n <!-- <button class=\"btn unit-user__button base-button__inner unit-user__button-addCart\" @click=\"addCart(item.order_product)\"><?= $t('Add to Cart') ?></button> -->\n <button class=\"btn unit-user__button base-button__inner unit-user__button-cancle\" v-if=\"item.status === 1\"\n @click=\"cancelOrder($event,item.id)\">\n <?= $t('Cancel') ?>\n </button>\n <button class=\"btn unit-user__button base-button__inner unit-user__button-cancle\"\n v-show=\"item.refund_status && item.refund_status < 3 && item.refund_status > 0\"\n @click=\"refundFun($event,item, true, false)\">\n <?= $t('Cancel refund') ?>\n </button>\n <button class=\"btn unit-user__button base-button__inner\" v-show=\"item.status === 31 || item.status === 21\"\n @click=\"addCart($event,item.order_product, true)\">\n <?= $t('repurchase') ?>\n </button>\n <button class=\"btn unit-user__button base-button__inner unit-user__button-cancle\"\n v-show=\"item.status === 31 && !item.refund_status\" @click=\"deleteOrder($event,item.id)\">\n <?= $t('delete') ?>\n </button>\n <div class=\"check_logistics_record\" @mouseover=\"onLogisticsOver($event,item)\"\n @mouseleave=\"onLogisticsLeave($event,item)\"\n v-if=\"item.status === 12 && item.origin_track_list && item.origin_track_list.length>0\">\n <span class=\"check_logistics_record--span\" @click=\"onLogisticsClick($event, item)\">\n <?= $t('Check Logistics Record') ?>\n </span>\n </div>\n <button\n v-if=\"item.status === 21 && item.order_product.filter(_val=>_val.comment_id > 0).length !== item.order_product.length\"\n class=\"btn unit-user__button base-button__inner unit-user__button-cancle write-review\"\n @click=\"openReviews($event,'reviews', item)\">\n <?= $t('Review') ?>\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-pagination unit-user-order_pagination\">\n <nav class=\"base-pagination\">\n <ul class=\"base-pagination__items\">\n <!-- <li \n class=\"base-pagination__item base-pagination__item--first\"\n :class=\"{disabled: (order.type.find(_val=>_val.type == order.thisType).page_number === 1 || order.type.find(_val=>_val.type == order.thisType).page_count === 1) }\"\n >\n <div class=\"base-pagination__link\" @click=\"onPagination(1)\">\n <span class=\"iconfont icon-action-left-lighter\"></span>\n </div>\n </li> -->\n <li class=\"base-pagination__item base-pagination__item--prev\" :class=\"{disabled: order.type.find(_val=>_val.type == order.thisType).page_number === 1 }\">\n <div class=\"base-pagination__link\" @click=\"onPagination(order.type.find(_val=>_val.type == order.thisType).page_number - 1)\">\n <span class=\"iconfont icon-action-left-lighter\"></span>\n </div>\n </li>\n <li v-if=\"order.type.find(_val=>_val.type == order.thisType).page_number > 2\" class=\"base-pagination__item\" :class=\"{'base-pagination__item-first': order.type.find(_val=>_val.type == order.thisType).page_count > 3}\">\n <div class=\"base-pagination__link\" @click=\"onPagination(1)\">1</div>\n </li>\n <li v-if=\"order.type.find(_val=>_val.type == order.thisType).page_number > 2 && order.type.find(_val=>_val.type == order.thisType).page_number -2 > 1\" class=\"base-pagination__item base-pagination__item-more disabled\">\n <div class=\"base-pagination__link\">...</div>\n </li>\n <li v-if=\"order.type.find(_val=>_val.type == order.thisType).page_number > 1\" class=\"base-pagination__item\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(order.type.find(_val=>_val.type == order.thisType).page_number - 1)\">\n {{ order.type.find(_val=>_val.type == order.thisType).page_number - 1 }}\n </div>\n </li>\n <li class=\"base-pagination__item active\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(order.type.find(_val=>_val.type == order.thisType).page_number)\">\n {{order.type.find(_val=>_val.type == order.thisType).page_number}}\n </div>\n </li>\n <li v-if=\"order.type.find(_val=>_val.type == order.thisType).page_count - order.type.find(_val=>_val.type == order.thisType).page_number > 1\" class=\"base-pagination__item\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(order.type.find(_val=>_val.type == order.thisType).page_number+1)\">\n {{ order.type.find(_val=>_val.type == order.thisType).page_number+ 1 }}\n </div>\n </li>\n <li v-if=\"order.type.find(_val=>_val.type == order.thisType).page_number == 1 && order.type.find(_val=>_val.type == order.thisType).page_count > 3\" class=\"base-pagination__item base-pagination__item-third\">\n <div class=\"base-pagination__link\" @click=\"onPagination(3)\">3</div>\n </li>\n <li v-if=\"order.type.find(_val=>_val.type == order.thisType).page_count - order.type.find(_val=>_val.type == order.thisType).page_number > 2\" class=\"base-pagination__item base-pagination__item-more disabled\">\n <div class=\"base-pagination__link\">...</div>\n </li>\n <li v-if=\"order.type.find(_val=>_val.type == order.thisType).page_count !== order.type.find(_val=>_val.type == order.thisType).page_number && order.type.find(_val=>_val.type == order.thisType).page_count > order.type.find(_val=>_val.type == order.thisType).page_number\" class=\"base-pagination__item\" :class=\"{'base-pagination__item-last': order.type.find(_val=>_val.type == order.thisType).page_count > 3}\">\n <div class=\"base-pagination__link\" \n @click=\"onPagination(order.type.find(_val=>_val.type == order.thisType).page_count)\">\n {{ order.type.find(_val=>_val.type == order.thisType).page_count }}\n </div>\n </li>\n <li\n class=\"base-pagination__item base-pagination__item--next page-next\"\n :class=\"{'disabled': order.type.find(_val=>_val.type == order.thisType).page_number === order.type.find(_val=>_val.type == order.thisType).page_count }\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(order.type.find(_val=>_val.type == order.thisType).page_number+1)\"><span class=\"iconfont icon-action-left-lighter\"></span></div>\n </li>\n <!-- <li\n class=\"base-pagination__item base-pagination__item--last\"\n :class=\"{'disabled': (order.type.find(_val=>_val.type == order.thisType).page_number === order.type.find(_val=>_val.type == order.thisType).page_count || order.type.find(_val=>_val.type == order.thisType).page_count === 1) }\">\n <div class=\"base-pagination__link\"\n @click=\"onPagination(order.type.find(_val=>_val.type == order.thisType).page_count)\"><span class=\"iconfont icon-action-left-lighter\"></span></div>\n </li> -->\n </ul>\n </nav>\n <!-- è¾å
¥æ¡ -->\n <div class=\"base-pagination__input\">\n <!-- <span>Go to</span> -->\n <input type=\"text\" class=\"base-pagination__input-inner\" v-model=\"order.pagination_number\" @input=\"paginationInput()\" @keyup.enter=\"onPagination(order.pagination_number)\" :placeholder=\"`${window.app.utilts.$t('Go to Page')}`\"/>\n <div class=\"iconfont icon-action-left-lighter base-pagination__input-href\" @click=\"onPagination(order.pagination_number)\"></div>\n <!-- <span>Page</span> -->\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__nodata\" v-else>\n <img src=\"/assets/images/no_inquire.svg\" alt=\"\">\n <p>\n <?= $t('no related orders') ?>\n </p>\n </div>\n </div>\n</template>\n<!-- 订å详æ
-->\n<template v-else>\n <div class=\"unit-user__header\">\n <div class=\"unit-user__title\">\n <?= $t('order details') ?>\n </div>\n </div>
1\n <div class=\"unit-user__body unit-user__body--user-detail\">\n <div class=\"unit-user-order__detail\">\n <div class=\"unit-user-order__detail-id\">\n <span>\n <?= $t('order id') ?>: {{ order.detail.serial_number }}\n </span>\n <div class=\"unit-user-order__detail-btn-group base-button\">\n <button class=\"btn base-button__inner unit-user__button-detail\" @click=\"cancelOrder($event, order.detail.id)\"\n v-if=\"order.detail.status === 1\">\n <?= $t('Cancel') ?>\n </button>\n <button v-if=\"order.detail.status === 1\" class=\"btn base-button__inner unit-user__button-default\"\n @click=\"payOrder($event, order.detail)\">\n <?= $t('pay now') ?>\n </button>\n <!-- ææ¶éè -->\n <button v-if=\"false\" class=\"btn base-button__inner unit-user__button-default\" @click=\"checkLogistics\"\n v-if=\"order.detail.status === 12\">\n <?= $t('Check Logistics') ?>\n </button>\n <button class=\"btn base-button__inner unit-user__button-default\" @click=\"finishOrder(order.detail.id)\"\n v-if=\"order.detail.status === 12\">\n <?= $t('finish order') ?>\n </button>\n <button class=\"btn base-button__inner unit-user__button-default unit-user__button-refund\"\n v-show=\"globalConfig.refund_available && order.detail.status === 4 && order.detail.refund_status < 1\"\n @click=\"refundFun($event,order.detail, false, true)\">\n <?= $t('Request a refund') ?>\n </button>\n <button class=\"btn base-button__inner unit-user__button-default unit-user__button-refund\" v-show=\"globalConfig.refund_available && order.detail.refund_status && \n order.detail.refund_status < 3 && order.detail.refund_status > 0\"\n @click=\"refundFun($event,order.detail, true, true)\">\n <?= $t('Cancel refund') ?>\n </button>\n </div>\n </div>\n <div class=\"unit-user-order__detail-pay\">\n <div class=\"unit-user-order__detail-pay-title\">\n <div class=\"unit-user-order__detail-status\">\n <span v-if=\"order.detail.refund_status && order.detail.refund_status === 1\">\n <?= $t('Refund application') ?>\n </span>\n <span v-if=\"order.detail.refund_status && order.detail.refund_status === 2\">\n <?= $t('Pending refund') ?>\n </span>\n <span v-if=\"order.detail.refund_status && order.detail.refund_status === 3\">\n <?= $t('Refunding') ?>\n </span>\n <span v-if=\"order.detail.refund_status && order.detail.refund_status === 4\">\n <?= $t('Refund successfully') ?>\n </span>\n <span v-if=\"order.detail.status === 1 && order.detail.refund_status < 1\">\n <?= $t('Awaiting Payment') ?>\n </span>\n <span v-if=\"order.detail.status === 4 && order.detail.refund_status < 1\">\n <?= $t('Awaiting Shipment') ?>\n </span>\n <span v-if=\"order.detail.status === 12 && order.detail.refund_status < 1\">\n <?= $t('Shipping') ?>\n </span>\n <span v-if=\"order.detail.status === 21 && order.detail.refund_status < 1\">\n <?= $t('Completed') ?>\n </span>\n <span v-if=\"order.detail.status === 31 && order.detail.refund_status < 1\">\n <?= $t('Cancel') ?>\n </span>\n </div>\n <div class=\"unit-user-order__detail-pay-time\" v-if=\"order.detail.pay_time\">\n {{ new Date(order.detail.pay_time*1000).format('yyyy-MM-dd hh:mm:ss')}}\n </div>\n </div>\n <!-- <div class=\"unit-user-order__detail-refund-remark\">Reason for rejection of refundï¼{{order.detail.refund_remark}}</div> -->\n <div class=\"unit-user-order__detail-refund-remark\" v-if=\"order.detail.refund_remark\">\n Reason for rejection of refund: {{order.detail.refund_remark}}\n </div>\n <!-- paypal -->\n <div class=\"unit-user-order__detail-pay-type\" v-if=\"\n order.detail.payment_type !== 12\">\n <div class=\"unit-user-order__detail-pay-subtitle\">\n <?= $t('Order information') ?>\n </div>\n <div class=\"unit-user-order__detail-pay-content\">\n <dl>\n <dt>\n <?= $t('payment method') ?>:\n </dt>\n <dd v-if=\"order.detail.payment_type === 11\">\n <?= $t('Paypal') ?>\n </dd>\n <dd v-else-if=\"[13, 14, 15, 17, 18, 19].includes(order.detail.payment_type)\">\n <?= $t('Credit or Debit Cards') ?>\n </dd>\n </dl>\n <dl>\n <dt>\n <?= $t('total price') ?>:\n </dt>\n <dd>${{order.detail.total_amount}}</dd>\n </dl>\n <dl v-if=\" order.detail.refund_status && order.detail.refund_status==4\">\n <dt>\n <?= $t('refund amount') ?>:\n </dt>\n <dd class=\"unit-user-order__refund-successfully\">${{order.detail.refund_amount}}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('number of item') ?>:\n </dt>\n <dd>{{ order.detail.total_number }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('order message') ?>:\n </dt>\n <dd>{{ order.detail.message }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('order Attachment') ?>:\n </dt>\n <dd>\n <div style=\"color:#0489FF;cursor: pointer;\" \n v-for=\"(item,index) in order.detail.attachments\"\n @click=\"handleDownload(item.url,item.name)\"\n >\n {{ item.name }}\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <!-- 西è -->\n <div class=\"unit-user-order__detail-pay-type\" v-if=\"order.detail.payment_type === 12\">\n <!-- 西è -->\n <div class=\"unit-user-order__detail-pay-subtitle\">\n <?= $t('Order information') ?>\n </div>\n <div class=\"unit-user-order__detail-pay-content\">\n <dl>\n <dt>\n <?= $t('payment method') ?>:\n </dt>\n <dd>\n <?= $t('Western Union') ?>\n </dd>\n </dl>\n <dl>\n <dt>\n <?= $t('total price') ?>:\n </dt>\n <dd>${{order.detail.total_amount}}</dd>\n </dl>\n <dl v-if=\"order.detail.refund_status && order.detail.refund_status == 4\">\n <dt>\n <?= $t('refund amount') ?>:\n </dt>\n <dd class=\"unit-user-order__refund-successfully\">${{order.detail.refund_amount}}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('number of item') ?>:\n </dt>\n <dd>{{ order.detail.total_number }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('order message') ?>:\n </dt>\n <dd>{{ order.detail.message }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('order Attachment') ?>:\n </dt>\n <dd>\n <div style=\"color:#0489FF;cursor: pointer;\" \n v-for=\"(item,index) in order.detail.attachments\"\n @click=\"handleDownload(item.url,item.name)\"\n >\n {{ item.name }}\n </div>\n </dd>\n </dl>\n <div class=\"unit-user-order__detail-western\">\n <div class=\"unit-user-order__detail-western-title\">\n <?= $t('western union information') ?><span\n :class=\"['iconfont', 'icon-action-bottom-lighter', {active: westernInfoShow}]\"\n @click=\"toggleWesternInfo\"></span>\n </div>\n <div class=\"unit-user-order__detail-pay-content\" v-show=\"westernInfoShow\">\n <dl>\n <dt>\n <?= $t('name') ?>:\n </dt>\n <dd>{{ order.detail.order_payment.payment_info.payment_config.name }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('account') ?>:\n </dt>\n <dd>{{ order.detail.order_payment.payment_info.payment_config.account }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('bank name') ?>:\n </dt>\n <dd>{{ order.detail.order_payment.payment_info.payment_config.bank_name }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('swift code') ?>:\n </dt>\n <dd>{{ order.detail.order_payment.payment_info.payment_config.swift_code }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('bank address') ?>:\n </dt>\n <dd>{{ order.detail.order_payment.payment_info.payment_config.bank_address }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('note') ?>:\n </dt>\n <dd>{{ order.detail.order_payment.payment_info.payment_config.note }}</dd>\n </dl>\n <dl class=\"mt-4\">\n <dt>\n <?= $t('first name') ?>:\n </dt>\n <dd>{{ order.detail.payment_info.first_name }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('last name') ?>:\n </dt>\n <dd>{{ order.detail.payment_info.last_name }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('MTCN# No.(10 digits)') ?>:\n </dt>\n <dd>{{ order.detail.payment_info.mtcn }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('Country') ?>:\n </dt>\n <dd>{{ order.detail.payment_info.country_name }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('currency') ?>:\n </dt>\n <dd>{{ order.detail.payment_info.currency_code }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('payment amount') ?>:\n </dt>\n <dd>{{ order.detail.payment_info.payment_amount }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('content') ?>:\n </dt>\n <dd>{{ order.detail.payment_info.content }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__detail-form\" v-if=\"false\">\n <form class=\"needs-validation\" novalidate @submit.prevent=\"submitOrderForm($event)\">\n <div class=\"row\">\n <div class=\"col-12 col-md-6 col-xl-4\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <?= $t('first name') ?>\n </label>\n <input type=\"text\" class=\"form-control\" name=\"firstname\" aria-describedby=\"\" required>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('user name is greater than 3 characters') ?>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-6 col-xl-4\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\"><?= $t('last name') ?></label>\n <input type=\"text\" class=\"form-control\" name=\"lastname\" aria-describedby=\"\" required>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('user name is greater than 3 characters') ?>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-6 col-xl-4\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <?= $t('usd') ?>\n </label>\n <select name=\"USD\" class=\"form-control\" required>\n <option value=\"USD\">USD</option>\n </select>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"></div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 col-md-6 col-xl-4\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <?= $t('sent money') ?>\n </label>\n <input type=\"text\" class=\"form-control\" name=\"sentMoney\" aria-describedby=\"\" required>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"></div>\n </div>\n </div>\n <div class=\"col-12 col-md-6 col-xl-4\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">MTCN# NO. (Digits)</label>\n <input type=\"text\" class=\"form-control\" name=\"mtc\" aria-describedby=\"\" required>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"></div>\n </div>\n </div>\n <div class=\"col-12 col-md-6 col-xl-4\">\n <div class=\"form-group\">\n <label for=\"message-text\" class=\"col-form-label\">\n <?= $t('Country') ?>/<?= $t('area') ?>\n </label>\n <select name=\"country\" class=\"form-control\" required>\n <option :value=\"item.id\" v-for=\"item in multiple_address\" :key=\"`country_${item.id}`\">\n {{ item.en_name }}\n </option>\n </select>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content can not be blank') ?>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <?= $t('content') ?>\n </label>\n <textarea name=\"content\" class=\"form-control\" rows=\"4\"></textarea>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content can not be blank') ?>\n </div>\n </div>\n </div>\n <div class=\"col-12 text-right text-white\">\n <button type=\"submit\" class=\"btn base-button__inner unit-user__button-default\">\n <?= $t('submit') ?>\n </button>\n </div>\n </div>\n </form>\n </div>\n <div class=\"unit-user-order__detail-express\">\n <div class=\"row\">\n <div class=\"col-12 col-md-12 col-xl-6\">\n <div class=\"unit-user-order__detail-express-item\">\n <div class=\"unit-user-order__detail-express-title\">\n <?= $t('Shipping Method') ?>\n </div>\n <div class=\"unit-user-order__detail-express-item-inner\">\n <dl>\n <dt>\n
1<?= $t('shipment enterprise') ?>:\n </dt>\n <dd>{{ order.detail.order_shipment[0].shipment_name }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('shipment number') ?>:\n </dt>\n <dd>{{ order.detail.order_shipment[0].shipment_number }}</dd>\n </dl>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-12 col-xl-6\">\n <div class=\"unit-user-order__detail-express-item\">\n <div class=\"unit-user-order__detail-express-title\">\n <?= $t('Shipping Address') ?>\n </div>\n <div class=\"unit-user-order__detail-express-item-inner\">\n <dl>\n <dt>\n <?= $t('name') ?>:\n </dt>\n <dd>{{ order.detail.order_shipment[0].first_name }} {{ order.detail.order_shipment[0].last_name }}\n </dd>\n </dl>\n <dl>\n <dt>\n <?= $t('contact') ?>:\n </dt>\n <dd>{{ order.detail.order_shipment[0].phone }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('postal code') ?>:\n </dt>\n <dd>{{ order.detail.order_shipment[0].zip_code }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('address') ?>:\n </dt>\n <dd>{{ order.detail.order_shipment[0].address_one }}, {{ order.detail.order_shipment[0].city }}, {{\n order_address.province_en_name }}, {{ order_address.country_en_name }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div ref=\"detailLogistics\" class=\"row\">\n <div class=\"col-12 col-md-12 col-xl-12\">\n <div class=\"unit-user-order__detail-express-item\">\n <div class=\"unit-user-order__detail-express-title\">\n <?= $t('logistics tracking') ?>\n </div>\n <div class=\"unit-user-order__detail-express-item-inner\">\n <div class=\"check_logistics_record--content_detail\"\n v-show=\"order.detail.origin_track_list && order.detail.origin_track_list.length > 0\">\n <div v-for=\"track in order.detail.origin_track_list\" class=\"check_logistics_record--item\">\n <span class=\"check_logistics_record--date\">{{track.checkpoint_date}}</span>\n <span class=\"check_logistics_record--title\"> {{track.tracking_detail}}</span>\n </div>\n </div>\n <div class=\"check_logistics_record--content_detail\"\n v-show=\"!order.detail.origin_track_list || order.detail.origin_track_list.length === 0\">\n <?= $t('the relevant logistics information cannot be queried temporarily') ?>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 col-md-12 col-xl-6\">\n <div class=\"unit-user-order__detail-express-item\">\n <div class=\"unit-user-order__detail-express-title\">\n <?= $t('Product information') ?>\n </div>\n <div class=\"unit-user-order__detail-express-item-inner\">\n <div class=\"unit-user-order__detail-express-product\" v-for=\"pro in order.detail.order_product\">\n <a :href=\"globalThis.Server.getRinseHref(pro.product_url, window.app.info.site)\"\n class=\"unit-user-order__detail-express-product-inner\">\n <div class=\"unit-user-order__detail-express-product-img\">\n <img :src=\"pro.thumb_prefix\" alt=\"\" class=\"img-fluid\">\n </div>\n <div class=\"unit-user-order__detail-express-product-content\">\n <div class=\"unit-user-order__detail-express-product-title\">{{ pro.product_title }}</div>\n <div class=\"unit-user-order__detail-express-product-description\">\n <p v-for=\"desc in pro.style\">
1\n <span>{{ desc.title }}</span>: <span>{{ desc.content }}</span>\n </p>\n </div>\n </div>\n <div class=\"unit-user-order__detail-express-product-amount\">\n <p>{{ pro.price }}</p>\n <p>x{{ pro.quantity }}</p>\n </div>\n <div class=\"unit-user-order__detail-express-product-total\">\n <p>{{ pro.total_price }}</p>\n </div>\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-12 col-xl-6\">\n <div class=\"unit-user-order__detail-express-item \">\n <div class=\"unit-user-order__detail-express-item-inner no_title\">\n <div class=\"unit-user-order__detail-express-item-inner-title\">\n <?= $t('order summary') ?>\n </div>\n <div class=\"unit-user-order__detail-express-item-content\">\n <dl>\n <dt>\n <?= $t('Subtotal') ?>:\n </dt>\n <dd>\n {{ subtotal }}\n </dd>\n </dl>\n <dl v-if=\"order.detail.discount_price>0\">\n <dt>\n <?= $t('Event discount') ?>:\n </dt>\n <dd>-${{ order.detail.discount_price }}</dd>\n </dl>\n <dl v-if=\"order.detail.reduction_price>0\">\n <dt>\n <?= $t('Discount') ?>:\n </dt>\n <dd>-${{ order.detail.reduction_price }}</dd>\n </dl>\n <dl v-if=\"order.detail.coupon_price>0\">\n <dt>\n <?= $t('Coupon') ?>:\n </dt>\n <dd>-${{ order.detail.coupon_price }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('subtotal shipping') ?>:\n </dt>\n <dd>${{ order.detail.shipping_price }}</dd>\n </dl>\n <dl v-if=\"order.detail.shipment_surcharge\">\n <dt>\n <?= $t('surcharge') ?>:\n </dt>\n <dd>${{ order.detail.shipment_surcharge }}</dd>\n </dl>\n </div>\n <div class=\"unit-user-order__detail-express-item-bottom\">\n <p>\n <?= $t('order total') ?>\n </p>\n <p>${{ order.detail.total_amount}}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-user-order__detail-bottom\">\n <button type=\"button\" class=\"btn unit-user__button\" @click=\"orderReturn\"><span\n class=\"iconfont icon-action-left-arrow-lighter\"></span>\n <?= $t('return') ?>\n </button>\n </div>\n </div>\n</template>","/package/components/unit-user-sidebar":"<div class=\"unit-user__side\">\n <div class=\"unit-user__side-inner\">\n <!-- <div class=\"unit-user__side-title\"><?= $t('personal center') ?></div> -->\n <div class=\"unit-user__side-list\">\n <a :href=\"`#${item.view}`\" :class=\"['unit-user__side-item', { 'active': thisView === item.view } ]\"\n v-for=\"item in sideNav\" :key=\"item.view\" @click=\"toView($event,item.view)\">{{ item.title }}</a>\n </div>\n <div class=\"unit-user__side-bottom\">\n <div class=\"unit-user__side-out\" onclick=\"window.app.utilts.logout()\">\n <?= $t('sign out') ?>\n </div>\n </div>\n </div>\n</div>","/package/unit/activity-info":"<div class=\"unit-activity-info\">\n <div class=\"unit-activity-info__container\">\n <div class=\"activity-info__left\">\n <div class=\"activity-info__title\">\n <!-- Get <span class=\"active\">50%</span> off<br> for order over <span class=\"active\">$999.00</span> -->\n </div>\n <div class=\"activity-info__description\">\n <!-- <p>Get $50 off for order over $999.00</p>\n <p>Get 60% Off All Orders</p>\n <p>Get $999.00 Off All Orders</p> -->\n </div>\n <div class=\"activity-info__get\"><?= $t('Get it') ?></div>\n </div>\n <div class=\"activity-info__right\">\n <div class=\"activity-info__right-item\">\n <small class=\"activity-info__label\"><?= $t('Validity period') ?></small>\n <div class=\"activity-info__time\">\n <!-- <span class=\"activity-info__start\">2020/12/16 00:00</span>
1\n <span>-</span>\n <span class=\"activity-info__end\">2020/12/16 00:00</span> -->\n </div>\n </div>\n <div class=\"activity-info__right-item\">\n <div class=\"activity-info__icon\">\n <img lazy-src=\"https://img.yfisher.com/1623719806917.png\" alt=\"\">\n </div>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/activity-info.js',\n name: 'ScriptActivityInfo',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/activity-reduction-info":"<div class=\"unit-activity-reduction-info\">\n <div class=\"unit-activity-reduction-info__container\">\n <div class=\"unit-activity-reduction-info__left\">\n <div class=\"unit-activity-reduction-info__title\"></div>\n <div class=\"unit-activity-reduction-info__description\"></div>\n </div>\n <div class=\"unit-activity-reduction-info__right d-none\">\n <div class=\"unit-activity-reduction-info__right-item\">\n <small class=\"unit-activity-reduction-info__label\"><?= $t('Validity period') ?></small>\n <div class=\"unit-activity-reduction-info__time\">\n <span class=\"unit-activity-reduction-info__start\"></span>\n <span>-</span>\n <span class=\"unit-activity-reduction-info__end\"></span>\n </div>\n </div>\n <div class=\"unit-activity-reduction-info__right-item--img\">\n <div class=\"unit-activity-reduction-info__icon\">\n <img lazy-src=\"https://img.yfisher.com/1623719806917.png\" alt=\"\">\n </div>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/activity-reduction-info.js',\n name: 'ScriptActivityReductionInfo',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/affiliate":"<div class=\"unit-affiliate\">\n <!-- <link rel=\"stylesheet\" href=\"/assets/css/unit/affiliate.css\"> -->\n <div class=\"unit-user__app\">\n <template v-cloak>\n <div class=\"unit-user__app-breadcrumb d-sm-none\">\n <a :href=\"globalThis.Server.getRinseHref(item.href, window.app.info.site)\" class=\"unit-user__app-breadcrumb-item\" v-for=\"item in breadcrumb\" v-if=\"item.title\" :key=\"item.title\">{{ item.title }}</a>\n </div>\n <div v-if=\"rowBannerImg\" class=\"mg-top20 d-flex justify-content-center\">\n <div class=\"affiliate-top_banner\">\n <a v-if=\"rowBannerUrl\" :href=\"rowBannerUrl\" target=\"_blank\"><img :src=\"rowBannerImg\" alt=\"\"/></a>\n <img v-else :src=\"rowBannerImg\" alt=\"\"/>\n <span class=\"iconfont cursor-pointer icon-action-close-2\" @click=\"rowBannerImg = ''\"></span>\n </div>\n </div>\n <div class=\"row unit-user__row mg-top30\">\n <!-- ä¾§è¾¹æ -->\n <div class=\"unit-user__col-left col-12 col-md-3 col-xl-3\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-sidebar`), {}) -?>\n </div>\n <!-- å
容颿¿ -->\n <div class=\"unit-user__col-right col-12 col-md-9 col-xl-9\">\n <div class=\"unit-user__content\">\n <!-- å è½½å¨ç»ï¼å¯ä»¥æ¾å°ä¸äºå è½½æ°æ®æ
¢çæ¿åç»ä»¶é -->\n <!-- <div class=\"loading absolute-shade\" v-if=\"loadingPage\"></div> -->\n <!-- æçè´¦æ· -->\n <template v-if=\"thisView === 'account'\">\n <template v-if=\"accountView === 'index'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-account`), {}) -?>\n </template>\n <template v-else-if=\"accountView === 'withdrawal'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-withdrawal`), {}) -?>\n </template>\n </template>\n <!-- æ¶æ¯ -->\n <template v-else-if=\"thisView === 'message'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-message`), {}) -?>\n </template>\n <!-- 常è§é®é¢ -->\n <template v-else-if=\"thisView === 'faq'\">
1\n <?- include(getViewsPath(`/package/components/unit-affiliate-faq`), {}) -?>\n </template>\n <!-- å¦ä¹ æå -->\n <template v-else-if=\"thisView === 'tutorial'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-tutorial`), {}) -?>\n </template>\n <!-- ä¼å龿¥ -->\n <template v-else-if=\"thisView === 'links'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-links`), {}) -?>\n </template>\n <!-- å享产å -->\n <template v-else-if=\"thisView === 'share_product'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-product`), {}) -?>\n </template>\n <!-- è®¢åæ¥å -->\n <template v-else-if=\"thisView === 'orders_report'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-orders-report`), {}) -?>\n </template>\n <!-- å®£ä¼ æ¥å -->\n <template v-else-if=\"thisView === 'promotion_reports'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-promotion-reports`), {}) -?>\n </template>\n <!-- ä¼åæ¥å -->\n <template v-else-if=\"thisView === 'links_report'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-links-report`), {}) -?>\n </template>\n <!-- ä½£é详æ
-->\n <template v-else-if=\"thisView === 'commission_details'\">\n <template v-if=\"commissionView === 'index'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-commission-details`), {}) -?>\n </template>\n <template v-else-if=\"commissionView === 'income_details'\">\n <?- include(getViewsPath(`/package/components/unit-affiliate-income-details`), {}) -?>\n </template>\n </template>\n </div>\n </div>\n </div>\n </template>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/affiliate.js' + `?v=<?= global.version ?>`,\n name: 'ScriptAffiliate',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/affiliate2":"<div class=\"unit-affiliate-entrance\" style=\"opacity: 0;\">\n <style>\n .unit-affiliate-entrance{position: fixed;top: 0;left: 0;z-index: 66;width: 100vw;height: 100vh;background: #fff;overflow: auto;}\n .unit-affiliate-before{font-size: 14px;}\n .af-content-box{padding: 1vw 10vw;}\n .af-entrance-title{font-size: 24px;padding: 2vw 0 1vw;}\n .af-entrance-desc{padding:0 0 2vw;}\n .af-entrance-align{padding:1vw 2vw;display: flex;justify-content: center;align-items: center;width: 100%;flex-flow: row wrap;}\n .af-entrance-button{cursor: pointer;display: block; width: 273px;height: 40px;border-radius: 20px;text-align: center;line-height: 40px;color: #fff !important; background: #EE5935;border-radius: 20px;margin:0 auto 2vw;}\n .af-entrance-button:hover{color:#fff !important;}\n @media (max-width: 767px) {\n .af-content-box{padding: 1vw 5vw;}\n .af-entrance-title{padding: 4vw 0 2vw;}\n .af-entrance-desc{padding:0 0 4vw;}\n .af-entrance-button{margin:0 auto 4vw;}\n .unit-affiliate-entrance{position: absolute;height: auto;padding-bottom: 50px;}\n }\n #app{height: 100vh;overflow: hidden;opacity: 0;}\n #app > div:not(.unit-affiliate-entrance) {display: none !important;}\n\n\n .unit-affiliate-before form .form-control{padding:7px 15px;}\n .unit-affiliate-before .valid-tips{color:var(--grey-color)}\n .unit-affiliate-before .valid-tips-main{color:var(--main-color)}\n .unit-affiliate-before .col-form-label{display: flex;align-items: center;flex-flow: row wrap;}\n .unit-affiliate-before .col-form-label .red{margin-right: 4px;position: relative;top: 2px;color:red;}\n\n .af-check-form{width: 100%;margin:auto;padding:0 10vw 1vw;}\n .af-check-form .form-control-group{width: 100%; display: flex;flex-flow: row wrap;align-items: center;}\n .af-check-form .form-group{width: 50%;padding:4px 1%;}\n @media (max-width: 767px) {\n .af-check-form{padding:1vw 1vw;}\n .af-check-form .form-group{width: 100%;padding:4px 3%;}\n }\n\n form .form-control::-webkit-input-placeholder{color:#ccc!important}\n form .form-control:-ms-input-placeholder{color:#ccc!important}\n form .form-control::-ms-input-placeholder{color:#ccc!important}\n form .form-control::-moz-placeholder{color:#ccc!important}\n form .form-control::placeholder{color:#ccc!important}\n\n </style>\n <div class=\"w-100 unit-affiliate-before\">\n <template v-cloak>\n <div v-if=\"isShow\" class=\"w-100\">\n <a v-if=\"pageInfo.banner_url\" class=\"d-block w-100\" :href=\"pageInfo.banner_url\" target=\"_blank\"><img class=\"d-block w-100 margin-auto\" :src=\"pageInfo.banner_img\" alt=\"\"></a>\n <img v-else class=\"d-block w-100 margin-auto\" :src=\"pageInfo.banner_img\" alt=\"\">\n <!-- ä»ç» -->\n <div class=\"af-content-box\" v-html=\"pageInfo.content\"></div>\n\n <!-- å®¡æ ¸è¡¨å -->\n <form v-if=\"pageInfo.form_protocol || pageInfo.form_field\" id=\"checkForm\" class=\"needs-validation af-check-form\" novalidate>\n <div class=\"form-control-group\">\n <template v-for=\"(item,index) in pageInfo.form_field_list\">\n <div v-if=\"!!item.field_status\" class=\"form-group\" :key=\"index\">\n <label for=\"\" class=\"col-form-label\">
1\n <span v-if=\"!!item.field_required\" class=\"red\">*</span>\n {{item.field_name}}\n </label>\n\n <input v-if=\"item.field_column === 'email'\" @change=\"emailChange\" :readonly=\"isLogin\" type=\"text\" class=\"form-control\" v-model=\"formData[item.field_column]\" :placeholder=\"item.field_tip\" required :pattern=\"formPattern[item.field_column]\" :name=\"item.field_column\" maxlength=\"500\" />\n <input v-else-if=\"patternArr.includes(item.field_column) && item.field_required\" type=\"text\" class=\"form-control\" v-model=\"formData[item.field_column]\" :placeholder=\"item.field_tip\" required :pattern=\"formPattern[item.field_column]\" :name=\"item.field_column\" maxlength=\"500\" />\n <input v-else type=\"text\" class=\"form-control\" v-model=\"formData[item.field_column]\" :placeholder=\"item.field_tip\" :required=\"!!item.field_required\" :name=\"item.field_column\" maxlength=\"500\"/>\n \n <div class=\"valid-feedback\"></div>\n <div v-if=\"patternArr.includes(item.field_column) && item.field_required\" class=\"invalid-feedback\">{{formPatternTips[item.field_column]}}</div>\n <div v-else class=\"invalid-feedback\"><?= $t('Please enter') ?> {{item.field_name}}</div>\n </div>\n </template>\n\n <div v-if=\"showPassword\" class=\"form-group\">\n <label for=\"\" class=\"col-form-label\">\n <span class=\"red\">*</span>\n <?= $t('please set your password') ?>\n </label>\n <input type=\"password\" class=\"form-control\" v-model=\"password\" required :pattern=\"formPattern.password\" :name=\"password\" maxlength=\"500\"/>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\"><?= $t('Password contains at least numbers and letters length should be 6-20') ?></div>\n </div>\n\n <!-- åè®® -->\n <div class=\"form-group w-100\" v-if=\"pageInfo.form_protocol\">\n <div class=\"af-entrance-align custom-control custom-checkbox\">\n <input type=\"checkbox\" id=\"af-agree\" required class=\"custom-control-input\" v-model=\"isAgree\" />\n <label for=\"af-agree\" class=\"custom-control-label\">\n <?= $t('I have read and agree to the') ?>\n </label>\n <a :href=\"pageInfo.agree_url_define\" style=\"color:#007bff;\" target=\"_blank\"> {{ pageInfo.agree_text }}</a>\n <!-- <div class=\"invalid-feedback w-100 text-center\">Please agree protocol</div> -->\n </div>\n </div>\n\n </div>\n </form>\n\n <a v-if=\"!pageInfo.form_protocol && !pageInfo.form_field\" class=\"af-entrance-button\" href=\"<?=globalThis.Server.getRinseHref('/affiliate.html', site) -?>\">{{ pageInfo.button_text }}</a>\n <div v-else class=\"af-entrance-button\" @click=\"commitCheckForm\">{{ pageInfo.button_text }}</div>\n </div>\n </template>\n </div>\n \n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/affiliate2.js' + `?v=<?= global.version ?>`,\n name: 'ScriptAffiliate2',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/ai-article-detail-2":"<?\n const packageData = package.content.data\n const hotSearchData = packageData.filter(item => item.tab === 'hot searches')\n const hotArticleData = packageData.filter(item => item.tab === 'hot articles')\n const youMightLikeData = packageData.filter(item => item.tab === 'you might like').filter((_item,index) => index < 5)\n const relatedArticleData = packageData.filter(item => item.tab === 'related article').filter((_item,index) => index < 5)\n const recommendCategoryData = packageData.filter(item => item.tab === 'recommend category').filter((_item,index) => index < 3)\n function col() {\n if (hotSearchData.length === 0 && hotArticleData.length === 0) return 12\n else return 8\n }\n?>\n<div class=\"unit-ai-article-detail\" layout=\"2\">\n <div class=\"row bg-white no-gutters\">\n <!-- æ£æé¨å -->\n <div class=\"col-12 col-md-12 col-xl-12\">\n <div class=\"unit-ai-article-detail__title\"><h1 class=\"nostyle\"><?= page.detail_title ?></h1></div>\n <div class=\"unit-ai-article-detail__share\">\n <? if (site.company_brand_name) { ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__author\">
1\n <span class=\"iconfont icon-base-user pr-1\"></span><?= site.company_brand_name ?>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__time\">\n <span class=\"iconfont icon-page-due pr-1\"></span><?- new Date(page.detail_add_time * 1000).format('yyyy-MM-dd') ?>\n </div>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__read\">\n <span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"polymerize\" content-id=\"<?= page.content_id ?>\"><?= page.detail_reads ?></span>\n </div>\n <? if (page.detail_abstract) { ?>\n <div class=\"unit-ai-article-detail__summary\">\n <?- page.detail_abstract ?>\n </div>\n <? } ?>\n </div>\n <div class=\"unit-ai-article-detail__content\"><?- globalThis.Server.getRinseHTML(page.detail_description[0]['detail'][0]['description'], site, 'needLazy:1,650,650,350,height,true') ?></div>\n <div class=\"unit-ai-article-detail__form\">\n <?- include(getViewsPath(`/package/unit/form`), { package }) -?>\n </div>\n </div>\n <!-- ä¾§è¾¹å
容 -->\n <? if (hotSearchData.length > 0 || hotArticleData.length > 0) { ?>\n <div class=\"col-12 col-md-12 col-xl-4 py pl-md-4 d-none\">\n <? if (hotSearchData.length > 0) { ?>\n <div class=\"unit-ai-article-detail__search\">\n <div class=\"unit-ai-article-detail__subtitle\"><?= $t('hot searches') ?></div>\n <div class=\"unit-ai-article-detail__search-list\">\n <? hotSearchData.forEach(item => { ?>\n <a class=\"unit-ai-article-detail__search-item\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\"><?= item.title ?></a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <? if (hotArticleData.length > 0) { ?>\n <div class=\"unit-ai-article-detail__hot\">\n <div class=\"unit-ai-article-detail__subtitle\"><?= $t('hot articles') ?></div>\n <div class=\"unit-ai-article-detail__hot-list\">\n <? hotArticleData.forEach(item => { ?>\n <a class=\"unit-ai-article-detail__hot-item\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\">\n <div class=\"unit-ai-article-detail__hot-item__title\"><?= item.title ?></div>\n <div class=\"unit-ai-article-detail__hot-item__reads\">\n <span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= item.reads ?></span>\n </div>\n </a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n </div>\n <? } ?>\n </div>\n <!-- é®ç -->\n <? if (page.detail_question.length > 0) { ?>\n <div class=\"unit-ai-article-detail__question py\">\n <div class=\"unit-ai-article-detail__subtitle\">\n <?= page.meta_keywords ?> related Q&A\n </div>\n <div class=\"unit-ai-article-detail__question-content\">\n <? page.detail_question.forEach(item => { ?>\n <div class=\"unit-ai-article-detail__question-item\">\n <div class=\"unit-ai-article-detail__question-title\"><?= item.question ?></div>\n <div class=\"unit-ai-article-detail__question-answer\"><?- item.answer ?></div>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <!-- ç¥è¯ -->\n <? if (page.detail_knowledge.length > 0) { ?>\n <div class=\"unit-ai-article-detail__knowledge py\">\n <div class=\"unit-ai-article-detail__subtitle\">\n <?= page.meta_keywords ?> related knowledge\n </div>\n <div class=\"unit-ai-article-detail__knowledge-content\">\n <? page.detail_knowledge.forEach(item => { ?>\n <div class=\"unit-ai-article-detail__knowledge-item\">\n <div class=\"unit-ai-article-detail__knowledge-title\"><?= item.title ?></div>\n <div class=\"unit-ai-article-detail__knowledge-desc\"><?- item.description ?></div>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <!-- å
³èæç« -->\n <? if (relatedArticleData.length > 0) { ?>\n <div class=\"unit-ai-article-detail__related-article py bg-white\">\n <div class=\"unit-ai-article-detail__subtitle\"><?= page.meta_keywords ?> <?= $t('related articles') ?></div>\n <div class=\"unit-ai-article-detail__related-list\">\n <? relatedArticleData.forEach(item => { ?>\n <a class=\"unit-ai-article-detail__related-item\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\">\n <? if (item.img) { ?>\n <div class=\"unit-ai-article-detail__related-image\" style=\"background-image: url('<?= item.img ?>');\">\n <img lazy-src=\"<?= item.img ?>\" alt=\"<?= item.alt ?>\">\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__related-content\">\n <div class=\"unit-ai-article-detail__related-title\"><?= item.title ?></div>\n <div class=\"unit-ai-article-detail__share pb-0\">\n <? if (site.company_brand_name) { ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__author pb-0\">
1\n <span class=\"iconfont icon-base-user pr-1\"></span><?= site.company_brand_name ?>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__time pb-0\">\n <span class=\"iconfont icon-page-due pr-1\"></span><?= new Date(item.add_time * 1000).format('yyyy-MM-dd') ?>\n </div>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__read pb-0\">\n <span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= item.reads ?></span>\n </div>\n </div>\n </div>\n </a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <!-- çä½ åæ¬¢ -->\n <? if (youMightLikeData.length > 0) { ?>\n <div class=\"unit-ai-article-detail__might-like py bg-white\">\n <div class=\"unit-ai-article-detail__might-like_top\">\n <div class=\"unit-ai-article-detail__subtitle\"><?= $t('you might like') ?></div>\n <? if (recommendCategoryData.length > 0) { ?>\n <div class=\"unit-ai-article-detail__category\">\n <? recommendCategoryData.forEach(item => { ?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" class=\"unit-ai-article-detail__category__item\"><?= item.title ?></a>\n <? }) ?>\n </div>\n <? } ?>\n </div>\n <div class=\"unit-ai-article-detail__might-like_list\">\n <? youMightLikeData.forEach(item => { ?>\n <a class=\"unit-ai-article-detail__might-like_item\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\">\n <div class=\"unit-ai-article-detail__might-like_image\" style=\"background-image: url('<?= item.img ?>');\">\n <img lazy-src=\"<?= item.img ?>\" alt=\"<?= item.alt ?>\">\n </div>\n <div class=\"unit-ai-article-detail__might-like_content\">\n <div class=\"unit-ai-article-detail__might-like_title\"><?= item.title ?></div>\n <div class=\"unit-ai-article-detail__might-like_attr\"><?= item.subtitle ?></div>\n </div>\n </a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n</div>\n","/package/unit/ai-article-detail-3":"<?\n const packageData = package.content.data\n const recommendArticleData = packageData.filter(item => item.tab === 'recommend reading')\n const recommendCategoryData = packageData.filter(item => item.tab === 'recommend category').filter((_item,index) => index < 3)\n const newSpecialData = packageData.filter(item => item.tab === 'new special').filter((_item,index) => index < 5)\n const lastProductData = packageData.filter(item => item.tab === 'latest products').filter((_item,index) => index < 4)\n const latestArticleData = packageData.filter(item => item.tab === 'latest articles').filter((_item,index) => index < 5)\n const relatedSearch = packageData.filter(item => item.tab === 'related searches').filter((_item,index) => index < 9)\n?>\n<div class=\"unit-ai-article-detail\" layout=\"3\">\n <!-- æ£æé¨å -->\n <div class=\"unit-ai-article-detail__content bg-white py\">\n <div class=\"unit-ai-article-detail__title\"><h1 class=\"nostyle\"><?= page.detail_title ?></h1></div>\n <div class=\"unit-ai-article-detail__share\">\n <? if (site.company_brand_name) { ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__author\">\n <span class=\"iconfont icon-base-user pr-1\"></span><?= site.company_brand_name ?>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__time\">\n <span class=\"iconfont icon-page-due pr-1\"></span><?- new Date(page.detail_add_time * 1000).format('yyyy-MM-dd') ?>\n </div>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__read\">\n <span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"polymerize\" content-id=\"<?= page.content_id ?>\"><?= page.detail_reads ?></span>\n </div>\n <? if (page.detail_abstract) { ?>\n <div class=\"unit-ai-article-detail__summary\">
1\n <?- page.detail_abstract ?>\n </div>\n <? } ?>\n </div>\n <div class=\"unit-ai-article-detail__content\"><?- globalThis.Server.getRinseHTML(page.detail_description[0]['detail'][0]['description'], site, 'needLazy:1,650,650,350,height,true') ?></div>\n <!-- é®ç -->\n <? if (page.detail_question.length > 0) { ?>\n <div class=\"unit-ai-article-detail__question py\">\n <div class=\"unit-ai-article-detail__subtitle\">\n <?= page.meta_keywords ?> related Q&A\n </div>\n <div class=\"unit-ai-article-detail__question-content\">\n <? page.detail_question.forEach(item => { ?>\n <div class=\"unit-ai-article-detail__question-item\">\n <div class=\"unit-ai-article-detail__question-title\"><?= item.question ?></div>\n <div class=\"unit-ai-article-detail__question-answer\"><?- item.answer ?></div>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <!-- ç¥è¯ -->\n <? if (page.detail_knowledge.length > 0) { ?>\n <div class=\"unit-ai-article-detail__knowledge py\">\n <div class=\"unit-ai-article-detail__subtitle\">\n <?= page.meta_keywords ?> related knowledge\n </div>\n <div class=\"unit-ai-article-detail__knowledge-content\">\n <? page.detail_knowledge.forEach(item => { ?>\n <div class=\"unit-ai-article-detail__knowledge-item\">\n <div class=\"unit-ai-article-detail__knowledge-title\"><?= item.title ?></div>\n <div class=\"unit-ai-article-detail__knowledge-desc\"><?- item.description ?></div>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__form\">\n <div class=\"unit-ai-article-detail__subtitle\">get in touch with us</div>\n <div style=\"padding: 10px 0;\">\n <?- include(getViewsPath(`/package/unit/form`), { package }) -?>\n </div>\n </div>\n </div>\n <!-- æ¨èæç« -->\n <? if (recommendArticleData.length > 0) { ?>\n <div class=\"unit-ai-article-detail__recommend bg-white py\">\n <div class=\"unit-ai-article-detail__subtitle\">
1\n <span><?= $t('recommended articles') ?></span>\n <? if(recommendCategoryData.length > 0) { ?>\n <div class=\"unit-ai-article-detail__recommend-category\">\n <? recommendCategoryData.forEach(item => { ?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" class=\"unit-ai-article-detail__recommend-category__item\"><?= item.title ?></a>\n <? }) ?>\n </div>\n <? } ?>\n </div>\n <div class=\"unit-ai-article-detail__recommend-content\">\n <!-- æ°æ®ç¬¬ä¸æ¡ -->\n <a class=\"unit-ai-article-detail__recommend-article\" href=\"<?= globalThis.Server.getRinseHref(recommendArticleData[0].href, site) ?>\" title=\"<?= recommendArticleData[0].title ?>\">\n <? if (recommendArticleData[0].img) { ?>\n <div class=\"unit-ai-article-detail__recommend-image\">\n <div class=\"unit-ai-article-detail__recommend-image-item\">\n <img lazy-src=\"<?= recommendArticleData[0].img ?>\" alt=\"<?= recommendArticleData[0].alt ?>\">\n </div>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__recommend-info\">\n <div class=\"unit-ai-article-detail__recommend-title\"><?= recommendArticleData[0].title ?></div>\n <div class=\"unit-ai-article-detail__recommend-description\"><?= recommendArticleData[0].description ?></div>\n </div>\n </a>\n <!-- å
¶ä»æ°æ® -->\n <div class=\"unit-ai-article-detail__recommend-list\">\n <? recommendArticleData.filter((_item, index) => index > 0).forEach(item => { ?>\n <div class=\"unit-ai-article-detail__recommend-item\">\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" class=\"\"><?= item.title ?></a>\n </div>\n <? }) ?>\n </div>\n </div>\n </div>\n <? } ?>\n <!-- å¤ç±»åæç« -->\n <div class=\"unit-ai-article-detail__more bg-white d-none\">\n <div class=\"row\">\n <!-- ææ°æç« -->\n <? if (latestArticleData.length > 0) { ?>\n <div class=\"col-12 col-md-12 col-xl-4 py\">\n <div class=\"unit-ai-article-detail__subtitle\"><?= $t('latest articles') ?></div>\n <div class=\"unit-ai-article-detail__more-list\">\n <? latestArticleData.forEach(item => { ?>\n <a class=\"unit-ai-article-detail__more-item\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\">\n <? if (item.img) { ?>\n <div class=\"unit-ai-article-detail__more-image\" style=\"background-image: url('<?= item.img ?>');\">\n <img lazy-src=\"<?= item.img ?>\" alt=\"<?= item.alt ?>\">\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__more-info\">\n <div class=\"unit-ai-article-detail__more-title\"><?= item.title ?></div>\n <div class=\"unit-ai-article-detail__share pb-0\">\n <? if (site.company_brand_name) { ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__author\">\n <span class=\"iconfont icon-base-user pr-1\"></span><?= site.company_brand_name ?>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__time\">\n <span class=\"iconfont icon-page-due pr-1\"></span><?= new Date(item.addtime * 1000).format('yyyy-MM-dd') ?>\n </div>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__read\">\n <span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= item.reads ?></span>\n </div>\n </div>\n </div>\n </a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <!-- ææ°èå -->\n <? if (newSpecialData.length > 0) { ?>\n <div class=\"col-12 col-md-12 col-xl-4 py\">\n <div class=\"unit-ai-article-detail__subtitle\"><?= $t('latest topics') ?></div>\n <div class=\"unit-ai-article-detail__more-list\">\n <? newSpecialData.forEach(item => { ?>\n <a class=\"unit-ai-article-detail__more-item\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\">\n <? if (item.img) { ?>\n <div class=\"unit-ai-article-detail__more-image\" style=\"background-image: url('<?= item.img ?>');\">\n <img lazy-src=\"<?= item.img ?>\" alt=\"<?= item.title ?>\">\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__more-info\">\n <div class=\"unit-ai-article-detail__more-title\"><?= item.title ?></div>\n <div class=\"unit-ai-article-detail__share pb-0\">\n <? if (site.company_brand_name) { ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__author\">
1\n <span class=\"iconfont icon-base-user pr-1\"></span><?= site.company_brand_name ?>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__time\">\n <span class=\"iconfont icon-page-due pr-1\"></span><?= new Date(item.add_time * 1000).format('yyyy-MM-dd') ?>\n </div>\n <div class=\"unit-ai-article-detail__share-item unit-ai-article-detail__read\">\n <span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= item.reads ?></span>\n </div>\n </div>\n </div>\n </a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <!-- ææ°äº§å -->\n <? if (lastProductData.length > 0) { ?>\n <div class=\"col-12 col-md-12 col-xl-4 py\">\n <div class=\"unit-ai-article-detail__subtitle\"><?= $t('Latest Products') ?></div>\n <div class=\"unit-ai-article-detail__more-product-list\">\n <? lastProductData.forEach(item => { ?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" class=\"unit-ai-article-detail__more-product-item\">\n <div class=\"unit-ai-article-detail__more-product-image\" style=\"background-image: url('<?= item.img ?>');\">\n <img lazy-src=\"<?= item.img ?>\" alt=\"<?= item.alt ?>\" />\n </div>\n <div class=\"unit-ai-article-detail__more-product-title\"><?= item.title ?></div>\n </a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n </div>\n </div>\n <!-- ç¸å
³æç´¢ -->\n <? if (relatedSearch.length > 0) { ?>\n <div class=\"unit-ai-article-detail__search bg-white py\">\n <div class=\"unit-ai-article-detail__subtitle\"><?= $t('related searches') ?></div>\n <div class=\"unit-ai-article-detail__search-list\">\n <? relatedSearch.forEach(item => { ?>\n <div class=\"unit-ai-article-detail__search-item\">\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\"><?= item.title ?></a>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n</div>\n","/package/unit/ai-article-detail-head":"\n<div class=\"unit-ai-article-detail\">\n\n <div class=\"unit-ai-article-detail__title\"><h1 class=\"nostyle\"><?= page.detail_title ?></h1></div>\n <div class=\"unit-ai-article-detail__share d-flex\">\n <div style=\"display: flex;align-items: center;\">\n <span class=\"mr-2\" style=\"color:#fff;margin-right:12px;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M9.99935 18.3333C14.6017 18.3333 18.3327 14.6024 18.3327 9.99999C18.3327 5.39761 14.6017 1.66666 9.99935 1.66666C5.39697 1.66666 1.66602 5.39761 1.66602 9.99999C1.66602 14.6024 5.39697 18.3333 9.99935 18.3333Z\" stroke=\"#86909C\" stroke-width=\"1.25\" stroke-linejoin=\"round\"/>\n <path d=\"M10.0044 5.00006L10.0039 10.0037L13.537 13.5368\" stroke=\"#86909C\" stroke-width=\"1.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <?- new Date(page.detail_add_time * 1000).format('yyyy-MM-dd') ?>\n </div>\n <? if (site.company_brand_name) { ?>\n <div class=\"company_brand_name\" style=\"display: flex;align-items: center;\">\n <span class=\"mr-2\" style=\"color:#fff;margin-right:12px;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M9.99935 8.33332C11.8403 8.33332 13.3327 6.84094 13.3327 4.99999C13.3327 3.15904 11.8403 1.66666 9.99935 1.66666C8.1584 1.66666 6.66602 3.15904 6.66602 4.99999C6.66602 6.84094 8.1584 8.33332 9.99935 8.33332Z\" stroke=\"#86909C\" stroke-width=\"1.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M2.5 18.3333C2.5 14.1912 5.85787 10.8333 10 10.8333C11.6227 10.8333 13.1251 11.3487 14.3523 12.2247\" stroke=\"#86909C\" stroke-width=\"1.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M15 19.0002L19.2002 14.3L17.7002 12.8L13.5 17.5002V19.0002H15Z\" stroke=\"#86909C\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <?= site.company_brand_name ?>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__reads detail_reads\" style=\"display: flex;align-items: center;\">
1\n <span class=\"mr-2\" style=\"color:#fff;margin-right:12px;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M9.99935 15C14.6017 15 18.3327 10 18.3327 10C18.3327 10 14.6017 5 9.99935 5C5.39697 5 1.66602 10 1.66602 10C1.66602 10 5.39697 15 9.99935 15Z\" stroke=\"#86909C\" stroke-width=\"1.25\" stroke-linejoin=\"round\"/>\n <path d=\"M9.99935 12.0834C11.1499 12.0834 12.0827 11.1506 12.0827 10C12.0827 8.84944 11.1499 7.91669 9.99935 7.91669C8.84877 7.91669 7.91602 8.84944 7.91602 10C7.91602 11.1506 8.84877 12.0834 9.99935 12.0834Z\" stroke=\"#86909C\" stroke-width=\"1.25\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <span class=\"unit-ai-article-detail__reads-number\" content-render=\"reads\" content-type=\"article\" content-id=\"<?= page.content_id ?>\"><?= page.detail_reads ?></span>\n </div>\n </div>\n</div>\n","/package/unit/ai-article-detail":"\n<div class=\"unit-ai-article-detail\">\n <?\n if (package?.config?.title_and_detailInfo??1) { ?>\n <div class=\"unit-ai-article-detail__title\"><h1 class=\"nostyle\"><?= page.detail_title ?></h1></div>\n <div class=\"unit-ai-article-detail__share d-flex\">\n <div><span class=\"mr-2 iconfont icon-page-due\"></span><?- new Date(page.detail_add_time * 1000).format('yyyy-MM-dd') ?></div>\n <? if (site.company_brand_name) { ?>\n <div class=\"company_brand_name\"><span class=\"mr-2 iconfont icon-base-user\"></span><?= site.company_brand_name ?></div>\n <? } ?>\n <div class=\"unit-ai-article-detail__reads detail_reads\">\n <span class=\"mr-2 iconfont icon-base-eye\"></span>\n <span class=\"unit-ai-article-detail__reads-number\" content-render=\"reads\" content-type=\"article\" content-id=\"<?= page.content_id ?>\"><?= page.detail_reads ?></span>\n </div>\n </div>\n <? } ?>\n <? if (page.detail_abstract) { ?>\n <div class=\"unit-ai-article-detail__summary\">\n <?- page.detail_abstract ?>\n </div>\n <? } ?>\n <div class=\"unit-ai-article-detail__detail_html\"><?- globalThis.Server.getRinseHTML(page.detail_description[0]['detail'][0]['description'], site, 'needLazy:1,650,650,350,height,true') ?></div>\n <!-- é®ç -->\n <? if (page.detail_question.length > 0) { ?>\n <div class=\"unit-ai-article-detail__question\">\n <div class=\"unit-ai-article-detail__subtitle\">\n <?= page.meta_keywords ?> related Q&A\n </div>\n <div class=\"unit-ai-article-detail__question-content\">\n <? page.detail_question.forEach(item => { ?>\n <div class=\"unit-ai-article-detail__question-item\">\n <div class=\"unit-ai-article-detail__question-title\"><?= item.question ?></div>\n <div class=\"unit-ai-article-detail__question-answer\"><?- item.answer ?></div>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <!-- ç¥è¯ -->\n <? if (page.detail_knowledge.length > 0) { ?>\n <div class=\"unit-ai-article-detail__knowledge\">\n <div class=\"unit-ai-article-detail__subtitle\">\n <?= page.meta_keywords ?> related knowledge\n </div>\n <div class=\"unit-ai-article-detail__knowledge-content\">\n <? page.detail_knowledge.forEach(item => { ?>\n <div class=\"unit-ai-article-detail__knowledge-item\">\n <div class=\"unit-ai-article-detail__knowledge-title\"><?= item.title ?></div>\n <div class=\"unit-ai-article-detail__knowledge-desc\"><?- item.description ?></div>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/ai-article-detail.js',\n name: 'ScriptAiArticleDetail',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/ai-article-section":"<? \nconst catalog_table = page?.h_tag_directory || []\n /**\n * æ¾ç¤ºæ é¢å±çº§\n */\n const display_h_level = 6\n\n /**\n * æ èç¹éåå¹³éº\n * @param tree\n * @returns {{[key: string]: {id, seq, parent_id, parents, spath, level, name, tag}}\n */\n function treeSearch(tree = [], display_level) {\n const queue = []\n tree.forEach((child, idx) => {\n child.seq = idx + 1\n child.parent_id = ''\n queue.push(child)\n })\n const nodes = {}\n const dfs = () => {\n while (queue.length) {\n const node = queue.shift()\n const nodeLevel = parseInt(node.level)\n if (nodes[node.parent_id]) {\n const parent = nodes[node.parent_id]\n node.parents = [...parent.parents, node.parent_id]\n node.path = [...node.parents, node.id]\n node.spath = [...parent.spath, node.seq] // å级åºå·\n } else {\n node.parents = []\n node.path = [node.id]\n node.table_level = node.path.length\n node.spath = [node.seq]\n }\n node.sub_count = 0 // ææä¸çº§å
ç´ æ»å\n node.level = parseInt(node.level)\n node.table_level = node.spath.length // 卿°æ®ç»æä¸çå±çº§\n nodes[node.id] = node\n if (node.children && node.children.length) {\n node.children.forEac
1h((child, idx) => {\n child.seq = idx + 1\n child.parent_id = node.id\n queue.push(child)\n })\n }\n if (node.level <= display_h_level) {\n node.path.reverse().forEach(pid => {\n const parent = nodes[pid]\n const sub_count = node.children.length\n parent.sub_count += sub_count\n })\n }\n\n }\n }\n dfs(queue)\n return nodes\n }\n let sub_count = 100 // æ»Hæ ç¾æ°\n if(page?.h_tag_directory.length>0) {\n const nodes = treeSearch(page.h_tag_directory, display_h_level)\n sub_count = Object.values(nodes || {}).filter(node => node.level <= display_h_level).length || 100\n }\n\n /**\n * 渲æhtml\n */\n function renderCatalog(catalog, parent = null, count = 100) {\n let children = ''\n if (Array.isArray(catalog)) {\n const table_level = `contents-table__list-level${(parent?.table_level || 0) + 1}`\n children = catalog.map(cate => renderCatalog(cate, parent, count)).join('')\n return children ? `<ul class=\"contents-table__list ${table_level}\">${children}</ul>` : '';\n } else if (catalog && catalog.level <= packageConfig.heading_level) {\n children = renderCatalog(catalog.children, catalog, catalog.sub_count)\n const symbol = matchPrefixMarker(catalog)\n const marker = symbol ? `<span class=\"contents-table__marker\">${symbol}</span>` : ''\n const sub_heading = catalog.table_level > 2 ? 'contents-table__sub_heading' : ''\n const icon = children ? `<i class=\"contents-table__icon-action iconfont icon-action-bottom-lighter\"></i>` : '<i class=\"contents-table__icon-action contents-table__icon-empty\"></i>'\n return `<li class=\"${sub_heading} contents-table__collapse contents-table__item contents-table__h${catalog.level}\" style=\"--max-sub-list-height:${count*30}px\">\n <div class=\"contents-table__item-label\">\n ${icon}${marker}<a href=\"#${catalog.id}\" class=\"h-link h-l${catalog.table_level}-link\" title=\"${catalog.name}\">${catalog.name}</a>\n </div>\n ${children}</li>`\n }\n return ''\n }\n?>\n\n<div>\n <?-renderCatalog(catalog_table, null, sub_count)?>\n</div>","/package/unit/ai-product-buy":"<div class=\"ai_product_detail\">\n\t<a class=\"ai_product_detail__inquire\" href=\"javascript:;\">\n\t\t<?= $t('Inquiry') ?>\n\t</a>\n\t<? if(page.original_page_url_suffix) { -?>\n\t<a class=\"ai_product_detail__buy\" href=\"<?= globalThis.Server.getRinseHref(page.original_page_url_suffix,site) -?>\">\n\t\t<?= $t('Go to buy') ?>\n\t</a>\n\t<? } ?>\n\t<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/ai-product-buy.js',\n name: 'ScriptAiProductBuy',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/ai-product-detail-extrend":"<? \n function formatNum (num) {\n const reg=/\\d{1,3}(?=(\\d{3})+$)/g; \n return (num + '').replace(reg, '$&,');\n }\n const hotArticleList = package.content.data.filter(item => item.tab === 'hot articles')\n const topicsArticleList = package.content.data.filter(item => item.tab === 'new special')\n const hotProductList = package.content.data.filter(item => item.tab === 'most reads')\n package.content.type = 'products-most-reads'\n package.content.tab_list = ['most reads']\n package.content.data = hotProductList\n-?>\n<div class=\"unit-ai-product-detail-extrend\">\n <div class=\"row\">\n <?if (hotArticleList.length > 0) { -?>\n <div class=\"animate col-12 col-md-4 mt-3 mt-md-0\">\n <div class=\"unit-ai-product-detail-extrend__box\">\n <div class=\"unit-ai-product-detail-extrend__title text-uppercase\"><?= $t('hot articles') ?></div>\n <ul class=\"unit-ai-product-detail-extrend__list\">\n <? hotArticleList.forEach(item => { ?>\n <li class=\"unit-ai-product-detail-extrend__list--item\">\n <a href=\"<?=globalThis.Server.getRinseHref(item.href, site)?>\" class=\"unit-ai-product-detail-extrend__item--link\">\n <div class=\"unit-ai-product-detail-extrend__item--title text-truncate\"><?= item.title ?></div>\n <div class=\"unit-ai-product-detail-extrend__item--reads\">
1\n <span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= formatNum(item.reads) ?></span>\n </div>\n </a>\n </li>\n <? }) ?>\n </ul>\n </div>\n </div>\n <? } -?>\n <?if (topicsArticleList.length > 0) { -?>\n <div class=\"animate col-12 col-md-4 mt-3 mt-md-0\">\n <div class=\"unit-ai-product-detail-extrend__box\">\n <div class=\"unit-ai-product-detail-extrend__title text-uppercase\"><?= $t('latest topics') ?></div>\n <ul class=\"unit-ai-product-detail-extrend__list\">\n <? topicsArticleList.forEach( item => { ?>\n <li class=\"unit-ai-product-detail-extrend__list--item\">\n <a href=\"<?=globalThis.Server.getRinseHref(item.href, site) ?>\" class=\"unit-ai-product-detail-extrend__item--link\">\n <div class=\"unit-ai-product-detail-extrend__item--title text-truncate\"><?= item.title ?></div>\n <div class=\"unit-ai-product-detail-extrend__item--reads\">\n <span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= formatNum(item.reads) ?></span>\n </div>\n </a>\n </li>\n <? }) ?>\n </ul>\n </div>\n </div>\n <? } -?>\n <? if (hotProductList.length > 0) { -?>\n <div class=\"animate col-12 col-md-4 mt-3 mt-md-0\">\n <div class=\"unit-ai-product-detail-extrend__box\">\n <div class=\"unit-ai-product-detail-extrend__title text-uppercase\"><?= $t('Hot Products') ?></div>\n <div class=\"unit-ai-product-detail-extrend__items\">\n <?- include(getViewsPath(`/package/unit/list`), { package }) -?>\n </div>\n </div>\n </div>\n <? } -?>\n </div>\n</div>","/package/unit/article-contents-button-inquiry":"<?\n\npackage.config.form.style_type_form = 2\npackage.config.button.style_type_button = 2\n\n?>\n<style> \n</style>\n<div class=\"article-button-inquiry-button\">\n <span text-style=\"3\">Contact Us For Any Support Now</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\n <path d=\"M6.8424 17.6568L18.1561 6.34312M18.1561 6.34312H6.8424M18.1561 6.34312V17.6568\" stroke=\"#1D2129\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n</div>\n<div class=\"unit-detail-button-inquiry article-contents-button\">\n <div class=\"d-none\">\n <link rel=\"stylesheet\" href=\"<?- globalThis.Server.versionUrl('/assets/css/unit/inquire-list.css') ?>\">\n <div class=\"inquiry-modal-inner\">\n <div class=\"inquiry-modal__description follow-font-family\" text-style=\"3\">\n <?= $t('Please fill out the form below to request a quote or to request more information about us. please be as detailed as possible in your message, and we will get back to you as soon as possible with a response. weâre ready to start working on your new project, contact us now to get started.') ?>\n </div>\n <div class=\"row\">\n <div class=\"col col-12 col-md-12 col-xl-12 form-wrap\">\n <?- include(getViewsPath(`/package/unit/form`), { package } ) -?>\n </div>\n </div>\n </div>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/article-contents-button-inquiry.js',\n name: 'ScriptArticleContentsInquiry',\n attrId: '<?= package.attr_id ?>',\n })\n</script>\n<style>\n .article-button-inquiry-button{\n display: flex;\n padding: 16px 15px;\n justify-content: center;\n align-items: center;\n align-self: stretch;\n border-radius: 16px;\n background: #EEEEEC;\n box-shadow: 0 2px 4px -2px rgba(13, 13, 18, 0.04);\n cursor: pointer;\n }\n .article-button-inquiry-button span{\n font-weight: 500;\n margin-right:10px;\n }\n .articleContentsbuttonInquiry .modal__footer{\n display: none;\n }\n .articleContentsbuttonInquiry input[type=\"text\"]~.unit-form__label .unit-form__label-text, .articleContentsbuttonInquiry .unit-form__select-box .unit-form__label-text{\n max-width: 100%;\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom;\n }\n .articleContentsbuttonInquiry input[type=\"text\"]~.unit-form__label, .articleContentsbuttonInquiry .unit-form__select-box .unit-form__label{\n display: flex;\n max-width: 100%;\n padding-right: 42px;\n }\n .articleContentsbuttonInquiry .modal__title {\n font-weight: bold;\n }\n</style>","/package/unit/article-contents-table-two":"<?\n/**\n * å表åç¼\n */\nconst LIST_PREFIX = {\n 0: '',\n 1: 'â¢',\n 2: 'â',\n 3: ''\n}\nconst content_data = package.content.data?.[0]\nconst packageConfig = package.config?.article_c
1ontents_table\n\n/**\n * æ¾ç¤ºæ é¢å±çº§\n */\nconst display_h_level = parseInt(packageConfig.heading_level) || 6\n\n/**\n * æ èç¹éåå¹³éº\n * @param tree\n * @returns {{[key: string]: {id, seq, parent_id, parents, spath, level, name, tag}}\n */\nfunction treeSearch(tree = [], display_level) {\n const queue = []\n tree.forEach((child, idx) => {\n child.seq = idx + 1\n child.parent_id = ''\n queue.push(child)\n })\n const nodes = {}\n const dfs = () => {\n while (queue.length) {\n const node = queue.shift()\n const nodeLevel = parseInt(node.level)\n if (nodes[node.parent_id]) {\n const parent = nodes[node.parent_id]\n node.parents = [...parent.parents, node.parent_id]\n node.path = [...node.parents, node.id]\n node.spath = [...parent.spath, node.seq] // å级åºå·\n } else {\n node.parents = []\n node.path = [node.id]\n node.table_level = node.path.length\n node.spath = [node.seq]\n }\n node.sub_count = 0 // ææä¸çº§å
ç´ æ»å\n node.level = parseInt(node.level)\n node.table_level = node.spath.length // 卿°æ®ç»æä¸çå±çº§\n nodes[node.id] = node\n if (node.children && node.children.length) {\n node.children.forEach((child, idx) => {\n child.seq = idx + 1\n child.parent_id = node.id\n queue.push(child)\n })\n }\n if (node.level <= display_h_level) {\n node.path.reverse().forEach(pid => {\n const parent = nodes[pid]\n const sub_count = node.children.length\n parent.sub_count += sub_count\n })\n }\n\n }\n }\n dfs(queue)\n return nodes\n}\n\nlet sub_count = 100 // æ»Hæ ç¾æ°\n\n// 主æ é¢éæåº¦\nconst font_opacity_main = parseFloat(packageConfig.font_opacity_main) || 1\n\n// åæ é¢åä½éæåº¦å0.2\nconst sub_h_opacity = font_opacity_main > 0.2 ? font_opacity_main - 0.2 : 0.8\n\nlet font_rgb = (packageConfig?.font_rgb || '').replace(/\\s/g, '')\nfont_rgb = (font_rgb === '0,0,0' || font_rgb === '') ? '51,51,51' : font_rgb\n// åæ é¢åä½é¢è²\nconst sub_h_color = `rgba(${font_rgb}, ${sub_h_opacity})`\n\nif(ctx.state?.page?.h_tag_directory) {\n const nodes = treeSearch(ctx.state?.page?.h_tag_directory, display_h_level)\n sub_count = Object.values(nodes || {}).filter(node => node.level <= display_h_level).length || 100\n}\n\n/**\n * ç®å½æ°æ®\n */\nconst catalog_table = ctx.state?.page?.h_tag_directory || []\n\n/**\n * å¹é
åç¼\n */\nfunction matchPrefixMarker(catalog) {\n if(packageConfig.list_prefix === 3 ){\n return catalog.spath.join('.') + (catalog.spath.length === 1 ? '.' : '')\n } else {\n return packageConfig.list_prefix_marker || ''\n }\n}\n\n/**\n * 渲æhtml\n */\nfunction renderCatalog(catalog, parent = null, count = 100) {\n let children = ''\n if (Array.isArray(catalog)) {\n const table_level = `contents-table__list-level${(parent?.table_level || 0) + 1}`\n children = catalog.map(cate => renderCatalog(cate, parent, count)).join('')\n return children ? `<ul class=\"contents-table__list ${table_level}\">${children}</ul>` : '';\n } else if (catalog && catalog.level <= packageConfig.heading_level) {\n children = renderCatalog(catalog.children, catalog, catalog.sub_count)\n const symbol = matchPrefixMarker(catalog)\n const marker = symbol ? `<span class=\"contents-table__marker contents-table__marker-${packageConfig.list_prefix}\">${symbol}</span>` : ''\n const sub_heading = catalog.table_level > 2 ? 'contents-table__sub_heading' : ''\n const icon = children ? `<i class=\"contents-table__icon-action iconfont icon-action-bottom-lighter\"></i>` : ''\n return `<li class=\"${sub_heading} contents-table__collapse contents-table__item contents-table__h${catalog.level}\" style=\"--max-sub-list-height:${count*30}px\">\n <div class=\"contents-table__item-label\">\n ${icon}\n ${marker}<a href=\"#${catalog.id}\" class=\"h-link h-l${catalog.table_level}-link\" title=\"${catalog.name}\">${catalog.name}</a>\n </div>\n ${children}</li>`\n }\n return ''\n}\n\n?>\n<style>\n html { --fixed-header-top: 200px; scroll-padding-top: var(--fixed-header-top); scroll-behavior: smooth;}\n</style>\n\n<div class=\"unit-article-contents-table two\" style=\"--sub-h-color:<?- sub_h_color ?>\" >\n <div class=\"unit-article-contents-table__title\" style=\"width:100%; padding-bottom: 14px;display:flex;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9.5 5.34959C9.99705 5.34959 10.4004 5.75294 10.4004 6.24998C10.4004 6.74704 9.99706 7.15038 9.5 7.15038H7.45117V11.0635H9C9.49691 11.0635 9.90015 11.467 9.90039 11.9639C9.90039 12.4609 9.49706 12.8642 9 12.8642H7.45117V15.1172C7.45117 15.8231 7.59886 16.4201 7.8457 16.8086C8.06484 17.1533 8.36278 17.3496 8.83691 17.3496C9.33377 17.3498 9.73631 17.7531 9.73633 18.25C9.73631 18.7469 9.33376 19.1501 8.83691 19.1504C7.69219 19.1504 6.84613 18.5901 6.32715 17.7734C5.8359 17.0004 5.65039 16.0301 5.65039 15.1172V7.15038H4C3.50294 7.15038 3.09961 6.74704 3.09961 6.24998C3.09963 5.75294 3.50295 5.34959 4 5.34959H9.5ZM20.2002 16.7783C20.6972 16.7784 21.0996 17.1817 21.0996 17.6787C21.0995 18.1756 20.6971 18.579 20.2002 18.5791H13C12.503 18.5791 12.0997 18.1757 12.0996 17.6787C12.0996 17.1816 12.5029 16.7783 13 16.7783H20.2002ZM20.2002 11.0635C20.697 11.0636 21.0994 11.467 21.0996 11.9639C21.0996 12.4608 20.6972 12.8641 20.2002 12.8642H13C12.5029 12.8642
112.0996 12.4609 12.0996 11.9639C12.0998 11.467 12.5031 11.0635 13 11.0635H20.2002ZM20.2002 5.34959C20.6972 5.3497 21.0996 5.75299 21.0996 6.24998C21.0996 6.74698 20.6972 7.15027 20.2002 7.15038H13C12.5029 7.15038 12.0996 6.74704 12.0996 6.24998C12.0996 5.75293 12.5029 5.34959 13 5.34959H20.2002Z\" fill=\"#4E5969\"/>\n </svg>\n <div class=\"unit-article-contents-table__title_text\" style=\"margin-left:5px;\" _html=\"<?-content_data?.description_sign?>\" tinymce><?- globalThis.Server.getRinseHTML(content_data.description, site) ?></div>\n </div>\n <div class=\"unit-article-contents-table__content\" style=\"width:100%; padding-top: 1rem\">\n <?-renderCatalog(catalog_table, null, sub_count)?>\n </div>\n</div>\n<div class=\"contents-table_more-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9.5 5.34959C9.99705 5.34959 10.4004 5.75294 10.4004 6.24998C10.4004 6.74704 9.99706 7.15038 9.5 7.15038H7.45117V11.0635H9C9.49691 11.0635 9.90015 11.467 9.90039 11.9639C9.90039 12.4609 9.49706 12.8642 9 12.8642H7.45117V15.1172C7.45117 15.8231 7.59886 16.4201 7.8457 16.8086C8.06484 17.1533 8.36278 17.3496 8.83691 17.3496C9.33377 17.3498 9.73631 17.7531 9.73633 18.25C9.73631 18.7469 9.33376 19.1501 8.83691 19.1504C7.69219 19.1504 6.84613 18.5901 6.32715 17.7734C5.8359 17.0004 5.65039 16.0301 5.65039 15.1172V7.15038H4C3.50294 7.15038 3.09961 6.74704 3.09961 6.24998C3.09963 5.75294 3.50295 5.34959 4 5.34959H9.5ZM20.2002 16.7783C20.6972 16.7784 21.0996 17.1817 21.0996 17.6787C21.0995 18.1756 20.6971 18.579 20.2002 18.5791H13C12.503 18.5791 12.0997 18.1757 12.0996 17.6787C12.0996 17.1816 12.5029 16.7783 13 16.7783H20.2002ZM20.2002 11.0635C20.697 11.0636 21.0994 11.467 21.0996 11.9639C21.0996 12.4608 20.6972 12.8641 20.2002 12.8642H13C12.5029 12.8642 12.0996 12.4609 12.0996 11.9639C12.0998 11.467 12.5031 11.0635 13 11.0635H20.2002ZM20.2002 5.34959C20.6972 5.3497 21.0996 5.75299 21.0996 6.24998C21.0996 6.74698 20.6972 7.15027 20.2002 7.15038H13C12.5029 7.15038 12.0996 6.74704 12.0996 6.24998C12.0996 5.75293 12.5029 5.34959 13 5.34959H20.2002Z\" fill=\"#4E5969\"/>\n </svg>\n</div>\n<script>\n !(function () {\n const pkg = {\n attr_id: \"<?-package.attr_id?>\"\n }\n document.querySelectorAll(`#${pkg.attr_id} .contents-table__item-label`).forEach(function (node) {\n node.addEventListener('click', function () {\n node.parentNode.classList.toggle('contents-table__collapse')\n })\n })\n initDrawer()\n })();\n function initDrawer() {\n const moreIcon = document.querySelector('.contents-table_more-icon')\n moreIcon?.addEventListener('click', () => {\n // const videoInner = this.$dom.querySelector('.video-inner')\n // const videoRect = videoInner.getBoundingClientRect()\n let drawer = new Drawer()\n drawer.setOptions({\n title: document.querySelector('.unit-article-contents-table__title_text').innerHTML,\n className: 'modal-more-article-contents-table-two',\n content: document.querySelector('.unit-article-contents-table__content').innerHTML,\n hiddentMask: false\n // bottomVal: videoRect.bottom\n })\n drawer.open()\n document.querySelectorAll(`.modal-more-article-contents-table-two .contents-table__icon-action`).forEach(function (node) {\n node.addEventListener('click', function () {\n node.parentNode.parentNode.classList.toggle('contents-table__collapse')\n })\n })\n document.querySelectorAll(`.modal-more-article-contents-table-two .h-link`).forEach(function (node) {\n node.addEventListener('click', function () {\n drawer.close()\n })\n })\n })\n }\n</script>\n<style>\n .contents-table_more-icon{\n display: none;\n }\n .unit-article-contents-table.two .h-link{\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }
1\n @media(max-width:767px){\n .modal-more-article-contents-table-two{\n --table-indent-left:18px;\n border-radius: 8px 8px 0 0;\n }\n .unit-article-contents-table.two{\n display: none;\n }\n .contents-table_more-icon{\n display: block;\n border-radius: 24px 0 0 24px;\n border-top: 1px solid #F2F3F5;\n border-bottom: 1px solid #F2F3F5;\n border-left: 1px solid #F2F3F5;\n background: #FFF;\n box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.08);\n padding:6px;\n width:50px;\n position: fixed;\n right:0;\n top:140px;\n }\n .modal-more-article-contents-table-two .contents-table__icon-action,.modal-more-article-contents-table-two .icon-action-bottom-lighter{\n order:3;\n margin-left:auto;\n }\n .modal-more-article-contents-table-two .contents-table__icon-action:before,.modal-more-article-contents-table-two .icon-action-bottom-lighter:before{\n font-size: 16px;\n }
1\n .modal-more-article-contents-table-two .h-link{\n flex:1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin-right:5px;\n }\n .modal-more-article-contents-table-two .contents-table__item-label{\n padding:5px;\n font-size: 16px;\n }\n .modal-more-article-contents-table-two .contents-table__item-label>.contents-table__marker{\n font-weight: bold;\n }\n .modal-more-article-contents-table-two .drawer-close-btn{\n font-size: 30px;\n }\n }\n</style>","/package/unit/article-contents-table":"<?\n/**\n * å表åç¼\n */\nconst LIST_PREFIX = {\n 0: '',\n 1: 'â¢',\n 2: 'â',\n 3: ''\n}\nconst content_data = package.content.data?.[0]\nconst packageConfig = package.config?.article_contents_table\n\n/**\n * æ¾ç¤ºæ é¢å±çº§\n */\nconst display_h_level = parseInt(packageConfig.heading_level) || 6\n\n/**\n * æ èç¹éåå¹³éº\n * @param tree\n * @returns {{[key: string]: {id, seq, parent_id, parents, spath, level, name, tag}}\n */\nfunction treeSearch(tree = [], display_level) {\n const queue = []\n tree.forEach((child, idx) => {\n child.seq = idx + 1\n child.parent_id = ''\n queue.push(child)\n })\n const nodes = {}\n const dfs = () => {\n while (queue.length) {\n const node = queue.shift()\n const nodeLevel = parseInt(node.level)\n if (nodes[node.parent_id]) {\n const parent = nodes[node.parent_id]\n node.parents = [...parent.parents, node.parent_id]\n node.path = [...node.parents, node.id]\n node.spath = [...parent.spath, node.seq] // å级åºå·\n } else {\n node.parents = []\n node.path = [node.id]\n node.table_level = node.path.length\n node.spath = [node.seq]\n }\n node.sub_count = 0 // ææä¸çº§å
ç´ æ»å\n node.level = parseInt(node.level)\n node.table_level = node.spath.length // 卿°æ®ç»æä¸çå±çº§\n nodes[node.id] = node\n if (node.children && node.children.length) {\n node.children.forEach((child, idx) => {\n child.seq = idx + 1\n child.parent_id = node.id\n queue.push(child)\n })\n }\n if (node.level <= display_h_level) {\n node.path.reverse().forEach(pid => {\n const parent = nodes[pid]\n const sub_count = node.children.length\n parent.sub_count += sub_count\n })\n }\n\n }\n }\n dfs(queue)\n return nodes\n}\n\nlet sub_count = 100 // æ»Hæ ç¾æ°\n\n// 主æ é¢éæåº¦\nconst font_opacity_main = parseFloat(packageConfig.font_opacity_main) || 1\n\n// åæ é¢åä½éæåº¦å0.2\nconst sub_h_opacity = font_opacity_main > 0.2 ? font_opacity_main - 0.2 : 0.8\n\nlet font_rgb = (packageConfig?.font_rgb || '').replace(/\\s/g, '')\nfont_rgb = (font_rgb === '0,0,0' || font_rgb === '') ? '51,51,51' : font_rgb\n// åæ é¢åä½é¢è²\nconst sub_h_color = `rgba(${font_rgb}, ${sub_h_opacity})`\n\nif(ctx.state?.page?.h_tag_directory) {\n const nodes = treeSearch(ctx.state?.page?.h_tag_directory, display_h_level)\n sub_count = Object.values(nodes || {}).filter(node => node.level <= display_h_level).length || 100\n}\n\n/**\n * ç®å½æ°æ®\n */\nconst catalog_table = ctx.state?.page?.h_tag_directory || []\n\n/**\n * å¹é
åç¼\n */\nfunction matchPrefixMarker(catalog) {\n if(packageConfig.list_prefix === 3 ){\n return catalog.spath.join('.') + (catalog.spath.length === 1 ? '.' : '')\n } else {\n return packageConfig.list_prefix_marker || ''\n }\n}\n\n/**\n * 渲æhtml\n */\nfunction renderCatalog(catalog, parent = null, count = 100) {\n let children = ''\n if (Array.isArray(catalog)) {\n const table_level = `contents-table__list-level${(parent?.table_level || 0) + 1}`\n children = catalog.map(cate => renderCatalog(cate, parent, count)).join('')\n return children ? `<ul class=\"contents-table__list ${table_level}\">${children}</ul>` : '';\n } else if (catalog && catalog.level <= packageConfig.heading_level) {\n children = renderCatalog(catalog.children, c
1atalog, catalog.sub_count)\n const symbol = matchPrefixMarker(catalog)\n const marker = symbol ? `<span class=\"contents-table__marker contents-table__marker-${packageConfig.list_prefix}\">${symbol}</span>` : ''\n const sub_heading = catalog.table_level > 2 ? 'contents-table__sub_heading' : ''\n const icon = children ? `<i class=\"contents-table__icon-action iconfont icon-action-bottom-lighter\"></i>` : '<i class=\"contents-table__icon-action contents-table__icon-empty\"></i>'\n return `<li class=\"${sub_heading} contents-table__collapse contents-table__item contents-table__h${catalog.level}\" style=\"--max-sub-list-height:${count*30}px\">\n <div class=\"contents-table__item-label\">\n ${icon}${marker}<a href=\"#${catalog.id}\" class=\"h-link h-l${catalog.table_level}-link\" title=\"${catalog.name}\">${catalog.name}</a>\n </div>\n ${children}</li>`\n }\n return ''\n}\n\n?>\n<style>\n html { --fixed-header-top: 200px; scroll-padding-top: var(--fixed-header-top); scroll-behavior: smooth;}\n</style>\n\n<div class=\"unit-article-contents-table\" style=\"--sub-h-color:<?- sub_h_color ?>\" >\n <div class=\"unit-article-contents-table__title\" style=\"width:100%; padding-bottom: 10px\">\n <div _html=\"<?-content_data?.description_sign?>\" tinymce><?- globalThis.Server.getRinseHTML(content_data.description, site) ?></div>\n </div>\n <div class=\"unit-article-contents-table__content\" style=\"width:100%; padding-top: 1rem\">\n <?-renderCatalog(catalog_table, null, sub_count)?>\n </div>\n</div>\n\n<script>\n !(function () {\n const pkg = {\n attr_id: \"<?-package.attr_id?>\"\n }\n document.querySelectorAll(`#${pkg.attr_id} .contents-table__icon-action`).forEach(function (node) {\n node.addEventListener('click', function () {\n node.parentNode.parentNode.classList.toggle('contents-table__collapse')\n })\n })\n })();\n</script>","/package/unit/article-detail-html":"\n<div class=\"unit-article-detail-html\" text-style=\"3\"><?- globalThis.Server.getRinseHTML(page.detail_description[0]['detail'][0]['description'].replace(/>/g, '>').replace(/</g, '<'), site, 'needLazy') ?></div>","/package/unit/article-detail-part":"<div class=\"unit-article-detail-part\">\n <div class=\"unit-article-detail-part-item\">\n <? if(page.next_page_info.page_url_suffix){ ?>\n <a class=\"unit-article-part-link text-capitalize\" href=\"<?=globalThis.Server.getRinseHref(page.next_page_info.page_url_suffix, site) ?>\"> <div text-style=\"3\" style=\"display: flex;align-items: center;\"><i class=\"iconfont icon-action-left-lighter\"></i><?= $t('prev') ?></div> <span class=\"unit_next-title\" text-style=\"3\"><?= page.next_page_info.title ?></span></a>\n <? } ?>\n </div>\n <div class=\"unit-article-detail-part-item\">\n <? if(page.prep_page_info.page_url_suffix){ ?>\n <a class=\"unit-article-part-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref(page.prep_page_info.page_url_suffix, site) ?>\"> <span class=\"unit_next-title text-right\" text-style=\"3\"><?= page.prep_page_info.title ?></span><div text-style=\"3\" style=\"display: flex;align-items: center;\"><?= $t('next') ?> <i style=\"transform: rotate(180deg);display: inline-block;\" class=\"iconfont icon-action-left-lighter\"></i></div></a> \n <? } ?>\n </div>\n</div>","/package/unit/attr-search":"<?\n\tlet search = package.config.search || {}\n\tlet style_type = search.style_type || 1\n\tlet style = search.style_type_search\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n let colInfo = { cols_col:cols_col, cols_md:cols_md, cols_xl:cols_xl }\n\tconst attr_params = {\n\t 1: 'attr',\n\t 2: 'attr',\n\t 3: 'attr_detail_id',\n\t 4: 'attr_linkage_id',\n\t}\n let product_attr_list = search.filter_attr ? ctx?.state?.product_attr_list_filter : ctx?.state?.product_attr_list\n\tproduct_attr_list = product_attr_list?.filter(p => (p.input_type === 3 || p.input_type === 2 || p.input_type === 4) && p.is_show && p.status)\n\t\t\t.map((p, i) => {\n\t\t\t\tconst attrs = p.attr_value.map(pp => ({\n type: p.type,\n attr_param: attr_params[p.type] || 'attr',\n\t\t\t\t\tid: pp.id,\n\t\t\t\t\tname: pp.content,\n\t\t\t\t\tcontent: pp.content,\n\t\t\t\t\tparent_id: p.id,\n\t\t\t\t\tisSelect: false,\n\t\t\t\t\tinput_type: p.input_type\n\t\t\t\t}))\n\t\t\t\tconst active = i === 0\n\t\t\t\treturn {active, id: p.id, name: p.sign || `name${i}`, input_type: p.input_type, attrs}\n\t\t\t}) || [];\n /**\n * 䏿\n */\n function createFormElementSelect(group) {\n\n return `<div class=\"unit-attr-search__select-box dropdown\" text-style=\"3\" data-input_type=\"${group.input_type}\">\n <div class=\"unit-attr-search__control-wrap dropdown-toggle\">\n <input type=\"text\" placeholder=\"${$t('Please select')} ${group.name}\" readonly=\"readonly\" class=\"unit-attr-search__control\"/>\n <div class=\"unit-attr-search__tags-wrap\">\n <div class=\"unit-attr-search__tags\"></div>\n <div class=\"unit-attr-search__tags unit-attr-search__tags-rest d-none\">\n <div class=\"unit-attr-search__tag\">\n <div class=\"unit-attr-search__tag-inner\">
1\n <span class=\"unit-attr-search__tag-text\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-attr-search__dropdown-options-wrap dropdown-menu\">\n <div class=\"unit-attr-search__search-input\">\n <input type=\"text\" placeholder=\"${$t('Search')}\" class=\"unit-attr-search__search-input-inner\"/>\n <span class=\"unit-attr-search__search-input-suffix\"><i class=\"iconfont icon-action-search-lighter\"></i></span>\n </div>\n <ul class=\"unit-attr-search__select-options\">\n ${group.attrs.reduce((prev, attr) => {\n return `${prev} <li class=\"unit-attr-search__select-option unit-attr-search__content--checkbox dropdown-item\" title=\"${attr.content}\" data-product_attr_id=\"${group.id}\" data-id=\"${attr.id}\">\n <input type=\"checkbox\" data-input_type=\"${attr.input_type}\" data-attr_param=\"${attr.attr_param}\" data-content=\"${attr.content}\" value=\"${attr.id}\">\n <span class=\"iconfont icon-form-validated\"></span><label>${globalThis.Server.escapeHtml(attr.content || 'Beige')}</label></li>`\n }, '')}\n </ul>\n <div class=\"unit-attr-search__no-found d-none\">No results found</div>\n ${group.input_type === 2 ? '':\n `<div class=\"unit-attr-search__footer\">\n <div class=\"unit-attr-search__footer-btn unit-attr-search__reset\">${$t('Reset')}</div>\n <div class=\"unit-attr-search__footer-btn unit-attr-search__ok\">${$t('ok')}</div>\n </div>`}\n </div>\n </div>`;\n }\n const wrapperSelector = '.unit-attr-search__items'\n-?>\n<div class=\"unit-attr-search unit-attr-search--<?= style_type -?>\" search-style=\"<?= style ?>\">\n <? if (style_type == 3) { ?>\n\t<?-\n `<style>\n ${globalThis.Server.syncStyle(package, [\n ['.unit-attr-search__select-box', 'color', '', '--text-color'],\n ['.unit-attr-search__select-option', 'color', '', '--text-option-color'],\n ['.unit-attr-search__select-option:hover', 'color', '', '--text-option-hover-color'],\n ['.unit-attr-search__control-wrap', 'border-radius', '', '--border-radius'],\n ['.unit-attr-search__control-wrap', 'border-top-color', '', '--border-top-color'],\n ['.unit-attr-search__control-wrap', 'border-bottom-color', '', '--border-bottom-color'],\n ['.unit-attr-search__control-wrap', 'border-left-color', '', '--border-left-color'],\n ['.unit-attr-search__control-wrap', 'border-right-color', '', '--border-right-color'],\n ['.unit-attr-search__control-wrap', 'border-top-style', '', '--border-top-style'],\n ['.unit-attr-search__control-wrap', 'border-bottom-style', '', '--border-bottom-style'],\n ['.unit-attr-search__control-wrap', 'border-left-style', '', '--border-left-style'],\n ['.unit-attr-search__control-wrap', 'border-right-style', '', '--border-right-style'],\n ['.unit-attr-search__control-wrap', 'border-top-width', '', '--border-top-width'],\n ['.unit-attr-search__control-wrap', 'border-bottom-width', '', '--border-bottom-width'],\n ['.unit-attr-search__control-wrap', 'border-left-width', '', '--border-left-width'],\n ['.unit-attr-search__control-wrap', 'border-right-width', '', '--border-right-width']\n ], globalThis.Server.transformColor)}\n ${globalThis.Server.getMergeBorderStyle(package, wrapperSelector, '.unit-attr-search__item', '.unit-attr-search__control-wrap', {}, (styleObj) => {\n const width = styleObj[`#${package.attr_id} ${wrapperSelector}`]?.['padding-right']\n if (width) {\n styleObj[`#${package.attr_id} .unit-attr-search__dropdown-options-wrap`] = {\n width: `calc(100% + ${width})`\n }\n }\n return styleObj\n })}\n </style>`\n ?>\n <? } ?>\n <div class=\"unit-attr-search__items\">\n\t\t<? for(const group of product_attr_list) { ?>\n\t\t<div class=\"unit-attr-search__item <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?>\">\n <? if (style_type == 3) { ?>
1\n <?-createFormElementSelect(group)?>\n <? } else { ?>\n\t\t\t<div class=\"unit-attr-search__title\">\n\t\t\t\t<span class=\"unit-attr-search__title--span\"><?= group.name ?><?- (style_type ? ':' : '') -?></span>\n\t\t\t\t<span class=\"iconfont icon-action-left-lighter <?- group.active ? '' : 'up' ?>\"></span></div>\n\t\t\t<div class=\"unit-attr-search__content <?- group.active ? '' : 'unit-attr-search__content--hide' ?>\">\n\t\t\t\t<? for(const attr of group?.attrs) { ?>\n\t\t\t\t<div data-checkbox_uid=\"<?=`${attr.parent_id}-${attr.id}`?>\" class=\"unit-attr-search__content--checkbox\">\n\t\t\t\t\t<input type=\"checkbox\" data-input_type=\"<?=attr.input_type?>\" data-attr_param=\"<?-attr.attr_param?>\" data-product_attr_id=\"<?=group.id?>\" data-id=\"<?=attr.id?>\" data-content=\"<?=attr.content?>\" value=\"<?=attr.id?>\">\n\t\t\t\t\t<span class=\"iconfont icon-form-validated\"></span><label><?= attr.content || 'Beige' ?></label></div>\n\t\t\t\t<? } ?>\n\t\t\t</div>\n\n <div class=\"unit-attr-search__show-more-box\">\n <div class=\"base-more\">\n <div class=\"show-more-inner\">\n <div class=\"show-more-inner__more\"><?- $t('More') ?></div>\n <div class=\"show-more-inner__collect d-none\"><?- $t('Collect') ?></div>\n <i class=\"show-more-inner__icon iconfont icon-action-bottom-lighter\"></i>\n </div>\n </div>\n </div>\n <? } ?>\n\t\t</div>\n\t\t<? } ?>\n\t</div>\n</div>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/attr-search.js',\n\t\tname: 'ScriptAttrSearch',\n\t\tstyle_type:'<?= style_type ?>',\n\t\tattrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(search) ?>',\n colInfo: '<?= JSON.stringify(colInfo) ?>'\n\t})\n</script>\n","/package/unit/attr-sort-search":"<?\n\tlet config = package.config.search\n\tlet style = config.style_type_search\n?>\n<link rel=\"stylesheet\" href=\"<?- globalThis.Server.versionUrl('/assets/css/unit/product-sort.css') ?>\">\n<link rel=\"stylesheet\" href=\"<?- globalThis.Server.versionUrl('/assets/css/unit/attr-text-search.css') ?>\">\n<div class=\"unit-attr-sort-search\" search-style=\"<?= style ?>\">\n\t<div class=\"unit-product-sort__items\"></div>\n\t<div class=\"unit-attr-text-search__items\"></div>\n\t<span class=\"iconfont icon-action-search-lighter unit-attr-text-search__icon\"></span>\n</div>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/product-sort.js',\n\t\tname: 'ScriptProductSort',\n\t\tattrId: '<?= package.attr_id ?>',\n\t\ttemplateType:'<?= site.template_type ?>'\n\t})\n</script>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/attr-text-search.js',\n\t\tname: 'ScriptAttrTextSearch',\n\t\tattrId: '<?= package.attr_id ?>'\n\t})\n</script>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/attr-sort-search.js',\n\t\tname: 'ScriptAttrSortSearch',\n\t\tattrId: '<?= package.attr_id ?>'\n\t})\n</script>\n","/package/unit/attr-text-search":"<?\n\tlet config = package.config.search\n\tlet style = config.style_type_search\n?>\n<div class=\"unit-attr-text-search\" search-style=\"<?= style ?>\">\n\t<div class=\"unit-attr-text-search__items\"></div>\n</div>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/attr-text-search.js',\n\t\tname: 'ScriptAttrTextSearch',\n\t\tattrId: '<?= package.attr_id ?>'\n\t})\n</script>","/package/unit/b2c-header":"<?\n let header_config = package.config.header || {}\n let has_nofollow = header_config.has_nofollow || 0\n-?>\n<header class=\"unit-b2c-header\">\n <div class=\"unit-b2c-header__body-wrap\">\n <div class=\"unit-b2c-header__head\">\n <div class=\"unit-b2c-header__logo\">\n <a class=\"d-inline-block\" href=\"<?=globalThis.Server.getRinseHref('/', site) -?>\">\n <img class=\"unit-b2c-header__logo-img\" lazy-src=\"<?= site.logo_url || 'https://img.yfisher.com/logo2xyf.png' ?>\" alt=\"\" height=\"65\" logo_url>\n <? if (ctx.state.page.page_type === 'index') { -?>\n <span hidden><?= ctx.state.site.company_brand_name -?></span>\n <? } -?>\n </a>\n </div>\n <div class=\"unit-b2c-header__info\">\n <div class=\"unit-b2c-header__email\">\n <? if (package.content.data[0]) { -?>\n <div _html=\"<?= package.content.data[0].description_sign ?>\" tinymce>
1\n <?- globalThis.Server.getRinseHTML(package.content.data[0].description, site) -?>\n </div>\n <? } -?>\n </div>\n </div>\n <div class=\"unit-b2c-header__tool\">\n <div class=\"unit-b2c-header__tool-item\">\n <div class=\"unit-b2c-header__search\">\n <div class=\"search-show\">\n <span class=\"search-btn iconfont icon-action-search-lighter\"></span>\n </div>\n <div class=\"search-form\">\n <span class=\"search-btn iconfont icon-action-search-lighter mr-2\"></span>\n <input type=\"text\" placeholder=\"<?= $t('Search') ?>\" class=\"form-control search-input\">\n <span class=\"search-close iconfont icon-action-close search-close\"></span>\n </div>\n </div>\n </div>\n <div class=\"unit-b2c-header__tool-item\">\n <div class=\"unit-b2c-header__cart\" header-cart>\n <a href=\"<?= globalThis.Server.getRinseHref('/cart.html', site) -?>\" onclick=\"window.app.utilts.setGtag('go_to_cart')\" class=\"d-inline-block\">\n <span class=\"iconfont icon-base-cart-lighter\"></span>\n <!-- <span class=\"unit-b2c-header__top-text text-capitalize\"><?= $t('cart') ?></span> -->\n <!-- <span class=\"badge badge-pill badge-danger\"></span> -->\n </a>\n </div>\n </div>\n <div class=\"unit-b2c-header__tool-item\" login-tool-item>\n <div class=\"unit-b2c-header__user\">\n <div class=\"unit-b2c-header__login\" login-hide>\n <a href=\"javascript:;\" class=\"d-block\">\n <span class=\"iconfont icon-base-user\"></span>\n <!-- <span class=\"unit-b2c-header__top-text text-capitalize\"><?= $t('sign in') ?></span> -->\n </a>\n <div class=\"unit-b2c-header__login-list\">\n <a class=\"unit-b2c-header__login-item text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/login.html', site) ?>\"><?= $t('Log in') ?></a>\n <a class=\"unit-b2c-header__login-item text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/register.html', site) ?>\"><?= $t('sign up') ?></a>\n </div>\n </div>\n <div class=\"unit-b2c-header__login\" login-show>\n <a href=\"javascript:;\" class=\"d-block\">\n <div class=\"d-flex\">\n <span class=\"iconfont icon-base-user\"></span>\n <!-- <span id=\"unit-b2c-header__username\" class=\"pr-1 unit-b2c-header__top-text text-capitalize\"><?= $t('author') ?></span> -->\n <!-- <span class=\"iconfont icon-action-bottom-lighter pl-0 pl-md-1\"></span> -->\n </div>\n </a>\n <div class=\"unit-b2c-header__login-list\">\n <a class=\"unit-b2c-header__login-item text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/user.html', site) -?>\"><?= $t('Profile') ?></a>\n <a class=\"unit-b2c-header__login-item text-capitalize\" href=\"javascript:;\" onclick=\"window.app.utilts.logout()\"><?= $t('Log out') ?></a>\n </div>\n </div>\n </div>\n </div>\n <? if (page.language_list.length > 1) { -?>\n <div class=\"unit-b2c-header__tool-item\">\n <div class=\"unit-b2c-header__language-box\">\n <div class=\"open-btn\">\n <span class=\"iconfont icon-yuzhong\"></span>\n </div>\n <? if (page.language_list.length > 1) { -?>\n <div class=\"language news_lang lanlist\">\n <ul>\n <? page.language_list.forEach((item, index) => { -?>\n <? if(index < 20){ -?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" class=\"d-flex\">\n <span><img src=\"/assets/images/flags/<?= item.code ?>.gif\" height=\"16\"></span>\n <span><?= item.title ?></span>\n </a>\n </li>\n <? } -?>\n <? }) -?>\n <? if (page.language_list.length > 19) { -?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref('/multi-language.html', site) -?>\" class=\"d-flex\">
1\n <span class=\"text-capitalize\"><?= $t('view more languages') ?></span>\n </a>\n </li>\n <? } -?>\n </ul>\n </div>\n <? } -?>\n </div>\n </div>\n <? } -?>\n </div>\n <div class=\"unit-b2c-header__switch\">\n <div class=\"unit-b2c-header__switch-inner\">\n <span class=\"iconfont icon-base-menu\"></span>\n </div>\n </div>\n </div>\n <div class=\"unit-b2c-header__body\">\n <div class=\"unit-b2c-header__nav-wrap\">\n <div class=\"unit-b2c-header__nav\">\n <nav class=\"unit-b2c-header__nav-inner\" id=\"<?= `swiper-${package.attr_id}` ?>\" carousel=\"<?= JSON.stringify({auto_height:1, auto_width: 1, navigation: 1, scrollbar: 1, mousewheel: 0 }) ?>\">\n <div class=\"swiper-container\">\n <div class=\"swiper-wrapper\">\n <? site.nav.forEach(item => { -?>\n <div class=\"swiper-slide unit-b2c-header__nav-item <?= item.is_active ? 'active' : '' ?>\">\n <div class=\"unit-b2c-header__nav-item-inner\" firstMenu>\n <a class=\"unit-b2c-header__nav-item-a unit-b2c-header__nav-first-a\" href=\"<?= globalThis.Server.getRinseHref(item.open_type === 3 ? 'javascript:;' : item.href, site) ?>\" target=\"<?- item.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (item.icon) { -?><i class=\"unit-b2c-header__nav-icon iconfont <?= item.icon ?>\"></i><? } ?>\n <span><?= item.title ?></span>\n <? if (item.children && item.children.length > 0) { -?>\n <span class=\"unit-b2c-header__nav-item-open iconfont icon-action-bottom-lighter\"></span>\n <? } -?>\n </a>\n </div>\n <? if (item.children && item.children.length > 0) { -?>\n <div class=\"unit-b2c-header__nav-son-wrap\" subMenu>\n <div class=\"unit-b2c-header__nav-son\">\n <? item.children.forEach(son => { -?>\n <div class=\"unit-b2c-header__nav-son-item <?= son.is_active ? 'active' : '' ?>\">\n <div class=\"unit-b2c-header__nav-son-item-inner\">\n <a class=\"unit-b2c-header__nav-son-a\" href=\"<?=globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (son.icon) { -?><i class=\"unit-b2c-header__nav-icon iconfont <?= son.icon ?>\"></i><? } -?>\n <div class=\"unit-b2c-header__nav-son-title\"><span><?= son.title ?></span></div>\n </a>\n <? if( son.children && son.children.length > 0 ) { -?>\n <i class=\"iconfont icon-action-bottom-lighter unit-b2c-header__nav-icon\"></i>\n <? } -?>\n </div>\n <? if (son.children && son.children.length > 0) { -?>\n <div class=\"unit-b2c-header__nav-grandson\">\n <? son.children.forEach(grandson => { -?>\n <div class=\"unit-b2c-header__nav-grandson-item <?= grandson.is_active ? 'active' : '' ?>\">\n <div class=\"unit-b2c-header__nav-grandson-item-inner\">\n <a class=\"unit-b2c-header__nav-grandson-a\" href=\"<?= globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.href, site) ?>\" target=\"<?- grandson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (grandson.icon) { -?><i class=\"unit-b2c-header__nav-icon unit-b2c-header__nav-grandson-icon
1iconfont <?= grandson.icon ?>\"></i><? } -?>\n <div class=\"unit-b2c-header__nav-grandson-title\"><span><?= grandson.title ?></span></div>\n </a>\n <? if( grandson.children && grandson.children.length > 0 ) { -?>\n <i class=\"iconfont icon-action-bottom-lighter unit-b2c-header__nav-icon\"></i>\n <? } -?>\n </div>\n <? if (grandson.children && grandson.children.length > 0) { -?>\n <div class=\"unit-b2c-header__nav-grateson\">\n <? grandson.children.forEach(grateson => { -?>\n <div class=\"unit-b2c-header__nav-grateson-item <?= grateson.is_active ? 'active' : '' ?>\">\n <div class=\"unit-b2c-header__nav-grateson-item-inner\">\n <a class=\"unit-b2c-header__nav-grateson-a\" href=\"<?= globalThis.Server.getRinseHref(grateson.open_type === 3 ? 'javascript:;' : grateson.href, site) ?>\" target=\"<?- grateson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (grateson.icon) { -?><i class=\"unit-b2c-header__nav-icon unit-b2c-header__nav-grateson-icon iconfont <?= grateson.icon ?>\"></i><? } -?>\n <div class=\"unit-b2c-header__nav-grateson-title\"><span><?= grateson.title ?></span></div>\n </a>\n </div>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <div class=\"swiper-scrollbar\"></div>\n </div>\n <!-- <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div> -->\n </nav>\n </div>\n </div>\n </div>\n <!-- m端 -->\n <div class=\"unit-b2c-header__body-m body-hide\">\n <div class=\"unit-b2c-header__top-m\">\n <div class=\"unit-b2c-header__user\">\n <div class=\"unit-b2c-header__login--no\" login-hide>\n <a href=\"<?= globalThis.Server.getRinseHref('/login.html', site) -?>\" class=\"d-block\">\n <span class=\"iconfont icon-base-user pr-1\"></span>\n <span class=\"unit-b2c-header__top-text\"><?= $t('sign in') ?></span>\n </a>\n </div>\n <div class=\"unit-b2c-header__login\" login-show>\n <a href=\"javascript:;\" class=\"d-block\">\n <span class=\"iconfont icon-base-user\"></span>\n <!-- <span id=\"unit-b2c-header__username\" class=\"pr-1 unit-b2c-header__top-text\"><?= $t('author') ?></span> -->\n <span class=\"iconfont icon-action-bottom-lighter pl-0 pl-md-1\"></span>\n </a>\n <div class=\"unit-b2c-header__login-list\">\n <a class=\"unit-b2c-header__login-item\" href=\"<?= globalThis.Server.getRinseHref('/user.html', site) -?>\"><?= $t('personal center') ?></a>\n <a class=\"unit-b2c-header__login-item\" href=\"javascript:;\" onclick=\"window.app.utilts.logout()\"><?= $t('sign out') ?></a>\n </div>\n </div>\n </div>\n </div>\n <!-- <div class=\"unit-b2c-header__search-m\">\n <input type=\"text\" placeholder=\"Search\" class=\"form-control search-input\">
1\n <span class=\"search-btn iconfont icon-action-search-lighter\"></span>\n </div> -->\n <div class=\"unit-b2c-header__nav-wrap-m\">\n <? site.nav.forEach(item => { -?>\n <div class=\"unit-b2c-header__nav-item <?= item.is_active ? 'active' : '' ?>\">\n <div class=\"unit-b2c-header__nav-item-inner\" firstMenu>\n <a class=\"unit-b2c-header__nav-item-a unit-b2c-header__nav-first-a\" href=\"<?= globalThis.Server.getRinseHref(item.open_type === 3 ? 'javascript:;' : item.href, site) ?>\" target=\"<?- item.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (item.icon) { -?><i class=\"unit-b2c-header__nav-icon iconfont <?= item.icon ?>\"></i><? } -?>\n <span><?= item.title ?></span>\n </a>\n <? if (item.children && item.children.length > 0) { -?>\n <span class=\"iconfont icon-action-bottom-lighter unit-b2c-header__nav-icon\"></span>\n <? } -?>\n </div>\n <? if (item.children && item.children.length > 0) { -?>\n <div class=\"unit-b2c-header__nav-son-wrap\" subMenu>\n <div class=\"unit-b2c-header__nav-son\">\n <? item.children.forEach(son => { -?>\n <div class=\"unit-b2c-header__nav-son-item <?= son.is_active ? 'active' : '' ?>\">\n <div class=\"unit-b2c-header__nav-son-item-inner\">\n <a class=\"unit-b2c-header__nav-son-a\" href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (son.icon) { -?><i class=\"unit-b2c-header__nav-icon iconfont <?= son.icon ?>\"></i><? } -?>\n <div class=\"unit-b2c-header__nav-son-title\"><span><?= son.title ?></span></div>\n </a>\n <? if( son.children && son.children.length > 0 ) { -?>\n <i class=\"iconfont icon-action-bottom-lighter unit-b2c-header__nav-icon\"></i>\n <? } -?>\n </div>\n <? if (son.children && son.children.length > 0) { -?>\n <div class=\"unit-b2c-header__nav-grandson\">\n <? son.children.forEach(grandson => { -?>\n <div class=\"unit-b2c-header__nav-grandson-item <?= grandson.is_active ? 'active' : '' ?>\">\n <div class=\"unit-b2c-header__nav-grandson-item-inner\">\n <a class=\"unit-b2c-header__nav-grandson-a\" href=\"<?= globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.href, site) ?>\" target=\"<?- grandson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (grandson.icon) { -?><i class=\"unit-b2c-header__nav-icon unit-b2c-header__nav-grandson-icon iconfont <?= grandson.icon ?>\"></i><? } -?>\n <div class=\"unit-b2c-header__nav-grandson-title\"><span><?= grandson.title ?></span></div>\n </a>\n <? if( grandson.children && grandson.children.length > 0 ) { -?>\n <i class=\"iconfont icon-action-bottom-lighter unit-b2c-header__nav-icon\"></i>\n <? } -?>\n </div>\n <? if (grandson.children && grandson.children.length > 0) { -?>\n <div class=\"unit-b2c-header__nav-grateson\">\n <? grandson.children.forEach(grateson => { -?>\n <div class=\"unit-b2c-header__nav-grateson-item <?= grateson.is_active ? 'active' : '' ?>\">\n <div class=\"unit-b2c-header__nav-grateson-item-inner\">\n <a class=\"unit-b2c-header__nav-grateson-a\" href=\"<?= globalThis.Server.getRinseHref(grateson.open_type === 3 ? 'javascript:;' : grateson.href, site) ?>\" target=\"<?- grateson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (grateson.icon) { -?><i class=\"unit-b2c-header__nav-icon unit-b2c-header__nav-grateson-icon
1iconfont <?= grateson.icon ?>\"></i><? } -?>\n <div class=\"unit-b2c-header__nav-grateson-title\"><span><?= grateson.title ?></span></div>\n </a>\n </div>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <div class=\"unit-b2c-header__bottom-m\">\n <? if (page.language_list.length > 1) { -?>\n <div class=\"unit-b2c-header__language-box\">\n <div class=\"open-btn\">\n <span class=\"iconfont icon-yuzhong pr-1\"></span>\n <? page.language_list.filter(item => site.language_code === item.code).forEach(item => { -?>\n <span><?= item.title ?></span>\n <? }) -?>\n <? if(page.language_list.length > 1) { -?>\n <span class=\"iconfont icon-action-bottom-lighter\"></span>\n <? } -?>\n </div>\n <? if (page.language_list.length > 1) { -?>\n <div class=\"language news_lang lanlist\">\n <div class=\"lan-btn\"><span class=\"iconfont icon-action-left-lighter\"></span> Return</div>\n <ul>\n <? page.language_list.forEach((item, index) => { -?>\n <? if(index < 20){ -?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" class=\"d-flex\">\n <span><img src=\"/assets/images/flags/<?= item.code ?>.gif\" height=\"16\"></span>\n <span><?= item.title ?></span>\n </a>\n </li>\n <? } -?>\n <? }) -?>\n <? if (page.language_list.length > 19) { -?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref('/multi-language.html', site) -?>\" class=\"d-flex\">\n <span><?= $t('view more languages') ?></span>\n </a>\n </li>\n <? } -?>\n </ul>\n </div>\n <? } -?>\n </div>\n <? } -?>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/b2c-header.js',\n name: 'ScriptB2cHeader',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</header>\n","/package/unit/breadcrumb":"<?\n let style_type_text = package.config.text.style_type_text || 3\n let heading_type = package.config.text.heading_type\n let need_h1 = !page.isDetail && !template.otherData.html_has_h1 && !template.otherData.config_has_h1 && !page.h1_counter\n if (need_h1) {\n if (heading_type === '0' || heading_type === '1') {\n heading_type = '1'\n page.h1_counter ++\n }\n }\n let image_config = package.config.image\n let video_config = package.config.video || {}\n let has_nofollow = package.config.image.has_nofollow || 0\n let has_video = false\n if (image_config) {\n image_config.current_hide_phone = package.current_hide_phone || 0\n image_config.sequence = package.sequence || []\n }\n const is_show_img = package.content.data.filter(val => val.img || val.cover_url).length\n const is_embed_video = package.content.data[0]?.is_embed_video\n const current_img = package.content.data[0]?.img || (is_embed_video ? '' : package.content.data[0]?.cover_url)\n let resultVideoCofig = { ...video_config }\n if (current_img) resultVideoCofig.default_src = current_img\n-?>\n<div class=\"unit-breadcrumb-content <?= is_show_img ? 'unit-breadcrumb-img' : '' ?>\">\n <? \n package.content.data.forEach(item => { \n if (item.cover_url && (item.content_type === 'video' || (item.content_type === 'material' && /\\.mp4/i.test(item.cover_url)) || item.is_embed_video)) {\n has_video = true\n -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'video', config: { ...item, config: { ...video_config, ...image_config}, from: 'breadcrumb', index: 0 } } }) -?>\n <? } else { -?>\n <? if (item.target !== 'anchor') { -?>\n <a class=\"d-block <? if (item.target === 'zoom') { -?>unit-image--zoom<? }-?>\" <? if (item.target !== 'zoom') { -?> href=\"<?= globalThis.Server.getRinseHref(item.href, site)?>\" target=\"<?= item.target || '_self' ?>\"<? } else { -?>zoom-img=\"true\"<? } -?> rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? } else { -?>\n <a class=\"d-block\" href=\"#<?= item.href ?>\" anchor-href=\"#<?= item.href ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? } -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config } } }) -?>\n </a>\n <? } -?>\n <? }) -?>\n <nav class=\"unit-breadcrumb__nav\" text-style=\"<?= style_type_text ?>\">\n <ol class=\"unit-breadcrumb breadcrumb\">
1\n <? page.parents.forEach( (item, index) => { ?>\n <li class=\"unit-breadcrumb__item breadcrumb-item <?= item.title === page.page_title ? 'active' : '' ?>\" aria-current=\"page\">\n <? if (index === page.parents.length - 1 && heading_type !== '0') { ?><h<?= heading_type ?> class=\"nostyle\"><? } ?><a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\"><?- item.title ?></a><? if (index === page.parents.length - 1 && heading_type !== '0') { ?></h<?= heading_type ?>><? } ?>\n </li>\n <? }) ?>\n </ol>\n </nav>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/breadcrumb.js',\n name: 'ScriptBreadcrumb',\n attrId: '<?= package.attr_id ?>',\n video_config: '<?- JSON.stringify(video_config) ?>'\n })\n </script>\n <? if (has_video) { -?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/video-popup.js',\n name: 'ScriptVideoPopup',\n attrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(resultVideoCofig) ?>'\n })\n </script>\n <? } -?>\n</div>\n","/package/unit/button":"<?\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n let style_type_button = package.config.button.style_type_button\n let has_nofollow = package.config.button.has_nofollow\n-?>\n<div class=\"unit-button row no-gutters\" button-style=\"<?= style_type_button ?>\">\n <? package.content.data.forEach(item => { -?>\n <div class=\"unit-button__item <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, has_nofollow } } }) -?>\n </div>\n <? }) -?>\n</div>","/package/unit/cart-checkout":"<div class=\"unit-cart-checkout\">\n <link rel=\"stylesheet\" href=\"/assets/plugins/country.css\">\n <div class=\"unit-cart-checkout__app\">\n <div class=\"unit-cart-checkout__tab\">\n <ul>\n <li class=\"ok\"><span>\n <?= $t('shopping bag') ?>\n </span></li>\n <li class=\"ok\"><span>\n <?= $t('place order') ?>\n </span></li>\n <li class=\"active\"><span>\n <?= $t('pay') ?>\n </span></li>\n <li><span>\n <?= $t('order complete') ?>\n </span></li>\n </ul>\n </div>\n <!-- è¥¿èæ¯ä» -->\n <template v-if=\"payType.type === 12\">\n <div class=\"unit-cart-checkout__header\">\n <div class=\"unit-cart-checkout__header--name\">\n <span class=\"iconfont icon-activity-fill\"></span>\n <?= $t('Your Order') ?>\n </div>\n <div class=\"unit-cart-checkout__amount\">\n <span>\n <?= $t('total amount') ?>:\n </span>\n <strong v-html=\"'$' + order_detail.total_amount\"></strong>\n </div>\n </div>\n <!-- v-if=\"payType === 12\" -->\n <div class=\"row\">\n <div class=\"unit-cart-checkout__left col-md-6 col-12\">\n <div class=\"unit-cart-checkout__content\">\n <div class=\"unit-cart-checkout__name\">\n <?= $t('western union information') ?>\n </div>\n <div class=\"unit-cart-checkout__form\">\n <div class=\"unit-cart-checkout__form-items\">\n <div class=\"unit-cart-checkout__form-item\">\n <em>\n <?= $t('name') ?>:\n </em>\n <i>{{payment_form_info.name}}</i>\n </div>\n <div class=\"unit-cart-checkout__form-item\">\n <em>\n <?= $t('account') ?>:\n </em>\n <i>{{payment_form_info.account}}</i>\n </div>\n <div class=\"unit-cart-checkout__form-item\">\n <em>\n <?= $t('bank name') ?>:\n </em>\n <i>{{payment_form_info.bank_name}}</i>\n </div>\n <div class=\"unit-cart-checkout__form-item\">\n <em>\n <?= $t('swift code') ?>:\n </em>\n <i>{{payment_form_info.swift_code}}</i>\n </div>\n <div class=\"unit-cart-checkout__form-item\">\n <em>\n <?= $t('bank address') ?>:\n </em>\n <i>{{payment_form_info.bank_address}}</i>\n </div>\n <div class=\"unit-cart-checkout__form-item\">\n <em>\n <?= $t('note') ?>:\n </em>\n <i>{{payment_form_info.note}}</i>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-cart-checkout__right col-md-6 col-12\">\n <div class=\"unit-cart-checkout__content\">\n <div class=\"unit-cart-checkout__name\">\n <?= $t('payment details') ?>\n </div>\n <form class=\"needs-validation western-form\" novalidate>\n <div class=\"row\">\n <div class=\"col-lg-6 col-12\">\n <div class=\"form-group\">
1\n <span class=\"unit-form__label\"><span class=\"red\">*</span>\n <?= $t('first name') ?>\n </span>\n <input type=\"text\" class=\"form-control\" name=\"first_name\" required v-model=\"formData.first_name\"\n placeholder=\"<?= $t('first name') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('please enter the name of 20 characters in English') ?>\n </div>\n </div>\n </div>\n <div class=\"col-lg-6 col-12\">\n <div class=\"form-group\">\n <span class=\"unit-form__label\"><span class=\"red\">*</span>\n <?= $t('last name') ?>\n </span>\n <input type=\"text\" class=\"form-control\" name=\"last_name\" required v-model=\"formData.last_name\"\n placeholder=\"<?= $t('last name') ?>\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('please enter the name of 20 characters in English') ?>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <span class=\"unit-form__label\"><span class=\"red\">*</span>\n <?= $t('MTCN# No.(10 digits)') ?>\n </span>\n <input type=\"text\" class=\"form-control\" name=\"mtcn\" :pattern=\"form_rule.mtcn\" required\n v-model=\"formData.mtcn\" placeholder=\"<?= $t('MTCN# No.(10 digits)') ?>\" maxlength=\"10\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('please enter 10 digits') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <span class=\"unit-form__label\"><span class=\"red\">*</span>\n <?= $t('Country') ?>\n </span>\n <div ref=\"country\" style=\"flex: 1\"></div>\n </div>\n <div class=\"form-group\">\n <span class=\"unit-form__label\"><span class=\"red\">*</span>\n <?= $t('currency') ?>\n </span>\n <select name=\"currency_code\" class=\"form-control\" required v-model=\"formData.currency_code\">\n <option value=\"USD\" selected>USD</option>\n </select>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the content can not be blank') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <span class=\"unit-form__label\"><span class=\"red\">*</span>\n <?= $t('payment amount') ?>\n </span>\n <input type=\"number\" class=\"form-control\" name=\"payment_amount\" :pattern=\"form_rule.payment_amount\"\n required v-model=\"formData.payment_amount\" placeholder=\"<?= $t('payment amount') ?>\" min=\"0\"\n max=\"999999999999.99\" step=\"0.01\">\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('the price format is wrong') ?>\n </div>\n </div>\n <div class=\"form-group\">\n <span class=\"unit-form__label\">\n <?= $t('content') ?>\n </span>\n <textarea type=\"text\" class=\"form-control\" name=\"content\" :pattern=\"form_rule.content\"\n v-model=\"formData.content\" placeholder=\"<?= $t('content') ?>\" rows=\"3\" maxlength=\"120\"></textarea>\n <div class=\"valid-feedback\"></div>\n <div class=\"invalid-feedback\">\n <?= $t('no more than 120 characters') ?>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n <div class=\"unit-cart-checkout__footer\">\n <div class=\"unit-cart-checkout__button\">\n <div @click=\"toWesternPay(order_detail.id)\" class=\"unit-cart-checkout__button-background\">\n <?= $t('pay') ?>\n </div>\n </div>\n </div>\n </template>\n <!-- paypayæ¯ä», ä¿¡ç¨å¡æ¯ä» -->\n <template v-else-if=\"payType.type === 11||payType.type === 13 || payType.type === 17 || payType.type === 18 || payType.type === 19\">\n <div class=\"unit-cart-checkout__modal\" id=\"checkoutModal\" tabindex=\"-1\" role=\"dialog\"\n aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\" data-keyboard=\"false\">\n <div class=\"modal-dialog\">\n <div class=\"modal-content\">\n <div class=\"modal-header\" v-if=\"!isPayFail\">\n {{ Utilts.ins().$t(payType.type===11?'paypal payment':'commodity payment') }}\n </div>\n <div class=\"modal-body\" :class=\"{'pay-fail': isPayFail}\">\n <div class=\"unit-paypal__status-wait\" v-if=\"!isPayFail\">\n <p>\n <?= $t('Donât see the secure Payment page? Weâll help you re-launch the window to complete your purchase.') ?>\n </p>\n </div>\n <div class=\"unit-paypal__status-fail\" v-if=\"isPayFail\">
1\n <span class=\"iconfont icon-base-error-fill\"></span>\n <div class=\"unit-paypal__status-fail--text\">\n <div class=\"title\">\n <?= $t('payment failed') ?>\n </div>\n <p>\n <?= $t('This transaction has failed.') ?>\n </p>\n <div class=\"suggestion\">\n <strong>\n <?= $t('suggestion') ?>:\n </strong>\n <span>\n <?= $t('Please click âclick to continueâ to retry.') ?>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <template v-if=\"!isPayFail\">\n <div class=\"unit-cart-checkout__button-background mr-2\" @click=\"checkOrderStatus($event)\">\n <?= $t('click to continue') ?>\n </div>\n <div class=\"unit-cart-checkout__button-border\" @click=\"closeOrderPay($event)\">\n <?= $t('Cancel') ?>\n </div>\n </template>\n <template v-else>\n <div class=\"unit-cart-checkout__button-background\" @click=\"checkOrderStatus($event)\">\n <?= $t('try again') ?>\n </div>\n <a class=\"unit-cart-checkout__button-border\" href=\"javascript:;\" @click=\"toHomePage\">\n <?= $t('Go to homepage') ?>\n </a>\n </template>\n </div>\n </div>\n </div>\n </div>\n </template>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/cart-checkout.js',\n name: 'ScriptCartCheckout',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/cart":"<div class=\"unit-cart\">\n <!-- è´ç©è½¦æ ·å¼ -->\n <div class=\"unit-cart__app-breadcrumb\">\n <a href=\"<?=globalThis.Server.getRinseHref('/', site) -?>\" class=\"unit-cart__app-breadcrumb-item\">\n <?= $t('home') ?>\n </a>\n <a href=\"javascript:;\" class=\"unit-cart__app-breadcrumb-item\">\n <?= $t('cart') ?>\n </a>\n </div>\n <div class=\"unit-cart__app position-relative\">\n <template v-cloak>\n <div class=\"loading absolute-shade\" v-if=\"cartListLoading\"></div>\n <div class=\"unit-cart__wrap\" v-if=\"cart_list.length > 0 || is_buy_now\" @click=\"hideOperation\">\n <!-- è´ç©è½¦tab -->\n <?- include(getViewsPath(`/package/components/unit-cart-tab`), {}) -?>\n <!-- è´ç©è½¦å¤´é¨ -->\n <?- include(getViewsPath(`/package/components/unit-cart-header`), {}) -?>\n <!-- è´ç©è½¦å
容 -->\n <div class=\"unit-cart__content\" :class=\"`${step === 2 ? 'unit-cart__step-2' : 'unit-cart__step-1'}`\">\n <div class=\"unit-cart__left\">\n <!-- è´ç©è½¦æµç¨ç¬¬ä¸æ¥ -->\n <div v-if=\"step === 1 && !is_buy_now\" class=\"unit-cart__list\">\n <!-- è´ç©è½¦å表 -->\n <?- include(getViewsPath(`/package/components/unit-cart-list`), {}) -?>\n <div class=\"unit-cart__tips\" @click=\"toggleCouponMobile\"><?= $t('View discounts and use the best discounts') ?> ></div>\n </div>\n <!-- è´ç©è½¦æµç¨ç¬¬äºæ¥ -->\n <template v-else>\n <!-- è´ç©è½¦å°å -->\n <?- include(getViewsPath(`/package/components/unit-cart-address`), {}) -?>\n <!-- è´ç©è½¦æ¯ä»æ¹å¼ -->\n <?- include(getViewsPath(`/package/components/unit-cart-payment`), {}) -?>\n <div class=\"unit-cart__shipping-notice\" v-if=\"orderAmount > 1\">\n <span class=\"iconfont icon-base-error-fill mr-2\"></span>\n <?= $t('Because the goods come from different warehouses, we will use different logistics for delivery, arrange the best warehouse for you to ship, the total logistics cost includes the following logistics') ?>\n </div>\n <!-- è´ç©è½¦package -->
1\n <?- include(getViewsPath(`/package/components/unit-cart-package`), {}) -?>\n <!-- è´ç©è½¦message -->\n <?- include(getViewsPath(`/package/components/unit-cart-message`), {}) -?>\n </template>\n </div>\n <div class=\"unit-cart__right\">\n <!-- æ»ä»· -->\n <?- include(getViewsPath(`/package/components/unit-cart-total-price`), {}) -?>\n </div>\n </div>\n <!-- æç¤ºçª -->\n <div :class=\"['unit-cart__toast fade', { show: friendly_reminder }]\">\n <div class=\"unit-cart__toast-body\">\n {{ friendly_reminder_info }}\n </div>\n </div>\n </div>\n <template v-else>\n <!-- æ æ°æ® -->\n <?- include(getViewsPath(`/package/components/unit-cart-nodata`), {}) -?>\n </template>\n </template>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/cart.js',\n name: 'ScriptCart',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/column-tabs":"<? \n let tabs_config = package.config.tabs\n\n let tab_data = package.content.data || []\n let tab_list = tab_data.filter(item => !item.is_hide).map(item => {\n return {\n tab_name: item.tab_name,\n tab_panel: item.tab_panel,\n is_hide: item.is_hide\n }\n })\n const isTagsColumnTabs = package.code.indexOf('base-content_tag-unit-3') !== -1\n?>\n\n<div class=\"unit-column-tabs\" column-tab-list=\"<?= globalThis.Server.removeHtmlTags(JSON.stringify(tab_list)) ?>\">\n <div\n class=\"unit-column-tabs__header swiper-container\" >\n <div class=\"unit-column-tabs__nav-wrap swiper-wrapper\">\n <? tab_list.forEach((tabItem, tabIndex) => { -?>\n <div animate class=\"unit-column-tabs__nav-item swiper-slide <?= tabIndex == 0 && !ctx.query.design ? `active`:`` -?>\">\n <div class=\"unit-column-tabs__item-inner\">\n <div class=\"unit-column-tabs__text\" text-style=\"<?= tabs_config.style_type_tabtitle ?>\">\n <? if (isTagsColumnTabs) { -?>\n <div class=\"text_ellipsis\"><?= $t(tabItem.tab_name || '') ?></div>\n <? } else { -?>\n <div class=\"text_ellipsis\"><?- tabItem.tab_name || '' ?></div>\n <? } ?>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n\n <div class=\"swiper-button-prev d-none\"></div>\n <div class=\"swiper-button-next d-none\"></div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/column-tabs.js',\n name: 'ScriptColumnTabs',\n attrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(tabs_config) ?>',\n tab_list: '<?= JSON.stringify(tab_list) ?>'\n })\n </script>\n</div>","/package/unit/comment":"<div class=\"unit-comment\" v-if=\"commentConfig.content_show\">\n <template>\n <div class=\"unit-comment-header d-flex justify-content-between\">\n <div><span class=\"title-tex\">Reviews</span><span class=\"comment-quantity\" v-if=\"commentConfig.score_show\">Number of comments: {{ page.total }}</span></div>
1\n <span class=\"reviews-entry\" @click=\"addReview(0)\" v-if=\"commentConfig.btn_show\">I want to comment?</span>\n </div>\n </template>\n <template v-if=\"commentList.length\">\n <div class=\"unit-comment__list-container\">\n <div class=\"unit-comment__list-item d-flex\" v-for=\"item in commentList\" :key=\"item.id\">\n <div class=\"unit-comment__list-image\">\n <img class=\"img-fuild\" :src=\"item.avatar_url || '/assets/images/comment_default.svg'\" alt=\"\">\n </div>\n <div class=\"unit-comment__list-content\">\n <div class=\"unit-comment__list-title text-title\">{{item.nickname ? (item.nickname.slice(0, 2) + '*****') : item.source === 1 ? 'mall buyer' : '--'}}</div>\n <div class=\"unit-comment__list-description text-description\" :class=\"{'mb-10': item.comment_img}\" v-html=\"item.comment\"></div>\n <div class=\"unit-comment__list-imgs row\" v-if=\"item.comment_img\"> \n <div class=\"col col-4 col-md-3 col-lg-2\" v-for=\"(itemImg, indexImg) in item.comment_img\" :key=\"indexImg\">\n <div class=\"imgs-body\">\n <a :href=\"globalThis.Server.getRinseHref(itemImg.type === 1 ? itemImg.img : itemImg.video, window.app.info.site)\" target=\"_blank\">\n <img :src=\"itemImg.type === 1 ? itemImg.img : itemImg.cover_img\" alt=\"\">\n <div class=\"base-video__play\" v-if=\"itemImg.type === 2\"><i class=\"iconfont icon-action-play\"></i></div>\n </a>\n </div>\n </div>\n </div>\n <div class=\"unit-comment__list-time\" :class=\"{'mt-10': item.comment_img}\">\n <span class=\"text-small time\">{{item.comment_time}}</span>\n <span class=\"text-small\" v-if=\"item.country\">Review in the {{item.country}}</span>\n <span class=\"text-small reviews-entry\" @click=\"addReview(item.id)\" v-if=\"commentConfig.btn_show\">Reviews</span>\n </div>\n <div class=\"unit-comment__reply-container\" v-if=\"item.group_comment_tree && item.group_comment_tree.length\">\n <template v-for=\"replyItem in item.group_comment_tree\">\n <div class=\"unit-comment__list-item d-flex\" :key=\"replyItem.id\" v-if=\"replyItem.status\">\n <div class=\"unit-comment__list-image\">\n <img class=\"img-fuild\" :src=\"replyItem.avatar_url || '/assets/images/comment_default.svg'\" alt=\"\">\n </div>\n <div class=\"unit-comment__list-content\">\n <div class=\"unit-comment__list-title text-title\">\n <span v-if=\"replyItem.is_merchant_reply === 1\">Merchant</span>\n <span v-else>{{replyItem.nickname ? (replyItem.nickname.slice(0, 2) + '*****') : replyItem.source === 1 ? 'mall buyer' : '--'}}</span>\n <span v-if=\"replyItem.is_merchant_reply !== 1 && replyItem.parent_id !== item.id\"><span class=\"reply-text iconfont icon-action-bottom-triangle-bold\"></span> {{replyItem.parent_nickname ? (replyItem.parent_nickname.slice(0, 2) + '*****') : '--'}}</span>\n </div>\n <div class=\"unit-comment__list-description text-description\" :class=\"{ 'mb-10': replyItem.is_merchant_reply === 1 ? replyItem.reply_img : replyItem.comment_img }\" v-html=\"replyItem.is_merchant_reply === 1 ? replyItem.reply : replyItem.comment\"></div>\n <div class=\"unit-comment__list-imgs row\" v-if=\"replyItem.is_merchant_reply === 1 ? replyItem.reply_img : replyItem.comment_img\"> \n <div class=\"col col-4 col-md-3 col-lg-2\" v-for=\"(replyImg, replyIndex) in replyItem.is_merchant_reply === 1 ? replyItem.reply_img : replyItem.comment_img\" :key=\"replyIndex\">\n <div class=\"imgs-body\">\n <a :href=\"globalThis.Server.getRinseHref(replyImg.type === 1 ? replyImg.img : replyImg.video, window.app.info.site)\" target=\"_blank\">\n <img :src=\"replyImg.type === 1 ? replyImg.img : replyImg.cover_img\" alt=\"\">\n <div class=\"base-video__play\" v-if=\"replyImg.type === 2\"><i class=\"iconfont icon-action-play\"></i></div>\n </a>\n </div>\n </div>\n </div>\n <div class=\"unit-comment__list-time\" :class=\"{'mt-10': replyItem.is_merchant_reply === 1 ? replyItem.reply_img : replyItem.comment_img }\">
1\n <span class=\"text-small time\">{{replyItem.is_merchant_reply === 1 ? replyItem.reply_time : replyItem.comment_time}}</span>\n <span class=\"text-small\" v-if=\"replyItem.country\">Review in the {{replyItem.country}}</span>\n <span class=\"text-small reviews-entry\" @click=\"addReview(replyItem.id)\" v-if=\"commentConfig.btn_show\">Reviews</span>\n </div>\n </div>\n </div>\n </template>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-comment__pagination pt-3\" v-if=\"page.page_count>1\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'pagination', config: { attr_id: package.attr_id,type:'vue' } } }) -?>\n </div>\n </template>\n <template v-else>\n <div class=\"no-comment-box d-flex flex-column justify-content-center align-items-center\">\n <img class=\"img-fuild\" src=\"/assets/images/no_comment_default.svg\" alt=\"\">\n <div class=\"tex-box\">No customer reviews</div>\n </div>\n </template>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/comment.js',\n name: 'ScriptComment',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/complete":"<div class=\"unit-complete\">\n <div class=\"unit-complete__app\" v-cloak>\n <div class=\"unit-complete__tab\">\n <ul>\n <li class=\"ok\"><span>\n <?= $t('shopping bag') ?>\n </span></li>\n <li class=\"ok\"><span>\n <?= $t('place order') ?>\n </span></li>\n <li class=\"ok\"><span>\n <?= $t('pay') ?>\n </span></li>\n <li class=\"active\"><span>\n <?= $t('order complete') ?>\n </span></li>\n </ul>\n </div>\n <div class=\"unit-complete__header\">\n <div class=\"unit-complete__header--name\">\n <template v-if=\"order_info.status && order_info.status !== 1 && order_info.status !== 31\">\n <span class=\"iconfont icon-base-success-fill\"></span>\n <label class=\"unit-complete__header-no-login--box\">\n <label>\n <?= $t('thank you for shopping with us!') ?>\n </label>\n <label v-if=\"!window.app.info.user.is_login\" class=\"unit-complete__header-no-login--info\">\n <?= $t('Login to the Profile or check your E-mail to check the latest order information.') ?>\n </label>\n </label>\n </template>\n <template v-if=\"order_info.status && (order_info.status === 1 || order_info.status === 31)\">\n <span class=\"iconfont icon-base-error-fill\"></span>\n <label class=\"unit-complete__header--failed\">\n <label>\n <?= $t('Payment failed, please make another payment') ?>\n </label>\n <label v-if=\"errorStr\" class=\"unit-complete__header--error-info\"> error: {{errorStr}}</label>\n </label>\n </template>\n </div>\n <div class=\"unit-complete__amount\">\n <?= $t('order summary') ?>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"unit-complete__left col-md-6 col-12\">\n <div class=\"unit-complete__content\">\n <div class=\"unit-complete__form\">\n <div class=\"unit-complete__form-items\">\n <div class=\"unit-complete__form-item\">\n <em>\n <?= $t('order id') ?>\n </em>\n <i>{{ order_info.serial_number }}</i>\n </div>\n <div class=\"unit-complete__form-item\">\n <em>\n <?= $t('create time') ?>\n </em>\n <i>{{ order_info.create_time }}</i>\n </div>\n <div class=\"unit-complete__form-item\">\n <em>\n <?= $t('number of item') ?>\n </em>\n <i v-html=\"product_number\"></i>\n </div>\n <div class=\"unit-complete__form-item\">\n <em>\n <?= $t('order status') ?>\n </em>\n <i>{{ order_status_name }}</i>\n </div>\n <div class=\"unit-complete__form-item\">\n <em>\n <?= $t('payment method') ?>\n </em>\n <i v-if=\"order_info.payment_type === 1\">Wechat</i>\n <i v-else-if=\"order_info.payment_type === 11\">PayPal</i>\n <i v-else-if=\"order_info.payment_type === 12\">WesternUnion WU</i>\n <i v-else-if=\"[13, 14, 15, 17, 18, 19].includes(order_info.payment_type)\"><?= $t('Credit or Debit Cards') ?></i>\n <!-- <i v-else-if=\"order_info.payment_type === 13 || order_info.payment_type === 14 || order_info.payment_type === 15 || order_info.payment_type === 17 || order_info.payment_type === 18\"><?= $t('Credit or Debit Cards') ?></i>
1 -->\n </div>\n <div class=\"unit-complete__form-item\">\n <em><?= $t('total price') ?></em>\n <i v-html=\"'$' + order_info.total_amount\"></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-complete__right col-md-6 col-12\">\n <div class=\"unit-complete__content\">\n <div class=\"unit-complete__items\">\n <div class=\"unit-complete__item\" v-for=\"(item, index) in order_product\" :key=\"`order_${index}`\">\n <div class=\"unit-complete__image\">\n <img :src=\"item.product_thumb\" :alt=\"item.product_title\" class=\"unit-cart-image__img\">\n </div>\n <div class=\"unit-complete__text\">\n <div class=\"unit-complete__txt\">\n <div class=\"unit-complete__title\">{{ item.product_title }}</div>\n <div class=\"unit-complete__description\">\n <span v-for=\"attr in item.product_attr_value\" :key=\"attr.title\">\n {{ attr.title }} : {{ attr.content }}\n </span>\n </div>\n </div>\n <div class=\"unit-complete__price\">\n <span>${{ item.price }}</span>\n <!-- <del>${{ item.cost_price }}</del> -->\n <p>x{{ item.quantity }}</p>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-complete__total\">\n <dl>\n <dt>\n <?= $t('Subtotal') ?>\n </dt>\n <dd v-html=\"'$' + order_info.product_price\"></dd>\n </dl>\n <dl v-if=\"order_info.discount_price > 0\">\n <dt>\n <?= $t('Event discount') ?>\n </dt>\n <dd>-${{ order_info.discount_price }}</dd>\n </dl>\n <dl v-if=\"order_info.reduction_price > 0\">\n <dt>\n <?= $t('Discount') ?>\n </dt>\n <dd>-${{ order_info.reduction_price }}</dd>\n </dl>\n <dl v-if=\"order_info.coupon_price > 0\">\n <dt>\n <?= $t('Coupon') ?>\n </dt>\n <dd>-${{ order_info.coupon_price }}</dd>\n </dl>\n <dl>\n <dt>\n <?= $t('Shipping') ?>\n </dt>\n <dd>{{ order_info.shipping_price }}</dd>\n </dl>\n <dl v-if=\"order_info.shipment_surcharge\">\n <dt>\n <?= $t('surcharge') ?>:\n </dt>\n <dd>${{ order_info.shipment_surcharge }}</dd>\n </dl>\n <dl class=\"last\">\n <dt>\n <?= $t('Total') ?>\n </dt>\n <dd class=\"red\" v-html=\"'$' + order_info.total_amount\"></dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-complete__footer\">\n <div class=\"unit-complete__footer-content\">\n <a href=\"<?=globalThis.Server.getRinseHref('/', site) -?>\" class=\"unit-complete__footer--home\">\n <span class=\"iconfont icon-action-left-arrow-lighter\"></span>\n <?= $t('Continue Shopping') ?>\n </a>\n <a v-if=\"order_info.status && order_info.status !== 1\"\n class=\"unit-complete__button-background unit-complete__footer--order\"\n href=\"<?= globalThis.Server.getRinseHref('/user.html#order', site) -?>\">\n <?= $t('my orders') ?>\n </a>\n <div v-else class=\"unit-complete__button-background unit-complete__footer--order\" @click=\"nextStep($event)\">\n <?= $t('pay') ?>\n </div>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/cart-complete.js' + `?v=<?= global.version ?>`,\n name: 'ScriptCartComplete',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/content-comment":"<div class=\"unit-content-comment\" text-style=\"3\" :class=\"{'hide-comment-content': !commentConfig.content_show}\" v-clock>\n <div class=\"header-inner\">\n <div class=\"unit-content-comment__header d-flex justify-content-between align-items-center\" text-style=\"3\" :class=\"{'no-comment': !commentList.length}\">\n <div class=\"title-inner\" :class=\"{'hide-comment-content': !commentConfig.score_show}\">
1\n <span class=\"total-text unit-content-comment__title\">{{ transformNumber(page.total) }}</span> <span class=\"unit-content-comment__title\">{{ $t('Reviews') }}</span>\n <span class=\"tip-text unit-content-comment__desc\">({{ $t('These are summaries of comments from the official website and related social media.') }})</span>\n <span class=\"iconfont icon-question\" @click.stop=\"openTip\"></span>\n </div>\n <div class=\"reviews-entry unit-content-comment__btn\" v-if=\"commentConfig.btn_show\" @click.stop=\"addReview(0)\" v-if=\"commentConfig.btn_show\">{{ $t('I want to comment') }}?</div>\n </div>\n </div>\n <template v-if=\"commentList.length\">\n <div class=\"unit-content-comment__inner\" @click.stop=\"expandMore\">\n <div class=\"unit-content-comment__container\" text-style=\"3\">\n <div class=\"unit-content-comment__item d-flex\" v-for=\"item in commentList\" :key=\"item.id\">\n <div class=\"unit-content-comment__image\">\n <img class=\"img-fuild\" :src=\"item.avatar_url || '/assets/images/comment_default.svg'\" alt=\"\">\n </div>\n <div class=\"unit-content-comment__content\">\n <div class=\"user-info d-flex align-items-center\">\n <div class=\"title unit-content-comment__title\" :style=\"{'padding-right': item.media ? '4px' : '10px'}\">{{ item.media ? item.nickname : item.nickname ? (item.nickname.slice(0, 2) + '*****') : item.source === 1 ? $t('mall buyer') : '--'}}</div>\n <div class=\"media-img\" v-if=\"item.media\">\n <img :src=\"item.media_icon\" alt=\"\" />\n </div>\n <div class=\"comment-info d-flex align-items-center unit-content-comment__text\">\n <span>{{ formatTimeAgo(item.comment_time) }}</span>\n <span class=\"country\" v-if=\"item.country\">{{ item.country }}</span>\n <span class=\"text-small reviews-entry\" @click.stop=\"addReview(item.id)\" v-if=\"!item.media && commentConfig.btn_show\" :commentid=\"item.id\">{{ $t('Reviews') }}</span>\n </div>\n </div>\n <div class=\"content-inner\" :class=\"{'mb-10': item.comment_img.length }\" v-if=\"item.comment\">\n <div class=\"comment-description text-description rich-text unit-content-comment__desc\" v-html=\"item.comment\"></div>\n <div class=\"more-text-btn expand-text d-none\">...{{ $t('More') }}</div>\n </div>\n <div class=\"comment-imgs row\" v-if=\"item.comment_img.length\"> \n <div class=\"col col-4 col-md-3 col-lg-2\" v-for=\"(itemImg, indexImg) in item.comment_img\" :key=\"indexImg\">\n <div class=\"imgs-body\">\n <a :href=\"globalThis.Server.getRinseHref(itemImg.type === 1 ? itemImg.img : itemImg.video, window.app.info.site)\" target=\"_blank\">\n <img :src=\"itemImg.type === 1 ? itemImg.img : itemImg.cover_img\" alt=\"\">\n <div class=\"base-video__play\" v-if=\"itemImg.type === 2\"><i class=\"iconfont icon-action-play\"></i></div>\n </a>\n </div>\n </div>\n </div>\n <div class=\"unit-content-comment__reply-container\" v-if=\"item.group_comment_tree && item.group_comment_tree.length\" :class=\"{'hide-reply': item.hidden_reply}\">\n <template v-for=\"replyItem in item.group_comment_tree\">\n <div class=\"unit-content-comment__item d-flex\" :key=\"replyItem.id\" v-if=\"replyItem.media || replyItem.status\">\n <div class=\"unit-content-comment__image\">\n <img class=\"img-fuild\" :src=\"replyItem.avatar_url || '/assets/images/comment_default.svg'\" alt=\"\">\n </div>\n <div class=\"unit-content-comment__content\">\n <div class=\"user-info d-flex align-items-center\">\n <div class=\"title unit-content-comment__title\" v-if=\"!replyItem.media\" :style=\"{'padding-right': replyItem.media ? '4px' : '10px'}\">
1\n <span v-if=\"replyItem.is_merchant_reply === 1\">{{ $t('Merchant') }}</span>\n <span v-else>{{replyItem.nickname ? (replyItem.nickname.slice(0, 2) + '*****') : replyItem.source === 1 ? $t('mall buyer') : '--'}}</span>\n <span v-if=\"replyItem.is_merchant_reply !== 1 && replyItem.parent_id !== item.id\"><span class=\"reply-text iconfont icon-action-bottom-triangle-bold\"></span> {{replyItem.parent_nickname ? (replyItem.parent_nickname.slice(0, 2) + '*****') : '--'}}</span>\n </div>\n <div class=\"title unit-content-comment__title\" v-else :style=\"{'padding-right': replyItem.media ? '4px' : '10px'}\">\n {{replyItem.nickname}}\n </div>\n <div class=\"media-img\" v-if=\"replyItem.media\">\n <img :src=\"replyItem.media_icon\" alt=\"\" />\n </div>\n <div class=\"comment-info d-flex align-items-center unit-content-comment__text\">\n <span>{{ formatTimeAgo(replyItem.is_merchant_reply === 1 ? replyItem.reply_time : replyItem.comment_time) }}</span>\n <span class=\"country\" v-if=\"replyItem.country\">{{ replyItem.country }}</span>\n <span class=\"text-small reviews-entry\" @click.stop=\"addReview(replyItem.id)\" v-if=\"!item.media && commentConfig.btn_show\" :commentid=\"replyItem.id\">{{ $t('Reviews') }}</span>\n </div>\n </div>\n <div class=\"content-inner\" :class=\"{ 'mb-10': (replyItem.is_merchant_reply === 1 ? replyItem.reply_img : replyItem.comment_img).length }\" v-if=\"(replyItem.is_merchant_reply === 1 ? replyItem.reply : replyItem.comment)\">\n <div class=\"comment-description text-description rich-text unit-content-comment__desc\" v-html=\"replyItem.is_merchant_reply === 1 ? replyItem.reply : replyItem.comment\"></div>\n <div class=\"more-text-btn expand-text d-none\">...{{ $t('More') }}</div>\n </div>\n <div class=\"comment-imgs row\" v-if=\"(replyItem.is_merchant_reply === 1 ? replyItem.reply_img : replyItem.comment_img).length\"> \n <div class=\"col col-4 col-md-3 col-lg-2\" v-for=\"(replyImg, replyIndex) in replyItem.is_merchant_reply === 1 ? replyItem.reply_img : replyItem.comment_img\" :key=\"replyIndex\">\n <div class=\"imgs-body\">\n <a :href=\"globalThis.Server.getRinseHref(replyImg.type === 1 ? replyImg.img : replyImg.video, window.app.info.site)\" target=\"_blank\">\n <img :src=\"replyImg.type === 1 ? replyImg.img : replyImg.cover_img\" alt=\"\">\n <div class=\"base-video__play\" v-if=\"replyImg.type === 2\"><i class=\"iconfont icon-action-play\"></i></div>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </template>\n </div>\n <div class=\"reply-quantity\" v-if=\"(item.reply_map.page_count > 0 && item.reply_map.page_number < item.reply_map.page_count) || item.hidden_reply || (item.reply_map.page_number && !item.hidden_reply)\">\n <span class=\"expand-reply\" @click.stop=\"expandReply(item)\" v-if=\"(item.reply_map.page_count > 0 && item.reply_map.page_number < item.reply_map.page_count) || item.hidden_reply\">\n <i class=\"iconfont icon-action-bottom-lighter\"></i>\n <span>{{ item.hidden_reply ? item.comment_count : item.reply_map.total }} {{ $t('replies') }}</span>\n </span>\n <span class=\"hide-tex\" :style=\"{'margin-left': (item.reply_map.page_count > 0 && item.reply_map.page_number < item.reply_map.page_count) || item.hidden_reply ? '5px' : '0px'}\" v-if=\"item.reply_map.page_number && !item.hidden_reply\" @click.stop=\"hideReplies(item)\"><i class=\"iconfont icon-action-bottom-lighter\"></i> {{ $t('Hide') }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"load-more d-flex justify-content-center align-items-center\" v-if=\"page.page_count > 1 && page.page_count > page.page_number\">
1\n <span @click.stop=\"loadMore\"><span>{{ $t('Load More') }}</span><i class=\"iconfont icon-action-bottom-lighter\"></i></span>\n </div>\n </template>\n <!-- <div class=\"more-comment\" v-if=\"commentList.length\">\n <span @click.stop=\"expandMore\">Read More <span class=\"iconfont icon-action-left-lighter\"></span></span>\n </div> -->\n <div class=\"no-content-comment\" v-if=\"!commentList.length\">\n <img :src=\"`/assets/images/no-content-comment.svg`\" alt=\"\">\n <div class=\"text\">{{ $t('Go and comment now') }}</div>\n </div>\n <div class=\"tip-mask\" @click.stop></div>\n <div class=\"unit-content-comment__tip\" text-style=\"3\" @click.stop>\n <div class=\"tip-title\">\n {{ $t('Reviews') }}\n </div>\n <div class=\"tip-desc\">\n {{ $t('These are summaries of comments from the official website and related social media.') }}\n </div>\n <div class=\"tip-close\">\n <i class=\"iconfont icon-action-close-2\"></i>\n </div>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/content-comment.js',\n name: 'ScriptContentComment',\n attrId: '<?= package.attr_id ?>',\n language_code: '<?= site.language_code ?>'\n })\n</script>","/package/unit/content-detail":"<?\n let image_config = package.config.image || {}\n let video_config = package.config.video || {}\n let detail_config = package.config.content_detail || {}\n if (video_config) {\n video_config.scale = image_config.scale || ''\n video_config.effect = image_config.effect || 0\n video_config.default_src = page.detail_thumb || ''\n }\n package.config.form.style_type_form = 2\n package.config.button.style_type_button = 2\n\n const language_code = site.language_code\n let style_type_text = package.config.text ? (package.config.text.style_type_text || '2') : '2'\n const transformNumber = (num) => {\n if (num < 10000) {\n return num\n } else {\n const res = num / 1000\n return (Math.floor(res * 10) / 10) + 'k'\n }\n }\n const formatTimeAgo = (time) => {\n return globalThis.Server.formatTimeAgo(time, site.language_code)\n }\n const findAttrId = (currentId) => {\n let resId = ''\n Object.keys(ctx.state.template.packages).forEach(val => {\n if (currentId === val) {\n resId = ctx.state.template.packages[val].parent_attr_id\n }\n })\n return resId\n }\n const getDistance = (currentId, flag) => {\n const currentPackage = ctx.state.template.packages[currentId]\n const wrapperStyle = globalThis.Server.getScreenStyle(currentPackage, 'default')\n return wrapperStyle['default']['padding-left'] || (flag ? '-15px' : '0px')\n }\n const unitAttrId = package.attr_id\n const cellAttrId = package.parent_attr_id\n const gridAttrId = findAttrId(cellAttrId)\n const moduleAttrId = findAttrId(gridAttrId)\n const blockAttrId = findAttrId(moduleAttrId)\n const unitPal = getDistance(unitAttrId)\n const cellPal = getDistance(cellAttrId)\n const gridPal = getDistance(gridAttrId, true)\n const modulePal = getDistance(moduleAttrId)\n const blockPal = getDistance(blockAttrId)\n?>\n<div class=\"unit-content-detail\" text-style=\"3\">\n <?-\n `<style>\n\n @media (max-width: 767px) {\n #${package.attr_id} .video-inner {\n width: 100vw;\n transform: translateX(calc(${unitPal} + ${cellPal} + ${gridPal} + ${modulePal} + ${blockPal}));\n }\n #${package.attr_id} .placeholder-inner {\n transform: translateX(calc(${unitPal} + ${cellPal} + ${gridPal} + ${modulePal} + ${blockPal}));\n }\n }\n </style>`\n ?>\n <!-- è§é¢å导è´äº§å -->\n <div class=\"unit-content-detail__video-inner\">\n <div class=\"video-inner\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'xg-video', config: { img: video_config.default_src, cover_url: page.detail_video_url, m3u8_url: page.m3u8_url, file_info: page.details_file_info, config: { ...video_config, ...image_config} } } }) -?>\n </div>\n <!-- 询çå导è´äº§å -->\n <? if ((detail_config.show_product && page.relate_product.length) || detail_config.show_inquire) { -?>\n <div class=\"relate-product-inner <?= video_config.controls ? 'show-video-controls' : '' ?>\">\n <div class=\"content-body d-flex\">\n <div class=\"relate-product-container\">\n <div class=\"swiper-wrapper\">\n <? if (detail_config.show_inquire) { -?>\n <div class=\"swiper-slide guid-item\">\n <div class=\"inquire-logo big-inquire-logo\">\n <i class=\"iconfont icon-inquiry\"></i>\n </div>\n <div class=\"content-info\">\n <div class=\"title\"><?= $t('Contact us') ?></div>\n <div class=\"summary\"><?= $t('Leave your inquiry, we will provide you with quality products and services!') ?></div>\n </div>\n <div class=\"icon-box\"><i class=\"iconfont icon-action-left-lighter\"></i></div>\n </div>\n <? } -?>\n <? if (detail_config.show_product && page.relate_product.length > 0) { -?>\n <? page.relate_product.slice(0, 4).forEach((item, index) => { -?>\n <div class=\"swiper-slide guid-item <?= !detail_config.show_inquire ? 'no-inquire' : '' ?>\" data-link=\"<?= item.page_url_suffix ?>\">\n <? if (detail_config.show_inquire) { -?>\n <div class=\"inquire-img inquire-logo\">\n <i class=\"iconfont icon-inquiry inquire-iconfont\"></i>\n </div>\n <? } -?>\n <img class=\"product-img\" src=\"<?= item.thumb ?>\" alt=\"\">\n <div class=\"content-info\">\n <div class=\"title <?= !item.summary ? 'multiLine' : '' ?>\"><?= item.title ?></div>\n <? if (item.summary) { -?>\n <div class=\"summary\"><?= item.summary ?></div>\n <? } -?>\n </div>\n <div class=\"icon-box\"><i class=\"iconfont icon-action-left-lighter\"></i></div>\n </div>\n <? }) -?>\n <? } -?>\n </div>\n <div class=\"swiper-pagination\"></div>\n </div>\n <div class=\"relate-product-icon d-none\">\n <!-- å±å¼ -->\n <div class=\"expand-icon\">\n <i class=\"iconfont icon-action-left-lighter\"></i>\n </div>\n </div>\n <? if (detail_config.show_product && page.relate_product.length > 4) { -?>\n <div class=\"more-icon\">\n <i class=\"iconfont icon-more-product\"></i>\n </div>\n <? } -?>\n </div>\n <div class=\"close-icon d-none\">\n <i class=\"iconfont icon-action-close-2\"></i>\n </div>\n <? if (detail_config.show_product && page.relate_product.length > 4) { -?>\n <div class=\"more-relate-product d-none\">\n <div class=\"more-product-header__inner\">\n <div class=\"more-product-header\">\n <div class=\"title\"><?= $t('more products') ?></div>\n <div class=\"more-product-header__close\">\n <i class=\"iconfont icon-action-close-2\"></i>\n </div>\n </div>\n </div>\n <div class=\"more-product-list__inner\">\n <div class=\"more-product-list\">\n <? if (detail_config.show_inquire) { -?>\n <div class=\"more-product-item swiper-slide guid-item\">\n <div>\n <div class=\"inquire-logo\">\n <i class=\"iconfont icon-inquiry\"></i>\n </div>\n <div class=\"content-info\">\n <div class=\"title\"><?= $t('Contact us') ?></div>\n <div class=\"summary\"><?= $t('Leave your inquiry, we will provide you with quality products and services!') ?></div>\n </div>\n </div>\n <div class=\"icon-box\"><i class=\"iconfont icon-action-left-lighter\"></i></div>\n </div>\n <? } -?>\n <? page.relate_product.forEach((item, index) => { -?>\n <div class=\"more-product-item swiper-slide guid-item\" data-link=\"<?= item.page_url_suffix ?>\">\n <div>\n <img class=\"product-img\" src=\"<?= item.thumb ?>\" alt=\"\">\n <div class=\"content-info\">\n <div class=\"title <?= !item.summary ? 'multiLine' : '' ?>\"><?= item.title ?></div>\n <? if (item.summary) { -?>\n <div class=\"summary\"><?= item.summary ?></div>\n <? } -?>\n </div>\n </div>\n <div class=\"icon-box\"><i class=\"iconfont icon-action-left-lighter\"></i></div>\n </div>\n <? }) -?>\n </div>\n </div>\n </div>\n <? } -?>\n </div>\n <? } -?>\n </div>\n <!-- æ é¢ -->\n <div class=\"unit-content-detail__title-inner\">\n <div class=\"title\" text-style=\"<?= style_type_text ?>\">\n <div class=\"text_ellipsis\">
1\n <?- page.detail_title ?> \n <? if (detail_config.show_content_tag && page.content_tag_info.tag_list.length) { -?>\n <div class=\"unit-content-detail__tags-inner\">\n <div class=\"unit-content-detail__tags\" text-style=\"<?= style_type_text ?>\">\n <? page.content_tag_info.tag_list.forEach((item, subIndex) => { -?>\n <a class=\"unit-content-detail__item\" href=\"<?=globalThis.Server.getRinseHref(item.page_url_suffix, site) ?>\" title=\"<?= item.title ?>\">#<?= item.title ?></a>\n <? }) -?>\n </div>\n </div>\n <? } -?>\n </div>\n </div>\n </div>\n <!-- ç½ç«logoçä¿¡æ¯ -->\n <div class=\"unit-content-detail__info\">\n <div class=\"site-info\">\n <!-- <img src=\"<?= site.site_logo ?>\" alt=\"\"> -->\n <div class=\"site-info-inner\">\n <div class=\"info-name-social\">\n <div class=\"site-name unit-content-detail__info-site-name\"><?= site.site_name ?></div>\n <? if (detail_config.show_social_logo && site.site_social.length > 0) { -?>\n <div class=\"site-social\">\n <? site.site_social.slice(0,20).forEach((item, index) => { -?>\n <a rel=\"nofollow\" href=\"<?= item.link || 'javascript:;' ?>\" target=\"_blank\" class=\"social-list-item custom-color bg-<?- item.media.toLowerCase() ?>\">\n <div class=\"social-list-icon\"><span class=\"iconfont icon-<?- item.icon ?>\"></span></div>\n </a>\n <? }) -?>\n </div>\n\n <? } -?>\n </div>\n <? if (detail_config.show_fans) { -?>\n <div class=\"info-fans unit-content-detail__info-fans\"><?= transformNumber(page.followers) ?> <?= $t('fans') ?></div>\n <? } -?>\n </div>\n </div>\n <? if (detail_config.show_like_count || detail_config.show_forward_count) { -?>\n <div class=\"statistics-info\">\n <? if (detail_config.show_like_count) { -?>\n <div class=\"statistics-item unit-content-detail__info-count\"><?= $t('Likes') ?>: <?= page.like_count ?></div>\n <? } -?>\n <? if (detail_config.show_forward_count) { -?>\n <div class=\"statistics-item unit-content-detail__info-count\"><?= $t('Shares') ?>: <?= page.forward_count ?></div>\n <? } -?>\n </div>\n <? } -?>\n </div>\n <!-- è§é¢ç®ä» -->\n <? if (detail_config.show_date_show || detail_config.show_reads || page.detail_summary || page.detail_description[0]['detail'][0]['description']) { -?>\n <div class=\"unit-content-detail__summary\">\n <? if (detail_config.show_date_show || detail_config.show_reads) { -?>\n <div class=\"content-inner unit-content-detail__count\">\n <? if (detail_config.show_reads) { -?>\n <span><?= page.browse_count ?> <?= $t('views') ?></span>\n <? } -?>\n <? if (detail_config.show_reads && detail_config.show_date_show) { -?>\n <span>, </span>\n <? } -?>\n <? if (detail_config.show_date_show) { -?>\n <span><?= formatTimeAgo(page.detail_update_time) ?></span>\n <? } -?>\n </div>\n <? } -?>\n <? if (page.detail_summary || page.detail_description[0]['detail'][0]['description']) { -?>\n <div class=\"summary-inner\">\n <div class=\"text-inner rich-text\">\n <? if (page.detail_summary) { -?>\n <div>\n <div class=\"text-name unit-content-detail__summary-label\">Summaryï¼</div>\n <div class=\"summary-inner-content\"><?- globalThis.Server.getRinseHTML(page.detail_summary, site, 'needLazy') ?></div>\n </div>\n <? } -?>\n <? if (page.detail_description[0]['detail'][0]['description']) { -?>\n <div class=\"<?= page.detail_summary ? 'existence-summary' : '' ?>\">\n <div class=\"text-name unit-content-detail__summary-label\"><span class=\"description-name-text\">Descriptionï¼</span></div>\n <div class=\"summary-inner-content\"><?- globalThis.Server.getRinseHTML(page.detail_description[0]['detail'][0]['description'].replace(/>/g, '>').replace(/</g, '<'), site, 'needLazy') ?></div>\n </div>\n <? } -?>\n </div>\n <div class=\"more-text-btn d-none\"><?= $t('More') ?></div>\n </div>\n <? } -?>\n </div>\n <? } -?>\n <? if (detail_config.show_inquire) { -?>\n <!-- <div class=\"inquiry-mask\"></div> -->\n <div class=\"unit-detail-button-inquiry\">\n <div class=\"d-none\" style=\"height: 100%;\">\n <link rel=\"stylesheet\" href=\"/assets/css/unit/inquire-list.css\">\n <div class=\"drawer-header\">\n <div class=\"drawer-title\"><?= $t('Send Inquiry') ?></div>\n <div class=\"drawer-close-btn\">Ã</div>\n </div>\n <div class=\"drawer-content\">\n <div class=\"inquiry-modal-inner\">\n <div class=\"inquiry-modal__title\">\n <?= $t('If you have more questions, write to us') ?>\n </div>\n <div class=\"inquiry-modal__description\">\n <?= $t('Just leave your email or phone number in the contact form so we can send you a free quote for our wide range of designs!') ?>\n </div>\n <div class=\"row\">\n <div class=\"col col-12 col-md-12 col-xl-12\">
1\n <?- include(getViewsPath(`/package/unit/form`), { package } ) -?>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <? } -?>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/content-detail.js',\n name: 'ScriptContentDetail',\n attrId: '<?= package.attr_id ?>',\n relate_product: '<?= JSON.stringify(page.relate_product) ?>',\n videoUrl: '<?= page.detail_video_url ?>',\n config: '<?= JSON.stringify({...video_config, ...detail_config}) ?>'\n })\n</script>","/package/unit/content-list":"<?\n let content_list_config = package.config.content_list\n let list_config = package.config.list\n let image_config = package.config.image || {}\n let video_config = package.config.video || {}\n let swiper_config = package.config.swiper\n let resize_config = package.config.resize\n if (swiper_config && swiper_config.effect === 'cube') image_config.instant_load = 1\n if (video_config) {\n video_config.scale = image_config.scale || ''\n video_config.effect = image_config.effect || 0\n }\n if (image_config) {\n image_config.current_hide_phone = package.current_hide_phone || 0\n image_config.sequence = package.sequence || []\n }\n\n let show_img = list_config.show_img % 10\n let show_title = list_config.show_title % 10\n let show_subtitle = list_config.show_subtitle % 10\n let show_description = list_config.show_description % 10\n let show_date_show = list_config.show_date_show % 10\n let has_title = list_config.has_title === undefined ? show_title : list_config.has_title\n let has_subtitle = list_config.has_subtitle === undefined ? show_subtitle : list_config.has_subtitle\n let has_description = list_config.has_description === undefined ? show_description : list_config.has_description\n let show_date_type = list_config.show_date_type\n let show_date_yyyy = list_config.show_date_yyyy\n let show_date_mm = list_config.show_date_mm\n let show_date_dd = list_config.show_date_dd\n let show_reads = list_config.show_reads\n let show_keywords = list_config.show_keywords\n let show_read_more = list_config.show_read_more\n let date_and_button = list_config.date_and_button\n let show_quote_list = list_config.show_quote_list\n let show_inquiry = list_config.show_inquiry\n let show_like = list_config.show_like\n let date_title = list_config.date_title\n let keywords_title = list_config.keywords_title\n let has_nofollow = list_config.has_nofollow\n let is_swiper = swiper_config && swiper_config.is_swiper\n let is_resize = resize_config && resize_config.is_resize\n let isDetailContent = package.content.type === 'detail'\n let isBanner = package.code.indexOf('banner') > -1\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n let composing_xl = list_config.composing_xl\n let swiper_html = ''\n let tab_list = package.content.tab_list || []\n if (is_swiper && tab_list.length === 1) swiper_html = `id=swiper-${package.attr_id} carousel=${JSON.stringify(swiper_config)}`\n const formatNum = (num) => (num + '').replace(/\\d{1,3}(?=(\\d{3})+$)/g, '$&,');\n // const isShop = site.is_shop\n let colInfo = { cols_col:cols_col, cols_md:cols_md, cols_xl:cols_xl }\n let pageInfo = {page_size:page.page_size, page_number:page.page_number, page_count:page.page_count, page_total:page.total, tag_id: page.content_tag_info.tag_id || 0}\n let isNow = package.content.type === 'products-discount-now'\n let isUpcoming = package.content.type === 'products-discount-upcoming'\n let hoverImg = package.content.hover_img || false\n let hoverImgEffect = package.content.hover_img_effect.split(',')\n let hoverImgIn = hoverImgEffect[0] || ''\n let hoverImgOut = hoverImgEffect[1] || ''\n let hoverImgDuration = hoverImgEffect[2] || ''\n let from = 'list'\n let uniform_height = list_config.uniform_height\n if (list_config.content === 'product') {\n from = 'product_list'\n } else if (isBanner) {\n from = 'banner_list'\n }\n <!-- let vertical = list_config.vertical -->\n\n <!-- è½®æä¿¡æ¯ -->\n const getSwiperHtml = index => is_swiper ? `id=swiper-${package.attr_id}-${index} carousel=${JSON.stringify(swiper_config)}` : ''\n const data = package.content.data\n if(show_inquiry) {\n package.config.form.style_type_form = 2\n package.config.button.style_type_button = 2\n }\n\n const bg_hover_linear = package.config.list?.bg_hover_linear?.enabled ? 'unit-list__item-hover-linear' : ''\n <!-- åå¹¶è¾¹æ¡ ---------------------------------------- -->\n const wrapperSelector = '.unit-list__items'\n const itemSelector = '.unit-list__item'\n const borderSelector = '.unit-list__item-inner'\n // åæ°æ å°\n const colsMap = {\n \"12\": 1,\n \"6\": 2,\n \"4\": 3,\n \"3\": 4,\n \"2_4\": 5,\n \"2\": 6,\n \"12_7\": 7,\n \"12_8\": 8,\n \"12_9\": 9,\n \"12_10\": 10,\n \"12_11\": 11,\n \"1\": 12\n };\n let mergeInfo = {\n cols_default: colsMap[`${package.cols_col}`],\n cols_md: colsMap[`${package.cols_md}`],\n cols_xl: colsMap[`${package.cols_xl}`],\n }\n <!-- æ¥èª *.css éçåºç¡æ ·å¼ -->\n let baseStyle = {\n '.unit-list__items': {\n default: {\n 'margin': '-10px',\n },\n md: {\n 'margin': '-0.4vw'\n },\n xl: {\n 'margin': '-0.4vw'\n }\n },\n '.unit-list__item': {\n default: {\n 'padding-top': '10px',\n 'padding-bottom': '10px',\n 'padding-left': '10px',\n 'padding-right': '10px',\n },\n md: {\n 'padding-top': '0.4vw',\n 'padding-bottom': '0.4vw',\n 'padding-left': '0.4vw',\n 'padding-right': '0.4vw',\n },\n xl: {\n 'padding-top': '0.4vw',\n 'padding-bottom': '0.4vw',\n 'padding-left': '0.4vw',\n 'padding-right': '0.4vw',\n }\n }\n }\n\n <!-- è§é¢ææ¾éç½® -->\n if (isBanner) video_config.auto_reset = '1'\n <!-- 计ç®å¶æ°è¡ -->\n const checkEvenRow = (index) =>
1 {\n return !(Math.ceil((index+1) / mergeInfo.cols_xl) % 2)\n }\n const filter_number = list_config.filter_number\n const show_number = list_config.show_number\n let show_more = false\n <!-- let show_more = !is_swiper && list_config.show_number && data.length > list_config.show_number -->\n const checkShowMore = (dataLen) => {\n show_more = !is_swiper && list_config.show_number && dataLen > list_config.show_number\n }\n\n // å¾çè¾¹æ¡\n const imageItemBorder = '.base-image__item';\n\n // .base-image__item border å¾ç飿 ¼è¾¹æ¡è®¾ç½®å¤æ\n if(image_config) {\n image_config.image_item_has_border = globalThis.Server.hasImgBorder(package.style?.['.base-image__item']);\n }\n\n /**list10 reset-bdéç½®borderæ ·å¼ default-bdæ§é»è®¤æ ·å¼*/\n const resetBd = package.style?.default?.default?.['--reset-bd'] ? 'reset-bd' : 'default-bd';\n\n let show_multiLine = content_list_config.show_multiLine % 10\n let sizeMap = {\n default: content_list_config.page_size_default * 1,\n md: content_list_config.page_size_md * 1,\n xl: content_list_config.page_size_xl * 1\n }\n const maxSize = Math.max(sizeMap.xl, sizeMap.md, sizeMap.default)\n const trTabType = (tab) => {\n let res = tab\n if (tab === 'all_polymerize_list') {\n res = 'all'\n } else if (tab === 'related_video_list') {\n res = 'Related content'\n }\n return res\n }\n const showSet = ['base-all_video-unit-1'].includes(package.code)\n const currentSort = content_list_config.sort\n const getCurrentTime = () => {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth() + 1; \n var day = now.getDate();\n var hours = now.getHours();\n var minutes = now.getMinutes();\n var seconds = now.getSeconds();\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`\n }\n let defaultObj = {\n \"sign\": \"\",\n \"content_type\": package.content.type,\n \"href\": \"\",\n \"target\": \"_self\",\n \"title\": \"This is the title of the video or article content, which can optimize the title description to attract user clicks.\",\n \"title_sign\": \"\",\n \"tab\": \"default\",\n \"tab_sign\": \"\",\n \"content_id\": 0,\n \"children\": [],\n \"img\": \"\",\n \"img_width\": 0,\n \"img_height\": 0,\n \"hover_img\": \"\",\n \"cover_url\": \"\",\n \"is_embed_video\": \"\",\n \"original_picture_url\": \"\",\n \"alt\": \"\",\n \"caption\": \"\",\n \"alt_sign\": \"\",\n \"caption_sign\": \"\",\n \"subtitle\": \"Display subtitles for videos and article content, highlighting key points in one sentence.\",\n \"year\": \"\",\n \"subtitle_sign\": \"\",\n \"description\": \"Display video and article content summaries and descriptions, which can provide detailed information about the expressed content.\",\n \"description_sign\": \"\",\n \"renew_time\": 0,\n \"update_time\": getCurrentTime(),\n \"video_gif\": \"\",\n \"is_allow_gif\": 0,\n \"content_code\": 13,\n \"video_url\": \"\",\n \"meta_keywords\": \"\",\n \"reads\": 0,\n \"add_time\": 0,\n \"m3u8_url\": \"\",\n \"file_info\": {\n \"width\": 720,\n \"height\": 720,\n \"duration\": 15.16\n },\n \"product_thumb_prefix\": \"\",\n \"product_url_suffix\": \"\",\n \"product_id\": 0,\n \"forward_count\": 0,\n \"browse_count\": 99900,\n \"like_count\": 9999,\n \"tags\": [],\n \"tag_list\": []\n }\n // 置顶模åç»ä»¶code\n const defaultNumber = Math.max(mergeInfo.cols_xl, mergeInfo.cols_md, mergeInfo.cols_default)\n let defaultData = []\n const videosUnit = ['base-resource_aggregation-unit-9', 'base-resource_aggregation-unit-17', 'module-content-list-1-unit-4']\n const shortsUnit = ['base-resource_aggregation-unit-13', 'base-resource_aggregation-unit-21']\n const topUpUnit = ['base-resource_aggregation-unit-5', 'base-resource_aggregation-unit-8', 'base-resource_aggregation-unit-12', 'base-resource_aggregation-unit-16', 'module-content-list-1-unit-3']\n\n const defaultVideos = ['https://img.yfisher.com/m5411/1750744637505-content-list-videos1.png', 'https://img.yfisher.com/m5411/1750744639095-content-list-videos2.png', 'https://img.yfisher.com/m5411/1750744639587-content-list-videos3.png']\n const defaultShorts = ['https://img.yfisher.com/m5411/1750746887591-content-list-shorts1.png', 'https://img.yfisher.com/m5411/1750744636324-content-list-shorts2.png', 'https://img.yfisher.com/m5411/1750744636575-content-list-shorts3.png', 'https://img.yfisher.com/m5411/1750744637186-content-list-shorts4.png']\n const defaultTopUp = ['https://img.yfisher.com/m5411/1750744638104-content-list-videos1-topup.png', 'https://img.yfisher.com/m5411/1750744639344-content-list-videos2-topup.png', 'https://img.yfisher.com/m5411/1750744639903-content-list-videos3-topup.png']\n\n const topUpTrByCode = {\n 'base-resource_aggregation-unit-5': defaultTopUp[0],\n 'base-resource_aggregation-unit-8': defaultTopUp[1],\n 'base-resource_aggregation-unit-12': defaultTopUp[2],\n 'base-resource_aggregation-unit-16': defaultTopUp[0],\n 'module-content-list-1-unit-3': defaultTopUp[0],\n }\n if (topUpUnit.includes(package.code)) {\n defaultObj.title = 'This is the title of recommended videos or articles, which can be optimized to attract user clicks.'\n defaultObj.subtitle = 'Display recommended videos and article content summaries or descriptions, highlighting key points in one sentence.'\n defaultObj.description = `Display recommended videos and article content summaries with descriptions, providing detailed explanations of the expressed content's specifics.`\n defaultObj.img = topUpTrByCode[package.code]\n }\n if (package.code.indexOf(\"base-content_tag-unit\") === -1) {\n for (let index = 0; index < defaultNumber; index++) {\n let obj = {\n ...defaultObj\n }\n if (!topUpUnit.includes(package.code)) {\n if (videosUnit.includes(package.code)) obj.img = defaultVideos[index % defaultVideos.length]\n if (shortsUnit.includes(package.code)) obj.img = defaultShorts[index % defaultShorts.length]\n }\n defaultData.push(obj)\n }\n }\n const contentTagShorts = package.code.indexOf(\"base-content_tag-unit-5\") !== -1\n // console.log('*---****------', page, package.content, show_multiLine)\n-?>\n<div \n class=\"unit-content-list <?=package.code?> <?= is_swiper ? 'is-swiper' : '' ?> <?= contentTagShorts ? 'content-tag-shorts' : '' ?>\"\n <? if (is_swiper && swiper_config.navigation) {-?>\n navigation-position=\"<?= swiper_config.navigation_position ?>\"\n navigation-position-md=\"<?= swiper_config.navigation_position_md ?>\"\n navigation-position-xl=\"<?= swiper_config.navigation_position_xl ?>\"\n <? } ?>\n <?= swiper_html ?> <?- tab_list.length === 1 && tab_list[0] !== 'default' ? 'tab-type=\"' + tab_list[0] + '\"' : '' -?>\n <? if (show_multiLine != 1) {-?>\n single-content=\"<?= show_multiLine ?>\"\n <? } ?>\n>\n <?-\n `<style>\n ${globalThis.Server.syncStyle(package, [\n ['.base-image__item', 'border-radius', '.video-container', 'border-radius']\n ])}\n @media (max-width: 767px) {\n ${sizeMap.default > 0 && sizeMap.default !== maxSize ? `#${package.attr_id} .temp-items .unit-list__item:nth-child(n + ${sizeMap.default + 1}) { display: none; }` : ''}\n ${\n tab_list.map(item => {\n return `\n ${\n package.content.all_total[item] - (filter_number || 0) > sizeMap.default ? `#${package.attr_id} [read-more-tab=\"${item}\"] { display: block; }` : package.content.all_total[item] - (filter_number || 0) < colsMap[package.cols_col] ? \n `\n #${package.attr_id} [show-read-more=\"0\"],\n #${package.attr_id} [show-read-more=\"5\"],\n #${package.attr_id} [show-read-more=\"6\"],\n #${package.attr_id} [show-read-more=\"7\"] { display: none; }\n ` : ''\n }\n `\n }).join('')\n }\n\n #${package.attr_id} [single-content=\"0\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_col]})),\n #${package.attr_id} [single-content=\"5\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_col]})),\n #${package.attr_id} [single-content=\"6\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_col]})),\n #${package.attr_id} [single-content=\"7\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_col]})) { display: none; }\n }\n @media (min-width: 768px) and (max-width: 1199px) {\n ${sizeMap.md > 0 && sizeMap.md !== maxSize ? `#${package.attr_id} .temp-items .unit-list__item:nth-child(n + ${sizeMap.md + 1}) { display: none; }` : ''}\n ${\n tab_list.map(item => {\n return `\n ${\n package.content.all_total[item] - (filter_number || 0) > sizeMap.md ? `#${package.attr_id} [read-more-tab=\"${item}\"] { display: block; }` : package.content.all_total[item] - (filter_number || 0) < colsMap[package.cols_md] ? \
1n `\n #${package.attr_id} [show-read-more=\"0\"],\n #${package.attr_id} [show-read-more=\"3\"],\n #${package.attr_id} [show-read-more=\"4\"],\n #${package.attr_id} [show-read-more=\"7\"] { display: none; }\n ` : ''\n }\n `\n }).join('')\n }\n\n #${package.attr_id} [single-content=\"0\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_md]})),\n #${package.attr_id} [single-content=\"3\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_md]})),\n #${package.attr_id} [single-content=\"4\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_md]})),\n #${package.attr_id} [single-content=\"7\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_md]})) { display: none; }\n }\n @media (min-width: 1200px) {\n ${sizeMap.xl > 0 && sizeMap.xl !== maxSize ? `#${package.attr_id} .temp-items .unit-list__item:nth-child(n + ${sizeMap.xl + 1}) { display: none; }` : ''}\n ${\n // å¤è¡æ¶ç Read More\n tab_list.map(item => {\n return `\n ${\n package.content.all_total[item] - (filter_number || 0) > sizeMap.xl ? `#${package.attr_id} [read-more-tab=\"${item}\"] { display: block; }` : package.content.all_total[item] - (filter_number || 0) < colsMap[package.cols_xl] ? \n `\n #${package.attr_id} [show-read-more=\"0\"],\n #${package.attr_id} [show-read-more=\"2\"],\n #${package.attr_id} [show-read-more=\"4\"],\n #${package.attr_id} [show-read-more=\"6\"] { display: none; }\n ` : ''\n }\n `\n }).join('')\n }\n \n #${package.attr_id} [single-content=\"0\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_xl]})),\n #${package.attr_id} [single-content=\"2\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_xl]})),\n #${package.attr_id} [single-content=\"4\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_xl]})),\n #${package.attr_id} [single-content=\"6\"] .unit-list__item:not(:nth-child(-n + ${colsMap[package.cols_xl]})) { display: none; }\n }\n ${globalThis.Server.getHideOuterBorderStyle(package, wrapperSelector, borderSelector, baseStyle, [imageItemBorder])}\n ${globalThis.Server.getMergeBorderStyle(package, wrapperSelector, itemSelector, borderSelector, baseStyle, (style, screen) => {\n if (is_swiper) {\n // ç¹æ®ä¸å¤ç\n return {}\n }\n if (uniform_height) {\n let selectorStyle = style[`#${package.attr_id} ${itemSelector}:nth-child(n+${mergeInfo['cols_' + screen] + 1}) ${borderSelector}`]\n if (selectorStyle?.['margin-top']) {\n selectorStyle['margin-top'] = '' // gridå¸å±ä¸éç¨ï¼ç¨border-topæ¿ä»£\n selectorStyle['border-top'] = 'none'\n }\n }\n return style\n }\n )}\n </style>`\n ?>\n <? if(showSet) { -?>\n <div class=\"unit-breadcrumb-content\">\n <nav class=\"unit-breadcrumb__nav\" text-style=\"3\">\n <ol class=\"unit-breadcrumb breadcrumb\">\n <li class=\"unit-breadcrumb__item breadcrumb-item \" aria-current=\"page\">\n <a href=\"/\"><?= site.company_brand_name || site.company_name_short || site.company_name || $t('home') ?></a>\n </li>\n <li class=\"unit-breadcrumb__item breadcrumb-item \" aria-current=\"page\">\n <a href=\"javascript:;\"><?= $t('All video') ?></a>\n </li>\n </ol>\n </nav>\n </div>\n <div class=\"content-set\">\n <div class=\"change-set\">\n <span data-value=\"update_time desc\" class=\"<?= currentSort === 'update_time desc' ? 'active' : '' ?>\"><?= $t('Latest') ?></span>\n <span data-value=\"browse_count desc\" class=\"<?= currentSort === 'browse_count desc' ? 'active' : '' ?>\"><?= $t('Hot') ?></span>
1\n <span data-value=\"create_time desc\" class=\"<?= currentSort === 'create_time desc' ? 'active' : '' ?>\"><?= $t('Release') ?></span>\n <span data-value=\"like_count desc\" class=\"<?= currentSort === 'like_count desc' ? 'active' : '' ?>\"><?= $t('Like') ?></span>\n </div>\n <div class=\"total\"><?= $t('A total of') ?> <span><?= package.content.all_total[tab_list[0]] || 1 ?></span> <span class=\"lowercase-text\"><?= $t('Videos') ?></span></div>\n </div>\n <? } ?>\n <? if(package.content.sortData && package.content.sortData.length && data.length) { -?>\n <div class=\"unit-content-list__filter\">\n <div class=\"unit-content-list__filter-text\" text-style=\"3\">\n <span class=\"unit-content-list__filter-default\"><?= $t(package.content.sortData[0].label) ?></span>\n <span class=\"unit-content-list__filter-suffix iconfont icon-action-bottom-lighter ml-1\"></span>\n <div class=\"unit-content-list__filter-dropdown\">\n <div class=\"unit-content-list__filter-dropdown-list\">\n <? package.content.sortData.forEach((item, index) => {-?>\n <p class=\"unit-content-list__filter-dropdown-item <?= index === 0 ? 'active' : '' ?>\" data-value=\"<?= item.value ?>\"><?= $t(item.label) ?></p>\n <? }) ?>\n </div>\n </div>\n </div>\n <div class=\"unit-content-list__filter-type\">\n <span class=\"filter-type-item iconfont icon-base-cascades active\"></span>\n <span class=\"filter-type-item iconfont icon-base-list ml-1\"></span>\n </div>\n </div>\n <? } ?>\n <? if( tab_list.length > 1 || tab_list[0] === 'all_polymerize_list') { -?>\n <!-- tabéé¡¹å¡ -->\n <div class=\"tab-header\" tab-style=\"<?= list_config.style_type_tab ?>\">\n <div class=\"unit-product-list__tabs nav\">\n <!-- å建tab项 -->\n <? tab_list.filter(p=>!!p).forEach((tabType, index)=>{-?>\n <div data-tabtype=\"<?= tabType -?>\" class=\"nav-item <?= index===0 ? 'active' : '' -?>\">\n <?= $t(trTabType(tabType)) -?>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <? if (tab_list.length > 1) { -?>\n <!-- tabé项å¡å
容 -->\n <div class=\"tab-content\">\n <? } ?>\n <? tab_list.forEach((tabType, index) => { -?>\n <? if (tab_list.length > 1) { -?>\n <div tab-type=\"<?= tabType -?>\" class=\"unit-product-list-tab-content <?= index===0 ? '' : 'd-none' -?>\" <?= getSwiperHtml(index) ?>>\n <? } ?>\n <? let productList = data.filter(item => item.tab === tabType) -?>\n <? \n let listData = tab_list.length > 1 ? productList : data\n if (!listData.length) {\n listData = defaultData\n }\n listData = filter_number ? listData.slice(filter_number) : listData\n -?>\n <? let hasWechat = data.find(el=>el.title==='Wechat') -?>\n <? if (listData.length > 0) { -?>\n <div class=\"swiper-container <?= is_resize ? 'resize-container' : '' ?> <?= hasWechat?.href ? 'has-wechat' : '' ?>\" direction=\"<?= resize_config && resize_config.direction ?>\">\n <div\n class=\"unit-list__items swiper-wrapper <?= is_swiper ? '' : 'row' ?> <?= uniform_height && !swiper_config.is_swiper ? 'swiper-grid' : '' ?> <?= `gcol-${cols_col} gcol-md-${cols_md} gcol-xl-${cols_xl}` ?> <?= is_swiper && !swiper_config.pagination ? 'no-swiper-pagination' : '' ?> temp-items\"\n >\n <? listData.forEach((item, subIndex) => { -?>\n <div\n animate\n class=\"<?-bg_hover_linear?> animate unit-list__item swiper-slide <?= !item.img ? 'no-image' : '' ?> <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?> <?= show_number && subIndex >= show_number && !is_swiper ? 'hide-more-box' : '' ?>\"\n data-media=\"<?= item.title ?>\"\n composing-xl=\"<?= composing_xl ?>\"\n even-row=\"<?= checkEvenRow(subIndex) ?>\"\n <? if (item.title === 'Wechat') { -?>\n data-wechatCode=\"<?= item.href ?>\"\n <? } -?>\n >\n <div class=\"unit-list__a\"\n data-href=\"<?= list_config.target==='block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\"\n data-target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\"\n >\n <div\n class=\"unit-list__item-inner d-flex <?= composing_xl ? '': 'flex-column' ?>\"\n <?= package.getLazyListBGString('.unit-list__item-inner') ?>\n >\n <? if (item.cover_url && (item.content_type === 'video' || (item.content_type === 'material' && /\\.mp4/i.test(item.cover_url) || item.is_embed_video))) { -?>
1\n <?- include(getViewsPath(`/package/components/unit-content-list-card__video`), { package, item, from, subIndex }) -?>\n <? } else { -?>\n <?- include(getViewsPath(`/package/components/unit-content-list-card__image`), { package, item, from, subIndex }) -?>\n <? } -?>\n </div>\n </div>\n </div>\n <? }) -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.pagination) { -?>\n <div class=\"unit-list__pagination swiper-pagination\"></div>\n <? } -?>\n <? if (swiper_config.navigation) { -?>\n <div class=\"unit-list__button-prev swiper-button-prev\"></div>\n <div class=\"unit-list__button-next swiper-button-next\"></div>\n <? } -?>\n <? if (swiper_config.scrollbar) { -?>\n <div class=\"unit-list__scrollbar swiper-scrollbar\"></div>\n <? } -?>\n <? } -?>\n <? if(is_resize) { -?>\n <div class=\"unit-list__split-line\" >\n <div class=\"unit-list__dragger\">\n <span class=\"unit-list__icon-resize iconfont icon-double-arrow\"></span>\n </div>\n </div>\n <? } -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.navigation && [swiper_config.navigation_position, swiper_config.navigation_position_md, swiper_config.navigation_position_xl].includes('outside')) { -?>\n <div class=\"unit-list__button-prev swiper-button-prev swiper-button-prev--outside\"></div>\n <div class=\"unit-list__button-next swiper-button-next swiper-button-next--outside\"></div>\n <? } -?>\n <? } -?>\n <? if (tab_list.length === 1 || (tab_list.length > 1 && tabType !== 'related_video_list')) { -?>\n <!-- ä¸åå¨å è½½--- åè¡/å¤è¡ æ»æ°é > æ¯é¡µæ°é -->\n <? if (!content_list_config.load_type && !content_list_config.limit_count) { -?>\n <div text-style=\"3\" class=\"more-content more-inner\" show-read-more=\"<?= show_multiLine ?>\" read-more-tab=\"<?= tab_list.length > 1 ? tabType : tab_list[0] -?>\">\n <a class=\"more-text\" href=\"<?= globalThis.Server.getRinseHref('/all-video.html', site) ?>\"><span><?= $t('read more') ?></span><i class=\"iconfont icon-action-left-lighter\"></i></a>\n </div>\n <? } -?>\n <!-- å è½½æ´å¤éå¶æ°éçRead More -->\n <? if (content_list_config.load_type === 1 && content_list_config.limit_count) { -?>\n <div text-style=\"3\" class=\"unit-content-list_all more-inner d-none\">\n <a class=\"more-text\" href=\"<?= globalThis.Server.getRinseHref('/all-video.html', site) ?>\"><span><?= $t('read more') ?></span><i class=\"iconfont icon-action-left-lighter\"></i></a>\n </div>\n <? } -?>\n <!-- content_list_config.load_type === 1 ç¹å»å è½½ -->\n <? if (content_list_config.load_type === 1) { -?>\n <div text-style=\"3\" class=\"unit-content-list_more more-inner d-none\">\n <span class=\"more-text more-btn\"><span><?= $t('Load More') ?></span><i class=\"iconfont icon-action-bottom-lighter\"></i></span>\n </div>\n <? } -?>\n <!-- content_list_config.load_type === 2 æ»å¨å è½½ -->\n <? if (content_list_config.load_type === 2) { -?>\n <div class=\"loading-inner d-none\">\n <div class=\"loading\"></div>\n </div>\n <? } -?>\n <!-- å页 -->\n <div class=\"unit-content-list_pagination d-none\"></div>\n <? } -?>\n <? } else if(isNow || isUpcoming) { -?>\n <div class=\"discount_page_no_data d-none\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n </div>\n <? } else { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <? if (tab_list.length > 1) { -?> </div><? } -?>\n <? }) ?>\n <? if (tab_list.length > 1) { -?></div><? } -?>\n <? if (tab_list.length === 0) { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <? if (show_read_more && show_inquiry === 1) { -?>\n <div class=\"d-none\">\n <link rel=\"stylesheet\" href=\"/assets/css/unit/inquire-list.css\">\n <div class=\"inquiry-modal-inner\">\n <div class=\"inquiry-modal__description\">\n <?= $t('Please fill out the form below to request a quote or to request more information about us. please be as detailed as possible in your message, and we will get back to you as soon as possible with a response. weâre ready to start working on your new project, contact us now to get started.') ?>\n </div>\n <div class=\"row\">\n <div class=\"col col-12 col-md-12 col-xl-6 py-4\">
1\n <?- include(getViewsPath(`/package/unit/form`), { package } ) -?>\n </div>\n <div class=\"col col-12 col-md-12 col-xl-6 py-4\">\n <?- include(getViewsPath(`/package/unit/inquire-list`), { package } ) -?>\n </div>\n </div>\n </div>\n </div>\n <? } -?>\n <? if (show_more) { -?>\n <div class=\"show-more-box\" expand-button-style=\"<?= list_config.style_type_expand ?>\" text-style=\"3\">\n <div class=\"base-more\">\n <div class=\"show-more-inner\">\n <div class=\"d-inline-block\"><?- list_config.expand_button_text || $t('Expand More') ?></div>\n <i class=\"iconfont icon-action-bottom-lighter\"></i>\n </div>\n </div>\n </div>\n <? } -?>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/content-list.js?v=1',\n name: 'ScriptContentList',\n attrId: '<?= package.attr_id ?>',\n open_hover: \"<?-package.content?.hover_img_effect ?>\",\n content_type: '<?= package.content.type ?>',\n pageInfo: '<?= JSON.stringify(pageInfo) ?>',\n hoverImg: '<?-package.content.hover_img?>',\n config: '<?= JSON.stringify({...list_config, resize: resize_config, swiper: swiper_config, video: video_config, image: image_config, ...content_list_config}) ?>',\n colInfo: '<?= JSON.stringify(colInfo) ?>',\n relate_list: '<?= JSON.stringify(package.content.relate_list) ?>',\n all_total: '<?= JSON.stringify(package.content.all_total) ?>',\n all_page_category_id: '<?= JSON.stringify(package.content.all_page_category_id) ?>',\n tab_list: '<?= JSON.stringify(package.content.tab_list) ?>',\n bg_hover_linear: '<?= bg_hover_linear ?>'\n })\n</script>","/package/unit/content-tag":"<?\n let text_config = package.config.text\n let contentTagPage = package.code === 'base-content_tag-unit-2'\n const transformNumber = (num) => {\n return globalThis.Server.transformNumber(num)\n }\n?>\n<div class=\"unit-detail-tag\">\n <? if (contentTagPage) { -?>\n <div class=\"unit-detail-tag__page container\">\n <div class=\"unit-detail-tag__page-title unit-detail-tag__inner\" text-style=\"1\">\n #<?= page.content_tag_info.tag_title ?>\n </div>\n <? if (page.content_tag_info.tag_summary) { -?>\n <div class=\"unit-detail-tag__page-summary\" text-style=\"3\">\n <?= page.content_tag_info.tag_summary ?>\n </div>\n <? } ?>\n <div class=\"unit-detail-tag__page-quantity\" text-style=\"3\">\n <div><?= transformNumber(page.content_tag_info.tag_contents) ?> <?= $t('contents') ?></div>\n <div class=\"unit-detail-tag__page-quantity-split\"></div>\n <div><?= transformNumber(page.content_tag_info.tag_views) ?> <?= $t('views') ?></div>\n </div>\n </div>\n <? } else { ?>\n <? if (page.content_tag_info.tag_list.length) { -?>\n <div class=\"unit-detail-tag__list unit-detail-tag__inner\" text-style=\"<?= text_config.style_type_text ?>\">\n <? page.content_tag_info.tag_list.forEach((item, subIndex) => { -?>\n <a class=\"unit-detail-tag__item\" href=\"<?=globalThis.Server.getRinseHref(item.page_url_suffix, site) ?>\" title=\"<?= item.title ?>\">#<?= item.title ?></a>\n <? }) -?>\n </div>\n <? } -?>\n <? } -?>\n</div>","/package/unit/coupon-list":"<?\n let coupon_config = package.config.coupon_list || {}\n let swiper_config = package.config.swiper\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n let is_swiper = swiper_config.is_swiper\n let has_nofollow = coupon_config.has_nofollow\n let style_type = coupon_config.style_type_couponList \n let coupon_count = coupon_config.coupon_count\n let code_count = coupon_config.code_count\n let show_btn = coupon_config.show_btn\n let show_coupon = coupon_config.show_coupon\n let show_code = coupon_config.show_code\n let description = ''\n let description_sign = ''\n if (package.content.data.length > 0 ) {\n description = package.content.data[0].description\n description_sign = package.content.data[0].description_sign\n }\n let packageParams = { is_swiper, cols_col, cols_md,cols_xl, style_type, has_nofollow, show_btn, description, description_sign, show_coupon, show_code, coupon_count, code_count }\n-?>\n<div class=\"unit-coupon-list\"></div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/coupon-list.js',\n name: 'ScriptCouponList',\n attrId: '<?= package.attr_id ?>',\n packageParams:'<?= JSON.stringify(packageParams)?>'\n })\n</script>
1","/package/unit/custom_editor":"<?\n\tconst content = package.content.data[0]\n-?>\n<div class=\"unit-custom_editor\">\n\t<div class=\"unit-custom_editor_desc\" editor_btn _html=\"<?= package.content.data[0].description_sign ?>\">\n\t\t<?- globalThis.Server.getRinseHTML(content.description, site) ?>\n\t</div>\n</div>","/package/unit/detail-album":"<?\nlet image_config = package.config.image\nlet album_config = JSON.parse(JSON.stringify(image_config))\nlet album_list = page.album_list\nlet main_pic = page.album_list[0]\nlet videoType = ''\nlet video_url = main_pic ? (main_pic.video_url || '') : ''\nlet video_config = package.config.video\nif (main_pic) {\n if (video_url.indexOf('url_inline') > 0) videoType = 'url_inline'\n else if (video_url.indexOf('video_inline') > 0 || main_pic.album_type === 2) videoType = 'video_inline'\n else if (/\\.mp4/i.test(video_url) ) videoType = 'local'\n}\n\nlet thumbSizes = {}\n\n// ææºç«¯AI产åä¸»å¾ é«åº¦\nconst AI_ALBUM_IMG_SIZE_PHONE = 350\n// PAD PC AI产åä¸»å¾ é«åº¦\nconst AI_ALBUM_IMG_SIZE = 650\n\nif (ctx.state.page.page_type === 'ai_product_detail') {\n image_config.instant_load = 1\n album_config.instant_load = 1 // ç¸å缩ç¥å¾ç«å³å è½½\n thumbSizes = { type: 'height', phone: AI_ALBUM_IMG_SIZE_PHONE, md: AI_ALBUM_IMG_SIZE, xl: AI_ALBUM_IMG_SIZE } // åºå®å°ºå¯¸ï¼image_item__picture 为1æ¶çæ\n}\n\nlet url_3d = ''\nlet poster_3d = ''\nlet poster_3d_mini = ''\nconst data3d = page['3d_display_list']\nif (data3d) {\n url_3d = data3d['glb_file'] || ''\n poster_3d = data3d['img_file'] || ''\n poster_3d_mini = '//img.yfisher.com/static/3d-icon.svg'\n}\n\nlet exclude_3d = false\nfor (let i = 0; i < album_list.length; i++) {\n if (album_list[i]['album_type'] === 13) {\n exclude_3d = true\n break\n }\n}\nif (url_3d && !exclude_3d) {\n album_list.splice(1, 0, {album_type: 13, alt: '3d model', img: poster_3d_mini, video_url: ''})\n}\n\n/**\n * æ¯å¼ å¾çç¬ç«é
ç½®\n * @param {object} image_config - å¾çé
ç½®\n * @param {array} album_list - å¾çå表\n * @param {object} extCfg - ç¹æ®é
ç½®\n * @returns {object} - é
ç½®\n */\nfunction eachAlbumCfg(cfg, album_list, extCfg) {\n const mapCfg = {}\n if(!Array.isArray(album_list)) return mapCfg\n album_list.forEach((album, i) => {\n let loading = (i === 0 ? 'eager' : 'lazy'); // HTMLImgElement loading attribute\n let fetchpriority = (i === 0 ? 'high' : 'auto'); // HTMLImgElement fetchpriority attribute\n const imgCfg = {\n ...extCfg,\n cfg: { ...cfg },\n fetchpriority,\n loading\n };\n mapCfg[i] = imgCfg\n })\n return mapCfg\n}\n\n// ç¸åé
ç½®\nconst aiAlbumCfg = { quality: 80, thumbnail: { type: 5, height: 80 } }\nconst albumConf = ctx.state.page.page_type === 'ai_product_detail' ? aiAlbumCfg : {}\nconst mapAlbumCfg = eachAlbumCfg(album_config, album_list, albumConf)\n\n// 主å¾é
ç½® thumbSizes @example {type: 'height', phone: 350, xl: 650}\nconst aiImgCfg = { thumbSizes, quality: 80, image_item__picture: 1 }\nconst extCfg = ctx.state.page.page_type === 'ai_product_detail' ? aiImgCfg : {}\nconst mapImgCfg = eachAlbumCfg(image_config, album_list, extCfg)\n\n?>\n<div class=\"unit-detail-album\">\n <div class=\"unit-detail-album__content <?= ['bottom', 'top'].includes(package.config.album.direction) ? 'flex-column' : '' ?>\">\n <div class=\"unit-detail-album__picture\">\n <? if(videoType !== ''){ ?>\n <div class=\"unit-detail-album__video-box\">\n <div class=\"unit-detail-album__video\">\n <span class=\"iconfont icon-action-close unit-detail-album__video-close\"></span>\n </div>\n </div>
1\n <span class=\"iconfont icon-action-play unit-detail-album__video-play\" data-type=\"<?= videoType ?>\" data-src=\"<?= globalThis.Server.replaceImgDomain(video_url, site.prefix_domain, site.is_replace_domain) ?>\"></span>\n <? } ?>\n <div class=\"unit-detail-album__picture-container swiper-container\" custom-swiper={}>\n <div class=\"unit-detail-album__picture-items swiper-wrapper\" >\n <? album_list.forEach((item, index) => { const imgCfg = mapImgCfg[index]; ?>\n <? if(item.album_type === 13){ ?>\n <div class=\"unit-detail-album__picture-item swiper-slide swiper-slide-3d-item\" album-type=\"<?= item.album_type ?>\">\n <div style=\"width: 100%;height: auto;opacity: 0;\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, img: poster_3d, config: image_config } } }) -?>\n </div>\n <div class=\"unit-detail-album__3d-box\">\n <model-viewer style=\"width: 100%;height: 100%;\"\n id=\"lazy-load\"\n src=\"<?= url_3d -?>\"\n alt=\"A 3D model\"\n auto-rotate\n camera-controls>\n <div id=\"lazy-load-poster\" style=\"background-image: url('<?= poster_3d ?>');\" slot=\"poster\"></div>\n <div id=\"button-load\" slot=\"poster\"><span class=\"iconfont icon-a-3D\"></span>Play</div>\n </model-viewer>\n </div>\n </div>\n <? } else { ?>\n <div class=\"unit-detail-album__picture-item swiper-slide\" album-type=\"<?= item.album_type ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, index, ...imgCfg, config: imgCfg.cfg, from: 'album_detail' } } }) -?>\n </div>\n <? } ?>\n <? }) ?>\n </div>\n </div>\n <div class=\"unit-detail-album__picture-navigation\">\n <div class=\"unit-detail-album__picture-next swiper-button-next\"></div>\n <div class=\"unit-detail-album__picture-prev swiper-button-prev\"></div>\n </div>\n <div class=\"unit-detail-album__pattern\">\n <img lazy-src=\"\" alt=\"\">\n </div>\n <div class=\"unit-detail-album__picture-pagination\"></div>\n </div>\n <div class=\"unit-detail-album__thumb position-relative\">\n <div class=\"unit-detail-album__thumb-inner\">\n <div class=\"unit-detail-album__thumb-container swiper-container\">\n <div class=\"unit-detail-album__thumb-items swiper-wrapper\">\n <? album_list.forEach((item, index) => { const albumCfg = mapAlbumCfg[index]; ?>\n <div class=\"unit-detail-album__thumb-item swiper-slide\">\n <div class=\"unit-detail-album__thumb-image\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, index, ...albumCfg, config: albumCfg.cfg, from: 'album_thumb' } } }) -?>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n <div class=\"unit-detail-album__thumb-navigation\">\n <div class=\"unit-detail-album__thumb-next swiper-button-next\"></div>\n <div class=\"unit-detail-album__thumb-prev swiper-button-prev\"></div>\n </div>\n </div>\n </div>\n </div>\n <script>\n ;(function(){\n const attrId = '<?= package.attr_id ?>';\n let direction = '';\n const isM = window.innerWidth < 768\n const isPad = window.innerWidth >= 768 && window.innerWidth < 1200\n if (isM || isPad) {\n direction = 'bottom';\n const dom = document.querySelector('#' + attrId)\n dom && dom.classList.add('unit-detail-album--y', 'unit-detail-album--bottom');\n const unit = dom.querySelector('.unit-detail-album');\n if (unit) {\n unit.setAttribute('before-init', 'true')\n unit.classList.add('unit-detail-album-mobi')\n }\n }\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-album.js',\n name: 'ScriptDetailAlbum',\n attrId: '<?= package.attr_id ?>',\n direction: direction || '<?= package.config.album.direction ?>'\n })\n })();\n </script>\n</div>\n","/package/unit/detail-alert-size-chart":"<? if(page.chart_img.length){ ?>\n <div class=\"detail-alert-size-chart\">\n <div class=\"detail-alert-size-chart__btn text-capitalize\"><?= $t('View size guide') ?></div>\n <div hidden>\n <div class=\"detail-alert-size-chart__con\">\n <div class=\"detail-alert-size-chart__image\">\n <img lazy-src=\"<?= page.chart_img[0].attach ?>\" alt=\"\">\n </div>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-alert-size-chart.js',\n name: 'ScriptDetailAlertSizeChart',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n<? } ?>
1","/package/unit/detail-attr":"<?\n// input_type è¾å
¥ç±»åï¼1-ææ¬æ¡ 2-åé 3-å¤é 4-skuç»åå¼ 5 坿æ¬\n?>\n<? if (page.attrParam_list.length ){ ?>\n <div class=\"unit-product-attrparam\">\n <div class=\"unit-product-attrparam__items row\">\n <? page.attrParam_list.forEach(item => { ?>\n <div class=\"col-12 col-md-6\">\n <div class=\"unit-product-attrparam__item\">\n <div class=\"unit-product-attrparam__label\"><?- item.label ?></div>\n <div class=\"unit-product-attrparam__value\" title=\"<?= item.value -?>\">\n <? if (item.input_type === 1) { ?>\n <span><?= item.value -?></span>\n <? } else { ?>\n <span><?- globalThis.Server.getRinseHTML(item.value, site) ?></span>\n <? } ?>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n <? if (page.attrParam_list.length === 0 && ctx.query.design) { ?>\n <div class=\"alert alert-light border\" role=\"alert\">\n <? if (ctx.query.design) { ?>\n <?= $t('no style parameters') ?>\n <? } else { ?>\n <?= $t('no data') ?>\n <? } ?>\n </div>\n <? } ?>\n </div>\n<? } ?>\n","/package/unit/detail-back-data1":"<? if (page.module1_content!='') { ?>\n<?- globalThis.Server.getRinseHTML(page.module1_content, site, 'needLazy') ?>\n<? } ?>","/package/unit/detail-back-data2":"<? if (page.module2_content!='') { ?>\n<?- globalThis.Server.getRinseHTML(page.module2_content, site, 'needLazy') ?>\n<? } ?>","/package/unit/detail-button-buy":"<div class=\"unit-detail-button-buy\" button-style=\"2\" onclick=\"window.app.utilts.setGtag('add_to_buynow')\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Buy Now') } } }) -?>\n\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-button-buy.js',\n name: 'ScriptDetailButtonBuy',\n attrId: '<?= package.attr_id ?>',\n hasBuyOn: Number('<?= page.platform_relate.length > 0 ? 1 : 0 ?>')\n })\n </script>\n</div>","/package/unit/detail-button-cart":"<div class=\"unit-detail-button-cart\" button-style=\"2\" onclick=\"window.app.utilts.setGtag('add_to_cart')\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Add to Cart'), icon: 'icon-base-cart-lighter' } } }) -?>\n\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-button-cart.js',\n name: 'ScriptDetailButtonCart',\n attrId: '<?= package.attr_id ?>',\n hasBuyOn: Number('<?= page.platform_relate.length > 0 ? 1 : 0 ?>')\n })\n </script>\n</div>","/package/unit/detail-button-comment":"<div class=\"unit-detail-button-comment\" button-style=\"2\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('write a review'), icon: 'icon-action-edit' } } }) -?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-button-comment.js',\n name: 'ScriptDetailButtonComment',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/detail-button-inquiry":"<?\n if (site.site_inquiry.product_status) {\n package.config.form.list = site.site_inquiry.package.config.form.list\n package.config.form.minLength = site.site_inquiry.package.config.form.minLength\n package.config.content = site.site_inquiry.package.config.content\n }\n package.config.form.style_type_form = 2\n package.config.button.style_type_button = 2\n?>\n<div class=\"unit-detail-button-inquiry\" button-style=\"2\" onclick=\"window.app.utilts.setGtag('add_to_inquiy')\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('inquiry') } } }) -?>\n\n <div class=\"d-none\">\n <link rel=\"stylesheet\" href=\"<?- globalThis.Server.versionUrl('/assets/css/unit/inquire-list.css') ?>\">\n <div class=\"inquiry-modal-inner\">\n <div class=\"inquiry-modal__description\">\n <?= $t('Please fill out the form below to request a quote or to request more information about us. please be as detailed as possible in your message, and we will get back to you as soon as possible with a response. weâre ready to start working on your new project, contact us now to get started.') ?>\n </div>\n <div class=\"row\">\n <div class=\"col col-12 col-md-12 col-xl-6 py-4\">
1\n <?- include(getViewsPath(`/package/unit/form`), { package } ) -?>\n </div>\n <div class=\"col col-12 col-md-12 col-xl-6 py-4\">\n <?- include(getViewsPath(`/package/unit/inquire-list`), { package } ) -?>\n </div>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-button-inquiry.js',\n name: 'ScriptDetailButtonInquiry',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/detail-buy-on":"<? if(page.platform_relate.length > 0) { ?>\n<div class=\"unit-detail-by-on\">\n <div class=\"unit-detail-by-on\">\n <div class=\"unit-detail-by-on__label text-capitalize\">\n <?= $t('Buy on') ?>:\n </div>\n <div class=\"d-flex unit-detail-by-on__item-wrap\">\n <? page.platform_relate.forEach((item,index) => { -?>\n <? if(item.name) { ?>\n <a href=\"<?=globalThis.Server.getRinseHref(item.link, site) ?>\" target=\"<?=item.targetType -?>\" tname=\"<?=item.name -?>\" class=\"unit-detail-by-on__item\" link-button>\n <i class=\"unit-detail-by-on__icon iconfont icon-ec-<?=item.name -?>\"></i>\n </a>\n <? } ?>\n <? }) -?>\n </div>\n </div>\n</div>\n<? } else if (ctx.query.design) { ?>\n <div class=\"alert alert-light border\" role=\"alert\">\n 请å¨åå°äº§å--å¹³å°å¯¼æµ--导æµè®¾ç½®æ·»å \n </div>\n<? } ?>","/package/unit/detail-comment-list":"<style>\n .unit-detail-comment{margin: 1vw 0;font-size: 14px;}\n .unit-detail-comment .text-title{font-weight: 500;color: #333333;}\n .unit-detail-comment .text-description{font-weight: 400;color: #333;line-height: 1.2;}\n .unit-detail-comment .text-small{font-size: 12px;color: #999999;}\n .unit-detail-comment .mb-20{margin-bottom: 20px;}\n .unit-detail-comment .mb-10{margin-bottom: 10px;}\n .unit-detail-comment-header{background: #F8F8F8;border-radius: 4px;padding: 1.2vw 2.4vw;justify-content: space-between;}\n .unit-detail-comment-header__ratings-text{font-size: 36px;color: #F0670C;font-family: YouSheBiaoTiHei;line-height: 1;padding-bottom: 1vw;}\n .comment-proportion-bg{width: 160px;height: 6px;background: #E1E3E9;border-radius: 3px;margin: 0 15px;}\n .comment-proportion-bg__child{background: #F0670C;border-radius: 3px;height: inherit;}\n .comment-proportion-tex{font-size: 12px;font-weight: 500;color: #F0670C;}\n .comment-score-tex{font-size: 14px;font-weight: 400;color: #666666;}\n .comment-proportion-item:not(:first-child){margin-bottom: 10px;}\n .unit-detail-comment__list-item{padding: 20px 2.4vw;}\n .unit-detail-comment__list-item:not(:last-child){border-bottom: 1px solid rgba(39, 46, 53, .15);}\n .unit-detail-comment__list-image{width: 45px;height: 45px;border-radius: 50%;overflow: hidden;margin-right: 10px;}\n .unit-detail-comment__list-content{flex: 1;}\n .unit-detail-comment__list-title{margin-bottom: 5px;font-size: 16px;}\n .unit-detail-comment__list-time .time{margin-right: 1.5vw;}\n .unit-detail-comment__list-style{line-height: 1;}\n .unit-detail-comment__list-specification .specification-attr{margin-right: 15px;}\n .unit-detail-comment__list-imgs > div{margin-bottom: 10px;}\n .unit-detail-comment__list-imgs img{border-radius: 5px;}\n .comment-proportion-box{display: flex;flex-flow: column-reverse;}\n .unit-reply-items__content{margin-left: 10px;flex: 1;}\n .unit-detail-comment__list-reply{background: #F8F8F8;border-radius: 4px;padding: 10px 20px; margin-top: 10px;}\n .unit-detail-comment__list-reply .unit-detail-comment__list-imgs{margin-bottom: 0;}\n .unit-detail-comment__list-reply-items:not(:last-child){margin-bottom: 15px;}\n .unit-detail-comment__list-reply-items span{color: #666;}\n .unit-detail-comment__list-reply-items .reply-avatar{width: 24px;height: 24px;border-radius: 50%;overflow: hidden;}\n .unit-detail-comment__ratings-box .star-item.on{color: #F68136;}\n .unit-detail-comment__ratings-box .star-item.half{color: transparent;background: linear-gradient(to right, #F68136 50%, #E1E8EE 51%); -webkit-background-clip: text;}\n .unit-detail-comment__ratings-box .star-item.off{color: #E1E8EE;}\n .unit-reply-items__content-title{font-size: 16px;}\n .unit-detail-comment__list-imgs div{padding-right: 0;}\n @media (max-width: 768px) {\n .unit-detail-comment-header{flex-flow: column;}\n .unit-detail-comment__list-style{flex-flow: column;justify-content: flex-start!important;align-items: flex-start!important;}\n .unit-detail-comment__list-time{margin-bottom: 10px;}\n .unit-detail-comment__list-image{width: 30px;height: 30px;}\n .unit-detail-comment-header{padding: 10px 20px;}\n .unit-detail-comment-header__ratings{padding-right: 0; display: flex; align-items: center;}\n .comment-proportion-box{ display: none; }\n .unit-detail-comment-header__ratings-text{ font-size: 30px; padding-right: 15px; }\n .unit-detail-comment{ margin: 0; }\n }\n</style>\n<div class=\"unit-detail-comment\">\n <template v-cloak>\n <div class=\"unit-detail-comment-header d-flex\">\n <div class=\"unit-detail-comment-header__ratings text-center\">\n <div class=\"unit-detail-comment-header__ratings-text\">{{scoreAvg}}</div>\n <div class=\"unit-detail-comment__ratings-box\">
1\n <span v-for=\"(itemClass, index) in itemClasses(scoreAvg)\" class=\"iconfont star-item\" :class=\"itemClass\"></span>\n </div>\n </div>\n <div class=\"comment-proportion-box\">\n <div class=\"comment-proportion-item d-flex align-items-center\" v-for=\"(item, index) in scoreData\" :key=\"index\">\n <div class=\"comment-score-tex\">\n {{item.score}} <?= $t('Stars') -?>\n </div>\n <div class=\"comment-proportion-bg\">\n <div class=\"comment-proportion-bg__child\" :style=\"{width: item.pre + '%'}\"></div>\n </div>\n <div class=\"comment-proportion-tex\">{{item.pre}}%</div>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-comment__list-container\" v-if=\"commentList.length\">\n <div class=\"unit-detail-comment__list-item d-flex\" v-for=\"item in commentList\" :key=\"item.id\">\n <div class=\"unit-detail-comment__list-image\">\n <img class=\"img-fuild\" :src=\"item.avatar_url || '/assets/images/product_comment_default.svg'\" alt=\"\">\n </div>\n <div class=\"unit-detail-comment__list-content\">\n <div class=\"unit-detail-comment__list-title text-title\">{{item.nickname ? (item.nickname.slice(0, 2) + '*****') : item.source === 1 ? 'mall buyer' : '--'}}</div>\n <div class=\"unit-detail-comment__list-style d-flex justify-content-between align-items-center mb-10\">\n <div class=\"unit-detail-comment__list-time\">\n <span class=\"text-small time\">{{item.comment_time}}</span>\n <span class=\"text-small\" v-if=\"item.country\">Review in the {{item.country}}</span>\n </div>\n <div class=\"unit-detail-comment__list-specification d-flex align-items-center\">\n <span class=\"text-title specification-attr\" v-show=\"item.product_attr_value\" v-for=\"(itemAttr, indexAttr) in item.attrs\" :key=\"indexAttr\">\n {{itemAttr.params_key}}: {{itemAttr.params_value}}\n </span>\n <div class=\"unit-detail-comment__ratings-box\">\n <span v-for=\"(itemClass, index) in itemClasses(item.score)\" class=\"iconfont star-item\" :class=\"itemClass\"></span>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-comment__list-description text-description\" :class=\"{'mb-20': item.comment_img && item.comment_img.length}\" v-html=\"item.comment\"></div>\n <div class=\"unit-detail-comment__list-imgs row\" v-if=\"item.comment_img && item.comment_img.length\">\n <div class=\"col col-3 col-md-2\" v-for=\"(itemImg, indexImg) in item.comment_img\" :key=\"indexImg\">\n <a :href=\"globalThis.Server.getRinseHref(itemImg.img, window.app.info.site)\" target=\"_blank\"><img :src=\"itemImg.img\" alt=\"\"></a>\n </div>\n </div>\n <div class=\"unit-detail-comment__list-reply\" v-if=\"(item.reply || (!Array.isArray(item.add) && (item.add.comment || item.add.reply)))\">\n <div class=\"unit-detail-comment__list-reply-items d-flex\" v-if=\"item.reply\">\n <div class=\"reply-avatar\">\n <img class=\"img-fuild\" src=\"/assets/images/merchant_default.svg\" alt=\"\">\n </div>\n <div class=\"unit-reply-items__content\">\n <div class=\"d-flex justify-content-between align-items-center mb-10 flex-wrap\">\n <div class=\"unit-reply-items__content-title text-title\"><?= $t('Merchant reply') -?></div>\n <div class=\"text-small time\">{{item.reply_time}}</div>\n </div>\n <div class=\"unit-reply-items__content-description text-description\">{{item.reply}}</div>\n </div>\n </div>\n <div v-if=\"!Array.isArray(item.add)\">\n <div class=\"unit-detail-comment__list-reply-items d-flex\" style=\"margin-bottom: 5px;\" v-if=\"item.add.comment\">\n <div class=\"reply-avatar\">\n <img class=\"img-fuild\" :src=\"item.avatar_url || '/assets/images/product_comment_default.svg'\" alt=\"\">\n </div>\n <div class=\"unit-reply-items__content\">\n <div class=\"d-flex justify-content-between align-items-center mb-10 flex-wrap\">\n <div class=\"unit-reply-items__content-title text-title\">{{item.nickname ? (item.nickname.slice(0, 2) + '*****') : item.source === 1 ? 'mall buyer' : '--'}}</div>\n <div class=\"text-small time\">{{item.add.comment_time}}</div>\n </div>\n <div class=\"unit-reply-items__content-description text-description mb-10\">{{item.add.comment}}</div>\n <div class=\"unit-detail-comment__list-imgs row mb-20\" v-if=\"item.add.comment_img\">\n <div class=\"col col-3 col-md-2\" v-for=\"(itemAddImg, indexAddImg) in item.add.comment_img\" :key=\"indexAddImg\">\n <a :href=\"globalThis.Server.getRinseHref(itemAddImg.img, window.app.info.site)\" target=\"_blank\"><img :src=\"itemAddImg.img\" alt=\"\"></a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-comment__list-reply-items d-flex\" v-if=\"item.add.reply\">\n <div class=\"reply-avatar\">\n <img class=\"img-fuild\" src=\"/assets/images/merchant_default.svg\" alt=\"\">\n </div>\n <div class=\"unit-reply-items__content\">\n <div class=\"d-flex justify-content-between align-items-center mb-10 flex-wrap\">\n <div class=\"unit-reply-items__content-title text-title\">Merchant reply</div>\n <div class=\"text-small time\">{{item.add.reply_time}}</div>\n </div>\n <div class=\"unit-reply-items__content-description text-description\">{{item.add.reply}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-comment__pagination pt-3\" v-if=\"page.page_count>1\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'pagination', config: { attr_id: package.attr_id,type:'vue' } } }) -?>\n </div>\n </template>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-comment-list.js',\n name: 'ScriptDetailCommentList',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/detail-comment-score":"<div class=\"unit-detail-comment-score d-none\">\n <div class=\"unit-detail-comment-score__content\">\n <div class=\"unit-detail-comment-score__icons\">\n <? for (let i = 0; i < 5; i++) { ?>
1\n <span class=\"iconfont icon-base-collection star-item on\"></span>\n <? } ?>\n </div>\n <div class=\"unit-detail-comment-score__scores pl-1\">5.0</div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-comment-score.js',\n name: 'ScriptDetailCommentScore',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/detail-create-time":"<div class=\"unit-detail-create-time\"><?- page.detail_create_time ?></div>","/package/unit/detail-customized":"<div class=\"unit-detail-customized\">\n <div class=\"unit-detail-customized__btn\">\n <span class=\"iconfont icon-base-customized\"></span>\n <div class=\"unit-detail-customized__title text-capitalize\">design customization</div>\n </div>\n <div hidden>\n <div class=\"unit-detail-customized__modal\">\n <div class=\"unit-detail-customized__form\">\n <div class=\"unit-detail-customized__form--text\">\n <div class=\"unit-detail-customized__form--description\">\n Please fill out the form below to request a quote or to request more information about us. Please be sure to upload customized requirement documents or pictures, and we will get back to you as soon as possible with a response. we're ready to start working on your new project, contact us now to get started.\n </div>\n </div>\n <?- include(getViewsPath(`/package/unit/form`), { package }) -?>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-customized.js',\n name: 'ScriptDetailCustomized',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/detail-features-attr":"<? if (page.linkage_attr_list.length ){ ?>\n \n <div class=\"unit-detail-features\">\n <div class=\"unit-detail-features__table table-responsive\">\n <table class=\"table table-bordered text-center\">\n <thead>\n <tr>\n <? page.attr_linkage_title_list.forEach(item => { ?>\n <th><?= item.title ?></th>\n <? }) ?>\n </tr>\n </thead>\n <tbody>\n <? page.linkage_attr_list.forEach(item => { ?>\n <tr>\n <? item.forEach(child => { ?>\n <td><?= child.content ?></td>\n <? }) ?>\n </div>\n <? }) ?>\n </tbody>\n </table>\n </div>\n <? if (page.linkage_attr_list.length === 0 && ctx.query.design) { ?>\n <div class=\"alert alert-light border\" role=\"alert\">\n <? if (ctx.query.design) { ?>\n <?= $t('no style parameters') ?>\n <? } else { ?>\n <?= $t('no data') ?>\n <? } ?>\n </div>\n <? } ?>\n </div>\n<? } ?>\n","/package/unit/detail-how-to-choose-text":"<div class=\"unit-detail-how-to-choose-text\">\n\t<div class=\"unit-title\">\n How to choose Tikorix sofa? \n\t</div>\n <div class=\"unit-subtitle\">\n If you want a sofa that can meet diverse needs and fit your space perfectly, then a versatile modular sofa is your best bet!\n </div>\n <div class=\"unit-page-page_description\">\n <ul>\n <li>First, select an appropriate sofa frame based on the size and layout of your living room.</li>\n <li>Next, opt for a frame with built-in storage drawers or a foldable frame that can easily transform into a bed.</li>\n <li>Then, choose your preferred sofa fabric and color. Whether it's the soft and skin-friendly cotton-linen material or the sleek and easy-to-clean leather.</li>\n <li>Finally, don't forget to pair it with cushions, ottomans, and other accessories to create your own cozy corner. By following these steps, you'll be able to own a sofa that's both practical and aesthetically pleasing, making your living room the warmest space in your home!</li>\n </ul>\n </div>\n</div>\n<style>\n .unit-detail-how-to-choose-text .unit-list__items{margin:0;display: flex;flex-wrap: wrap;margin-left:-15px;margin-right:-15px;}\n .unit-detail-how-to-choose-text .unit-title{font-size: 22px;padding-bottom: 1vw;text-align: center;}\n .unit-detail-how-to-choose-text .base-image__item{\n border-radius: 20px;\n overflow: hidden;\n }\n .unit-detail-how-to-choose-text .unit-list__title .text_ellipsis {\n width: 100%;\n line-height: inherit;\n font-size: inherit;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow-wrap: normal;\n word-break: break-word;\n font-size: 20px ;\n color:#1D2129;\n }\n .unit-detail-how-to-choose-text .unit-subtitle{\n color:#1D2129;\n font-size: 20px; \n margin-bottom:20px;\n }\n .unit-detail-how-to-choose-text .unit-page-page_description {\n color:#4E5969;\n font-size:16px;\n }\n .unit-detail-how-to-choose-text .unit-page-page_description ul li{\n position: relative;\n }\n .unit-detail-how-to-choose-text .unit-page-page_description{\n color: #4E5969;\n font-size: 18px;\n }\n @media (min-width: 768px) {\n .unit-detail-how-to-choose-text .unit-title{font-size: 32px;text-align: left;padding-bottom:6px;}\n .unit-detail-how-to-choose-text .unit-list__title .text_ellipsis{font-size: 26px;}\n .unit-detail-how-to-choose-text .unit-page-page_description {\n color:#4E5969;\n font-size:18px;\n }\n .unit-detail-how-to-choose-text .unit-page-page_description{\n color: #4E5969;\n font-size: 18px;\n }\n }\n @media (min-width: 1200px) {\n .unit-detail-how-to-choose-text .unit-title{font-size: 38px;}\n }\n</style>","/package/unit/detail-how-to-choose":"<div class=\"unit-detail-how-to-choose\">\n\t<div class=\"unit-title\">\n\t\tHow to choose Sofaï¼\n\t</div>\n <div class=\"unit-page-page_description\">\n The heat pads for sale is a good catch in the market. Since launched, the produc\n t has
1won incessant praises for its appearance and high performance.\n We have employed professional designers who are style-conscious always\n keeping updating the design process. It turns out their efforts finally g\n ot paid. In addition, using the first-rate materials and adopting the late\n t advanced technology, the product wins its fame for its durability and high quality.\n When customers search the product online, they would find åæ°ç§æ frequently mentioned.\n We establish the brand identity for our trending products, all-around one-stop service,\n and attention to details. The products we produce are based on customer feedback, acute\n market trend analysis and compliance with the latest standards. They greatly upgrade c\n ustomer experience and attract exposure online. The brand awareness is continuously improved.\n We have professional staff forming an efficient service\n team. After confirming the receipt, customers can enjoy worry-f\n ree services in a fast manner at æçç«ç¹. Our after-sales team reg\n ularly participate in the service training conducted by industry experts.\n The staff usually show great passion and enthusiasm about these activities a\n nd are good at applying theoretical knowledge to practice - serving customers\n . Thanks to them, the goal of being a responsive enterprise has been achieved.\n </div>\n\t<div class=\"unit-list__items\">\n\t\t<div class=\"col-12 col-md-4 col-xl-4\">\n\t\t\t<div class=\"unit-list__a\">\n\t\t\t\t<div class=\"unit-list__item-inner d-flex flex-column\">\n\t\t\t\t\t<a class=\"unit-list__image align-self \" href=\"javascript:;\" target=\"_self\">\n\t\t\t\t\t\t<div class=\"base-image base-image--effect-6 base-image--scale\" style=\"--image-effect:6;--img-ratio:1.00;--img-pt:100%\">\n\t\t\t\t\t\t\t<div class=\"base-image__item base-image__item--default \">\n\t\t\t\t\t\t\t\t<img loading=\"eager\" fetchpriority=\"auto\" class=\"base-image__img img-fluid\"\n\t\t\t\t\t\t\t\talt=\"Sound experience\" from=\"list\" src=\"//img.yfisher.com/1605779669535/png70-t4-width400.webp\"\n\t\t\t\t\t\t\t\tlazy-src=\"https://img.yfisher.com/1605779669535.png\" img-index=\"0\" data-sizes=\"1000\"\n\t\t\t\t\t\t\t\tlazy-type=\"img\" data-lazy=\"2\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t\t<div class=\"unit-list__text\">\n\t\t\t\t\t\t<div class=\"unit-list__text-inner\">\n\t\t\t\t\t\t\t<div class=\"unit-list__content\">\n\t\t\t\t\t\t\t\t<div class=\"unit-list__title\">\n\t\t\t\t\t\t\t\t\t<a class=\"text_ellipsis\" toolbar=\"false\" href=\"javascript:;\"\n\t\t\t\t\t\t\t\t\ttarget=\"_self\" rel=\"\" >\n\t\t\t\t\t\t\t\t\t\tSound experience\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"unit-list__description\" title=\"\">\n\t\t\t\t\t\t\t\t\t<ul>\n <li>Provide a sense of relaxation for your back and allow you to take a comfortable nap</li>\n <li>Durable and comfortable, soft and deep</li>\n <li>Giving a sense of relaxation to the back</li>\n </ul>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<style>\n .unit-detail-how-to-choose .unit-list__items{margin:0;display: flex;flex-wrap: wrap;margin-left:-15px;margin-right:-15px;}\n .unit-detail-how-to-choose .unit-title{font-size: 22px;padding-bottom:1vw;}\n .unit-detail-how-to-choose .base-image__item{\n border-radius: 20px;\n overflow: hidden;\n }\n .unit-detail-how-to-choose .unit-list__title .text_ellipsis {\n width: 100%;\n line-height: inherit;\n font-size: inherit;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow-wrap: normal;\n word-break: break-word;\n font-size: 20px ;\n color:#1D2129;\n }\n .unit-detail-how-to-choose .unit-list__description {\n color:#4E5969;\n font-size:16px;\n }\n .unit-detail-how-to-choose .unit-list__description ul li{\n position: relative;\n padding-left:16px;\n }\n .unit-detail-how-to-choose .unit-list__description ul li::after{\n width:5px;\n height: 5px;\n background: #4E5969;\n border-radius: 50%;\n position: absolute;\n left:5px;\n top:10px;\n content: '';\n }\n .unit-detail-how-to-choose .unit-page-page_description{\n color: #4E5969;\n font-size: 18px;\n margin:32px 0;\n }\n @media (min-width: 768px) {\n .unit-detail-how-to-choose .unit-title{font-size: 32px;padding-bottom:1vw;}\n .unit-detail-how-to-choose .unit-list__title .text_ellipsis{font-size: 26px;}\n .unit-detail-how-to-choose .unit-list__description {\n color:#4E5969;\n font-size:18px;\n }\n .unit-detail-how-to-choose .unit-page-page_description{\n color: #4E5969;\n font-size: 18px;\n margin:48px 0;\n }\n }\n @media (min-width: 1200px) {\n .unit-detail-how-to-choose .unit-title{font-size: 36px;padding-bottom:1vw;}\n }\n</style>\n","/package/unit/detail-html-tabs":"<?\nlet style_type_text = package.config.text?.style_type_text || \"3\"\n-?>\n<div class=\"unit-detail-html-tabs\" data-tabs-num=\"<?- page.detail_description?.length || 0 ?>\">\n <div class=\"unit-detail-html-tabs__nav-box\" text-style=\"<?= style_type_text ?>\">\n <ul class=\"unit-detail-html-tabs__nav nav nav-tabs\" id=\"<?= `${package.attr_id}-tab` ?>\" role=\"tablist\">\n <? page.detail_description.forEach((item, index) => { ?>\n <li class=\"unit-detail-html-tabs__nav-item nav-item\" edit-mode=\"<?= item.detail.length ? item.detail[0]['edit_mode'] : 1 ?>\">\n <a class=\"unit-detail-html-tabs__nav-link nav-link <?= index === 0 ? 'active' : '' ?>\" id=\"<?= `${package.attr_id}-${item.id}-tab` ?>\" data-toggle=\"tab\" href=\"javascript:;\" role=\"tab\" aria-controls=\"<?= `${package.attr_id}-${item.id}` ?>\" aria-selected=\"true\">\n <?= index === 0 ? $t(item.title) : item.title ?>\n </a>\n </li>\n <? }) ?>\n <li class=\"unit-detail-html-tabs__nav-item nav-item unit-detail-html-tabs__nav-review\">\n <a class=\"unit-detail-html-tabs__nav-link nav-link\" id=\"<?= `${package.attr_id}-commentheader-tab` ?>\" data-toggle=\"tab\" href=\"javascript:;\" role=\"tab\" aria-controls=\"<?= `${package.attr_id}-commentheader` ?>\" aria-selected=\"true\">\n <?= $t('Customer Reviews') ?>
1\n <span class=\"comment-quantity\"></span>\n </a>\n </li>\n </ul>\n </div>\n <div class=\"unit-detail-html-tabs__content tab-content\" text-style=\"3\">\n <? page.detail_description.forEach((item, index) => { ?>\n <div class=\"tab-pane fade <?= index === 0 ? 'show active' : '' ?>\" id=\"<?= `${package.attr_id}-${item.id}` ?>\" role=\"tabpanel\" aria-labelledby=\"<?= `${package.attr_id}-${item.id}-tab` ?>\">\n <? if (index === 0) { ?>\n <div class=\"unit-detail-html-tabs__content-attr\">\n <?- include(getViewsPath(`/package/unit/detail-attr`), { package } ) -?>\n </div>\n <div class=\"unit-detail-html-tabs__content-featuresAttr\">\n <?- include(getViewsPath(`/package/unit/detail-features-attr`), { page } ) -?>\n </div>\n <? } ?>\n <div class=\"unit-detail-html-tabs__content-html\">\n <? item.detail.forEach(val => { ?>\n <?- globalThis.Server.getRinseHTML(val.description.replace(/>/g, '>').replace(/</g, '<'), site, 'needLazy|cloudEditor') ?>\n <? }) ?>\n </div>\n </div>\n <? }) ?>\n <div class=\"tab-pane fade\" id=\"<?= `${package.attr_id}-commentcontent` ?>\" role=\"tabpanel\" aria-labelledby=\"<?= `${package.attr_id}-commentcontent-tab` ?>\">\n <div class=\"unit-detail-html-tabs__content-comment-list\">\n <?- include(getViewsPath(`/package/unit/detail-comment-list`), { page, package } ) -?>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-html-tabs.js',\n name: 'ScriptDetailHtmlTab',\n attrId: '<?= package.attr_id ?>',\n selector: \".unit-detail-html-tabs__nav-item\"\n })\n </script>\n</div>","/package/unit/detail-info":"<?\nlet date_config = package.config.date\nlet show_date_type = date_config.show_date_type\n-?>\n<div class=\"unit-detail-info\">\n <div class=\"unit-detail-info__date\">\n <div class=\"unit-detail-info__date-title\"><?= $t('Date') ?></div>\n <span><?- new Date((show_date_type === 1 && page.detail_add_time ? page.detail_add_time : page.detail_renew_time) * 1000).format('yyyy-MM-dd') ?></span>\n </div>\n <? if(page.meta_keywords) { ?>\n <div class=\"unit-detail-info__keywords\">\n <div class=\"unit-detail-info__keywords-title\"><?= $t('Category') ?></div>\n <span><?- page.meta_keywords ?></span>\n </div>\n <? } ?>\n</div>","/package/unit/detail-lastest-product":"<?\n const recommendCategoryList = package.content.data.filter(item => item.tab === 'recommend category')\n const latestProductList = package.content.data.filter(item => item.tab === 'latest products')\n package.content.data = latestProductList\n package.content.tab_list.shift()\n?>\n<div class=\"unit-detail-list\">\n \n <? if( recommendCategoryList && recommendCategoryList.length > 0 ) { ?>\n <div class=\"unit-detail-category\">\n <? recommendCategoryList.forEach(item => { ?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" class=\"unit-detail-category-item\"><?= item.title ?></a>\n <? }) ?>\n </div>\n <? } ?>\n <div class=\"unit-detail-product\">\n <?- include(getViewsPath(`/package/unit/list`), { package }) -?>\n </div>\n</div>","/package/unit/detail-like":"<div class=\"unit-detail-like d-none\" onclick=\"window.app.utilts.setGtag('add_to_wishlist')\">\n <div class=\"unit-detail-like__item\">\n <span class=\"iconfont icon-base-collect\"></span>\n <div class=\"unit-detail-like__text text-capitalize\">\n <?= $t('Like') ?>\n <em class=\"unit-detail-like__num\"></em>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-like.js',\n name: 'ScriptDetailLike',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/detail-logistics":"<div class=\"unit-detail-logistics\">\n <div class=\"unit-detail-logistics__item\">\n <div class=\"unit-detail-logistics__title\">
1\n <span class=\"unit-detail-logistics__freighPrice\"></span>\n </div>\n <div class=\"unit-detail-logistics__freighWap\">\n <span class=\"label pr-2\"><?= $t('Shipped to') ?>:</span>\n <div class=\"unit-detail-logistics__freighWap-btn\">\n <div class=\"unit-detail-logistics__region\"><?= $t('Choose a country') ?></div>\n <span class=\"iconfont icon-action-bottom-lighter detail-logistics-alert\"></span>\n </div>\n </div>\n <div class=\"unit-detail-logistics__arrivalTime\">\n <span class=\"unit-detail-logistics__time\"></span>\n </div>\n <div class=\"unit-detail-logistics__modal\" id=\"unit-detail-logistics-modal-<?= package.attr_id ?>\">\n <div class=\"unit-detail-logistics__form\">\n <div class=\"unit-detail-logistics-form__head\">\n <div class=\"unit-detail-logistics-form__head-title\"><?= $t('Shipping') ?></div>\n <div class=\"unit-detail-logistics__close\">\n <span class=\"iconfont icon-action-close\"></span>\n </div>\n </div>\n <div class=\"unit-detail-logistics-form__body\">\n <div class=\"form-group row unit-detail-logistics__label\">\n <div class=\"col-12 col-md-2\">\n <label for=\"message-text\" class=\"col-form-label\"><?= $t('Shipped to') ?></label>\n </div>\n <div class=\"col-12 col-md-10\">\n <div class=\"form-select\"></div>\n </div>\n </div>\n <div class=\"form-group mb-0 row\">\n <div class=\"col-12 col-md-2 unit-detail-logistics__label\">\n <label for=\"message-text\" class=\"col-form-label\"><?= $t('Shipping Method') ?></label>\n </div>\n <div class=\"col-12 col-md-10 table-responsive\">\n <div class=\"unit-detail-logistics-table-box\">\n <div class=\"unit-detail-logistics-table-content\">\n <table class=\"table table-hover\" style=\"margin-bottom: 0;\">\n <thead>\n <tr>\n <th class=\"first-col\" style=\"border-bottom: none;\"><?= $t('Shipping Company') ?></th>\n <th style=\"border-bottom: none;\"><?= $t('Estimated Delivery Time') ?></th>\n <th style=\"border-bottom: none;\"><?= $t('Shipping Cost') ?></th>\n </tr>\n </thead>\n <tbody class=\"table-tbody-content\"></tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-logistics__modal-warning\">\n <span class=\"iconfont icon-base-error-fill\"></span>\n <?= $t('This Supplier/Shipping Company does not deliver to your selected Country/Region.') ?>\n </div>\n </div>\n <div class=\"unit-detail-logistics__model-buttons\">\n <button class=\"btn base-button__inner unit-detail-logistics__model-btn\" btn-type=\"ok\"><?= $t('ok') ?></button>\n <button class=\"btn base-button__inner unit-detail-logistics__model-close-btn\" btn-type=\"cancel\"><?= $t('Cancel') ?></button>\n </div>\n </div>\n </div>\n </div>\n <link rel=\"stylesheet\" href=\"/assets/plugins/country.css\">\n <script>\n window.scriptQueue.push({\n file: \"/assets/js/unit/detail-logistics.js\",\n name: \"ScriptDetailLogistics\",\n attrId: \"<?= package.attr_id ?>\",\n price_method: \"<?= page.shipment_method ?>\",\n });\n </script>\n</div>\n","/package/unit/detail-might-like":"<?\n const recommendCategoryList = package.content.data.filter(item => item.tab === 'recommend category')\n const youMightLikeList = package.content.data.filter(item => item.tab === 'you might like')\n package.content.data = youMightLikeList\n package.content.tab_list.shift()\n?>\n<? if (package.content.data && package.content.data.length > 0) { ?>\n <? if (recommendCategoryList.length > 0) { ?>\n <div class=\"animate unit-detail-might-like\">\n \n <div class=\"unit-detail-might-like__header\">\n <div class=\"unit-detail-might-like__header--title text-uppercase\"><?= $t('you might like') ?></div>\n <? if(package.config&&(package.config.show_more??1)){ -?>\n <? if( recommendCategoryList.length > 0 ) { ?>\n <div class=\"unit-detail-might-like__header--column\">\n <? recommendCategoryList.forEach(item => { ?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" class=\"unit-detail-might-like__header--column-item\"><?= item.title ?></a>\n <? }) ?>\n </div>\n <? } ?>\n <? } ?>\n </div>\n <div class=\"unit-detail-might-like__container\">\n <?- include(getViewsPath(`/package/unit/list`), { package }) -?>\n </div>\n </div>\n <? } ?>\n<? } ?>
1","/package/unit/detail-order-quantity":"\n<div class=\"unit-detail-order-quantity d-none\">\n <div class=\"unit-detail-order-quantity__item\">\n <i class=\"iconfont icon-base-order unit-detail-order-quantity__iconfont\"></i>\n <span class=\"text-capitalize\"><?= $t('order') ?></span>\n <div class=\"unit-detail-order-quantity__num\">(0)</div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-order-quantity.js',\n name: 'ScriptOrderQuantity',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/detail-pattern":"<div class=\"unit-detail-pattern\"></div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-pattern.js',\n name: 'ScriptDetailPattern',\n attrId: '<?= package.attr_id ?>',\n })\n</script>","/package/unit/detail-payment":"\n<div class=\"unit-detail-payment d-none\">\n <div class=\"unit-detail-payment__items\">\n <span class=\"text-capitalize\"><?= $t('payments') ?>:</span>\n <div class=\"unit-detail-payment__item\"></div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-payment.js',\n name: 'ScriptDetailPayment',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/detail-price":"<div class=\"unit-detail-price\">\n <div class=\"unit-detail-price__wholesale d-none\">\n <div class=\"unit-detail-price__wholesale--items row\">\n </div>\n </div>\n <div class=\"unit-detail-price__items\">\n <div class=\"unit-detail-price__box-time row\">\n <div class=\"unit-detail-price--prices col-md-12 col-xl-6 col-12\">\n <span class=\"unit-detail-price--prices_sell\">\n <i class=\"unit-detail-price--prices_sell--i d-none\">$</i>\n <span class=\"unit-detail-price--prices_sell-price\">\n <span class=\"unit-detail-price--prices_sell-price_original d-none\">\n <span class=\"unit-detail-price--price_sell-price_original--min\">\n </span>\n <span class=\"unit-detail-price--price_sell-price_original--max\">\n </span>\n </span>\n <span class=\"unit-detail-price--prices_sell-price_new\"></span>\n </span>\n </span>\n <span class=\"unit-detail-price--prices_cost\">\n <span class=\"unit-detail-price--prices_cost-price\">\n <span class=\"unit-detail-price--prices_cost-price_original d-none\">\n <span class=\"unit-detail-price--price_cost-price_original--min\">\n </span>\n <span class=\"unit-detail-price--price_cost-price_original--max\">\n </span>\n </span>\n <span class=\"unit-detail-price--prices_cost-price_new\"></span>\n </span>\n </span>\n <span class=\"unit-detail-price--prices__off d-none\">\n <span class=\"unit-detail-price--prices_icon iconfont icon-2c-coupon\"></span>\n <span class=\"unit-detail-price--prices_dis\">0% OFF</span>\n </span>\n </div>\n <div class=\"unit-detail-price--date col-md-12 col-xl-6 col-12 d-none\">\n <div class=\"discount-timer\">\n <div class=\"discount-timer__title text-truncate\"></div>\n <div class=\"discount-timer__date-content\">\n <div class=\"discount-timer__date-wrap discount-timer__date-wrap--day\">\n <div class=\"discount-timer__date discount-timer__date--dd\"><em>00</em><i>d</i></div>\n </div>\n <div class=\"discount-timer__date-wrap discount-timer__date-wrap--time\">\n <div class=\"discount-timer__date discount-timer__date--hh\"><em>00</em><i>:</i></div>\n <div class=\"discount-timer__date discount-timer__date--mm\"><em>00</em><i>:</i></div>\n <div class=\"discount-timer__date discount-timer__date--ss\"><em>00</em></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-price__reduce d-none\">\n <i class=\"iconfont icon-2c-coupon\"></i>
1\n <span class=\"unit-detail-price__reduce--span text-truncate\"></span>\n <a href=\"javascript:;\" class=\"unit-detail-price__reduce--a\">\n <?= $t('Shop now') -?> >\n </a>\n </div>\n <div class=\"unit-detail-price_box--list d-none\">\n <div class=\"unit-detail-price--title\">\n <?= $t('Discount') -?>:\n </div>\n <div class=\"unit-detail-price--discount-list\">\n </div>\n <div class=\"unit-detail-price--detail d-none\">\n <?= $t('Details') -?> <i class=\"unit-detail-price--detail_icon iconfont icon-action-bottom-lighter\"></i>\n </div>\n </div>\n </div>\n <div hidden>\n <div class=\"unit-detail-price__model\">\n <div class=\"unit-detail-price__model_content\">\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-price.js',\n name: 'ScriptDetailPrice',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/detail-profile":"<? if(page.detail_profile && page.detail_profile.length > 0){ ?>\n <div class=\"unit-detail-profile\"><?- globalThis.Server.getRinseHTML(page.detail_profile, site, 'needLazy') ?></div>\n<? } ?>","/package/unit/detail-quantity":"<div class=\"unit-detail-quantity\">\n <div class=\"unit-detail-quantity__item\">\n <div class=\"unit-detail-quantity__label text-capitalize\">\n <?= $t('quantity') ?>:\n </div>\n <div class=\"unit-detail-quantity__value\">\n <div class=\"unit-detail-quantity__num\">\n <div class=\"unit-detail-quantity__min\">\n <span class=\"minus\">\n <i class=\"iconfont icon-action-minus\"></i>\n </span>\n <input type=\"number\" value=\"1\" class=\"unit-detail-quantity__input\">\n <span class=\"increase\">\n <i class=\"iconfont icon-action-plus\"></i>\n </span>\n </div>\n </div>\n <div class=\"unit-detail-quantity__stock d-none\">\n <span class=\"unit-detail-quantity__stock--num\"></span>\n <span class=\"unit-detail-quantity__stock--available d-none\">\n <?= $t('pieces available') -?>\n </span>\n <span class=\"unit-detail-quantity__stock--out d-none\">\n <?= $t('sold out') -?>\n </span>\n </div>\n </div>\n </div>\n <div class=\"unit-detail-quantity__item unit-detail-quantity__moq d-none\">\n <div class=\"unit-detail-quantity__label text-capitalize\">\n <?= $t('MOQ') ?>:\n </div>\n <div class=\"unit-detail-quantity__value\">
1\n <span class=\"unit-detail-quantity__moq-num\">200</span> Piece\n </div>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-quantity.js',\n name: 'ScriptDetailQuantity',\n attrId: '<?= package.attr_id ?>'\n })\n</script>","/package/unit/detail-shipment-time":"<div class=\"unit-detail-shipment-time d-none\">\n <span> <?= $t('Shipment within') ?> <span class=\"unit-detail-shipment-time__num\">1</span> <?= $t('hours after placing the order') ?> </span>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-shipment-time.js',\n name: 'ScriptDetailShipmentTime',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/detail-show-time":"<?\nlet date_config = package.config.date\nlet show_date_type = date_config.show_date_type\n-?>\n<div class=\"unit-detail-show-time follow-font-family\" text-style=\"3\">\n <?- new Date((show_date_type === 1 && page.detail_add_time ? page.detail_add_time : page.detail_renew_time) * 1000).format('yyyy-MM-dd') ?>\n</div>","/package/unit/detail-size-chart":"<? if(page.chart_img.length) { ?>\n <div class=\"detail-size-chart\">\n <div class=\"detail-size-chart__image\">\n <img lazy-src=\"<?= page.chart_img[0].attach ?>\" alt=\"\">\n </div>\n </div>\n<? } else if (ctx.query.design) { ?>\n <div class=\"alert alert-light border\" role=\"alert\">\n 请å¨åå°äº§å--产å管ç--æ·»å /ç¼è¾äº§å管ç\n </div>\n<? } ?>","/package/unit/detail-title":"<? \n let style_type_text = package.config.text ? (package.config.text.style_type_text || '2') : '2'\n?>\n\n<div class=\"unit-detail-title\" text-style=\"<?= style_type_text ?>\">\n <h1 class=\"nostyle d-block\"><?- page.detail_title ?></h1>\n</div>","/package/unit/detail-tradeinfo":"<? if (page.tradeInfo_list.length) { ?>\n <div class=\"unit-detail-tradeinfo\">\n <div class=\"unit-detail-tradeinfo__items\">\n <? page.tradeInfo_list.forEach(item => { ?>\n <div class=\"unit-detail-tradeinfo__item\">\n <div class=\"unit-detail-tradeinfo__label\"><?- item.label ?>:</div>\n <div class=\"unit-detail-tradeinfo__value\">\n <? if (item.input_type === 1) { ?>\n <?= item.value -?>\n <? } else { ?>\n <?- item.value ?>\n <? } ?>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n<? } else if (ctx.query.design) { ?>\n <div class=\"alert alert-light border\" role=\"alert\">\n 请å¨åå°äº§å--产å管ç--产ååæ°æ·»å --产å管ç--æ·»å /ç¼è¾ç®¡ç产ååæ°\n </div>\n<? } ?>\n","/package/unit/detail-video":"<?\n let video_config = package.config.video\n video_config.default_src = page.detail_thumb || ''\n video_config.videoscale = video_config?.videoscale || ''\n video_config.scale = '0.5625'\n video_config.thumb_alt = page.thumb_alt || page.detail_title || ''\n // video_config.aspectRatio = 1 // ä½¿ç¨ aspect-ratio\n-?>\n<? if (page.detail_thumb && page.detail_video_url) { ?>\n <div class=\"unit-detail-video\">\n <div class=\"unit-detail-video__close\">Ã</div>\n <?-\n include(getViewsPath(`/layout/base`), {\n package: {\n type: 'video',\n config: { img: video_config.default_src, cover_url: page.detail_video_url, config: video_config }\n }\n })\n -?>\n\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-video.js',\n name: 'ScriptDetailVideo',\n attrId: '<?= package.attr_id ?>',\n videoUrl: '<?= page.detail_video_url ?>',\n config: '<?= encodeURIComponent(JSON.stringify(video_config)) ?>'\n })\n </script>\n </div>\n <? } ?>\n","/package/unit/detail-wholesale":"<div class=\"unit-detail-wholesale d-none\">\n\t<div class=\"unit-detail-wholesale__items\">\n\t\t<div class=\"unit-detail-wholesale__item-header\">\n\t\t\t<div class=\"unit-detail-wholesale--number bold\"><?= $t('quantity') ?></div>\n\t\t\t<div class=\"unit-detail-wholesale--discont bold\"><?= $t('Discount') ?></div>\n\t\t\t<div class=\"unit-detail-wholesale--price bold\"><?= $t('price') ?></div>\n\t\t</div>\n\t\t<div class=\"unit-detail-wholesale__item-content\">\n\t\t</div>\n\t</div>\n\t<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/detail-wholesale.js',\n name: 'ScriptDetailWholesale',\n attrId: '<?= package.attr_id ?>',\n })\n </script>\n</div>","/package/unit/dev-history":"<? \n let { show_img,show_title,show_subtitle,show_description,style_type_title,style_type_subtitle,style_type_description,style_type_year,hide_pc,hide_ipad,hide_phone, layout_xl, layout_md, layout_default, mr_default, mr_md, mr_xl } = package.config.dev_history\n let tab_list = package.content.data\n let image_config = package.config.image\n let swiper_config = package.config.swiper\n let { is_swiper,autoplay,navigation,loop } = swiper_config\n let { cols_col,cols_md,cols_xl } = package\n\n show_title = show_title % 10\n show_subtitle = show_subtitle % 10\n show_description = show_description % 10\n show_img = show_img % 10\n\n-?>\n\n<div class=\"devswiper\">\n <div style=\"--mr_xl:<?= mr_xl ?>;\" class=\"swiper-wrapper dev_cols_xl_<?= cols_xl ?> dev_cols_md_<?= cols_md ?> dev_cols_col_<?= cols_col ?> layout_xl_<?= layout_xl ?> layout_md_<?= layout_md ?> layout_default_<?= layout_default ?> layout_md_<?= layout_md ?> layout_sm_<?= layout_default ?>\">\n <? tab_list.forEach((item, index)=>{-?>\n <a href=\"<?= item.target==='block'?'javascript:;':item.href ?>\" target=\"<?= item.target==='block'?'_self':item.target ?>\" class=\"swiper-slide flex\">\n <? if (show_img) { -?>\n <div class=\"dev-img\" display-style=\"<?= show_img ?>\">
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config, close_lazy:'1' } } }) -?>\n </div>\n <? } -?>\n <div class=\"dev-info\">\n <? if (show_title) { -?>\n <div class=\"dev-main-title\" text-style=\"<?= style_type_title ?>\" display-style=\"<?= show_title ?>\">\n <span class=\"text_ellipsis\">\n <?- item.title ?>\n </span>\n </div>\n <? } -?>\n <? if (show_subtitle) { -?>\n <div class=\"dev-sub-title\" text-style=\"<?= style_type_subtitle ?>\" display-style=\"<?= show_subtitle ?>\"><span class=\"text_ellipsis\"><?- item.subtitle ?></span></div>\n <? } -?>\n <? if (show_description) { -?>\n <div class=\"dev-desc\" text-style=\"<?= style_type_description ?>\" display-style=\"<?= show_description ?>\"><span class=\"text_ellipsis\"><?= item.description ?></span></div>\n <? } -?>\n </div>\n </a>\n <? }) ?>\n </div>\n\n\n <? if (navigation&&is_swiper) { -?>\n <div class=\"unit-list__button-prev swiper-button-prev prev\"></div>\n <div class=\"unit-list__button-next swiper-button-next next\"></div>\n <? } -?>\n</div>\n\n\n\n<div class=\"swiper-wrapper-year <?= hide_pc?'hide_pc':'' ?> <?= hide_ipad?'hide_ipad':'' ?> <?= hide_phone?'hide_phone':'' ?>\">\n <? tab_list.forEach((item, index)=>{-?>\n <div class=\"flex-year <?= index?'flex1':'on' ?>\">\n <? if (index) { -?>\n <div class=\"flex1 line\"></div>\n <? } -?>\n\n <div class=\"flex-col\">
1\n <span text-style=\"<?= style_type_year ?>\">\n <?- item.year || ' ' ?>\n </span>\n <div class=\"doc2\"></div>\n </div>\n\n </div>\n <? }) ?>\n</div>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/dev-history.js',\n name: 'ScriptDevHistory',\n is_swiper: '<?= is_swiper ?>',\n loop:'<?= loop ?>',\n delay: '<?= autoplay ?>',\n attrId: '<?= package.attr_id ?>',\n mr_sm: '<?= mr_default ?>',\n mr_md: '<?= mr_md ?>',\n mr_xl: '<?= mr_xl ?>',\n cols_md: '<?= cols_md ?>',\n cols_col: '<?= cols_col ?>',\n cols_xl: '<?= cols_xl ?>',\n })\n</script>","/package/unit/dev-history2":"<? \n let { show_img,show_title,show_subtitle,show_description,style_type_title,style_type_subtitle,style_type_description,style_type_year,show_year_underline,show_year,year_post_xl,year_post_md,year_post_default,hide_pc,hide_ipad,hide_phone,show_line,tip_vertical,tip_has_circle,show_more_count_xl,show_more_count_md,show_more_count_default,show_more_text,readmore_vertical_xl,readmore_vertical_md,readmore_vertical_default,symbol,typesetting,icon_color_xl,icon_color_md,icon_color_default,active_color,mode,gt_layout,gt_layout_xl,gt_layout_md,show_btn,line_color_xl,line_color_md,line_color_default,circle_color_xl,circle_color_md,circle_color_default,has_year,has_nofollow,btn_hide_pc,btn_hide_ipad,btn_hide_phone,active_bd_color } = package.config.dev_history2\n let tab_list = package.content.data\n let image_config = package.config.image\n let { cols_col,cols_md,cols_xl } = package\n show_title = show_title % 10\n show_subtitle = show_subtitle % 10\n show_description = show_description % 10\n show_year = show_year % 10\n show_year_underline = show_year_underline % 10\n show_img = show_img % 10\n <!-- show_btn = show_btn % 10 -->\n\n let dh2_config = package.config.dev_history2\n let isDetailContent = package.content.type === 'detail'\n-?>\n\n<div\n class=\"dh2-flex-col readmore-xl-<?= readmore_vertical_xl ?> readmore-md-<?= readmore_vertical_md ?> readmore-sm-<?= readmore_vertical_default ?>\">\n <div\n style=\"--icon_color_xl:<?= icon_color_xl ?>;--icon_color_md:<?= icon_color_md ?>;--icon_color_sm:<?= icon_color_default ?>;--active_color:<?= active_color ?>;--active_bd_color:<?= active_bd_color ?>;--line_color_xl:<?= line_color_xl ?>;--line_color_md:<?= line_color_md ?>;--line_color_sm:<?= line_color_default ?>;--circle_color_xl:<?= circle_color_xl ?>;--circle_color_md:<?= circle_color_md ?>;--circle_color_sm:<?= circle_color_default ?>\"\n class=\"dev-history2 typesetting<?= typesetting ?> year_post_xl_<?= year_post_xl ?> year_post_md_<?= year_post_md ?> year_post_default_<?= year_post_default ?> <?= show_line?'':'hide-node' ?> <?= hide_pc?'hide-line-xl':'' ?> <?= hide_ipad?'hide-line-md':'' ?> <?= hide_phone?'hide-line-sm':'' ?> <?= tip_has_circle?'':'block-circle' ?>\">\n <? if (show_year) { -?>\n <div class=\"dh2-year pl-el typesetting<?= typesetting ?>\" text-style=\"<?= style_type_year ?>\"\n display-style=\"<?= show_year ?>\">\n <? tab_list.forEach((item, index)=>{-?>
1\n <span class=\"<?= index<show_more_count_xl?'':'hide-xl' ?> <?= index<show_more_count_md?'':'hide-md' ?> <?= index<show_more_count_default?'':'hide-sm' ?>\"><?- item.year ?></span>\n <? }) ?>\n </div>\n <? } -?>\n <div class=\"dh2-verline\"></div>\n <div class=\"dh2-content gt_layout<?= gt_layout ?> gt_layout_xl<?= gt_layout_xl ?> gt_layout_md<?= gt_layout_md ?>\">\n <? tab_list.forEach((item, index)=>{-?>\n <div\n class=\"dh2-item <?= index<show_more_count_xl?'':'hide-xl' ?> <?= index<show_more_count_md?'':'hide-md' ?> <?= index<show_more_count_default?'':'hide-sm' ?>\">\n <div class=\"dh2-item-tip <?= tip_vertical ?>\">\n <? if (show_year) { -?>\n <div class=\"dh2-year dh2-mode1\" text-style=\"<?= style_type_year ?>\" display-style=\"<?= show_year ?>\">\n <span class=\"<?= show_year_underline?'underline':'' ?>\"><?- item.year ?></span>\n </div>\n <? } -?>\n <? if (symbol === 'â') { -?>\n <span class=\"dh2-symbol is-doc\"></span>\n <? } -?>\n <? if (symbol !== 'â') { -?>\n <span class=\"dh2-symbol\"><?- symbol === '123'?index+1:symbol ?></span>\n <? } -?>\n </div>\n <div class=\"dh2-item-info\">\n <? if (show_year) { -?>\n <div class=\"dh2-year dh2-mode2\" text-style=\"<?= style_type_year ?>\" display-style=\"<?= show_year ?>\">\n <span class=\"<?= show_year_underline?'underline':'' ?>\"><?- item.year ?></span>\n </div>\n <? } -?>\n <? if (show_img) { -?>\n <a href=\"<?= item.target==='block'?'javascript:;':item.href ?>\" target=\"<?= item.target==='block'?'_self':item.target ?>\" rel title=\"<?= item.caption ?>\" class=\"dev2-img\"\n display-style=\"<?= show_img ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config } } }) -?>\n </a>\n <? } -?>\n <div class=\"dh2-item-text\">\n <? if (show_year) { -?>\n <div class=\"dh2-year dh2-mode3\" text-style=\"<?= style_type_year ?>\" display-style=\"<?= show_year ?>\">\n <span class=\"<?= show_year_underline?'underline':'' ?>\"><?- item.year ?></span>\n </div>\n <? } -?>\n <? if (show_title) { -?>\n <a href=\"<?= item.target==='block'?'javascript:;':item.href ?>\" target=\"<?= item.target==='block'?'_self':item.target ?>\" rel title=\"<?= item.caption ?>\" class=\"dh2-title\"\n text-style=\"<?= style_type_title ?>\" display-style=\"<?= show_title ?>\">\n <span class=\"text_ellipsis\" title=\"<?= item.caption ?>\">\n <?= item.title ?>\n </span>\n </a>\n <? } -?>\n <? if (show_subtitle) { -?>\n <div class=\"dh2-subtitle\" text-style=\"<?= style_type_subtitle ?>\" display-style=\"<?= show_subtitle ?>\">\n <span class=\"text_ellipsis\"><?- item.subtitle ?></span>\n </div>\n <? } -?>\n <? if (show_description) { -?>\n <div class=\"dh2-description\" text-style=\"<?= style_type_description ?>\"\n display-style=\"<?= show_description ?>\"><span class=\"text_ellipsis\"><?- item.description ?></span></div>\n <? } -?>\n\n <div\n class=\"dh2-btn <?= btn_hide_pc?'hide-xl':'' ?> <?= btn_hide_ipad?'hide-md':'' ?> <?= btn_hide_phone?'hide-sm':'' ?>\"\n button-style=\"<?= dh2_config.style_type_button ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, description: dh2_config.button_text || $t('read more'), isDetailContent: isDetailContent, has_nofollow: has_nofollow, target: dh2_config.target || item.target || '_self' } } }) -?>\n </div>\n\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n <div\n class=\"dh2-show-more theme-mode<?= mode ?> <?= tab_list.length>show_more_count_xl?'':'hide-xl' ?> <?= tab_list.length>show_more_count_md?'':'hide-md' ?> <?= tab_list.length>show_more_count_default?'':'hide-sm' ?>\"\n text-style=\"3\">\n <span>\n <?= show_more_text ?>\n </span>\n <i class=\"iconfont icon-action-bottom-lighter\"></i>\n </div>\n</div>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/dev-history2.js',\n name: 'ScriptDevHistory2',\n attrId: '<?= package.attr_id ?>'\n })\n</script>
1","/package/unit/dev-history3":"<? \n let { show_img,show_title,show_subtitle,show_description,style_type_title,style_type_subtitle,style_type_description,style_type_year,show_year_underline,show_year,year_post_xl,year_post_md,year_post_default,hide_pc,hide_ipad,hide_phone,show_line,tip_vertical,tip_has_circle,show_more_count_xl,show_more_count_md,show_more_count_default,show_more_text,readmore_vertical_xl,readmore_vertical_md,readmore_vertical_default,symbol,typesetting,icon_color_xl,icon_color_md,icon_color_default,active_color,mode,gt_layout_xl,show_btn,line_color_xl,line_color_md,line_color_default,circle_color_xl,circle_color_md,circle_color_default,closetoline,has_nofollow,shadow_color,active_bg,btn_hide_pc,btn_hide_ipad,btn_hide_phone,active_bd_color } = package.config.dev_history3\n let { style_type_button } = package.config.button\n let tab_list = package.content.data\n let image_config = package.config.image\n let { cols_col,cols_md,cols_xl } = package\n show_title = show_title % 10\n show_subtitle = show_subtitle % 10\n show_description = show_description % 10\n show_year = show_year % 10\n show_year_underline = show_year_underline % 10\n show_img = show_img % 10\n <!-- show_btn = show_btn % 10 -->\n\n let dh3_config = package.config.dev_history3\n let isDetailContent = package.content.type === 'detail'\n let bg_sm = package.style['.dh3-item-info']['default']['background-color'] || 'white'\n let bg_md = package.style['.dh3-item-info']['md']['background-color'] || bg_sm\n let bg_xl = package.style['.dh3-item-info']['xl']['background-color'] || bg_sm\n-?>\n<?-\n `<style>\n @media (min-width:768px) and (max-width:1199px) {\n #${package.attr_id} .dh3-item-info::before{\n background-color:${bg_md};\n }\n }\n @media (min-width:1200px) {\n #${package.attr_id} .dh3-item-info::before{\n background-color:${bg_xl};\n }\n }\n </style>`\n?>\n<div\n class=\"dh3-flex-col readmore-xl-<?= readmore_vertical_xl ?> readmore-md-<?= readmore_vertical_md ?> readmore-sm-<?= readmore_vertical_default ?>\">\n <div\n style=\"--icon_color_xl:<?= icon_color_xl ?>;--icon_color_md:<?= icon_color_md ?>;--icon_color_sm:<?= icon_color_default ?>;--active_color:<?= active_color ?>;--shadow_color:<?= shadow_color ?>;--active_bg:<?= active_bg ?>;--line_color_xl:<?= line_color_xl ?>;--line_color_md:<?= line_color_md ?>;--line_color_sm:<?= line_color_default ?>;--circle_color_xl:<?= circle_color_xl ?>;--circle_color_md:<?= circle_color_md ?>;--circle_color_sm:<?= circle_color_default ?>;--active_bd_color:<?= active_bd_color ?>;\"\n class=\"dev-history3 typesetting<?= typesetting ?> year_post_xl_<?= year_post_xl ?> year_post_md_<?= year_post_md ?> year_post_default_<?= year_post_default ?> <?= show_line?'':'hide-line' ?> <?= tip_has_circle?'':'block-circle' ?>\">\n <div class=\"dh3-verline <?= hide_pc?'hide-xl':'' ?> <?= hide_ipad?'hide-md':'' ?> <?= hide_phone?'hide-sm':'' ?>\">\n </div>\n <div class=\"dh3-content gt_layout<?= gt_layout_xl ?> <?= closetoline?'closetoline':'' ?>\">\n <? tab_list.forEach((item, index)=>{-?>\n <div class=\"rlt w100 <?= index<show_more_count_xl?'':'hide-xl' ?> <?= index<show_more_count_md?'':'hide-md' ?> <?= index<show_more_count_default?'':'hide-sm' ?> <?= \n [1,2].includes(typesetting) &&(index%2===1?'row-reverse':'align-end') ?> <?= \n [4,5].includes(typesetting) &&(index%2===0?'row-reverse':'align-end') ?> <?= \n typesetting ===3?'align-end':'' ?> <?= typesetting ===6?'row-reverse':'' ?>\">\n <div class=\"dh3-item-side\">\n <? if (show_year) { -?>\n <div class=\"dh3-year dh3-mode5\" text-style=\"<?= style_type_year ?>\" display-style=\"<?= show_year ?>\">\n <span class=\"<?= show_year_underline?'underline':'' ?>\"\"><?- item.year ?></span>\n </div>\n <? } -?>\n <a href=\"<?= item.target==='block'?'javascript:;':item.href ?>\" target=\"<?= item.target==='block'?'_self':item.target ?>\" rel title=\"<?= item.caption ?>\" class=\"ofhidden w100 dh3-img\" display-style=\"<?= show_img ?>\">\n <? if (![2,5].includes(typesetting) && show_img) { -?>
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config } } }) -?>\n <? } -?>\n </a>\n <? if (show_year) { -?>\n <div class=\"dh3-year dh3-mode1\" text-style=\"<?= style_type_year ?>\" display-style=\"<?= show_year ?>\">\n <span class=\"<?= show_year_underline?'underline':'' ?>\"\"><?- item.year ?></span>\n </div>\n <? } -?>\n </div>\n <div class=\"dh3-item \">\n <div class=\"dh3-item-tip <?= tip_vertical ?>\">\n <? if (symbol === 'â') { -?>\n <span class=\"dh3-symbol is-doc\"></span>\n <? } -?>\n <? if (symbol !== 'â') { -?>\n <span class=\"dh3-symbol\"><?- symbol === '123'?index+1:symbol ?></span>\n <? } -?>\n </div>\n <div class=\"dh3-item-info\">\n\n <div class=\"dev3-img <?= [2,5].includes(typesetting)?'':'show-sm' ?> <?= show_img&&[2,5].includes(typesetting)&&[1,2].includes(gt_layout_xl)?'has-image':'' ?>\">\n <? if (show_year) { -?>\n <div class=\"dh3-year dh3-mode4\"\n text-style=\"<?= style_type_year ?>\" display-style=\"<?= show_year ?>\">\n <span class=\"<?= show_year_underline?'underline':'' ?>\"\"><?- item.year ?></span>\n </div>\n <? } -?>\n <? if (show_img) { -?>\n <a href=\"<?= item.target==='block'?'javascript:;':item.href ?>\" target=\"<?= item.target==='block'?'_self':item.target ?>\" rel title=\"<?= item.caption ?>\" class=\"w100 dh3-img\" display-style=\"<?= show_img ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config } } }) -?>\n </a>\n <? } -?>\n <? if (show_year) { -?>\n <div class=\"dh3-year dh3-mode2\"\n text-style=\"<?= style_type_year ?>\" display-style=\"<?= show_year ?>\">\n <span class=\"<?= show_year_underline?'underline':'' ?>\"\"><?- item.year ?></span>\n </div>\n <? } -?>\n </div>\n\n <div class=\"dh3-item-text\">\n <? if (show_year) { -?>\n <div class=\"dh3-year dh3-mode3\"\n text-style=\"<?= style_type_year ?>\" display-style=\"<?= show_year ?>\">\n <span class=\"<?= show_year_underline?'underline':'' ?>\"\"><?- item.year ?></span>\n </div>\n <? } -?>\n <? if (show_title) { -?>\n <a href=\"<?= item.target==='block'?'javascript:;':item.href ?>\" target=\"<?= item.target==='block'?'_self':item.target ?>\" rel title=\"<?= item.caption ?>\" class=\"dh3-title\" text-style=\"<?= style_type_title ?>\" display-style=\"<?= show_title ?>\">\n <span class=\"text_ellipsis\">\n <?= item.title ?>\n </span>\n </a>\n <? } -?>\n <? if (show_subtitle) { -?>\n <div class=\"dh3-subtitle\" text-style=\"<?= style_type_subtitle ?>\" display-style=\"<?= show_subtitle ?>\">\n <span class=\"text_ellipsis\">\n <?- item.subtitle ?>\n </span>\n </div>\n <? } -?>\n <? if (show_description) { -?>\n <div class=\"dh3-description\" text-style=\"<?= style_type_description ?>\" display-style=\"<?= show_description ?>\"><span class=\"text_ellipsis\"><?- item.description ?></span></div>\n <? } -?>\n\n\n <div class=\"dh3-btn <?= btn_hide_pc?'hide-xl':'' ?> <?= btn_hide_ipad?'hide-md':'' ?> <?= btn_hide_phone?'hide-sm':'' ?>\" button-style=\"<?= dh3_config.style_type_button ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, description: dh3_config.button_text || $t('read more'), isDetailContent: isDetailContent, has_nofollow: has_nofollow, target: dh3_config.target || item.target || '_self' } } }) -?>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n <? }) ?>\n </div>\n </div>\n <div\n class=\"dh3-show-more theme-mode<?= mode ?> <?= tab_list.length>show_more_count_xl?'':'hide-xl' ?> <?= tab_list.length>show_more_count_md?'':'hide-md' ?> <?= tab_list.length>show_more_count_default?'':'hide-sm' ?>\" text-style=\"3\">\n <span>\n <?= show_more_text ?>\n </span>\n <i class=\"iconfont icon-action-bottom-lighter\"></i>\n </div>\n</div>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/dev-history3.js',\n name: 'ScriptDevHistory3',\n attrId: '<?= package.attr_id ?>'\n })\n</script>
1","/package/unit/download-list":"<?\n let list_config = package.config.list\n let image_config = package.config.image\n let swiper_config = package.config.swiper\n list_config.swiper = package.config.swiper\n if (swiper_config && swiper_config.effect === 'cube') image_config.instant_load = 1\n let show_img = list_config.show_img % 10\n let show_title = list_config.show_title % 10\n let show_subtitle = list_config.show_subtitle % 10\n let show_description = list_config.show_description % 10\n let has_title = list_config.has_title === undefined ? show_title : list_config.has_title\n let has_subtitle = list_config.has_subtitle === undefined ? show_subtitle : list_config.has_subtitle\n let has_description = list_config.has_description === undefined ? show_description : list_config.has_description\n let show_read_more = list_config.show_read_more\n let has_nofollow = list_config.has_nofollow\n let show_download_more = list_config.show_download_more\n let is_swiper = swiper_config && swiper_config.is_swiper\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n let swiper_html = ''\n let tab_list = package.content.tab_list || []\n let isDetailContent = package.content.type === 'detail'\n swiper_config.itemClassName = 'unit-download-list__item'\n swiper_config.itemsClassName = 'unit-download-list__items'\n if (is_swiper) swiper_html = `id=swiper-${package.attr_id} carousel=${JSON.stringify(swiper_config)}`\n const formatNum = (num) => (num + '').replace(/\\d{1,3}(?=(\\d{3})+$)/g, '$&,');\n let colInfo = { cols_col:cols_col, cols_md:cols_md, cols_xl:cols_xl }\n let page_category_id = package.content.relate_list[0] || page.page_category_id || 0\n let pageInfo = {page_size:page.page_size, page_number:page.page_number, page_count:page.page_count, page_total:page.total, page_category_id}\n let from = 'download_list'\n const listData = package.content.data\n <!-- éèå¤ä¾§è¾¹æ¡ ---------------------------------------- -->\n const wrapperSelector = '.unit-download-list__items'\n const borderSelector = '.unit-download-list__item-inner'\n // 表ålabel\n const label_style = site.style[\":root\"][\"default\"][\"--style_type_label\"]\n\n // ä¸æé¡¹èæ¯é¢è²\n let selectbg_sm = package.style['.dl-select .base-select-input']?.['default']?.['background-color'] || '#fff'\n let selectbg_md = package.style['.dl-select .base-select-input']?.['md']?.['background-color'] || selectbg_sm\n let selectbg_xl = package.style['.dl-select .base-select-input']?.['xl']?.['background-color'] || selectbg_sm\n\n // 䏿项åä½é¢è²\n let selectcolor_sm = package.style['.base-select-input']?.['default']?.['color'] || 'unset'\n let selectcolor_md = package.style['.base-select-input']?.['md']?.['color'] || selectcolor_sm\n let selectcolor_xl = package.style['.base-select-input']?.['xl']?.['color'] || selectcolor_sm\n\n // ä¸æé¡¹èæ¯hoveré¢è²\n let selecthoverbg_sm = package.style['.base-select-input:hover li']?.['default']?.['background-color'] || 'var(--main-color)'\n let selecthoverbg_md = package.style['.base-select-input:hover li']?.['md']?.['background-color'] || selecthoverbg_sm\n let selecthoverbg_xl = package.style['.base-select-input:hover li']?.['xl']?.['background-color'] || selecthoverbg_sm\n\n // 䏿项åä½hoveré¢è²\n let selecthovercolor_sm = package.style['.base-select-input:hover li']?.['default']?.['color'] || 'unset'\n let selecthovercolor_md = package.style['.base-select-input:hover li']?.['md']?.['color'] || selecthovercolor_sm\n let selecthovercolor_xl = package.style['.base-select-input:hover li']?.['xl']?.['color'] || selecthovercolor_sm\n-?>\n\n<?-\n `<style>\n .${package.attr_id}.dl-more-list{\n background-color:${selectbg_sm};\n color:${selectcolor_sm};\n }\n #${package.attr_id} .base-select-arrow{\n color:${selectcolor_sm};\n }\n .${package.attr_id} li:hover{\n background-color:${selecthoverbg_sm};\n color:${selecthovercolor_sm};\n }\n @media (min-width:768px) and (max-width:1199px) {\n .${package.attr_id}.dl-more-list{\n background-color:${selectbg_md};\n color:${selectcolor_md};\n }\n #${package.attr_id} .base-select-arrow{\n color:${selectcolor_md};\n }\n .${package.attr_id} li:hover{\n background-color:${selecthoverbg_md};\n color:${selecthovercolor_md};\n }\n }\n @media (min-width:1200px) {\n .${package.attr_id}.dl-more-list{\n background-color:${selectbg_xl};\n color:${selectcolor_xl};\n }\n #${package.attr_id} .base-select-arrow{\n color:${selectcolor_xl};\n }\n .${package.attr_id} li:hover{\n background-color:${selecthoverbg_xl};\n color:${selecthovercolor_xl};\n }\n }\n </style>`\n?>
1\n\n<div\n class=\"unit-download-list <?= is_swiper ? 'is-swiper' : '' ?>\"\n <? if (is_swiper && swiper_config.navigation) {-?>\n navigation-position=\"<?= swiper_config.navigation_position ?>\"\n navigation-position-md=\"<?= swiper_config.navigation_position_md ?>\"\n navigation-position-xl=\"<?= swiper_config.navigation_position_xl ?>\"\n <? } ?>\n <?= swiper_html ?>\n>\n <?-\n `<style>\n ${globalThis.Server.getHideOuterBorderStyle(package, wrapperSelector, borderSelector)}\n </style>`\n ?>\n <? if (listData.length > 0) { -?>\n <div class=\"swiper-container\">\n <div class=\"unit-download-list__items swiper-wrapper <?= is_swiper ? '' : 'row' ?> <?= is_swiper && !swiper_config.pagination ? 'no-swiper-pagination' : '' ?>\">\n <? listData.forEach(item => { -?>\n <!-- <div animate class=\"animate unit-download-list__item swiper-slide <?= !item.img ? 'no-image' : '' ?> <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?> <?= item.file_list.length>1 ? 'file-list' : '' ?>\"> -->\n <div animate class=\"animate unit-download-list__item swiper-slide <?= !item.img ? 'no-image' : '' ?> <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?> <?= item.file_list.length>1 ? 'file-list' : '' ?>\" <?= item.file_list?.length ? `file-data=${encodeURIComponent(JSON.stringify({\n file_list: item.file_list, \n is_limit: item.is_limit, \n content_id: item.content_id \n }))}` \n : '' ?>>\n <div class=\"unit-download-list__item-inner d-flex\" <?= package.getLazyListBGString('.unit-download-list__item-inner') ?>>\n <? if (show_img) { -?>\n <a class=\"unit-download-list__image unit-download-list__a\" href=\"<?- item.is_limit ? 'javascript:;' : globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" <?= item.is_limit ? 'file-inquiry=1' : '' ?> content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config, from: from, isDynamic: !isDetailContent } } }) -?>\n </a> \n <? } -?>\n <div class=\"unit-download-list__text\">\n <div class=\"unit-download-list__text-inner\">\n <div class=\"unit-download-list__content\">\n <? if (has_title && show_title) { -?>\n <div class=\"unit-download-list__title\" text-style=\"<?= list_config.style_type_title ?>\" <? if (show_title > 1) { -?>display-style=\"<?= show_title ?>\"<? } -?>>\n <a class=\"text_ellipsis\" href=\"<?- item.is_limit ? 'javascript:;' : globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" <?= item.is_limit ? 'file-inquiry=1' : '' ?> content-id=\"<?= item.content_id -?>\" title=\"<?= item.title ?>\"><?- item.title ?></a>\n </div>\n <? } -?>\n <? if (has_subtitle && show_subtitle) { -?>\n <div class=\"unit-download-list__subtitle\" text-style=\"<?= list_config.style_type_subtitle ?>
1\" <? if (show_subtitle > 1) { -?>display-style=\"<?= show_subtitle ?>\"<? } -?>>\n <div class=\"text_ellipsis\"><?- item.subtitle ?></div>\n </div>\n <? } -?>\n <? if (has_description && show_description) { -?>\n <? const filterHtml = globalThis.Server.removeHtmlTags(`${item?.description || ''}`) -?>\n <div class=\"unit-download-list__description\" text-style=\"<?= list_config.style_type_description ?>\" <? if (show_description > 1) { -?>display-style=\"<?= show_description ?>\"<? } -?>>\n <div class=\"text_ellipsis\"><?- package.use_html ? item?.description : filterHtml ?></div>\n </div>\n <? } -?>\n </div>\n \n <div class=\"select-flex\">\n <? if (show_read_more) { -?>\n <div class=\"read_more\" button-style=\"<?= list_config.style_type_button ?>\" <? if (show_read_more > 1) { -?>display-style=\"<?= show_read_more ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, icon: 'icon-download', description: list_config.button_text || $t('Download'), isDetailContent: false, has_nofollow: has_nofollow, href_attr: (item.is_limit ? 'file-inquiry=1' : '') + ' content-id=\"' + item.content_id + '\"' + (item.is_product_file ? ' download-switch=\"' + item.is_limit + '\"' : '') } } }) -?>\n </div>\n <? } -?>\n <? if (item.file_list.length>1 && show_download_more) { -?>\n <div class=\"dl-select\"></div>\n <? } -?>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n <? }) -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.pagination) { -?>\n <div class=\"unit-download-list__pagination swiper-pagination\"></div>\n <? } -?>\n <? if (swiper_config.navigation) { -?>\n <div class=\"unit-download-list__button-prev swiper-button-prev\"></div>\n <div class=\"unit-download-list__button-next swiper-button-next\"></div>\n <? } -?>\n <? if (swiper_config.scrollbar) { -?>\n <div class=\"unit-download-list__scrollbar swiper-scrollbar\"></div>\n <? } -?>\n <? } -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.navigation && [swiper_config.navigation_position, swiper_config.navigation_position_md, swiper_config.navigation_position_xl].includes('outside')) { -?>\n <div class=\"unit-download-list__button-prev swiper-button-prev swiper-button-prev--outside\"></div>\n <div class=\"unit-download-list__button-next swiper-button-next swiper-button-next--outside\"></div>\n <? } -?>\n <? } -?>\n <? } else { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n</div>\n<div class=\"page_no_data d-none\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/download-list.js',\n name: 'ScriptDownloadList',\n attrId: '<?= package.attr_id ?>',\n content_type: '<?= package.content.type ?>',\n pageInfo: '<?= JSON.stringify(pageInfo) ?>',\n config: '<?= JSON.stringify(list_config) ?>',\n colInfo: '<?= JSON.stringify(colInfo) ?>',\n label_style: '<?= label_style ?>',\n show_download_more: '<?= show_download_more ?>',\n })\n</script>\n","/package/unit/download-text-search":"<?\n let config = package.config.search\n let style = config.style_type_search\n?>\n<div class=\"unit-attr-text-search download-text-search\" search-style=\"<?= style ?>\">\n\t<div class=\"unit-attr-text-search__items\">\n\t\t<div class=\"input-group\">\n\n\t\t\t<input class=\"form-control download-search\">\n\t\t\t<span class=\"iconfont icon-action-search-lighter btnSearch\"></span>\n\t\t</div>\n\t</div>\n</div>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/download-text-search.js',\n\t\tname: 'ScriptDownloadTextSearch',\n\t\tattrId: '<?= package.attr_id ?>'\n\t})\n</script>
1","/package/unit/faq-detail-desc":"<div class=\"faq-detail-desc\" text-style=\"3\"><?- globalThis.Server.getRinseHTML(page.detail_description[0]['detail'][0]['description'].replace(/>/g, '>').replace(/</g, '<'), site, 'needLazy') ?></div>","/package/unit/faq-detail-head":"<?\n let style_type_text = package.config.text ? (package.config.text.style_type_text || '2') : '2'\n?>\n<div class=\"unit-faq-detail-head\">\n <div class=\"unit-faq-detail-head__title\" text-style=\"<?= style_type_text ?>\"><h1 class=\"nostyle\"><?= page.detail_title ?></h1></div>\n</div>","/package/unit/faq-detail-time":"<div class=\"unit-faq-detail-time d-flex\" text-style=\"3\">\n <div style=\"display: flex;align-items: center;\">\n <span class=\"mr-2 d-flex\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M17.7087 9.99951C17.7086 5.74246 14.2568 2.2915 9.99976 2.2915C5.74282 2.29168 2.29192 5.74257 2.29175 9.99951C2.29175 14.2566 5.74271 17.7083 9.99976 17.7085C14.257 17.7085 17.7087 14.2567 17.7087 9.99951ZM18.9587 9.99951C18.9587 14.9471 14.9473 18.9585 9.99976 18.9585C5.05235 18.9583 1.04175 14.947 1.04175 9.99951C1.04192 5.05222 5.05246 1.04168 9.99976 1.0415C14.9472 1.0415 18.9586 5.05211 18.9587 9.99951Z\" />\n <path d=\"M9.37915 5C9.37918 4.65482 9.65897 4.37497 10.0042 4.375C10.3491 4.37526 10.6292 4.65499 10.6292 5L10.6282 9.74414L13.9778 13.0947C14.2219 13.3388 14.2219 13.7344 13.9778 13.9785C13.7337 14.2225 13.338 14.2226 13.094 13.9785L9.56079 10.4453C9.44387 10.3282 9.37824 10.1694 9.37817 10.0039L9.37915 5Z\" />\n </svg>\n </span>\n <span><?- new Date(page.detail_add_time * 1000).format('yyyy-MM-dd') ?></span>\n </div>\n </div>","/package/unit/faq-messages":"<?\n const chatUrl = new URL(process.env.AI_FAQ)\n const greeting = (site.knowledge_config?.website_hc_message || '').replace(/[`]/g, \"\\\\`\")\n const search = {\n site_id: site.site_id,\n greeting: encodeURIComponent(greeting)\n }\n chatUrl.search = Object.keys(search).map(k => `${k}=${search[k]}`).join('&')\n const iframe_url = chatUrl.href\n?>\n<div id=\"widgetAiFaq\" class=\"unit-faq-messages\" style=\"max-width: 100%; height: 100%;\">\n <iframe id=\"widget_ai_faq_iframe\" src=\"\" title=\"FAQ Messages\" name=\"faq_messages\" style=\"padding: 0;margin: 0;border: 0;width: 100%;height: 100%\"></iframe>\n</div>\n\n<script>\n ;(function () {\n window.scriptQueue.push({\n file: '/assets/js/widget/ai-faq.js',\n name: 'WidgetAiFaq',\n attrId: 'widgetAiFaq',\n greeting: `<?=greeting?>`,\n assistant_avatar: \"<?=site.logo_url || ''?>\",\n iframe_url: \"<?-iframe_url?>\"\n })\n })();\n</script>\n","/package/unit/faq-text-search":"<?\n let config = package.config.search\n let style = config.style_type_search\n let pageInfo = {page_size:page.page_size, page_number:page.page_number, page_count:page.page_count, page_total:page.total}\n\n?>\n<div class=\"unit-faq-text-search\">\n <?-\n `<style>\n ${globalThis.Server.syncStyle(package, [\n ['.faq-text-search-input-group', 'color', '', '--text-color'],\n ], (...arg)=>globalThis.Server.transformColor(...arg) || '102,102,102')} //ç©ºçæ¶å设置é»è®¤å¼\n </style>`\n ?>\n\t<div class=\"unit-faq-text-search__items <?= `col-${package.cols_col} col-md-${package.cols_md} col-xl-${package.cols_xl}` ?>\">\n <div class=\"faq-text-search-input-group\">\n <input class=\"faq-text-input\" placeholder=\"<?= $t('What can we help you with') + '?' ?>\">\n <i class=\"iconfont icon-action-search-lighter faq-text-input-btnSearch\"></i>\n <i class=\"iconfont icon-action-close-2 faq-text-search-close\"></i>\n </div>\n </div>\n</div>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/faq-text-search.js',\n\t\tname: 'ScriptFaqTextSearch',\n\t\tattrId: '<?= package.attr_id ?>',\n pageInfo: '<?= encodeURIComponent(JSON.stringify(pageInfo)) ?>',\n\t})\n</script>
1","/package/unit/faq":"<?\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n\n let has_nofollow = package.config.has_nofollow\n\tlet { show_title_default,show_description_default,show_serial_default,show_symbol_default,show_title_md,show_description_md,show_serial_md,show_symbol_md,show_title_xl,show_description_xl,show_serial_xl,show_symbol_xl } = package.config.faq\n let pageInfo = {page_size:page.page_size, page_number:page.page_number, page_count:page.page_count, page_total:page.total}\n // åå¹¶è¾¹æ¡ ----------------------------------------\n const wrapperSelector = '.faq-module'\n const itemSelector = '.faq-out'\n const borderSelector = '.faq-row'\n\t// åæ°æ å°\n const colsMap = {\n \"12\": 1,\n \"6\": 2,\n \"4\": 3,\n \"3\": 4,\n \"2_4\": 5,\n \"2\": 6,\n \"12_7\": 7,\n \"12_8\": 8,\n \"12_9\": 9,\n \"12_10\": 10,\n \"12_11\": 11,\n \"1\": 12\n };\n const baseStyle = {\n [itemSelector]: {\n default: {\n 'padding-bottom': '25px',\n },\n md: {\n 'padding-bottom': '25px',\n },\n xl: {\n 'padding-bottom': '25px',\n },\n }\n }\n\n let show_more = false\n <!-- let show_more = !is_swiper && list_config.show_number && data.length > list_config.show_number -->\n const checkShowMore = (dataLen) => {\n show_more = !is_swiper && list_config.show_number && dataLen > list_config.show_number\n }\n const openType = package.config.faq.faq_open_type\n -?>\n<?-\n `<style>\n ${globalThis.Server.getMergeBorderStyle(package, wrapperSelector, itemSelector, borderSelector, baseStyle, (style, screen) => {\n return style\n }\n )}\n </style>`\n?>\n\n<div class=\"faq-page\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n\t<div\n\t\tclass=\"faq-module\">\n\t\t<? package.content.data.forEach((item,subIndex) => { -?>\n\t\t\t<? let dataLen = show_more ? show_number : package.content.data.length -?>\n\t\t\t<? if(item.title || item.description){ -?>\n\t\t\t<div class=\"faq-item faq-out <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?>\">\n\t\t\t<? if(openType && package.content.type !== 'detail'){ -?>\n\t\t\t\t<a target=\"<?= !item.href || page.page_type === 'faq_detail' ? '_self' : '_blank' ?>\" href=\"<?= !item.href ? 'javascript:;' : globalThis.Server.getRinseHref(item.href, site) ?>\">\n <? } -?>\n <div class=\"faq-row \">\n <div class=\"faq-title faq-content-color <?= show_serial_default?'':'hide-serial-sm' ?> <?= show_serial_md?'':'hide-serial-md' ?> <?= show_serial_xl?'':'hide-serial-xl' ?>\" text-style=\"<?= package.config.list.style_type_title ?>\">\n <div class=\"faq-index faq-title-color \"><?= item.seq || (subIndex + 1) ?></div>\n <div class=\"faq-title-block faq-title-color <?= show_title_default?'':'hide-title-sm' ?> <?= show_title_md?'':'hide-title-md' ?> <?= show_title_xl?'':'hide-title-xl' ?>\"><?- item.title -?></div>\n <span class=\"faq-icon faq-content-color iconfont icon-action-plus <?= show_symbol_default?'':'hide-symbol-sm' ?> <?= show_symbol_md?'':'hide-symbol-md' ?> <?= show_symbol_xl?'':'hide-symbol-xl' ?>\"></span>\n </div>\n <div class=\"faq-content faq-content-color <?= show_description_default?'':'hide-description-sm' ?> <?= show_description_md?'':'hide-description-md' ?> <?= show_description_xl?'':'hide-description-xl' ?>\" text-style=\"<?= package.config.list.style_type_description ?>\" _html=\"<?= item.description_sign ?>\" tinymce><?- item.description -?></div>\n </div>\n\t\t\t<? if(openType && package.content.type !== 'detail'){ -?>\n\t\t\t\t</a>\n <? } -?>\n\t\t\t</div>\n\t\t\t<? } -?>\n\t\t<? }) -?>\n\t</div>\n\t<div class=\"unit-comment__nodata <?= package.content.data.length ? 'd-none': '' -?>\">\n\t <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n\t</div>\n\n\t<script>\n\t window.scriptQueue.push({\n file: '/assets/js/unit/faq.js?v=1',\n name: 'ScriptFaq',\n attrId: '<?= package.attr_id ?>',\n foldMethod: '<?= package.config.faq.fold_method ?>',\n collapseSettings: '<?= package.config.faq.collapse_settings ?>',\n faqOpenType: '<?= package.config.faq.faq_open_type ?>',\n pageInfo: '<?= encodeURIComponent(JSON.stringify(pageInfo)) ?>',\n colInfo: '<?= encodeURIComponent(JSON.stringify({ cols_col, cols_md, cols_xl })) ?>',\n config: '<?= encodeURIComponent(JSON.stringify(package.config)) ?>',\n content_type: '<?= package.content.type ?>',\n\t })\n\t</script>\n\n</div>\n","/package/unit/findpwd":"<div class=\"unit-findpwd\">\n <form method=\"post\" class=\"needs-validation\" id=\"<?= `findpwd-${package.attr_id}` ?>\" findpwd novalidate>\n <!-- ç¬¬ä¸æ¥ è¾å
¥é®ç®± -->\n <div class=\"form-row unit-findpwd__step-1\">\n <div class=\"unit-findpwd-title\">\n <?= $t('Forgot your password') ?>?\n </div>\n <div class=\"unit-findpwd-description\">\n <?= $t('Letâs fix that. Provide us with the email address you use to login in,and we will send you a verification code to reset your password.') ?>\n </div>\n <div class=\"unit-findpwd__item form-group col-12\">\n <label class=\"unit-form__item-inner\">\n <i class=\"iconfont icon-base-user-2\"></i>\n <input class=\"unit-login__control form-control unit-findpwd__email\" type=\"email\" name=\"email\"\n placeholder=\"<?= $t('e-mail') ?>\" required\n pattern=\"[a-zA-Z0-9_\\-]+(\\.[a-zA-Z0-9_\\-]+)*@[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*(\\.[a-zA-Z]{2,})$\" />\n </label>\n </div>\n <div class=\"unit-findpwd__item form-group col-12\">\n <div class=\"unit-findpwd__submit-wrap d-flex\">\n <button class=\"unit-findpwd__submit btn btn-main col-12\" type=\"submit\">\n <?= $t('Continue') ?>\n </button>\n </div>\n </div>\n </div>\n <!-- ç¬¬äºæ¥ é®ä»¶åéå¡«åéªè¯ç -->\n <div class=\"form-row unit-findpwd__step-2\">\n <div class=\"unit-findpwd-title\">\n <?= $t('Forgot your password') ?>?\n </div>\n <div class=\"unit-findpwd-description\">\n <?= $t('We just sent you an email, please check the email and use the verification code to reset your password.') ?>\n </div>\n <div>\n <?= $t('Verification code sent to the mailbox') ?>:<span class=\"unit-findpwd__email-site\"></span>\n </div>\n <div class=\"unit-login__item form-group col-12 unit-findpwd__email-group\">\n <label class=\"unit-form__item-inner\">\n <i class=\"iconfont icon-base-code\"></i>\n <input class=\"unit-login__control form-control unit-findpwd__code\" type=\"text\" name=\"code\"\n placeholder=\"<?= $t('Enter confirmation code') ?>\" required minlength=4 />\n </label>\n </div>\n <div class=\"unit-findpwd__step-2-error d-none\">\n <?= $t('The verification code has expired') ?>
1,\n <span class=\"unit-findpwd__code-submit\">\n <?= $t('Retrieve verification code') ?>\n </span>\n </div>\n <div class=\"unit-findpwd__item form-group col-12 unit-findpwd__group-continue\">\n <div class=\"unit-findpwd__submit-wrap d-flex \">\n <button class=\"unit-findpwd__submit btn btn-main col-12\" type=\"submit\">\n <?= $t('Continue') ?>\n </button>\n </div>\n </div>\n <div class=\"unit-findpwd__step-2-reminder\">\n <span class=\"unit-findpwd__step-2-reminder_link\">\n <?= $t('Did not receive the verification code') ?>?\n </span>\n </div>\n </div>\n <!-- ç¬¬ä¸æ¥ éç½®å¯ç 页 -->\n <div class=\"form-row unit-findpwd__step-3\">\n <div class=\"unit-findpwd-title\">\n <?= $t('Set your new password') ?>!\n </div>\n <div class=\"unit-login__item form-group col-12 \">\n <label class=\"unit-form__item-inner\">\n <i class=\"iconfont icon-base-key\"></i>\n <input class=\"unit-login__control form-control unit-findpwd__password\" type=\"password\" name=\"password\"\n placeholder=\"<?= $t('Please enter your password') ?>\" required minlength=6 maxlength=\"20\" />\n </label>\n </div>\n <div class=\"unit-login__item form-group col-12 unit-findpwd__group-password2\">\n <label class=\"unit-form__item-inner\">\n <i class=\"iconfont icon-base-look\"></i>\n <input class=\"unit-login__control form-control unit-findpwd__password2\" type=\"password\" name=\"password2\"\n placeholder=\"<?= $t('Please confirm your new password') ?>\" required minlength=6 maxlength=\"20\" />\n </label>\n </div>\n <div class=\"unit-findpwd__item form-group col-12\">\n <div class=\"unit-findpwd__submit-wrap d-flex\">\n <button class=\"unit-findpwd__submit btn btn-main col-125\" type=\"submit\">\n <?= $t('Reset Your Password') ?>\n </button>\n </div>\n </div>\n </div>\n </form>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/findpwd.js',\n name: 'ScriptFindpwd',\n attrId: '<?= package.attr_id ?>',\n params: {}\n })\n </script>\n</div>","/package/unit/form":"<?\n let formConfig = package.config.form\n let first = {cols_col: 12, cols_md: 12, cols_xl: 12}\n if (package.config.form.use_common) {\n formConfig = site.unit_config.form\n first = package.config.form.list[0] || first\n }else if(package?.button_inquiry&&package?.config?.form?.use_common==0&&site?.site_inquiry?.product_status==0){\n formConfig = site.unit_config.form\n first = package.config.form.list[0] || first\n }\n\n const label_style = site.style?.[\":root\"]?.[\"default\"]?.[\"--style_type_label\"] || ''\n\n const buttonConfig = package.config.button\n if (package.sign) buttonConfig.style_type_button = package.config.button.style_type_button || package.config.form.style_type_form\n else buttonConfig.style_type_button = package.config.form.style_type_form\n\n let description = ''\n if (formConfig.content === 'subscription') description = $t('subscription')\n let contentConfig = package.config.content || {}\n contentConfig.required = typeof contentConfig.required !== 'undefined' ? contentConfig.required : true\n contentConfig.minLength = contentConfig.minLength || formConfig.minLength\n\n /**\n * 䏿\n * @type {{title, option_items}} formItem\n * @type {number} index\n */\n function createFormElementSelect(formItem, index) {\n const required = formItem.required ? 'required=\"required\"' : '';\n const defaultOption = formItem.option_items.find(option => option.is_default)\n const defaultValue = defaultOption?.text || ''\n const value = defaultValue ? `value=\"${defaultValue}\"` : ''\n return `\n <input type=\"text\" name=\"form_${index}\" data-title=\"${formItem.title}\" placeholder=\"${formItem.placeholder || formItem.title}\" ${value} readonly=\"readonly\" ${required} class=\"unit-form__control form-control dropdown-toggle\"/>\n <ul class=\"unit-form__select-options dropdown-menu\">\n ${formItem.option_items.reduce((prev, option) =>
1 {\n const selected = option.is_default ? 'selected' : ''\n return `${prev} <li class=\"unit-form__select-option dropdown-item\" title=\"${option.text}\">${globalThis.Server.escapeHtml(option.text)}</li>`\n }, '')}\n </ul>\n <div class=\"invalid-feedback\">${ $t('Please select') }</div>\n `;\n }\n\n /**\n * 䏿å¤é\n * @type {{title, option_items}} formItem\n * @type {number} index\n */\n function createFormElementMoreSelect(formItem, index) {\n const required = formItem.required ? 'required=\"required\"' : '';\n const defaultOption = formItem.option_items.find(option => option.is_default)\n const defaultValue = defaultOption?.text || ''\n const value = defaultValue ? `value=\"${defaultValue}\"` : ''\n return `\n <input type=\"text\" name=\"form_${index}\" data-title=\"${formItem.title}\" placeholder=\"${formItem.placeholder || formItem.title}\" ${value} readonly=\"readonly\" ${required} class=\"unit-form__control form-control dropdown-toggle multi_select__control\"/>\n <div class=\"multi_select__tags-wrap\">\n <div class=\"multi_select__tags\"></div>\n <div class=\"multi_select__tags multi_select__tags-rest d-none\">\n <div class=\"multi_select__tag\">\n <div class=\"multi_select__tag-inner\">\n <span class=\"multi_select__tag-text\"></span>\n </div>\n </div>\n </div>\n </div>\n <ul class=\"unit-form__select-options dropdown-menu\">\n ${formItem.option_items.reduce((prev, option) => {\n const selected = option.is_default ? 'selected' : ''\n return `${prev} <li class=\"unit-form__select-option dropdown-item multi_select\" title=\"${option.text}\"> <input type=\"checkbox\"/> ${globalThis.Server.escapeHtml(option.text)} </li>`\n }, '')}\n </ul>\n <div class=\"invalid-feedback\">${ $t('Please select') }</div>\n `;\n }\n /**\n * checkbox list\n * @type {{title, option_items}} formItem\n * @type {number} index\n */\n function createFormElementCheckboxList(formItem, index) {\n const required = formItem.required ? 'required' : '';\n const option_items_cols_col = formItem.option_items_cols_col || 12\n const option_items_cols_md = formItem.option_items_cols_md || 6\n const option_items_cols_xl = formItem.option_items_cols_xl || 4\n const colDefault = `col-${option_items_cols_col}`\n const colMd = `col-md-${option_items_cols_md}`\n const colXl = `col-xl-${option_items_cols_xl}`\n const cols = `${colDefault} ${colMd} ${colXl}`\n const widthImgClass = formItem.option_items_use_image ? 'checkbox-use-img' : ''\n formItem.option_items.map(option => {\n option._text = globalThis.Server.escapeHtml(option.text)\n if (formItem.option_items_use_image === 1) {\n option.value = globalThis.Server.escapeHtml(JSON.stringify({title: option.text, url: option.image}))\n } else {\n option.value = option._text\n }\n })\n const custom_config_type = formItem.option_items_use_image ? 'multi_image' : 'text'\n const custom_config = globalThis.Server.escapeHtml(JSON.stringify({define_type: custom_config_type}))\n let checkboxList = ''\n if ( formItem.style_type === 2) {\n checkboxList = formItem.option_items.reduce((prev, option) => `${prev} <div class=\"unit-form__checkbox ${cols}\">\n <div class=\"unit-form__checkbox-inner\">\n <div class=\"unit-form__checkbox-input-box\">\n <label class=\"custom-checkbox\">\n <input data-value-type=\"multi_image\" name=\"form_${index}\" data-title=\"${formItem.title}\" placeholder=\"${formItem.title}\"=\"${formItem.title}\" type=\"checkbox\" value=\"${option.value}\"/>\n <i class=\"checked iconfont icon-form-validated\"></i>\n </label>\n ${formItem.option_items_use_image === 1 ? createFormElementImage(option) : ''}\n <div class=\"unit-form__checkbox-label\">\n <a class=\"label-content\" href=\"javascript:void(0);\" title=\"${option._text}\">${option._text}</a>\n </div>\n </div>\n </div>\n </div>`, '');\n } else {\n checkboxList = formItem.option_items.reduce((prev, option) => `${prev} <div class=\"unit-form__checkbox ${cols}\">\n <div class=\"unit-form__checkbox-inner\">\n <div class=\"unit-form__checkbox-input-box\">\n <label class=\"custom-checkbox\">\n <input data-value-type=\"multi_image\" name=\"form_${index}\" data-title=\"${formItem.title}\" placeholder=\"${formItem.title}\" type=\"checkbox\" value=\"${option.value}\"/>\n <i class=\"checked iconfont icon-form-validated\"></i>\n </label>\n ${formItem.option_items_use_image === 1 ? createFormElementImage(option) : ''}\n </div>\n <div class=\"unit-form__checkbox-label\">\n <div class=\"label-shrink flex-shrink-0\"></div>\n <a class=\"label-content\" href=\"javascript:void(0);\" title=\"${option._text}\">${option._text}</a>\n </div>\n </div>\n </div>`, '');\n }\n\n return `<div class=\"unit-form__checkbox-list unit-form__control form-control ${widthImgClass}\" checkbox-style=\"${formItem.style_type}\"\n${required} placeholder=\"${formItem.title}\" name=\"form_${index}\" data-title=\"${formItem.title}\" data-multiple_value=true data-custom_config=\"${custom_config}\">\n <div class=\"unit-form__checkbox-list-inner\">${checkboxList}</div>\n</div>\n<div class=\"invalid-feedback\">${ $t('Choose items') }</div>`\n }\n\n/**\n * å¾çå
ç´ \n */\nfunction createFormElementImage(option){\n const image = globalThis.Server.getTransferImgUrl(option.image, {thumbnail: {type: 4, width: 100}})\n return `<img class=\"loading\" onload=\"this.classList.remove('loading')\" onerror=\"this.classList.remove('loading');this.classList.add('img-error');\" alt=\"${option._text}\" title=\"${option._text}\" src=\"${image}\"/>`\n}\n\n?>\n<style>\n\n\n</style>\n<div class=\"unit-form text-capitalize\" form-style=\"<?= package.config.form.style_type_form ?>\" label-style=\"<?= label_style ?>\" form-common=\"<?= package.config.form.use_common ?>\">\n <form method=\"post\" id=\"<?= `inquiry-${package.attr_id}` ?>\" class=\"needs-validation\" inquiry novalidate>\n <div class=\"form-row show\">\n <?\n formConfig.list.forEach((item, index) =>
1 {\n if (item.show) {\n if (['Name', 'Email', 'Phone', 'Address', 'Content'].includes(item.title)) item.title = item.title.toLowerCase()\n ?>\n <div class=\"unit-form__item form-group <?= item.relate_type ?> <?= item.placeholder ? ' has-placeholder' : '' ?> col <?= `col-${item.cols_col || first.cols_col} col-md-${item.cols_md || first.cols_md} col-xl-${item.cols_xl || first.cols_xl}` ?>\">\n <label text-style=\"3\" class=\"unit-form__item-inner follow-font-family_size\n <?- item.type === 'select' ? 'unit-form__select-box dropdown' : '' ?>\n <?- item.type === 'multi_select' ? 'unit-form__select-box dropdown' : '' ?>\n <?- item.type === 'checkbox' ? 'unit-form__checkbox-box' : '' ?>\n <?= formConfig.content === 'socialMedia' ? 'chat-online-unit-form__item-inner':'' -?> \">\n <?\n switch (item.type) {\n case 'input':\n switch (item.relate_type) {\n case 'contacts':\n -?><?-`\n <input class=\"unit-form__control form-control\" type=\"text\" name=\"contacts\" data-title=\"${item.title}\" autocomplete=\"off\" placeholder=\"${item.placeholder || item.title}\" maxlength=\"280\" ${item.required ? 'required' + ' minlength=\"' + item.minLength : '' }\" />\n <div class=\"invalid-feedback\">${ (item.required && item.minLength) ? $t('The input length cannot be less than') + ` ${item.minLength}` : $t('input must not exceed 280 in length')}!</div>\n `-?><?\n break;\n case 'email':\n -?><?-`\n <input class=\"unit-form__control form-control\" pattern=\"[A-Za-z0-9_+\\\\-\\\\.]+@[A-Za-z0-9\\\\-]+\\\\.[A-Za-z0-9\\\\-\\\\.]{2,}\" type=\"email\" name=\"email\" data-title=\"${item.title}\" autocomplete=\"off\" placeholder=\"${item.placeholder || item.title}\" maxlength=\"200\" ${item.required ? 'required' : '' } />\n <div class=\"invalid-feedback\">${ $t('Please enter a valid email address') }!</div>\n `-?><?\n break;\n case 'phone':\n -?><?-`\n <input class=\"unit-form__control form-control phone-input\" type=\"tel\" name=\"phone\" data-title=\"${item.title}\" autocomplete=\"off\" placeholder=\"${item.placeholder || item.title}\" maxlength=\"30\" ${item.required ? 'required' : '' } />\n <div class=\"invalid-feedback\">${ $t('Please enter a valid phone number') }!</div>\n `-?><?\n break;\n case 'company_name':\n -?><?-`\n <input class=\"unit-form__control form-control\" type=\"text\" name=\"company_name\" data-title=\"${item.title}\" autocomplete=\"off\" placeholder=\"${item.placeholder || item.title}\" maxlength=\"280\" ${item.required ? 'required' + ' minlength=\"' + item.minLength : '' }\" />\n <div class=\"invalid-feedback\">${ (item.required && item.minLength) ? $t('The input length cannot be less than') + ` ${item.minLength}` : $t('input must not exceed 280 in length')}!</div>\n `-?><?\n break;\n default:\n -?><?-`\n <input class=\"unit-form__control form-control\" type=\"text\" name=\"form_${index}\" data-title=\"${item.title}\" autocomplete=\"off\" placeholder=\"${item.placeholder || item.title}\" maxlength=\"280\" ${item.required ? 'required' + ' minlength=\"' + item.minLength : '' }\" pattern=\"^.{${item.required ? (item.minLength || 0) : 0},280}$\"/>\n <div class=\"invalid-feedback\">${ (item.required && item.minLength) ? $t('The input length cannot be less than') + ` ${item.minLength}` : $t('input must not exceed 280 in length')}!</div>\n `-?><?\n break;\n }\n break;\n case 'textarea':\n switch (item.relate_type) {\n case 'content':\n -?><?-`\n <textarea class=\"unit-form__control form-control\" rows=\"${item.rows || 5}\" name=\"content\" data-title=\"${item.title}\" placeholder=\"${item.placeholder || item.title}\" maxlength=\"5000\" ${item.required ? 'required' + ' minlength=' + item.minLength : '' }></textarea>\n <div class=\"invalid-feedback\">${ (item.required && item.minLength) ? $t('The input length cannot be less than') + ` ${item.minLength}` : $t('input must not exceed 5000 in length')}!</div>\n `-?><?\n break;\n default:\n -?><?-`\n <textarea class=\"unit-form__control form-control\" rows=\"${item.rows || 5}\" name=\"form_${index}\" data-title=\"${item.title}\" placeholder=\"${item.placeholder || item.title}\" maxlength=\"5000\" ${item.required ? 'required' + ' minlength=' + item.minLength : '' }></textarea>\n <div class=\"invalid-feedback\">${ (item.required && item.minLength) ? $t('The input length cannot be less than') + ` ${item.minLength}` : $t('input must not exceed 5000 in length')}!</div>\n `-?><?\n break;\n }\n break;\n case 'file':\n switch (item.relate_type) {\n default:\n -?><?-`\n <div class=\"unit-form__control form-control unit-form__control--file\">\n <input class=\"unit-form__control form-control form-control-file hidden\" type=\"file\" name=\"file_${index}\" data-title=\"${item.title}\" autocomplete=\"off\" placeholder=\"${item.title}\" ${item.required ? 'required' : '' } multiple />
1\n <span class=\"unit-form__control--font iconfont icon-action-add\"></span>\n <i class=\"unit-form__control--txt\">${item.title}</i>\n </div>\n <div class=\"invalid-feedback file-feedback\">${ $t('File required to be uploaded, Format Supportââtxt, doc, docx, ppt, pptx, xlsx, xls, pdf, jpg, png, bmp, gif, jpeg, rar, zip, Do not upload more than 20Mb or file name maximum 100') }!</div>\n <div class=\"unit-form__file-list\"></div>\n `-?><?\n break;\n }\n break;\n case 'select':\n ?><?-createFormElementSelect(item, index)?><?\n break;\n case 'multi_select':\n ?><?-createFormElementMoreSelect(item, index)?><?\n break;\n case 'checkbox':\n ?><?-createFormElementCheckboxList(item, index)?><?\n break;\n }\n ?>\n <div class=\"unit-form__label col-form-label\"><span class=\"unit-form__label-text\" title=\"<?= $t(item.title) ?>\"><?= $t(item.title) ?></span><span class=\"placeholder\"><?= $t(item.placeholder) ?></span></div>\n </label>\n </div>\n <? } ?>\n <? }) ?>\n\n <? if (formConfig.content === 'inquiry' || ( formConfig.content === 'product-detail-inquiry' && !site.site_inquiry.product_status)) { ?>\n <div text-style=\"3\" class=\"follow-font-family_size unit-form__item form-group col-12 <?=formConfig.content === 'socialMedia'?'chat-online-unit-form__item':''?>\">\n <label class=\"unit-form__item-inner <?=formConfig.content === 'socialMedia'?'chat-online-unit-form__item-inner':''?>\">\n <?-`\n <textarea class=\"unit-form__control form-control\" rows=\"5\" name=\"content\" data-title=\"content\" maxlength=\"65530\" placeholder=\"content\" ${contentConfig.required ? 'required' : '' } minlength=\"${contentConfig.minLength || ''}\"></textarea>\n <div class=\"invalid-feedback\">${ contentConfig.minLength ? $t('The input length cannot be less than') + ` ${contentConfig.minLength}` : $t('textarea must not exceed 65530 in length')}!</div>\n `-?>\n <span class=\"unit-form__label col-form-label\"><?= $t('content') ?></span>\n </label>\n </div>\n <? } ?>\n <div class=\"unit-form__item unit-form__item-submit form-group col follow-font-family\" text-style=\"3\">\n <div class=\"unit-form__submit-wrap\" button-style=\"<?= buttonConfig.style_type_button ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { mode: 'submit', description } } }) -?>\n </div>\n </div>\n </div>\n </form>\n <script src=\"/assets/js/unit/country-calling-codes.js?v=<?= globalThis.Server.version ?>\"></script>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/form.js',\n name: 'ScriptForm',\n attrId: '<?= package.attr_id ?>',\n formType: '<?= formConfig.content ?>'\n })\n </script>\n</div>\n\n","/package/unit/global-search":"<?\n\tlet config = package.config.search\n\tlet style = config.style_type_search\n let sortList = package.config.global_search.sortList || []\n?>\n<div class=\"global-search\" search-style=\"<?= style ?>\">\n <input placeholder=\"Search...\" type=\"text\" class=\"form-control\" />\n <span class=\"iconfont icon-action-search-lighter btnSearch\"></span>\n</div>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/global-search.js',\n name: 'ScriptGlobalSearch',\n attrId: '<?= package.attr_id ?>',\n sortList: '<?- JSON.stringify(sortList) ?>'\n })\n</script>","/package/unit/graph":"<?\n let graph_config = package.config.graph\n let image_config = package.config.image\n let has_nofollow = package.config.graph.has_nofollow || 0\n let isDetailContent = package.content.type === 'detail'\n if (image_config) {\n image_config.current_hide_phone = package.current_hide_phone || 0\n image_config.sequence = package.sequence || []\n }\n let show_img = graph_config.show_img % 10\n let show_title = graph_config.show_title % 10\n let show_subtitle = graph_config.show_subtitle % 10\n let show_read_more = graph_config.show_read_more\n?>
1\n<div class=\"unit-graph\">\n <? package.content.data.forEach(item => { -?>\n <? if (show_img) { -?>\n <div <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config } } }) -?>\n </div>\n <? } -?>\n <div class=\"unit-graph__text\">\n <? if (show_title) { -?>\n <div class=\"unit-graph__title\" text-style=\"<?= graph_config.style_type_title ?>\" <? if (show_title > 1) { -?>display-style=\"<?= show_title ?>\"<? } -?> <?- graph_config.title_animate ? 'content-animate=\"' + graph_config.title_animate + '\"' : '' ?>>\n <? if (item.target !== 'anchor') { -?>\n <a class=\"text_ellipsis\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= graph_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" title=\"<?= item.caption || '' ?>\">\n <? } else { -?>\n <a class=\"text_ellipsis\" href=\"#<?= item.href ?>\" anchor-href=\"#<?= item.href ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" title=\"<?= item.caption || '' ?>\">\n <? } -?>\n <?- item.title ?>\n </a>\n </div>\n <? } -?>\n <? if (show_subtitle) { -?>\n <div class=\"unit-graph__subtitle\" text-style=\"<?= graph_config.style_type_subtitle ?>
1\" <? if (show_subtitle > 1) { -?>display-style=\"<?= show_subtitle ?>\"<? } -?>><div class=\"text_ellipsis\"><?- item.subtitle ?></div></div>\n <? } -?>\n <? if (show_read_more) { -?>\n <div class=\"read_more\" button-style=\"<?= graph_config.style_type_button ?>\" <? if (show_read_more > 1) { -?>display-style=\"<?= show_read_more ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, description: $t('read more'), has_nofollow: has_nofollow } } }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n</div>\n\n","/package/unit/header-cart":"<div class=\"unit-header-cart\" <?=site.site_type===1 ? \"hide\" : \"\" ?> header-cart>\n <? if(site.site_type !== 1) { -?>\n <a href=\"<?= globalThis.Server.getRinseHref('/cart.html', site) ?>\" onclick=\"window.app.utilts.setGtag('go_to_cart')\">\n <span class=\"iconfont icon-base-cart-lighter\"></span>\n <!-- <span class=\"unit-header-title\"><?= $t('cart') ?></span> -->\n </a>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/header-cart.js',\n name: 'ScriptHeaderCart',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n <? } ?>\n</div>","/package/unit/header-language":"<?\nlet text = package.content.data[0] && package.content.data[0].description ? package.content.data[0].description : ''\nlet style_type_text = 3\nconst language_config = package.config.language\nlet allow_language_code = 0\nif (language_config && language_config.allow_language_code) {\n text = page.language_title\n allow_language_code = 1\n}\n?>\n<? if (page.language_list.length > 1) { -?>\n<div class=\"unit-header-language\">\n <div class=\"unit-header-language__title\">\n <span class=\"iconfont icon-yuzhong\"></span>\n <? if (text) { -?>\n <div text-style=\"<?= style_type_text ?>\" class=\"unit-header-language__text\"><?= text ?></div>\n <? } -?>\n <? if (language_config && language_config.language_type == 2) { -?>\n <i class=\"iconfont icon-action-bottom-lighter pl-1\"></i>\n <? } -?>\n </div>\n <div class=\"unit-header-language__items hide flags-sprite-loader\" lazy-src=\"/assets/images/flags-sprite.webp\" lazy-type=\"background\">\n <? page.language_list.forEach((item, index) => { -?>\n <div class=\"unit-header-language__item\">\n <a href=\"<?= item.href ?>\" title=\"<?= item.title ?>\">\n <i class=\"unit-header-language__item--icon flag-icon flag-icon-<?= item.code ?>\"></i>\n <span style=\"display: none\"><img alt=\"<?= item.title ?>\" data-src=\"/assets/images/flags/<?= item.code ?>.gif\"></span>\n <span class=\"unit-header-language__item--title code-text--<?= item.code ?>\"><?= item.title ?></span>\n <span style=\"display: none;\" class=\"unit-header-language__item--code code-text--<?= item.code ?>\"><?= item.code ?></span>\n </a>\n </div>\n <? }) -?>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/header-language.js',\n name: 'ScriptHeaderLanguage',\n attrId: '<?= package.attr_id ?>',\n languageCode: '<?= site.language_code ?>',\n language_mode: '<?= site.language_mode ?>',\n language_config: '<?= JSON.stringify(language_config) ?>'\n })\n</script>\n<? } else if (ctx.query.design) { -?>\n<div class=\"px-1\"><?= $t('no more language') ?></div>\n<? } ?>\n\n","/package/unit/header-login":"<div class=\"unit-header-login\">\n <!-- æªç»å½ -->\n <div class=\"unit-header-login__box\" login-hide>\n <a href=\"javascript:;\" class=\"unit-header-login__user\">
1\n <span class=\"iconfont icon-base-user\"></span>\n <!-- <span class=\"unit-header-login__text text-capitalize\"><?= $t('sign in') ?></span> -->\n </a>\n <div class=\"unit-header-login__login-list\">\n <a class=\"unit-header-login__login-item\" href=\"<?= globalThis.Server.getRinseHref('/login.html', site) ?>\"><?= $t('Log in') ?></a>\n <a class=\"unit-header-login__login-item\" href=\"<?= globalThis.Server.getRinseHref('/register.html', site) ?>\"><?= $t('sign up') ?></a>\n </div>\n </div>\n <!-- å·²ç»å½ -->\n <div class=\"unit-header-login__box\" login-show>\n <a href=\"javascript:;\" class=\"unit-header-login__user\">\n <span class=\"iconfont icon-base-user\"></span>\n <!-- <span id=\"unit-header-login__username\" class=\"pr-1 unit-header-login__text\"><?= $t('author') ?></span> -->\n <!-- <span class=\"iconfont icon-action-bottom-lighter pl-0 pl-md-1\"></span> -->\n </a>\n <div class=\"unit-header-login__login-list\">\n <? if (site.site_type !== 1) { ?>\n <a class=\"unit-header-login__login-item\" href=\"<?= globalThis.Server.getRinseHref('/user.html', site) ?>\"><?= $t('Profile') ?></a>\n <? } ?>\n <a class=\"unit-header-login__login-item\" href=\"javascript:;\" onclick=\"window.app.utilts.logout()\"><?= $t('Log out') ?></a>\n </div>\n </div>\n</div>","/package/unit/header-menu":"<?\n let header_config = package.config.header || {}\n let has_nofollow = header_config.has_nofollow || 0\n // å¦ææ°æ°æ®å¼å
¥ï¼éè¦å° pageCache.getShtmlName è¡¥å
å¯¹åºæ¡ä»¶\n-?>\n<div class=\"unit-header-menu\">\n <div class=\"unit-header-menu__switch\">\n <span class=\"iconfont icon-base-menu\"></span>\n </div>\n <div class=\"unit-header-menu__box\">\n <div class=\"unit-header-menu__box-header\">\n <div class=\"unit-header-menu__logo\">\n <?- include(getViewsPath(`/package/unit/logo`), { package }) -?>\n </div>\n <div class=\"unit-header-menu__close\">\n <span class=\"iconfont icon-action-close-2\"></span>\n </div>\n </div>\n <div class=\"unit-header-menu__box-body\">\n <!-- æç´¢ -->\n <div class=\"unit-header-menu__search\">\n <div class=\"unit-header-menu__search-box\">\n <div class=\"unit-header-menu__search-btn\">\n <span class=\"iconfont icon-action-search-lighter\"></span>\n </div>\n <input type=\"text\" placeholder=\"\" class=\"unit-header-menu__search-input\" />\n </div>\n </div>\n <!-- èåæ -->\n <div class=\"unit-header-menu__nav\">\n <div class=\"unit-header-menu__nav-wrap\">\n <div class=\"unit-header-menu__nav-inner\">\n <? site.nav.forEach(item => { -?>\n <div class=\"unit-header-menu__nav-item\">\n <a class=\"unit-header-menu__nav__item-link <?= item.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(item.open_type === 3 ? 'javascript:;' : item.jump_url ? item.jump_url : item.href, site) ?>\" target=\"<?- item.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" firstMenu>\n <? if (item.children && item.children.length > 0) { -?>\n <span class=\"unit-header-menu__nav__item-drop iconfont icon-action-bottom-lighter <?= item.is_active ? 'active' : '' ?>\"></span>\n <? } -?>\n <div class=\"px-2\">\n <? if (item.icon) { -?><i class=\"unit-header-menu__nav__item-icon iconfont <?= item.icon ?>\"></i><? } ?>\n <span class=\"unit-header-menu__nav_name <?= item.bubble.name ? 'bubble-tag' : '' ?>\">\n <?= item.title ?>\n <? if (item.bubble.name) { ?>\n <span class=\"unit-header-menu__nav_bubble\" style=\"background-color: <?= item.bubble.bg ?>; color: <?= item.bubble.color ?>;\"><?= item.bubble.name ?></span>\n <? } ?>\n </span>\n </div>\n </a>\n <!-- äºçº§èå -->\n <? if (item.children && item.children.length > 0) { -?>\n <div class=\"unit-header-menu__nav__item-content <?= item.is_active ? 'show' : '' ?>\">
1\n <? item.children.forEach(son => { -?>\n <div class=\"unit-header-menu__nav__item-son\">\n <a class=\"unit-header-menu__nav__item-link <?= son.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.jump_url ? son.jump_url : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" subMenu>\n <? if (son.children && son.children.length > 0) { -?>\n <span class=\"unit-header-menu__nav__item-drop iconfont icon-action-bottom-lighter <?= son.is_active ? 'active' : '' ?>\"></span>\n <? } -?>\n <div class=\"px-2\">\n <? if (son.icon) { -?><i class=\"unit-header-menu__nav__item-icon iconfont <?= son.icon ?>\"></i><? } ?>\n <span class=\"unit-header-menu__nav-list_name <?= son.bubble.name ? 'bubble-tag' : '' ?>\">\n <?= son.title ?>\n <? if (son.bubble.name) { ?>\n <span class=\"unit-header-menu__nav_bubble\" style=\"background-color: <?= son.bubble.bg ?>; color: <?= son.bubble.color ?>;\"><?= son.bubble.name ?></span>\n <? } ?>\n </span>\n </div>\n </a>\n <!-- ä¸çº§èå -->\n <? if (son.children && son.children.length > 0) { -?>\n <div class=\"unit-header-menu__nav__item-son-content <?= son.is_active ? 'show' : '' ?>\">\n <? son.children.forEach(grandson => { -?>\n <div class=\"unit-header-menu__nav__item-grandson\">\n <a class=\"unit-header-menu__nav__item-link <?= grandson.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.jump_url ? grandson.jump_url : grandson.href, site) ?>\" target=\"<?- grandson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" subMenu>\n <? if (grandson.children && grandson.children.length > 0) { -?>\n <span class=\"unit-header-menu__nav__item-drop iconfont icon-action-bottom-lighter <?= grandson.is_active ? 'active' : '' ?>\"></span>\n <? } -?>\n <div class=\"px-2\">\n <? if (grandson.icon) { -?><i class=\"unit-header-menu__nav__item-icon iconfont <?= grandson.icon ?>\"></i><? } ?>\n <span class=\"unit-header-menu__nav-list_son_name <?= grandson.bubble.name ? 'bubble-tag' : '' ?>\">\n <?= grandson.title ?>\n <? if (grandson.bubble.name) { ?>\n <span class=\"unit-header-menu__nav_bubble\" style=\"background-color: <?= grandson.bubble.bg ?>; color: <?= grandson.bubble.color ?>;\"><?= grandson.bubble.name ?></span>\n <? } ?>\n </span>\n </div>\n </a>\n <!-- å级èå -->\n <? if (grandson.children && grandson.children.length > 0) { -?>\n <div class=\"unit-header-menu__nav__item-son-content <?= son.is_active ? 'show' : '' ?>\">\n <? grandson.children.forEach(grateson => { -?>\n <div class=\"unit-header-menu__nav__item-grateson\">\n <a class=\"unit-header-menu__nav__item-link <?= grateson.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(grateson.open_type === 3 ? 'javascript:;' : grateson.jump_url ? grateson.jump_url : grateson.href, site) ?>\" target=\"<?- grateson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" subMenu>\n <div class=\"px-2\">\n <? if (grateson.icon) { -?><i class=\"unit-header-menu__nav__item-icon iconfont <?= grateson.icon ?>\"></i><? } ?>
1\n <span class=\"unit-header-menu__nav-list_son_name <?= grateson.bubble.name ? 'bubble-tag' : '' ?>\">\n <?= grateson.title ?>\n <? if (grateson.bubble.name) { ?>\n <span class=\"unit-header-menu__nav_bubble\" style=\"background-color: <?= grateson.bubble.bg ?>; color: <?= grateson.bubble.color ?>;\"><?= grateson.bubble.name ?></span>\n <? } ?>\n </span>\n </div>\n </a>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-header-menu__box-footer\">\n <div class=\"unit-header-menu__box-list\">\n <? if (page.language_list.length > 1) { ?>\n <div class=\"unit-header-menu__box-item\">\n <div class=\"unit-header-menu__language\">\n <a>\n <span class=\"iconfont icon-yuzhong pr-1\"></span>\n <? page.language_list.filter(item => site.language_code === item.code).forEach(item => { -?>\n <span><?= item.title ?></span>\n <? }) -?>\n </a>\n </div>\n </div>\n <? } ?>\n <div class=\"unit-header-menu__box-item\" id=\"unit-header-mobile__login\">\n <!-- éè¿æ¯å¦å¼å¯ä¼ååè½å¨æå è½½ç»å½åºå -->\n </div>\n </div>\n </div>\n </div>\n <script>\n\n (function () {\n\n // window.scriptQueue.push({\n // file: '/assets/js/unit/header-menu.js',\n // name: 'ScriptHeaderMenu',\n // attrId: '<?= package.attr_id ?>'\n // })\n\n function initScriptAfterAppInit() {\n window.removeEventListener('appInitEnd', initScriptAfterAppInit);\n window.app.initScriptQueue([\n {\n file: '/assets/js/unit/header-menu.js',\n name: 'ScriptHeaderMenu',\n attrId: '<?= package.attr_id ?>'\n }\n ]);\n }\n\n window.addEventListener('appInitEnd', initScriptAfterAppInit);\n })();\n </script>\n</div>\n","/package/unit/header-nav":"<?\n let header_config = package.config.header || {}\n let has_nofollow = header_config.has_nofollow || 0\n let header_category = header_config.header_category ? header_config.header_category.split(',').map(p => parseInt(p)) : site.nav.map(item => item.id)\n let is_line_height = false\n if (package.style['[firstMenu]']) {\n let xl_value = ''\n if (package.style['[firstMenu]'].xl['line-height'] && package.style['[firstMenu]'].xl['line-height'] !== ''){\n xl_value = package.style['[firstMenu]'].xl['line-height']\n }else if (package.style['[firstMenu]'].md['line-height'] && package.style['[firstMenu]'].md['line-height'] !== '') {\n xl_value = package.style['[firstMenu]'].md['line-height']\n }else if (package.style['[firstMenu]'].default['line-height'] && package.style['[firstMenu]'].default['line-height'] !== '') {\n xl_value = package.style['[firstMenu]'].default['line-height']\n }\n is_line_height = xl_value && xl_value != '0'\n }\n // å¦ææ°æ°æ®å¼å
¥ï¼éè¦å° pageCache.getShtmlName è¡¥å
å¯¹åºæ¡ä»¶\n-?>\n<div class=\"unit-header-nav\" <? if (header_config.header_type !== 0) { -?>style=\"--header-columns:<?= header_config.header_columns -?>;\"<? } -?> id=\"<?= `swiper-${package.attr_id}` ?>\" carousel=\"<?= JSON.stringify({auto_height:1, auto_width: 1, navigation: 1, scrollbar: 1, mousewheel: 0 }) ?>\">\n <div class=\"swiper-container\">\n <div class=\"swiper-wrapper unit-header-nav__box\">\n <? site.nav.forEach(item => { -?>\n <div class=\"unit-header-nav__item swiper-slide <?= item.bubble.name ? 'has-bubble' : '' ?>\" data-menu=\"<?= item.id ?>\" header-type=\"<?= header_config.header_type ?>\">\n <a class=\"unit-header-nav__item-link <?= item.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(item.open_type === 3 ? 'javascript:;' : item.jump_url ? item.jump_url : item.href, site) ?>\" target=\"<?- item.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" firstMenu <?- is_line_height ? `show-line-height='true'` : '' ?>>\n <div>\n <? if (item.icon) { -?><i class=\"iconfont <?= item.icon ?>\"></i><? } ?>
1\n <span class=\"unit-nav_name\">\n <?= item.title ?>\n <? if (item.bubble.name) { ?><span class=\"unit-nav_bubble\" style=\"background-color: <?= item.bubble.bg ?>; color: <?= item.bubble.color ?>;\"><?= item.bubble.name ?></span><? } ?>\n </span>\n </div>\n <? if (item.children && item.children.length > 0) { -?><i class=\"unit-header-nav__item-drop iconfont icon-action-bottom-lighter pl-1\"></i><? } -?>\n </a>\n <? if (item.children && item.children.length > 0) { -?>\n <? if (header_config.header_type === 0 || !header_category.includes(item.id)) { -?>\n <div class=\"unit-header-nav__item-content\" subMenu header-type=\"0\">\n <? item.children.forEach(son => { -?>\n <div class=\"unit-header-nav__item-son\" data-parents=\"<?= item.id ?>\" data-menu=\"<?= son.id ?>\">\n <a class=\"unit-header-nav__item-link <?= son.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.jump_url ? son.jump_url : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (header_config.header_img && item.child_has_thumb) { ?>\n <picture class=\"unit-nav_img\">\n <? if (son.thumb_prefix) { const srcset = globalThis.Server.getTransferImgSrcSet(son.thumb_prefix, {}, 'header_basic', 0, site.prefix_domain, site.is_replace_domain) ?>\n <?- srcset.sourceTypeUrls?.map(item => `<source type=\"${item.type}\" srcset=\"${item.url}\" />`).join('') -?>\n <img loading=\"lazy\" decoding=\"async\" alt=\"<?= son.title ?>\" srcset=\"<?= srcset['urls'] || son.thumb_prefix ?>\">\n <? } -?>\n </picture>\n <? } -?>\n <div class=\"unit-nav_title\">\n <? if (son.icon) { -?><i class=\"iconfont <?= son.icon ?>\"></i><? } ?>\n <span class=\"unit-nav_name <?= son.bubble.name ? 'bubble-tag' : '' ?>\">\n <span class=\"unit-nav_text\"><?= son.title ?></span>\n <? if (son.bubble.name) { ?><span class=\"unit-nav_bubble\" style=\"background-color: <?= son.bubble.bg ?>; color: <?= son.bubble.color ?>;\"><?= son.bubble.name ?></span><? } ?>\n </span>\n </div>\n <? if (son.children && son.children.length > 0) { -?><i class=\"unit-header-nav__item-drop iconfont icon-action-bottom-lighter pl-1\"></i><? } -?>\n </a>\n <? if (son.children && son.children.length > 0) { -?>\n <div class=\"unit-header-nav__item-sub-content\">\n <? son.children.forEach(grandson => { -?>\n <div data-parents=\"<?= [item.id, son.id].join('-') ?>\" data-menu=\"<?= grandson.id ?>\" class=\"unit-header-nav__item-grandson\">\n <a class=\"unit-header-nav__item-link <?= grandson.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.jump_url ? grandson.jump_url : grandson.href, site) ?>\" target=\"<?- grandson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (header_config.header_img && son.child_has_thumb) { ?>\n <picture class=\"unit-nav_img\">\n <? if (grandson.thumb_prefix) { const srcset = globalThis.Server.getTransferImgSrcSet(grandson.thumb_prefix, {}, 'header_basic', 0, site.prefix_domain, site.is_replace_domain) ?>\n <?- srcset.sourceTypeUrls?.map(item => `<source type=\"${item.type}\" srcset=\"${item.url}\" />`).join('') -?>\n <img loading=\"lazy\" decoding=\"async\" alt=\"<?= grandson.title ?>\" srcset=\"<?= srcset['urls'] || grandson.thumb_prefix ?>\">\n <? } -?>\n </picture>\n <? } -?>\n <div class=\"unit-nav_title\">\n <? if (grandson.icon) { -?><i class=\"iconfont <?= grandson.icon ?>\"></i><? } ?>
1\n <span class=\"unit-nav_name <?= grandson.bubble.name ? 'bubble-tag' : '' ?>\">\n <span class=\"unit-nav_text\"><?= grandson.title ?></span>\n <? if (grandson.bubble.name) { ?><span class=\"unit-nav_bubble\" style=\"background-color: <?= grandson.bubble.bg ?>; color: <?= grandson.bubble.color ?>;\"><?= grandson.bubble.name ?></span><? } ?>\n </span>\n </div>\n <? if (grandson.children && grandson.children.length > 0) { -?><i class=\"unit-header-nav__item-drop iconfont icon-action-bottom-lighter pl-1\"></i><? } -?>\n </a>\n <? if (grandson.children && grandson.children.length > 0) { -?>\n <div class=\"unit-header-nav__item-sub-content\">\n <? grandson.children.forEach(grateson => { -?>\n <div data-parents=\"<?= [item.id, son.id, grandson.id].join('-') ?>\" data-menu=\"<?= grateson.id ?>\" class=\"unit-header-nav__item-grateson\">\n <a class=\"unit-header-nav__item-link <?= grateson.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(grateson.open_type === 3 ? 'javascript:;' : grateson.jump_url ? grateson.jump_url : grateson.href, site) ?>\" target=\"<?- grateson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (header_config.header_img && grandson.child_has_thumb) { ?>\n <picture class=\"unit-nav_img\">\n <? if (grateson.thumb_prefix) { const srcset = globalThis.Server.getTransferImgSrcSet(grateson.thumb_prefix, {}, 'header_basic', 0, site.prefix_domain, site.is_replace_domain) ?>\n <?- srcset.sourceTypeUrls?.map(item => `<source type=\"${item.type}\" srcset=\"${item.url}\" />`).join('') -?>\n <img loading=\"lazy\" decoding=\"async\" alt=\"<?= grateson.title ?>\" srcset=\"<?= srcset['urls'] || grateson.thumb_prefix ?>\">\n <? } -?>\n </picture>\n <? } -?>\n <div class=\"unit-nav_title\">\n <? if (grateson.icon) { -?><i class=\"iconfont <?= grateson.icon ?>\"></i><? } ?>\n <span class=\"unit-nav_name <?= grateson.bubble.name ? 'bubble-tag' : '' ?>\">\n <span class=\"unit-nav_text\"><?= grateson.title ?></span>\n <? if (grateson.bubble.name) { ?><span class=\"unit-nav_bubble\" style=\"background-color: <?= grateson.bubble.bg ?>; color: <?= grateson.bubble.color ?>;\"><?= grateson.bubble.name ?></span><? } ?>\n </span>\n </div>\n </a>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <? } else if (header_config.header_type === 2) { -?>\n <!-- å¹³éºé£æ ¼2 -->\n <div class=\"unit-header-nav__item-content\" subMenu header-type=\"2\" style=\"--header-columns:<?= header_config.header_columns -?>;\">\n <? if (item.children && item.children.length > 0) { -?>\n <div class=\"unit-nav-flattwo_container\">\n <div class=\"container\">\n <div class=\"unit-nav-flattwo_body\">\n <? item.children.forEach((son, index, array) => { -?>\n <div class=\"unit-header-nav-flattwo_item-son\">\n <!-- äºçº§ -->\n <a href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.jump_url ? son.jump_url : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" class=\"unit-nav-flat_a <?= son.is_active ? 'active' : '' ?>\" alt=\"<?= son.title ?>\">
1\n <span class=\"unit-nav-flat_name <?= son.bubble.name ? 'bubble-tag' : '' ?>\">\n <span class=\"unit-nav_text\"><?= son.title ?></span>\n <? if (son.bubble.name) { ?>\n <span class=\"unit-nav_bubble\" style=\"background-color: <?= son.bubble.bg ?>; color: <?= son.bubble.color ?>;\"><?= son.bubble.name ?></span>\n <? } ?>\n </span>\n <? if ((son.children && son.children.length) || (son.image_list && son.image_list.length)) { -?><i class=\"unit-header-nav__item-drop iconfont icon-action-bottom-lighter pl-1\"></i><? } -?>\n </a>\n <? if ((son.children && son.children.length) || (son.image_list && son.image_list.length)) { -?>\n <!-- <div class=\"border-line\"></div> -->\n <div class=\"unit-header-nav-flattwo_item-son-content\">\n <div class=\"container\">\n <div class=\"flattwo-son-content_container\">\n <div class=\"flattwo-item-son_links\">\n <? if (son.children && son.children.length) { -?>\n <div class=\"flattwo-item-son_links_container\" style=\"width: <?= son.image_list && son.image_list.length ? son.image_list.length >= 3 ? '60%' : '70%' : '100%' -?>;\">\n <div class=\"flattwo-item-son_links_column\">\n <? son.children.forEach(grandson => { -?>\n <div class=\"d-inline-flex flex-column\">\n <!-- ä¸çº§ -->\n <div class=\"link-column-header\">\n <a href=\"<?= globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.jump_url ? grandson.jump_url : grandson.href, site) ?>\" target=\"<?- grandson.open_type === 2 ? '_blank': '' ?>\" class=\"unit-nav-flat_a d-flex <?= grandson.is_active ? 'active' : '' ?>\" alt=\"<?= grandson.title ?>\">\n <span class=\"unit-nav-flat_son_name <?= grandson.bubble.name ? 'bubble-tag' : '' ?>\">\n <span class=\"unit-nav_text\"><?= grandson.title ?></span>\n <? if (grandson.bubble.name) { ?>\n <span class=\"unit-nav_bubble\" style=\"background-color: <?= grandson.bubble.bg ?>; color: <?= grandson.bubble.color ?>;\"><?= grandson.bubble.name ?></span>\n <? } ?>\n </span>\n </a>\n </div>\n <!-- å级 -->\n <? if (grandson.children && grandson.children.length) { -?>\n <div class=\"unit-nav-flattwo_grandson\">\n <? grandson.children.forEach(grateson => { -?>\n <a class=\"unit-nav-flat_a unit-header-nav__item-link <?= grateson.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(grateson.open_type === 3 ? 'javascript:;' : grateson.jump_url ? grateson.jump_url : grateson.href, site) ?>\" target=\"<?- grateson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" alt=\"<?= grateson.title ?>\">\n <span class=\"unit-nav-flat_son_name <?= grateson.bubble.name ? 'bubble-tag' : '' ?>\">
1\n <span class=\"unit-nav_text special-tex\" alt=\"<?= grateson.title ?>\"><?= grateson.title ?></span>\n <? if (grateson.bubble.name) { ?>\n <span class=\"unit-nav_bubble\" style=\"background-color: <?= grateson.bubble.bg ?>; color: <?= grateson.bubble.color ?>;\"><?= grateson.bubble.name ?></span>\n <? } ?>\n </span>\n </a>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <? } -?>\n <? if (son.image_list && son.image_list.length) { -?>\n <div class=\"flattwo-item-son_tile-container <?= son.children && son.children.length ? 'justify-content-end' : '' ?>\" style=\"width: <?= son.children && son.children.length ? son.image_list && son.image_list.length ? son.image_list.length >= 3 ? '40%' : '30%' : '100%' : '100%' -?>;\">\n <? son.image_list.forEach(imgItem => { -?>\n <div class=\"flattwo-item-son_tile\">\n <a href=\"<?= imgItem.jump_url == 'javascript:;' ? imgItem.jump_url : globalThis.Server.getRinseHref(imgItem.jump_url, site) ?>\" class=\"unit-nav-flat_a jump-a <?= !imgItem.jump_url || (imgItem.jump_url && imgItem.jump_url == 'javascript:;') ? 'no-cursor' : '' ?>\" alt=\"<?= imgItem.title ?>\">\n <picture>\n <? const srcset = globalThis.Server.getTransferImgSrcSet(imgItem.url, {}, 'header_flat', site.prefix_domain) ?>\n <?- srcset.sourceTypeUrls?.map(item => `<source type=\"${item.type}\" srcset=\"${item.url}\" />`).join('') -?>\n <img loading=\"lazy\" decoding=\"async\" src=\"<?= imgItem.url ?>\" alt=\"<?= imgItem.alt ?>\">\n </picture>\n <span class=\"flattwo-item-son_tile-caption\">\n <span class=\"special-tex\"><?= imgItem.title ?></span>\n <? if (imgItem.jump_url && imgItem.jump_url !== 'javascript:;') { -?><span>â</span><? } -?>\n </span>\n </a>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <div class=\"flattwo-item-son_bottom <?= son.open_type === 3 ? 'd-none' : '' ?>\">\n <a href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.jump_url ? son.jump_url : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" class=\"unit-nav-flat_a jump-a <?= son.is_active ? 'active' : '' ?>\" alt=\"<?= son.title ?>\">\n <span class=\"special-tex\">view all <?= son.title ?></span>\n <span>â</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n </div>\n <? } -?>\n </div>\n <? } else if (header_config.header_type === 1) { -?>\n <!-- å¹³éº -->\n <div class=\"unit-header-nav__item-content\" subMenu header-type=\"1\" style=\"--header-columns:<?= header_config.header_columns -?>;\">\n <? if (item.children && item.children.length > 0) { -?>\n <div class=\"container unit-nav-flat_container\">
1\n <? item.children.forEach((son, index, array) => { -?>\n <div class=\"unit-header-nav-flat__item-son <?= (index + 1) % header_config.header_columns ? 'border-start' : 'border-end' -?>\">\n <? if (header_config.header_img && son.thumb_prefix) { ?>\n <div class=\"col-5 nav-item-img\">\n <a href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.jump_url ? son.jump_url : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" class=\"col-5 unit-nav-flat_a\">\n <? const srcset = globalThis.Server.getTransferImgSrcSet(son.thumb_prefix, {}, 'header_flat', 0, site.prefix_domain, site.is_replace_domain) ?>\n <picture>\n <?- srcset.sourceTypeUrls?.map(item => `<source type=\"${item.type}\" srcset=\"${item.url}\" />`).join('') -?>\n <img loading=\"lazy\" decoding=\"async\" class=\"unit-nav-flat_img\" alt=\"<?= son.title ?>\" srcset=\"<?= srcset['urls'] || son.thumb_prefix ?>\">\n </picture>\n </a>\n </div>\n <? } ?>\n <div class=\"right-container <?= son.thumb_prefix ? 'col-7' : 'col-12' ?>\">\n <div class=\"item-list-container\">\n <a href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.jump_url ? son.jump_url : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" class=\"unit-nav-flat_a <?= son.is_active ? 'active' : '' ?>\">\n <span class=\"unit-nav-flat_name <?= son.bubble.name ? 'bubble-tag' : '' ?>\">\n <span class=\"unit-nav_text\"><?= son.title ?></span>\n <? if (son.bubble.name) { ?>\n <span class=\"unit-nav_bubble\" style=\"background-color: <?= son.bubble.bg ?>; color: <?= son.bubble.color ?>;\"><?= son.bubble.name ?></span>\n <? } ?>\n </span>\n </a>\n <? if (son.children && son.children.length > 0) { -?>\n <div class=\"unit-header-nav-flat_item-son-content\">\n <? son.children.forEach(grandson => { -?>\n <div class=\"unit-header-nav__item-grandson-tile\" data-id=\"<?= grandson.id ?>\">\n <a href=\"<?= globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.jump_url ? grandson.jump_url : grandson.href, site) ?>\" target=\"<?- grandson.open_type === 2 ? '_blank': '' ?>\" class=\"unit-nav-flat_a d-flex <?= grandson.is_active ? 'active' : '' ?>\">\n <span class=\"unit-nav-flat_son_name <?= grandson.bubble.name ? 'bubble-tag' : '' ?>\">\n <span class=\"unit-nav_text\"><?= grandson.title ?></span>\n <? if (grandson.bubble.name) { ?>\n <span class=\"unit-nav_bubble\" style=\"background-color: <?= grandson.bubble.bg ?>; color: <?= grandson.bubble.color ?>;\"><?= grandson.bubble.name ?></span>\n <? } ?>\n </span>\n <? if (grandson.children && grandson.children.length > 0) { -?><i class=\"unit-header-nav__item-drop iconfont icon-action-bottom-lighter pl-1\"></i><? } -?>\n </a>\n <? if (grandson.children && grandson.children.length > 0) { -?>\n <div class=\"unit-header-nav__item-sub-content\">\n <? grandson.children.forEach(grateson => { -?>\n <div class=\"unit-header-nav__item-grateson\">\n <a class=\"unit-header-nav__item-link <?= grateson.is_active ? 'active' : '' ?>\" href=\"<?= globalThis.Server.getRinseHref(grateson.open_type === 3 ? 'javascript:;' : grateson.jump_url ? grateson.jump_url : grateson.href, site) ?>\" target=\"<?- grateson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (header_config.header_img && grandson.child_has_thumb) { ?>\n <picture class=\"unit-nav_img\"><? if (grateson.thumb_prefix) { const srcset = globalThis.Server.getTransferImgSrcSet(grateson.thumb_prefix, {}, 'header_basic', 0, site.prefix_domain, site.is_replace_domain) ?>
1\n <?- srcset.sourceTypeUrls?.map(item => `<source type=\"${item.type}\" srcset=\"${item.url}\" />`).join('') -?>\n <img loading=\"lazy\" decoding=\"async\" alt=\"<?= grateson.title ?>\" srcset=\"<?= srcset['urls'] || grateson.thumb_prefix ?>\"><? } -?></picture>\n <? } -?>\n <div class=\"unit-nav_title\">\n <? if (grateson.icon) { -?><i class=\"iconfont <?= grateson.icon ?>\"></i><? } ?>\n <span class=\"unit-nav_name <?= grateson.bubble.name ? 'bubble-tag' : '' ?>\">\n <span class=\"unit-nav_text\"><?= grateson.title ?></span>\n <? if (grateson.bubble.name) { ?><span class=\"unit-nav_bubble\" style=\"background-color: <?= grateson.bubble.bg ?>; color: <?= grateson.bubble.color ?>;\"><?= grateson.bubble.name ?></span><? } ?>\n </span>\n </div>\n </a>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <div class=\"unit-nav-flat_more\">\n <i class=\"unit-header-nav__item-drop iconfont icon-action-bottom-lighter\"></i>\n </div>\n </div>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? } -?>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <!-- äºçº§èåæ -->\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n <div class=\"unit-header-nav__subNav\" subMenu sub-menu-type=\"<?= header_config.header_type ?>\"></div>\n</div>\n<script>\n window.currentNav = <?- JSON.stringify(site.nav) ?>;\n console.log('å½å导èªå表ï¼', window.currentNav);\n</script>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/header-nav.js?v=1',\n name: 'ScriptHeaderNav',\n attrId: '<?= package.attr_id ?>',\n config: '<?- JSON.stringify(header_config) ?>'\n })\n</script>\n","/package/unit/header-search":"<div class=\"unit-header-search\">\n <div class=\"unit-header-search__box\" <?= package.config.search.show_input ? 'group' : '' ?>>\n <input type=\"text\" class=\"form-control unit-header-search__input\" placeholder=\"<?= $t('Search') ?>...\">\n <div class=\"unit-header-search__btn\">
1\n <span class=\"iconfont icon-action-search-lighter\"></span>\n </div>\n </div>\n <div class=\"unit-header-search__modal\">\n <div class=\"unit-header-search__content\">\n <span class=\"iconfont icon-action-search-lighter unit-header-search__modal-btn mr-2\"></span>\n <input type=\"text\" placeholder=\"<?= $t('Search') ?>...\" class=\"form-control unit-header-search__modal-input\">\n <span class=\"unit-header-search__modal-close iconfont icon-action-close-2\"></span>\n </div>\n </div>\n <script>\n\n\n (function () {\n\n // window.scriptQueue.push({\n // file: '/assets/js/unit/header-search.js',\n // name: 'ScriptHeaderSearch',\n // attrId: '<?= package.attr_id ?>'\n // })\n\n function initScriptAfterAppInit() {\n window.removeEventListener('appInitEnd', initScriptAfterAppInit);\n window.app.initScriptQueue([\n {\n file: '/assets/js/unit/header-search.js',\n name: 'ScriptHeaderSearch',\n attrId: '<?= package.attr_id ?>'\n }\n ]);\n }\n\n window.addEventListener('appInitEnd', initScriptAfterAppInit);\n })();\n </script>\n</div>","/package/unit/header":"<?\n let header_config = package.config.header || {}\n let has_nofollow = header_config.has_nofollow || 0\n-?>\n<header class=\"unit-header\">\n <div class=\"unit-header__body-wrap\">\n <div class=\"unit-header__head row no-gutters\">\n <div class=\"localizationLanguage\">\n <? if (package.content.data[0]) { -?>\n <div _html=\"<?= package.content.data[0].description_sign ?>\" tinymce>\n <?- globalThis.Server.getRinseHTML(package.content.data[0].description, site) -?>\n </div>\n <? } -?>\n </div>\n <div class=\"d-flex align-items-center\">\n <div class=\"unit-header__search pr-4\">\n <div class=\"search-form\">\n <span class=\"search-btn iconfont icon-action-search-lighter\"></span>\n <input type=\"text\" placeholder=\"Search\" class=\"form-control search-input\">\n <span class=\"search-close iconfont icon-action-close\"></span>\n </div>\n <div class=\"search-show\">\n <span class=\"search-btn iconfont icon-action-search-lighter\"></span>\n </div>\n </div>\n <div class=\"user\" login-show>\n <div class=\"button-group\">\n <a class=\"nav-link dropdown-toggle pr-4\" href=\"#\" id=\"navbar_pc\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <i class=\"iconfont icon-base-user\"></i>\n <!-- <span id=\"unit-header__username\"></span> -->\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"navbar_pc\">\n <a class=\"dropdown-item text-capitalize\" href=\"javascript:;\" onclick=\"window.app.utilts.logout()\"><?= $t('sign out') ?></a>\n </div>\n </div>\n </div>\n <div class=\"user\" login-hide>\n <div class=\"button-group pr-4\">\n <a href=\"<?=globalThis.Server.getRinseHref('/login.html', site) -?>\" class=\"unit-header__nav-button-login text-capitalize\">\n <span class=\"iconfont icon-base-user\"></span>\n </a>\n </div>\n </div>\n <? if (page.language_list.length > 1) { -?>\n <div class=\"unit-header__language-box\">\n <div class=\"open-btn\">\n <span class=\"iconfont icon-yuzhong\"></span>\n </div>\n <? if (page.language_list.length > 1) { -?>\n <ul class=\"language news_lang lanlist\">\n <? page.language_list.forEach((item, index) => { -?>\n <? if(index < 20){ -?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" class=\"d-flex\">\n <span><img src=\"/assets/images/flags/<?= item.code ?>.gif\" height=\"16\"></span>\n <span><?= item.title ?></span>\n </a>\n </li>\n <? } -?>\n <? }) -?>\n <? if (page.language_list.length > 19) { -?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref('/multi-language.html', site) -?>\" class=\"d-flex\">
1\n <span><?= $t('view more languages') ?></span>\n </a>\n </li>\n <? } -?>\n </ul>\n <? } -?>\n </div>\n <? } -?>\n </div>\n </div>\n <div class=\"unit-header__body row no-gutters align-items-center flex-nowrap\">\n <div class=\"unit-header__logo h-100\">\n <a class=\"d-inline-block h-100\" href=\"<?=globalThis.Server.getRinseHref('/', site) -?>\">\n <img class=\"unit-header__logo-white\" lazy-src=\"<?= site.logo_url || 'https://img.yfisher.com/logo2xyf.png' ?>\" alt=\"\" height=\"65\" logo_url>\n <? if (ctx.state.page.page_type === 'index') { -?>\n <span hidden><?= ctx.state.site.company_brand_name -?></span>\n <? } -?>\n </a>\n </div>\n <div class=\"unit-header__nav-wrap\">\n <div class=\"unit-header__nav\">\n <nav class=\"unit-header__nav-inner\" id=\"<?= `swiper-${package.attr_id}` ?>\" carousel=\"<?= JSON.stringify({auto_height:1, auto_width: 1, navigation: 1 }) ?>\">\n <div class=\"swiper-container\">\n <div class=\"swiper-wrapper\">\n <? site.nav.forEach(item => { -?>\n <div class=\"swiper-slide unit-header__nav-item <?= item.is_active ? 'active' : '' ?>\">\n <div class=\"unit-header__nav-item-inner\" firstMenu>\n <a class=\"unit-header__nav-item-a unit-header__nav-first-a\" href=\"<?= globalThis.Server.getRinseHref(item.open_type === 3 ? 'javascript:;' : item.href, site) ?>\" target=\"<?- item.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (item.icon) { -?><i class=\"unit-header__nav-icon iconfont <?= item.icon ?>\"></i><? } -?>\n <span><?= item.title ?></span>\n <? if (item.children && item.children.length > 0) { -?>\n <span class=\"unit-header__nav-item-open iconfont icon-action-bottom-triangle-bold\"></span>\n <? } -?>\n </a>\n </div>\n <? if (item.children && item.children.length > 0) { -?>\n <div class=\"unit-header__nav-son-wrap\" subMenu>\n <div class=\"unit-header__nav-son\">\n <? item.children.forEach(son => { -?>\n <div class=\"unit-header__nav-son-item <?= son.is_active ? 'active' : '' ?>\">\n <div class=\"unit-header__nav-son-item-inner\">\n <a class=\"unit-header__nav-son-a\" href=\"<?=globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (son.icon) { -?><i class=\"unit-header__nav-icon iconfont <?= son.icon ?>\"></i><? } -?>\n <div class=\"unit-header__nav-son-title\"><span><?= son.title ?></span></div>\n </a>\n <? if( son.children && son.children.length > 0 ) { -?>\n <i class=\"icon-drowmenu unit-header__nav-icon\"></i>\n <? } -?>\n </div>\n <? if (son.children && son.children.length > 0) { -?>\n <div class=\"unit-header__nav-grandson\">\n <? son.children.forEach(grandson => { -?>\n <div class=\"unit-header__nav-grandson-item <?= grandson.is_active ? 'active' : '' ?>\">\n <div class=\"unit-header__nav-grandson-item-inner\">\n <a class=\"unit-header__nav-grandson-a\" href=\"<?=globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.href, site) ?>\" target=\"<?- grandson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (grandson.icon) { -?><i class=\"unit-header__nav-icon unit-header__nav-grandson-icon
1iconfont <?= grandson.icon ?>\"></i><? } -?>\n <div class=\"unit-header__nav-grandson-title\"><span><?= grandson.title ?></span></div>\n </a>\n </div>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n <div class=\"unit-header__nav unit-header__sub-nav\"></div>\n </nav>\n </div>\n </div>\n <div class=\"unit-header__switch\">\n <div class=\"unit-header__switch-inner\">\n <span class=\"iconfont icon-base-menu\"></span>\n </div>\n </div>\n </div>\n <!-- mç«¯å¤´é¨ -->\n <div class=\"unit-header__body-m body-hide\">\n <div class=\"unit-header__profile-m\">\n <div class=\"user\" login-show>\n <div class=\"button-group\">\n <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbar_m\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <i class=\"iconfont icon-base-user\"></i>\n <span id=\"unit-header__username\"></span>\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"navbar_m\">\n <a class=\"dropdown-item\" href=\"javascript:;\" onclick=\"window.app.utilts.logout()\"><?= $t('sign out') ?></a>\n </div>\n </div>\n </div>\n <div class=\"user\" login-hide>\n <div class=\"button-group pr-4\">\n <a href=\"<?= globalThis.Server.getRinseHref('/login.html', site) -?>\" class=\"unit-header__nav-button-login\"><span class=\"iconfont icon-base-user\"></span> <?= $t('sign in') ?></a>\n </div>\n </div>\n <? if (page.language_list.length > 1) { -?>\n <div class=\"unit-header__language-box\">\n <div class=\"open-btn\">\n <span class=\"iconfont icon-yuzhong pr-1\"></span>\n <? page.language_list.filter(item => site.language_code === item.code).forEach(item => { -?>\n <span><?= item.title ?></span>\n <? }) -?>\n <? if( page.language_list.length > 1) { -?>\n <span class=\"iconfont icon-action-bottom-triangle-bold\"></span>\n <? } -?>\n </div>\n <? if (page.language_list.length > 1) { -?>\n <ul class=\"language news_lang lanlist\">\n <? page.language_list.forEach((item, index) => { -?>\n <? if(index < 20){ -?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" class=\"d-flex\">\n <span><img src=\"/assets/images/flags/<?= item.code ?>.gif\" height=\"16\"></span>\n <span><?= item.title ?></span>\n </a>\n </li>\n <? } -?>\n <? }) -?>\n <? if (page.language_list.length > 19) { -?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref('/multi-language.html', site) ?>\" class=\"d-flex\">\n <span><?= $t('view more languages') ?></span>\n </a>\n </li>\n <? } -?>\n </ul>\n <? } -?>\n </div>\n <? } -?>\n </div>\n <div class=\"unit-header__search-m\">\n <input type=\"text\" placeholder=\"Search\" class=\"form-control search-input\">\n <span class=\"search-btn iconfont icon-action-search-lighter\"></span>\n </div>\n <div class=\"unit-header__nav-wrap-m\">\n <? site.nav.forEach(item => { -?>\n <div class=\"unit-header__nav-item <?= item.is_active ? 'active' : '' ?>\">\n <div class=\"unit-header__nav-item-inner\" firstMenu>\n <a class=\"unit-header__nav-item-a unit-header__nav-first-a\" href=\"<?= globalThis.Server.getRinseHref(item.open_type === 3 ? 'javascript:;' : item.href, site) ?>\" target=\"<?- item.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (item.icon) { -?><i class=\"unit-header__nav-icon iconfont <?= item.icon ?>\"></i><? } -?>
1\n <span><?= item.title ?></span>\n </a>\n <? if (item.children && item.children.length > 0) { -?>\n <span class=\"icon-drowmenu\"></span>\n <? } -?>\n </div>\n <? if (item.children && item.children.length > 0) { -?>\n <div class=\"unit-header__nav-son-wrap\" subMenu>\n <div class=\"unit-header__nav-son\">\n <? item.children.forEach(son => { -?>\n <div class=\"unit-header__nav-son-item <?= son.is_active ? 'active' : '' ?>\">\n <div class=\"unit-header__nav-son-item-inner\">\n <a class=\"unit-header__nav-son-a\" href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.href, site) ?>\" target=\"<?- son.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (son.icon) { -?><i class=\"unit-header__nav-icon iconfont <?= son.icon ?>\"></i><? } -?>\n <div class=\"unit-header__nav-son-title\"><span><?= son.title ?></span></div>\n </a>\n <? if( son.children && son.children.length > 0 ) { -?>\n <i class=\"icon-drowmenu unit-header__nav-icon\"></i>\n <? } -?>\n </div>\n <? if (son.children && son.children.length > 0) { -?>\n <div class=\"unit-header__nav-grandson\">\n <? son.children.forEach(grandson => { -?>\n <div class=\"unit-header__nav-grandson-item <?= grandson.is_active ? 'active' : '' ?>\">\n <div class=\"unit-header__nav-grandson-item-inner\">\n <a class=\"unit-header__nav-grandson-a\" href=\"<?= globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.href, site) ?>\" target=\"<?- grandson.open_type === 2 ? '_blank': '' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? if (grandson.icon) { -?><i class=\"unit-header__nav-icon unit-header__nav-grandson-icon iconfont <?= grandson.icon ?>\"></i><? } -?>\n <div class=\"unit-header__nav-grandson-title\"><span><?= grandson.title ?></span></div>\n </a>\n </div>\n </div>\n <? }) -?>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/header.js',\n name: 'ScriptHeader',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</header>\n","/package/unit/hello-world":"<?\n\tconst content = package.content.data[0]\n-?>\n<div class=\"unit-hello-world\">\n\t<div class=\"unit-hello-world_desc\">\n\t\t<?= content.description -?>\n\t</div>\n</div>","/package/unit/image":"<?\n let image_config = package.config.image\n let video_config = package.config.video || {}\n let has_nofollow = package.config.image.has_nofollow || 0\n let has_video = false\n if (image_config) {\n image_config.current_hide_phone = package.current_hide_phone || 0\n image_config.sequence = package.sequence || []\n }\n\n?>\n<div class=\"unit-image\">\n <?\n package.content.data.forEach(item => {\n if (item.content_type === 'video' || (item.content_type === 'material' && /\\.mp4/i.test(item.cover_url)) || item.is_embed_video) {\n has_video = true\n -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'video', config: { ...item, config: video_config } } }) -?>\n <? } else { -?>\n <? if (item.target !== 'anchor') { -?>\n <a class=\"d-block <? if (item.target === 'zoom') { -?>unit-image--zoom<? }-?>\" <? if (item.target !== 'zoom') { -?> href=\"<?= globalThis.Server.getRinseHref(item.href, site)?>\" target=\"<?= item.target || '_self' ?>\"<? } else { -?>zoom-img=\"true\"<? } -?> rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? } else { -?>\n <a class=\"d-block\" href=\"#<?= item.href ?>\" anchor-href=\"#<?= item.href ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <? } -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config } } }) -?>\n </a>\n <? } -?>\n <? }) -?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/image.js',\n name: 'ScriptImage',\n attrId: '<?= package.attr_id ?>',\n config: '<?- JSON.stringify(image_config) ?>',\n video_config: '<?- JSON.stringify(video_config) ?>',\n images: '<?- JSON.stringify(package.content.data) ?>'\n })\n </script>\n <? if (has_video) { -?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/video-popup.js',\n name: 'ScriptVideoPopup',\n attrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(video_config) ?>'\n })\n </script>\n <? } -?>\n</div>\n\n","/package/unit/inquire-list":"<?\n let attr_id = package.attr_id\n-?>\n<div class=\"unit-inquire-list\">\n <div class=\"unit-selet-all\">\n <div class=\"custom-control custom-checkbox select-all\">\n <input type=\"checkbox\" class=\"custom-control-input\" name=\"unit-select-all-product\" value=\"selectAll\" id=\"<?= attr_id ?>-selectAll\">\n <label class=\"custom-control-label follow-font-family\" text-style=\"3\" for=\"<?= attr_id ?>-selectAll\"><?= $t('select all') ?></label>\n </div>\n </div>\n <ul class=\"unit-inquire-lists\"></ul>\n <div class=\"unit-inquire-notdata\">\n <img lazy-src=\"/assets/images/no_inquire.svg\" alt=\"\">\n <div class=\"unit-inquire-notdata-text text-capitalize\">\n <p><?= $t('Oops!') ?></p>\n <p><?= $t('no product data.') ?></p>\n </div>\n <a href=\"<?=globalThis.Server.getRinseHref('/', site) -?>\" class=\"text-capitalize\"><?= $t('Go to homepage') ?></a>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/inquire-list.js',\n name: 'ScriptInquireList',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/inquire-success":"<div class=\"unit-inquire-success\">\n <div class=\"unit-inquire-success__tips text-capitalize\"><?= $t('continue after') ?> <span class=\"unit-inquire-success__second\"\n style=\"color:#f00\"> </span> <?= $t('seconds') ?></div>\n <script>\n (function () {\n // window.scriptQueue.push({\n // file: '/assets/js/unit/inquire-success.js',\n // name: 'ScriptInquireSuccess',\n // attrId: '<?= package.attr_id ?>'\n // })\n\n /**\n * æåå计æ¶è¿å主页\n */\n function runInquireSuccess() {\
1n window.removeEventListener('appInitEnd', runInquireSuccess);\n window.app.initScriptQueue([\n {\n file: '/assets/js/unit/inquire-success.js',\n name: 'ScriptInquireSuccess',\n attrId: '<?= package.attr_id ?>'\n }\n ]);\n }\n\n window.addEventListener('appInitEnd', runInquireSuccess);\n })();\n </script>\n</div>","/package/unit/landing-nav":"\n<?\n const nav = ctx.state.template.block.main.children.filter(p=>(p.is_show_top && p.name)) || []\n-?>\n<header class=\"unit-landing-nav\">\n <nav class=\"unit-landing-nav__items\" id=\"<?= `swiper-${package.attr_id}` ?>\" carousel=\"<?= JSON.stringify({ auto_width: 1, navigation: 0, scrollbar: 1, mousewheel: 1 }) ?>\">\n <div class=\"swiper-container\">\n <div class=\"swiper-wrapper\" id=\"header-nav\">\n <? nav.forEach(item => { -?>\n <div class=\"swiper-slide unit-landing-nav__item <?= item.is_active ? 'active' : '' ?>\">\n <div class=\"unit-landing-nav__text\">\n <a class=\"unit-landing-nav__a\" anchor-href=\"#<?=item.name ?>\">\n <span><?= item.i18n_name || item.name ?></span>\n </a>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n </nav>\n</header>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/landing-nav.js',\n name: 'ScriptLandingNav',\n attrId: '<?= package.attr_id ?>'\n })\n</script>\n","/package/unit/list-nav":"<?\n let menu = site.nav\n let list_config = package.config.list_nav\n let columnRule = list_config.columnRule\n let column = list_config.column\n let has_nofollow = list_config.has_nofollow\n const showSubNavLevel = list_config.showSubNavLevel\n function findNodeByPath(tree, path) {\n // éå½å½æ°ï¼æ ¹æ®è·¯å¾æ°ç»æ¥æ¾èç¹\n function searchNode(nodes, pathIndex) {\n if (pathIndex === path.length) {\n return null;\n }\n\n for (let node of nodes) {\n if (node.id === path[pathIndex]) {\n // 妿å½åèç¹ç id ä¸è·¯å¾çå½åå¼å¹é
\n if (pathIndex === path.length - 1) {\n return node;\n } else if (node.children && node.children.length > 0) {\n return searchNode(node.children, pathIndex + 1);\n }\n }\n }\n return null;\n }\n\n return searchNode(tree, 0);\n }\n\n if (columnRule === '2') {\n const nav = site.nav.filter(item => item.id === column)\n menu = nav[0]?.children || []\n } else if (columnRule === 'custom' && Array.isArray(column)) {\n let columnMap = {} // æ¾ç¤ºçæ ç®\n column.forEach(columnPath => {\n columnMap[columnPath[columnPath.length - 1]] = true\n })\n\n menu = []\n column.forEach((columnPath) => {\n let menuItem = findNodeByPath(site.nav, columnPath)\n menuItem = Object.assign({}, menuItem)\n let hasParent = columnPath.some(colId => columnMap[colId] && colId !== menuItem.id) // æ¯å¦åå¨ç¶çº§æ ç®æ¾ç¤ºï¼ä¸åå¨åå级ä¸ç¼©è¿\n if (showSubNavLevel && columnPath.length > 1 && menuItem && hasParent) {\n menuItem.showSubNavLevel = true\n }\n if (menuItem) menu.push(menuItem)\n })\n }\n-?>\n<? if (menu.length > 0) { -?>\n<div class=\"unit-list-nav\">\n <div class=\"unit-list-nav__menu\">\n <? menu.forEach((item, index) => { ?>\n <? if(item.open_type !== 3 && item.title){ ?>\n <div class=\"unit-list-nav__menu-item <?= item.is_active ? 'active' : '' ?> <?= item.showSubNavLevel ? 'unit-list-nav__sub_nav' : '' ?>\">\n <a href=\"<?= globalThis.Server.getRinseHref(item.open_type === 3 ? 'javascript:;' : item.jump_url ? item.jump_url : item.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" target=\"<?= item.open_type===2 ? '_blank' : '_self' ?>\">\n <div class=\"unit-list-nav__link <?= item.is_current ? 'unit-list-nav__link-current' : '' ?>\">\n <div class=\"unit-list-nav__title\" text-style=\"<?= list_config.style_type_title ?>\" >\n <? if( item.showSubNavLevel) { ?>
1\n <span class=\"sub_nav__title\">- <?= item.title ?></span>\n <? } else { ?>\n <?= item.title ?>\n <? } ?>\n </div>\n </div>\n </a>\n </div>\n <?}?>\n <? }) ?>\n </div>\n</div>\n<? } else if (ctx.query.design) { -?>\n<?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n<? } -?>\n","/package/unit/list":"<?\n let list_config = package.config.list\n let image_config = package.config.image\n let video_config = package.config.video\n let swiper_config = package.config.swiper\n let resize_config = package.config.resize\n if (swiper_config && swiper_config.effect === 'cube') image_config.instant_load = 1\n if (video_config) {\n video_config.scale = image_config.scale || ''\n video_config.effect = image_config.effect || 0\n }\n if (image_config) {\n image_config.current_hide_phone = package.current_hide_phone || 0\n image_config.sequence = package.sequence || []\n }\n\n let show_img = list_config.show_img % 10\n let show_title = list_config.show_title % 10\n let show_content_tag = list_config.show_content_tag % 10\n let show_subtitle = list_config.show_subtitle % 10\n let show_description = list_config.show_description % 10\n let show_date_show = list_config.show_date_show % 10\n let has_title = list_config.has_title === undefined ? show_title : list_config.has_title\n let has_subtitle = list_config.has_subtitle === undefined ? show_subtitle : list_config.has_subtitle\n let has_description = list_config.has_description === undefined ? show_description : list_config.has_description\n let show_date_type = list_config.show_date_type\n let show_date_yyyy = list_config.show_date_yyyy\n let show_date_mm = list_config.show_date_mm\n let show_date_dd = list_config.show_date_dd\n let show_reads = list_config.show_reads\n let show_keywords = list_config.show_keywords\n let show_read_more = list_config.show_read_more\n let date_and_button = list_config.date_and_button\n let show_quote_list = list_config.show_quote_list\n let show_inquiry = list_config.show_inquiry\n let show_like = list_config.show_like\n let date_title = list_config.date_title\n let keywords_title = list_config.keywords_title\n let has_nofollow = list_config.has_nofollow\n let is_swiper = swiper_config && swiper_config.is_swiper\n let is_resize = resize_config && resize_config.is_resize\n let isDetailContent = package.content.type === 'detail'\n let isBanner = package.code.indexOf('banner') > -1\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n let composing_xl = list_config.composing_xl\n let swiper_html = ''\n let tab_list = package.content.tab_list || []\n if (is_swiper && tab_list.length === 1) swiper_html = `id=swiper-${package.attr_id} carousel=${JSON.stringify(swiper_config)}`\n const formatNum = (num) => (num + '').replace(/\\d{1,3}(?=(\\d{3})+$)/g, '$&,');\n const isShop = site.is_shop\n let colInfo = { cols_col:cols_col, cols_md:cols_md, cols_xl:cols_xl }\n let pageInfo = {page_size:page.page_size, page_number:page.page_number, page_count:page.page_count, page_total:page.total}\n let isNow = package.content.type === 'products-discount-now'\n let isUpcoming = package.content.type === 'products-discount-upcoming'\n let hoverImg = package.content.hover_img || false\n let hoverImgEffect = package.content.hover_img_effect.split(',')\n let hoverImgIn = hoverImgEffect[0] || ''\n let hoverImgOut = hoverImgEffect[1] || ''\n let hoverImgDuration = hoverImgEffect[2] || ''\n let from = 'list'\n let uniform_height = list_config.uniform_height\n if (list_config.content === 'product') {\n from = 'product_list'\n } else if (isBanner) {\n from = 'banner_list'\n }\n <!-- let vertical = list_config.vertical -->\n\n <!-- è½®æä¿¡æ¯ -->\n const getSwiperHtml = index => is_swiper ? `id=swiper-${package.attr_id}-${index} carousel=${JSON.stringify(swiper_config)}` : ''\n const data = package.content.data\n if(show_inquiry) {\n package.config.form.style_type_form = 2\n package.config.button.style_type_button = 2\n }\n\n const bg_hover_linear = package.config.list?.bg_hover_linear?.enabled ? 'unit-list__item-hover-linear' : ''\n\n <!-- åå¹¶è¾¹æ¡ ---------------------------------------- -->\n const wrapperSelector = '.unit-list__items'\n const itemSelector = '.unit-list__item'\n const borderSelector = '.unit-list__item-inner'\n // åæ°æ å°\n const colsMap = {\n \"12\": 1,\n \"6\": 2,\n \"4\": 3,\n \"3\": 4,\n \"2_4\": 5,\n \"2\": 6,\n \"12_7\": 7,\n \"12_8\": 8,\n \"12_9\": 9,\n \"12_10\": 10,\n \"12_11\": 11,\n \"1\": 12\n };\n let mergeInfo = {\n cols_default: colsMap[`${package.cols_col}`],\n cols_md: colsMap[`${package.cols_md}`],\n cols_xl: colsMap[`${package.cols_xl}`],\n }\n <!-- æ¥èª base.css éçåºç¡æ ·å¼ -->\n let baseStyle = {\n '.unit-list__items': {\n default: {\n 'margin': '-1.5vw',\n },\n md: {\n 'margin': '-0.8vw'\n },\n xl: {\n 'margin': '-0.8vw'\n }\n },\n '.unit-list__item': {\n default: {\n 'padding-top': '1.5vw',\n 'padding-bottom': '1.5vw',\n 'padding-left': '1.5vw',\n 'padding-right': '1.5vw',\n },\n md: {\n 'padding-top': '0.8vw',\n 'padding-bottom': '0.8vw',\n 'padding-left': '0.8vw',\n 'padding-right': '0.8vw',\n },\n xl: {\n 'padding-top': '0.8vw',\n 'padding-bottom': '0.8vw',\n 'padding-left': '0.8vw',\n 'padding-right': '0.8vw',\n }\n }\n }\n if (package.code === 'unit-list-10') baseStyle = {}\n <!-- è§é¢ææ¾éç½® -->\n if (isBanner) video_config.auto_reset = '1'\n <!-- 计ç®å¶æ°è¡ -->\n const checkEvenRow = (index) =>
1 {\n return !(Math.ceil((index+1) / mergeInfo.cols_xl) % 2)\n }\n const filter_number = list_config.filter_number\n const show_number = list_config.show_number\n const point_content = list_config.point_content\n const layout_superiority_xl = list_config.layout_superiority_xl\n const layout_superiority_md = list_config.layout_superiority_md\n const layout_superiority_default = list_config.layout_superiority_default\n const point_content_xl = list_config.point_content_xl\n const point_content_md = list_config.point_content_md\n const point_content_default = list_config.point_content_default\n\n let show_more = false\n <!-- let show_more = !is_swiper && list_config.show_number && data.length > list_config.show_number -->\n const checkShowMore = (dataLen) => {\n show_more = !is_swiper && list_config.show_number && dataLen > list_config.show_number\n }\n\n // å¾çè¾¹æ¡\n const imageItemBorder = '.base-image__item';\n\n // .base-image__item border å¾ç飿 ¼è¾¹æ¡è®¾ç½®å¤æ\n if(image_config) {\n image_config.image_item_has_border = globalThis.Server.hasImgBorder(package.style?.['.base-image__item']);\n }\n let setPageCenter = false\n let setPageCenterClassName = ''\n let hasTitlePadding = false\n let hasSubtitlePadding = false\n let hasDescriptionPadding = false\n let hasReadMorePadding = false\n if (package.code === 'module-banner-3-unit-1' || package.code === 'module-banner-4-unit-1') {\n try {\n const title = package.style['.unit-list__title']\n const subtitle = package.style['.unit-list__subtitle']\n const description = package.style['.unit-list__description']\n const readMore = package.style['.read_more']\n const titlePaddingLeft = title?.default['padding-left'] || title?.md['padding-left'] || title?.xl['padding-left']\n const titlePaddingRight = title?.default['padding-right'] || title?.md['padding-right'] || title?.xl['padding-right']\n const subtitlePaddingLeft = subtitle?.default['padding-left'] || subtitle?.md['padding-left'] || subtitle?.xl['padding-left']\n const subtitlePaddingRight = subtitle?.default['padding-right'] || subtitle?.md['padding-right'] || subtitle?.xl['padding-right']\n const descriptionPaddingLeft = description?.default['padding-left'] || description?.md['padding-left'] || description?.xl['padding-left']\n const descriptionPaddingRight = description?.default['padding-right'] || description?.md['padding-right'] || description?.xl['padding-right']\n const readMorePaddingLeft = readMore?.default['padding-left'] || readMore?.md['padding-left'] || readMore?.xl['padding-left']\n const readMorePaddingRight = readMore?.default['padding-right'] || readMore?.md['padding-right'] || readMore?.xl['padding-right']\n const HorizontalPosition = {\n 'normal': 'left',\n 'flex-start': 'left',\n 'flex-end' : 'right'\n }\n const position = HorizontalPosition[package.style['.unit-list__text']?.default['justify-content']] || 'left'\n if(position === 'left') {\n setPageCenter = true\n setPageCenterClassName = 'padding-left-container-width'\n hasTitlePadding = !!titlePaddingLeft\n hasSubtitlePadding = !!subtitlePaddingLeft\n hasDescriptionPadding = !!descriptionPaddingLeft\n hasReadMorePadding = !!readMorePaddingLeft\n }\n if(position === 'right') {\n setPageCenter = true\n setPageCenterClassName = 'padding-right-container-width'\n hasTitlePadding = !!titlePaddingRight\n hasSubtitlePadding = !!subtitlePaddingRight\n hasDescriptionPadding = !!descriptionPaddingRight\n hasReadMorePadding = !!readMorePaddingRight\n }\n const inner = package.style['.unit-list__text-inner']\n <!-- æ§ç banner 3 4 æçå¿äº ä¸å¤ç -->\n if(inner.default['padding-left'] == 'calc(50vw - var(--container-width) / 2)' || inner.default['padding-left'] == 'calc(50vw - var(--container-width) / 2)'){\n setPageCenter = false\n }\n } catch (e) {\n setPageCenter = false\n }\n }\n\n /**list10 reset-bdéç½®borderæ ·å¼ default-bdæ§é»è®¤æ ·å¼*/\n const resetBd = package.style?.default?.default?.['--reset-bd'] ? 'reset-bd' : 'default-bd';\n-?>\n<div\n class=\"unit-list <?=package.code?> <?= is_swiper ? 'is-swiper' : '' ?>\"\n <? if (is_swiper && swiper_config.navigation) {-?>\n navigation-position=\"<?= swiper_config.navigation_position ?>\"\n navigation-position-md=\"<?= swiper_config.navigation_position_md ?>\"\n navigation-position-xl=\"<?= swiper_config.navigation_position_xl ?>\"\n <? } ?>\n <?= swiper_html ?> <?- tab_list.length === 1 && tab_list[0] !== 'default' ? 'tab-type=\"' + tab_list[0] + '\"' : '' -?>\n>\n <?-\n `<style>\n ${globalThis.Server.getHideOuterBorderStyle(package, wrapperSelector, borderSelector, baseStyle, [imageItemBorder])}\n ${globalThis.Server.getMergeBorderStyle(package, wrapperSelector, itemSelector, borderSelector, baseStyle, (style, screen) => {\n if (isBanner || is_swiper || is_resize || ['module-superiority-5-unit-3','module-superiority-5-unit-5'].includes(package.code)) {\n // ç¹æ®ä¸å¤ç\n return {}\n }\n if (uniform_height) {\n let selectorStyle = style[`#${package.attr_id} ${itemSelector}:nth-child(n+${mergeInfo['cols_' + screen] + 1}) ${borderSelector}`]\n if (selectorStyle?.['margin-top']) {\n selectorStyle['margin-top'] = '' // gridå¸å±ä¸éç¨ï¼ç¨border-topæ¿ä»£\n selectorStyle['border-top'] = 'none'\n }\n }\n return style\n }\n )}\n </style>`\n ?>\n <? if( tab_list.length > 1 && list_config.show_tab) { -?>\n <!-- tabéé¡¹å¡ -->\n <div class=\"tab-header\" tab-style=\"<?= list_config.style_type_tab ?>\">\n <div class=\"unit-product-list__tabs nav\">\n <!-- å建tab项 -->\n <? tab_list.filter(p=>
1!!p).forEach((tabType, index)=>{-?>\n <div data-tabtype=\"<?= tabType -?>\" class=\"nav-item <?= index===0 ? 'active' : '' -?>\">\n <?= tabType -?>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <? if (tab_list.length > 1) { -?>\n <!-- tabé项å¡å
容 -->\n <div class=\"tab-content\">\n <? } ?>\n <? tab_list.forEach((tabType, index) => { -?>\n <? if (tab_list.length > 1) { -?>\n <div tab-type=\"<?= tabType -?>\" class=\"unit-product-list-tab-content <?= index===0 ? '' : 'd-none' -?>\" <?= getSwiperHtml(index) ?>>\n <? } ?>\n <? let productList = data.filter(item => item.tab === tabType) -?>\n <? let listData = tab_list.length > 1 ? productList : data -?>\n <? listData = (!isDetailContent && filter_number) ? listData.slice(filter_number) : listData -?>\n\n <? checkShowMore(listData.length) -?>\n <? let dataLen = show_more ? show_number : listData.length -?>\n <? let borderStartIndexDefault = dataLen - mergeInfo.cols_default -?>\n <? let borderStartIndexMd = dataLen - mergeInfo.cols_md -?>\n <? let borderStartIndexXl = dataLen - mergeInfo.cols_xl -?>\n <? let borderEndIndexDefault = dataLen - (dataLen % mergeInfo.cols_default || mergeInfo.cols_default) -?>\n <? let borderEndIndexMd = dataLen - (dataLen % mergeInfo.cols_md || mergeInfo.cols_md) -?>\n <? let borderEndIndexXl = dataLen - (dataLen % mergeInfo.cols_xl || mergeInfo.cols_xl) -?>\n <? let hasWechat = listData.find(el=>el.title==='Wechat') -?>\n <? if (listData.length > 0) { -?>\n <div class=\"swiper-container <?= is_resize ? 'resize-container' : '' ?> <?= hasWechat?.href ? 'has-wechat' : '' ?>\" direction=\"<?= resize_config && resize_config.direction ?>\">\n <div\n class=\"unit-list__items swiper-wrapper <?= is_swiper ? '' : 'row' ?> <?= uniform_height && !swiper_config.is_swiper ? 'swiper-grid' : '' ?> <?= `gcol-${cols_col} gcol-md-${cols_md} gcol-xl-${cols_xl}` ?> <?= is_swiper && !swiper_config.pagination ? 'no-swiper-pagination' : '' ?>\"\n >\n <? listData.forEach((item, subIndex) => { -?>\n <div\n animate\n class=\"<?-bg_hover_linear?> animate unit-list__item swiper-slide <?= !item.img ? 'no-image' : '' ?> <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?> <?= show_number && subIndex >= show_number && !is_swiper ? 'hide-more-box' : '' ?>\"\n col-last-col=\"<?= ((subIndex === listData.length - 1) || ((subIndex + 1) % mergeInfo.cols_default === 0)).toString() ?>\"\n col-md-last-col=\"<?= ((subIndex === listData.length - 1) || ((subIndex + 1) % mergeInfo.cols_md === 0)).toString() ?>\"\n col-xl-last-col=\"<?= ((subIndex === listData.length - 1) || ((subIndex + 1) % mergeInfo.cols_xl === 0)).toString()?>\"\n col-last-row=\"<?= (subIndex >= listData.length - mergeInfo.cols_default).toString() ?>\"\n col-md-last-row=\"<?= (subIndex >= listData.length - mergeInfo.cols_md).toString() ?>\"\n col-xl-last-row=\"<?= (subIndex >= listData.length - mergeInfo.cols_xl).toString() ?>\"\n col-first-row=\"<?= (subIndex < mergeInfo.cols_default).toString() ?>\"\n col-md-first-row=\"<?= (subIndex < mergeInfo.cols_md).toString() ?>\"\n col-xl-first-row=\"<?= (subIndex < mergeInfo.cols_xl).toString() ?>\"\n data-media=\"<?= item.title ?>\"\n composing-xl=\"<?= composing_xl ?>\"\n even-row=\"<?= checkEvenRow(subIndex) ?>\"\n <? if (item.title === 'Wechat') { -?>\n data-wechatCode=\"<?= item.href ?>\"\n <? } -?>\n >\n <div class=\"unit-list__a\">\n <div\n class=\"unit-list__item-inner d-flex <?= composing_xl ? '': 'flex-column' ?>\"\n <?= package.getLazyListBGString('.unit-list__item-inner') ?>\n point-content_xl=\"<?= point_content_xl?>\"\n point-content_md=\"<?= point_content_md?>\"\n point-content_default=\"<?= point_content_default?>\"\n layout_superiority_xl=\"<?=layout_superiority_xl ?>\"\n layout_superiority_md=\"<?=layout_superiority_md ?>\"\n layout_superiority_default=\"<?=layout_superiority_default ?>\"\n >\n <? if (show_img) { -?>\n <? if (item.cover_url && (item.content_type === 'video' || (item.content_type === 'material' && /\\.mp4/i.test(item.cover_url) || item.is_embed_video))) { -?>\n <a class=\"unit-list__video\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?> content-render=\"product_hover,video_icon\" hover-img=\"true\" <?- ((isDetailContent && item.is_allow_gif && item.video_gif) || (!isDetailContent && item.video_gif)) ? `video-gif=\"${item.video_gif}\"` : '' -?>>
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'video', config: { ...item, config: { ...video_config, ...image_config}, from: from, index: subIndex } } }) -?>\n </a>\n <? } else { -?>\n <? if (item.img) { -?>\n <a class=\"unit-list__image align-self <? if (list_config.target === 'zoom') { -?>unit-list__image--zoom<? }-?>\" <? if (list_config.target !== 'zoom') { -?> href=\"<?= list_config.target === 'block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= (list_config.target==='block'?'_self':list_config.target) || item.target || '_self' ?>\"<? } else { -?>zoom-img=\"true\"<? } -?> rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" content-render=\"product_hover<?= video_config && video_config.icon === '1' ? ',video_icon' : '' ?>\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" <?- hoverImg ? `open-hover=\"${package.content?.hover_img_effect}\" hover-img=\"true\"` : '' -?> <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config, from: from, index: subIndex, hover_img_origin: hoverImg , isDynamic: !isDetailContent } } }) -?>\n <? if ( item.video_url ) { ?> <div class=\"base-video__play\"><i class=\"iconfont icon-action-play\"></i></div> <? } ?>\n <? if (hoverImg && item?.content_id) {\n item.alt = item.title\n -?>\n <div class=\"unit-list-hover__image hover_img_before_load animate__animated <?= hoverImgDuration -?>\">\n <img class=\"base-image__img img-fluid animate__animated <?= hoverImgDuration -?>\" effect-in=\"<?= hoverImgIn -?>\" effect-out=\"<?= hoverImgOut -?>\" lazy-src=\"<?= parseInt(item?.content_id) ? item.hover_img : '' ?>\" alt=\"<?= item.alt ?>\">\n </div>\n <? } -?>\n </a>\n <? } -?>\n <? } -?>\n <? } -?>\n <div class=\"unit-list__text\" <? if (isBanner && !item.video_url) { -?>data-href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" data-target=\"<?= list_config.target || item.target || '_self' ?>\" <? } -?>>\n <div class=\"unit-list__text-inner\">\n <? if ((has_title && show_title) || (has_subtitle && show_subtitle) || (has_description && show_description) || show_content_tag) { -?>\n <div class=\"unit-list__content\">\n <? if (has_title && show_title) { -?>\n <? if (isBanner || is_resize) { -?>\n <div\n class=\"unit-list__title <?= setPageCenter && !hasTitlePadding ? setPageCenterClassName : '' ?>\"\n _html=\"<?= item.title_sign || '' ?>\" toolbar=\"false\"\n text-style=\"<?= list_config.style_type_title ?>\"\n <? if (show_title > 1) { -?>\n display-style=\"<?= show_title ?>\"\n <? } -?>\n <?- list_config.title_animate ? 'content-animate=\"' + list_config.title_animate + '\"' : '' ?>\n ><a\n href=\"<?= list_config.target === 'block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\"\n target=\"<?= (list_config.target==='block'?'_self':list_config.target) || item.target || '_self' ?>\"\n rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\"\n title=\"<?= (item.caption || '').replace(/<[^>]+>/g, '') ?>\"\n ><?- item.title ?>\n </a>\n </div>\n <? } else { -?>\n <div class=\"unit-list__title\" text-style=\"<?= list_config.style_type_title ?>
1\" <? if (show_title > 1) { -?>display-style=\"<?= show_title ?>\"<? } -?> <?- list_config.title_animate ? 'content-animate=\"' + list_config.title_animate + '\"' : '' ?>>\n <a class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.title_sign || '' ?>\" toolbar=\"false\"<? } -?> href=\"<?= list_config.target==='block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" title=\"<?= (item.caption || '').replace(/<[^>]+>/g, '') ?>\"><?- item.title ?></a>\n </div>\n <? } -?>\n <? } -?>\n <? if (show_content_tag && item.tag_list && item.tag_list.length) { -?>\n <div class=\"unit-list__tags\" text-style=\"3\"\n <? if (show_content_tag > 1) { -?>\n display-style=\"<?= show_content_tag ?>\"\n <? } -?>\n >\n <?- item.tag_list.map(item => `<a class=\"unit-list__tag\" href=\"${globalThis.Server.getRinseHref(item.page_url_suffix, site)}\" title=\"${item.title}\">#${item.title}</a>`).join('') ?>\n </div>\n <? } -?>\n <? if (has_subtitle && show_subtitle) { -?>\n <? if (isBanner) { -?>\n <div\n class=\"unit-list__subtitle <?= setPageCenter && !hasSubtitlePadding ? setPageCenterClassName : '' ?>\"\n _html=\"<?= item.subtitle_sign || '' ?>\" toolbar=\"false\"\n text-style=\"<?= list_config.style_type_subtitle ?>\"\n <? if (show_subtitle > 1) { -?>\n display-style=\"<?= show_subtitle ?>\"\n <? } -?>\n ><a\n href=\"<?= list_config.target==='block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\"\n target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\"\n rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\"\n title=\"<?= (item.caption || '').replace(/<[^>]+>/g, '') ?>\"\n ><?- item.subtitle -?>\n </a>\n </div>\n <? } else { -?>\n <div class=\"unit-list__subtitle\" <? if (is_resize) { -?>_html=\"<?= item.subtitle_sign || '' ?>\" toolbar=\"false\"<? } -?> text-style=\"<?= list_config.style_type_subtitle ?>
1\" <? if (show_subtitle > 1) { -?>display-style=\"<?= show_subtitle ?>\"<? } -?>><? if (is_resize) { -?><?- item.subtitle ?><? } else { -?><div class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.subtitle_sign || '' ?>\" toolbar=\"false\"<? } -?>><?- item.subtitle ?></div><? } -?></div>\n <? } -?>\n <? } -?>\n <? if (has_description && show_description) { -?>\n <? const filterHtml = globalThis.Server.removeHtmlTags(`${item?.description || ''}`) -?>\n <? if (isBanner) { -?>\n <div\n class=\"unit-list__description <?= setPageCenter && !hasDescriptionPadding ? setPageCenterClassName : '' ?>\"\n _html=\"<?= item.description_sign || '' ?>\" toolbar=\"false\"\n text-style=\"<?= list_config.style_type_description ?>\"\n title=\"<?- package.content.type === 'detail' ? '' : filterHtml.replace(/<br[\\s\\/]*>/ig, ' ') ?>\"\n <? if (show_description > 1) { -?>\n display-style=\"<?= show_description ?>\"\n <? } -?>\n ><a\n href=\"<?= list_config.target==='block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\"\n target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\"\n rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\"\n title=\"<?= (item.caption || '').replace(/<[^>]+>/g, '') ?>\"\n ><?- package.use_html ? item?.description : filterHtml -?>\n </a>\n </div>\n <? } else { -?>\n <div\n class=\"unit-list__description\"\n <? if (is_resize) { -?>\n _html=\"<?= item.description_sign || '' ?>\" toolbar=\"false\"\n <? } -?>\n text-style=\"<?= list_config.style_type_description ?>\"\n title=\"<?- package.content.type === 'detail' ? '' : filterHtml.replace(/<br[\\s\\/]*>/ig, ' ') ?>\"\n <? if (show_description > 1) { -?>\n display-style=\"<?= show_description ?>\"\n <? } -?>\n ><? if (is_resize) { -?>\n <?- package.use_html ? item?.description : filterHtml ?>\n <? } else { -?>\n <div\n class=\"text_ellipsis\"\n <? if (isDetailContent) { -?>\n _html=\"<?= item.description_sign || '' ?>\" toolbar=\"false\"\n <? } -?>\n ><?- package.use_html ? item?.description : filterHtml -?>\n </div>\n <? } -?>\n </div>\n <? } -?>\n <? } -?>\n </div>\n <? } -?>\n <? if (show_date_show&&(show_date_yyyy || show_date_mm || show_date_dd || show_reads)) { -?>\n <div\n class=\"unit-list__article\"\n <? if (show_date_show > 1) { -?>\n display-style=\"<?= show_date_show ?>\"\n <? } -?>\n style=\"<?= date_and_button&&show_read_more?'position:relative;top:0':'' ?>\"\n >\n <? if (show_date_yyyy || show_date_mm || show_date_dd) { -?>\n <div style=\"display: flex;align-items: center; <?= date_and_button&&show_read_more?'justify-content: space-between':'' ?>\">\n <? let [date_yyyy, date_mm, date_dd] = new Date((show_date_type === 1 && item.add_time ? item.add_time : item.renew_time) * 1000).format('yyyy,MM,dd').split(',') -?>\n <div class=\"unit-list__date\">\n <? if (date_title) { -?><div class=\"unit-list__date-title\"><?= $t(date_title) ?></div><? } -?>
1\n <span class=\"unit-list__date-yyyy\"><?= date_yyyy ?></span>\n <span class=\"unit-list__date-split\"></span>\n <span class=\"unit-list__date-mm\"><?= date_mm ?> </span>\n <span class=\"unit-list__date-split\"></span>\n <span class=\"unit-list__date-dd\"><?= date_dd ?></span>\n </div>\n <? if(date_and_button&&show_read_more){-?>\n <div class=\"read_more\" style=\"margin-top:0 !important;\" button-style=\"<?= list_config.style_type_button ?>\" <? if (show_read_more > 1) { -?>display-style=\"<?= show_read_more ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, description: list_config.button_text || $t('read more'), isDetailContent: isDetailContent, has_nofollow: has_nofollow, target: list_config.target || item.target || '_self',date_and_button:date_and_button } } }) -?>\n </div>\n <? } -?>\n </div>\n <? } -?>\n <? if (show_keywords) { -?>\n <div class=\"unit-list__keywords\">\n <? if (keywords_title && item.meta_keywords) { -?><div class=\"unit-list__keywords-title\"><?= $t(keywords_title) ?></div><? } -?>\n <span><?- item.meta_keywords ?></span>\n </div>\n <? } -?>\n <? if (show_reads) { -?>\n <div class=\"unit-list__reads\">\n <i class=\"iconfont icon-base-eye\"></i>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= formatNum(item.reads) ?></span>\n </div>\n <? } -?>\n </div>\n <? } -?>\n <? if (show_read_more) { -?>\n <? if (list_config.content === 'product') { -?>\n <div class=\"unit-list__product <?= item.price_min > 0 ? '' : 'no-price' ?>\" price-content-id=\"<?= item.content_id -?>\" <? if (show_read_more > 1) { -?>display-style=\"<?= show_read_more ?>\"<? } -?>>\n <? if (isShop) { -?>\n <div class=\"unit-list__price\">\n <div class=\"unit-list__price-min\">\n <i>$</i><span content-render=\"price_min\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= item.price_min ?></span>\n </div>\n <div class=\"unit-list__price-max\">\n <i>$</i><span content-render=\"price_max\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= item.price_max ?></span>\n </div>\n </div>\n <? } -?>\n <div class=\"unit-list__extend\">\n <div class=\"unit-list__cart text-capitalize\">\n <i class=\"iconfont icon-base-cart-lighter\"></i>\n <a href=\"<?= list_config.target==='block'?'jacascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\"><?= $t('Add to Cart') ?></a>\n </div>\n <div class=\"unit-list__inquire text-capitalize\">\n <a href=\"<?= list_config.target === 'block'?'javascript:;':globalThis.Server.getRinseHref(show_inquiry === 1 ? 'javascript:;' : item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\"><?= list_config.button_text || $t('Inquiry') ?></a>\n </div>\n <? if (show_like) { -?>\n <div class=\"unit-list__like\" title=\"<?= $t('Like') ?>\" pro-id=\"<?= item.id ?>\">\n <i class=\"iconfont icon-base-collect\"></i>\n </div>\n <? } -?>\n </div>\n </div>\n <? } else if ((!isDetailContent || !list_config.hide_button || !list_config.hide_button.includes(subIndex + 1)) && !date_and_button) { -?>\n <div class=\"read_more <?= setPageCenter && !hasReadMorePadding? setPageCenterClassName : '' ?>\" button-style=\"<?= list_config.style_type_button ?>\" <? if (show_read_more > 1) { -?>display-style=\"<?= show_read_more ?>\"<? } -?>>
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, description: list_config.button_text || $t('read more'), isDetailContent: isDetailContent, has_nofollow: has_nofollow, target: list_config.target || item.target || '_self' } } }) -?>\n </div>\n <? } -?>\n <? } -?>\n <? if (show_quote_list) { ?>\n <div class=\"unit-list__quote\" content-id=\"<?= item.content_id ?>\">\n <div class=\"unit-list__quoteAdd\">\n <i class=\"iconfont icon-action-add\"></i>\n <span><?= $t('Add to Quote List') ?></span>\n </div>\n <a class=\"unit-list__quoteList\" href=\"<?= globalThis.Server.getRinseHref('/inquire_form.html?type=quoteList',site) ?>\">\n <div>\n <?= $t('Browse the list') ?> â\n </div>\n </a>\n </div>\n <? } ?>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n <? }) -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.pagination) { -?>\n <div class=\"unit-list__pagination swiper-pagination\"></div>\n <? } -?>\n <? if (swiper_config.navigation) { -?>\n <div class=\"unit-list__button-prev swiper-button-prev\"></div>\n <div class=\"unit-list__button-next swiper-button-next\"></div>\n <? } -?>\n <? if (swiper_config.scrollbar) { -?>\n <div class=\"unit-list__scrollbar swiper-scrollbar\"></div>\n <? } -?>\n <? } -?>\n <? if(is_resize) { -?>\n <div class=\"unit-list__split-line\" >\n <div class=\"unit-list__dragger\">\n <span class=\"unit-list__icon-resize iconfont icon-double-arrow\"></span>\n </div>\n </div>\n <? } -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.navigation && [swiper_config.navigation_position, swiper_config.navigation_position_md, swiper_config.navigation_position_xl].includes('outside')) { -?>\n <div class=\"unit-list__button-prev swiper-button-prev swiper-button-prev--outside\"></div>\n <div class=\"unit-list__button-next swiper-button-next swiper-button-next--outside\"></div>\n <? } -?>\n <? } -?>\n <? } else if(isNow || isUpcoming) { -?>\n <div class=\"discount_page_no_data d-none\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n </div>\n <? } else { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <? if (tab_list.length > 1) { -?> </div><? } -?>\n <? }) ?>\n <? if (tab_list.length > 1) { -?></div><? } -?>\n\n <? if (tab_list.length === 0) { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <? if (show_read_more && show_inquiry === 1) { -?>\n <div class=\"d-none\">\n <link rel=\"stylesheet\" href=\"<?- globalThis.Server.versionUrl('/assets/css/unit/inquire-list.css') ?>\">\n <div class=\"inquiry-modal-inner\">\n <div class=\"inquiry-modal__description\">\n <?= $t('Please fill out the form below to request a quote or to request more information about us. please be as detailed as possible in your message, and we will get back to you as soon as possible with a response. weâre ready to start working on your new project, contact us now to get started.') ?>\n </div>\n <div class=\"row\">\n <div class=\"col col-12 col-md-12 col-xl-6 py-4\">\n <?- include(getViewsPath(`/package/unit/form`), { package } ) -?>\n </div>\n <div class=\"col col-12 col-md-12 col-xl-6 py-4\">\n <?- include(getViewsPath(`/package/unit/inquire-list`), { package } ) -?>\n </div>\n </div>\n </div>\n </div>\n <? } -?>\n <? if (show_more) { -?>\n <div class=\"show-more-box\" expand-button-style=\"<?= list_config.style_type_expand ?>\" text-style=\"3\">\n <div class=\"base-more\">\n <div class=\"show-more-inner\">\n <div class=\"d-inline-block\"><?- list_config.expand_button_text || $t('Expand More') ?></div>\n <i class=\"iconfont icon-action-bottom-lighter\"></i>\n </div>\n </div>\n </div>\n <? } -?>\n</div>\n<div class=\"page_no_data d-none\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/list.js',\n name: 'ScriptList',\n attrId: '<?= package.attr_id ?>',\n open_hover: \"<?-package.content?.hover_img_effect ?>\",\n content_type: '<?= package.content.type ?>',\n pageInfo: '<?= JSON.stringify(pageInfo) ?>',\n hoverImg: '<?-package.content.hover_img?>',\n config: '<?= JSON.stringify({...list_config, resize: resize_config, swiper: swiper_config, video: video_config, image: image_config}) ?>',\n colInfo: '<?= JSON.stringify(colInfo) ?>'\n })\n</script>\n","/package/unit/list_sort":"<?\n let menu = site.nav\n let use_nav = true\n let configList = package.config['list_sort'].column.split(',') || []\n let type = parseInt(package.config['list_sort'].style_type || 1)\n let column_style = parseInt(package.config['list_sort'].column_style || 1)\n let column_type = parseInt(package.config['list_sort'].column_type || 1)\n let column = configList.filter(item => item).map(item => Number(item))\n let has_nofollow = package.config.list_sort.has_nofollow\n if (column.length > 0) {\n menu = site.nav_all.filter(item => column.includes(item.id)) \n use_nav = false\n } else if (page.children.length > 0) {\n let subPage = page.children[0] || {}\n use_nav = false\n menu = site.nav.filter(item => item.id !== undefined && item.id === subPage.id) \n menu.forEach(item => {\n item.is_active = true\n item.is_current = true\n })\n if (type === 3) {\n menu = menu[0].children\n }\n }\n let style_type_text = package.config.text?.style_type_text || \"3\"\n-?>\n<? if (menu.length > 0) { -?>\n<div class=\"unit-list-sort <?= type === 3 ? 'unit-list-sort_column' : '' ?>\">\n <div class=\"<?= type === 3 ? 'sortswiper swiper-container' : '' ?>\">
1\n <div class=\"unit-list-sort__menu <?= type === 3 ? 'swiper-wrapper' : '' ?> <?= type === 3 && column_type === 2 ? 'wrap-menu' : '' ?>\">\n <? menu.forEach((item, index) => { ?>\n <div class=\"unit-list-sort__menu-item <?= type === 3 ? 'swiper-slide' : '' ?> <?= item.is_active ? 'active' : '' ?>\" id=\"<?= item.id ?>\">\n <a href=\"<?= globalThis.Server.getRinseHref(item.open_type === 3 ? 'javascript:;' : item.jump_url ? item.jump_url : item.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <div class=\"unit-list-sort__link <?= item.is_current ? 'unit-list-sort__link-current' : '' ?> <?= type !== 1 ? 'unit-list-sort__link-father' : '' ?>\">\n <? if (item.children.length > 0 && !use_nav) { ?>\n <div class=\"unit-list-sort__menu-icon\">\n <? if (type !== 2) { -?>\n <span class=\"iconfont icon-action-bottom-lighter <?= type === 3 ? 'pl-1' : '' ?>\"></span>\n <? } ?>\n </div>\n <? } ?>\n <span class=\"unit-list-sort__title\" text-style=\"<?= style_type_text ?>\"><?= item.title ?></span>\n </div>\n </a>\n <? if (item.children.length > 0 && !use_nav) { -?>\n <div class=\"unit-list-sort__menu-content <?= type !== 1 ? 'unit-list-sort__son' : '' ?>\">\n <? item.children.forEach(son => { ?>\n <div class=\"unit-list-sort__menu-item <?= son.is_active ? 'active' : '' ?>\">\n <a href=\"<?= globalThis.Server.getRinseHref(son.open_type === 3 ? 'javascript:;' : son.jump_url ? son.jump_url : son.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <div class=\"unit-list-sort__link <?= son.is_current ? 'unit-list-sort__link-current' : '' ?> <?= type !== 1 ? 'unit-list-sort__link-son' : '' ?>\">\n <div class=\"unit-list-sort__menu-icon\">\n <? if (son.children.length > 0) { -?>\n <? if (type === 2) { -?>\n <span class=\"parent_icon_add\">+</span>\n <span class=\"parent_icon_reduce\">-</span>\n <? } else {?>\n <span class=\"iconfont icon-action-bottom-lighter\"></span>\n <? } ?>\n <? } ?>\n </div>\n <span class=\"unit-list-sort__title\" text-style=\"3\"><?= son.title ?></span>\n </div>\n </a>\n <? if (son.children.length > 0) { -?>\n <div class=\"unit-list-sort__menu-content <?= type !== 1 ? 'unit-list-sort__grandson' : '' ?>\">\n <? son.children.forEach(grandson => { ?>\n <div class=\"unit-list-sort__menu-item <?= grandson.is_active ? type === 2?'fill-active':'active' : '' ?>\">\n <a href=\"<?= globalThis.Server.getRinseHref(grandson.open_type === 3 ? 'javascript:;' : grandson.jump_url ? grandson.jump_url : grandson.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <div class=\"unit-list-sort__link <?= grandson.is_current ? 'unit-list-sort__link-current' : '' ?> <?= type !== 1 ? 'unit-list-sort__link-grandson menu_item_expand' : '' ?>\">\n <div class=\"unit-list-sort__menu-icon\">\n <? if (grandson.children.length > 0) { -?>\n <span class=\"iconfont icon-action-bottom-lighter\"></span>\n <? } ?>\n </div>\n <span class=\"unit-list-sort__title\" text-style=\"3\"><?= grandson.title ?></span>\n </div>\n </a>\n <? if (grandson.children.length > 0) { -?>\n <div class=\"unit-list-sort__menu-content <?= type !== 1 ? 'unit-list-sort__grateson' : '' ?>\">\n <? grandson.children.forEach(grateson => { ?>\n <div class=\"unit-list-sort__menu-item <?= grateson.is_active ? 'active' : '' ?>\">\n <a href=\"<?= globalThis.Server.getRinseHref(grateson.open_type === 3 ? 'javascript:;' : grateson.jump_url ? grateson.jump_url : grateson.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <div class=\"unit-list-sort__link <?= grateson.is_current ? 'unit-list-sort__link-current' : '' ?> <?= type !== 1 ? 'menu_item_expand' : '' ?>\">\n <? if (type !== 2) { -?>\n <div class=\"unit-list-sort__menu-icon\"></div>\n <? } ?>
1\n <span class=\"unit-list-sort__title\" text-style=\"3\"><?= grateson.title ?></span>\n </div>\n </a>\n </div>\n <? }) ?>\n </div>\n <? } ?>\n </div>\n <? }) ?>\n </div>\n <? } ?>\n </div>\n <? }) ?>\n </div>\n <? } ?>\n </div>\n <? }) ?>\n </div>\n </div>\n <? if (type === 3) { -?>\n <div class=\"swiper-button-prev prev\"></div>\n <div class=\"swiper-button-next next\"></div>\n <? if (column_style === 1) { -?>\n <div class=\"unit-list-sort__submenu unit-list-sort__subcontent unit-list-sort__menu-content\"></div>\n <? } else { -?>\n <div class=\"unit-list-sort__submenu unit-list-sort__subcontent-flat unit-list-sort__menu-content\" style=\"height: 0px;\">\n <? menu.forEach((item, index) => { ?>\n <div class=\"list-sort-flat_wrapper container-<?= item.id ?>\">\n <div class=\"container-inner\">\n <!-- äºçº§ -->\n <? item.children.forEach((twoItem, twoIndex) => { ?>\n <div class=\"unit-list-sort__son unit-list-sort__menu-item\">\n <a href=\"<?= globalThis.Server.getRinseHref(twoItem.open_type === 3 ? 'javascript:;' : twoItem.jump_url ? twoItem.jump_url : twoItem.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <div class=\"unit-list-sort__link unit-list-sort__link-son\">\n <div class=\"unit-list-sort__title\" text-style=\"3\"><?= twoItem.title ?></div>\n </div>\n </a>\n <!-- ä¸çº§ -->\n <? twoItem.children.forEach((threeItem, threeIndex) => { ?>\n <div class=\"unit-list-sort__grandson unit-list-sort__menu-item\">\n <a href=\"<?= globalThis.Server.getRinseHref(threeItem.open_type === 3 ? 'javascript:;' : threeItem.jump_url ? threeItem.jump_url : threeItem.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <div class=\"unit-list-sort__link unit-list-sort__link-grandson\">\n <div class=\"unit-list-sort__title\" text-style=\"3\"><?= threeItem.title ?></div>\n </div>\n </a>\n <!-- å级 -->\n <? threeItem.children.forEach((fourItem, fourIndex) => { ?>\n <div class=\"unit-list-sort__grateson unit-list-sort__menu-item\">\n <a href=\"<?= globalThis.Server.getRinseHref(fourItem.open_type === 3 ? 'javascript:;' : fourItem.jump_url ? fourItem.jump_url : fourItem.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\">\n <div class=\"unit-list-sort__link unit-list-sort__link-grateson\">\n <div class=\"unit-list-sort__title\" text-style=\"3\"><?= fourItem.title ?></div>\n </div>\n </a>\n </div>\n <? }) ?>\n </div>\n <? }) ?>\n </div>\n <? }) ?>\n </div>\n </div>\n <? }) ?>\n </div>\n <div class=\"navigation-submenu__cover\"></div>\n <? } -?>\n <? } -?>\n <? if (ctx.query.design) { -?>\n <script>\n // è£
ä¿®æ¶ï¼éè¦æ¯æ¬¡ä¿®æ¹éæ°æ§è¡list-sort.jsï¼å°è£
ä¿®æ¾ç¤ºçä¾§è¾¹æ æªå°å¤´é¨\n window.scriptQueue.push({\n file: '/assets/js/unit/list-sort.js',\n name: 'ScriptListSort',\n attrId: '<?= package.attr_id ?>',\n column: '<?= package.config.list_sort.column ?>',\n type: '<?= type ?>',\n\t\t foldMethod: '<?= package.config.list_sort.fold_method ?>',\n\t\t config: '<?= JSON.stringify(package.config.list_sort) ?>'\n })\n </script>\n <? } else { -?>\n <script>\n (function () {\n\n // window.scriptQueue.push({\n // file: '/assets/js/unit/list-sort.js',\n // name: 'ScriptListSort',\n // attrId: '<?= package.attr_id ?>',\n // column: '<?= package.config.list_sort.column ?>',\n // type: '<?= type ?>'\n // })\n function initScriptAfterAppInit() {\n window.removeEventListener('appInitEnd', initScriptAfterAppInit);\n window.app.initScriptQueue([\n {\n file: '/assets/js/unit/list-sort.js',\n name: 'ScriptListSort',\n attrId: '<?= package.attr_id ?>',\n column: '<?= package.config.list_sort.column ?>',\n type: '<?= type ?>',\n\t\t foldMethod: '<?= package.config.list_sort.fold_method ?>',\n\t\t config: '<?= JSON.stringify(package.config.list_sort) ?>'\n }\n ]);\n }\n\n window.addEventListener('appInitEnd', initScriptAfterAppInit);\n })();\n </script>\n<? } -?>\n</div>\n\n<? if (ctx.query.design) { -?>\n <!-- ç§»å¨ç«¯å¤´é¨å¯¼èª -->\n <?- include(getViewsPath(`/package/unit/list_sort_m`), { package: package }) -?>\n<? } -?>\n<? } else { -?>\n<?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n<? } -?>","/package/unit/list_sort_m":"<?\n let menu = []\n let configList = package.config['list_sort'].column.split(',') || []\n let type = parseInt(package.config['list_sort'].type || 1)\n let column = configList.filter(item => item).map(item => Number(item))\n let has_nofollow = package.config.list_sort.has_nofollow\n if (page.children.length > 0) {\n let list = site.nav\n let subPage = page.children[0] || {}\n if (column.length > 0) menu = site.nav_all.filter(item => column.includes(item.id))\n else menu = list.filter(item => item.id !== undefined && item.id === subPage.id)\n }\n const menuForMobi = (column.length > 0) ? menu : menu.reduce((prev, next) => prev.concat(next.children), []) ;\n const pkgIdForMobi = `${package.attr_id}_by-m`;\n const bg_val_defalut = package.style.default.default['background-color'] || package.style.default.xl['background-color']\n const bg_val_md = package.style.default.md['background-color'] || package.style.default.default['background-color']\n const color_val_defalut = package.style.default.default['color'] || package.style.default.xl['color']\n const color_val_md = package.style.default.md['color'] || package.style.default.default['color']\n?>\n<? if ( menuForMobi?.length ) { ?>\n<div id=\"<?- pkgIdForMobi -?>\" class=\"unit-sort-menu_by-m\" style=\"--bg-defalut: <?= bg_val_defalut ?>;--bg-md: <?= bg_val_md ?>;--color-default: <?= color_val_defalut ?>;--color-md: <?= color_val_md ?>;\">\n <script data-id=\"<?- pkgIdForMobi -?>\" type=\"application/json\"><?-JSON.stringify(menuForMobi)-?></script>\n <div class=\"unit-sort-menu_body\">\n <div>\n <div class=\"unit-sort-menu_list\">
1\n <? menuForMobi.forEach((menu, menuIndex) => { ?>\n <div class=\"unit-sort-menu_item\">\n <a href=\"<?- menu.href ?>\" data-index=\"<?- menuIndex ?>\">\n <span class=\"unit-sort-menu_name follow-font-family\" text-style=\"3\"><?- menu.title ?></span>\n <? if(menu.children?.length) { ?> <span class=\"iconfont-box iconfont icon-action-bottom-lighter\"></span><? } ?>\n </a>\n </div>\n <? }) ?>\n </div>\n <div class=\"menu-show-icon\">\n <span class=\"iconfont-box iconfont icon-base-list\"></span>\n </div>\n </div>\n <div class=\"unit-sort-menu_content-box sort-menu-content_item active\"></div>\n </div>\n <div class=\"unit-sort-menu_line\"></div>\n</div>\n<? } ?>","/package/unit/login":"<div class=\"unit-login\">\n <form method=\"post\" class=\"needs-validation\" id=\"<?= `login-${package.attr_id}` ?>\" login novalidate>\n <div class=\"form-row\">\n <div class=\"unit-login__item form-group col-12\">\n <label class=\"unit-form__item-inner\">\n <span class=\"unit-form__label col-form-label\">\n <?= $t('e-mail') ?>\n </span>\n <input class=\"unit-login__control form-control\" type=\"email\" name=\"username\" id=\"username\"\n placeholder=\"<?= $t('e-mail') ?>\" required pattern=\"[a-zA-Z0-9_\\-]+(\\.[a-zA-Z0-9_\\-]+)*@[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*(\\.[a-zA-Z]{2,})$\" />\n </label>\n </div>\n <div class=\"unit-login__item form-group col-12\">\n <label class=\"unit-form__item-inner\">\n <span class=\"unit-form__label col-form-label\">\n <?= $t('password') ?>\n </span>\n <input class=\"unit-login__control form-control\" type=\"password\" name=\"password\" id=\"password\"\n placeholder=\"<?= $t('password') ?>\" required minlength=6 />\n </label>\n </div>\n <div class=\"unit-login__item form-group col-12\">\n <div class=\"unit-login__submit-wrap d-flex\">\n <button class=\"unit-login__submit btn btn-main col-5\" type=\"submit\">\n <?= $t('sign in') ?>\n </button>\n <a href=\"<?= globalThis.Server.getRinseHref('/findpwd.html', site) -?>\" class=\"col-7 unit-login__forget\">\n <span class=\"text-capitalize\"><?= $t('Forgot your password') ?>?</span></a>\n </div>\n </div>\n <div class=\"unit-login__item form-group col-12\">\n <div class=\"unit-login__nav row\">\n <div class=\"col\">\n <span class=\"\">\n <?= $t('have not an account yet?') ?> <a href=\"<?= globalThis.Server.getRinseHref('/register.html', site) -?>\" style=\"color:rgb(var(--rgb-color))\">\n <?= $t('sign up') ?> â\n </a>\n </span>\n </div>\n </div>\n </div>\n </div>\n </form>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/login.js',\n name: 'ScriptLogin',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/logistics-tracking":"<div class=\"logistics-tracking\" id=\"<?= package.attr_id ?>\">\n <!-- æªç»å½ -->\n <div button-style=\"2\" login-hide>\n <div class=\"base-button\">\n <a class=\"base-button__inner btn custom-color\" href=\"<?= globalThis.Server.getRinseHref('/login.html', site) ?>\">\n <?= $t('Log in') ?>\n </a>\n </div>\n </div>\n\n <!-- <div button-style=\"1\" @click=\"globalThis.Server.getRinseHref('/login.html', site)\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Log In'), target: '_self' } } }) -?>\n </div> -->\n <!-- å·²ç»å½ -->\n <div login-show>\n <div v-if=\"list.length\">\n <!-- å表 -->\n <div class=\"logistics-table\" v-show=\"step === 1\">\n <table text-style=\"3\">\n <thead>\n <tr>\n <th></th>\n <th>Invoice No.</th>\n <th>Customer PO</th>\n <th>ETD</th>\n <th>ETA</th>\n <th>Invoice amount(US$)</th>\n <th>Payment Due date</th>\n <th>Days over due</th>\n <th>Open amount (US$)</th>\n <th>Rebate credit</th>\n <th>Quantity</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item,i) in list\" :key=\"item.id\">\n <td>{{ i + 1 }}</td>\n <td>{{item.invoice_no || '-'}}</td>\n <td>{{item.customer_po || '-'}}</td>\n <td>{{item.etd || '-'}}</td>\n <td>{{item.eta || '-'}}</td>\n <td>{{item.invoice_amount || '-'}}</td>\n <td>{{item.payment_due_date || '-'}}</td>\n <td>{{item.days_over_due || '-'}}</td>\n <td>{{item.open_amount || '-'}}</td>\n <td>{{item.rebate_credit || '-'}}</td>\n <td class=\"color-007bff pointer\" @click=\"clickDetail(item)\">
1Details</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- 详æ
-->\n <div v-show=\"step === 2\">\n <div class=\"logistics-detail\">\n <div class=\"logistics-title\">\n <span text-style=\"2\">Basic Information</span>\n <span text-style=\"2\" class=\"color-007bff pointer\" @click=\"step = 1\">return</span>\n </div>\n <table text-style=\"3\">\n <tr>\n <td>Invoice No.</td>\n <td>{{detail.invoice_no || '-'}}</td>\n <td>Customer PO</td>\n <td>{{detail.customer_po || '-'}}</td>\n </tr>\n <tr>\n <td>ETD</td>\n <td>{{detail.etd || '-'}}</td>\n <td>ETA</td>\n <td>{{detail.eta || '-'}}</td>\n </tr>\n <tr>\n <td>Invoice amount(US$)</td>\n <td>{{detail.invoice_amount || '-'}}</td>\n <td>Open amount(US$)</td>\n <td>{{detail.open_amount || '-'}}</td>\n <td>Rebate credit</td>\n <td>{{detail.rebate_credit || '-'}}</td>\n </tr>\n <tr>\n <td>Payment Due date</td>\n <td>{{detail.payment_due_date || '-'}}</td>\n <td>Days over due</td>\n <td>{{detail.days_over_due || '-'}}</td>\n </tr>\n <tr>\n <td>Shipping documents</td>\n <td class=\"lt-dlfiles\">\n <div v-for=\"(item,i) in detail.attachments\" :key=\"i\" @click=\"downloadFile(item)\">\n <span>{{item.file_name}}</span>\n <i class=\"iconfont icon-download\"></i>\n </div>\n </td>\n </tr>\n </table>\n </div>\n\n <div class=\"logistics-detail\">\n <div class=\"logistics-title\">\n <span text-style=\"2\">Logistics status</span>\n <!-- <span>return</span> -->\n </div>\n <table text-style=\"3\">\n <tr>\n <td>B/L Number</td>\n <td>{{detail.bl_number || '-'}}</td>\n <td>Tracking Website</td>\n <td>\n <a v-if=\"detail.tracking_website_prefix\" class=\"color-007bff\" :href=\"detail.tracking_website_prefix\"\n target=\"_blank\">{{detail.tracking_website_prefix}}</a>\n <span v-else>-</span>\n </td>\n <td></td>\n <td></td>\n </tr>\n <tr>\n <td>Remark</td>\n <td>{{detail.remark || '-'}}</td>\n <!-- <td>ETA</td>\n <td>2026/09/12 09:12:12</td> -->\n </tr>\n <!-- <tr> -->\n <!-- <td>Invoice amount(US$)</td> -->\n <!-- <td>12,123</td>\n <td>Open amount(US$)</td>\n <td>10,000</td>\n <td>Rebate credit</td>\n <td>10,000</td> -->\n <!-- </tr> -->\n </table>\n </div>\n\n <div class=\"logistics-title\">\n <span text-style=\"2\">Detailed products</span>\n <!-- <span>return</span> -->\n </div>\n <div class=\"logistics-table\">\n <table text-style=\"3\">\n <thead>\n <tr>\n <th>Product Name</th>\n <th>Material</th>\n <th>Size</th>\n <th>More Specs</th>\n <th>Quantity</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item,i) in detail.products\" :key=\"i\">\n <td>{{item.product_name || '-'}}</td>\n <td>{{item.material || '-'}}</td>\n <td>{{item.size || '-'}}</td>\n <td>{{item.more_specs || '-'}}</td>\n <td>{{item.quantity || '-'}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n </div>\n\n <div v-show=\"!list.length\" class=\"lt-no-data\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n </div>\n\n </div>\n\n</div>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/logistics-tracking.js',\n name: 'ScriptLogisticsTracking',\n attrId: '<?= package.attr_id ?>'\n })\n</script>
1","/package/unit/logo":"<?\n let image = {}\n image.img = site.logo_url || 'https://img.yfisher.com/logo2xyf.png'\n image.config = package.config.image\n image.type = 'logo'\n image.from = 'logo'\n?>\n<div class=\"unit-logo\">\n <a class=\"h-100\" href=\"<?= globalThis.Server.getRinseHref('/', site) ?>\" >\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: image } }) -?>\n <? if (ctx.state.page.page_type === 'index') { -?>\n <span hidden><?= ctx.state.site.company_brand_name -?></span>\n <? } -?>\n </a>\n</div>","/package/unit/map":"<?\n let map_config = package.config.map\n let map_src = map_config.src\n-?>\n<div class=\"unit-map\">\n <iframe class=\"unit-map__iframe\" lazy-src=\"<?= map_src ?>\" frameborder=\"0\"></iframe>\n</div>","/package/unit/matching-product":"<div class=\"unit-matching-product\">\n <link rel=\"stylesheet\" href=\"/assets/plugins/quick-search.css\">\n <div class=\"unit-matching-product__box\" :class=\"{'is-success': result.status}\">\n <span class=\"iconfont d-flex\" :class=\"[result.status ? 'icon-base-success-fill' : 'icon-base-error-fill']\"></span>\n <div class=\"unit-matching-product__box-text\">\n <p v-if=\"is_default\"><?= $t('Please confirm whether the parts match the model') ?>!</p>\n <p v-else>\n <span v-if=\"result.status\"><?= $t('Exact fit for your') ?></span> \n <span v-else><?= $t('Doesnât fit your') ?></span> \n {{ result.content }}\n </p>\n <div class=\"unit-matching-product__box-btn mt-2\">\n <a href=\"<?= globalThis.Server.getRinseHref('/search.html', site) -?>\" v-if=\"!is_default\"><?= $t('View Correct Part') ?></a>\n <span class=\"mr-4\" v-if=\"!is_default\"></span>\n <a href=\"javascript:;\" @click=\"showModal\"><?= $t('Change Vehicle') ?></a>\n </div>\n </div>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/matching-product.js',\n name: 'ScriptMatchingProduct',\n attrId: '<?= package.attr_id ?>',\n attrList: '<?- JSON.stringify(page.linkage_attr_list) ?>'\n })\n</script>","/package/unit/multi-language":"\n<div class=\"unit-multi-language\">\n <style>.flags-sprite-loader{background-image: none !important;}</style>\n <div class=\"unit-multi-language__items flags-sprite-loader\" style=\"--lazy-src:url(/assets/images/flags-sprite.webp)\">\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/multi-language.js',\n name: 'ScriptMultiLanguage',\n attrId: '<?= package.attr_id ?>',\n language: '<?= JSON.stringify(site.language_list) ?>',\n languageCode: '<?= site.language_code ?>'\n })\n </script>\n</div>\n","/package/unit/page-content-description":"<? \n let description = package.content.data.length ? (package.content.data[0]['description'] || '') : ''\n let style_type_text = package.config.text ? (package.config.text.style_type_text || '3') : '3'\n?>\n<? if (description) { ?>\n<div class=\"unit-page-content-description\" text-style=\"<?= style_type_text ?>\"><?- globalThis.Server.getRinseHTML(description, site, 'needLazy') ?></div>\n<? } ?>","/package/unit/page-desc":"<? if (page.page_description) { ?>\n<div class=\"unit-page-page_description\" text-style=\"<?= package.config.text.style_type_text || '' ?>\"><?- globalThis.Server.getRinseHTML(page.page_description, site, 'needLazy') ?></div>\n<? } else if (ctx.query.design) { ?>\n <div class=\"alert alert-light border\" role=\"alert\">\n 请å¨äºç«è£
ä¿®--页é¢--æ¾å°å½å页é¢--éæ©ç¼è¾é¡µé¢æ·»å æ ç®æè¿°å
容\n </div>\n<? } ?>","/package/unit/page-image-desc":"<div package-group=\"cell\" class=\"row no-gutters page-image-desc\">\n\t<div package-item=\"cell\" class=\"col col-12 col-md-12 col-xl-6\">\n\t\t<div package-group=\"unit\" class=\"\">\n\t\t\t<div class=\"base-polymerize_multiple_detail_2-unit-1__wrapper\"\n\t\t\tanimate=\"\" package-item=\"unit\" package-type=\"page-title\" package-unit-type=\"page-title\">\n\t\t\t\t<div class=\"unit-page-title\" text-style=\"1\">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"base-polymerize_multiple_detail-unit-2__wrapper\"\n\t\t\tanimate=\"\" package-item=\"unit\" package-type=\"page-desc\" package-unit-type=\"page-desc\">\n\t\t\t\t<div class=\"unit-page-page_description\" text-style=\"\">\n\t\t\t\t\t<p>\n\t\t\t\t\t\tThe heat pads for sale is a good catch in the market. Since launched,\n\t\t\t\t\t\tthe product has won incessant praises for its appearance and high performance.\n\t\t\t\t\t\tWe have employed professional designers who are style-conscious always\n\t\t\t\t\t\tkeeping updating the design process. It turns out their efforts finally\n\t\t\t\t\t\tgot paid. In addition, using the first-rate materials and adopting the\n\t\t\t\t\t\tlatest advanced technology, the product wins its fame for its durability\n\t\t\t\t\t\tand high quality.\n\t\t\t\t\t</p>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tWhen customers search the product online, they would find åæ°ç§æ frequently\n\t\t\t\t\t\tmentioned. We establish the brand identity for our trending products, all-around\n\t\t\t\t\t\tone-stop service, and attention to details. The products we produce are\n\t\t\t\t\t\tbased on customer feedback, acute market trend anal
1ysis and compliance\n\t\t\t\t\t\twith the latest standards. They greatly upgrade customer experience and\n\t\t\t\t\t\tattract exposure online. The brand awareness is continuously improved.\n\t\t\t\t\t</p>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tWe have professional staff forming an efficient service team. After confirming\n\t\t\t\t\t\tthe receipt, customers can enjoy worry-free services in a fast manner at\n\t\t\t\t\t\tæçç«ç¹. Our after-sales team regularly participate in the service training\n\t\t\t\t\t\tconducted by industry experts. The staff usually show great passion and\n\t\t\t\t\t\tenthusiasm about these activities and are good at applying theoretical\n\t\t\t\t\t\tknowledge to practice - serving customers. Thanks to them, the goal of\n\t\t\t\t\t\tbeing a responsive enterprise has been achieved.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div package-item=\"cell\" class=\"col col-12 col-md-12 col-xl-6\">\n\t\t<div package-group=\"unit\" class=\"\">\n\t\t\t<div class=\"base-polymerize_multiple_detail-cell-2-unit-1__wrapper\"\n\t\t\tanimate=\"\" package-item=\"unit\" package-type=\"page-image\" package-unit-type=\"page-image\">\n\t\t\t\t<div class=\"unit-page-page_image\">\n\t\t\t\t\t<img src=\"https://img.yfisher.com/r983/1727236314935-25d888picb3wjpg-0.jpg\"\n\t\t\t\t\talt=\"\">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<style>\n .page-image-desc .unit-page-title{font-size: 22px;padding-bottom:1vw;font-weight: 600;}\n .page-image-desc .unit-page-page_image img{width:100%;}\n .page-image-desc .unit-page-page_description{color:#4E5969; font-size: 18px;}\n @media (min-width: 768px) {\n .page-image-desc .unit-page-title{font-size: 32px;padding-bottom:1vw;}\n }\n @media (min-width: 1200px) {\n .page-image-desc .unit-page-title{font-size: 36px;padding-bottom:1vw;}\n }\n</style>","/package/unit/page-image":"<?\nlet image_config = {}\nlet album_config = {}\nlet thumbSizes = {}\n\n// ææºç«¯AI产åä¸»å¾ é«åº¦\nconst AI_ALBUM_IMG_SIZE_PHONE = 350\n// PAD PC AI产åä¸»å¾ é«åº¦\nconst AI_ALBUM_IMG_SIZE = 650\n\nimage_config.instant_load = 1\nalbum_config.instant_load = 1 // ç¸å缩ç¥å¾ç«å³å è½½\n\nfunction eachAlbumCfg(cfg, album_list, extCfg) {\n const mapCfg = {}\n let loading = 'eager' ; // HTMLImgElement loading attribute\n let fetchpriority = 'high'; // HTMLImgElement fetchpriority attribute\n const imgCfg = {\n ...extCfg,\n cfg: { ...cfg },\n fetchpriority,\n loading\n };\n mapCfg[0] = imgCfg\n return mapCfg\n}\nthumbSizes = { type: 'height', phone: AI_ALBUM_IMG_SIZE_PHONE, md: AI_ALBUM_IMG_SIZE, xl: AI_ALBUM_IMG_SIZE } // åºå®å°ºå¯¸ï¼image_item__picture 为1æ¶çæ\nconst aiImgCfg = { thumbSizes, quality: 80, image_item__picture: 1 }\nconst mapImgCfg = eachAlbumCfg(image_config, '', aiImgCfg)\nconst imgCfg = mapImgCfg\n?>\n<? if (page.detail_thumb) { ?>\n<div class=\"unit-page-page_image\">\n <!-- <img src=\"<?=page.detail_thumb?>\" alt=\"\"> -->\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: {img:page.detail_thumb,...imgCfg[0], config: imgCfg[0].cfg, from: '' } } }) -?>\n</div>\n<? } else if (ctx.query.design) { ?>\n\n<? } ?>","/package/unit/page-title":"<?\n let style_type_text = package.config.text.style_type_text\n let heading_type = package.config.text.heading_type\n let need_h1 = !page.isDetail && !template.otherData.html_has_h1 && !template.otherData.config_has_h1 && !page.h1_counter\n if (need_h1) {\n if (heading_type === '0' || heading_type === '1') {\n heading_type = '1'\n page.h1_counter ++\n }\n }\n-?>\n<div class=\"unit-page-title\" text-style=\"<?= style_type_text ?>\"><? if (heading_type !== '0') { ?><h<?= heading_type ?> class=\"nostyle\"><? } ?><?= page.content_type == 9 ? page.detail_title : page.page_title ?><? if (heading_type !== '0') { ?></h<?= heading_type ?>><? } ?></div>","/package/unit/pagination":"<? \nlet pageInfo = {\n page_size:page.page_size,\n page_number:page.page_number,\n page_count:page.page_count,\n page_total:page.page_total,\n page_base_url:page.page_base_url\n}\n-?>\n<? if(page.page_size < page.page_total && page.page_count > 0) { ?>\n<div class=\"unit-pagination\" pagination-style=\"<?= package.config.pagination.style_type_pagination ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'pagination', config: { attr_id: package.attr_id } } }) -?>\n <!-- è¾å
¥æ¡ -->\n <div class=\"base-pagination__input\" data-count=\"<?= page.page_count ?>\" data-current=\"<?= page.page_number ?>\">\n <a class=\"iconfont icon-action-left-lighter base-pagination__input-href\"\n data-href=\"<?= `${page.page_base_url}_list.html` ?>\"></a>\n <!-- <span>Go to</span> -->\n <input type=\"text\" class=\"base-pagination__input-inner\" placeholder=\"<?= $t('Go to Page') ?>\"/>\n <!-- <span>Page</span> -->\n </div>\n</div>\n<? } ?>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/pagination.js',\n name: 'ScriptPagination',\n attrId: '<?= package.attr_id ?>',\n style_type_pagination: '<?= package.config.pagination.style_type_pagination ?>',\n pageInfo: '<?= JSON.stringify(pageInfo) ?>',\n })\n</script>
1","/package/unit/polymerize-about":"<?\n if(page.content_type == 8) {\n package.content.data = page.product_list\n }\n let random_img = package.content.data && package.content.data.length ? package.content.data[package.content.data.length - 1].img : ''\n-?>\n<div class=\"unit-polymerize-product\">\n <div class=\"row\">\n <div class=\"<?= random_img ? 'col-12 col-md-6 col-xl-6' : 'col-12' ?>\">\n <div class=\"unit-polymerize-product__content\">\n <div class=\"unit-polymerize-about__title\"><h1 class=\"nostyle\"><?= $t('About') ?> <?= page.detail_title ?></h1></div>\n <div class=\"unit-polymerize-product__detail\">\n <?- globalThis.Server.getRinseHTML(page.about, site, 'needLazy') ?>\n </div>\n </div>\n </div>\n <? if(package.content.data && package.content.data.length > 0 ){ ?>\n <div class=\"col-12 col-md-6 col-xl-6\">\n <div class=\"unit-polymerize-product__thumb\" style=\"--bg: url(<?= random_img ?>)\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { img: random_img, alt: page.detail_title, from: 'detail' } } }) -?>\n </div>\n </div>\n <? } ?>\n </div>\n</div>","/package/unit/polymerize-extrend":"<?\n const latestProductList = package.content.data.filter(item => item.tab === 'latest products')\n const newSpecialList = package.content.data.filter(item => item.tab === 'new special')\n const hotArticlesList = package.content.data.filter(item => item.tab === 'hot articles')\n package.content.data = latestProductList\n let colNum = (newSpecialList.length > 0 || newSpecialList.length > 0) ? 6 : 12\n function formatNum (num) {\n const reg=/\\d{1,3}(?=(\\d{3})+$)/g; \n return (num + '').replace(reg, '$&,');\n }\n-?>\n<div class=\"animate unit-polymerize-extrend\">\n <div class=\"row\">\n <? if( latestProductList.length > 0 ){ ?>\n <div class=\"animate col-12 col-md-<?= colNum -?>\">\n <div class=\"unit-polymerize-extrend__box\">\n <div class=\"unit-polymerize-extrend__title text-uppercase\">\n <?= $t('Latest Products') ?>\n </div>\n <div class=\"unit-polymerize-extrend__items\">\n <?- include(getViewsPath(`/package/unit/list`), { package }) -?>\n </div>\n </div>\n </div>\n <? } ?>\n <? if(colNum === 6 ) { -?>\n <div class=\"animate col-12 col-md-6\">\n <? if( newSpecialList.length > 0 ){ ?>\n <div class=\"unit-polymerize-extrend__box\">\n <div class=\"unit-polymerize-extrend__title text-uppercase\">\n <?= $t('latest topics') ?>\n </div>\n <div class=\"unit-polymerize-extrend__items\">\n <? newSpecialList.forEach( item => { ?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" class=\"unit-polymerize-extrend__item\">\n <div class=\"unit-polymerize-extrend__item-box\">\n <div class=\"unit-polymerize-extrend__item--title text-truncate\">\n <?= item.title ?>\n </div>\n </div>\n </a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <? if( hotArticlesList.length > 0 ){ ?>\n <div class=\"unit-polymerize-extrend__box\">\n <div class=\"unit-polymerize-extrend__title text-uppercase\">\n <?= $t('hot articles') ?>\n </div>\n <div class=\"unit-polymerize-extrend__items\">\n <? hotArticlesList.forEach( item => { ?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" class=\"unit-polymerize-extrend__item\">\n <div class=\"unit-polymerize-extrend__item-box\">\n <div class=\"unit-polymerize-extrend__item--title text-truncate\">\n <?= item.title ?>\n </div>\n <div class=\"unit-polymerize-extrend__item--reads\"><span class=\"iconfont icon-base-eye\"></span>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\">
1<?= formatNum(item.reads) ?></span>\n </div>\n </div>\n </a>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n </div>\n <? } ?>\n </div>\n</div>","/package/unit/polymerize-more-product":"<?\n let page_category_data = site.nav.filter(_val => _val.relate_type == 2)\n let resList = []\n if(page_category_data.length) {\n page_category_data.forEach(_val => {\n if (_val.children) {\n resList = resList.concat(_val.children);\n }\n })\n }\n-?>\n<? if (resList.length > 0) { ?>\n<div class=\"unit-polymerize-more-product\">\n <div class=\"b_title text-uppercase\"><?= $t('more products') ?></div>\n <div class=\"list_category\">\n <div class=\"items\">\n <? resList.forEach((item, index) => { ?>\n <div class=\"item\">\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" alt=\"<?= item.alt ?>\">\n <div class=\"unit-list-category__link\">\n <? if (item.children.length > 0) { -?>\n <div class=\"unit-list-category__menu-icon\">\n <span class=\"iconfont icon-action-bottom-lighter\"></span>\n </div>\n <? } ?>\n <span><?= item.title ?></span>\n </div>\n </a>\n <? if (item.children.length > 0) { -?>\n <ul class=\"unit-list-category__menu-content\">\n <? item.children.forEach((child, i) => { ?>\n <? if (i < 4) { ?>\n <li>\n <a href=\"<?= globalThis.Server.getRinseHref(child.href, site) ?>\" title=\"<?= child.title ?>\" alt=\"<?= child.alt ?>\">\n <?- child.title ?>\n </a>\n </li>\n <? } ?>\n <? }) ?> \n </ul>\n <? } ?>\n </div>\n <? }) ?>\n </div>\n </div>\n</div>\n<? } ?>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/polymerize-more-product.js',\n name: 'ScriptPolymerizeMoreProduct',\n attrId: '<?= package.attr_id ?>'\n })\n</script>\n","/package/unit/polymerize-recommended-article-2":"\n<?\n let data = page.content_type == 8 ? (page.article_list || []) : page.list\n-?>\n<? if (data.length) { -?>\n<div class=\"unit-polymerize-article-product\">\n <div class=\"unit-detail-related__list\">\n <div class=\"unit-detail-related__list-title\"><?= $t('related articles') ?></div>\n <div class=\"unit-detail-related__list-description\"><?= page.article_summary ?></div>\n <div class=\"unit-detail-related__list-body\">\n <? data.forEach( (item,index) => { ?>\n <div class=\"unit-detail-related__list-item\">\n <div class=\"unit-list__text\">\n <div class=\"unit-list__text-inner\">\n <div class=\"unit-list__content\">\n <div class=\"unit-list__serial-box d-flex align-items-center\">\n <div class=\"unit-list__serial-number\"><?= index + 1 ?></div>\n <div class=\"unit-list__title\" title=\"<?= item.title ?>\">\n <div class=\"text_ellipsis\">\n <?= item.title ?>\n </div>\n </div>\n </div>\n <div class=\"unit-list__description\">\n <div class=\"text_ellipsis\">\n <?- globalThis.Server.getRinseHTML(item.description, site, 'needLazy') ?>\n </div>\n </div>\n </div>\n <div class=\"read_more\">\n <a class=\"unit-list__a d-block\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"_self\" rel=\"\">\n <div class=\"base-button\">\n <div class=\"base-button__inner btn\">\n <div class=\"d-inline-block\">\n <?= $t('read more') ?>\n </div>\n </div>\n </div>\n </a>\n </div>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n</div>\n<? } -?>\n","/package/unit/polymerize-recommended-article":"<?\n if(page.content_type === 8) {\n package.content.data = page.article_list || []\n }\n-?>\n<? if (package.content.data.length) { -?>\n<div class=\"unit-polymerize-article-product\">\n <div class=\"unit-detail-related__list\">\n <div class=\"unit-detail-related__list-title\"><?= $t('related articles') ?></div>\n <? if(package.config&&(package.config.show_description??1)){ -?>\n <div class=\"unit-detail-related__list-description\"><?= page.article_summary ?></div>\n <? } -?>\n\n <?- include(getViewsPath(`/package/unit/list`), { package }) -?>\n </div>\n</div>\n<? } -?>\n","/package/unit/polymerize-recommended-product":"<?\n if(page.content_type == 8) {\n package.content.data = page.product_list || []\n }\n-?>\n<? if( package.content.data && package.content.data.length > 0 ) { ?>\n<div class=\"unit-polymerize-recommended-product\">\n <div class=\"unit-detail-related__list\">\n <div class=\"unit-detail-related__list-title\"><?= $t('Related Products') ?></div>\n <? if(package.config&&(package.config.show_description??1)){ -?>\n <div class=\"unit-detail-related__list-description\"><?= page.product_summary ?></div>\n <? } -?>\n <?- include(getViewsPath(`/package/unit/list`), { package }) -?>\n </div>\n</div>\n<? } ?>\n","/package/unit/polymerize-tag-blog":"<?\n let tagVideoList = [] \n let tagArticleList = [] \n let is_video = false\n let is_article = false\n if(page.content_type == 9) {\n tagVideoList = page.video_list || []\n tagArticleList = page.article_list || []\n is_video = !!tagVideoList.length\n is_article = !!tagArticleList.length\n }\n package.config.swiper = package.config.swiper || {}\n package.config.list = package.config.list || {}\n-?>\n<? if (is_video || is_article) { ?>\n<div class=\"unit-polymerize-tag-blog\">\n <div class=\"unit-polymerize-tag-title\" text-style=\"1\"><?= $t('Related Blog') ?></div>\n <div class=\"unit-polymerize-tag-blog_content row\">\n <? if (page.detail_summary || is_video) { ?>\n <div class=\"unit-polymerize-tag-blog_content-video <?= is_article && (page.detail_summary || is_video) ? 'col
1-12 col-md-12 col-xl-9' : '' ?>\">\n <? if (is_video) { ?>\n <div class=\"unit-polymerize-tag-blog_content-video-detail\">\n <? \n package.content.data = tagVideoList\n -?>\n <?- include(getViewsPath(`/package/unit/video-popup`), { package }) -?>\n </div>\n <? } ?>\n <div class=\"unit-polymerize-tag-blog_content-video-summary\"><?= page.detail_summary ?></div>\n </div>\n <? } ?>\n <? if (is_article) { ?>\n <div class=\"unit-polymerize-tag-blog_content-article <?= (page.detail_summary || is_video) ? 'col-12 col-md-12 col-xl-3' : 'col-12 col-md-12 col-xl-3' ?>\">\n <? \n package.content.data = tagArticleList.slice(0, 6)\n -?>\n <?- include(getViewsPath(`/package/unit/list`), { package }) -?>\n </div>\n <? } ?>\n </div>\n</div>\n<? } ?>","/package/unit/pop-up":"<div class=\"unit-pop-up\">\n å¼¹çªææ\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/pop-up.js',\n name: 'ScriptPopUp',\n attrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(package.config.pop_up) ?>'\n })\n</script>","/package/unit/product-detail":"<?\n const isShop = site.is_shop\n const detailConfig = package.config.product_detail\n const showContent = detailConfig.show_content\n const mainImgColumns = package.config.album.columns || 5\n const mainContentColumns = package.config.album.content_columns || 7\n if (site.site_inquiry.product_status) {\n package.config.form.list = site.site_inquiry.package.config.form.list\n package.config.form.minLength = site.site_inquiry.package.config.form.minLength\n package.config.content = site.site_inquiry.package.config.content\n }\n // é¿å
å½±åæ§æ°æ®ï¼å°éå°±é style_type_subtitleï¼æ é¢ style_type_sectitleï¼å¯æ é¢\n let video_config = package.config.video\n let { style_type_subtitle, style_type_sectitle, style_type_description } = package.config.product_detail\n const showDownloadBtn = page.file_status === 1 && page.file_list.length > 0\n const show_quote_list = detailConfig.show_quote_list\n?>\n<div class=\"unit-product-detail\">\n <div class=\"row\">\n <!-- 产åä¸»å¾ -->\n <div class=\"col col-12 col-md-12 col-xl-<?= mainImgColumns ?>\">\n <div unit-type=\"album\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-album`), { package }) -?>\n </div>\n </div>\n <!-- 产åå
容 -->\n <div class=\"col col-12 col-md-12 col-xl-<?= mainContentColumns ?>\">\n <div class=\"unit-detail_content\">\n <!-- äº§åæ é¢ -->\n <? if (showContent.includes('title')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"title\">\n <h1 class=\"unit-detail_title\" text-style=\"<?= style_type_subtitle ?>\">\n <?- page.detail_title ?>\n </h1>\n </div>\n <? } ?>\n <!-- 产åç¼å· -->\n <? if (showContent.includes('serialNumber')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"subtitle\" text-style=\"<?= style_type_sectitle ?>\">\n <div class=\"unit-detail_subtitle\">\n <?- page.serialNumber ?>\n </div>\n </div>\n <? } ?>\n <!-- 产å坿 é¢ -->\n <? if (page.detail_subtitle && showContent.includes('subtitle')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"subtitle\" text-style=\"<?= style_type_sectitle ?>\">\n <div class=\"unit-detail_subtitle\">\n <?- page.detail_subtitle ?>\n </div>\n </div>\n <? } ?>\n <!-- 产åç®ä» -->\n <? if (page.detail_summary && page.detail_summary.length > 0 && showContent.includes('summary')){ ?>\n <div class=\"unit-detail_item\" unit-type=\"summary\" text-style=\"<?= style_type_description ?>\">\n <div class=\"unit-detail-description\">\n <?- globalThis.Server.getRinseHTML(page.detail_summary, site) ?>\n </div>\n </div>\n <? } ?>\n <!-- äº§åæ¦è¿° -->\n <? if (page.detail_profile && page.detail_profile.length > 0 && showContent.includes('profile')){ ?>\n <div class=\"unit-detail_item\" unit-type=\"profile\" text-style=\"3\">\n <div class=\"unit-detail-profile\">
1\n <?- globalThis.Server.getRinseHTML(page.detail_profile, site, 'needLazy') ?>\n </div>\n </div>\n <? } ?>\n <? if (isShop && showContent.includes('price')) { ?>\n <!-- 产åä»·æ ¼ -->\n <div class=\"unit-detail_item\" unit-type=\"price\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-price`), { package }) -?>\n </div>\n <? } ?>\n <!-- 产åè¯å -->\n <? if (showContent.includes('score')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"score\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-comment-score`), { package }) -?>\n </div>\n <? } ?>\n <!-- äº§åæ¶è -->\n <? if (showContent.includes('like')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"like\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-like`), { package }) -?>\n </div>\n <? } ?>\n <!-- è®¢åæ° -->\n <? if (isShop && showContent.includes('order')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"order\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-order-quantity`), { package }) -?>\n </div>\n <? } ?>\n <!-- 款å¼åæ° -->\n <? if (showContent.includes('pattern')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"pattern\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-pattern`), { package }) -?>\n </div>\n <? } ?>\n <!-- äº§åæ°é -->\n <? if (isShop && showContent.includes('number')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"number\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-quantity`), { package }) -?>\n </div>\n <? } ?>\n <!-- 交æåæ° -->\n <? if (showContent.includes('trade')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"trade\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-tradeinfo`), { package }) -?>\n </div>\n <? } ?>\n <!-- ç©æµ -->\n <? if (isShop && showContent.includes('logistics')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"logistics\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-logistics`), { package }) -?>\n </div>\n <? } ?>\n <!-- éè´§æ¶é´ -->\n <? if (isShop && showContent.includes('shippingTime')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"shippingTime\" text-style=\"3\">\n <div class=\"unit-detail-shipment-time d-none\">\n <span> <?= $t('Shipment within') ?> <span class=\"unit-detail-shipment-time__num\">1</span> <?= $t('hours after placing the order') ?> </span>\n </div>\n </div>\n <? } ?>\n <!-- å®å¶ -->\n <? if (showContent.includes('customized')) { ?>\n <div class=\"unit-detail_item d-none\" unit-type=\"customized\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-customized`), { package: { ...package, attr_id: package.attr_id +'_customized' } }) -?>\n </div>\n <? } ?>\n <!-- å°ºç 表 -->\n <? if (showContent.includes('size-chart')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"size-chart\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-alert-size-chart`), { package }) -?>\n </div>\n <? } ?>\n <!-- æé®ç» -->\n <? if (showContent.includes('btn')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"btn\">\n <div class=\"unit-detail_btn-group\">\n <? if (isShop) { ?>\n <div class=\"unit-detail_btn\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-button-buy`), { package }) -?>\n </div>\n <? } ?>\n <? if (isShop) { ?>\n <div class=\"unit-detail_btn\">
1\n <?- include(getViewsPath(`/package/components/unit-product-detail-button-cart`), { package }) -?>\n </div>\n <? } ?>\n <div class=\"unit-detail_btn\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-button-inquiry`), { package }) -?>\n </div>\n <? if (showDownloadBtn) { ?>\n <div class=\"unit-detail_btn\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-button-download`), { package }) -?>\n </div>\n <? } ?>\n <div class=\"unit-detail_btn\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-button-comment`), { package }) -?>\n </div>\n <? if (show_quote_list) { ?>\n <div class=\"unit-detail_btn\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-button-quote`), { package }) -?>\n </div>\n <? } ?>\n </div>\n </div>\n <? } ?>\n <!-- 产åå¹é
-->\n <? if (page.linkage_attr_list.length > 0 && showContent.includes('matching')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"matching\" text-style=\"3\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-matching`), { package }) -?>\n </div>\n <? } ?>\n <!-- æ¯ä»æ¹å¼ -->\n <? if (isShop && showContent.includes('payment')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"payment\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-payment`), { package }) -?>\n </div>\n <? } ?>\n <!-- å¹³å°å¯¼æµ -->\n <? if (showContent.includes('buy-on')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"buy-on\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-buy-on`), { package }) -?>\n </div>\n <? } ?>\n <!-- 社åªå享 -->\n <? if (showContent.includes('media-share')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"media-share\">\n <?- include(getViewsPath(`/package/unit/social-list`), { package }) -?>\n </div>\n <? } ?>\n <!-- 产åæé
-->\n <? if (showContent.includes('product-match')) { ?>\n <div class=\"unit-detail_item\" unit-type=\"product-match\">\n <?- include(getViewsPath(`/package/components/unit-product-detail-product-match`), { package }) -?>\n </div>\n <? } ?>\n </div>\n </div>\n </div>\n <? if (isShop) { ?>\n <div class=\"\" unit-type=\"wholesale\">\n <!-- é¶æ¢¯æ»¡å -->\n <?- include(getViewsPath(`/package/components/unit-product-detail-wholesale`), { package }) -?>\n </div>\n <? } ?>\n <script>\n;(function(){\n const attrId = '<?= package.attr_id ?>';\n const isM = window.innerWidth < 768\n const isPad = window.innerWidth >= 768 && window.innerWidth < 1200\n let direction = '<?= package.config.album.direction ?>'\n if (isM || isPad) {\n direction = 'bottom'\n const dom = document.querySelector('#' + attrId)\n dom && dom.classList.add('unit-detail-album--y', 'unit-detail-album--bottom');\n const unit = dom.querySelector('.unit-product-detail');\n if (unit) {\n unit.setAttribute('before-init', 'true')\n unit.classList.add('unit-product-detail-mobi')\n }\n }\n window.scriptQueue.push({\n file: '/assets/js/unit/product-detail.js?v=2',\n name: 'ScriptProductDetail',\n attrId: '<?= package.attr_id ?>',\n direction: direction,\n _direction: '<?= package.config.album.direction ?>',\n show_magnifier: '<?= package.config.album.show_magnifier ?>',\n price_method: \"<?= page.shipment_method ?>\",\n attrList: '<?- JSON.stringify(page.linkage_attr_list) ?>',\n hasBuyOn: Number('<?= page.platform_relate.length > 0 ? 1 : 0 ?>'),\n showContent: '<?= JSON.stringify(showContent) ?>',\n show_quote_list: '<?= package.config.product_detail.show_quote_list ?>',\n templateStatus: Number('<?= page.detail_template_status ?>'),\n videoConfig: '<?= JSON.stringify(video_config) ?>',\n })\n})();\n </script>\n</div>\n","/package/unit/product-guide":"<!-- <? if (page.relate_product.id) { ?>\n<div class=\"unit-product-guide\">\n\t<div class=\"unit-product-guide__thumb\">\n\t\t<a href=\"<?- page.relate_product.page_url_suffix ?>?from=videoDetails\">\n\t\t\t<?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { img: page.relate_product.thumb, from: 'product_guide' } } }) -?>\n\t\t</a>\n\t</div>\n\t<div class=\"unit-product-guide__info\" price-content-id=\"<?= page.relate_product.id ?>\">\n\t\t<div class=\"unit-product-guide__title\">\n\t\t\t<a href=\"<?- page.relate_product.page_url_suffix ?>?from=videoDetails\"><div class=\"text_ellipsis\"><?- page.relate_product.title ?></div></a>\n\t\t</div>\n\t\t<div class=\"unit-product-guide__price\">\n\t\t\t<div class=\"unit-product-guide__price-min\">\n\t\t\t\t<?= $t('from') ?> <span>$</span><span content-render=\"price_min\" content-type=\"product\" content-id=\"<?= page.relate_product.id ?>\"></span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"unit-product-guide__button\" button-style=\"2\">\n\t\t<a href=\"<?- page.relate_product.page_url_suffix ?>?from=videoDetails\" class=\"btn btn-main\"><?= $t('View Products') ?></a>\n\t</div>\n</div>\n<? } ?> -->\n<?\n\tlet linkSuffix = page.page_type === 'article_detail' ? 'articleDetails' : 'videoDetails'\n-?>\n<? if (page.relate_product.length) { ?>\n\t<? if(package.config&&(package.config.show_title??0)){ -?>\n\t\t<div class=\"unit-product-guide_title\" style=\"font-size:24px;margin-bottom:2vw;font-weight: 500;\">\n\t\t\tProduct Guidance\n\t\t</div>\n\t<?}-?>\n<div class=\"unit-product-guide_list\">\n\t<? page.relate_product.forEach((item, index) => { -?>\n\t\t<div class=\"unit-product-guide\">\n\t\t\t<div class=\"unit-product-guide__thumb\">\n\t\t\t\t<a href=\"<?- item.page_url_suffix ?><?-(package.config&&(package.config.fromBtn??1))?'?from=' + linkSuffix :'' ?>\">\n\t\t\t\t\t<?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { img: item.thumb, from: 'product_guide' } } }) -?>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div class=\"unit-product-guide__info\" price-content-id=\"<?= item.id ?>\">\n\t\t\t\t<div class=\"unit-product-guide__title\">\n\t\t\t\t\t<a href=\"<?- item.page_url_suffix ?><?-(package.config&&(package.config.fromBtn??1))?'?from=' + linkSuffix :'' ?>\"><div class=\"text_ellipsis\"><?- item.title ?></div></a>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"unit-product-guide__price\">\n\t\t\t\t\t<div class=\"unit-product-guide__price-min\">\n\t\t\t\t\t\t<?= $t('from') ?> <span>$</span><span content-render=\"price_min\" content-type=\"product\" content-id=\"<?= item.id ?>\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"unit-product-guide__button\" button-style=\"2\">\n\t\t\t\t<a href=\"<?- item.page_url_suffix ?><?-(package.config&&(package.config.fromBtn??1))?'?from=' + linkSuffix :'' ?>\" class=\"btn btn-main\"><?= $t('View Products') ?></a>\n\t\t\t</div>\n\t\t</div>\n\t<? }) -?>\n</div>\n<script>\n\t// window.scriptQueue.push({\n\t// \tfile: '/assets/js/unit/product-guide.js',\n\t// \t
1name: 'ScriptProductGuide',\n\t// \tattrId: '<?= package.attr_id ?>'\n\t// })\n</script>\n<? } ?>\n","/package/unit/product-list":"<?\n <!-- é
ç½®ä¿¡æ¯ -->\n let list_config = package.config.product_list\n list_config.image = package.config.image\n let swiper_config = package.config.swiper\n let image_config = package.config.image\n if (image_config) {\n image_config.current_hide_phone = package.current_hide_phone || 0\n image_config.sequence = package.sequence || []\n }\n let is_swiper = swiper_config.is_swiper\n let isDetailContent = package.content.type === 'detail'\n let has_nofollow = list_config.has_nofollow\n let show_img = list_config.show_img % 10\n let show_title = list_config.show_title % 10\n let show_subtitle = list_config.show_subtitle % 10\n let show_description = list_config.show_description % 10\n swiper_config.itemClassName = 'unit-product-list__item'\n swiper_config.itemsClassName = 'unit-product-list__items'\n const data = package.content.data.flat()\n const isShop = site.is_shop\n let swiper_html = ''\n let tab_list = package.content.tab_list || []\n if (is_swiper && tab_list.length === 1) swiper_html = `id=swiper-${package.attr_id} carousel=${JSON.stringify(swiper_config)}`\n const getSwiperHtml = index => is_swiper ? `id=swiper-${package.attr_id}-${index} carousel=${JSON.stringify(swiper_config)}` : ''\n <!-- åæ°ä¿¡æ¯ -->\n let colInfo = {\n cols_col:package.cols_col,\n cols_md:package.cols_md,\n cols_xl:package.cols_xl\n }\n <!-- åé¡µä¿¡æ¯ -->\n let pageInfo = {\n page_size:page.page_size,\n page_number:page.page_number,\n page_count:page.page_count,\n page_total:page.total\n }\n let isNowPage = page.page_type === 'product_discount_now'\n let isUpcomingPage = page.page_type === 'product_discount_upcoming'\n let emptyPriceTips = isShop ? '' : $t('Inquiry')\n let hoverImg = package.content.hover_img || false\n let hoverImgEffect = package.content.hover_img_effect.split(',')\n let hoverImgIn = hoverImgEffect[0] || 'fadeIn'\n let hoverImgOut = hoverImgEffect[1] || 'fadeOut'\n let hoverImgDuration = hoverImgEffect[2] || ''\n <!-- éèå¤ä¾§è¾¹æ¡ ---------------------------------------- -->\n const wrapperSelector = '.unit-product-list__items'\n const borderSelector = '.unit-product-list__inner'\n\n // å¾çè¾¹æ¡\n const imageItemBorder = '.base-image__item';\n\n // .base-image__item border å¾ç飿 ¼è¾¹æ¡\n const image_item_border = package.style?.['.base-image__item']?.default?.border || package.style?.['.base-image__item']?.default?.['border-left-width'] || package.style?.['.base-image__item']?.xl?.['border-bottom-width'] || '';\n if(image_config){\n image_config.image_item_width_border = !!image_item_border;\n }\n // overflow:hidden ä¿®å¤ä¸çº§ç¼ºå¤±è¾¹æ¡\n const fix_border_attr = image_item_border ? 'fix-img-border=\"true\"' : '';\n\n-?>\n<div\n class=\"unit-product-list <?= is_swiper ? 'is-swiper' : '' ?>\"\n <? if (is_swiper && swiper_config.navigation) {-?>\n navigation-position=\"<?= swiper_config.navigation_position ?>\"\n navigation-position-md=\"<?= swiper_config.navigation_position_md ?>\"\n navigation-position-xl=\"<?= swiper_config.navigation_position_xl ?>\"\n <? } ?>\n <?= swiper_html ?> <?- tab_list.length === 1 && tab_list[0] !== 'default' ? 'tab-type=\"' + tab_list[0] + '\"' : '' -?>\n>\n <?-\n `<style>\n ${globalThis.Server.getHideOuterBorderStyle(package, wrapperSelector, borderSelector, {}, [imageItemBorder])}\n </style>`\n ?>\n <!-- tabéé¡¹å¡ -->\n <? if( tab_list.length > 1 && list_config.show_tab) { -?>\n <div class=\"tab-header\" tab-style=\"<?= list_config.style_type_tab ?>\">\n <div class=\"unit-product-list__tabs nav\">\n <!-- å建tab项 -->\n <? tab_list.filter(p=>!!p).forEach((tabType, index) => { -?>\n <div data-tabtype=\"<?= tabType -?>\" class=\"nav-item <?= index===0 ? 'active' : '' -?>\">\n <?= tabType -?>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n <? if (tab_list.length > 1) { -?>\n <!-- tabé项å¡å
容 -->\n <div class=\"tab-content\">\n <? } ?>\n <? tab_list.forEach((tabType, index) => { -?>\n <? if (tab_list.length > 1) { -?>\n <div tab-type=\"<?= tabType -?>\" class=\"unit-product-list-tab-content <?= index===0 ? '' : 'd-none' -?>\" <?= getSwiperHtml(index) ?>>\n <? } ?>\n <? let productList = data.filter(item => item.tab === tabType) -?>\n <? if (productList.length > 0) { -?>\n <div class=\"swiper-container\">\n <div class=\"unit-product-list__items swiper-wrapper <?= is_swiper ? '' : 'row' ?> <?= is_swiper && !swiper_config.pagination ? 'no-swiper-pagination' : '' ?>\">\n <!-- å¾ªç¯æ¾ç¤ºtap_typeå
容 -->\n <? productList.forEach(item => { -?>\n <div data-id=\"<?= item.id -?>\" class=\"animate unit-product-list__item swiper-slide <?= !item.img ? 'no-image' : '' ?> <?= `col-${package.cols_col} col-md-${package.cols_md} col-xl-${package.cols_xl}` ?>\">\n <div class=\"unit-product-list__inner d-flex flex-column\">\n <a class=\"unit-product-list__image unit-product-list__a <? if (list_config.target === 'zoom') { -?>unit-list__image--zoom<? }-?>\" <? if (list_config.target !== 'zoom') { -?>href=\"<?= list_config.target==='block'?'jacascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" <? } else { -?>zoom-img=\"true\"<? } -?> rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" >\n <? if (show_img) { -?>\n <div class=\"unit-product-list__img\" <?-fix_border_attr?> content-render=\"product_hover,video_icon\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" <?- hoverImg ? `open-hover=\"${package.content?.hover_img_effect}\" hover-img=true` : '' -?> <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?>>
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config, from: 'product_list', hover_img_origin: hoverImg, isDynamic: !isDetailContent } } }) -?>\n <? if ( item.video_url ) { ?> <div class=\"base-video__play\"><i class=\"iconfont icon-action-play\"></i></div> <? } ?>\n <? if (hoverImg && item?.content_id) {\n item.alt = item.title\n -?>\n <div class=\"unit-list-hover__image hover_img_before_load\">\n <img class=\"base-image__img img-fluid animate__animated <?= hoverImgDuration -?>\" effect-in=\"<?= hoverImgIn -?>\" effect-out=\"<?= hoverImgOut -?>\" lazy-src=\"<?= parseInt(item?.content_id) ? item.hover_img : item.img ?>\" alt=\"<?= item.alt ?>\">\n </div>\n <? } -?>\n </div>\n <? } -?>\n <? if (list_config.show_tag && list_config.has_tag) { -?>\n <div class=\"unit-product-list__labels\">\n <? if(item.is_new) { -?>\n <div class=\"unit-product-list__label unit-product-list__label--news\">\n <i class=\"unit-product-list__label-icon\">NEW</i>\n <span class=\"unit-product-list__label-text\">NEW</span>\n </div>\n <? } ?>\n <? if (item.is_recommend) { -?>\n <div class=\"unit-product-list__label unit-product-list__label--tui\">\n <i class=\"unit-product-list__label-icon iconfont icon-base-like-2\"></i>\n <span class=\"unit-product-list__label-text\">Rec</span>\n </div>\n <? } ?>\n <? if (item.is_hot) { -?>\n <div class=\"unit-product-list__label unit-product-list__label--hot\">\n <i class=\"unit-product-list__label-icon iconfont icon-base-hot-2\"></i>\n <span class=\"unit-product-list__label-text\">HOT</span>\n </div>\n <? } ?>\n </div>\n <? } ?>\n <? if (list_config.show_off && list_config.has_off && item.max_discount && item.max_discount !== 100) { -?>\n <div class=\"unit-product-list__sale\">\n <span class=\"unit-product-list__sale-inner\">\n <?= item.max_discount -?>% <?= $t('Off') ?>\n </span>\n </div>\n <? } ?>\n <? if (list_config.show_btns && list_config.has_btns) { -?>\n <div class=\"unit-product-list__btns d-none\">\n <div data-href=\"<?= globalThis.Server.getRinseHref(item.href, site) -?>\"\n class=\"unit-product-list__btn unit-product-list__btn--view\">\n <i class=\"unit-product-list__btn-icon iconfont icon-action-search-lighter\"></i>\n <span class=\"unit-product-list__btn-text\"><?= $t('Quick View') ?></span>\n </div>\n <div class=\"unit-product-list__btn unit-product-list__btn--like\">\n <i class=\"unit-product-list__btn-icon iconfont icon-base-collect\"></i>\n <span class=\"unit-product-list__btn-text\"><?= $t('Like') ?></span>\n </div>\n <div class=\"unit-product-list__btn unit-product-list__btn--cart\">\n <i class=\"unit-product-list__btn-icon iconfont icon-base-cart-lighter\"></i>\n <span class=\"unit-product-list__btn-text\"><?= $t('Add to Cart') ?></span>\n </div>\n </div>\n <? } ?>\n </a>\n <div class=\"unit-product-list__text\">\n <? if (show_title && item.title && list_config.has_title) { -?>\n <div class=\"unit-product-list__title\" text-style=\"<?= list_config.style_type_title ?>\" <? if (show_title > 1) { -?>display-style=\"<?= show_title ?>\"<? } -?>>\n <a class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.title_sign || '' ?>\"<? } -?> toolbar=\"false\" href=\"<?= list_config.target==='block'?'jacascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" title=\"<?= (item.caption || '').replace(/<[^>]+>/g, '') ?>\"><?- item.title -?></a>\n </div>\n <? } ?>\n <? if (show_subtitle && item.subtitle && list_config.has_subtitle) { -?>\n <div class=\"unit-product-list__subtitle\" text-style=\"<?= list_config.style_type_subtitle ?>
1\" <? if (show_subtitle > 1) { -?>display-style=\"<?= show_subtitle ?>\"<? } -?>>\n <div class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.subtitle_sign || '' ?>\" toolbar=\"false\"<? } -?>><?- item.subtitle ?></div>\n </div>\n <? } -?>\n <? if (show_description && item.description && list_config.has_description) { -?>\n <div class=\"unit-product-list__description\" text-style=\"<?= list_config.style_type_description ?>\" <? if (show_description > 1) { -?>display-style=\"<?= show_description ?>\"<? } -?>>\n <div class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.description_sign || '' ?>\"<? } -?>><?- package.use_html ? item?.description : globalThis.Server.removeHtmlTags(`${item?.description || ''}`) -?></div>\n </div>\n <? } ?>\n <? if (list_config.show_reduce && list_config.has_reduce) { -?>\n <div class=\"unit-product-list__reduce reduce_item_<?= item.content_id ?> d-none\">\n <i class=\"iconfont icon-2c-coupon\"></i>\n <span class=\"text-truncate\" content-render=\"reduction\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\">\n <?= item.reduction ?>\n </span>\n </div>\n <? } -?>\n <? if (list_config.show_comment && list_config.has_comment) { -?>\n <div content-render=\"comment\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\" class=\"unit-product-list__comment\">\n <div class=\"unit-product-list__comment-score__content\">\n <div class=\"unit-product-list__comment-score__icons\">\n <span class=\"iconfont star-item icon-base-collection on\"></span>\n <span class=\"iconfont star-item icon-base-collection on\"></span>\n <span class=\"iconfont star-item icon-base-collection on\"></span>\n <span class=\"iconfont star-item icon-base-collection on\"></span>\n <span class=\"iconfont star-item icon-base-collection on\"></span>\n </div>\n <div class=\"unit-product-list__comment-score__scores pl-1\">5.0</div>\n </div>\n <div class=\"unit-product-list__comment--reviews\">\n <span class=\"unit-product-list__comment--reviews-num\">0</span>\n <?= $t('Reviews') -?>\n </div>\n </div>\n <? } ?>\n <? if (list_config.show_price && list_config.has_price) { -?>\n <div class=\"unit-product-list__prices\" price-content-id=\"<?= item.content_id -?>\">\n <!-- content_id === 0 è¡¨ç¤ºéææ°æ® -->\n <span class=\"unit-product-list__price unit-product-list__price--discount\">\n <span>$</span><span content-render=\"price_min,discount\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\">\n <?= item.price_min ?>\n </span>\n </span>\n <span class=\"unit-product-list__price unit-product-list__price--original\">\n <span>$</span><span content-render=\"price_max\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\">\n <?= item.price_max ?>\n </span>\n </span>\n <div class=\"empty_price_tips\"><?= $t(emptyPriceTips) -?></div>\n </div>\n <? } ?>\n <? if (list_config.show_date && list_config.has_date && item.discount_end_time) { -?>\n <div class=\"unit-product-list__limit\" data-enddate=\"<?= item.discount_end_time -?>\"\n data-startdate=\"<?= item.discount_start_time -?>\" data-productid=\"<?= item.id -?>\">\n <div class=\"discount-timer\">\n <div class=\"discount-timer__title text-truncate\"></div>\n <div class=\"discount-timer__date-content\">\n <div class=\"discount-timer__date-wrap discount-timer__date-wrap--day\">\n <div class=\"discount-timer__date discount-timer__date--dd\"><em>00</em><i>
1d</i></div>\n </div>\n <div class=\"discount-timer__date-wrap discount-timer__date-wrap--time\">\n <div class=\"discount-timer__date discount-timer__date--hh\"><em>00</em><i>:</i></div>\n <div class=\"discount-timer__date discount-timer__date--mm\"><em>00</em><i>:</i></div>\n <div class=\"discount-timer__date discount-timer__date--ss\"><em>00</em></div>\n </div>\n </div>\n </div>\n </div>\n <? } ?>\n <? if (list_config.show_cart && list_config.has_cart) { -?>\n <div class=\"unit-product-list__cart\" button-style=\"<?= list_config.style_type_button ?>\">\n <a class=\"unit-product-list__cart-text\" href=\"<?= list_config.target==='block'?'jacascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\"><?= $t('Add to Cart') ?> â</a>\n </div>\n <? } ?>\n </div>\n </div>\n </div>\n <? }) -?>\n </div>\n\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.pagination) { -?>\n <div class=\"unit-product-list__pagination swiper-pagination\"></div>\n <? } -?>\n <? if (swiper_config.navigation) { -?>\n <div class=\"unit-product-list__button-prev swiper-button-prev\"></div>\n <div class=\"unit-product-list__button-next swiper-button-next\"></div>\n <? } -?>\n <? if (swiper_config.scrollbar) { -?>\n <div class=\"unit-product-list__scrollbar swiper-scrollbar\"></div>\n <? } -?>\n <? } -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.navigation && [swiper_config.navigation_position, swiper_config.navigation_position_md, swiper_config.navigation_position_xl].includes('outside')) { -?>\n <div class=\"unit-product-list__button-prev swiper-button-prev swiper-button-prev--outside\"></div>\n <div class=\"unit-product-list__button-next swiper-button-next swiper-button-next--outside\"></div>\n <? } -?>\n <? } -?>\n <? } else if (isNowPage || isUpcomingPage) { -?>\n <div class=\"discount_page_no_data d-none\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n </div>\n <? } else { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <? if (tab_list.length > 1) { -?> </div><? } -?>\n <? }) ?>\n <? if (tab_list.length > 1) { -?> </div><? } -?>\n\n <? if (tab_list.length === 0) { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <!-- ç¨æ·éæ¶ææ£jså é¤é½ä¸ºç©ºæ¶æ¾ç¤º -->\n <div class=\"show-no-data d-none\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/product-list.js',\n name: 'ScriptProductList',\n open_hover: \"<?-package.content?.hover_img_effect ?>\",\n hoverImg: '<?-package.content.hover_img?>',\n attrId: '<?= package.attr_id ?>',\n pageInfo: '<?= JSON.stringify(pageInfo) ?>',\n swiper: '<?= JSON.stringify(swiper_config) ?>',\n config: '<?= JSON.stringify(list_config) ?>',\n colInfo: '<?= JSON.stringify(colInfo) ?>'\n })\n</script>\n","/package/unit/product-lives":"<?\n let list_config = package.config.list\n let swiper_config = package.config.swiper\n let image_config = package.config.image\n let show_title = list_config.show_title\n let show_subtitle = list_config.show_subtitle\n let show_description = list_config.show_description\n let show_date_type = list_config.show_date_type\n let show_date_yyyy = list_config.show_date_yyyy\n let show_date_mm = list_config.show_date_mm\n let show_date_dd = list_config.show_date_dd\n let show_reads = list_config.show_reads\n let show_read_more = list_config.show_read_more\n let show_play = list_config.show_play\n let is_swiper = swiper_config.is_swiper\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n let swiper_html = ''\n if (is_swiper) swiper_html = `id=swiper-${package.attr_id} carousel=${JSON.stringify(swiper_config)}`\n let pageInfo = {\n page_size: page.page_size,\n page_number: page.page_number,\n page_count: page.page_count,\n page_total: page.page_total,\n page_base_url: page.page_base_url\n }\n let siteInfo = {\n logo_url: site.logo_url,\n company_name: site.company_name\n }\n function formatNum (num) {\n const reg=/\\d{1,3}(?=(\\d{3})+$)/g; \n return (num + '').replace(reg, '$&,');\n }\n-?>\n<div class=\"unit-product-lives <?= is_swiper ? 'is-swiper' : '' ?>\" <?= swiper_html ?>>\n <? if (package.content.data.length) { -?>\n <div class=\"unit-product-lives-list-container swiper-container\">\n <div class=\"unit-product-lives__items swiper-wrapper <?= is_swiper ? '' : 'row' ?>\">\n <? package.content.data.forEach((item, index) => { -?>\n <? item.img = item.img || item.product_thumb_prefix ?>\n <div class=\"unit-product-lives__item swiper-slide <?= !item.img ? 'no-image' : '' ?> <?= is_swiper ? '' : `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?>\">\n <a class=\"unit-product-lives__a d-block\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= item.target || '_self' ?>\">\n <div class=\"unit-product-lives__item-inner d-flex flex-column\" <?= package.getLazyListBGString('.unit-product-lives__item-inner') ?>>\n <div class=\"unit-product-lives__image\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" product-id=\"<?= item.product_id -?>\" product-url=\"<?= item.product_url_suffix -?>\">
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'video', config: { ...item, config: image_config } } }) -?>\n </div>\n <div class=\"unit-product-lives__text\">\n <? if (item.product_thumb_prefix) { ?>\n <div class=\"unit-product-lives__text-thumb\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: {img: item.product_thumb_prefix, alt: item.title} } }) -?>\n </div>\n <? } ?>\n <div class=\"unit-product-lives__text-inner\">\n <div class=\"unit-product-lives__content\">\n <div class=\"unit-product-lives__title <? if (!show_title) { -?>d-none<? } -?>\" title=\"<?= item.title ?>\" text-style=\"<?= list_config.style_type_title ?>\"><div class=\"text_ellipsis\"><?- item.title ?></div></div>\n <div class=\"unit-product-lives__subtitle <? if (!show_subtitle) { -?>d-none<? } -?>\" text-style=\"<?= list_config.style_type_subtitle ?>\"><div class=\"text_ellipsis\"><?- item.subtitle ?></div></div>\n <? const filterHtml = globalThis.Server.getFilterHTML(item.description) -?>\n <div class=\"unit-product-lives__description<? if (!show_description) { -?>d-none<? } -?>\" title=\"<?= package.content.type === 'detail' ? '' : filterHtml ?>\" text-style=\"<?= list_config.style_type_description ?>\"><div class=\"text_ellipsis\"><?= filterHtml ?></div></div>\n </div>\n <div class=\"unit-product-lives__article <?= (show_date_yyyy || show_date_mm || show_date_dd || show_reads) ? '' : 'hide' ?>\">\n <div class=\"unit-product-lives__date <?= (show_date_yyyy || show_date_mm || show_date_dd) ? '' : 'hide' ?>\">\n <? let [date_yyyy, date_mm, date_dd] = new Date((show_date_type === 1 && item.add_time ? item.add_time : item.renew_time) * 1000).format('yyyy,MM,dd').split(',') -?>\n <span class=\"unit-product-lives__date-yyyy\"><?= date_yyyy ?></span>\n <span class=\"unit-product-lives__date-split\"></span>\n <span class=\"unit-product-lives__date-mm\"><?= date_mm ?></span>\n <span class=\"unit-product-lives__date-split\"></span>\n <span class=\"unit-product-lives__date-dd\"><?= date_dd ?></span>\n </div>\n <div class=\"unit-product-lives__reads <?= !show_reads ? 'hide' : '' ?>\">\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= formatNum(item.reads) ?></span>\n <em><?= $t('views') ?></em>\n </div>\n </div>\n <div class=\"read_more <?= !show_read_more ? 'hide' : '' ?>\" button-style=\"<?= list_config.style_type_button ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, mode: 'text', description: $t('read more') } } }) -?>\n </div>\n </div>\n </div>\n </div>\n </a>\n </div>\n <? }) -?>\n </div>\n </div>\n <div class=\"unit-product-lives-mobile-container\">\n <div class=\"unit-product-lives-mobile__back\"><span class=\"iconfont icon-action-left-lighter\"></span></div>\n <div class=\"swiper-container\"><div class=\"swiper-wrapper\"></div></div>\n </div>\n\n <?- include(getViewsPath(`/package/unit/detail-button-inquiry`), { package }) -?>\n\n <?- include(getViewsPath(`/package/unit/social-share`), { package }) -?>\n\n <? } else { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/product-lives.js',\n name: 'ScriptProductLives',\n attrId: '<?= package.attr_id ?>',\n pageInfo: '<?= JSON.stringify(pageInfo) ?>',\n siteInfo: '<?= JSON.stringify(siteInfo) ?>'\n })\n </script>\n</div>","/package/unit/product-might-like":"<?\n const list_product_id = []\n?>\n<div class=\"unit-product-might-like\">\n \n <div class=\"unit-product-might-like__title text-capitalize\"><?= $t('you might like') ?></div>\n <div class=\"unit-product-might-like__container\">\n <div class=\"unit-list\">\n <? if (package.content.data.length > 0) { -?>\n <div class=\"swiper-container\">\n <div class=\"unit-list__items swiper-wrapper row\">\n <? package.content.data.forEach((item, index) => { -?>\n <? if (index < 4) { -?>\n <? list_product_id.push(item.id) ?>\n <div class=\"unit-list__item swiper-slide <?= !item.img ? 'no-image' : '' ?> col-6 col-md-3 col-xl-12\" data-id=\"<?= item.id ?>\">\n <a class=\"unit-list__a d-block\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= item.target || '_self' ?>\">\n <div class=\"unit-list__item-inner d-flex flex-column\" <?= package.getLazyListBGString('.unit-list__item-inner') ?>>\n <div class=\"unit-list__image\">
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: item, from: 'product_list' } }) -?>\n </div>\n <div class=\"unit-list__text\">\n <div class=\"unit-list__text-inner\">\n <div class=\"unit-list__content\">\n <div class=\"unit-list__title\" title=\"<?= package.content.type === 'detail' ? '' : item.title ?>\"><div class=\"text_ellipsis\" _html=\"<?= item.title_sign || '' ?>\" toolbar=\"false\"><?- item.title ?></div></div>\n <div class=\"unit-list__description\" title=\"<?= package.content.type === 'detail' ? '' : item.description ?>\"><div class=\"text_ellipsis\" _html=\"<?= item.description_sign || '' ?>\" toolbar=\"false\"><?- item.description ?></div></div>\n </div>\n <div class=\"unit-list__product <?= item.selling_min ? '' : 'no-price' ?>\">\n <div class=\"unit-list__price\">\n <? if (item.selling_min) { -?>\n <div class=\"unit-list__price-min\">\n <i>$</i><span><?= item.selling_min / 100 ?></span>\n </div>\n <? } -?>\n </div>\n <div class=\"unit-list__extend\">\n <div class=\"unit-list__like\" data-id=\"<?= item.id ?>\">\n <i class=\"icon-base-collect iconfont\"></i>\n </div>\n <div class=\"unit-list__cart text-capitalize\">\n <i class=\"iconfont icon-base-cart-lighter\"></i>\n <span><?= $t('Add to Cart') ?></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </a>\n </div>\n <? } ?>\n <? }) -?>\n </div>\n </div>\n <? } else { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/product-might-like.js',\n name: 'ScriptProductMightLike',\n attrId: '<?= package.attr_id ?>',\n product_id: '<?= JSON.stringify(list_product_id) ?>'\n })\n </script>\n</div>","/package/unit/product-search":"\n<div class=\"unit-product-search\">\n <?-\n `<style>\n ${globalThis.Server.syncStyle(package, [\n ['.product-text-input', 'color', '', '--text-option-color'],\n ['.unit-product-text-search__items', 'border-radius', '', '--border-radius'],\n ['.unit-product-text-search__items', 'border-top-color', '', '--border-top-color'],\n ['.unit-product-text-search__items', 'border-bottom-color', '', '--border-bottom-color'],\n ['.unit-product-text-search__items', 'border-left-color', '', '--border-left-color'],\n ['.unit-product-text-search__items', 'border-right-color', '', '--border-right-color'],\n ['.unit-product-text-search__items', 'border-top-style', '', '--border-top-style'],\n ['.unit-product-text-search__items', 'border-bottom-style', '', '--border-bottom-style'],\n ['.unit-product-text-search__items', 'border-left-style', '', '--border-left-style'],\n ['.unit-product-text-search__items', 'border-right-style', '', '--border-right-style'],\n ['.unit-product-text-search__items', 'border-top-width', '', '--border-top-width'],\n ['.unit-product-text-search__items', 'border-bottom-width', '', '--border-bottom-width'],\n ['.unit-product-text-search__items', 'border-left-width', '', '--border-left-width'],\n ['.unit-product-text-search__items', 'border-right-width', '', '--border-right-width']\n ], (...arg)=>globalThis.Server.transformColor(...arg))}\n </style>`\n ?>\n <?-\n `<style>\n ${globalThis.Server.syncStyle(package, [\n ['.unit-product-text-search__items', 'color', '', '--text-color'],\n ], (...arg)=>globalThis.Server.transformColor(...arg) || '102,102,102')} //ç©ºçæ¶å设置é»è®¤å¼\n </style>`\n ?>\n\t<div class=\"unit-product-text-search__items <?= `col-${package.cols_col} col-md-${package.cols_md} col-xl-${package.cols_xl}` ?>\">\n <div class=\"product-search-input-group\">\n <input class=\"product-text-input\" placeholder=\"Search Products\">\n <i class=\"iconfont icon-action-search-lighter product-text-input-btnSearch\"></i>\n <i class=\"iconfont icon-action-close-2 product-text-search-close\"></i>\n </div>\n </div>\n</div>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/product-search.js',\n\t\tname: 'ScriptProductSearch',\n\t\tattrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(package.config) ?>',\n\t})\n</script>
1","/package/unit/product-sort-m":"<?\n\n\tvar attrSearch = ctx.state.template.searchPackageByType({ type: 'attr-search' }, ['main'], ['hide_phone']);\n let attrSearchConfig = attrSearch[0]?.config?.search || {}\n\tvar attrSortSearch = ctx.state.template.searchPackageByType({ type: 'attr-sort-search' }, ['main'], ['hide_phone']);\n\tvar attrTextSearch = ctx.state.template.searchPackageByType({ type: 'attr-text-search' }, ['main'], ['hide_phone']);\n\tvar productSort = ctx.state.template.searchPackageByType({ type: 'product-sort' }, ['main'], ['hide_phone']);\n\tvar unit_attr_sort_search = false\n\tif(attrSortSearch.length>0){\n\t\tattrSortSearch.forEach(a=>{\n\t\t\tif(a.code=='unit-attr-sort-search-1'){\n\t\t\t\tunit_attr_sort_search = true\n\t\t\t}\n\t\t})\n\t}\n\tconst attr_params = {\n\t 1: 'attr',\n\t 2: 'attr',\n\t 3: 'attr_detail_id',\n\t 4: 'attr_linkage_id',\n\t}\n let product_attr_list = attrSearchConfig.filter_attr ? ctx?.state?.product_attr_list_filter : ctx?.state?.product_attr_list\n\tproduct_attr_list = product_attr_list?.filter(p => (p.input_type === 3 || p.input_type === 2 || p.input_type === 4) && p.is_show && p.status)\n\t\t\t.map((p, i) => {\n\t\t\t\tconst attrs = p.attr_value.map(pp => ({\n\t\t\t\t\ttype: p.type,\n\t\t\t\t\tattr_param: attr_params[p.type] || 'attr',\n\t\t\t\t\tid: pp.id,\n\t\t\t\t\tname: pp.content,\n\t\t\t\t\tcontent: pp.content,\n\t\t\t\t\tparent_id: p.id,\n\t\t\t\t\tisSelect: false,\n\t\t\t\t\tinput_type: p.input_type\n\t\t\t\t}))\n\t\t\t\tconst active = i === 0\n\t\t\t\treturn {active, id: p.id, name: p.sign || `name${i}`, input_type: p.input_type, attrs}\n\t\t\t}) || [];\n-?>\n<? if(attrSearch.length>0||attrTextSearch.length>0||attrSortSearch.length>0||productSort.length>0){ ?>\n\t<div class=\"unit-product-sort-m-view\">\n\t\t<div class=\"unit-product-sort-m\">\n\t\t\t<? if(attrSortSearch.length>0||productSort.length>0){ ?>\n\t\t\t\t<div class=\"unit-product-sort-m__items\">\n\t\t\t\t</div>\n\t\t\t<? }else{ ?>\n\t\t\t\t<div></div>\n\t\t\t<? } ?>\n\t\t\t<? if(attrSearch.length>0||attrTextSearch.length>0||unit_attr_sort_search){ ?>\n\t\t\t\t<div class=\"unit-product-sort__filter_btn\">\n\t\t\t\t\tFilter\n\t\t\t\t\t<i class=\"iconfont icon-search-shaixuan\"></i>\n\t\t\t\t</div>\n\t\t\t<? } ?>\n\t\t</div>\n\t\t<div class=\"unit-header-menu_right_slide_view\">\n\t\t\t<div class='unit-header-menu_right_slide'>\n\t\t\t\t<div class='unit-header_right_slide-header'>\n\t\t\t\t\t<div class='unit-header_right_slide-title'>Filter</div>\n\t\t\t\t\t<div class='unit-header_right_slide-close'>\n\t\t\t\t\t\t<span class=\"iconfont icon-action-close-2\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class='unit-header_right_slide-body'>\n\t\t\t\t<!--æç´¢æ¡-->\n\t\t\t\t\t<? if(attrTextSearch.length>0||unit_attr_sort_search){ ?>\n\t\t\t\t\t\t<div class=\"unit-attr-text-search-right_slide__items\">\n\t\t\t\t\t\t\t<div class=\"input-group-right_slide\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend-right_slide\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary-right_slide\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"btn-text text-truncate\"> --Please Selected-- </span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-action-bottom-lighter ml-1\"></span>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t<div class=\"dropdown-menu-right_slide\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dropdown-item\" data-id=\"4452\" href=\"#\">坿ä½1</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"dropdown-item\" data-id=\"1718\" href=\"#\">Brand</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"dropdown-item\" data-id=\"6058\" href=\"#\">Finish</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"dropdown-item\" data-id=\"6057\" href=\"#\">Shelf life</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"dropdown-item\" data-id=\"6056\" href=\"#\">Characteristics</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"dropdown-item\" data-id=\"6055\" href=\"#\">Skin Tone</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<input class=\"form-control-right_slide\">\n\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-action-search-lighter btnSearch\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t<? } ?>\n\t\t\t\t\t<!--åéæ¡-->\n\t\t\t\t\t<div class=\"unit-header_right_slide__nav\">\n\t\t\t\t\t\t<? for(const group of product_attr_list) { ?>\n\t\t\t\t\t\t\t<div class=\"unit-header_right_slide__nav-item unit-attr-search__items\">\n\t\t\t\t\t\t\t\t<div class=\"unit-header-menu_right_slide__nav__item-link\">\n\t\t\t\t\t\t\t\t\t<div class=\"px-2\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"unit-header-menu__nav_name \">\n\t\t\t\t\t\t\t\t\t\t\t<?= group.name ?>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<span class=\"unit-header-menu__nav__item-drop iconfont icon-action-bottom-lighter\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"unit-header-menu_right_slide__nav__item-content\">\n\t\t\t\t\t\t\t\t\t<? for(const attr of group?.attrs) { ?>\n\t\t\t\t\t\t\t\t\t\t<div data-checkbox_uid=\"<?=`${attr.parent_id}-${attr.id}`?>\" class=\"unit-attr-search__content--checkbox\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-form-validated\"></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"checkbox\" data-input_type=\"<?=attr.input_type?>\" data-attr_param=\"<?-attr.attr_param?>\" data-product_attr_id=\"<?=group.id?>\" data-id=\"<?=attr.id?>\" data-content=\"<?=attr.content?>\" value=\"<?=attr.id?>\">\n\t\t\t\t\t\t\t\t\t\t\t<div class='unit-header-menu_right_slide_nav__item-son'><?= attr.content || 'Beige' ?></div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<? } ?>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<? } ?>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<!-- åºé¨ -->\n\t\t\t\t<div class='unit-header_right_slide-bottom'>\n\t\t\t\t\t<div class=\"base-button unit-header_right_slide-deselect\" button-style=\"1\">\n\t\t\t\t\t\t<button class=\"base-button__inner btn\" type=\"submit\">\n\t\t\t\t\t\t\t<div class=\"d-inline-block\">Clear All</div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"base-button unit-header_right_slide-close\" button-style=\"2\">\n\t\t\t\t\t\t<button class=\"base-button__inner btn\" type=\"submit\">\n\t\t\t\t\t\t\t<div class=\"d-inline-block\">APPLY</div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<? } ?>\n<!-- ä¾§è¾¹æ -->\n<script>\n\t// window.onload = (()=>{\n\t// \tvar data = [{\n\t// \t\tfile: '/assets/js/unit/product-sort-m.js',\n\t// \t\tname: 'ScriptProductSortMobile',\n\t// \t\tattrId: '<?= package.parent_attr_id ?>'\n\t// \t}
1].forEach(item => {\n\t// \t\tnew Load(item.file).then(() => {\n\t// \t\t\tif(item.name){\n\t// \t\t\ttry {\n\t// \t\t\t\teval(`new ${item.name}(${JSON.stringify(item)}).init()`)\n\t// \t\t\t} catch (err) {\n\t// \t\t\t\tconsole.error(err)\n\t// \t\t\t}\n\t// \t\t\t}\n\t// \t\t})\n\t// \t})\n\t// })\n window.scriptQueue.push({\n file: '/assets/js/unit/product-sort-m.js',\n load_immediate: true,\n name: 'ScriptProductSortMobile',\n attrId: '<?= package.parent_attr_id ?>',\n\ttemplateType:'<?= site.template_type ?>'\n })\n</script>\n","/package/unit/product-sort":"<?\n\tlet config = package.config.search\n\tlet style = config.style_type_search\n?>\n<div class=\"unit-product-sort\" sort-style=\"<?= style ?>\">\n\t<div class=\"unit-product-sort__items\"></div>\n</div>\n<script>\n\twindow.scriptQueue.push({\n\t\tfile: '/assets/js/unit/product-sort.js',\n\t\tname: 'ScriptProductSort',\n\t\tattrId: '<?= package.attr_id ?>',\n\t\ttemplateType:'<?= site.template_type ?>'\n\t})\n</script>","/package/unit/quick-search":"<link rel=\"stylesheet\" href=\"/assets/plugins/quick-search.css\">\n<div class=\"unit-quick-search\">\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/quick-search.js',\n name: 'ScriptQuickSearch',\n attrId: '<?= package.attr_id ?>'\n })\n</script>","/package/unit/recommend-article":"<?\n const recommendCategoryList = package.content.data.filter(item => item.tab === 'recommend category')\n const recommendReadingList = package.content.data.filter(item => item.tab === 'recommend reading')\n package.content.data = recommendReadingList\n package.content.tab_list.shift()\n-?>\n<!-- æ¨èé
读å为æ¨èçæ ç®ï¼åæ¨èçæç« ï¼æä»¥åèªå¤æï¼æ¯å¦æ¾ç¤ºèªå·²data[0]æ ç®ï¼data[2]æç« -->\n<? if(recommendCategoryList.length > 0 || recommendReadingList.length > 0) { -?>\n <div class=\"unit-recommend-article__list\">\n \n <div class=\"unit-recommend-article__list--header\">\n <? if(recommendCategoryList.length > 0 || recommendReadingList.length > 0) { -?>\n <div class=\"unit-recommend-article__list--title text-uppercase\"><?= $t('recommended articles') -?></div>\n <? } -?>\n <? if( recommendCategoryList && recommendCategoryList.length > 0 ) { -?>\n <div class=\"unit-recommend-article__list--column\">\n <? recommendCategoryList.forEach(item => { -?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" class=\"unit-recommend-article__list--column-item text-capitalize\"><?= item.title ?></a>\n <? }) -?>\n </div>\n <? } -?>\n </div> \n <? if(recommendReadingList.length > 0) { -?>\n <?- include(getViewsPath(`/package/unit/list`), { package }) -?>\n <? } -?>\n </div>\n<? } -?>","/package/unit/recommend-links":"<?\n const recommendLinks = package?.content?.data || []\n?>\n<style>\n.unit-recommend-link__list { -webkit-box-align: center;-ms-flex-align: center;align-items: center;gap: 10px; }\n.unit-recommend-link__tag { font-size: 12px; }\n.unit-recommend-link__tag { padding: 0 15px;height: 40px;line-height: 38px;border-radius: 4px;border: 1px solid #DADCE0;color: #4B4B4B; }\n.unit-recommend-link__list .unit-recommend-link__tag { color: #4B4B4B; }\n.unit-recommend-link__list .unit-recommend-link__tag:hover { color: var(--main-color); }\n</style>\n<div class=\"unit-recommend-link__list d-flex flex-wrap\">\n <? recommendLinks.forEach(function(item){ ?>\n <a href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\" title=\"<?= item.title ?>\" target=\"_blank\" class=\"unit-recommend-link__tag\"><?= item.title ?></a>\n <? }) ?>\n</div>","/package/unit/register":"\n<div class=\"unit-register\">\n <form method=\"post\" class=\"needs-validation\" id=\"<?= `register-${package.attr_id}` ?>\" register novalidate>\n <div class=\"form-row\">\n <div class=\"unit-register__item form-group col-12\">\n <label class=\"unit-form__item-inner\">\n <span class=\"unit-form__label col-form-label text-capitalize\"><?= $t('e-mail') ?></span>\n <input class=\"unit-register__control form-control\" type=\"email\" name=\"email\" placeholder=\"E-mail\" required />\n <div class=\"invalid-feedback text-capitalize\">\n <?= $t('email format does not match') ?>\n </div>\n </label>\n </div>\n <div class=\"unit-register__item form-group col-12\">\n <label class=\"unit-form__item-inner\">
1\n <span class=\"unit-form__label col-form-label text-capitalize\"><?= $t('password') ?></span>\n <input class=\"unit-register__control form-control\" type=\"password\" name=\"password\" placeholder=\"password\" pattern=\"^\\w{6,20}$\" required />\n <div class=\"invalid-feedback text-capitalize\">\n <?= $t('Password contains at least numbers and letters length should be 6-20') ?>\n </div>\n </label>\n </div>\n <div class=\"unit-register__item form-group col-12\">\n <label class=\"unit-form__item-inner\">\n <span class=\"unit-form__label col-form-label text-capitalize\"><?= $t('confirm password') ?></span>\n <input class=\"unit-register__control form-control\" type=\"password\" name=\"confirm_password\" placeholder=\"confirm_password\" required />\n <div class=\"invalid-feedback text-capitalize\">\n <?= $t('password and confirm password do not match') ?>\n </div>\n </label>\n </div>\n <div class=\"unit-register__item form-group col-12\">\n <div class=\"row\">\n <div class=\"unit-register__back-wrap col-5\">\n <button class=\"unit-register__back btn btn-main text-capitalize\" onclick=\"history.go(-1)\" type=\"button\"><?= $t('return') ?></button>\n </div>\n <div class=\"unit-register__submit-wrap col-7\">\n <button class=\"unit-register__submit btn btn-main submit text-capitalize\" type=\"submit\"><?= $t('create my account') ?> â</button>\n </div>\n </div>\n </div>\n </div>\n </form>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/register.js',\n name: 'ScriptRegister',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/search":"<? \n let pageInfo = {\n page_size:page.page_size,\n page_number:page.page_number,\n page_count:page.page_count,\n page_total:page.total\n }\n\n let list_config = package.config.search\n let show_title = list_config.show_title === undefined ? 1 : list_config.show_title\n let show_subtitle = list_config.show_subtitle === undefined ? 0 : list_config.show_subtitle\n let show_description = list_config.show_description === undefined ? 0 : list_config.show_description\n // 表ålabel\n const label_style = site.style[\":root\"][\"default\"][\"--style_type_label\"]\n-?>\n<div v-cloak class=\"unit-search\">\n <link rel=\"stylesheet\" href=\"/assets/plugins/quick-search.css\">\n <div class=\"unit-search__type\">\n <span \n text-style=\"3\"\n v-for=\"(type) in searchType\" \n :class=\"[{ 'is_active': type.is_show }]\" \n @click=\"getPageCategory(type.type_id)\">{{ type.name }}\n </span>\n </div>\n <div class=\"row no-gutters\">\n <div class=\"col col-12 col-md-4 col-xl-3\" style=\"padding-right: 30px;\">\n <div :class=\"['unit-search__sidebar', isShowFilter ? 'is_active' : '']\">\n <!-- ç¹è²åæ° -->\n <div class=\"mb-15\" v-show=\"currentSearchType === 'product' && searchItem.features.length > 0\">\n <div class=\"unit-search__sidebox\">\n <div class=\"unit-search__sidebox-title\">\n <p class=\"mr-2\" text-style=\"3\"><?= $t('Select Item') ?> </p>\n <span :class=\"['iconfont icon-action-left-lighter', { 'up': isHideSide.features }]\"\n @click=\"isHideSide.features = !isHideSide.features\"></span>\n </div>\n <div class=\"unit-search__sidebox-content unit-search__features\" ref=\"features\"\n :class=\"[{ 'is_hide': isHideSide.features }]\">\n </div>\n </div>\n </div>\n <!-- æ ç®åç±» -->\n <div class=\"mb-15\">\n <div class=\"unit-search__sidebox\">\n <div class=\"unit-search__sidebox-title\">\n <p class=\"mr-2\" text-style=\"3\">\n <?= $t('Category') ?>\n </p>\n <span :class=\"['iconfont icon-action-left-lighter', { 'up': isHideSide.category }]\"\n @click=\"isHideSide.category = !isHideSide.category\"></span>\n </div>\n <div class=\"unit-search__sidebox-content\" :class=\"[{ 'fold': isUpCategory }, { 'is_hide': isHideSide.category || !categoryList.length }]\">\n <div class=\"unit-search__category\">\n <ul class=\"unit-search__category-items\">\n <li v-for=\"item in categoryList\" class=\"unit-search__category-item\"\n :class=\"{ 'is_active': item.id === page_category_id || (item.children && item.children.some(o=>o.id === page_category_id || (o.children && o.children.some(s=> s.id === page_category_id)))) }\" :key=\"item.id\">\n <div class=\"unit-search__category-item-text\">\n <a href=\"javascript:;\" @click='getPageTypeList(item.id)' text-style=\"3\">{{item.title}}</a>
1\n <span :class=\"['iconfont icon-action-left-lighter', item.is_show ? 'is_active' : '']\"\n v-if=\"item.children && item.children.length\" @click.stop=\"showNavChild('', item.id)\"></span>\n </div>\n <ul :class=\"['unit-search__category-items', item.is_show ? 'is_active' : '']\"\n v-if=\"item.children && item.children.length\">\n <li class=\"unit-search__category-item\" v-for=\"son in item.children\"\n :class=\"{ 'is_active': son.id === page_category_id || (son.children && son.children.some(o=>o.id === page_category_id)) }\" :key=\"son.id\">\n <div class=\"unit-search__category-item-text\">\n <a href=\"javascript:;\" @click='getPageTypeList(son.id)' text-style=\"3\">{{son.title}}</a>\n <span :class=\"['iconfont icon-action-left-lighter', son.is_show ? 'is_active' : '']\"\n v-if=\"son.children && son.children.length\" @click.stop=\"showNavChild(event, son.id)\"></span>\n </div>\n <ul :class=\"['unit-search__category-items', son.is_show ? 'is_active' : '']\">\n <li class=\"unit-search__category-item\" v-for=\"grandson in son.children\" :class=\"{ 'is_active': grandson.id === page_category_id}\" :key=\"grandson.id\">\n <div class=\"unit-search__category-item-text\">\n <a href=\"javascript:;\" @click='getPageTypeList(grandson.id)' text-style=\"3\">{{grandson.title}}</a>\n </div>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li class=\"unit-search__category-items-more\" v-show=\"isUpCategory\" @click=\"getMoreCategory()\">\n <span class=\"iconfont icon-action-bottom-lighter\"></span>\n </li>\n </ul>\n <!-- æ·è´çä¸çº§æ ç® -->\n <ul class=\"unit-search__category-items unit-search__category-items--third\" ref=\"thirdCategory\">\n <li class=\"unit-search__category-item\" v-for=\"item in thirdCategoryList\" :class=\"{ 'is_active': item.id === page_category_id}\" :key=\"item.id\">\n <div class=\"unit-search__category-item-text\">\n <a href=\"javascript:;\" @click='getPageTypeList(item.id)' text-style=\"3\">{{item.title}}</a>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <!-- 款å¼åæ° -->\n <div class=\"mb-15\" v-for=\"item in searchItem.patterns\" :key=\"item.id\" v-if=\"currentSearchType === 'product'\">\n <div class=\"unit-search__sidebox\">\n <div class=\"unit-search__sidebox-title\">\n <p class=\"mr-2\" text-style=\"3\">{{ item.sign }}</p>\n <span :class=\"['iconfont icon-action-left-lighter', { 'up': item.is_show }]\"\n @click=\"item.is_show = !item.is_show\"></span>\n </div>\n <div class=\"unit-search__sidebox-content unit-search__sidebox-input\" :class=\"{ 'is_hide': item.is_show }\">\n <ul class=\"row\">\n <li class=\"col-6\" :class=\"{ 'is_active': child.is_active }\" v-for=\"child in item.attr_value\"\n @click=\"changePatternSearch(item.id, child, item.input_type)\">\n <input type=\"checkbox\">\n <span class=\"iconfont icon-form-validated\"></span>\n <label>{{ child.content }}</label>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <!-- 屿§ -->\n <div class=\"mb-15\" v-for=\"item in searchItem.attrs\" :key=\"item.id\"\n v-if=\"currentSearchType === 'product' && item.attr_value.length > 0\">\n <div class=\"unit-search__sidebox\">\n <div class=\"unit-search__sidebox-title\">\n <p class=\"mr-2\" text-style=\"3\">{{ item.sign }}</p>
1\n <span :class=\"['iconfont icon-action-left-lighter', { 'up': item.is_show }]\"\n @click=\"item.is_show = !item.is_show\"></span>\n </div>\n <div class=\"unit-search__sidebox-content unit-search__sidebox-input\" :class=\"{ 'is_hide': item.is_show }\">\n <ul class=\"row\">\n <li class=\"col-6\" :class=\"[{'col-12': item.input_type === 1},{'is_active': child.is_active }]\"\n v-for=\"child in item.attr_value\" @click=\"changeAttrSearch(item.id, child, item.input_type)\">\n <input type=\"radio\" v-if=\"item.input_type === 2\">\n <input type=\"checkbox\" v-else-if=\"item.input_type === 3\">\n <span class=\"iconfont icon-form-validated\"\n v-if=\"item.input_type === 3 || item.input_type === 2\"></span>\n <label text-style=\"3\">{{ child.content }}</label>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-search__sidebar-background\" @click=\"showFilter()\"></div>\n </div>\n <!-- ä¾§è¾¹æ°æ® -->\n <div class=\"col col-12 col-md-8 col-xl-9\">\n <div class=\"unit-search__list-content\">\n <div class=\"unit-search__filter\">\n <div :class=\"['unit-search__filter-text', !closeDrop ? 'is_active' : '']\" @click.prevent=\"openDrop($event)\" text-style=\"3\">\n {{ showSort }}\n <span class=\"iconfont icon-action-bottom-lighter ml-1\"></span>\n <div class=\"unit-search__filter-posi\" v-show=\"!closeDrop\">\n <div class=\"unit-search__filter-posi-text unit-search__sanjiao unit-search__isChoose\">\n <p :class=\"[(sort === item.key) ? 'is_active' : '']\" v-for=\"(item,index) in sortLis\"\n @click=\"changeFilter(item.key,item.value)\" :key=\"item.key\" text-style=\"3\">{{ item.value }}</p>\n </div>\n </div>\n </div>\n <div class=\"unit-search__listType ml-3\">\n <span :class=\"['iconfont icon-base-cascades', (listQueue === 'column') ? 'is_active': '']\"\n @click=\"changeListQueue('column')\"></span>\n <span :class=\"['iconfont icon-base-list ml-1', (listQueue === 'row') ? 'is_active': '']\"\n @click=\"changeListQueue('row')\"></span>\n </div>\n <div class=\"unit-search__m-filter ml-3\" @click=\"showFilter()\">\n <span text-style=\"3\" style=\"font-size:14px !important;\">\n <?= $t('filter') ?>\n </span>\n <i class=\"iconfont icon-search-shaixuan\"></i>\n </div>\n </div>\n <div\n :class=\"['unit-search__list-items row position-relative', `unit-search__list-${listQueue}`, `unit-search-list__${currentSearchType}`]\">\n <div class=\"loading absolute-shade\" v-if=\"searchLoading\"></div>\n <template v-if=\"productList.list && productList.list.length > 0\">\n <div class=\"unit-search__list-item col-md-4 col-6\" v-for=\"item in productList.list\" :key=\"item.id\">\n <a :href=\"globalThis.Server.getRinseHref(item.page_url_suffix, window.app.info.site)\"\n class=\"unit-search__list-a\">\n <div :class=\"['unit-search__list-item-inner d-flex', `flex-${listQueue}`,currentSearchType === 'video'||currentSearchType === 'document'?'unit-search__list-item-Videoinner':'']\">\n <div :class=\"[\n 'unit-search__list-image',\n item.thumb.includes('/format-')?'hasFormat':''\n ]\"> \n <img :src=\"item.thumb==''?banner_img:item.thumb\" :alt=\"item.title\" class=\"display-image\">\n <div class=\"unit-search__list--download-view\" @click.prevent=\"handleDownload(item)\" v-if=\"currentSearchType === 'document'\">\n <div class=\"unit-search__list--download-btn\" text-style=\"3\">\n <i class=\"icon-download iconfont\"></i>\n <?= $t('Download') ?>\n </div>\n </div>
1\n <span class=\"iconfont icon-action-play unit-search__list--video-play\" v-if=\"currentSearchType === 'video'\"></span>\n </div>\n <div class=\"unit-search_list_row_docunment\" v-if=\"currentSearchType === 'document'&&listQueue === 'row'\">\n <div class=\"unit-search__list-text\">\n <div class=\"unit-search__list-content\">\n <? if (show_title) { -?>\n <div class=\"unit-search__list-title\" v-html=\"item.title\" text-style=\"3\"></div>\n <? } -?>\n <? if (show_subtitle) { -?>\n <div class=\"unit-list__subtitle\">\n <div class=\"text_ellipsis\">{{ item.subtitle }}</div>\n </div>\n <? } -?>\n <? if (show_description) { -?>\n <div class=\"unit-list__description\">\n <div class=\"text_ellipsis\">{{ globalThis.Server.getFilterHTML(item.summary) }}</div>\n </div>\n <? } -?>\n </div>\n <div class=\"unit-search__list-video\" v-if=\"currentSearchType === 'video'\">\n <i class=\"icon-eye iconfont\" style=\"margin-right:6px;\"></i>\n <span class=\"mr-2\">{{ item.reads }}</span>\n <?= $t('views') ?>\n </div>\n <div class=\"unit-search__list--product\"\n v-if=\"site_type > 1 && site_type!==51 && currentSearchType === 'product'&&item.price.selling_min > 0\">\n <div v-if=\"item.price.selling_min > 0\" class=\"unit-search__list-price\">\n <div v-if=\"Number(item.price.selling_min)>0\" class=\"unit-search__list-price-min\">\n <i>$</i><span>{{ item.price.selling_min }}</span>\n </div>\n <div v-if=\"Number(item.price.cost_min)>0\" class=\"unit-search__list-price-max\">\n <i>$</i><span>{{ item.price.cost_min }}</span>\n </div>\n </div>\n <div class=\"unit-search__list-extend\">\n <!-- <div class=\"unit-search__list-order\">\n <i class=\"iconfont icon-base-order\"></i>\n <span>123</span>\n </div>\n <div class=\"unit-search__list-like\">\n <i class=\"iconfont icon-base-collect\"></i>\n <span>44</span>\n </div> -->\n <div class=\"unit-search__list-cart\" v-show=\"item.price.selling_min\">\n <i class=\"iconfont icon-base-cart-lighter\"></i>\n <span>\n <?= $t('Add to Cart') ?>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"unit-search__list--download-btn\" @click.prevent=\"handleDownload(item)\" style=\"height: 40px;margin-left:5px;display: flex;\">\n <i class=\"icon-download iconfont\"></i>\n <span class=\"unit-search__list--download-btn-text\" style=\"margin-left:5px;\" text-style=\"3\"><?= $t('Download') ?></span>\n </div>\n </div>\n <div class=\"unit-search__list-text\" :style=\"{'border-bottom':listQueue === 'row' ?'1px solid rgb(223, 224, 224)':''}\" v-else>\n <div class=\"unit-search__list-content\">\n <? if (show_title) { -?>\n <div class=\"unit-search__list-title\" v-html=\"item.title\" text-style=\"3\"></div>\n <? } -?>\n <? if (show_subtitle) { -?>\n <div class=\"unit-list__subtitle\">\n <div class=\"text_ellipsis\">{{ item.subtitle }}</div>\n </div>\n <? } -?>\n <? if (show_description) { -?>\n <div class=\"unit-list__description\">\n <div class=\"text_ellipsis\">{{ globalThis.Server.getFilterHTML(item.summary) }}</div>\n </div>\n <? } -?>\n </div>\n <div class=\"unit-search__list-video\" v-if=\"currentSearchType === 'video'\">\n <i class=\"icon-eye iconfont\" style=\"margin-right:6px;\"></i>
1\n <span class=\"mr-2\">{{ item.reads }}</span>\n <?= $t('views') ?>\n </div>\n <div class=\"unit-search__list--product\"\n v-if=\"site_type > 1 && site_type!==51 && currentSearchType === 'product'&&item.price.selling_min > 0\">\n <div v-if=\"item.price.selling_min > 0\" class=\"unit-search__list-price\">\n <div v-if=\"Number(item.price.selling_min)>0\" class=\"unit-search__list-price-min\">\n <i>$</i><span>{{ item.price.selling_min }}</span>\n </div>\n <div v-if=\"Number(item.price.cost_min)>0\" class=\"unit-search__list-price-max\">\n <i>$</i><span>{{ item.price.cost_min }}</span>\n </div>\n </div>\n <div class=\"unit-search__list-extend\">\n <!-- <div class=\"unit-search__list-order\">\n <i class=\"iconfont icon-base-order\"></i>\n <span>123</span>\n </div>\n <div class=\"unit-search__list-like\">\n <i class=\"iconfont icon-base-collect\"></i>\n <span>44</span>\n </div> -->\n <div class=\"unit-search__list-cart\" v-show=\"item.price.selling_min\">\n <i class=\"iconfont icon-base-cart-lighter\"></i>\n <span>\n <?= $t('Add to Cart') ?>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </a>\n </div>\n </template>\n <div class=\"unit-search__nodata\" v-else>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n </div>\n </div>\n <div class=\"unit-search__pagination pt-3\" v-if=\"page.page_count>1\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'pagination', config: { attr_id: package.attr_id,type:'vue' } } }) -?>\n </div>\n </div>\n </div>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n load_immediate: true,\n file: '/assets/js/unit/search.js',\n name: 'ScriptSearch',\n attrId: '<?= package.attr_id ?>',\n pageInfo: '<?= JSON.stringify(pageInfo) ?>',\n templateType: '<?= ctx.state.site.site_type ?>',\n siteType:'<?= site.template_type ?>',\n labelStyle: '<?= label_style ?>',\n })\n</script>","/package/unit/sitemap":"<?\n const sitemap_type = page.page_base_url.replace(/^(.*?)\\/([a-z_]+)$/gi, '$2')\n page.sitemap.count.product = page.sitemap.count.product || 0\n page.sitemap.count.ai_product = page.sitemap.count.ai_product || 0\n page.sitemap.count.article = page.sitemap.count.article || 0\n page.sitemap.count.ai_article = page.sitemap.count.ai_article || 0\n page.sitemap.count.video = page.sitemap.count.video || 0\n page.sitemap.count.topic = page.sitemap.count.topic || 0\n page.sitemap.count.article_topic = page.sitemap.count.article_topic || 0\n page.sitemap.count.product_topic = page.sitemap.count.product_topic || 0\n page.sitemap.count.tags = page.sitemap.count.tags || 0\n page.sitemap.count.faq = page.sitemap.count.faq || 0\n?>\n<!-- éç¨-ç«ç¹å°å¾ -->\n<div class=\"unit-sitemap d-flex\">\n <div class=\"unit-sitemap__side col-12 col-md-3 col-xl-3 py-3\">\n <div class=\"unit-sitemap__side-inner\">\n <div class=\"unit-sitemap__side-title text-capitalize\"><?= $t('sitemap') ?></div>\n <nav class=\"nav nav-pills flex-column\" id=\"side-<?= package.attr_id ?>\">\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap.html', site) ?>\"><?= $t('navigation') ?></a>\n <? if (page.sitemap.count.product > 0) { ?>\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap_products.html', site) ?>\"><?= $t('products') ?></a>\n <? } ?>\n <? if (page.sitemap.count.article > 0) { ?>\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap_articles.html', site) ?>\"><?= $t('articles') ?></a>\n <? } ?>\n <? if (page.sitemap.count.video > 0) { ?>\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap_videos.html', site) ?>\"> <?= $t('Videos') ?></a>\n <? } ?>\n <? if (page.sitemap.count.ai_product > 0) { ?>\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap_derivative_products.html', site) ?>\"> <?= $t('derivative products') ?></a>\n <? } ?>\n <? if (page.sitemap.count.ai_article > 0) { ?>\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap_blogs.html', site) ?>\"> <?= $t('blogs') ?></a>\n <? } ?>\n <? if (page.sitemap.count.topic + page.sitemap.count.article_topic + page.sitemap.count.product_topic > 0) { ?>\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap_topics_blogs.html', site) ?>\"> <?= $t('topics blogs') ?></a>\n <? } ?>\n <? if (page.sitemap.count.tags > 0) { ?>\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap_tags.html', site) ?>\"> <?= $t('tags') ?></a>\n <? } ?>\n <? if (page.sitemap.count.faq > 0) { ?>\n <a class=\"nav-link text-capitalize\" href=\"<?= globalThis.Server.getRinseHref('/sitemap_faq.html', site) ?>\"> <?= $t('faq') ?></a>\n <? } ?>\n </nav>\n </div>\n </div>\n <div class=\"unit-sitemap__content col-12 col-md-9 col-xl-9 py-3\">\n <div class=\"unit-sitemap__main-list shadow-sm text-capitalize\">\n <? if (sitemap_type === 'sitemap') { ?>\n <div class=\"unit-sitemap__main-item\">\n <? if (page.sitemap.product_category.length > 0) { ?>\n <div class=\"text_list text-center\">\n <h2 class=\"h5\"><?= $t('Product Category') ?></h2>\n </div>\n <div class=\"row\">
1\n <? page.sitemap.product_category.forEach(item => { ?>\n <div class=\"col-12 col-sm-12 col-md-4\">\n <div class=\"text_list\">\n <div class=\"subtitle \">\n <a href=\"<?= globalThis.Server.getRinseHref(item.page_url_suffix, site) ?>\" title=\"<?= item.title ?>\" >• <?= item.title ?></a>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n <? } ?>\n\n <? if (page.sitemap.other_category.length > 0) { ?>\n <div class=\"text_list text-center pt-4\">\n <h2 class=\"h5\"><?= $t('Other Navigation') ?></h2>\n </div>\n <div class=\"row\">\n <? page.sitemap.other_category.forEach(item => { ?>\n <div class=\"col-12 col-sm-12 col-md-4\">\n <div class=\"text_list\">\n <div class=\"subtitle \">\n <a href=\"<?= globalThis.Server.getRinseHref(item.page_url_suffix, site) ?>\" title=\"<?= item.title ?>\" >• <?= item.title ?></a>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n <? } ?>\n </div>\n\n <? } else if (page.sitemap.list.length > 0) { ?>\n <div class=\"unit-sitemap__main-item\">\n <div class=\"text_list text-center\">\n <? if (sitemap_type === 'sitemap_products') { ?>\n <h2 class=\"h5\"><?= $t('products') ?></h2>\n <? } else if (sitemap_type === 'sitemap_articles') { ?>\n <h2 class=\"h5\"><?= $t('articles') ?></h2>\n <? } else if (sitemap_type === 'sitemap_videos') { ?>\n <h2 class=\"h5\"><?= $t('Videos') ?></h2>\n <? } else if (sitemap_type === 'sitemap_derivative_products') { ?>\n <h2 class=\"h5\"><?= $t('derivative products') ?></h2>\n <? } else if (sitemap_type === 'sitemap_blogs') { ?>\n <h2 class=\"h5\"><?= $t('blogs') ?></h2>\n <? } else if (sitemap_type === 'sitemap_topics_blogs') { ?>\n <h2 class=\"h5\"><?= $t('topics blogs') ?></h2>\n <? } else if (sitemap_type === 'sitemap_tags') { ?>\n <h2 class=\"h5\"><?= $t('tags') ?></h2>\n <? } else if (sitemap_type === 'sitemap_faq') { ?>\n <h2 class=\"h5\"><?= $t('faq') ?></h2>\n <? } ?>\n </div>\n <div class=\"row\">\n <? page.sitemap.list.forEach(item => { ?>\n <div class=\"col-12 col-sm-12 col-md-4\">\n <div class=\"text_list\">\n <div class=\"subtitle \">\n <a href=\"<?= globalThis.Server.getRinseHref(item.page_url_suffix, site) ?>\" title=\"<?= item.title ?>\" >• <?= item.title ?></a>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n <? } ?>\n </div>\n <? if (page.sitemap.list.length && page.page_total) { ?>\n <div class=\"unit-sitemap__pagination pt-4\">\n <?-\n include(getViewsPath(`/layout/base`), {\n package: {\n type: 'pagination',\n config: { attr_id: package.attr_id }\n }\n })\n -?>\n </div>\n <? } ?>\n </div>\n</div>","/package/unit/social-info":"<?\nlet list_config = package.config.social_list\nlet sociala_config = package.config.social_info\n\n?>\n\n<div class=\"unit-social-info\" >\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/social-info.js',\n name: 'ScriptSocialInfo',\n attrId: '<?= package.attr_id ?>',\n pageTarget: '<?= list_config.target ?>',\n description: \"<?- globalThis.Server.removeHtmlTags(package.content.data[0]?.description || '', site)?>\",\n list_config: \"<?= JSON.stringify(list_config) ?>\",\n sociala_config: \"<?= JSON.stringify(sociala_config) ?>\"\n })\n</script>","/package/unit/social-list":"<?\nlet social_list = site.site_social\nlet list_config = package.config.social_list\nlet { share_media, sharing_type } = package.config.social_list\nlet quantity = 0\n-?>\n\n<? if(sharing_type === '2') {?> \n <div class=\"unit-social-list d-flex flex-wrap\">\n <? if (list_config.showShareWith) { ?>\n <span class=\"share-with\" style=\"font-weight: bold;font-size: inherit;font-style: inherit;text-decoration: inherit;letter-spacing: inherit;text-transform: inherit;\" text-style=\"3\">Share with: </span>\n <? } -?>
1\n \n <? share_media.forEach((item, index) => { -?>\n <? if (share_media.length && quantity<list_config.quantity) { ?>\n <? quantity++ ?>\n <a href=\"\" target=\"\" data-type=\"<?- item.media ?>\" class=\"unit-social-list__item custom-color bg-<?- item.media.toLowerCase() ?>\">\n <div class=\"unit-social-list__icon\"><span class=\"iconfont icon-<?- item.icon || '' ?>\"></span></div>\n </a>\n <? } -?>\n <? }) -?>\n <? if (share_media.length > list_config.quantity) { ?>\n <div class=\"unit-social-list__item bg-more\">\n <div class=\"unit-social-list__more\"><span class=\"iconfont icon-base-dot\"></span></div>\n </div>\n <? } -?>\n \n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/social-list.js',\n name: 'ScriptSocialList',\n attrId: '<?= package.attr_id ?>',\n mediaList: '<?= JSON.stringify(social_list) ?>',\n email: '<?= site.email ?>',\n shareMedia: '<?= JSON.stringify(share_media) ?>',\n sharingType: '<?= sharing_type ?>',\n pageTarget: '<?= list_config.target ?>'\n })\n </script>\n </div>\n\n<?} else if (social_list.length > 0 && sharing_type === '1') { ?>\n<div class=\"unit-social-list d-flex flex-wrap\">\n <? social_list.forEach((item, index) => { -?>\n <? if (index < list_config.quantity) { ?>\n <a rel=\"nofollow\" href=\"<?= item.link ?>\" target=\"<?= list_config.target || '_self' ?>\" class=\"unit-social-list__item custom-color bg-<?- item.media.toLowerCase() ?>\">\n <div class=\"unit-social-list__icon\"><span class=\"iconfont icon-<?- item.icon ?>\"></span></div>\n </a>\n <? } -?>\n <? }) -?>\n <? if (social_list.length > list_config.quantity) { ?>\n <div class=\"unit-social-list__item bg-more\">\n <div class=\"unit-social-list__more\"><span class=\"iconfont icon-base-dot\"></span></div>\n </div>\n <? } -?>\n\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/social-list.js',\n name: 'ScriptSocialList',\n attrId: '<?= package.attr_id ?>',\n mediaList: '<?= JSON.stringify(social_list) ?>',\n email: '<?= site.email ?>',\n shareMedia: '<?= JSON.stringify(share_media) ?>',\n sharingType: '<?= sharing_type ?>',\n pageTarget: '<?= list_config.target ?>'\n })\n </script>\n</div>\n<? } else if (ctx.query.design) { ?>\n<div class=\"alert alert-light border\" role=\"alert\" style=\"margin-bottom: 0;\">\n 请å¨åå°â设置-详ç»ä¿¡æ¯âå¡«åä¸ç¤¾åªä¿¡æ¯\n</div>\n<? } ?>","/package/unit/social-share":"<div class=\"unit-social-share\">\n <link rel=\"stylesheet\" href=\"<?- globalThis.Server.versionUrl('/assets/css/unit/social-share.css') ?>\">\n <div class=\"unit-share_pop d-none\">\n <div class=\"unit-share_pop_box\">\n <div class=\"unit-share_pop_title ft-16 d-flex align-items-center justify-content-between\">\n <span><?= $t('Choose Way To Share') ?></span>\n <span class=\"unit-social-share-close iconfont cursor-pointer icon-action-close-2\"></span>\n </div>\n <div class=\"form-group grey mg-top20 mg-bottom20\">\n <div class=\"form-check form-check-inline first-form-check\">\n <input class=\"form-check-input\" type=\"radio\" id=\"share_link\" name=\"share\" checked=\"checked\">\n <label class=\"form-check-label\" for=\"share_link\"><?= $t('Link') ?></label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" id=\"share_social\" name=\"share\">\n <label class=\"form-check-label\" for=\"share_social\"><?= $t('Send To My Social Media') ?></label>\n </div>\n </div>\n <div class=\"unit-share_link\">\n <div class=\"d-flex align-items-center\">\n <input readonly class=\"unit-share_link-text form-control flex-grow-1 mr-2\" type=\"text\">\n <button class=\"btn btn-main flex-shrink-0\" type=\"button\">\n <?= $t('Copy link') ?>\n </button>\n </div>\n </div>\n <div class=\"unit-share_social d-none\">\n <div class=\"d-flex justify-content-center align-items-center\">
1\n <img src=\"/assets/images/share/facebook.png\" alt=\"\" data-social=\"facebook\">\n <img src=\"/assets/images/share/pinterest.png\" alt=\"\" data-social=\"pinterest\">\n <img src=\"/assets/images/share/twitter.png\" alt=\"\" data-social=\"twitter\">\n <!-- <img src=\"/assets/images/share/vk.png\" alt=\"\"> -->\n </div>\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/social-share.js',\n name: 'ScriptSocialShare',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/sort":"<?\n let sort_config = page.children\n let sort_child = sort_config[0].children\n-?>\n\n<div class=\"unit-sort__nav-wrap\">\n <div class=\"unit-sort__nav\">\n <nav class=\"unit-sort__nav-inner\" id=\"<?= `swiper-${package.attr_id}` ?>\"\n carousel=\"<?= JSON.stringify({ auto_width: 1, navigation: 1 }) ?>\">\n <div class=\"swiper-container\">\n <div class=\"swiper-wrapper\">\n <? sort_child.forEach(item => { -?>\n <div class=\"swiper-slide unit-sort__nav-item <?= item.is_active ? 'active' : '' ?>\">\n <div\n class=\"unit-sort__nav-item-inner <?= page.page_url === item.href ? 'active' : '' || page.parents.slice(-2,-1)[0].href === item.href ? 'active' : '' ?>\">\n <a class=\"unit-sort__nav-item-a unit-sort__nav-first-a\" href=\"<?= globalThis.Server.getRinseHref(item.href, site) ?>\">\n <?= item.title ?>\n <i class=\"unit-sort__nav-icon iconfont <?= item.children.length ? 'icon-action-left-lighter' : 'hidden' ?>\"></i>\n </a>\n </div>\n <? if( item.children.length ){ -?>\n <div class=\"unit-sort__nav-son-wrap\">\n <? item.children.forEach(son => { -?>\n <div class=\"unit-sort__nav-son <?= page.page_url === son.href ? 'active' : '' ?>\">\n <a class=\"unit-sort__nav-son-a\" href=\"<?= globalThis.Server.getRinseHref(son.href, site) ?>\">\n <span>\n <?= son.title ?>\n </span>\n </a>\n </div>\n <? }) -?>\n <span class=\"unit-sort__nav-arrow\"></span>\n </div>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n </nav>\n <div class=\"unit-sort__nav-tab\">\n <i class=\"unit-sort__nav-tab-icon iconfont icon-base-menu\"></i>\n <i class=\"unit-sort__nav-tab-icon iconfont icon-base-menu active\"></i>\n </div>\n </div>\n</div>\n<script data-src=\"/assets/js/unit-sort.js\"\n script=\"<?= JSON.stringify({ fun_name: 'initsort', fun_param: { attr_id: package.attr_id } }) ?>\"></script>\n","/package/unit/special-offers":"<? \n let price = page.detail_min_price \n let costPrice = page.detail_min_cost_price\n let maxPrice = page.detail_max_price\n let maxCostPrice = page.detail_max_cost_price\n let isShowMaxPrice = page.detail_min_price !== page.detail_max_price\n let isShowMaxCostPrice = page.detail_min_cost_price !== page.detail_max_cost_price\n-?>\n<div class=\"unit-special-offers\">\n <div class=\"unit-special-offers__items\">\n <div class=\"unit-special-offers__box-time\">\n <div class=\"unit-special-offers--prices\">\n <span class=\"unit-special-offers--prices_sell\">\n <i>$</i>\n <em class=\"unit-special-offers--prices_sell-price\">\n <!-- 产ååä»·ï¼å¦ææææ£æ¶éè -->\n <span class=\"unit-special-offers--prices_sell-price_original\">\n <span>\n <?= price ?>\n </span>\n <? if(isShowMaxPrice) { -?>\n <span>-\n <?= maxPrice ?>\n </span>\n <? } -?>\n </span>\n <span class=\"unit-special-offers--prices_sell-price_new\"></span>\n </em>\n </span>\n <span class=\"unit-special-offers--prices_cost\">\n <em class=\"unit-special-offers--prices_cost-price\">
1\n <span>$\n <?= costPrice ?>\n </span>\n <? if(isShowMaxCostPrice) { -?>\n <span>-\n <?= maxCostPrice ?>\n </span>\n <? } -?>\n </em>\n </span>\n <span class=\"unit-special-offers-prices_off d-none\">\n <span class=\"unit-special-offers--prices_icon\">â</span>\n <span class=\"unit-special-offers--prices_dis\">0% OFF</span>\n </span>\n </div>\n <div class=\"unit-special-offers--date d-none\">\n <div class=\"unit-special-offers--date_ends\">Ends in</div>\n <div class=\"unit-special-offers--date_limt\">\n <span class=\"unit-special-offers--date_limt-date unit-special-offers--date_limt--hh\"> </span>\n <span class=\"unit-special-offers--date_limt-date unit-special-offers--date_limt--mm\"> </span>\n <span class=\"unit-special-offers--date_limt-date unit-special-offers--date_limt--ss\"> </span>\n </div>\n </div>\n </div>\n <div class=\"unit-special-offers_box--list d-none\">\n <div class=\"unit-special-offers--title\">\n DISCOUNT:\n </div>\n <div class=\"unit-special-offers--discount-list\">\n <? [1,2,3,4,5,6].forEach(item => {-?>\n <div class=\"unit-special-offers--discount-list__item\">\n <span class=\"unit-special-offers--discount-list__item--code\">My promo code</span>\n <span class=\"unit-special-offers--discount-list__item--off\">Order $21.21-get $1.21 off</span>\n <a href=\"javascript:;\" class=\"unit-special-offers--discount-list__item--link\">Receive</a>\n </div>\n <? }) ?>\n </div>\n <div class=\"unit-special-offers--detail\">\n Details >\n </div>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/special-offers.js',\n name: 'ScriptSpecialOffers',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/store-info":"<?\n let { show_phone, show_email, show_contact, show_reception, show_address, show_title, show_subtitle, show_description, style_type_title, style_type_subtitle, style_type_description, style_type_address, style_type_reception, style_type_contact, style_type_email, style_type_phone, show_img, mr_default, mr_md, mr_xl, proportion } = package.config.store_info\n\tlet detailData = ctx.state.page?.store_info || {}\n\tlet { cols_col, cols_md, cols_xl } = package\n\tlet gapCount = { '12': 1,\t'6': 2,\t'4': 3,\t'3': 4,\t'2_4': 5,\t'2': 6,\t'12_7': 7,\t'12_8': 8,\t'12_9': 9,\t'12_10': 10,\t'12_11': 11,\t'1': 12,\t'auto': 'auto'\t}\n let weekDays= ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']\n\n let swiper_config = package.config.swiper\n let { is_swiper, autoplay, navigation, loop } = swiper_config\n let image_config = package.config.image\n-?>\n\n<div>\n <? if (show_title) { -?>\n <div class=\"si-store-name\" text-style=\"<?= style_type_subtitle ?>\">\n <span class=\"text_ellipsis\">\n <?= detailData.title || '' ?>\n </span>\n </div>\n <? } -?>\n <div style=\"--proportion:<?= proportion ?>;\" class=\"store-info\">\n <div class=\"si-left\">\n <? if (show_address) { -?>\n <div class=\"si-title si-flex\" text-style=\"<?= style_type_title ?>\">\n <i class=\"iconfont icon-s-address\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('address') ?>\n </span>\n </div>\n <div class=\"si-address\" text-style=\"<?= style_type_address ?>\">\n <span class=\"text_ellipsis\">\n <?= detailData?.address? (detailData?.address + ', ') : '' ?>\n <?= detailData?.city? (detailData?.city + ', ') : '' ?>\n <?= detailData?.province? (detailData?.province + ', ') : '' ?>\n <?= detailData?.country || '' ?>\n </span>\n </div>\n <? } -?>\n\n <? if (show_reception) { -?>\n <div class=\"si-title si-flex\" text-style=\"<?= style_type_title ?>\">\n <i class=\"iconfont icon-s-time\"></i>
1\n <span class=\"text_ellipsis\">\n <?= $t('Store Hours') ?>\n </span>\n </div>\n <div class=\"si-reception-time\" text-style=\"<?= style_type_reception ?>\">\n <span class=\"text_ellipsis\">\n <? detailData.reception_time.forEach((day, x)=>{-?>\n <?= $t(weekDays[day.week-1]) || '' ?>:\n <? day.time.forEach((time, y)=>{-?>\n <?= time.start? (time.start+' - '+time.end):$t('Closed') ?>\n <? }) ?>;\n <? }) ?>\n </span>\n </div>\n <? } -?>\n\n <? if (show_contact) { -?>\n <div class=\"si-title si-flex\" text-style=\"<?= style_type_title ?>\">\n <i class=\"iconfont icon-s-contact\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('contact') ?>\n </span>\n </div>\n <div class=\"si-contact\" text-style=\"<?= style_type_contact ?>\">\n <span class=\"text_ellipsis\">\n <?= detailData.contacts || '' ?>\n </span>\n </div>\n <? } -?>\n\n <? if (show_email) { -?>\n <div class=\"si-title si-flex\" text-style=\"<?= style_type_title ?>\">\n <i class=\"iconfont icon-s-email\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('email') ?>\n </span>\n </div>\n <div class=\"si-email\" text-style=\"<?= style_type_email ?>\">\n <span class=\"text_ellipsis\">\n <?= detailData.email || '' ?>\n </span>\n </div>\n <? } -?>\n\n <? if (show_phone) { -?>\n <div class=\"si-title si-flex\" text-style=\"<?= style_type_title ?>\">\n <i class=\"iconfont icon-s-phone\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('phone') ?>\n </span>\n </div>\n <div class=\"si-phone\" text-style=\"<?= style_type_phone ?>\">\n <span class=\"text_ellipsis\">\n <?= detailData.phone || '' ?>\n </span>\n </div>\n <? } -?>\n\n <? if (show_description) { -?>\n <? if (detailData.summary) { -?>\n <div class=\"si-line\"></div>\n <? } -?>\n <div text-style=\"<?= style_type_description ?>\" class=\"si-desc\">\n <span class=\"text_ellipsis\">\n <?= detailData.summary || '' ?>\n </span>\n </div>\n <? } -?>\n </div>\n <div class=\"si-map\">\n <iframe src=\"<?= detailData.map_url || '' ?>\" frameborder=\"0\"></iframe>\n </div>\n </div>\n\n <? if (show_img) { -?>\n <div class=\"siswiper\">\n <div class=\"swiper-wrapper\">\n <? detailData.photos.forEach((item, index)=>{-?>\n <div class=\"swiper-slide si-item\">\n <div class=\"si-img\" display-style=\"<?= show_img ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { img: item.url, config: image_config, close_lazy:'1' } } }) -?>\n </div>\n </div>\n <? }) ?>\n </div>\n <? if (navigation&&is_swiper) { -?>\n <div class=\"unit-list__button-prev swiper-button-prev prev\"></div>\n <div class=\"unit-list__button-next swiper-button-next next\"></div>\n <? } -?>\n </div>\n <? } -?>\n</div>\n\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/store-info.js',\n name: 'ScriptStoreInfo',\n attrId: '<?= package.attr_id ?>',\n is_swiper: '<?= is_swiper ?>',\n loop: '<?= loop ?>',\n delay: '<?= autoplay ?>',\n mr_sm: '<?= mr_default ?>',\n mr_md: '<?= mr_md ?>',\n mr_xl: '<?= mr_xl ?>',\n cols_md: '<?= gapCount[cols_md] ?>',\n cols_col: '<?= gapCount[cols_col] ?>',\n cols_xl: '<?= gapCount[cols_xl] ?>',\n slides: '<?= detailData.photos.length ?>',\n })\n</script>","/package/unit/store-list":"<?\n let { show_phone, show_email, show_contact, show_reception, show_address, show_img, show_title, show_subtitle, show_description, style_type_title, style_type_subtitle, style_type_description, mr_default, mr_md, mr_xl } = package.config.store_list\n let { cols_col,cols_md,cols_xl } = package\n let tab_list = package.content.data || []\n let image_config = package.config.image\n let swiper_config = package.config.swiper\n let { is_swiper, autoplay, navigation, loop } = swiper_config\n\n let gap_sm = package.style['.mr']['default']['margin-right'] || '10px'\n let gap_md = package.style['.mr']['md']['margin-right'] || gap_sm\n let gap_xl = package.style['.mr']['xl']['margin-right'] || gap_sm\n let pageInfo = {page_size:page.page_size, page_number:page.page_number, page_count:page.page_count, page_total:page.total}\n\tlet gapCount = { '12': 1,\t'6': 2,\t'4': 3,\t'3': 4,\t'2_4': 5,\t'2': 6,\t'12_7': 7,\t'12_8': 8,\t'12_9': 9,\t'12_10': 10,\t'12_11': 11,\t'1': 12,\t'auto': 'auto'\t}\n let weekDays= ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']\n let emptyImg = 'https://img.yfisher.com/r1210/1765262534860-2x.png'\n-?>\n\n<?-\n `<style>\n#${package.attr_id} .sl-grid .swiper-wrapper {\ndisplay: grid;\n}\n@media (max-width:767px) {\n#${package.attr_id} .sl-grid .swiper-wrapper {\ngap:${gap_sm};\ngrid-template-columns: repeat(${gapCount[cols_col]}, 1fr);\n}\n}\n@media (min-width:768px) and (max-width:1199px) {\n#${package.attr_id} .sl-grid .swiper-wrapper {\ngap:${gap_md};\ngrid-template-columns: repeat(${gapCount[cols_md]}, 1fr);\n}\n}\n@media (min-width:1200px) {\n#${package.attr_id} .sl-grid .swiper-wrapper {\ngap:${gap_xl};\ngrid-template-columns: repeat(${gapCount[cols_xl]}, 1fr);\n}\n}\n</style>`\n?>\n<div class=\"slswiper <?= is_swiper?'':'sl-grid' ?>\">\n <div class=\"swiper-wrapper\">\n <? tab_list.forEach((item, index)=>{-?>\n <a href=\"<?= item.target === 'block' ? 'javascript:;' : globalThis.Server.getRinseHref(item.page_url, site) ?>\"\n target=\"<?= item.target==='block'?'_self':item.target ?>\" class=\"swiper-slide sl-item\">\n <? if (show_img) { -?>\n <div class=\"sl-img\" display-style=\"<?= show_img ?>\">
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, img: item.img || emptyImg, config: image_config, close_lazy:'1' } } }) -?>\n </div>\n <? } -?>\n <div class=\"sl-info-box\">\n <? if (show_title) { -?>\n <div class=\"sl-title\" text-style=\"<?= style_type_title ?>\">\n <span class=\"text_ellipsis\">\n <?= item?.detail?.title || '' ?>\n </span>\n </div>\n <? } -?>\n <div class=\"sl-info\" text-style=\"<?= style_type_description ?>\">\n <? if (show_contact) { -?>\n <div class=\"sl-contact sl-flex\">\n <i class=\"iconfont icon-s-contact\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('contact') ?>:\n <?= item?.detail?.contacts || '' ?>\n </span>\n </div>\n <? } -?>\n <? if (show_email) { -?>\n <div class=\"sl-email sl-flex\">\n <i class=\"iconfont icon-s-email\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('email') ?>:\n <?= item?.email || '' ?>\n </span>\n </div>\n <? } -?>\n <? if (show_phone) { -?>\n <div class=\"sl-phone sl-flex\">\n <i class=\"iconfont icon-s-phone\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('phone') ?>:\n <?= item?.phone || '' ?>\n </span>\n </div>\n <? } -?>\n <? if (show_reception) { -?>\n <div class=\"sl-opening-hours sl-flex\">\n <i class=\"iconfont icon-s-time\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('Store Hours') ?>:\n <? item?.reception_time?.forEach((day, x)=>{-?>\n <?= $t(weekDays[day.week-1]) || '' ?>:\n <? day.time.forEach((time, y)=>{-?>\n <?= time.start? (time.start+' - '+time.end):$t('Closed') ?>\n <? }) ?>;\n <? }) ?>\n </span>\n </div>\n <? } -?>\n <? if (show_address) { -?>\n <div class=\"sl-address sl-flex\">\n <i class=\"iconfont icon-s-address\"></i>\n <span class=\"text_ellipsis\">\n <?= $t('address') ?>:\n <?= item?.detail?.address? (item?.detail?.address + ', ') : '' ?>\n <?= item?.detail?.address? (item?.detail?.city + ', ') : '' ?>\n <?= item?.detail?.province? (item?.detail?.province + ', ') : '' ?>\n <?= item?.detail?.country || '' ?>\n </span>\n </div>\n <? } -?>\n </div>\n <? if (show_description) { -?>\n <div class=\"sl-line <?= item?.detail?.summary ? 'on' : '' ?>\"></div>\n <div class=\"sl-desc\" text-style=\"<?= style_type_description ?>\">\n <span class=\"text_ellipsis\">\n <?= item?.detail?.summary || '' ?>\n </span>\n </div>\n <? } -?>\n\n </div>\n </a>\n <? }) ?>\n\n </div>\n <? if (navigation&&is_swiper) { -?>\n <div class=\"unit-list__button-prev swiper-button-prev prev\"></div>\n <div class=\"unit-list__button-next swiper-button-next next\"></div>\n <? } -?>\n</div>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/store-list.js',\n name: 'ScriptStoreList',\n attrId: '<?= package.attr_id ?>',\n is_swiper: '<?= is_swiper ?>',\n loop: '<?= loop ?>',\n delay: '<?= autoplay ?>',\n mr_sm: '<?= mr_default ?>',\n mr_md: '<?= mr_md ?>',\n mr_xl: '<?= mr_xl ?>',\n cols_md: '<?= gapCount[cols_md] ?>',\n cols_col: '<?= gapCount[cols_col] ?>',\n cols_xl: '<?= gapCount[cols_xl] ?>',\n\n pageInfo: '<?= JSON.stringify(pageInfo) ?>',\n emptyImg: '<?= emptyImg ?>',\n })\n</script>","/package/unit/store-search":"<?\n let config = package.config.store_search\n let { placeholder } = config\n let isDetailContent = package.content.type === 'detail'\n-?>\n\n<div class=\"store-search\">\n <input type=\"text\" class=\"ss-input\" text-style=\"3\" placeholder=\"<?= $t(placeholder) ?>\" />\n <!-- <div class=\"ss-btn\"><i class=\"iconfont icon-action-search-lighter\"></i></div>-->\n <div class=\"ss-btn\" button-style=\"<?= config.style_type_button ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t(config.button_text || 'Search'), isDetailContent: isDetailContent } } }) -?>\n </div>\n <div class=\"ss-area-list\">\n <!-- <div>ç¾å½</div>\n <div>è±å½</div> -->\n </div>\n</div>\n\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/store-search.js',\n name: 'ScriptStoreSearch',\n attrId: '<?= package.attr_id ?>'\n })\n</script>
1","/package/unit/tab-list":"<?\n let list_config = package.config.tab_list || {}\n let swiper_config = package.config.swiper || {}\n let video_config = package.config.video\n let image_config = package.config.image\n if (video_config) {\n video_config.scale = image_config.scale || ''\n video_config.effect = image_config.effect || 0\n }\n if (image_config) {\n image_config.current_hide_phone = package.current_hide_phone || 0\n image_config.sequence = package.sequence || []\n }\n let show_tab_img = list_config.show_tab_img % 10\n let show_img = list_config.show_img % 10\n let show_title = list_config.show_title % 10\n let show_subtitle = list_config.show_subtitle % 10\n let show_description = list_config.show_description % 10\n let show_read_more = list_config.show_read_more\n let has_nofollow = list_config.has_nofollow\n let has_title = list_config.has_title === undefined ? show_title : list_config.has_title\n let has_subtitle = list_config.has_subtitle === undefined ? show_subtitle : list_config.has_subtitle\n let has_description = list_config.has_description === undefined ? show_description : list_config.has_description\n let hoverImg = package.content.hover_img || false\n let from = 'list'\n <!-- åæ°ä¿¡æ¯ -->\n let colInfo = {\n cols_col:package.cols_col,\n cols_md:package.cols_md,\n cols_xl:package.cols_xl\n }\n let columnsObj = {\n '12_7': 7,\n '12_8': 8,\n '12_9': 9,\n '12_10': 10,\n '12_11': 11\n }\n let xl_columns = columnsObj[package.cols_xl] ? columnsObj[package.cols_xl] : 12 / ((package.cols_xl + '').replace('_', '.'))\n let md_columns = columnsObj[package.cols_md] ? columnsObj[package.cols_md] : 12 / ((package.cols_md + '').replace('_', '.'))\n let default_columns = columnsObj[package.cols_col] ? columnsObj[package.cols_col] : 12 / ((package.cols_col + '').replace('_', '.'))\n let direction = list_config.direction\n let tab_img_direction = list_config.tab_img_direction\n const data = package.content.data\n\n const getBorderFull = (styleObj, screen) => {\n const itemStyle = styleObj['.unit-tab-list__item']\n const getTrBorder = (borderDirection) => {\n return parseFloat(itemStyle[screen][borderDirection]) ? true : false\n }\n return (getTrBorder('border-left-width') && getTrBorder('border-right-width')) || (getTrBorder('border-top-width') && getTrBorder('border-bottom-width'))\n }\n const getBorderWidth = (styleObj, screen) => {\n const itemStyle = styleObj['.unit-tab-list__item']\n const getTrBorder = (borderDirection) => {\n return parseFloat(itemStyle[screen][borderDirection]) ? itemStyle[screen][borderDirection] : 0\n }\n return getTrBorder('border-left-width') || getTrBorder('border-right-width') || getTrBorder('border-top-width') || getTrBorder('border-bottom-width')\n }\n const tabItemFullBorderDefault = getBorderFull(package.style, 'default')\n const tabItemFullBorderMd = getBorderFull(package.style, 'md') || tabItemFullBorderDefault\n const tabItemFullBorderXl = getBorderFull(package.style, 'xl') || tabItemFullBorderMd || tabItemFullBorderDefault\n\n const tabBorderValDefault = getBorderWidth(package.style, 'default')\n const tabBorderValMd = getBorderWidth(package.style, 'md') || tabBorderValDefault\n const tabBorderValXl = getBorderWidth(package.style, 'xl') || tabBorderValMd || tabBorderValDefault\n\n const wrapperSelector = '.unit-tab-list__items';\n const itemSelector = '.unit-tab-list__item';\n-?>\n<div tab-style=\"<?= direction ?>\" class=\"unit-tab-list unit-tab-body\">\n <?-\n `<style>\n ${globalThis.Server.toMarginStyle(package, wrapperSelector, itemSelector, (style, screen) => {\n let borderWidth = {\n default: tabBorderValDefault,\n md: tabBorderValMd,\n xl: tabBorderValXl\n }\n // check é´è·\n if (style[`#${package.attr_id} ${itemSelector}`]['margin-left'] !== `calc(0px + 0px)`) {\n if (!style[`#${package.attr_id} .swiper-container`]) style[`#${package.attr_id} .swiper-container`] = {}\n style[`#${package.attr_id} .swiper-container`]['padding-right'] = '0'\n style[`#${package.attr_id} ${itemSelector}`]['margin-right'] = '0'\n }\n if (style[`#${package.attr_id} ${itemSelector}`]['margin-top'] !== `calc(0px + 0px)`) {\n if (!style[`#${package.attr_id} .swiper-container`]) style[`#${package.attr_id} .swiper-container`] = {}\n style[`#${package.attr_id} .swiper-container`]['padding-bottom'] = '0'\n style[`#${package.attr_id} ${itemSelector}`]['margin-bottom'] = '0'\n style[`#${package.attr_id} ${itemSelector}`]['border-bottom-width'] = `${borderWidth[screen]} !important`\n }\n return style\n })}\n </style>`\n ?>\n <!-- tabéé¡¹å¡ -->\n <? if( data.length && list_config.show_tab) { -?>\n <div class=\"unit-tab-wrap\" default-full-border=\"<?= tabItemFullBorderDefault ?>\" md-full-border=\"<?= tabItemFullBorderMd ?>\" xl-full-border=\"<?= tabItemFullBorderXl ?>\" md-border-val=\"<?= tabBorderValMd || tabBorderValDefault ?>\" default-border-val=\"<?= tabBorderValDefault ?>\" default-full-columns=\"<?= package.cols_col > 6 ? package.cols_col : default_columns == 12 ? 1 : default_columns ?>\" md-full-columns=\"<?= package.cols_md > 6 ? package.cols_md : md_columns == 12 ? 1 : md_columns ?>\" xl-full-columns=\"<?= package.cols_xl > 6 ? package.cols_xl : xl_columns == 12 ? 1 : xl_columns ?>\" style=\"--xl-columns: <?= package.cols_xl > 6 ? package.cols_xl : xl_columns ?>;--md-columns: <?= package.cols_md > 6 ? package.cols_md : md_columns ?>;--default-columns: <?= package.cols_col > 6 ? package.cols_col : default_columns ?>; --xl-border-val: <?= tabBorderValXl || tabBorderValMd || tabBorderValDefault ?>;--md-border-val: <?= tabBorderValMd || tabBorderValDefault ?>;--default-border-val: <?= tabBorderValDefault ?>;\">\n <div class=\"swiper-container\">\n <div class=\"unit-list__items unit-tab-list__items swiper-wrapper row\">\n <? data.forEach((item, index) => { -?>\n <div class=\"animate unit-list__item unit-tab-list__item swiper-slide <?= !item.img ? 'no-image' : '' ?> <?= direction == 'top' || direction == 'bottom' ? `col-${colInfo.cols_col} col-md-${colInfo.cols_md} col-xl-${colInfo.cols_xl}` : '' ?>\">\n <div class=\"unit-tab-list__inner tab-img-direction_<?= tab_img_direction ?>\">\n <? if (show_tab_img) { -?>\n <div class=\"unit-list__item-image\" <? if (show_tab_img > 1) { -?>display-style=\"<?= show_tab_img ?>\"<? } -?>>\n <? if (item.tab_img.indexOf('<svg') !== -1) { ?>\n <div class=\"base-image__img img-fluid\"><?- item.tab_img ?></div>\n <? } else { ?>\n <img class=\"img-fluid\" alt=\"<?= item.tab_name -?>\" src=\"<?= site.prefix_domain && site.is_replace_domain ? item.tab_img.replace('//img.yfisher.com/', '//' + site.prefix_domain + '/lifisher-') : item.tab_img -?>\" lazy-type=\"img\" data-lazy=\"2\">\n <? } ?>\n </div>\n <? } -?>\n <div class=\"unit-tab-list__text\" text-style=\"<?= list_config.style_type_tabtitle ?>\">\n <div class=\"text_ellipsis\"><?- item.tab_name ?></div>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n </div>\n <div class=\"swiper-button swiper-button-next d-none\"></div>\n <div class=\"swiper-button swiper-button-prev d-none disabled-icon\"></div>\n </div>\n <? } ?>\n <? if( data.length) { -?>\n <div class=\"unit-tab-content tab-content\">\n <div class=\"unit-tab-content_warp\">\n <div class=\"unit-tab-content_list\">\n <? data.forEach((item, subIndex) => { -?>\n <div class=\"unit-tab-content_item <?= subIndex == 0 ? 'show' : '' ?>\">\n <div class=\"unit-list__a\">\n <div class=\"unit-list__item-inner\" phone-text-direction=\"<?= list_config.phone_text_direction ?>\">\n <? if (show_img) { -?>\n <? if (item.cover_url && (item.content_type === 'video' || (item.content_type === 'material' && /\\.mp4/i.test(item.cover_url)))) { -?>\n <a class=\"unit-list__video\" href=\"<?= list_config.target==='block'?'jacascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'jacascript:;':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?>>
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'video', config: { ...item, config: { ...video_config, ...image_config}, from: from, index: subIndex } } }) -?>\n </a>\n <? } else { -?>\n <a class=\"unit-list__image\" href=\"<?= list_config.target==='block'?'jacascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" content-render=\"product_hover<?= video_config && video_config.icon === '1' ? ',video_icon' : '' ?>\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" <?- hoverImg ? `open-hover=\"${package.content?.hover_img_effect}\" hover-img=true` : '' -?> <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'image', config: { ...item, config: image_config, from: from, index: subIndex } } }) -?>\n <? if (hoverImg && item.hover_img) { -?>\n <div class=\"unit-list-hover__image hover_img_before_load\">\n <img class=\"base-image__img img-fluid animate__animated <?= hoverImgDuration -?>\" effect-in=\"<?= hoverImgIn -?>\" effect-out=\"<?= hoverImgOut -?>\" lazy-src=\"<?= item.hover_img ?>\" alt=\"\">\n </div>\n <? } -?>\n </a>\n <? } -?>\n <? } -?>\n <div class=\"unit-list__text <?= !item.img ? 'no-img' : '' ?>\">\n <div class=\"unit-list__text-inner\">\n <? if ((has_title && show_title) || (has_subtitle && show_subtitle) || (has_description && show_description)) { -?>\n <div class=\"unit-list__content\">\n <? if (has_title && show_title && item.title) { -?>\n <div class=\"unit-list__title\" text-style=\"<?= list_config.style_type_title ?>\" <? if (show_title > 1) { -?>display-style=\"<?= show_title ?>\"<? } -?> <?- list_config.title_animate ? 'content-animate=\"' + list_config.title_animate + '\"' : '' ?>>\n <a class=\"text_ellipsis\" href=\"<?= list_config.target==='block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" title=\"<?= item.caption || '' ?>\"><?- item.title ?></a>\n </div>\n <? } -?>\n <? if (has_subtitle && show_subtitle && item.subtitle) { -?>\n <div class=\"unit-list__subtitle\" text-style=\"<?= list_config.style_type_subtitle ?>
1\" <? if (show_subtitle > 1) { -?>display-style=\"<?= show_subtitle ?>\"<? } -?>><div class=\"text_ellipsis\"><?- item.subtitle ?></div></div>\n <? } -?>\n <? if (has_description && show_description && item.description) { -?>\n <? const filterHtml = globalThis.Server.getFilterHTML(item.description) -?>\n <div class=\"unit-list__description\" text-style=\"<?= list_config.style_type_description ?>\" title=\"<?= package.content.type === 'detail' ? '' : filterHtml ?>\" <? if (show_description > 1) { -?>display-style=\"<?= show_description ?>\"<? } -?>><div class=\"text_ellipsis\"><?- filterHtml ?></div></div>\n <? } -?>\n </div>\n <? } -?>\n <? if (show_read_more && !list_config.hide_button.includes(subIndex + 1) ) { -?>\n <div class=\"read_more\" button-style=\"<?= list_config.style_type_button ?>\" <? if (show_read_more > 1) { -?>display-style=\"<?= show_read_more ?>\"<? } -?>>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, description: $t('read more'), has_nofollow: has_nofollow } } }) -?>\n </div>\n <? } -?>\n </div>\n </div>\n </div>\n </div>\n </div>\n <? }) -?>\n </div>\n <? if( data.length > 1) { -?>\n <div class=\"unit-tab-content_icon unit-tab-content_iconleft icon-disabled\">\n <i class=\"iconfont icon-jiantou-left\"></i>\n </div>\n <div class=\"unit-tab-content_icon unit-tab-content_iconright\">\n <i class=\"iconfont icon-jiantou-left\"></i>\n </div>\n <? } ?>\n </div>\n </div>\n <? } ?>\n <? if (data.length === 0) { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <!-- ç¨æ·éæ¶ææ£jså é¤é½ä¸ºç©ºæ¶æ¾ç¤º -->\n <div class=\"show-no-data d-none\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/tab-list.js',\n name: 'ScriptTabList',\n attrId: '<?= package.attr_id ?>',\n swiper: '<?= JSON.stringify(swiper_config) ?>',\n config: '<?= JSON.stringify(list_config) ?>',\n colInfo: '<?= JSON.stringify(colInfo) ?>',\n dataLen: '<?= data.length ?>'\n })\n</script>\n","/package/unit/tab":"<?\n let tab_config = package.config.tab\n let swiper_config = package.config.swiper\n let swiper_html = ''\n let is_swiper = swiper_config.is_swiper\n if (is_swiper) swiper_html = `id=swiper-${package.attr_id} carousel=${JSON.stringify(swiper_config)}`\n-?>\n<div class=\"unit-tab <?= is_swiper ? 'is-swiper' : '' ?>\" tab-style=\"<?= tab_config.style_type_tab ?>
1\" <?= swiper_html ?>>\n <? if (package.content.data.length > 0) { ?>\n <div class=\"<?= is_swiper ? 'swiper-container' : '' ?>\">\n <div class=\"nav <?= is_swiper ? 'swiper-wrapper' : '' ?>\">\n <? package.content.data.forEach((item, index) => { -?>\n <!-- å建tab项 -->\n <div class=\"nav-item\" tab-index=\"<?= index ?>\">\n <?- globalThis.Server.getRinseHTML(item.description, site) -?>\n </div>\n <? }) -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.pagination) { -?>\n <div class=\"unit-tab__pagination swiper-pagination\"></div>\n <? } -?>\n <? if (swiper_config.navigation) { -?>\n <div class=\"unit-tab__button-prev swiper-button-prev\"></div>\n <div class=\"unit-tab__button-next swiper-button-next\"></div>\n <? } -?>\n <? if (swiper_config.scrollbar) { -?>\n <div class=\"unit-tab__scrollbar swiper-scrollbar\"></div>\n <? } -?>\n <? } -?>\n </div> \n <? } ?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/tab.js',\n name: 'ScriptTab',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>","/package/unit/tabs":"<? \n let tabs_config = package.config.tabs\n let show_tab_img = tabs_config.show_tab_img\n let direction = tabs_config.direction\n let tab_img_direction = tabs_config.tab_img_direction\n let tab_item_direction = tabs_config.tab_item_direction\n let tab_img_direction_map = {\n top: 'column',\n bottom: 'column-reverse',\n left: 'row',\n right: 'row-reverse'\n }\n let flexDirectionStyle = {\n 'xl': tab_img_direction_map[tab_img_direction],\n 'md': tab_img_direction_map['top'],\n 'default': tab_img_direction_map['top'],\n }\n\n <!-- åæ°ä¿¡æ¯ -->\n let colInfo = {\n cols_col:package.cols_col,\n cols_md:package.cols_md,\n cols_xl:package.cols_xl\n }\n let columnsObj = {\n '12_7': 7,\n '12_8': 8,\n '12_9': 9,\n '12_10': 10,\n '12_11': 11\n }\n let xl_columns = columnsObj[package.cols_xl] ? columnsObj[package.cols_xl] : 12 / ((package.cols_xl + '').replace('_', '.'))\n let md_columns = columnsObj[package.cols_md] ? columnsObj[package.cols_md] : 12 / ((package.cols_md + '').replace('_', '.'))\n let default_columns = columnsObj[package.cols_col] ? columnsObj[package.cols_col] : 12 / ((package.cols_col + '').replace('_', '.'))\n\n let tab_data = package.content.data || []\n let tab_list = tab_data.map(item => {\n return {\n tab_name: item.tab_name,\n tab_panel: item.tab_panel\n }\n })\n let tab_panel_info_map = {}\n tab_panel_info.forEach(info => {\n tab_panel_info_map[info.tab_key] = info\n })\n\n const wrapperSelector = '.unit-tabs__nav-wrap';\n const itemSelector = '.unit-tabs__nav-item';\n const borderSelector = '.unit-tabs__item-inner';\n const mergeConfig = {}\n if (['left', 'right'].includes(direction)) {\n mergeConfig.cols_xl = 12\n }\n-?>\n<div class=\"unit-tabs unit-tabs-direction--<?= direction ?>\" tab-position=\"<?= direction ?>\">\n <?-\n `<style>\n ${globalThis.Server.getMergeBorderStyle({...package, ... mergeConfig}, wrapperSelector, itemSelector, borderSelector, {}, (style, screen) => {\n if (screen !== 'xl') return {}\n return style\n }\n )}\n ${globalThis.Server.getFlexAlignStyle(package, '.unit-tabs__item-inner', flexDirectionStyle)}\n ${globalThis.Server.handleScreenStyle(package, itemSelector, {}, (style, currentstyle, screen) => {\n if (screen !== 'xl') return {}\n let paddingLeft = currentstyle['padding-left'] || '0px'\n let paddingRight = currentstyle['padding-right'] || '0px'\n const wrapperStyle = globalThis.Server.getScreenStyle(package, wrapperSelector)\n let wrapperMaxWidth = wrapperStyle[screen]?.['max-width'] || ''\n if (wrapperMaxWidth === '100%') {\n style[`#${package.attr_id} .unit-tabs__header ${wrapperSelector}`] = { 'max-width': 'unset' }\n } else if (wrapperMaxWidth) {\n style[`#${package.attr_id} .unit-tabs__header ${wrapperSelector}`] = {\n 'margin-left': 'auto',\n 'margin-right': 'auto',\n 'width': `calc(${wrapperMaxWidth} + ${paddingLeft} + ${paddingRight })`,\n 'max-width': `calc(${wrapperMaxWidth} + ${paddingLeft} + ${paddingRight })`,\n 'transform': `translateX(-${paddingLeft})`\n }\n style[`.container-fluid #${package.attr_id} .unit-tabs__header ${wrapperSelector}`] = {\n 'transform': `unset`\n }\n }\n return style\n })}\n </style>`\n ?>\n <div\n class=\"unit-tabs__header swiper-container\" >\n <div class=\"unit-tabs__nav-wrap swiper-wrapper\">\n <? tab_data.forEach((tabItem, tabIndex) => { -?>\n <div animate class=\"unit-tabs__nav-item swiper-slide <?= tabIndex == 0 && !ctx.query.design ? `active`:`` -?> <?= `col-${colInfo.cols_col} col-md-${colInfo.cols_md} col-xl-${colInfo.cols_xl}` ?>\">\n <div class=\"unit-tabs__item-inner tab-img-direction--<?= tab_img_direction ?>\">\n <? if (show_tab_img && tabItem.tab_img) { -?>\n <div class=\"unit-tabs__image\" <? if (show_tab_img > 1) { -?>display-style=\"<?= show_tab_img ?>\"<? } -?>>\n <? if (tabItem.tab_img.indexOf('<svg') !== -1) { ?>\n <div class=\"unit-tabs__img img-fluid\"><?- tabItem.tab_img ?></div>\n <? } else { ?>\n <img class=\"unit-tabs__img img-fluid\" alt=\"<?= tabItem.tab_name -?>\" src=\"<?= site.prefix_domain && site.is_replace_domain ? tabItem.tab_img.replace('//img.yfisher.com/', '//' + site.prefix_domain + '/lifisher-') : tabItem.tab_img -?>\" lazy-type=\"img\" data-lazy=\"2\">\n <? } ?>\n </div>\n <? } -?>\n <div class=\"unit-tabs__text\" text-style=\"<?= tabs_config.style_type_tabtitle ?>\">\n <div class=\"text_ellipsis\"><?- tabItem.tab_name || '' ?></div>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n </div>\n <div class=\"unit-tabs__content swiper-container\">\n <div class=\"unit-tabs__panel-wrap swiper-wrapper\">\n <? tab_list.forEach(tabItem => { -?>\n <div class=\"unit-tabs__panel swiper-slide\">\n <div package-group=\"grid\">\n <? tabItem.tab_panel.forEach(panelItem => { -?>\n <? if (tab_panel_info_map[panelItem.relate_tab_key]) { -?>
1\n <?- include(getViewsPath(`/layout/grid`), { package:tab_panel_info_map[panelItem.relate_tab_key], tab_panel_info:[] }) -?>\n <? } -?>\n <? }) -?>\n </div>\n </div>\n <? }) -?>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/tabs.js',\n name: 'ScriptTabs',\n attrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(tabs_config) ?>',\n tab_list: '<?= JSON.stringify(tab_list) ?>',\n columnsInfo: '<?= JSON.stringify({ default: default_columns, md: md_columns, xl: xl_columns }) ?>',\n colInfo: '<?= JSON.stringify(colInfo) ?>',\n })\n </script>\n</div>\n\n","/package/unit/tag-list":"<?\nlet list_config = package.config.tag_list\n-?>\n<? if (package.content.data.length) { -?>\n<div class=\"unit-tag-list d-flex flex-wrap\">\n <? package.content.data.forEach((item, index) => { -?>\n <div class=\"unit-tag-list__item-inner\">\n <? if (item.href) { -?><a href=\"<?= list_config.target==='block'?'javascript:;':item.href ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || '_self' ?>\"><? } -?>\n <div class=\"unit-tag-list__title\"><?= item.title ?></div>\n <? if (item.href) { -?></a><? } -?>\n </div>\n <? }) -?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/tag-list.js',\n name: 'ScriptTagList',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n<? } ?>","/package/unit/text":"<?\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n let style_type_text = package.config.text.style_type_text\n const moduleIndex = package.sequence?.[1]\n const state = globalThis?.ctx?.state || ctx?.state\n const module = moduleIndex !== undefined && state?.template?.block?.copyright?.children?.[moduleIndex]\n-?>\n<div class=\"unit-text row no-gutters\" text-style=\"<?= style_type_text ?>\">\n <? package.content.data.forEach(item => { -?>\n <div class=\"unit-text__item <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?>\">\n <div _html=\"<?= item.description_sign ?>\" tinymce><?- globalThis.Server.getRinseHTML(item.description, site) ?></div>\n </div>\n <? }) -?>\n</div>\n\n\n<? if( package.sequence?.[0] === 'copyright' && module?.code.indexOf('pop-up') === -1 && package?.code.indexOf('pop-up') === -1 ) { ?>\n <?- include(getViewsPath(`/package/base/lifisher-copyright`), { package: package }) -?>\n<? } ?>","/package/unit/third-authorize":"<style>\n .unit-third-authorize-title {font-weight: bold;width: 100%;text-align: center;padding-top: 0;padding-bottom: 15px;font-size: 30px;}\n .unit-third-authorize-description{color: #858A8F;padding-bottom: 25px;}\n .unit-third-authorize a{color: rgb(0,123,255);color: var(--main-color);}\n .unit-third-authorize a:hover{color: #0056b3;text-decoration: underline;}\n .unit-third-authorize__code-submit{cursor: pointer;}\n .unit-third-authorize__email-group { margin-top: .5rem;}\n .unit-third-authorize__btn { width: 100%;height: 100%;padding: 15px 0;}\n .unit-third-authorize form .form-control:not(:placeholder-shown) {padding-top: 15px; padding-bottom: 15px;}\n .unit-third-authorize .unit-form__item-inner i {position: absolute;top: 50%;transform: translateY(-50%);left:12px;font-size: 20px;display: inline-block;color: #ced4da;}\n .unit-third-authorize .unit-form__item-inner i::before {padding-right: 10px; border-right: solid 1px #ced4da;}\n .unit-third-authorize .unit-form__item-inner .form-control{padding-left: 50px;}\n .unit-third-authorize .form-control::-webkit-input-placeholder{color:currentColor!important;opacity: .5;}\n .unit-third-authorize .form-control:-ms-input-placeholder{color:currentColor!important;opacity: .5;}\n .unit-third-authorize .form-control::-ms-input-placeholder{color:currentColor!important;opacity: .5;}\n .unit-third-authorize .form-control::-moz-placeholder{color:currentColor!important;opacity: .5;}\n .unit-third-authorize .form-control::placeholder{color:currentColor!important;opacity: .5;}\n .unit-third-authorize__prompt {opacity: .4;font-weight: 400;display: flex; justify-content: flex-start;}\n .unit-third-authorize__prompt_span i{border: solid 12px green;font-size: 6px;line-height: 6px;border-radius: 50%;width: 10px;height: 10px; color:white;display: flex; align-items: center;justify-content: center;transform: scale(0.7);}\n .unit-third-authorize_failure{display: none;}\n @media(min-width: 768px) {\n .unit-third-authorize-title{padding: 10px 0;padding-bottom: 25px;}\n }\n</style>\n<div class=\"unit-third-authorize\">\n <form class=\"needs-validation\" id=\"<?= `thirdAuthorize-${package.attr_id}` ?>\" novalidate>\n <div class=\"form-row unit-third-authorize__success\">\n <div class=\"unit-third-authorize-title\">\n <?= $t('SNS confirm') ?>\n </div>\n <div class=\"unit-third-authorize-description\">
1\n <?= $t(\"Log-in via your email account by entering in your password Or go here to create a new account:\") ?>\n <a href=\"<?= globalThis.Server.getRinseHref('/register.html', site) -?>\"><?= $t('Create new Account') ?></a>\n </div>\n <div class=\"form-group col-12\">\n <label class=\"unit-form__item-inner\">\n <i class=\"iconfont icon-base-key\"></i>\n <input class=\"unit-login__control form-control unit-third-authorize__password\" type=\"text\" name=\"username\" disabled\n placeholder=\"<?= $t('e-mail') ?>\" required />\n </label>\n </div>\n <div class=\"form-group col-12\">\n <label class=\"unit-form__item-inner\">\n <i class=\"iconfont icon-base-look\"></i>\n <input class=\"unit-login__control form-control unit-third-authorize__password2\" type=\"password\"\n name=\"password\" placeholder=\"<?= $t('Please enter your password') ?>\" required minlength=6 />\n </label>\n </div>\n <div class=\"unit-login__item form-group col-12\">\n <div class=\"unit-login__submit-wrap d-flex justify-content-end\">\n <a href=\"<?= globalThis.Server.getRinseHref('/findpwd.html', site) -?>\" class=\"unit-login__forget\">\n <span class=\"text-capitalize\"><?= $t('Forgot your password') ?>?</span>\n </a>\n </div>\n </div>\n <div class=\"unit-third-authorize__item form-group col-12\">\n <button class=\"unit-third-authorize__btn btn btn-main col-12\" type=\"submit\">\n <?= $t('sign in') ?>\n </button>\n </div>\n </div>\n <div class=\"form-row unit-third-authorize_failure\">\n <div class=\"unit-third-authorize-title\">\n <?= $t('Bind mailbox') ?>\n </div>\n <div class=\"form-group col-12\">\n <label class=\"unit-form__item-inner\">\n <i class=\"iconfont icon-base-user-2\"></i>\n <input class=\"unit-login__control form-control unit-third-authorize__password\" type=\"text\" name=\"username\"\n placeholder=\"<?= $t('e-mail') ?>\" required minlength=6 />\n </label>\n </div>\n <div class=\"form-group col-6\">\n <label class=\"unit-form__item-inner\">\n <i class=\"iconfont icon-base-look\"></i>\n <input class=\"unit-login__control form-control unit-third-authorize__password2 unit-bind-mail__code\" type=\"password\"\n name=\"password\" placeholder=\"<?= $t('Verification code') ?>\" required minlength=6 />\n </label>\n </div>\n <div class=\"form-group col-6 unit-third-authorize-verification\">\n <label class=\"unit-form__item-inner\">\n <button class=\"unit-third-authorize__btn btn btn-main col-12 unit-third-authorize__code\" type=\"button\">\n <?= $t('Get verification code') ?>\n </button>\n </label>\n </div>\n <div class=\"form-group col-12 unit-third-authorize__prompt d-none\">\n <span class=\"unit-third-authorize__prompt_span\"><i class=\"iconfont icon-form-validated\"></i></span>\n <span>The verification code has been sent to your email address and is valid for 15 minutes. Please do not share this code with others.</span>\n </div>\n <div class=\"unit-third-authorize__item form-group col-12\">\n <button class=\"unit-third-authorize__btn btn btn-main col-12\" type=\"submit\">\n <?= $t('Submit') ?>\n </button>\n </div>\n </div>\n </form>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/third-authorize.js',\n name: 'ScriptThirdAuthorize',\n attrId: '<?= package.attr_id ?>',\n params: {}\n })\n </script>\n</div>","/package/unit/third-login":"<style>\n .unit-third-login__or {align-items: center;margin-bottom: 12px;}\n .unit-third-login__or-line {flex: 1; text-align: center;}\n .unit-third-login__or-or {padding: 0 12px;color: #999999;font-size:12px;}\n .unit-third-login__or-line_hr {border-top-color: #F5F6FA;}\n .unit-third-login__item{cursor: pointer; text-align: center;padding: 6px;background-color: #F8F8F8;border-radius: 3px;}\n .unit-third-login__span{color:var(--rgb-color);font-weight: 400;line-height: 24px;font-size: 16px;}\n</style>\n<div class=\"unit-third-login\">\n <div class=\"unit-third-login__or d-flex\">\n <div class=\"unit-third-login__or-line\">\n <hr class=\"unit-third-login__or-line_hr\">\n </div>\n <div class=\"unit-third-login__or-or\">OR</div>\n <div class=\"unit-third-login__or-line\">\n <hr class=\"unit-third-login__or-line_hr\">\n </div>\n </div>\n <div class=\"unit-third-login__wrap row\">\n <div class=\"col-12 col-md-6 mt-3 mt-md-0\">\n <div class=\"unit-third-login__item unit-third-login__item-google\">\n <img src=\"https://img.yfisher.com/1619574996643.svg\" alt=\"\">
1\n <span class=\"unit-third-login__span\">Google</span>\n </div>\n </div>\n <div class=\"col-12 col-md-6 mt-3 mt-md-0\">\n <div class=\"unit-third-login__item unit-third-login__item-facebook\">\n <img src=\"https://img.yfisher.com/1619574981513.svg\" alt=\"\">\n <spa class=\"unit-third-login__span\">Facebook</span>\n </div>\n </div>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/unit/third-login.js',\n name: 'ScriptThirdLogin',\n attrId: '<?= package.attr_id ?>',\n })\n</script>","/package/unit/type-tabs":"<?\nlet tabs_config = package.config.tabs\nlet tab_data = package.content.data || []\nlet tab_list = tab_data.map(item => {\n return {\n tab_name: item.tab_name,\n content_id: item.content_id\n }\n})\ntab_list = [{ tab_name: $t('all') }, ...tab_list]\nlet pageInfo = {page_size:page.page_size, page_number:page.page_number, page_count:page.page_count, page_total:page.total}\n?>\n\n<div class=\"unit-type-tabs\">\n <? if (tab_data.length) { ?>\n <div\n class=\"unit-type-tabs__header swiper-container\" >\n <div class=\"unit-type-tabs__nav-wrap swiper-wrapper\">\n <? tab_list.forEach((tabItem, tabIndex) => { -?>\n <div animate class=\"unit-type-tabs__nav-item swiper-slide <?= tabIndex == 0 && !ctx.query.design ? `active`:`` -?>\" content-id=\"<?= tabItem.content_id -?>\">\n <div class=\"unit-type-tabs__item-inner\">\n <div class=\"unit-type-tabs__text\" text-style=\"<?= tabs_config.style_type_tabtitle ?>\">\n <div class=\"text_ellipsis\"><?- tabItem.tab_name || '' ?></div>\n </div>\n </div>\n </div>\n <? }) ?>\n </div>\n\n <div class=\"swiper-button-prev d-none\"></div>\n <div class=\"swiper-button-next d-none\"></div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/type-tabs.js',\n name: 'ScriptTypeTabs',\n attrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(tabs_config) ?>',\n tab_list: '<?= JSON.stringify(tab_list) ?>',\n pageInfo: '<?= encodeURIComponent(JSON.stringify(pageInfo)) ?>',\n })\n </script>\n <? } else { ?>\n <?-\n `<style>\n #${package.attr_id} {\n display: none !important;\n }\n </style>`\n ?>\n <? } ?>\n</div>","/package/unit/user-agreement":"<?\n let style_type_text = package.config.text.style_type_text\n-?>\n<? if(site.is_shop) { -?>\n<div class=\"unit-user-agreement d-none\" text-style=\"<?= style_type_text ?>\">\n <div class=\"unit-user-agreement__content text-capitalize\">\n <span class=\"unit-user-agreement__agree \"><?= $t('By sign in this way, you agree to our') ?></span>\n <a class=\"unit-user-agreement__trems\" href=\"#\"><?= $t('terms & conditions') ?></a>\n <span class=\"unit-user-agreement__and\"><?= $t('and') ?></span>\n <a class=\"unit-user-agreement__privacy\" href=\"#\"><?= $t('privacy policy') ?></a>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/user-agreement.js',\n name: 'ScriptUserAgreement',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n<? } ?>","/package/unit/user":"<div class=\"unit-user\">\n <!-- <link rel=\"stylesheet\" href=\"/assets/css/unit/user.css\"> -->\n <link rel=\"stylesheet\" href=\"/assets/plugins/comment-form.css\">\n <div class=\"unit-user__app\">\n <template v-cloak>\n <div class=\"unit-user__app-breadcrumb\">\n <a :href=\"globalThis.Server.getRinseHref(item.href, window.app.info.site)\" class=\"unit-user__app-breadcrumb-item\" v-for=\"item in breadcrumb\" v-if=\"item.title\" :key=\"item.title\">{{ item.title }}</a>\n </div>\n <div class=\"row unit-user__row\">\n <!-- ä¾§è¾¹æ -->\n <div class=\"unit-user__col-left col-12 col-md-3 col-xl-3\">\n <?- include(getViewsPath(`/package/components/unit-user-sidebar`), {}) -?>\n </div>\n <!-- å
容颿¿ -->\n <div class=\"unit-user__col-right col-12 col-md-9 col-xl-9\">\n <div class=\"unit-user__content\">\n <!-- é¦é¡µ -->\n <template v-if=\"thisView === 'index'\">
1\n <?- include(getViewsPath(`/package/components/unit-user-index`), {}) -?>\n </template>\n <!-- ä¸ªäººèµæ -->\n <template v-if=\"thisView === 'info'\">\n <?- include(getViewsPath(`/package/components/unit-user-info`), {}) -?>\n </template>\n <!-- 订åå表 -->\n <template v-if=\"thisView === 'order'\">\n <?- include(getViewsPath(`/package/components/unit-user-order`), {}) -?>\n </template>\n <!-- 询çå表 -->\n <template v-if=\"thisView === 'inquiry'\">\n <?- include(getViewsPath(`/package/components/unit-user-inquiry`), {}) -?>\n </template>\n <!-- å°åå表 -->\n <template v-if=\"thisView === 'address'\">\n <?- include(getViewsPath(`/package/components/unit-user-address`), {}) -?>\n </template>\n <!-- ç¨æ·è´¦å· -->\n <template v-if=\"thisView === 'account'\">\n <?- include(getViewsPath(`/package/components/unit-user-account`), {}) -?>\n </template>\n <!-- æ¶èå表 -->\n <template v-if=\"thisView === 'like'\">\n <?- include(getViewsPath(`/package/components/unit-user-like`), {}) -?>\n </template>\n <!-- è¯è®º -->\n <template v-if=\"thisView === 'reviews'\">\n <?- include(getViewsPath(`/package/components/unit-user-comment`), {}) -?>\n </template>\n <!-- 伿 å· -->\n <template v-if=\"thisView === 'coupons'\">\n <?- include(getViewsPath(`/package/components/unit-user-coupons`), {}) -?>\n </template>\n </div>\n </div>\n </div>\n </template>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/user.js',\n name: 'ScriptUser',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/video-detail":"\n\n<div class=\"unit-video-detail\" text-style=\"3\">\n <?- globalThis.Server.getRinseHTML(page.detail_description[0]['detail'][0]['description'].replace(/>/g, '>').replace(/</g, '<'), site, 'needLazy') ?>\n</div>","/package/unit/video-list":"<?\n let list_config = package.config.list\n let swiper_config = package.config.swiper\n let image_config = package.config.image\n let show_img = list_config.show_img % 10\n let show_title = list_config.show_title % 10\n let show_subtitle = list_config.show_subtitle % 10\n let show_description = list_config.show_description % 10\n let has_title = list_config.has_title === undefined ? show_title : list_config.has_title\n let has_subtitle = list_config.has_subtitle === undefined ? show_subtitle : list_config.has_subtitle\n let has_description = list_config.has_description === undefined ? show_description : list_config.has_description\n let has_nofollow = list_config.has_nofollow\n let show_date_type = list_config.show_date_type\n let show_date_yyyy = list_config.show_date_yyyy\n let show_date_mm = list_config.show_date_mm\n let show_date_dd = list_config.show_date_dd\n let show_reads = list_config.show_reads % 10\n let show_read_more = list_config.show_read_more\n let show_play = list_config.show_play\n let is_swiper = swiper_config.is_swiper\n let isDetailContent = package.content.type === 'detail'\n let cols_col = package.cols_col\n let cols_md = package.cols_md\n let cols_xl = package.cols_xl\n swiper_config.itemClassName = 'unit-video-list__item'\n swiper_config.itemsClassName = 'unit-video-list__items'\n let swiper_html = ''\n if (is_swiper) swiper_html = `id=swiper-${package.attr_id} carousel=${JSON.stringify(swiper_config)}`\n function formatNum (num) {\n const reg=/\\d{1,3}(?=(\\d{3})+$)/g;
1\n return (num + '').replace(reg, '$&,');\n }\n let video_config = package.config.video\n if (video_config) {\n video_config.scale = image_config.scale || ''\n video_config.effect = image_config.effect || 0\n }\n const hoverImg = true\n let show_date_show = list_config.show_date_show % 10\n let show_content_tag = list_config.show_content_tag % 10\n-?>\n<div\n class=\"unit-video-list <?= is_swiper ? 'is-swiper' : '' ?>\"\n <? if (is_swiper && swiper_config.navigation) {-?>\n navigation-position=\"<?= swiper_config.navigation_position ?>\"\n navigation-position-md=\"<?= swiper_config.navigation_position_md ?>\"\n navigation-position-xl=\"<?= swiper_config.navigation_position_xl ?>\"\n <? } ?>\n <?= swiper_html ?>\n>\n <? if (package.content.data.length) { -?>\n <div class=\"swiper-container\">\n <div class=\"unit-video-list__items swiper-wrapper <?= is_swiper ? '' : 'row' ?>\">\n <? package.content.data.forEach((item, index) => { -?>\n <div class=\"unit-video-list__item swiper-slide <?= !item.img ? 'no-image' : '' ?> <?= `col-${cols_col} col-md-${cols_md} col-xl-${cols_xl}` ?>\">\n <div class=\"unit-video-list__item-inner d-flex flex-column\" <?= package.getLazyListBGString('.unit-video-list__item-inner') ?>>\n <? if (show_img) { -?>\n <a class=\"unit-video-list__image unit-video-list__a\" href=\"<?= list_config.target==='block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':list_config.target || item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" <? if (show_img > 1) { -?>display-style=\"<?= show_img ?>\"<? } -?> <?- ((isDetailContent && item.is_allow_gif && item.video_gif) || (!isDetailContent && item.video_gif)) ? `video-gif=\"${item.video_gif}\"` : '' -?> content-render=\"product_hover,video_icon\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id -?>\" hover-img=\"true\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'video', config: { ...item, config: image_config,target:list_config.target, from: 'video_list', isDynamic: !isDetailContent } } }) -?>\n </a>\n <? } -?>\n <div class=\"unit-video-list__text\">\n <div class=\"unit-video-list__text-inner\">\n <div class=\"unit-video-list__content\">\n <? if (has_title && show_title) { -?>\n <div class=\"unit-video-list__title\" text-style=\"<?= list_config.style_type_title ?>\" <? if (show_title > 1) { -?>display-style=\"<?= show_title ?>\"<? } -?>>\n <a class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.title_sign || '' ?>\" toolbar=\"false\"<? } -?> href=\"<?= list_config.target==='block'?'javascript:;':globalThis.Server.getRinseHref(item.href, site) ?>\" target=\"<?= list_config.target==='block'?'_self':item.target || '_self' ?>\" rel=\"<?= has_nofollow ? 'nofollow' : '' ?>\" title=\"<?= item.title ?>\"><?- item.title ?></a>\n </div>\n <? } -?>\n <? if (show_content_tag && item.tag_list && item.tag_list.length) { -?>\n <div class=\"unit-list__tags\" text-style=\"3\"\n <? if (show_content_tag > 1) { -?>\n display-style=\"<?= show_content_tag ?>\"\n <? } -?>\n >\n <?- item.tag_list.map(item => `<a class=\"unit-list__tag\" href=\"${globalThis.Server.getRinseHref(item.page_url_suffix, site)}\" title=\"${item.title}\">#${item.title}</a>`).join('') ?>\n </div>\n <? } -?>\n <? if (has_subtitle && show_subtitle) { -?>\n <div class=\"unit-video-list__subtitle\" text-style=\"<?= list_config.style_type_subtitle ?>
1\" <? if (show_subtitle > 1) { -?>display-style=\"<?= show_subtitle ?>\"<? } -?>>\n <div class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.subtitle_sign || '' ?>\" toolbar=\"false\"<? } -?>><?- item.subtitle ?></div>\n </div>\n <? } -?>\n <? if (has_description && show_description) { -?>\n <? const filterHtml = globalThis.Server.removeHtmlTags(item.description || '') -?>\n <div class=\"unit-video-list__description\" text-style=\"<?= list_config.style_type_description ?>\" <? if (show_description > 1) { -?>display-style=\"<?= show_description ?>\"<? } -?>><div class=\"text_ellipsis\" <? if (isDetailContent) { -?>_html=\"<?= item.description_sign || '' ?>\" toolbar=\"false\"<? } -?>><?- filterHtml ?></div></div>\n <? } -?>\n </div>\n <? if (show_date_yyyy || show_date_mm || show_date_dd || show_reads) { -?>\n <div class=\"unit-video-list__article\">\n <? if (show_date_show && (show_date_yyyy || show_date_mm || show_date_dd)) { -?>\n <? let [date_yyyy, date_mm, date_dd] = new Date((show_date_type === 1 && item.add_time ? item.add_time : item.renew_time) * 1000).format('yyyy,MM,dd').split(',') -?>\n <div class=\"unit-video-list__date\" <? if (show_date_show > 1) { -?>\n display-style=\"<?= show_date_show ?>\"\n <? } -?>>\n <span class=\"unit-video-list__date-yyyy\"><?= date_yyyy ?></span>\n <span class=\"unit-video-list__date-split\"></span>\n <span class=\"unit-video-list__date-mm\"><?= date_mm ?></span>\n <span class=\"unit-video-list__date-split\"></span>\n <span class=\"unit-video-list__date-dd\"><?= date_dd ?></span>\n </div>\n <? } -?>\n <? if (show_reads) { -?>\n <div class=\"unit-video-list__reads\" <? if (show_reads > 1) { -?>display-style=\"<?= show_reads ?>\"<? } -?>>\n <span content-render=\"reads\" content-type=\"<?= item.content_type ?>\" content-id=\"<?= item.content_id ?>\"><?= formatNum(item.reads) ?></span>\n <em><?= $t('views') ?></em>\n </div>\n <? } -?>\n </div>\n <? } -?>\n <div class=\"read_more <?= !show_read_more ? 'hide' : '' ?>\" button-style=\"<?= list_config.style_type_button ?>\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { ...item, description: list_config.button_text || $t('read more'), isDetailContent: isDetailContent, has_nofollow: has_nofollow,target:list_config.target } } }) -?>\n </div>\n </div>\n </div>\n </div>\n </div>\n <? }) -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.pagination) { -?>\n <div class=\"unit-video-list__pagination swiper-pagination\"></div>\n <? } -?>\n <? if (swiper_config.navigation) { -?>\n <div class=\"unit-video-list__button-prev swiper-button-prev\"></div>\n <div class=\"unit-video-list__button-next swiper-button-next\"></div>\n <? } -?>\n <? if (swiper_config.scrollbar) { -?>\n <div class=\"unit-video-list__scrollbar swiper-scrollbar\"></div>\n <? } -?>\n <? } -?>\n </div>\n <? if (swiper_config && is_swiper) { -?>\n <? if (swiper_config.navigation && [swiper_config.navigation_position, swiper_config.navigation_position_md, swiper_config.navigation_position_xl].includes('outside')) { -?>\n <div class=\"unit-video-list__button-prev swiper-button-prev swiper-button-prev--outside\"></div>\n <div class=\"unit-video-list__button-next swiper-button-next swiper-button-next--outside\"></div>\n <? } -?>\n <? } -?>\n <? } else { -?>\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'no-data' } }) -?>\n <? } -?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/video-list.js',\n name: 'ScriptVideoList',\n attrId: '<?= package.attr_id ?>'\n })\n </script>\n</div>\n","/package/unit/video-popup":"<?\n let data = package.content.data[0]\n let video_config = JSON.parse(JSON.stringify(package.config.video))\n video_config.default_src = data.img || data.original_picture_url || ''\n video_config.videoscale = video_config?.videoscale || ''\n let videocss = package.style?.video\n let hasradius = videocss?.default['border-radius'] || videocss?.md['border-radius'] || videocss?.xl['border-radius']\n const packages = ctx.state.template.packages\n const current_cell = packages[package.parent_attr_id]\n const current_grid = packages[current_cell.parent_attr_id]\n const current_module = packages[current_grid.parent_attr_id]\n let useXgVideo = ['module-breadcrumb-6', 'base-resource_aggregation-module-1'].includes(current_module.code) ? 1 : 0\n \n-?>\n<? if (hasradius) { -?>\n <style>\n #<?= package.attr_id ?> .base-video__preview video{\n background-color:transparent;\n }\n</style>\n<? } -?>\n<div class=\"unit-video-popup\">\n <?-\n include(getViewsPath(`/layout/base`), {\n package: {\n type: useXgVideo ? 'xg-video':'video',\n config: { ...data, config: video_config }\n }\n })\n -?>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/unit/video-popup.js',\n name: 'ScriptVideoPopup',\n attrId: '<?= package.attr_id ?>',\n config: '<?= JSON.stringify(video_config) ?>',\n gifData: '<?= JSON.stringify({is_allow_gif: data.is_allow_gif, video_gif: data.video_gif}) ?>',\n useXgVideo: '<?= useXgVideo ?>'\n })\n </script>\n</div>
1\n","/package/widget/ai-chat":"<?\n let configChatUrl = ''\n try {\n configChatUrl = process.env.AI_CHAT\n } catch(e) {\n }\n const chatUrl = configChatUrl ? new URL(configChatUrl) : ''\n const knowledge_website_help_center_switch = site.site_config?.knowledge_website_help_center_switch\n const knowledge_kefu_switch = site.site_config?.knowledge_kefu_switch\n const greeting = (site.knowledge_config?.kefu_message || '').replace(/[`]/g, \"\\\\`\")\n const search = {\n site_id: site.site_id,\n greeting: encodeURIComponent(greeting)\n }\n chatUrl.search = Object.keys(search).map(k => `${k}=${search[k]}`).join('&')\n const iframe_url = chatUrl.href\n let page_type = page.page_type || ''\n?>\n<div id=\"widgetAiChat\" class=\"widget-ai-chat\">\n <div class=\"widget-ai-chat__content-wrap <?= page_type === 'landing_page'?'none':'' ?>\">\n <div class=\"widget-social-media-chat__content\">\n <? if(knowledge_kefu_switch) { ?>\n <div class=\"widget-ai-chat__support\">\n <i class=\"widget-social-media-chat__icon iconfont icon-support widget-main-icon\"></i>\n </div>\n <? } ?>\n <div class=\"widget-ai-chat__modal-close\" hidden id=\"ai_chat_model_close\">\n <i class=\"widget-social-media-chat__icon iconfont icon-action-close-2\"></i>\n </div>\n <div class=\"widget-ai-chat__icon_list\">\n <? if(knowledge_website_help_center_switch) { ?>\n <a href=\"/faq_messages.html\" target=\"_blank\" title=\"FAQ Message\">\n <i class=\"widget-social-media-chat__icon iconfont icon-faq widget-main-icon\"></i>\n </a>\n <? } ?>\n </div>\n <div class=\"widget-ai-chat__modal widget-social-media-chat__modal\">\n <div class=\"widget-social-media-chat__modal-head\" style=\"padding: 18px; justify-content: left; color: #fff\">\n <div class=\"widget-social-media-chat__modal-title\">\n <div class=\"widget-social-media-chat__modal-title_des\" style=\"font-size: 18px;margin: 0;opacity: 1\">Customer service</div>\n </div>\n <div class=\"ai-chat__modal-close widget-social-media-chat__modal-close move_chat_close\">\n <span class=\"iconfont icon-action-close-2\"></span>\n </div>\n </div>\n <div class=\"widget-social-media-chat__modal-body\">\n\n <iframe id=\"widget_ai_chat_iframe\" class=\"widget-ai-chat__iframe\" name=\"widget_ai_chat_iframe\" title=\"AI Messages\" src=\"\"></iframe>\n\n </div>\n </div>\n </div>\n </div>\n</div>\n<?\n if(site.site_config?.knowledge_kefu_switch) {\n?>\n<script>\n ;(function () {\n window.scriptQueue.push({\n file: '/assets/js/widget/ai-chat.js',\n name: 'WidgetAiChat',\n attrId: 'widgetAiChat',\n greeting: `<?=greeting?>`,\n assistant_avatar: \"<?=site.logo_url || ''?>\",\n iframe_url: \"<?-iframe_url?>\"\n })\n })();\n</script>\n<?\n }\n?>\n","/package/widget/cookie-settings":"<div class=\"widget-cookie-settings\" id=\"widgetCookieSettings\">\n <div class=\"widget-cookie-settings__content-wrap\" ads_cookie_mobile_position=\"<?=ctx.state.site.site_config.ads_cookie_mobile_position?>\" ads_cookie_pc_position=\"<?=ctx.state.site.site_config.ads_cookie_pc_position?>\">\n <div class=\"widget-cookie-settings__more\">\n <div class=\"widget-cookie-settings__summary\">\n <?= $t('We use cookies to ensure that we give you the best experience on and off our website. please review our') ?> <a href=\"<?= globalThis.Server.getRinseHref('/doc/privacy-policy.html', site) ?>\" target=\"_blank\"><?= $t('privacy policy') ?></a>\n </div>\n <div class=\"d-flex widget-cookie-settings__button-box\">\n <div class=\"widget-cookie-settings__button action_reject\">
1\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { mode: 'text', description: $t('Reject') } } }) -?>\n </div>\n <div class=\"widget-cookie-settings__button action_setting\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { mode: 'text', description: $t('Cookie Settings') } } }) -?>\n </div>\n <div class=\"widget-cookie-settings__button action_agree\" button-style=\"2\">\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { mode: 'text', description: $t('Agree Now') } } }) -?>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"widget-cookie-settings__license hide\">\n <div class=\"custom-control custom-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" value=\"website\" checked disabled>\n <label class=\"custom-control-label\"><b><?= $t('Website Services and Recommendations (Strictry Necessary Cookies)') ?></b></label>\n </div>\n <div class=\"widget-cookie-settings__license-desc\"><?= $t('Your basic information, online operation behaviors, transaction information, access data are necessary to offer you our normal purchase, transaction, and delivery services. Withdrawal of this authorization will result in the failure of shopping or even paralysis of your account.') ?></div>\n <div class=\"custom-control custom-checkbox available-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" value=\"statistical\" checked>\n <label class=\"custom-control-label\"><b><?= $t('Statistical Data') ?></b></label>\n </div>\n <div class=\"widget-cookie-settings__license-desc\"><?= $t('Your basic information, online operation behaviors, transaction information, access data are of great significance to improve website construction and enhance your purchase experience.') ?></div>\n <div class=\"custom-control custom-checkbox available-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" value=\"advertisement\" checked>\n <label class=\"custom-control-label\"><b><?= $t('Advertisement') ?></b></label>\n </div>\n <div class=\"widget-cookie-settings__license-desc\"><?= $t('Your basic information, online operation behaviors, transaction information, preference data, interaction data, forecasting data, and access data will be used for advertising purposes by recommending products more suitable for you.') ?></div>\n <div class=\"custom-control custom-checkbox available-checkbox\">\n <input type=\"checkbox\" class=\"custom-control-input\" value=\"preformance\" checked>\n <label class=\"custom-control-label\"><b><?= $t('Preformance Cookies') ?></b></label>\n </div>\n <div class=\"widget-cookie-settings__license-desc\"><?= $t('These cookies tell us how you use the site and help us to make it better. For example, these cookies allow us to count the number of visitors to our website and know how visitors move around when using it. This helps us to improve how our site works. For example, by ensuring that users find what they are looking for and that the loading time of each page is not too long.') ?></div>\n </div>\n <script>\n window.scriptQueue.push({\n load_immediate: true,\n file: '/assets/js/widget/cookie-settings.js',\n name: 'WidgetCookieSettings',\n attrId:'widgetCookieSettings'\n })\n </script>\n</div>\n","/package/widget/quote-list":"<? \n\n-?>\n\n<div class=\"widget-quote-list\" id=\"widget-quote-list\">\n <div class=\"widget-quote-list__content-wrap\">\n <a class=\"widget-quote-list__btn\" href=\"<?= globalThis.Server.getRinseHref('/inquire_form.html?type=quoteList',site) ?>\">\n <i class=\"widget-quote-list__icon iconfont icon-base-cart-lighter\"><sup class=\"widget-quote-list__badge\"></sup></i>\n </a>\n </div>\n</div>\n<script>\n window.scriptQueue.push({\n file: '/assets/js/widget/quote-list.js',\n name: 'WidgetQuoteList',\n attrId:'widget-quote-list'\n })\n</script>","/package/widget/social-media-chat":"<?\nlet isChat = site.site_plugins && (site.site_plugins.filter(p => p.status === 1).length > 0)\nlet hasInquiry = site.site_inquiry.status\nlet needInquiry = site.site_config?.chat_inquiry_switch != 0\nlet pluginsList = site.site_plugins.filter((item,index) => item.status === 1)\nlet inquiryType = 'right-bottom'\nif(site.style?.[':root']?.['default']) {\n inquiryType = site.style[':root']['default']?.[`--inquiry-btn-type`] || 'right-bottom'\n}\nlet showButtonInquiry = !['product_detail', 'cart', 'checkout', 'complete'].includes(page.page_type)\n<!-- 夿æ¯å¦å¹¿å页,landing_page -->\nlet page_type = page.page_type || ''\nlet customer_service_plugin_show_in = site.site_config?.customer_service_plugin_show_in\nif(customer_service_plugin_show_in === undefined){\n customer_service_plugin_show_in = '1'\n}\nlet showPlugins = (page_type === 'landing_page' && customer_service_plugin_show_in.includes('2')) || (page_type !== 'landing_page' && customer_service_plugin_show_in.includes('1'))\n\n-?>\n<? if (isChat || site.site_inquiry.status) { -?>\n<div class=\"widget-social-media-chat <?=hasInquiry?'has-inquiry':'no-inquiry' -?> <?=needInquiry?'need-inquiry':'no-need-inquiry' -?> <?=pluginsList.length>1?'not-only-one':'only-one' -?> <?=!pluginsList.length?'no-plugin':'' -?> <?=page_type === 'landing_page'?'is-landing-page':'' -?>\" data-inquirystatus=\"1\" id=\"widgetSocialMediaChat\">\n <div class=\"widget-social-media-chat__content-wrap\">\n <? if ((!hasInquiry && pluginsList.length > 0 || !needInquiry) && showPlugins) { -?>\n <div class=\"col-plugins-list\">\n <? pluginsList.forEach((item,index) => { -?>\n <?\n if(item.type==='email'){\n item.type = 'base-email'\n }\n -?>\n <i class=\"widget-social-media-chat__icon iconfont icon-<?=item.type -?>\" data-info=\"<?=JSON.stringify({code:item.code,type:item.type}) -?>\">\n <? if(item.type==='base-email'||item.type==='phone'){ ?>\n <? if(item.type==='base-email'){ ?>\n <a class=\"for_email email_click onlineservice_tips\" href=\"mailto:<?=JSON.parse(item.code).account ?>\"><?= JSON.parse(item.code).account ?></a>\n <? } -?>\n <? if(item.type==='phone'){ ?>\n <a class=\"for_tel onlineservice_tips\" rel=\"nofollow\" href=\"tel:<?= JSON.parse(item.code).account ?>\"><?= JSON.parse(item.code).account ?></a>\n <? } -?>\n <? }-?>\n </i>\n <? }) -?>\n </div>\n <? } ?>\n <? if (showButtonInquiry) { -?>\n <div class=\"widget-social-media-chat__content--bottom <?- inquiryType ==='bottom'? 'show':'' ?>\" >\n <?- include(getViewsPath(`/layout/base`), { package: { type: 'button', config: { description: $t('Contact us') } } }) -?>\n </div>\n <? } ?>\n <div class=\"widget-social-media-chat__content\">\n\n <!-- 广å页é»è®¤éèAI客ææä»¶ -->\n <div class=\"widget-social-media-chat__server\">\n <i class=\"widget-social-media-chat__icon iconfont icon-send-inquiry\"></i>\n </div>\n <div class=\"widget-social-media-chat__modal-close\" id=\"chat_model_close\">\n <i class=\"widget-social-media-chat__icon iconfont icon-action-close-2\"></i>\n </div>\n <div class=\"widget-social-media-chat__mask\"></div>\n <!-- å¼¹çªï¼è¯¢ç表åï¼ -->\n <?\n if (site.site_inquiry.status) {\n let selfPackage = site.site_inquiry.package\n selfPackage.attr_id = 'widgetSocialMediaChatInquiry'\n selfPackage.config.form.content = 'socialMedia'\n selfPackage.config.form.list = selfPackage.config.form.list.map(item => {\n if (item.type === 'checkbox') {\n item = JSON.parse(JSON.stringify(item))\n item.option_items_cols_col = 12\n item.option_items_cols_md = 12\n item.option_items_cols_xl = 12\n item.style_type = 2\n }\n return item\n })\n ?>\n <div class=\"widget-social-media-chat__modal widget-social-media-chat__inquiry\">\n <div class=\"widget-social-media-chat__modal-head follow-font-family\" text-style=\"3\">\n <div class=\"widget-social-media-chat__modal-title\">\n <?= $t('Contact us') ?>\n <div class=\"widget-social-media-chat__modal-title_des\">\n <?= site.site_inquiry.title || $t('Leave your inquiry, we will provide you with quality products and services!') ?>\n </div>\n </div>\n <div class=\"widget-social-media-chat__modal-close move_chat_close\"><span class=\"iconfont icon-action-close-2\"></span></div>\n </div>\n <div class=\"widget-social-media-chat__modal-body\">\n <div class=\"widget-social-media-chat__modal-form\">\n <? try { -?>
1\n <?- include(getViewsPath(`/package/unit/form`), { package: selfPackage }) -?>\n <? } catch(err) { console.error(err) } -?>\n <? if (hasInquiry) { ?>\n <div class=\"widget-social-media-chat__wrap <?= showPlugins?'':'none' ?>\">\n <? if (pluginsList.length > 0) { -?>\n <span class=\"cont-text\"><?= $t('Contact us') ?></span>\n <? } ?>\n <div class=\"widget-social-media-chat__items\">\n\n <? site.site_plugins.filter((item,index) => item.status === 1).forEach((item,index) => { -?>\n <?\n if(item.type==='email'){\n item.type = 'base-email'\n }\n -?>\n <div class=\"widget-social-media-chat__item\" data-info=\"<?=JSON.stringify({code:item.code,type:item.type}) -?>\">\n <i class=\"widget-social-media-chat__icon iconfont icon-<?=item.type -?>\"></i>\n <? if (item.type === 'fbmessenger') { -?>\n <span class=\"widget-social-media-chat__item-text\">messenger</span>\n <?}else if (item.type === 'base-email') { -?>\n <span class=\"widget-social-media-chat__item-text\">email</span>\n <? } else { -?>\n <span class=\"widget-social-media-chat__item-text\"><?= item.type -?></span>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <? } ?>\n </div>\n </div>\n </div>\n <? } ?>\n <? if (isChat) { ?>\n <!-- è天æä»¶å表 -->\n <div class=\"widget-social-media-chat__modal widget-social-media-chat__list is-chat\">\n <div class=\"widget-social-media-chat__modal-head\">\n <div class=\"widget-social-media-chat__modal-title\"><?= $t('Contact customer service') ?></div>\n <div class=\"widget-social-media-chat__modal-close\"><span class=\"iconfont icon-action-close-2\"></span></div>\n </div>\n <div class=\"widget-social-media-chat__modal-body\">\n <div class=\"widget-social-media-chat__wrap <?= showPlugins?'':'none' ?>\">\n <? if (pluginsList.length > 0) { -?>\n <span class=\"cont-text\"><?= $t('Contact us') ?></span>\n <? } ?>\n <div class=\"widget-social-media-chat__items\">\n\n <? site.site_plugins.filter((item,index) => item.status === 1).forEach((item,index) => { -?>\n <?\n if(item.type==='email'){\n item.type = 'base-email'\n }\n -?>\n <div class=\"widget-social-media-chat__item\" data-info=\"<?=JSON.stringify({code:item.code,type:item.type}) -?>\">\n <i class=\"widget-social-media-chat__icon iconfont icon-<?=item.type -?>\"></i>\n <? if (item.type === 'fbmessenger') { -?>\n <span class=\"widget-social-media-chat__item-text\">messenger</span>\n <? }else if (item.type === 'base-email') { -?>\n <span class=\"widget-social-media-chat__item-text\">email</span>\n <? } else { -?>\n <span class=\"widget-social-media-chat__item-text\"><?= item.type -?></span>\n <? } -?>\n </div>\n <? }) -?>\n </div>\n </div>\n <div class=\"widget-social-media-chat__cancel\"><?= $t('Cancel') ?></div>\n </div>\n </div>\n <? } ?>\n </div>\n </div>\n <script>\n window.scriptQueue.push({\n file: '/assets/js/widget/social-media-chat.js',\n name: 'WidgetSocialMediaChat',\n attrId:'widgetSocialMediaChat',\n inquiry_requiry: '<?= site.site_inquiry.status ?>',\n chat_requiry: '<?= isChat ?>',\n hasInquiry: '<?= hasInquiry ?>',\n needInquiry: '<?= needInquiry ?>'\n })\n </script>\n</div>\n<? } -?>\n"}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.