diff --git a/.local.config.js b/.local.config.js
index fc3e332..701710d 100644
--- a/.local.config.js
+++ b/.local.config.js
@@ -74,6 +74,10 @@ const localDevConfig = ({
uniacid: 11,
domain: 'https://5g.aigc-quickapp.com/',
},
+ '5g-206': {
+ uniacid: 206,
+ domain: 'https://5g.aigc-quickapp.com/',
+ },
'47': { // 修改弹窗
uniacid: 47,
domain: 'https://5g.aigc-quickapp.com/',
diff --git a/common/js/lang.js b/common/js/lang.js
index dd10e31..511113c 100644
--- a/common/js/lang.js
+++ b/common/js/lang.js
@@ -182,91 +182,20 @@ function processRoutePath(route) {
}
// 加载语言包(同步方式)
-// 2026-06-24 升级为多文件结构:lang//index.js 聚合各业务模块
-// 同时保留旧单文件 lang/.js 作为过渡,新结构优先,旧结构兜底
-// path 参数保留仅为兼容旧调用签名(忽略值)。
function loadLangPackSync(lang, path) {
try {
- const cacheKey = `${lang}__single`;
- if (loadedLangPacks[cacheKey]) {
- return loadedLangPacks[cacheKey];
+ if (loadedLangPacks[`${lang}_${path}`]) {
+ return loadedLangPacks[`${lang}_${path}`];
}
- // 1. 先加载旧单文件(兜底)
- let legacyData = {};
- try {
- legacyData = require(`@/lang/${lang}.js`).lang || {};
- } catch (e) {
- // 旧文件不存在也没关系
- }
- // 2. 再加载新多文件聚合(优先)
- let modularData = {};
- try {
- modularData = require(`@/lang/${lang}/index.js`).lang || {};
- } catch (e) {
- // 新文件不存在也没关系
- }
- // 3. 深度合并:新结构覆盖旧结构
- const langData = deepMergeLang(legacyData, modularData);
- loadedLangPacks[cacheKey] = langData;
+ const langData = require(`@/lang/${lang}/${path}.js`).lang;
+ loadedLangPacks[`${lang}_${path}`] = langData;
return langData;
} catch (error) {
- // console.error(`加载语言包 ${lang} 失败:`, error);
+ // console.error(`加载语言包 ${lang}/${path} 失败:`, error);
return {};
}
}
-// 深度合并语言包对象,新值覆盖旧值
-function deepMergeLang(target, source) {
- const result = { ...target };
- for (const key of Object.keys(source)) {
- const srcVal = source[key];
- const tgtVal = result[key];
- if (srcVal && typeof srcVal === 'object' && !Array.isArray(srcVal)
- && tgtVal && typeof tgtVal === 'object' && !Array.isArray(tgtVal)) {
- result[key] = deepMergeLang(tgtVal, srcVal);
- } else {
- result[key] = srcVal;
- }
- }
- return result;
-}
-
-// 检测 page module 是否覆盖 common 已有 key。
-// 自 2026-06-23 起强制:page 覆盖 common 直接 throw 阻断,防止 AI 默默改文案。
-// 历史上 commit f258987 / 47098bd 都曾让 page 覆盖 common 引发翻译错乱。
-function detectShadowing(commonLang, pageLang, langPath) {
- if (!pageLang || typeof pageLang !== 'object') return;
- if (!commonLang || typeof commonLang !== 'object') return;
- const conflicts = [];
- const walk = (pageNode, commonNode, prefix) => {
- if (!pageNode || typeof pageNode !== 'object') return;
- if (!commonNode || typeof commonNode !== 'object') return;
- for (const k of Object.keys(pageNode)) {
- const fullKey = prefix ? `${prefix}.${k}` : k;
- if (Object.prototype.hasOwnProperty.call(commonNode, k)) {
- const pageVal = pageNode[k];
- const commonVal = commonNode[k];
- // 仅当 page 想覆盖 common 的"叶子"值(字符串)时报错
- if (typeof pageVal === 'string' && typeof commonVal === 'string' && pageVal !== commonVal) {
- conflicts.push({ key: fullKey, commonVal, pageVal });
- } else if (typeof pageVal === 'object' && pageVal !== null && typeof commonVal === 'object' && commonVal !== null) {
- // 嵌套结构继续递归
- walk(pageVal, commonVal, fullKey);
- }
- }
- }
- };
- walk(pageLang, commonLang, '');
- if (conflicts.length > 0) {
- const list = conflicts.map(c => ` - "${c.key}": common="${c.commonVal}" vs page="${c.pageVal}"`).join('\n');
- throw new Error(
- `[i18n] page module "${langPath || 'unknown'}" overrides common.js keys:\n${list}\n` +
- `Fix: rename the page key with a business namespace prefix, e.g. ".${conflicts[0].key.split('.').pop()}"\n` +
- `See docs/i18n-rules.md for the rule.`
- );
- }
-}
-
/**
* 获得当前本地语言
* @returns
@@ -634,20 +563,12 @@ export default {
let mergedLang = _mergedLangCache[mergeCacheKey];
if (!mergedLang) {
try {
- // 自 2026-06-23 起:只加载单一权威 lang/.js
- // page module 已废弃,因此不再读取 lang//.js
- const lang = loadLangPackSync(locale, langPath);
- const currentPageLang = {}; // 兼容旧调用;旧 page module 已废弃
- // detectShadowing 在 page 部分为空时直接返回,不抛错
- detectShadowing(lang, currentPageLang, langPath);
+ const lang = loadLangPackSync(locale, 'common');
+ const currentPageLang = langPath ? loadLangPackSync(locale, langPath) : {};
mergedLang = Object.assign(deepCloneLang(lang), deepCloneLang(currentPageLang));
const ovr = overrideCache[getOverrideMemKey(locale)];
if (ovr && ovr.map) applyOverrides(mergedLang, ovr.map);
} catch (e) {
- // detectShadowing 抛错时不应该被静默吞掉——直接重抛
- if (e && e.message && e.message.startsWith('[i18n]')) {
- throw e;
- }
console.error('解析语言包失败:', e, { langPath, field, locale });
mergedLang = {};
}
@@ -759,15 +680,7 @@ export default {
_refreshInProgress = true;
try {
let _page = getCurrentPages()[getCurrentPages().length - 1];
- if (_page) {
- // 自 2026-06-23 起:每个 page 的 title 集中到 pageTitles. 命名空间
- // processRoutePath() 已经把 route 映射成 langPath(如 'order/list')
- const _langPath = processRoutePath(_page.route || (_page.$page && _page.$page.path) || '');
- const _titleKey = _langPath ? `pageTitles.${_langPath.replace(/\//g, '.')}` : 'pageTitles';
- const _title = this.lang(_titleKey);
- // 兜底:旧 page module 仍可能在 lang 包外自定义 title,没匹配时用通用 title
- this.title(_title && _title !== _titleKey ? _title : this.lang('title'));
- }
+ if (_page) this.title(this.lang("title"));
if (emit) {
// 远端 i18n 翻译更新后,推送重渲染信号;
diff --git a/components-diy/diy-article.vue b/components-diy/diy-article.vue
index 7925d69..5f615b7 100644
--- a/components-diy/diy-article.vue
+++ b/components-diy/diy-article.vue
@@ -1,1199 +1,1199 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.article_title }}
-
- {{ item.article_abstract }}
-
-
- {{ tn }}
-
-
-
-
- {{ item.category_name }}
-
-
-
- {{ _humanizeNum(item.read_num || 0) }}
-
-
-
- {{ _humanizeNum(item.dianzan_num || 0) }}
-
- {{ $util.timeStampTurnTime(item.create_time, 'date') }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.article_title }}
-
- {{ item.article_abstract }}
-
-
- {{ tn }}
-
-
-
-
- {{ item.category_name }}
-
-
-
- {{ _humanizeNum(item.read_num || 0) }}
-
-
-
- {{ _humanizeNum(item.dianzan_num || 0) }}
-
- {{ $util.timeStampTurnTime(item.create_time, 'date') }}
-
-
-
-
-
- {{ viewMore.text || $lang('diy.diy-article.l94.t0') }}
-
-
-
-
- {{ $lang("diy.diy-article.l99.t0") }}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components-diy/diy-bargain.vue b/components-diy/diy-bargain.vue
index acdb53b..3135710 100644
--- a/components-diy/diy-bargain.vue
+++ b/components-diy/diy-bargain.vue
@@ -12,7 +12,7 @@
{{ $lang("diy.diy-bargain.l15.t0") }}
+ :style="{ color: value.titleStyle.textColor }">低至0元免费拿
diff --git a/components-diy/diy-category-item.vue b/components-diy/diy-category-item.vue
index 2f596d6..5be555e 100644
--- a/components-diy/diy-category-item.vue
+++ b/components-diy/diy-category-item.vue
@@ -44,7 +44,7 @@
:class="{ 'screen-category-4': value.template == 4 }" :scroll-with-animation="true"
:scroll-into-view="scrollIntoView">
{{ $lang("diy.diy-category-item.l47.t0") }}
+ @tap.stop="selectCategory(-1)">全部
@@ -57,7 +57,7 @@
@@ -160,7 +160,7 @@
-
-
+
-
@@ -29,7 +29,7 @@
-
@@ -51,7 +51,7 @@
- {{ $lang("diy.diy-category.l54.t0") }}
+ 展开
@@ -68,7 +68,7 @@
- {{ $lang("diy.diy-category.l71.t0") }}
+ 点击收起
@@ -102,7 +102,7 @@
@tologin="toLogin" @selectsku="selectSku($event, index)" @addCart="addCartPoint"
@loadfinish="getHeightArea">
- {{ $lang("diy.diy-category-item.l163.t0") }}
+ 已经到底了~
- {{ $lang("diy.diy-category.l123.t0") }}
+ 暂时没有分类哦!
- {{ $lang("diy.diy-category.l123.t0") }}
+ 暂时没有分类哦!
@@ -409,7 +409,7 @@ export default {
success: res => {
if (res.code >= 0) {
let item = res.data;
- item.unit = item.unit || $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0');
+ item.unit = item.unit || '件';
if (item.sku_images) item.sku_images = item.sku_images.split(',');
else item.sku_images = [];
diff --git a/components-diy/diy-channel-list.vue b/components-diy/diy-channel-list.vue
index 2e5b1f3..348f177 100644
--- a/components-diy/diy-channel-list.vue
+++ b/components-diy/diy-channel-list.vue
@@ -1,631 +1,631 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components-diy/diy-coupon.vue b/components-diy/diy-coupon.vue
index d8200f2..7859302 100644
--- a/components-diy/diy-coupon.vue
+++ b/components-diy/diy-coupon.vue
@@ -26,16 +26,16 @@
{{ item.discount | moneyConduct }}
- {{ $lang("common.register-reward.l60.t1") }}
+ 折
- {{ item.at_least > 0 ? $lang('diy.diy-coupon.l32.t0') + Number(item.at_least) + '元可用' : $lang('diy.diy-coupon.l32.t2') }}
+ {{ item.at_least > 0 ? '满' + Number(item.at_least) + '元可用' : '无门槛优惠券' }}
{{ value.btnStyle.text }}
- {{ $lang("diy.diy-coupon.l38.t0") }}
+ 去使用
@@ -61,14 +61,14 @@
{{ item.discount | moneyConduct }}
- {{ $lang("common.register-reward.l60.t1") }}
+ 折
- {{ item.at_least > 0 ? $lang('diy.diy-coupon.l32.t0') + Number(item.at_least) + '元可用' : $lang('diy.diy-coupon.l32.t2') }}
+ {{ item.at_least > 0 ? '满' + Number(item.at_least) + '元可用' : '无门槛优惠券' }}
- {{ value.btnStyle.text || $lang('diy.diy-coupon.l71.t0') }}
+ {{ value.btnStyle.text || '领取' }}
去使用
@@ -95,20 +95,20 @@
{{ item.discount | moneyConduct }}
- {{ $lang("common.register-reward.l60.t1") }}
+ 折
- {{ item.at_least > 0 ? $lang('diy.diy-coupon.l32.t0') +
- Number(item.at_least) + '元可用' : $lang('diy.diy-coupon.l32.t2') }}
- {{ $lang("diy.diy-coupon.l103.t0") }}
- {{ $lang("diy.diy-coupon.l104.t0") }}
- {{ $lang("diy.diy-coupon.l105.t0") }}
+ {{ item.at_least > 0 ? '满' +
+ Number(item.at_least) + '元可用' : '无门槛优惠券' }}
+ 所有商品可用
+ 指定商品可用
+ 指定商品不可用
- {{ value.btnStyle.text || $lang('diy.diy-coupon.l71.t0') }}
+ {{ value.btnStyle.text || '领取' }}
- {{ $lang("diy.diy-coupon.l38.t0") }}
+ 去使用
@@ -133,16 +133,16 @@
{{ item.discount | moneyConduct }}
- {{ $lang("common.register-reward.l60.t1") }}
+ 折
- {{ item.at_least > 0 ? $lang('diy.diy-coupon.l32.t0') + Number(item.at_least) + '元可用' : $lang('diy.diy-coupon.l32.t2') }}
+ {{ item.at_least > 0 ? '满' + Number(item.at_least) + '元可用' : '无门槛优惠券' }}
- {{ value.btnStyle.text || $lang('diy.diy-coupon.l143.t0') }}
+ {{ value.btnStyle.text || '立即使用' }}
- {{ $lang("diy.diy-coupon.l38.t0") }}
+ 去使用
@@ -160,11 +160,11 @@
{{ item.money | moneyConduct }}
- {{ $lang("common.register-reward.l45.t0") }}
+ 元
{{ item.discount | moneyConduct }}
- {{ $lang("common.register-reward.l60.t1") }}
+ 折
@@ -173,12 +173,12 @@
{{
item.coupon_name }}
{ $lang("diy.diy-coupon.l32.t0") } Number(item.at_least) }}元可用
+ v-if="item.at_least > 0">满{{ Number(item.at_least) }}元可用
{{ $lang("diy.diy-coupon.l32.t2") }}
+ v-else>无门槛优惠券
{{
- value.btnStyle.text || $lang('diy.diy-coupon.l181.t0') }}
+ value.btnStyle.text || '立即领取' }}
去使用
@@ -204,9 +204,9 @@
{{ (item.discount == '0.00'
? item.money : item.discount) | moneyConduct }}
- {{ item.discount == '0.00' ? '元' : $lang('common.register-reward.l60.t1') }}
+ {{ item.discount == '0.00' ? '元' : '折' }}
- {{ $lang("diy.diy-coupon.l209.t0") }}
+ 优惠券
- {{ $lang("diy.diy-coupon.l38.t0") }}
+ 去使用
{ $lang("diy.diy-coupon.l32.t0") } item.at_least | moneyConduct }}元使用
- {{ $lang("diy.diy-coupon.l229.t0") }}
+ v-if="parseFloat(item.at_least) > 0">满{{ item.at_least | moneyConduct }}元使用
+ 无门槛使用
+
- {{ $lang("diy.diy-coupon.l241.t0") }}
+ 暂无优惠券
-
{{ $lang("common.ns-empty.l31.t0") }}
+
去逛逛
@@ -257,23 +257,23 @@
{{ item.money | moneyConduct }}
- {{ $lang("common.register-reward.l45.t0") }}
+ 元
{{ item.discount | moneyConduct }}
- {{ $lang("common.register-reward.l60.t1") }}
+ 折
{ $lang("diy.diy-coupon.l32.t0") } Number(item.at_least) }}元可用
- {{ $lang("diy.diy-coupon.l32.t2") }}
+ v-if="item.at_least > 0">满{{ Number(item.at_least) }}元可用
+ 无门槛优惠券
有效期至{{
$util.timeStampTurnTime(item.end_time, 'yearmonthday') }}
- {{ value.btnStyle.text || $lang('diy.diy-coupon.l181.t0') }}
+ {{ value.btnStyle.text || '立即领取' }}
去使用
@@ -404,7 +404,7 @@ export default {
couponTap(item, index) {
if (item.count == item.lead_count) {
this.$util.showToast({
- title: $lang('diy.diy-coupon.l407.t0')
+ title: '该优惠券已抢光'
});
return;
}
@@ -427,7 +427,7 @@ export default {
var data = res.data;
let msg = res.message;
if (res.code == 0) {
- msg = $lang('diy.diy-coupon.l430.t0');
+ msg = '领取成功';
if (res.data.is_exist == 1) {
for (let i = 0; i < that.couponList.length; i++) {
if (that.couponList[i].coupon_type_id == item.coupon_type_id) {
diff --git a/components-diy/diy-fenxiao-goods-list.vue b/components-diy/diy-fenxiao-goods-list.vue
index 265a029..08ecc1b 100644
--- a/components-diy/diy-fenxiao-goods-list.vue
+++ b/components-diy/diy-fenxiao-goods-list.vue
@@ -20,7 +20,7 @@
{{ $lang("diy.diy-fenxiao-goods-list.l23.t0") }}
+ :style="{ color: value.theme == 'diy' ? value.priceStyle.mainColor : '' }">赚 ¥
{{
item.commission_money.split('.')[0] }}
@@ -138,7 +138,7 @@ export default {
},
success: res => {
if (res.code >= 0) {
- this.$util.showToast({ title: $lang('diy.diy-fenxiao-goods-list.l141.t0') });
+ this.$util.showToast({ title: '关注成功' });
this.list[index].is_collect = 1;
this.list[index].collect_id = res.data;
}
@@ -149,8 +149,8 @@ export default {
//取消关注
delFollowTip(e, index) {
uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('diy.diy-fenxiao-goods-list.l153.t0'),
+ title: '提示',
+ content: '确认取消关注该商品吗',
success: res => {
if (res.confirm) {
this.delFollow(e.collect_id, index);
@@ -167,7 +167,7 @@ export default {
success: res => {
let msg = '';
if (res.code == 0) {
- msg = $lang('diy.diy-fenxiao-goods-list.l170.t0');
+ msg = '取消成功';
} else {
msg = res.message;
}
diff --git a/components-diy/diy-form.vue b/components-diy/diy-form.vue
index 98dffac..8a30b8a 100644
--- a/components-diy/diy-form.vue
+++ b/components-diy/diy-form.vue
@@ -139,7 +139,7 @@ export default {
// 提交按钮文字:与后端 design.html 默认对齐,开放给 formConfig 覆盖
// 走 mergedFormConfig(兼容 camelCase / snake_case),让 formConfig.submitText 能正确覆盖
submitText() {
- return this.mergedFormConfig.submitText || $lang('diy.diy-form.l142.t0');
+ return this.mergedFormConfig.submitText || '提交';
},
// 后端把表单样式配置统一存放在 data.formConfig 子对象中(与后端 design.js getDefaultFormData().formConfig 字段名一致)。
// 这里做一次归一化:优先取 formConfig;如果历史数据是扁平结构(直接挂在 value 上),也做兼容。
@@ -298,12 +298,12 @@ export default {
form_id: this.value.form_id || 0,
form_data: JSON.stringify(submitData),
component_id: this.value.id || '',
- form_name: this.value.form_name || $lang('diy.diy-form.l301.t0')
+ form_name: this.value.form_name || '默认表单'
},
success: function(res) {
if (res.code === 0) {
uni.showToast({
- title: $lang('diy.diy-form.l306.t0'),
+ title: '提交成功',
icon: 'success'
});
// 重置表单
@@ -312,7 +312,7 @@ export default {
}
} else {
uni.showToast({
- title: res.message || $lang('diy.diy-form.l315.t0'),
+ title: res.message || '提交失败',
icon: 'none'
});
}
diff --git a/components-diy/diy-goods-list.vue b/components-diy/diy-goods-list.vue
index 9daef9d..61ea2d1 100644
--- a/components-diy/diy-goods-list.vue
+++ b/components-diy/diy-goods-list.vue
@@ -60,7 +60,7 @@
- 已售{{ item.sale_num }}{{ item.unit ? item.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
+ 已售{{ item.sale_num }}{{ item.unit ? item.unit : '件' }}
@@ -168,7 +168,7 @@
- 已售{{ item.sale_num }}{{ item.unit ? item.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
+ 已售{{ item.sale_num }}{{ item.unit ? item.unit : '件' }}
@@ -238,7 +238,7 @@
- 已售{{ dataItem.sale_num }}{{ dataItem.unit ? dataItem.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
+ 已售{{ dataItem.sale_num }}{{ dataItem.unit ? dataItem.unit : '件' }}
diff --git a/components-diy/diy-goods-recommend.vue b/components-diy/diy-goods-recommend.vue
index a6fe133..54929c4 100644
--- a/components-diy/diy-goods-recommend.vue
+++ b/components-diy/diy-goods-recommend.vue
@@ -53,7 +53,7 @@
¥{{ showMarketPrice(dataItem) }}
- 售{{ dataItem.sale_num }}{{ dataItem.unit ? dataItem.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
+ 售{{ dataItem.sale_num }}{{ dataItem.unit ? dataItem.unit : '件' }}
diff --git a/components-diy/diy-index-page.vue b/components-diy/diy-index-page.vue
index f925c2e..46f032d 100644
--- a/components-diy/diy-index-page.vue
+++ b/components-diy/diy-index-page.vue
@@ -1,863 +1,863 @@
-
-
-
-
-
-
-
-
- {{ item.short_name ? item.short_name : item.category_name }}
-
-
- {{ item.short_name ? item.short_name : item.category_name }}
-
-
-
-
-
-
-
-
-
-
- {{ item.short_name ? item.short_name : item.category_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.category_name }}
-
-
-
-
-
-
-
-
-
-
- {{ item.category_name }}
-
-
-
-
-
-
-
-
-
- {{ item.category_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{
- goodsTag(item) }}
-
-
-
-
-
-
- {{ isEnEnv ? item.en_goods_name : item.goods_name }}
-
-
-
- {{
- $lang('common.currency_symbol') }}
- {{
- showPrice(item) }}
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ showMarketPrice(item) }}
-
- 已售{{
- item.sale_num }}{{ item.unit ? item.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components-diy/diy-kefu.vue b/components-diy/diy-kefu.vue
index 3333e22..b3498fb 100644
--- a/components-diy/diy-kefu.vue
+++ b/components-diy/diy-kefu.vue
@@ -14,7 +14,7 @@
diff --git a/components-diy/diy-listmenu.vue b/components-diy/diy-listmenu.vue
index 3c6eb58..a6e6b78 100644
--- a/components-diy/diy-listmenu.vue
+++ b/components-diy/diy-listmenu.vue
@@ -12,7 +12,7 @@
style="border-radius:6rpx;width: 60rpx;">
{{ item.title }}
-
+
diff --git a/components-diy/diy-live.vue b/components-diy/diy-live.vue
index 2059d68..1dd989e 100644
--- a/components-diy/diy-live.vue
+++ b/components-diy/diy-live.vue
@@ -26,11 +26,11 @@
- { $lang("diy.diy-live.l29.t0") } liveInfo.anchor_name }}
+ 主播:{{ liveInfo.anchor_name }}
|
- { $lang("diy.diy-live.l33.t0") } liveInfo.goods.length }}
+ 直播商品:{{ liveInfo.goods.length }}
diff --git a/components-diy/diy-map.vue b/components-diy/diy-map.vue
index 7b99a4a..b84128b 100644
--- a/components-diy/diy-map.vue
+++ b/components-diy/diy-map.vue
@@ -6,14 +6,14 @@
- {{ $lang("diy.diy-map.l9.t0") }}
+ 一键导航
@@ -71,7 +71,7 @@ export default {
uni.openLocation({
latitude: parseFloat(item.lat),
longitude: parseFloat(item.lng),
- name: $lang("diy.diy-map.l9.t0"),
+ name: "一键导航",
})
},
async handlerClick(item) {
diff --git a/components-diy/diy-member-info.vue b/components-diy/diy-member-info.vue
index 6490aa7..3092db6 100644
--- a/components-diy/diy-member-info.vue
+++ b/components-diy/diy-member-info.vue
@@ -1,1509 +1,1509 @@
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("diy.diy-member-info.l15.t0") }}
-
-
- {{ memberInfo.nickname }}
-
-
- {{ memberInfo.member_level_name }}
-
-
-
-
- {{ memberInfo.member_level_name }}
-
-
-
- {{ memberInfo.member_level_name }}
-
-
-
-
-
- {{ $lang("diy.diy-member-info.l39.t0") }}
-
-
- {{ memberInfo.nickname
- }}
-
-
- {{ memberInfo.member_level_name }}VIP1
-
-
-
-
- {{ memberInfo.member_level_name }}
-
-
-
-
- {{ memberInfo.member_level_name }}
-
-
-
- {{ langIndex == 0 ? 'CN' : 'EN' }}
-
-
-
-
-
-
-
- {{ $lang('login') }}
- {{ $lang('login.list.login_tpis') }}
-
-
- {{ langIndex == 0 ? 'CN' : 'EN' }}
-
-
-
-
-
- {{ memberInfo ? (parseFloat(memberInfo.balance) +
- parseFloat(memberInfo.balance_money)).toFixed(2) : '--' }}
-
- {{ $lang('balance') }}
-
-
-
- {{ memberInfo ? parseFloat(memberInfo.point) : '--' }}
- {{ $lang('point') }}
-
-
-
-
- {{ memberInfo && memberInfo.coupon_num != undefined ? memberInfo.coupon_num : '--' }}
-
- {{ $lang('coupon') }}
-
-
-
-
-
-
-
- {{ memberInfo ? (parseFloat(memberInfo.balance) +
- parseFloat(memberInfo.balance_money)).toFixed(2) : '--' }}
- {{ $lang('balance') }}
-
-
-
- {{ memberInfo ? parseFloat(memberInfo.point) : '--' }}
- {{ $lang('point') }}
-
-
-
-
- {{ memberInfo && memberInfo.coupon_num != undefined ? memberInfo.coupon_num : '--' }}
-
- {{ $lang('coupon') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/components-diy/diy-member-my-order.vue b/components-diy/diy-member-my-order.vue
index 6910428..6f6afcf 100644
--- a/components-diy/diy-member-my-order.vue
+++ b/components-diy/diy-member-my-order.vue
@@ -19,7 +19,7 @@
> 99 ? '99+' :
orderNum.waitpay }}
- {{ $lang('order.list.waitpay') }}
+ {{ $lang('waitpay') }}
@@ -38,7 +38,7 @@
orderNum.waitsend > 99 ? '99+'
: orderNum.waitsend }}
- {{ $lang('order.list.waitsend') }}
+ {{ $lang('waitsend') }}
@@ -57,7 +57,7 @@
orderNum.waitconfirm > 99 ?
'99+' : orderNum.waitconfirm }}
- {{ $lang('order.list.waitconfirm') }}
+ {{ $lang('waitconfirm') }}
@@ -74,7 +74,7 @@
- {{ $lang('order.list.completed') }}
+ {{ $lang('completed') }}
@@ -92,7 +92,7 @@
orderNum.refunding > 99 ?
'99+' : orderNum.refunding }}
- {{ $lang('order.list.activist') }}
+ {{ $lang('activist') }}
diff --git a/components-diy/diy-merch-list.vue b/components-diy/diy-merch-list.vue
index 100cc91..7457a40 100644
--- a/components-diy/diy-merch-list.vue
+++ b/components-diy/diy-merch-list.vue
@@ -63,31 +63,31 @@ export default {
return {
list: [
/*{
- merch_name:$lang('diy.diy-merch-list.l66.t0'),
+ merch_name:'品牌',
merch_image:'https://saas.cn//upload/4/common/images/20240824/20240824040223172448654356147.jpg'
},
{
- merch_name:$lang('diy.diy-merch-list.l66.t0'),
+ merch_name:'品牌',
merch_image:'https://saas.cn//upload/4/common/images/20240824/20240824040223172448654356147.jpg'
},
{
- merch_name:$lang('diy.diy-merch-list.l66.t0'),
+ merch_name:'品牌',
merch_image:'https://saas.cn//upload/4/common/images/20240824/20240824040223172448654356147.jpg'
},
{
- merch_name:$lang('diy.diy-merch-list.l66.t0'),
+ merch_name:'品牌',
merch_image:'https://saas.cn//upload/4/common/images/20240824/20240824040223172448654356147.jpg'
},
{
- merch_name:$lang('diy.diy-merch-list.l66.t0'),
+ merch_name:'品牌',
merch_image:'https://saas.cn//upload/4/common/images/20240824/20240824040223172448654356147.jpg'
},
{
- merch_name:$lang('diy.diy-merch-list.l66.t0'),
+ merch_name:'品牌',
merch_image:'https://saas.cn//upload/4/common/images/20240824/20240824040223172448654356147.jpg'
},
{
- merch_name:$lang('diy.diy-merch-list.l66.t0'),
+ merch_name:'品牌',
merch_image:'https://saas.cn//upload/4/common/images/20240824/20240824040223172448654356147.jpg'
}*/
],
diff --git a/components-diy/diy-notes.vue b/components-diy/diy-notes.vue
index f7091e4..d686b60 100644
--- a/components-diy/diy-notes.vue
+++ b/components-diy/diy-notes.vue
@@ -18,7 +18,7 @@
#{{ item.note_type == 'goods_item' ? '单品介绍' :
- $lang('diy.diy-notes.l21.t0') }}#
+ '掌柜说' }}#
{{ item.note_abstract }}
diff --git a/components-diy/diy-notice.vue b/components-diy/diy-notice.vue
index ab41853..34d0db0 100644
--- a/components-diy/diy-notice.vue
+++ b/components-diy/diy-notice.vue
@@ -42,11 +42,11 @@
diff --git a/components-diy/diy-payment-qrcode.vue b/components-diy/diy-payment-qrcode.vue
index 812c6d5..55c12e8 100644
--- a/components-diy/diy-payment-qrcode.vue
+++ b/components-diy/diy-payment-qrcode.vue
@@ -3,23 +3,23 @@
- {{ $lang("diy.diy-payment-qrcode.l6.t0") }}
+ 门店消费时使用,支付时点击下方展示付款码
- {{ $lang("diy.diy-payment-qrcode.l22.t0") }}
+ 门店支付
@@ -27,11 +27,11 @@
diff --git a/components-diy/diy-pinfan.vue b/components-diy/diy-pinfan.vue
index 8d07cc8..efbc364 100644
--- a/components-diy/diy-pinfan.vue
+++ b/components-diy/diy-pinfan.vue
@@ -25,7 +25,7 @@
- { $lang("diy.diy-pinfan.l28.t0") } item.order_num }}件
+ 已拼{{ item.order_num }}件
@@ -49,10 +49,10 @@
borderRadius: value.btnStyle.aroundRadius * 2 + 'rpx'
}">
{{ value.btnStyle.text }}
- { $lang("diy.diy-pinfan.l52.t0") } item.reward_type_num }}积分
+ 返{{ item.reward_type_num }}积分
返¥{{
item.reward_type_num }}
- {{ $lang("diy.diy-pinfan.l55.t0") }}
+ 返优惠券
@@ -92,7 +92,7 @@
{{ $lang("diy.diy-pinfan.l55.t0") }}
+ v-if="item.reward_type == 3">返优惠券
{{ value.titleStyle.virtualNum || headData.pintuan_count }}
- {{ value.titleStyle.style == 'style-2' ? '人参与' : $lang('diy.diy-pintuan.l29.t1') }}
+ {{ value.titleStyle.style == 'style-2' ? '人参与' : '人拼团成功' }}
- { $lang("diy.diy-pinfan.l28.t0") } item.order_num }}件
+ 已拼{{ item.order_num }}件
@@ -148,10 +148,10 @@
{{ '.' + item.pintuan_price.split('.')[1] }}
- {{ $lang("diy.diy-pintuan.l151.t0") }}
+ 去参团
- { $lang("diy.diy-pinfan.l28.t0") } item.sale_num }}件
+ 已拼{{ item.sale_num }}件
@@ -192,7 +192,7 @@
{{ '.' + item.pintuan_price.split('.')[1] }}
- { $lang("diy.diy-pinfan.l28.t0") } item.sale_num }}件
+ 已拼{{ item.sale_num }}件
diff --git a/components-diy/diy-search.vue b/components-diy/diy-search.vue
index 58e349b..81f521a 100644
--- a/components-diy/diy-search.vue
+++ b/components-diy/diy-search.vue
@@ -28,7 +28,7 @@
@tap.stop="handlerSearchClick"
:placeholderStyle="placeholderStyle" />
{{ $lang("diy.diy-search.l31.t0") }}
+ :style="{ 'backgroundColor': value.pageBgColor ? value.pageBgColor : 'rgba(0,0,0,0)' }">搜索
diff --git a/components-diy/diy-seckill.vue b/components-diy/diy-seckill.vue
index 0f0ca19..bdc028a 100644
--- a/components-diy/diy-seckill.vue
+++ b/components-diy/diy-seckill.vue
@@ -13,10 +13,10 @@
{{ $lang("diy.diy-seckill.l16.t0") }}
+ :style="{ color: value.titleStyle.textColor }" class="seckill-style-name">距离开始
{{ isFuture ?
- '距离开始' : $lang('diy.diy-seckill.l19.t0') }}
+ '距离开始' : '距离结束' }}
{{ seckillH ? seckillH : '00' }}
@@ -87,7 +87,7 @@
{{ $lang("diy.diy-seckill.l90.t0") }}
+ :style="{ color: value.theme == 'diy' ? value.priceStyle.lineColor : '' }">原价:
¥{{ item.price }}
@@ -502,7 +502,7 @@ export default {
toDetail(id) {
if (this.isFuture) {
this.$util.showToast({
- title: $lang('diy.diy-seckill.l505.t0')
+ title: '秒杀活动即将开启,敬请期待!'
});
return false;
}
diff --git a/components-diy/diy-store.vue b/components-diy/diy-store.vue
index c42a1ce..a6696d6 100644
--- a/components-diy/diy-store.vue
+++ b/components-diy/diy-store.vue
@@ -7,17 +7,17 @@
{{ globalStoreInfo.store_name }}
- {{ $lang("diy.diy-store.l10.t0") }}
+ 切换
- {{ $lang("common.ns-navbar.l39.t0") }}
+ 定位中...
{{
globalStoreInfo.show_address }}
- {{ $lang("diy.diy-store.l20.t0") }}
+ 获取当前位置...
@@ -40,11 +40,11 @@
{{ globalStoreInfo.store_name }}
- {{ $lang("diy.diy-store.l10.t0") }}
+ 切换
- {{ $lang("common.ns-navbar.l39.t0") }}
+ 定位中...
{{ globalStoreInfo.store_name }}
- {{ $lang("common.ns-navbar.l39.t0") }}
+ 定位中...
-
diff --git a/components-diy/diy-text.vue b/components-diy/diy-text.vue
index 8002013..f9086e1 100644
--- a/components-diy/diy-text.vue
+++ b/components-diy/diy-text.vue
@@ -208,7 +208,7 @@
{{ value.text }}
{{ $lang("diy.diy-text.l211.t0") }}
+ :style="{ fontSize: value.fontSize * 2 + 'rpx', fontWeight: value.fontWeight }">专区
diff --git a/components-diy/diy-video.vue b/components-diy/diy-video.vue
index 052b152..7cec6a8 100644
--- a/components-diy/diy-video.vue
+++ b/components-diy/diy-video.vue
@@ -143,7 +143,7 @@ export default {
});
video.addEventListener('error', (e) => {
- console.error($lang('diy.diy-video.l146.t0'), e);
+ console.error('H5端预加载视频失败:', e);
});
// 触发加载
@@ -184,7 +184,7 @@ export default {
// 视频错误事件
onVideoError(event) {
- console.error($lang('diy.diy-video.l187.t0'), event);
+ console.error('视频加载失败:', event);
},
async handlerClick(videoUrl) {
diff --git a/components-diy/js/wechat-channel.js b/components-diy/js/wechat-channel.js
index 684292b..9291161 100644
--- a/components-diy/js/wechat-channel.js
+++ b/components-diy/js/wechat-channel.js
@@ -1,187 +1,187 @@
-// 微信视频号组件配置
-export const wechatChannelConfig = {
- // 图标相关
- icon: {
- defaultSize: 80, // 默认图标尺寸(rpx)
- smallSize: 60, // 小图标尺寸(rpx)
- channelArrowSize: 24, // 频道箭头图标尺寸(rpx)
- channelArrow: 'addon/personnel/shop/view/enterprise/arrow.png', // 频道箭头图标路径
- },
-
-
- // 视频相关配置
- video: {
- defaultHeight: 320, // 默认视频高度(rpx)
- minHeight: 200, // 最小视频高度(rpx)
- maxHeight: 500, // 最大视频高度(rpx)
- defaultCoverUrl: 'addon/personnel/shop/view/enterprise/default-video-cover.png', // 默认视频封面
- },
-
- // 播放按钮配置
- playButton: {
- size: 80, // 标准尺寸(rpx)
- smallSize: 60, // 小尺寸(rpx)
- iconSize: 40, // 标准图标尺寸(rpx)
- smallIconSize: 30, // 小图标尺寸(rpx)
- background: 'rgba(0, 0, 0, 0.4)', // 背景颜色
- },
-
- // 布局配置
- layout: {
- borderRadius: 12, // 圆角(rpx)
- padding: 16, // 内边距(rpx)
- margin: 10, // 外边距(rpx)
- },
-
- // 字体配置
- font: {
- channelNameSize: 28, // 频道名称字体大小(rpx)
- videoTitleSize: 28, // 视频标题字体大小(rpx)
- statsSize: 24, // 统计信息字体大小(rpx)
- },
-
- // 颜色配置
- color: {
- channelName: '#333', // 频道名称颜色
- videoTitle: '#333', // 视频标题颜色
- stats: '#999', // 统计信息颜色
- border: '#f0f0f0', // 边框颜色
- },
-
- // 微信相关配置
- wechat: {
- minSdkVersion: '2.19.2', // 最小微信基础库版本
- embedComponent: 'channel-video', // 嵌入式视频组件名称
- },
-
- // 错误提示配置
- error: {
- notWechat: $lang('diy.js.wechat-channel.l59.t0'),
- lowVersion: $lang('diy.js.wechat-channel.l60.t0'),
- notSupported: $lang('diy.js.wechat-channel.l61.t0'),
- missingFields: $lang('diy.js.wechat-channel.l62.t0'),
- },
-};
-
-// 获取配置项的辅助函数
-export const getwechatChannelConfig = (key, defaultValue = null) => {
- const keys = key.split('.');
- let config = wechatChannelConfig;
-
- for (const k of keys) {
- if (config[k] === undefined) {
- return defaultValue;
- }
- config = config[k];
- }
-
- return config;
-};
-
-// 微信视频号工具函数
-export const wechatChannelUtil = {
- // 版本比较
- versionCompare(v1, v2) {
- const arr1 = v1.split('.');
- const arr2 = v2.split('.');
- for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) {
- const num1 = parseInt(arr1[i] || 0);
- const num2 = parseInt(arr2[i] || 0);
- if (num1 > num2) return 1;
- if (num1 < num2) return -1;
- }
- return 0;
- },
-
- // 检查是否支持嵌入式播放
- isEmbedModeSupported() {
- return typeof wx !== 'undefined' && wx.canIUse(wechatChannelConfig.wechat.embedComponent);
- },
-
- // 获取默认视频封面
- getDefaultCoverUrl() {
- return wechatChannelConfig.video.defaultCoverUrl;
- },
-
- // 数据校验
- validateVideoData(item) {
- const requiredFields = ['feedId', 'finderUserName'];
- for (const field of requiredFields) {
- if (!item[field]) {
- throw new Error($lang(`diy.js.wechat-channel.l111.t0`));
- }
- }
- return true;
- },
-
- // 播放视频
- playVideo(item) {
- return new Promise((resolve, reject) => {
- try {
- // 数据校验
- this.validateVideoData(item);
- } catch (err) {
- this.handleError(err, item);
- reject(err);
- return;
- }
-
- // 检查微信环境
- if (typeof wx === 'undefined') {
- const err = new Error(wechatChannelConfig.error.notWechat);
- this.handleError(err, item);
- reject(err);
- return;
- }
-
- // 检查基础库版本
- const systemInfo = wx.getSystemInfoSync();
- const SDKVersion = systemInfo.SDKVersion;
- if (this.versionCompare(SDKVersion, wechatChannelConfig.wechat.minSdkVersion) < 0) {
- const err = new Error(wechatChannelConfig.error.lowVersion);
- this.handleError(err, item);
- reject(err);
- return;
- }
-
- // 调用微信视频号播放API
- if (wx.openChannelsActivity) {
- wx.openChannelsActivity({
- feedId: item.feedId,
- finderUserName: item.finderUserName,
- success: (res) => {
- resolve(res);
- },
- fail: (err) => {
- this.handleError(err, item);
- reject(err);
- }
- });
- } else {
- const err = new Error(wechatChannelConfig.error.notSupported);
- this.handleError(err, item);
- reject(err);
- }
- });
- },
-
- // 统一错误处理
- handleError(err, item) {
- console.error($lang('diy.js.wechat-channel.l170.t0'), err);
- const { message = '', errMsg = '微信视频播放失败!', errCode = -1 } = err;
-
- // 错误码5: 表示用户点击了取消. openChannelsActivity:fail cancel
- if ([5].includes(errCode)) {
- return;
- }
-
- const showErrorToast = (otherMsgs = []) => {
- uni.showToast({
- title: [errMsg, message,...otherMsgs].join('\n'),
- icon: 'none',
- duration: 2000
- });
- }
- showErrorToast();
- }
+// 微信视频号组件配置
+export const wechatChannelConfig = {
+ // 图标相关
+ icon: {
+ defaultSize: 80, // 默认图标尺寸(rpx)
+ smallSize: 60, // 小图标尺寸(rpx)
+ channelArrowSize: 24, // 频道箭头图标尺寸(rpx)
+ channelArrow: 'addon/personnel/shop/view/enterprise/arrow.png', // 频道箭头图标路径
+ },
+
+
+ // 视频相关配置
+ video: {
+ defaultHeight: 320, // 默认视频高度(rpx)
+ minHeight: 200, // 最小视频高度(rpx)
+ maxHeight: 500, // 最大视频高度(rpx)
+ defaultCoverUrl: 'addon/personnel/shop/view/enterprise/default-video-cover.png', // 默认视频封面
+ },
+
+ // 播放按钮配置
+ playButton: {
+ size: 80, // 标准尺寸(rpx)
+ smallSize: 60, // 小尺寸(rpx)
+ iconSize: 40, // 标准图标尺寸(rpx)
+ smallIconSize: 30, // 小图标尺寸(rpx)
+ background: 'rgba(0, 0, 0, 0.4)', // 背景颜色
+ },
+
+ // 布局配置
+ layout: {
+ borderRadius: 12, // 圆角(rpx)
+ padding: 16, // 内边距(rpx)
+ margin: 10, // 外边距(rpx)
+ },
+
+ // 字体配置
+ font: {
+ channelNameSize: 28, // 频道名称字体大小(rpx)
+ videoTitleSize: 28, // 视频标题字体大小(rpx)
+ statsSize: 24, // 统计信息字体大小(rpx)
+ },
+
+ // 颜色配置
+ color: {
+ channelName: '#333', // 频道名称颜色
+ videoTitle: '#333', // 视频标题颜色
+ stats: '#999', // 统计信息颜色
+ border: '#f0f0f0', // 边框颜色
+ },
+
+ // 微信相关配置
+ wechat: {
+ minSdkVersion: '2.19.2', // 最小微信基础库版本
+ embedComponent: 'channel-video', // 嵌入式视频组件名称
+ },
+
+ // 错误提示配置
+ error: {
+ notWechat: '当前环境不是微信小程序',
+ lowVersion: '当前微信基础库版本过低,需要 2.19.2 或以上版本',
+ notSupported: '当前环境不支持微信视频号',
+ missingFields: '缺少必要字段: {field}',
+ },
+};
+
+// 获取配置项的辅助函数
+export const getwechatChannelConfig = (key, defaultValue = null) => {
+ const keys = key.split('.');
+ let config = wechatChannelConfig;
+
+ for (const k of keys) {
+ if (config[k] === undefined) {
+ return defaultValue;
+ }
+ config = config[k];
+ }
+
+ return config;
+};
+
+// 微信视频号工具函数
+export const wechatChannelUtil = {
+ // 版本比较
+ versionCompare(v1, v2) {
+ const arr1 = v1.split('.');
+ const arr2 = v2.split('.');
+ for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) {
+ const num1 = parseInt(arr1[i] || 0);
+ const num2 = parseInt(arr2[i] || 0);
+ if (num1 > num2) return 1;
+ if (num1 < num2) return -1;
+ }
+ return 0;
+ },
+
+ // 检查是否支持嵌入式播放
+ isEmbedModeSupported() {
+ return typeof wx !== 'undefined' && wx.canIUse(wechatChannelConfig.wechat.embedComponent);
+ },
+
+ // 获取默认视频封面
+ getDefaultCoverUrl() {
+ return wechatChannelConfig.video.defaultCoverUrl;
+ },
+
+ // 数据校验
+ validateVideoData(item) {
+ const requiredFields = ['feedId', 'finderUserName'];
+ for (const field of requiredFields) {
+ if (!item[field]) {
+ throw new Error(`缺少必要字段: ${field}`);
+ }
+ }
+ return true;
+ },
+
+ // 播放视频
+ playVideo(item) {
+ return new Promise((resolve, reject) => {
+ try {
+ // 数据校验
+ this.validateVideoData(item);
+ } catch (err) {
+ this.handleError(err, item);
+ reject(err);
+ return;
+ }
+
+ // 检查微信环境
+ if (typeof wx === 'undefined') {
+ const err = new Error(wechatChannelConfig.error.notWechat);
+ this.handleError(err, item);
+ reject(err);
+ return;
+ }
+
+ // 检查基础库版本
+ const systemInfo = wx.getSystemInfoSync();
+ const SDKVersion = systemInfo.SDKVersion;
+ if (this.versionCompare(SDKVersion, wechatChannelConfig.wechat.minSdkVersion) < 0) {
+ const err = new Error(wechatChannelConfig.error.lowVersion);
+ this.handleError(err, item);
+ reject(err);
+ return;
+ }
+
+ // 调用微信视频号播放API
+ if (wx.openChannelsActivity) {
+ wx.openChannelsActivity({
+ feedId: item.feedId,
+ finderUserName: item.finderUserName,
+ success: (res) => {
+ resolve(res);
+ },
+ fail: (err) => {
+ this.handleError(err, item);
+ reject(err);
+ }
+ });
+ } else {
+ const err = new Error(wechatChannelConfig.error.notSupported);
+ this.handleError(err, item);
+ reject(err);
+ }
+ });
+ },
+
+ // 统一错误处理
+ handleError(err, item) {
+ console.error('微信视频号错误:', err);
+ const { message = '', errMsg = '微信视频播放失败!', errCode = -1 } = err;
+
+ // 错误码5: 表示用户点击了取消. openChannelsActivity:fail cancel
+ if ([5].includes(errCode)) {
+ return;
+ }
+
+ const showErrorToast = (otherMsgs = []) => {
+ uni.showToast({
+ title: [errMsg, message,...otherMsgs].join('\n'),
+ icon: 'none',
+ duration: 2000
+ });
+ }
+ showErrorToast();
+ }
};
\ No newline at end of file
diff --git a/components/chat-message/chat-message.vue b/components/chat-message/chat-message.vue
index c9b7654..110b227 100644
--- a/components/chat-message/chat-message.vue
+++ b/components/chat-message/chat-message.vue
@@ -1,333 +1,333 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("common.chat-message.l60.t0") }}
-
-
- {{ $lang("common.chat-message.l63.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/hover-nav/hover-nav.vue b/components/hover-nav/hover-nav.vue
index b2b6b31..3749334 100644
--- a/components/hover-nav/hover-nav.vue
+++ b/components/hover-nav/hover-nav.vue
@@ -1,329 +1,329 @@
-
-
-
-
- {{ currentLangDisplayName }}
-
-
-
-
-
-
-
- 🤖
- 💬
- 👤
-
-
-
-
-
- 🤖
- 💬
- 👤
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/l-time/l-time.vue b/components/l-time/l-time.vue
index f0a708c..a2e78fc 100644
--- a/components/l-time/l-time.vue
+++ b/components/l-time/l-time.vue
@@ -37,7 +37,7 @@ export default {
getText() {
let self = this;
let timeVal = _time_.getFormatTime(self.textVal, self.maxDate);
- if (timeVal && (timeVal.endsWith($lang('common.l-time.l40.t0')) || timeVal.endsWith($lang('common.l-time.l40.t1')))) {
+ if (timeVal && (timeVal.endsWith('刚刚') || timeVal.endsWith('分钟前'))) {
setTimeout(() => {
let temp = self.textVal;
self.textVal = '';
diff --git a/components/l-time/time.js b/components/l-time/time.js
index 1b61f6c..76c5f4b 100644
--- a/components/l-time/time.js
+++ b/components/l-time/time.js
@@ -1,161 +1,161 @@
-Function.prototype.asyAfter = function(afterfn) {
- var _self = this;
- return function() {
- var ret = _self.apply(this, arguments);
- if (ret === 'next') {
- return afterfn.apply(this, arguments);
- }
- return ret;
- }
-}
-
-Date.prototype.pattern = function(fmt) {
- var o = {
- "M+": this.getMonth() + 1, //月份
- "d+": this.getDate(), //日
- "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
- "H+": this.getHours(), //小时
- "m+": this.getMinutes(), //分
- "s+": this.getSeconds(), //秒
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
- "S": this.getMilliseconds() //毫秒
- };
- var week = {
- "0": "\u65e5",
- "1": "\u4e00",
- "2": "\u4e8c",
- "3": "\u4e09",
- "4": "\u56db",
- "5": "\u4e94",
- "6": "\u516d"
- };
- if (/(y+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- }
- if (/(E+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") :
- "") +
- week[this.getDay() + ""]);
- }
- for (var k in o) {
- if (new RegExp("(" + k + ")").test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k])
- .length)));
- }
- }
- return fmt;
-}
-
-const isType = type => (/^\[object\s(.*)\]$/.exec(Object.prototype.toString.call(type)))[1];
-let Time = function() {};
-let timeProto = Time.prototype;
-
-//获取当前时间戳
-timeProto.getUnix = function() {
- return new Date().getTime();
-}
-
-//获取当天0点0分0秒时间戳
-timeProto.getTodayUnix = function() {
- let date = new Date();
- let myDate = `${date.getFullYear()}/${(date.getMonth() + 1)}/${date.getDate()} 00:00:00`;
- return new Date(myDate).getTime();
-}
-
-//获取今年1月1日0点0分0秒时间戳
-timeProto.getYearUnix = function() {
- let date = new Date();
- date.setMonth(0);
- date.setDate(1);
- date.setHours(0);
- date.setMinutes(0);
- date.setSeconds(0);
- date.setMilliseconds(0);
- return date.getTime();
-}
-
-//获取当前时间标准年月日
-timeProto.getLastDate = function(constTime) {
- if (!constTime) {
- return;
- }
- let date = new Date(constTime);
- if (date.pattern) {
- return date.pattern("yyyy-MM-dd");
- }
-
- let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
- let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
- return date.getFullYear() + '-' + month + '-' + day;
-}
-
-const resDateStr = function(timer, constTime) {
- let _just = function(timer) {
-
- if (timer <= 0 || Math.floor(timer / 60) <= 0) {
- return $lang("common.l-time.l40.t0")
- } else return 'next';
- }
-
- let _mm = function(timer) {
- if (timer < 3600) {
- return Math.floor(timer / 60) + $lang("common.l-time.l40.t1")
- } else return 'next';
- }
- let _hh = function(timer, constTime) {
- let today = _time_.getTodayUnix();
- if (timer >= 3600 && (constTime - today >= 0)) {
- //可切换显示模式
- // return "今天 " + new Date(constTime).pattern("HH:mm");
- return Math.floor(timer / 60 / 60) + $lang("common.l-time.time.l110.t0");
- } else {
- return 'next'
- };
- }
- let _dd = function(timer, constTime) {
- let today = _time_.getTodayUnix();
- timer = (today - constTime) / 1000;
- if (timer / 86400 <= 31) {
- return Math.ceil(timer / 86400) + $lang("common.l-time.time.l119.t0")
- } else return 'next';
- }
- let _dlast = function(timer, constTime) {
- return _time_.getLastDate(constTime);
- }
-
- let dateFilter = _just.asyAfter(_mm).asyAfter(_hh).asyAfter(_dd).asyAfter(_dlast);
- return dateFilter(timer, constTime);
-}
-
-
-//转换时间
-const reg = new RegExp("-", "g");
-timeProto.getFormatTime = function(constTime, max) {
- if (!constTime) {
- return "";
- }
-
- switch (isType(constTime)) {
- case 'Date':
- constTime = constTime.getTime();
- break;
- case 'String':
- constTime = constTime.replace(reg, "/");
- default:
- constTime = new Date(constTime).getTime();
- break;
- }
-
- let now = this.getUnix();
- let year = this.getYearUnix();
- let timer = (now - constTime) / 1000;
- if (constTime > now && max) {
- return this.getLastDate(constTime);
- }
-
- let _t = this;
- return resDateStr(timer, constTime);
-}
-
-const _time_ = new Time();
-export default _time_;
+Function.prototype.asyAfter = function(afterfn) {
+ var _self = this;
+ return function() {
+ var ret = _self.apply(this, arguments);
+ if (ret === 'next') {
+ return afterfn.apply(this, arguments);
+ }
+ return ret;
+ }
+}
+
+Date.prototype.pattern = function(fmt) {
+ var o = {
+ "M+": this.getMonth() + 1, //月份
+ "d+": this.getDate(), //日
+ "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
+ "H+": this.getHours(), //小时
+ "m+": this.getMinutes(), //分
+ "s+": this.getSeconds(), //秒
+ "q+": Math.floor((this.getMonth() + 3) / 3), //季度
+ "S": this.getMilliseconds() //毫秒
+ };
+ var week = {
+ "0": "\u65e5",
+ "1": "\u4e00",
+ "2": "\u4e8c",
+ "3": "\u4e09",
+ "4": "\u56db",
+ "5": "\u4e94",
+ "6": "\u516d"
+ };
+ if (/(y+)/.test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+ }
+ if (/(E+)/.test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") :
+ "") +
+ week[this.getDay() + ""]);
+ }
+ for (var k in o) {
+ if (new RegExp("(" + k + ")").test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k])
+ .length)));
+ }
+ }
+ return fmt;
+}
+
+const isType = type => (/^\[object\s(.*)\]$/.exec(Object.prototype.toString.call(type)))[1];
+let Time = function() {};
+let timeProto = Time.prototype;
+
+//获取当前时间戳
+timeProto.getUnix = function() {
+ return new Date().getTime();
+}
+
+//获取当天0点0分0秒时间戳
+timeProto.getTodayUnix = function() {
+ let date = new Date();
+ let myDate = `${date.getFullYear()}/${(date.getMonth() + 1)}/${date.getDate()} 00:00:00`;
+ return new Date(myDate).getTime();
+}
+
+//获取今年1月1日0点0分0秒时间戳
+timeProto.getYearUnix = function() {
+ let date = new Date();
+ date.setMonth(0);
+ date.setDate(1);
+ date.setHours(0);
+ date.setMinutes(0);
+ date.setSeconds(0);
+ date.setMilliseconds(0);
+ return date.getTime();
+}
+
+//获取当前时间标准年月日
+timeProto.getLastDate = function(constTime) {
+ if (!constTime) {
+ return;
+ }
+ let date = new Date(constTime);
+ if (date.pattern) {
+ return date.pattern("yyyy-MM-dd");
+ }
+
+ let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
+ let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
+ return date.getFullYear() + '-' + month + '-' + day;
+}
+
+const resDateStr = function(timer, constTime) {
+ let _just = function(timer) {
+
+ if (timer <= 0 || Math.floor(timer / 60) <= 0) {
+ return "刚刚"
+ } else return 'next';
+ }
+
+ let _mm = function(timer) {
+ if (timer < 3600) {
+ return Math.floor(timer / 60) + "分钟前"
+ } else return 'next';
+ }
+ let _hh = function(timer, constTime) {
+ let today = _time_.getTodayUnix();
+ if (timer >= 3600 && (constTime - today >= 0)) {
+ //可切换显示模式
+ // return "今天 " + new Date(constTime).pattern("HH:mm");
+ return Math.floor(timer / 60 / 60) + "小时前";
+ } else {
+ return 'next'
+ };
+ }
+ let _dd = function(timer, constTime) {
+ let today = _time_.getTodayUnix();
+ timer = (today - constTime) / 1000;
+ if (timer / 86400 <= 31) {
+ return Math.ceil(timer / 86400) + "天前"
+ } else return 'next';
+ }
+ let _dlast = function(timer, constTime) {
+ return _time_.getLastDate(constTime);
+ }
+
+ let dateFilter = _just.asyAfter(_mm).asyAfter(_hh).asyAfter(_dd).asyAfter(_dlast);
+ return dateFilter(timer, constTime);
+}
+
+
+//转换时间
+const reg = new RegExp("-", "g");
+timeProto.getFormatTime = function(constTime, max) {
+ if (!constTime) {
+ return "";
+ }
+
+ switch (isType(constTime)) {
+ case 'Date':
+ constTime = constTime.getTime();
+ break;
+ case 'String':
+ constTime = constTime.replace(reg, "/");
+ default:
+ constTime = new Date(constTime).getTime();
+ break;
+ }
+
+ let now = this.getUnix();
+ let year = this.getYearUnix();
+ let timer = (now - constTime) / 1000;
+ if (constTime > now && max) {
+ return this.getLastDate(constTime);
+ }
+
+ let _t = this;
+ return resDateStr(timer, constTime);
+}
+
+const _time_ = new Time();
+export default _time_;
diff --git a/components/mescroll/mescroll-uni-option.js b/components/mescroll/mescroll-uni-option.js
index f14a324..a701ad1 100644
--- a/components/mescroll/mescroll-uni-option.js
+++ b/components/mescroll/mescroll-uni-option.js
@@ -3,15 +3,15 @@
const GlobalOption = {
down: {
// 其他down的配置参数也可以写,这里只展示了常用的配置:
- textInOffset: $lang('common.mescroll.mescroll-uni-option.l6.t0'), // 下拉的距离在offset范围内的提示文本
- textOutOffset: $lang('common.mescroll.mescroll-uni-option.l7.t0'), // 下拉的距离大于offset范围的提示文本
- textLoading: $lang('common.mescroll.mescroll-uni-option.l8.t0'), // 加载中的提示文本
+ textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本
+ textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本
+ textLoading: '加载中 ...', // 加载中的提示文本
offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调
native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
},
up: {
// 其他up的配置参数也可以写,这里只展示了常用的配置:
- textLoading: $lang('common.mescroll.mescroll-uni-option.l8.t0'), // 加载中的提示文本
+ textLoading: '加载中 ...', // 加载中的提示文本
textNoMore: '', // 没有更多数据的提示文本
// textNoMore: '— 我是有底线的 —', // 没有更多数据的提示文本
offset: 80, // 距底部多远时,触发upCallback
@@ -27,7 +27,7 @@ const GlobalOption = {
empty: {
use: true, // 是否显示空布局
icon: "https://www.mescroll.com/img/mescroll-empty.png?v=1", // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png )
- tip: $lang('common.mescroll.mescroll-uni-option.l30.t0') // 提示
+ tip: '~ 暂无相关数据 ~' // 提示
}
}
}
diff --git a/components/mescroll/mescroll-uni.js b/components/mescroll/mescroll-uni.js
index adf2063..1b2eb9d 100644
--- a/components/mescroll/mescroll-uni.js
+++ b/components/mescroll/mescroll-uni.js
@@ -1,841 +1,841 @@
-/* mescroll
- * version 1.2.3
- * 2020-02-18 wenju
- * http://www.mescroll.com
- */
-
-export default function MeScroll(options, isScrollBody) {
- let me = this;
- me.version = '1.2.3'; // mescroll版本号
- me.options = options || {}; // 配置
- me.isScrollBody = isScrollBody || false; // 滚动区域是否为原生页面滚动; 默认为scroll-view
-
- me.isDownScrolling = false; // 是否在执行下拉刷新的回调
- me.isUpScrolling = false; // 是否在执行上拉加载的回调
- let hasDownCallback = me.options.down && me.options.down.callback; // 是否配置了down的callback
-
- // 初始化下拉刷新
- me.initDownScroll();
- // 初始化上拉加载,则初始化
- me.initUpScroll();
-
- // 自动加载
- setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
- // 自动触发下拉刷新 (只有配置了down的callback才自动触发下拉刷新)
- if (me.optDown.use && me.optDown.auto && hasDownCallback) {
- if (me.optDown.autoShowLoading) {
- me.triggerDownScroll(); // 显示下拉进度,执行下拉回调
- } else {
- me.optDown.callback && me.optDown.callback(me); // 不显示下拉进度,直接执行下拉回调
- }
- }
- // 自动触发上拉加载
- setTimeout(function() { // 延时确保先执行down的callback,再执行up的callback,因为部分小程序emit是异步,会导致isUpAutoLoad判断有误
- me.optUp.use && me.optUp.auto && !me.isUpAutoLoad && me.triggerUpScroll();
- }, 100)
- }, 30); // 需让me.optDown.inited和me.optUp.inited先执行
-}
-
-/* 配置参数:下拉刷新 */
-MeScroll.prototype.extendDownScroll = function(optDown) {
- // 下拉刷新的配置
- MeScroll.extend(optDown, {
- use: true, // 是否启用下拉刷新; 默认true
- auto: true, // 是否在初始化完毕之后自动执行下拉刷新的回调; 默认true
- native: false, // 是否使用系统自带的下拉刷新; 默认false; 仅mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
- autoShowLoading: false, // 如果设置auto=true(在初始化完毕之后自动执行下拉刷新的回调),那么是否显示下拉刷新的进度; 默认false
- isLock: false, // 是否锁定下拉刷新,默认false;
- offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调
- startTop: 100, // scroll-view滚动到顶部时,此时的scroll-top不一定为0, 此值用于控制最大的误差
- fps: 80, // 下拉节流 (值越大每秒刷新频率越高)
- inOffsetRate: 1, // 在列表顶部,下拉的距离小于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉
- outOffsetRate: 0.2, // 在列表顶部,下拉的距离大于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉
- bottomOffset: 20, // 当手指touchmove位置在距离body底部20px范围内的时候结束上拉刷新,避免Webview嵌套导致touchend事件不执行
- minAngle: 45, // 向下滑动最少偏移的角度,取值区间 [0,90];默认45度,即向下滑动的角度大于45度则触发下拉;而小于45度,将不触发下拉,避免与左右滑动的轮播等组件冲突;
- textInOffset: $lang('common.mescroll.mescroll-uni-option.l6.t0'), // 下拉的距离在offset范围内的提示文本
- textOutOffset: $lang('common.mescroll.mescroll-uni-option.l7.t0'), // 下拉的距离大于offset范围的提示文本
- textLoading: $lang('common.mescroll.mescroll-uni-option.l8.t0'), // 加载中的提示文本
- inited: null, // 下拉刷新初始化完毕的回调
- inOffset: null, // 下拉的距离进入offset范围内那一刻的回调
- outOffset: null, // 下拉的距离大于offset那一刻的回调
- onMoving: null, // 下拉过程中的回调,滑动过程一直在执行; rate下拉区域当前高度与指定距离的比值(inOffset: rate<1; outOffset: rate>=1); downHight当前下拉区域的高度
- beforeLoading: null, // 准备触发下拉刷新的回调: 如果return true,将不触发showLoading和callback回调; 常用来完全自定义下拉刷新, 参考案例【淘宝 v6.8.0】
- showLoading: null, // 显示下拉刷新进度的回调
- afterLoading: null, // 准备结束下拉的回调. 返回结束下拉的延时执行时间,默认0ms; 常用于结束下拉之前再显示另外一小段动画,才去隐藏下拉刷新的场景, 参考案例【dotJump】
- endDownScroll: null, // 结束下拉刷新的回调
- callback: function(mescroll) {
- // 下拉刷新的回调;默认重置上拉加载列表为第一页
- mescroll.resetUpScroll();
- }
- })
-}
-
-/* 配置参数:上拉加载 */
-MeScroll.prototype.extendUpScroll = function(optUp) {
- // 上拉加载的配置
- MeScroll.extend(optUp, {
- use: true, // 是否启用上拉加载; 默认true
- auto: true, // 是否在初始化完毕之后自动执行上拉加载的回调; 默认true
- isLock: false, // 是否锁定上拉加载,默认false;
- isBoth: true, // 上拉加载时,如果滑动到列表顶部是否可以同时触发下拉刷新;默认true,两者可同时触发;
- isBounce: false, // 默认禁止橡皮筋的回弹效果, 必读事项: http://www.mescroll.com/qa.html?v=190725#q25
- callback: null, // 上拉加载的回调;function(page,mescroll){ }
- page: {
- num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
- size: 10, // 每页数据的数量
- time: null // 加载第一页数据服务器返回的时间; 防止用户翻页时,后台新增了数据从而导致下一页数据重复;
- },
- noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看
- offset: 80, // 距底部多远时,触发upCallback
- textLoading: $lang('common.mescroll.mescroll-uni-option.l8.t0'), // 加载中的提示文本
- textNoMore: '-- END --', // 没有更多数据的提示文本
- inited: null, // 初始化完毕的回调
- showLoading: null, // 显示加载中的回调
- showNoMore: null, // 显示无更多数据的回调
- hideUpScroll: null, // 隐藏上拉加载的回调
- errDistance: 60, // endErr的时候需往上滑动一段距离,使其往下滑动时再次触发onReachBottom,仅mescroll-body生效
- toTop: {
- // 回到顶部按钮,需配置src才显示
- src: null, // 图片路径,默认null (绝对路径或网络图)
- offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000
- duration: 300, // 回到顶部的动画时长,默认300ms (当值为0或300则使用系统自带回到顶部,更流畅; 其他值则通过step模拟,部分机型可能不够流畅,所以非特殊情况不建议修改此项)
- btnClick: null, // 点击按钮的回调
- onShow: null, // 是否显示的回调
- zIndex: 9990, // fixed定位z-index值
- left: null, // 到左边的距离, 默认null. 此项有值时,right不生效. (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
- right: 20, // 到右边的距离, 默认20 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
- bottom: 120, // 到底部的距离, 默认120 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
- safearea: false, // bottom的偏移量是否加上底部安全区的距离, 默认false, 需要适配iPhoneX时使用 (具体的界面如果不配置此项,则取本vue的safearea值)
- width: 72, // 回到顶部图标的宽度, 默认72 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
- radius: "50%" // 圆角, 默认"50%" (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
- },
- empty: {
- use: true, // 是否显示空布局
- icon: null, // 图标路径
- tip: $lang('common.mescroll.mescroll-uni-option.l30.t0'), // 提示
- btnText: '', // 按钮
- btnClick: null, // 点击按钮的回调
- onShow: null, // 是否显示的回调
- fixed: false, // 是否使用fixed定位,默认false; 配置fixed为true,以下的top和zIndex才生效 (transform会使fixed失效,最终会降级为absolute)
- top: "100rpx", // fixed定位的top值 (完整的单位值,如 "10%"; "100rpx")
- zIndex: 99 // fixed定位z-index值
- },
- onScroll: false // 是否监听滚动事件
- })
-}
-
-/* 配置参数 */
-MeScroll.extend = function(userOption, defaultOption) {
- if (!userOption) return defaultOption;
- for (let key in defaultOption) {
- if (userOption[key] == null) {
- let def = defaultOption[key];
- if (def != null && typeof def === 'object') {
- userOption[key] = MeScroll.extend({}, def); // 深度匹配
- } else {
- userOption[key] = def;
- }
- } else if (typeof userOption[key] === 'object') {
- MeScroll.extend(userOption[key], defaultOption[key]); // 深度匹配
- }
- }
- return userOption;
-}
-
-/* -------初始化下拉刷新------- */
-MeScroll.prototype.initDownScroll = function() {
- let me = this;
- // 配置参数
- me.optDown = me.options.down || {};
- me.extendDownScroll(me.optDown);
-
- // 如果是mescroll-body且配置了native,则禁止自定义的下拉刷新
- if (me.isScrollBody && me.optDown.native) {
- me.optDown.use = false
- } else {
- me.optDown.native = false // 仅mescroll-body支持,mescroll-uni不支持
- }
-
- me.downHight = 0; // 下拉区域的高度
-
- // 在页面中加入下拉布局
- if (me.optDown.use && me.optDown.inited) {
- // 初始化完毕的回调
- setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
- me.optDown.inited(me);
- }, 0)
- }
-}
-
-/* 列表touchstart事件 */
-MeScroll.prototype.touchstartEvent = function(e) {
- if (!this.optDown.use) return;
-
- this.startPoint = this.getPoint(e); // 记录起点
- this.startTop = this.getScrollTop(); // 记录此时的滚动条位置
- this.lastPoint = this.startPoint; // 重置上次move的点
- this.maxTouchmoveY = this.getBodyHeight() - this.optDown.bottomOffset; // 手指触摸的最大范围(写在touchstart避免body获取高度为0的情况)
- this.inTouchend = false; // 标记不是touchend
-}
-
-/* 列表touchmove事件 */
-MeScroll.prototype.touchmoveEvent = function(e) {
- if (!this.optDown.use) return;
- if (!this.startPoint) return;
- let me = this;
-
- // 节流
- let t = new Date().getTime();
- if (me.moveTime && t - me.moveTime < me.moveTimeDiff) { // 小于节流时间,则不处理
- return;
- } else {
- me.moveTime = t
- if (!me.moveTimeDiff) me.moveTimeDiff = 1000 / me.optDown.fps
- }
-
- let scrollTop = me.getScrollTop(); // 当前滚动条的距离
- let curPoint = me.getPoint(e); // 当前点
-
- let moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
-
- // 向下拉 && 在顶部
- // mescroll-body,直接判定在顶部即可
- // scroll-view在滚动时不会触发touchmove,当触顶/底/左/右时,才会触发touchmove
- // scroll-view滚动到顶部时,scrollTop不一定为0; 在iOS的APP中scrollTop可能为负数,不一定和startTop相等
- if (moveY > 0 && (
- (me.isScrollBody && scrollTop <= 0) ||
- (!me.isScrollBody && (scrollTop <= 0 || (scrollTop <= me.optDown.startTop && scrollTop === me.startTop)))
- )) {
- // 可下拉的条件
- if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling &&
- me.optUp.isBoth))) {
-
- // 下拉的角度是否在配置的范围内
- let angle = me.getAngle(me.lastPoint, curPoint); // 两点之间的角度,区间 [0,90]
- if (angle < me.optDown.minAngle) return; // 如果小于配置的角度,则不往下执行下拉刷新
-
- // 如果手指的位置超过配置的距离,则提前结束下拉,避免Webview嵌套导致touchend无法触发
- if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) {
- me.inTouchend = true; // 标记执行touchend
- me.touchendEvent(); // 提前触发touchend
- return;
- }
-
- me.preventDefault(e); // 阻止默认事件
-
- let diff = curPoint.y - me.lastPoint.y; // 和上次比,移动的距离 (大于0向下,小于0向上)
-
- // 下拉距离 < 指定距离
- if (me.downHight < me.optDown.offset) {
- if (me.movetype !== 1) {
- me.movetype = 1; // 加入标记,保证只执行一次
- me.optDown.inOffset && me.optDown.inOffset(me); // 进入指定距离范围内那一刻的回调,只执行一次
- me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来
- }
- me.downHight += diff * me.optDown.inOffsetRate; // 越往下,高度变化越小
-
- // 指定距离 <= 下拉距离
- } else {
- if (me.movetype !== 2) {
- me.movetype = 2; // 加入标记,保证只执行一次
- me.optDown.outOffset && me.optDown.outOffset(me); // 下拉超过指定距离那一刻的回调,只执行一次
- me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来
- }
- if (diff > 0) { // 向下拉
- me.downHight += Math.round(diff * me.optDown.outOffsetRate); // 越往下,高度变化越小
- } else { // 向上收
- me.downHight += diff; // 向上收回高度,则向上滑多少收多少高度
- }
- }
-
- let rate = me.downHight / me.optDown.offset; // 下拉区域当前高度与指定距离的比值
- me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight); // 下拉过程中的回调,一直在执行
- }
- }
-
- me.lastPoint = curPoint; // 记录本次移动的点
-}
-
-/* 列表touchend事件 */
-MeScroll.prototype.touchendEvent = function(e) {
- if (!this.optDown.use) return;
- // 如果下拉区域高度已改变,则需重置回来
- if (this.isMoveDown) {
- if (this.downHight >= this.optDown.offset) {
- // 符合触发刷新的条件
- this.triggerDownScroll();
- } else {
- // 不符合的话 则重置
- this.downHight = 0;
- this.optDown.endDownScroll && this.optDown.endDownScroll(this);
- }
- this.movetype = 0;
- this.isMoveDown = false;
- } else if (!this.isScrollBody && this.getScrollTop() === this.startTop) { // scroll-view到顶/左/右/底的滑动事件
- let isScrollUp = this.getPoint(e).y - this.startPoint.y < 0; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
- // 上滑
- if (isScrollUp) {
- // 需检查滑动的角度
- let angle = this.getAngle(this.getPoint(e), this.startPoint); // 两点之间的角度,区间 [0,90]
- if (angle > 80) {
- // 检查并触发上拉
- this.triggerUpScroll(true);
- }
- }
- }
-}
-
-/* 根据点击滑动事件获取第一个手指的坐标 */
-MeScroll.prototype.getPoint = function(e) {
- if (!e) {
- return {
- x: 0,
- y: 0
- }
- }
- if (e.touches && e.touches[0]) {
- return {
- x: e.touches[0].pageX,
- y: e.touches[0].pageY
- }
- } else if (e.changedTouches && e.changedTouches[0]) {
- return {
- x: e.changedTouches[0].pageX,
- y: e.changedTouches[0].pageY
- }
- } else {
- return {
- x: e.clientX,
- y: e.clientY
- }
- }
-}
-
-/* 计算两点之间的角度: 区间 [0,90]*/
-MeScroll.prototype.getAngle = function(p1, p2) {
- let x = Math.abs(p1.x - p2.x);
- let y = Math.abs(p1.y - p2.y);
- let z = Math.sqrt(x * x + y * y);
- let angle = 0;
- if (z !== 0) {
- angle = Math.asin(y / z) / Math.PI * 180;
- }
- return angle
-}
-
-/* 触发下拉刷新 */
-MeScroll.prototype.triggerDownScroll = function() {
- if (this.optDown.beforeLoading && this.optDown.beforeLoading(this)) {
- //return true则处于完全自定义状态
- } else {
- this.showDownScroll(); // 下拉刷新中...
- this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据
- }
-}
-
-/* 显示下拉进度布局 */
-MeScroll.prototype.showDownScroll = function() {
- this.isDownScrolling = true; // 标记下拉中
- if (this.optDown.native) {
- uni.startPullDownRefresh(); // 系统自带的下拉刷新
- this.optDown.showLoading && this.optDown.showLoading(this, 0); // 仍触发showLoading,因为上拉加载用到
- } else {
- this.downHight = this.optDown.offset; // 更新下拉区域高度
- this.optDown.showLoading && this.optDown.showLoading(this, this.downHight); // 下拉刷新中...
- }
-}
-
-/* 显示系统自带的下拉刷新时需要处理的业务 */
-MeScroll.prototype.onPullDownRefresh = function() {
- this.isDownScrolling = true; // 标记下拉中
- this.optDown.showLoading && this.optDown.showLoading(this, 0); // 仍触发showLoading,因为上拉加载用到
- this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据
-}
-
-/* 结束下拉刷新 */
-MeScroll.prototype.endDownScroll = function() {
- if (this.optDown.native) { // 结束原生下拉刷新
- this.isDownScrolling = false;
- this.optDown.endDownScroll && this.optDown.endDownScroll(this);
- uni.stopPullDownRefresh();
- return
- }
- let me = this;
- // 结束下拉刷新的方法
- let endScroll = function() {
- me.downHight = 0;
- me.isDownScrolling = false;
- me.optDown.endDownScroll && me.optDown.endDownScroll(me);
- !me.isScrollBody && me.setScrollHeight(0) // scroll-view重置滚动区域,使数据不满屏时仍可检查触发翻页
- }
- // 结束下拉刷新时的回调
- let delay = 0;
- if (me.optDown.afterLoading) delay = me.optDown.afterLoading(me); // 结束下拉刷新的延时,单位ms
- if (typeof delay === 'number' && delay > 0) {
- setTimeout(endScroll, delay);
- } else {
- endScroll();
- }
-}
-
-/* 锁定下拉刷新:isLock=ture,null锁定;isLock=false解锁 */
-MeScroll.prototype.lockDownScroll = function(isLock) {
- if (isLock == null) isLock = true;
- this.optDown.isLock = isLock;
-}
-
-/* 锁定上拉加载:isLock=ture,null锁定;isLock=false解锁 */
-MeScroll.prototype.lockUpScroll = function(isLock) {
- if (isLock == null) isLock = true;
- this.optUp.isLock = isLock;
-}
-
-/* -------初始化上拉加载------- */
-MeScroll.prototype.initUpScroll = function() {
- let me = this;
- // 配置参数
- me.optUp = me.options.up || {
- use: false
- };
- me.extendUpScroll(me.optUp);
-
- if (!me.optUp.isBounce) me.setBounce(false); // 不允许bounce时,需禁止window的touchmove事件
-
- if (me.optUp.use === false) return; // 配置不使用上拉加载时,则不初始化上拉布局
- me.optUp.hasNext = true; // 如果使用上拉,则默认有下一页
- me.startNum = me.optUp.page.num + 1; // 记录page开始的页码
-
- // 初始化完毕的回调
- if (me.optUp.inited) {
- setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
- me.optUp.inited(me);
- }, 0)
- }
-}
-
-/*滚动到底部的事件 (仅mescroll-body生效)*/
-MeScroll.prototype.onReachBottom = function() {
- if (this.isScrollBody && !this.isUpScrolling) { // 只能支持下拉刷新的时候同时可以触发上拉加载,否则滚动到底部就需要上滑一点才能触发onReachBottom
- if (!this.optUp.isLock && this.optUp.hasNext) {
- this.triggerUpScroll();
- }
- }
-}
-
-/*列表滚动事件 (仅mescroll-body生效)*/
-MeScroll.prototype.onPageScroll = function(e) {
- if (!this.isScrollBody) return;
-
- // 更新滚动条的位置 (主要用于判断下拉刷新时,滚动条是否在顶部)
- this.setScrollTop(e.scrollTop);
-
- // 顶部按钮的显示隐藏
- if (e.scrollTop >= this.optUp.toTop.offset) {
- this.showTopBtn();
- } else {
- this.hideTopBtn();
- }
-}
-
-/*列表滚动事件*/
-MeScroll.prototype.scroll = function(e, onScroll) {
- // 更新滚动条的位置
- this.setScrollTop(e.scrollTop);
- // 更新滚动内容高度
- this.setScrollHeight(e.scrollHeight);
-
- // 向上滑还是向下滑动
- if (this.preScrollY == null) this.preScrollY = 0;
- this.isScrollUp = e.scrollTop - this.preScrollY > 0;
- this.preScrollY = e.scrollTop;
-
- // 上滑 && 检查并触发上拉
- this.isScrollUp && this.triggerUpScroll(true);
-
- // 顶部按钮的显示隐藏
- if (e.scrollTop >= this.optUp.toTop.offset) {
- this.showTopBtn();
- } else {
- this.hideTopBtn();
- }
-
- // 滑动监听
- this.optUp.onScroll && onScroll && onScroll()
-}
-
-/* 触发上拉加载 */
-MeScroll.prototype.triggerUpScroll = function(isCheck) {
- if (!this.isUpScrolling && this.optUp.use && this.optUp.callback) {
- // 是否校验在底部; 默认不校验
- if (isCheck === true) {
- let canUp = false;
- // 还有下一页 && 没有锁定 && 不在下拉中
- if (this.optUp.hasNext && !this.optUp.isLock && !this.isDownScrolling) {
- if (this.getScrollBottom() <= this.optUp.offset) { // 到底部
- canUp = true; // 标记可上拉
- }
- }
- if (canUp === false) return;
- }
- this.showUpScroll(); // 上拉加载中...
- this.optUp.page.num++; // 预先加一页,如果失败则减回
- this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调
- this.num = this.optUp.page.num; // 把最新的页数赋值在mescroll上,避免对page的影响
- this.size = this.optUp.page.size; // 把最新的页码赋值在mescroll上,避免对page的影响
- this.time = this.optUp.page.time; // 把最新的页码赋值在mescroll上,避免对page的影响
- this.optUp.callback(this); // 执行回调,联网加载数据
- }
-}
-
-/* 显示上拉加载中 */
-MeScroll.prototype.showUpScroll = function() {
- this.isUpScrolling = true; // 标记上拉加载中
- this.optUp.showLoading && this.optUp.showLoading(this); // 回调
-}
-
-/* 显示上拉无更多数据 */
-MeScroll.prototype.showNoMore = function() {
- this.optUp.hasNext = false; // 标记无更多数据
- this.optUp.showNoMore && this.optUp.showNoMore(this); // 回调
-}
-
-/* 隐藏上拉区域**/
-MeScroll.prototype.hideUpScroll = function() {
- this.optUp.hideUpScroll && this.optUp.hideUpScroll(this); // 回调
-}
-
-/* 结束上拉加载 */
-MeScroll.prototype.endUpScroll = function(isShowNoMore) {
- if (isShowNoMore != null) { // isShowNoMore=null,不处理下拉状态,下拉刷新的时候调用
- if (isShowNoMore) {
- this.showNoMore(); // isShowNoMore=true,显示无更多数据
- } else {
- this.hideUpScroll(); // isShowNoMore=false,隐藏上拉加载
- }
- }
- this.isUpScrolling = false; // 标记结束上拉加载
-}
-
-/* 重置上拉加载列表为第一页
- *isShowLoading 是否显示进度布局;
- * 1.默认null,不传参,则显示上拉加载的进度布局
- * 2.传参true, 则显示下拉刷新的进度布局
- * 3.传参false,则不显示上拉和下拉的进度 (常用于静默更新列表数据)
- */
-MeScroll.prototype.resetUpScroll = function(isShowLoading) {
- if (this.optUp && this.optUp.use) {
- let page = this.optUp.page;
- this.prePageNum = page.num; // 缓存重置前的页码,加载失败可退回
- this.prePageTime = page.time; // 缓存重置前的时间,加载失败可退回
- page.num = this.startNum; // 重置为第一页
- page.time = null; // 重置时间为空
- if (!this.isDownScrolling && isShowLoading !== false) { // 如果不是下拉刷新触发的resetUpScroll并且不配置列表静默更新,则显示进度;
- if (isShowLoading == null) {
- this.removeEmpty(); // 移除空布局
- this.showUpScroll(); // 不传参,默认显示上拉加载的进度布局
- } else {
- this.showDownScroll(); // 传true,显示下拉刷新的进度布局,不清空列表
- }
- }
- this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调
- this.num = page.num; // 把最新的页数赋值在mescroll上,避免对page的影响
- this.size = page.size; // 把最新的页码赋值在mescroll上,避免对page的影响
- this.time = page.time; // 把最新的页码赋值在mescroll上,避免对page的影响
- this.optUp.callback && this.optUp.callback(this); // 执行上拉回调
- }
-}
-
-/* 设置page.num的值 */
-MeScroll.prototype.setPageNum = function(num) {
- this.optUp.page.num = num - 1;
-}
-
-/* 设置page.size的值 */
-MeScroll.prototype.setPageSize = function(size) {
- this.optUp.page.size = size;
-}
-
-/* 联网回调成功,结束下拉刷新和上拉加载
- * dataSize: 当前页的数据量(必传)
- * totalPage: 总页数(必传)
- * systime: 服务器时间 (可空)
- */
-MeScroll.prototype.endByPage = function(dataSize, totalPage, systime) {
- let hasNext;
- if (this.optUp.use && totalPage != null) hasNext = this.optUp.page.num < totalPage; // 是否还有下一页
- this.endSuccess(dataSize, hasNext, systime);
-}
-
-/* 联网回调成功,结束下拉刷新和上拉加载
- * dataSize: 当前页的数据量(必传)
- * totalSize: 列表所有数据总数量(必传)
- * systime: 服务器时间 (可空)
- */
-MeScroll.prototype.endBySize = function(dataSize, totalSize, systime) {
- let hasNext;
- if (this.optUp.use && totalSize != null) {
- let loadSize = (this.optUp.page.num - 1) * this.optUp.page.size + dataSize; // 已加载的数据总数
- hasNext = loadSize < totalSize; // 是否还有下一页
- }
- this.endSuccess(dataSize, hasNext, systime);
-}
-
-/* 联网回调成功,结束下拉刷新和上拉加载
- * dataSize: 当前页的数据个数(不是所有页的数据总和),用于上拉加载判断是否还有下一页.如果不传,则会判断还有下一页
- * hasNext: 是否还有下一页,布尔类型;用来解决这个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据dataSize判断,则需翻到第三页才会知道无更多数据,如果传了hasNext,则翻到第二页即可显示无更多数据.
- * systime: 服务器时间(可空);用来解决这个小问题:当准备翻下一页时,数据库新增了几条记录,此时翻下一页,前面的几条数据会和上一页的重复;这里传入了systime,那么upCallback的page.time就会有值,把page.time传给服务器,让后台过滤新加入的那几条记录
- */
-MeScroll.prototype.endSuccess = function(dataSize, hasNext, systime) {
- let me = this;
- // 结束下拉刷新
- if (me.isDownScrolling) me.endDownScroll();
-
- // 结束上拉加载
- if (me.optUp.use) {
- let isShowNoMore; // 是否已无更多数据
- if (dataSize != null) {
- let pageNum = me.optUp.page.num; // 当前页码
- let pageSize = me.optUp.page.size; // 每页长度
- // 如果是第一页
- if (pageNum === 1) {
- if (systime) me.optUp.page.time = systime; // 设置加载列表数据第一页的时间
- }
- if (dataSize < pageSize || hasNext === false) {
- // 返回的数据不满一页时,则说明已无更多数据
- me.optUp.hasNext = false;
- if (dataSize === 0 && pageNum === 1) {
- // 如果第一页无任何数据且配置了空布局
- isShowNoMore = false;
- me.showEmpty();
- } else {
- // 总列表数少于配置的数量,则不显示无更多数据
- let allDataSize = (pageNum - 1) * pageSize + dataSize;
- if (allDataSize < me.optUp.noMoreSize) {
- isShowNoMore = false;
- } else {
- isShowNoMore = true;
- }
- me.removeEmpty(); // 移除空布局
- }
- } else {
- // 还有下一页
- isShowNoMore = false;
- me.optUp.hasNext = true;
- me.removeEmpty(); // 移除空布局
- }
- }
-
- // 隐藏上拉
- me.endUpScroll(isShowNoMore);
- }
-}
-
-/* 回调失败,结束下拉刷新和上拉加载 */
-MeScroll.prototype.endErr = function(errDistance) {
- // 结束下拉,回调失败重置回原来的页码和时间
- if (this.isDownScrolling) {
- let page = this.optUp.page;
- if (page && this.prePageNum) {
- page.num = this.prePageNum;
- page.time = this.prePageTime;
- }
- this.endDownScroll();
- }
- // 结束上拉,回调失败重置回原来的页码
- if (this.isUpScrolling) {
- this.optUp.page.num--;
- this.endUpScroll(false);
- // 如果是mescroll-body,则需往回滚一定距离
- if (this.isScrollBody && errDistance !== 0) { // 不处理0
- if (!errDistance) errDistance = this.optUp.errDistance; // 不传,则取默认
- this.scrollTo(this.getScrollTop() - errDistance, 0) // 往上回滚的距离
- }
- }
-}
-
-/* 显示空布局 */
-MeScroll.prototype.showEmpty = function() {
- this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(true)
-}
-
-/* 移除空布局 */
-MeScroll.prototype.removeEmpty = function() {
- this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(false)
-}
-
-/* 显示回到顶部的按钮 */
-MeScroll.prototype.showTopBtn = function() {
- if (!this.topBtnShow) {
- this.topBtnShow = true;
- this.optUp.toTop.onShow && this.optUp.toTop.onShow(true);
- }
-}
-
-/* 隐藏回到顶部的按钮 */
-MeScroll.prototype.hideTopBtn = function() {
- if (this.topBtnShow) {
- this.topBtnShow = false;
- this.optUp.toTop.onShow && this.optUp.toTop.onShow(false);
- }
-}
-
-/* 获取滚动条的位置 */
-MeScroll.prototype.getScrollTop = function() {
- return this.scrollTop || 0
-}
-
-/* 记录滚动条的位置 */
-MeScroll.prototype.setScrollTop = function(y) {
- this.scrollTop = y;
-}
-
-/* 滚动到指定位置 */
-MeScroll.prototype.scrollTo = function(y, t) {
- this.myScrollTo && this.myScrollTo(y, t) // scrollview需自定义回到顶部方法
-}
-
-/* 自定义scrollTo */
-MeScroll.prototype.resetScrollTo = function(myScrollTo) {
- this.myScrollTo = myScrollTo
-}
-
-/* 滚动条到底部的距离 */
-MeScroll.prototype.getScrollBottom = function() {
- return this.getScrollHeight() - this.getClientHeight() - this.getScrollTop()
-}
-
-/* 计步器
- star: 开始值
- end: 结束值
- callback(step,timer): 回调step值,计步器timer,可自行通过window.clearInterval(timer)结束计步器;
- t: 计步时长,传0则直接回调end值;不传则默认300ms
- rate: 周期;不传则默认30ms计步一次
- * */
-MeScroll.prototype.getStep = function(star, end, callback, t, rate) {
- let diff = end - star; // 差值
- if (t === 0 || diff === 0) {
- callback && callback(end);
- return;
- }
- t = t || 300; // 时长 300ms
- rate = rate || 30; // 周期 30ms
- let count = t / rate; // 次数
- let step = diff / count; // 步长
- let i = 0; // 计数
- let timer = setInterval(function() {
- if (i < count - 1) {
- star += step;
- callback && callback(star, timer);
- i++;
- } else {
- callback && callback(end, timer); // 最后一次直接设置end,避免计算误差
- clearInterval(timer);
- }
- }, rate);
-}
-
-/* 滚动容器的高度 */
-MeScroll.prototype.getClientHeight = function(isReal) {
- let h = this.clientHeight || 0
- if (h === 0 && isReal !== true) { // 未获取到容器的高度,可临时取body的高度 (可能会有误差)
- h = this.getBodyHeight()
- }
- return h
-}
-MeScroll.prototype.setClientHeight = function(h) {
- this.clientHeight = h;
-}
-
-/* 滚动内容的高度 */
-MeScroll.prototype.getScrollHeight = function() {
- return this.scrollHeight || 0;
-}
-MeScroll.prototype.setScrollHeight = function(h) {
- this.scrollHeight = h;
-}
-
-/* body的高度 */
-MeScroll.prototype.getBodyHeight = function() {
- return this.bodyHeight || 0;
-}
-MeScroll.prototype.setBodyHeight = function(h) {
- this.bodyHeight = h;
-}
-
-/* 阻止浏览器默认滚动事件 */
-MeScroll.prototype.preventDefault = function(e) {
- // 小程序不支持e.preventDefault
- // app的bounce只能通过配置pages.json的style.app-plus.bounce为"none"来禁止
- // cancelable:是否可以被禁用; defaultPrevented:是否已经被禁用
- if (e && e.cancelable && !e.defaultPrevented) e.preventDefault()
-}
-
-/* 是否允许下拉回弹(橡皮筋效果); true或null为允许; false禁止bounce */
-MeScroll.prototype.setBounce = function(isBounce) {
- // #ifdef H5
- if (isBounce === false) {
- this.optUp.isBounce = false; // 禁止
- // 标记当前页使用了mescroll (需延时,确保page已切换)
- setTimeout(function() {
- let uniPageDom = document.getElementsByTagName('uni-page')[0];
- uniPageDom && uniPageDom.setAttribute('use_mescroll', true)
- }, 30);
- // 避免重复添加事件
- if (window.isSetBounce) return;
- window.isSetBounce = true;
- // 需禁止window的touchmove事件才能有效的阻止bounce
- window.bounceTouchmove = function(e) {
- let el = e.target;
- // 当前touch的元素及父元素是否要拦截touchmove事件
- let isPrevent = true;
- while (el !== document.body && el !== document) {
- if (el.tagName === 'UNI-PAGE') { // 只扫描当前页
- if (!el.getAttribute('use_mescroll')) {
- isPrevent = false; // 如果当前页没有使用mescroll,则不阻止
- }
- break;
- }
- let cls = el.classList;
- if (cls) {
- if (cls.contains('mescroll-touch')) { // 采用scroll-view 此处不能过滤mescroll-uni,否则下拉仍然有回弹
- isPrevent = false; // mescroll-touch无需拦截touchmove事件
- break;
- } else if (cls.contains('mescroll-touch-x') || cls.contains('mescroll-touch-y')) {
- // 如果配置了水平或者垂直滑动
- let curX = e.touches ? e.touches[0].pageX : e.clientX; // 当前第一个手指距离列表顶部的距离x
- let curY = e.touches ? e.touches[0].pageY : e.clientY; // 当前第一个手指距离列表顶部的距离y
- if (!this.preWinX) this.preWinX = curX; // 设置上次移动的距离x
- if (!this.preWinY) this.preWinY = curY; // 设置上次移动的距离y
- // 计算两点之间的角度
- let x = Math.abs(this.preWinX - curX);
- let y = Math.abs(this.preWinY - curY);
- let z = Math.sqrt(x * x + y * y);
- this.preWinX = curX; // 记录本次curX的值
- this.preWinY = curY; // 记录本次curY的值
- if (z !== 0) {
- let angle = Math.asin(y / z) / Math.PI * 180; // 角度区间 [0,90]
- if ((angle <= 45 && cls.contains('mescroll-touch-x')) || (angle > 45 && cls.contains('mescroll-touch-y'))) {
- isPrevent = false; // 水平滑动或者垂直滑动,不拦截touchmove事件
- break;
- }
- }
- }
- }
- el = el.parentNode; // 继续检查其父元素
- }
- // 拦截touchmove事件:是否可以被禁用&&是否已经被禁用 (这里不使用me.preventDefault(e)的方法,因为某些情况下会报找不到方法的异常)
- if (isPrevent && e.cancelable && !e.defaultPrevented && typeof e.preventDefault === "function") e.preventDefault();
- }
- window.addEventListener('touchmove', window.bounceTouchmove, {
- passive: false
- });
- } else {
- this.optUp.isBounce = true; // 允许
- if (window.bounceTouchmove) {
- window.removeEventListener('touchmove', window.bounceTouchmove);
- window.bounceTouchmove = null;
- window.isSetBounce = false;
- }
- }
- // #endif
-}
+/* mescroll
+ * version 1.2.3
+ * 2020-02-18 wenju
+ * http://www.mescroll.com
+ */
+
+export default function MeScroll(options, isScrollBody) {
+ let me = this;
+ me.version = '1.2.3'; // mescroll版本号
+ me.options = options || {}; // 配置
+ me.isScrollBody = isScrollBody || false; // 滚动区域是否为原生页面滚动; 默认为scroll-view
+
+ me.isDownScrolling = false; // 是否在执行下拉刷新的回调
+ me.isUpScrolling = false; // 是否在执行上拉加载的回调
+ let hasDownCallback = me.options.down && me.options.down.callback; // 是否配置了down的callback
+
+ // 初始化下拉刷新
+ me.initDownScroll();
+ // 初始化上拉加载,则初始化
+ me.initUpScroll();
+
+ // 自动加载
+ setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
+ // 自动触发下拉刷新 (只有配置了down的callback才自动触发下拉刷新)
+ if (me.optDown.use && me.optDown.auto && hasDownCallback) {
+ if (me.optDown.autoShowLoading) {
+ me.triggerDownScroll(); // 显示下拉进度,执行下拉回调
+ } else {
+ me.optDown.callback && me.optDown.callback(me); // 不显示下拉进度,直接执行下拉回调
+ }
+ }
+ // 自动触发上拉加载
+ setTimeout(function() { // 延时确保先执行down的callback,再执行up的callback,因为部分小程序emit是异步,会导致isUpAutoLoad判断有误
+ me.optUp.use && me.optUp.auto && !me.isUpAutoLoad && me.triggerUpScroll();
+ }, 100)
+ }, 30); // 需让me.optDown.inited和me.optUp.inited先执行
+}
+
+/* 配置参数:下拉刷新 */
+MeScroll.prototype.extendDownScroll = function(optDown) {
+ // 下拉刷新的配置
+ MeScroll.extend(optDown, {
+ use: true, // 是否启用下拉刷新; 默认true
+ auto: true, // 是否在初始化完毕之后自动执行下拉刷新的回调; 默认true
+ native: false, // 是否使用系统自带的下拉刷新; 默认false; 仅mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
+ autoShowLoading: false, // 如果设置auto=true(在初始化完毕之后自动执行下拉刷新的回调),那么是否显示下拉刷新的进度; 默认false
+ isLock: false, // 是否锁定下拉刷新,默认false;
+ offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调
+ startTop: 100, // scroll-view滚动到顶部时,此时的scroll-top不一定为0, 此值用于控制最大的误差
+ fps: 80, // 下拉节流 (值越大每秒刷新频率越高)
+ inOffsetRate: 1, // 在列表顶部,下拉的距离小于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉
+ outOffsetRate: 0.2, // 在列表顶部,下拉的距离大于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉
+ bottomOffset: 20, // 当手指touchmove位置在距离body底部20px范围内的时候结束上拉刷新,避免Webview嵌套导致touchend事件不执行
+ minAngle: 45, // 向下滑动最少偏移的角度,取值区间 [0,90];默认45度,即向下滑动的角度大于45度则触发下拉;而小于45度,将不触发下拉,避免与左右滑动的轮播等组件冲突;
+ textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本
+ textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本
+ textLoading: '加载中 ...', // 加载中的提示文本
+ inited: null, // 下拉刷新初始化完毕的回调
+ inOffset: null, // 下拉的距离进入offset范围内那一刻的回调
+ outOffset: null, // 下拉的距离大于offset那一刻的回调
+ onMoving: null, // 下拉过程中的回调,滑动过程一直在执行; rate下拉区域当前高度与指定距离的比值(inOffset: rate<1; outOffset: rate>=1); downHight当前下拉区域的高度
+ beforeLoading: null, // 准备触发下拉刷新的回调: 如果return true,将不触发showLoading和callback回调; 常用来完全自定义下拉刷新, 参考案例【淘宝 v6.8.0】
+ showLoading: null, // 显示下拉刷新进度的回调
+ afterLoading: null, // 准备结束下拉的回调. 返回结束下拉的延时执行时间,默认0ms; 常用于结束下拉之前再显示另外一小段动画,才去隐藏下拉刷新的场景, 参考案例【dotJump】
+ endDownScroll: null, // 结束下拉刷新的回调
+ callback: function(mescroll) {
+ // 下拉刷新的回调;默认重置上拉加载列表为第一页
+ mescroll.resetUpScroll();
+ }
+ })
+}
+
+/* 配置参数:上拉加载 */
+MeScroll.prototype.extendUpScroll = function(optUp) {
+ // 上拉加载的配置
+ MeScroll.extend(optUp, {
+ use: true, // 是否启用上拉加载; 默认true
+ auto: true, // 是否在初始化完毕之后自动执行上拉加载的回调; 默认true
+ isLock: false, // 是否锁定上拉加载,默认false;
+ isBoth: true, // 上拉加载时,如果滑动到列表顶部是否可以同时触发下拉刷新;默认true,两者可同时触发;
+ isBounce: false, // 默认禁止橡皮筋的回弹效果, 必读事项: http://www.mescroll.com/qa.html?v=190725#q25
+ callback: null, // 上拉加载的回调;function(page,mescroll){ }
+ page: {
+ num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+ size: 10, // 每页数据的数量
+ time: null // 加载第一页数据服务器返回的时间; 防止用户翻页时,后台新增了数据从而导致下一页数据重复;
+ },
+ noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看
+ offset: 80, // 距底部多远时,触发upCallback
+ textLoading: '加载中 ...', // 加载中的提示文本
+ textNoMore: '-- END --', // 没有更多数据的提示文本
+ inited: null, // 初始化完毕的回调
+ showLoading: null, // 显示加载中的回调
+ showNoMore: null, // 显示无更多数据的回调
+ hideUpScroll: null, // 隐藏上拉加载的回调
+ errDistance: 60, // endErr的时候需往上滑动一段距离,使其往下滑动时再次触发onReachBottom,仅mescroll-body生效
+ toTop: {
+ // 回到顶部按钮,需配置src才显示
+ src: null, // 图片路径,默认null (绝对路径或网络图)
+ offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000
+ duration: 300, // 回到顶部的动画时长,默认300ms (当值为0或300则使用系统自带回到顶部,更流畅; 其他值则通过step模拟,部分机型可能不够流畅,所以非特殊情况不建议修改此项)
+ btnClick: null, // 点击按钮的回调
+ onShow: null, // 是否显示的回调
+ zIndex: 9990, // fixed定位z-index值
+ left: null, // 到左边的距离, 默认null. 此项有值时,right不生效. (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ right: 20, // 到右边的距离, 默认20 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ bottom: 120, // 到底部的距离, 默认120 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ safearea: false, // bottom的偏移量是否加上底部安全区的距离, 默认false, 需要适配iPhoneX时使用 (具体的界面如果不配置此项,则取本vue的safearea值)
+ width: 72, // 回到顶部图标的宽度, 默认72 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ radius: "50%" // 圆角, 默认"50%" (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ },
+ empty: {
+ use: true, // 是否显示空布局
+ icon: null, // 图标路径
+ tip: '~ 暂无相关数据 ~', // 提示
+ btnText: '', // 按钮
+ btnClick: null, // 点击按钮的回调
+ onShow: null, // 是否显示的回调
+ fixed: false, // 是否使用fixed定位,默认false; 配置fixed为true,以下的top和zIndex才生效 (transform会使fixed失效,最终会降级为absolute)
+ top: "100rpx", // fixed定位的top值 (完整的单位值,如 "10%"; "100rpx")
+ zIndex: 99 // fixed定位z-index值
+ },
+ onScroll: false // 是否监听滚动事件
+ })
+}
+
+/* 配置参数 */
+MeScroll.extend = function(userOption, defaultOption) {
+ if (!userOption) return defaultOption;
+ for (let key in defaultOption) {
+ if (userOption[key] == null) {
+ let def = defaultOption[key];
+ if (def != null && typeof def === 'object') {
+ userOption[key] = MeScroll.extend({}, def); // 深度匹配
+ } else {
+ userOption[key] = def;
+ }
+ } else if (typeof userOption[key] === 'object') {
+ MeScroll.extend(userOption[key], defaultOption[key]); // 深度匹配
+ }
+ }
+ return userOption;
+}
+
+/* -------初始化下拉刷新------- */
+MeScroll.prototype.initDownScroll = function() {
+ let me = this;
+ // 配置参数
+ me.optDown = me.options.down || {};
+ me.extendDownScroll(me.optDown);
+
+ // 如果是mescroll-body且配置了native,则禁止自定义的下拉刷新
+ if (me.isScrollBody && me.optDown.native) {
+ me.optDown.use = false
+ } else {
+ me.optDown.native = false // 仅mescroll-body支持,mescroll-uni不支持
+ }
+
+ me.downHight = 0; // 下拉区域的高度
+
+ // 在页面中加入下拉布局
+ if (me.optDown.use && me.optDown.inited) {
+ // 初始化完毕的回调
+ setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
+ me.optDown.inited(me);
+ }, 0)
+ }
+}
+
+/* 列表touchstart事件 */
+MeScroll.prototype.touchstartEvent = function(e) {
+ if (!this.optDown.use) return;
+
+ this.startPoint = this.getPoint(e); // 记录起点
+ this.startTop = this.getScrollTop(); // 记录此时的滚动条位置
+ this.lastPoint = this.startPoint; // 重置上次move的点
+ this.maxTouchmoveY = this.getBodyHeight() - this.optDown.bottomOffset; // 手指触摸的最大范围(写在touchstart避免body获取高度为0的情况)
+ this.inTouchend = false; // 标记不是touchend
+}
+
+/* 列表touchmove事件 */
+MeScroll.prototype.touchmoveEvent = function(e) {
+ if (!this.optDown.use) return;
+ if (!this.startPoint) return;
+ let me = this;
+
+ // 节流
+ let t = new Date().getTime();
+ if (me.moveTime && t - me.moveTime < me.moveTimeDiff) { // 小于节流时间,则不处理
+ return;
+ } else {
+ me.moveTime = t
+ if (!me.moveTimeDiff) me.moveTimeDiff = 1000 / me.optDown.fps
+ }
+
+ let scrollTop = me.getScrollTop(); // 当前滚动条的距离
+ let curPoint = me.getPoint(e); // 当前点
+
+ let moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
+
+ // 向下拉 && 在顶部
+ // mescroll-body,直接判定在顶部即可
+ // scroll-view在滚动时不会触发touchmove,当触顶/底/左/右时,才会触发touchmove
+ // scroll-view滚动到顶部时,scrollTop不一定为0; 在iOS的APP中scrollTop可能为负数,不一定和startTop相等
+ if (moveY > 0 && (
+ (me.isScrollBody && scrollTop <= 0) ||
+ (!me.isScrollBody && (scrollTop <= 0 || (scrollTop <= me.optDown.startTop && scrollTop === me.startTop)))
+ )) {
+ // 可下拉的条件
+ if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling &&
+ me.optUp.isBoth))) {
+
+ // 下拉的角度是否在配置的范围内
+ let angle = me.getAngle(me.lastPoint, curPoint); // 两点之间的角度,区间 [0,90]
+ if (angle < me.optDown.minAngle) return; // 如果小于配置的角度,则不往下执行下拉刷新
+
+ // 如果手指的位置超过配置的距离,则提前结束下拉,避免Webview嵌套导致touchend无法触发
+ if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) {
+ me.inTouchend = true; // 标记执行touchend
+ me.touchendEvent(); // 提前触发touchend
+ return;
+ }
+
+ me.preventDefault(e); // 阻止默认事件
+
+ let diff = curPoint.y - me.lastPoint.y; // 和上次比,移动的距离 (大于0向下,小于0向上)
+
+ // 下拉距离 < 指定距离
+ if (me.downHight < me.optDown.offset) {
+ if (me.movetype !== 1) {
+ me.movetype = 1; // 加入标记,保证只执行一次
+ me.optDown.inOffset && me.optDown.inOffset(me); // 进入指定距离范围内那一刻的回调,只执行一次
+ me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来
+ }
+ me.downHight += diff * me.optDown.inOffsetRate; // 越往下,高度变化越小
+
+ // 指定距离 <= 下拉距离
+ } else {
+ if (me.movetype !== 2) {
+ me.movetype = 2; // 加入标记,保证只执行一次
+ me.optDown.outOffset && me.optDown.outOffset(me); // 下拉超过指定距离那一刻的回调,只执行一次
+ me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来
+ }
+ if (diff > 0) { // 向下拉
+ me.downHight += Math.round(diff * me.optDown.outOffsetRate); // 越往下,高度变化越小
+ } else { // 向上收
+ me.downHight += diff; // 向上收回高度,则向上滑多少收多少高度
+ }
+ }
+
+ let rate = me.downHight / me.optDown.offset; // 下拉区域当前高度与指定距离的比值
+ me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight); // 下拉过程中的回调,一直在执行
+ }
+ }
+
+ me.lastPoint = curPoint; // 记录本次移动的点
+}
+
+/* 列表touchend事件 */
+MeScroll.prototype.touchendEvent = function(e) {
+ if (!this.optDown.use) return;
+ // 如果下拉区域高度已改变,则需重置回来
+ if (this.isMoveDown) {
+ if (this.downHight >= this.optDown.offset) {
+ // 符合触发刷新的条件
+ this.triggerDownScroll();
+ } else {
+ // 不符合的话 则重置
+ this.downHight = 0;
+ this.optDown.endDownScroll && this.optDown.endDownScroll(this);
+ }
+ this.movetype = 0;
+ this.isMoveDown = false;
+ } else if (!this.isScrollBody && this.getScrollTop() === this.startTop) { // scroll-view到顶/左/右/底的滑动事件
+ let isScrollUp = this.getPoint(e).y - this.startPoint.y < 0; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
+ // 上滑
+ if (isScrollUp) {
+ // 需检查滑动的角度
+ let angle = this.getAngle(this.getPoint(e), this.startPoint); // 两点之间的角度,区间 [0,90]
+ if (angle > 80) {
+ // 检查并触发上拉
+ this.triggerUpScroll(true);
+ }
+ }
+ }
+}
+
+/* 根据点击滑动事件获取第一个手指的坐标 */
+MeScroll.prototype.getPoint = function(e) {
+ if (!e) {
+ return {
+ x: 0,
+ y: 0
+ }
+ }
+ if (e.touches && e.touches[0]) {
+ return {
+ x: e.touches[0].pageX,
+ y: e.touches[0].pageY
+ }
+ } else if (e.changedTouches && e.changedTouches[0]) {
+ return {
+ x: e.changedTouches[0].pageX,
+ y: e.changedTouches[0].pageY
+ }
+ } else {
+ return {
+ x: e.clientX,
+ y: e.clientY
+ }
+ }
+}
+
+/* 计算两点之间的角度: 区间 [0,90]*/
+MeScroll.prototype.getAngle = function(p1, p2) {
+ let x = Math.abs(p1.x - p2.x);
+ let y = Math.abs(p1.y - p2.y);
+ let z = Math.sqrt(x * x + y * y);
+ let angle = 0;
+ if (z !== 0) {
+ angle = Math.asin(y / z) / Math.PI * 180;
+ }
+ return angle
+}
+
+/* 触发下拉刷新 */
+MeScroll.prototype.triggerDownScroll = function() {
+ if (this.optDown.beforeLoading && this.optDown.beforeLoading(this)) {
+ //return true则处于完全自定义状态
+ } else {
+ this.showDownScroll(); // 下拉刷新中...
+ this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据
+ }
+}
+
+/* 显示下拉进度布局 */
+MeScroll.prototype.showDownScroll = function() {
+ this.isDownScrolling = true; // 标记下拉中
+ if (this.optDown.native) {
+ uni.startPullDownRefresh(); // 系统自带的下拉刷新
+ this.optDown.showLoading && this.optDown.showLoading(this, 0); // 仍触发showLoading,因为上拉加载用到
+ } else {
+ this.downHight = this.optDown.offset; // 更新下拉区域高度
+ this.optDown.showLoading && this.optDown.showLoading(this, this.downHight); // 下拉刷新中...
+ }
+}
+
+/* 显示系统自带的下拉刷新时需要处理的业务 */
+MeScroll.prototype.onPullDownRefresh = function() {
+ this.isDownScrolling = true; // 标记下拉中
+ this.optDown.showLoading && this.optDown.showLoading(this, 0); // 仍触发showLoading,因为上拉加载用到
+ this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据
+}
+
+/* 结束下拉刷新 */
+MeScroll.prototype.endDownScroll = function() {
+ if (this.optDown.native) { // 结束原生下拉刷新
+ this.isDownScrolling = false;
+ this.optDown.endDownScroll && this.optDown.endDownScroll(this);
+ uni.stopPullDownRefresh();
+ return
+ }
+ let me = this;
+ // 结束下拉刷新的方法
+ let endScroll = function() {
+ me.downHight = 0;
+ me.isDownScrolling = false;
+ me.optDown.endDownScroll && me.optDown.endDownScroll(me);
+ !me.isScrollBody && me.setScrollHeight(0) // scroll-view重置滚动区域,使数据不满屏时仍可检查触发翻页
+ }
+ // 结束下拉刷新时的回调
+ let delay = 0;
+ if (me.optDown.afterLoading) delay = me.optDown.afterLoading(me); // 结束下拉刷新的延时,单位ms
+ if (typeof delay === 'number' && delay > 0) {
+ setTimeout(endScroll, delay);
+ } else {
+ endScroll();
+ }
+}
+
+/* 锁定下拉刷新:isLock=ture,null锁定;isLock=false解锁 */
+MeScroll.prototype.lockDownScroll = function(isLock) {
+ if (isLock == null) isLock = true;
+ this.optDown.isLock = isLock;
+}
+
+/* 锁定上拉加载:isLock=ture,null锁定;isLock=false解锁 */
+MeScroll.prototype.lockUpScroll = function(isLock) {
+ if (isLock == null) isLock = true;
+ this.optUp.isLock = isLock;
+}
+
+/* -------初始化上拉加载------- */
+MeScroll.prototype.initUpScroll = function() {
+ let me = this;
+ // 配置参数
+ me.optUp = me.options.up || {
+ use: false
+ };
+ me.extendUpScroll(me.optUp);
+
+ if (!me.optUp.isBounce) me.setBounce(false); // 不允许bounce时,需禁止window的touchmove事件
+
+ if (me.optUp.use === false) return; // 配置不使用上拉加载时,则不初始化上拉布局
+ me.optUp.hasNext = true; // 如果使用上拉,则默认有下一页
+ me.startNum = me.optUp.page.num + 1; // 记录page开始的页码
+
+ // 初始化完毕的回调
+ if (me.optUp.inited) {
+ setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
+ me.optUp.inited(me);
+ }, 0)
+ }
+}
+
+/*滚动到底部的事件 (仅mescroll-body生效)*/
+MeScroll.prototype.onReachBottom = function() {
+ if (this.isScrollBody && !this.isUpScrolling) { // 只能支持下拉刷新的时候同时可以触发上拉加载,否则滚动到底部就需要上滑一点才能触发onReachBottom
+ if (!this.optUp.isLock && this.optUp.hasNext) {
+ this.triggerUpScroll();
+ }
+ }
+}
+
+/*列表滚动事件 (仅mescroll-body生效)*/
+MeScroll.prototype.onPageScroll = function(e) {
+ if (!this.isScrollBody) return;
+
+ // 更新滚动条的位置 (主要用于判断下拉刷新时,滚动条是否在顶部)
+ this.setScrollTop(e.scrollTop);
+
+ // 顶部按钮的显示隐藏
+ if (e.scrollTop >= this.optUp.toTop.offset) {
+ this.showTopBtn();
+ } else {
+ this.hideTopBtn();
+ }
+}
+
+/*列表滚动事件*/
+MeScroll.prototype.scroll = function(e, onScroll) {
+ // 更新滚动条的位置
+ this.setScrollTop(e.scrollTop);
+ // 更新滚动内容高度
+ this.setScrollHeight(e.scrollHeight);
+
+ // 向上滑还是向下滑动
+ if (this.preScrollY == null) this.preScrollY = 0;
+ this.isScrollUp = e.scrollTop - this.preScrollY > 0;
+ this.preScrollY = e.scrollTop;
+
+ // 上滑 && 检查并触发上拉
+ this.isScrollUp && this.triggerUpScroll(true);
+
+ // 顶部按钮的显示隐藏
+ if (e.scrollTop >= this.optUp.toTop.offset) {
+ this.showTopBtn();
+ } else {
+ this.hideTopBtn();
+ }
+
+ // 滑动监听
+ this.optUp.onScroll && onScroll && onScroll()
+}
+
+/* 触发上拉加载 */
+MeScroll.prototype.triggerUpScroll = function(isCheck) {
+ if (!this.isUpScrolling && this.optUp.use && this.optUp.callback) {
+ // 是否校验在底部; 默认不校验
+ if (isCheck === true) {
+ let canUp = false;
+ // 还有下一页 && 没有锁定 && 不在下拉中
+ if (this.optUp.hasNext && !this.optUp.isLock && !this.isDownScrolling) {
+ if (this.getScrollBottom() <= this.optUp.offset) { // 到底部
+ canUp = true; // 标记可上拉
+ }
+ }
+ if (canUp === false) return;
+ }
+ this.showUpScroll(); // 上拉加载中...
+ this.optUp.page.num++; // 预先加一页,如果失败则减回
+ this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调
+ this.num = this.optUp.page.num; // 把最新的页数赋值在mescroll上,避免对page的影响
+ this.size = this.optUp.page.size; // 把最新的页码赋值在mescroll上,避免对page的影响
+ this.time = this.optUp.page.time; // 把最新的页码赋值在mescroll上,避免对page的影响
+ this.optUp.callback(this); // 执行回调,联网加载数据
+ }
+}
+
+/* 显示上拉加载中 */
+MeScroll.prototype.showUpScroll = function() {
+ this.isUpScrolling = true; // 标记上拉加载中
+ this.optUp.showLoading && this.optUp.showLoading(this); // 回调
+}
+
+/* 显示上拉无更多数据 */
+MeScroll.prototype.showNoMore = function() {
+ this.optUp.hasNext = false; // 标记无更多数据
+ this.optUp.showNoMore && this.optUp.showNoMore(this); // 回调
+}
+
+/* 隐藏上拉区域**/
+MeScroll.prototype.hideUpScroll = function() {
+ this.optUp.hideUpScroll && this.optUp.hideUpScroll(this); // 回调
+}
+
+/* 结束上拉加载 */
+MeScroll.prototype.endUpScroll = function(isShowNoMore) {
+ if (isShowNoMore != null) { // isShowNoMore=null,不处理下拉状态,下拉刷新的时候调用
+ if (isShowNoMore) {
+ this.showNoMore(); // isShowNoMore=true,显示无更多数据
+ } else {
+ this.hideUpScroll(); // isShowNoMore=false,隐藏上拉加载
+ }
+ }
+ this.isUpScrolling = false; // 标记结束上拉加载
+}
+
+/* 重置上拉加载列表为第一页
+ *isShowLoading 是否显示进度布局;
+ * 1.默认null,不传参,则显示上拉加载的进度布局
+ * 2.传参true, 则显示下拉刷新的进度布局
+ * 3.传参false,则不显示上拉和下拉的进度 (常用于静默更新列表数据)
+ */
+MeScroll.prototype.resetUpScroll = function(isShowLoading) {
+ if (this.optUp && this.optUp.use) {
+ let page = this.optUp.page;
+ this.prePageNum = page.num; // 缓存重置前的页码,加载失败可退回
+ this.prePageTime = page.time; // 缓存重置前的时间,加载失败可退回
+ page.num = this.startNum; // 重置为第一页
+ page.time = null; // 重置时间为空
+ if (!this.isDownScrolling && isShowLoading !== false) { // 如果不是下拉刷新触发的resetUpScroll并且不配置列表静默更新,则显示进度;
+ if (isShowLoading == null) {
+ this.removeEmpty(); // 移除空布局
+ this.showUpScroll(); // 不传参,默认显示上拉加载的进度布局
+ } else {
+ this.showDownScroll(); // 传true,显示下拉刷新的进度布局,不清空列表
+ }
+ }
+ this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调
+ this.num = page.num; // 把最新的页数赋值在mescroll上,避免对page的影响
+ this.size = page.size; // 把最新的页码赋值在mescroll上,避免对page的影响
+ this.time = page.time; // 把最新的页码赋值在mescroll上,避免对page的影响
+ this.optUp.callback && this.optUp.callback(this); // 执行上拉回调
+ }
+}
+
+/* 设置page.num的值 */
+MeScroll.prototype.setPageNum = function(num) {
+ this.optUp.page.num = num - 1;
+}
+
+/* 设置page.size的值 */
+MeScroll.prototype.setPageSize = function(size) {
+ this.optUp.page.size = size;
+}
+
+/* 联网回调成功,结束下拉刷新和上拉加载
+ * dataSize: 当前页的数据量(必传)
+ * totalPage: 总页数(必传)
+ * systime: 服务器时间 (可空)
+ */
+MeScroll.prototype.endByPage = function(dataSize, totalPage, systime) {
+ let hasNext;
+ if (this.optUp.use && totalPage != null) hasNext = this.optUp.page.num < totalPage; // 是否还有下一页
+ this.endSuccess(dataSize, hasNext, systime);
+}
+
+/* 联网回调成功,结束下拉刷新和上拉加载
+ * dataSize: 当前页的数据量(必传)
+ * totalSize: 列表所有数据总数量(必传)
+ * systime: 服务器时间 (可空)
+ */
+MeScroll.prototype.endBySize = function(dataSize, totalSize, systime) {
+ let hasNext;
+ if (this.optUp.use && totalSize != null) {
+ let loadSize = (this.optUp.page.num - 1) * this.optUp.page.size + dataSize; // 已加载的数据总数
+ hasNext = loadSize < totalSize; // 是否还有下一页
+ }
+ this.endSuccess(dataSize, hasNext, systime);
+}
+
+/* 联网回调成功,结束下拉刷新和上拉加载
+ * dataSize: 当前页的数据个数(不是所有页的数据总和),用于上拉加载判断是否还有下一页.如果不传,则会判断还有下一页
+ * hasNext: 是否还有下一页,布尔类型;用来解决这个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据dataSize判断,则需翻到第三页才会知道无更多数据,如果传了hasNext,则翻到第二页即可显示无更多数据.
+ * systime: 服务器时间(可空);用来解决这个小问题:当准备翻下一页时,数据库新增了几条记录,此时翻下一页,前面的几条数据会和上一页的重复;这里传入了systime,那么upCallback的page.time就会有值,把page.time传给服务器,让后台过滤新加入的那几条记录
+ */
+MeScroll.prototype.endSuccess = function(dataSize, hasNext, systime) {
+ let me = this;
+ // 结束下拉刷新
+ if (me.isDownScrolling) me.endDownScroll();
+
+ // 结束上拉加载
+ if (me.optUp.use) {
+ let isShowNoMore; // 是否已无更多数据
+ if (dataSize != null) {
+ let pageNum = me.optUp.page.num; // 当前页码
+ let pageSize = me.optUp.page.size; // 每页长度
+ // 如果是第一页
+ if (pageNum === 1) {
+ if (systime) me.optUp.page.time = systime; // 设置加载列表数据第一页的时间
+ }
+ if (dataSize < pageSize || hasNext === false) {
+ // 返回的数据不满一页时,则说明已无更多数据
+ me.optUp.hasNext = false;
+ if (dataSize === 0 && pageNum === 1) {
+ // 如果第一页无任何数据且配置了空布局
+ isShowNoMore = false;
+ me.showEmpty();
+ } else {
+ // 总列表数少于配置的数量,则不显示无更多数据
+ let allDataSize = (pageNum - 1) * pageSize + dataSize;
+ if (allDataSize < me.optUp.noMoreSize) {
+ isShowNoMore = false;
+ } else {
+ isShowNoMore = true;
+ }
+ me.removeEmpty(); // 移除空布局
+ }
+ } else {
+ // 还有下一页
+ isShowNoMore = false;
+ me.optUp.hasNext = true;
+ me.removeEmpty(); // 移除空布局
+ }
+ }
+
+ // 隐藏上拉
+ me.endUpScroll(isShowNoMore);
+ }
+}
+
+/* 回调失败,结束下拉刷新和上拉加载 */
+MeScroll.prototype.endErr = function(errDistance) {
+ // 结束下拉,回调失败重置回原来的页码和时间
+ if (this.isDownScrolling) {
+ let page = this.optUp.page;
+ if (page && this.prePageNum) {
+ page.num = this.prePageNum;
+ page.time = this.prePageTime;
+ }
+ this.endDownScroll();
+ }
+ // 结束上拉,回调失败重置回原来的页码
+ if (this.isUpScrolling) {
+ this.optUp.page.num--;
+ this.endUpScroll(false);
+ // 如果是mescroll-body,则需往回滚一定距离
+ if (this.isScrollBody && errDistance !== 0) { // 不处理0
+ if (!errDistance) errDistance = this.optUp.errDistance; // 不传,则取默认
+ this.scrollTo(this.getScrollTop() - errDistance, 0) // 往上回滚的距离
+ }
+ }
+}
+
+/* 显示空布局 */
+MeScroll.prototype.showEmpty = function() {
+ this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(true)
+}
+
+/* 移除空布局 */
+MeScroll.prototype.removeEmpty = function() {
+ this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(false)
+}
+
+/* 显示回到顶部的按钮 */
+MeScroll.prototype.showTopBtn = function() {
+ if (!this.topBtnShow) {
+ this.topBtnShow = true;
+ this.optUp.toTop.onShow && this.optUp.toTop.onShow(true);
+ }
+}
+
+/* 隐藏回到顶部的按钮 */
+MeScroll.prototype.hideTopBtn = function() {
+ if (this.topBtnShow) {
+ this.topBtnShow = false;
+ this.optUp.toTop.onShow && this.optUp.toTop.onShow(false);
+ }
+}
+
+/* 获取滚动条的位置 */
+MeScroll.prototype.getScrollTop = function() {
+ return this.scrollTop || 0
+}
+
+/* 记录滚动条的位置 */
+MeScroll.prototype.setScrollTop = function(y) {
+ this.scrollTop = y;
+}
+
+/* 滚动到指定位置 */
+MeScroll.prototype.scrollTo = function(y, t) {
+ this.myScrollTo && this.myScrollTo(y, t) // scrollview需自定义回到顶部方法
+}
+
+/* 自定义scrollTo */
+MeScroll.prototype.resetScrollTo = function(myScrollTo) {
+ this.myScrollTo = myScrollTo
+}
+
+/* 滚动条到底部的距离 */
+MeScroll.prototype.getScrollBottom = function() {
+ return this.getScrollHeight() - this.getClientHeight() - this.getScrollTop()
+}
+
+/* 计步器
+ star: 开始值
+ end: 结束值
+ callback(step,timer): 回调step值,计步器timer,可自行通过window.clearInterval(timer)结束计步器;
+ t: 计步时长,传0则直接回调end值;不传则默认300ms
+ rate: 周期;不传则默认30ms计步一次
+ * */
+MeScroll.prototype.getStep = function(star, end, callback, t, rate) {
+ let diff = end - star; // 差值
+ if (t === 0 || diff === 0) {
+ callback && callback(end);
+ return;
+ }
+ t = t || 300; // 时长 300ms
+ rate = rate || 30; // 周期 30ms
+ let count = t / rate; // 次数
+ let step = diff / count; // 步长
+ let i = 0; // 计数
+ let timer = setInterval(function() {
+ if (i < count - 1) {
+ star += step;
+ callback && callback(star, timer);
+ i++;
+ } else {
+ callback && callback(end, timer); // 最后一次直接设置end,避免计算误差
+ clearInterval(timer);
+ }
+ }, rate);
+}
+
+/* 滚动容器的高度 */
+MeScroll.prototype.getClientHeight = function(isReal) {
+ let h = this.clientHeight || 0
+ if (h === 0 && isReal !== true) { // 未获取到容器的高度,可临时取body的高度 (可能会有误差)
+ h = this.getBodyHeight()
+ }
+ return h
+}
+MeScroll.prototype.setClientHeight = function(h) {
+ this.clientHeight = h;
+}
+
+/* 滚动内容的高度 */
+MeScroll.prototype.getScrollHeight = function() {
+ return this.scrollHeight || 0;
+}
+MeScroll.prototype.setScrollHeight = function(h) {
+ this.scrollHeight = h;
+}
+
+/* body的高度 */
+MeScroll.prototype.getBodyHeight = function() {
+ return this.bodyHeight || 0;
+}
+MeScroll.prototype.setBodyHeight = function(h) {
+ this.bodyHeight = h;
+}
+
+/* 阻止浏览器默认滚动事件 */
+MeScroll.prototype.preventDefault = function(e) {
+ // 小程序不支持e.preventDefault
+ // app的bounce只能通过配置pages.json的style.app-plus.bounce为"none"来禁止
+ // cancelable:是否可以被禁用; defaultPrevented:是否已经被禁用
+ if (e && e.cancelable && !e.defaultPrevented) e.preventDefault()
+}
+
+/* 是否允许下拉回弹(橡皮筋效果); true或null为允许; false禁止bounce */
+MeScroll.prototype.setBounce = function(isBounce) {
+ // #ifdef H5
+ if (isBounce === false) {
+ this.optUp.isBounce = false; // 禁止
+ // 标记当前页使用了mescroll (需延时,确保page已切换)
+ setTimeout(function() {
+ let uniPageDom = document.getElementsByTagName('uni-page')[0];
+ uniPageDom && uniPageDom.setAttribute('use_mescroll', true)
+ }, 30);
+ // 避免重复添加事件
+ if (window.isSetBounce) return;
+ window.isSetBounce = true;
+ // 需禁止window的touchmove事件才能有效的阻止bounce
+ window.bounceTouchmove = function(e) {
+ let el = e.target;
+ // 当前touch的元素及父元素是否要拦截touchmove事件
+ let isPrevent = true;
+ while (el !== document.body && el !== document) {
+ if (el.tagName === 'UNI-PAGE') { // 只扫描当前页
+ if (!el.getAttribute('use_mescroll')) {
+ isPrevent = false; // 如果当前页没有使用mescroll,则不阻止
+ }
+ break;
+ }
+ let cls = el.classList;
+ if (cls) {
+ if (cls.contains('mescroll-touch')) { // 采用scroll-view 此处不能过滤mescroll-uni,否则下拉仍然有回弹
+ isPrevent = false; // mescroll-touch无需拦截touchmove事件
+ break;
+ } else if (cls.contains('mescroll-touch-x') || cls.contains('mescroll-touch-y')) {
+ // 如果配置了水平或者垂直滑动
+ let curX = e.touches ? e.touches[0].pageX : e.clientX; // 当前第一个手指距离列表顶部的距离x
+ let curY = e.touches ? e.touches[0].pageY : e.clientY; // 当前第一个手指距离列表顶部的距离y
+ if (!this.preWinX) this.preWinX = curX; // 设置上次移动的距离x
+ if (!this.preWinY) this.preWinY = curY; // 设置上次移动的距离y
+ // 计算两点之间的角度
+ let x = Math.abs(this.preWinX - curX);
+ let y = Math.abs(this.preWinY - curY);
+ let z = Math.sqrt(x * x + y * y);
+ this.preWinX = curX; // 记录本次curX的值
+ this.preWinY = curY; // 记录本次curY的值
+ if (z !== 0) {
+ let angle = Math.asin(y / z) / Math.PI * 180; // 角度区间 [0,90]
+ if ((angle <= 45 && cls.contains('mescroll-touch-x')) || (angle > 45 && cls.contains('mescroll-touch-y'))) {
+ isPrevent = false; // 水平滑动或者垂直滑动,不拦截touchmove事件
+ break;
+ }
+ }
+ }
+ }
+ el = el.parentNode; // 继续检查其父元素
+ }
+ // 拦截touchmove事件:是否可以被禁用&&是否已经被禁用 (这里不使用me.preventDefault(e)的方法,因为某些情况下会报找不到方法的异常)
+ if (isPrevent && e.cancelable && !e.defaultPrevented && typeof e.preventDefault === "function") e.preventDefault();
+ }
+ window.addEventListener('touchmove', window.bounceTouchmove, {
+ passive: false
+ });
+ } else {
+ this.optUp.isBounce = true; // 允许
+ if (window.bounceTouchmove) {
+ window.removeEventListener('touchmove', window.bounceTouchmove);
+ window.bounceTouchmove = null;
+ window.isSetBounce = false;
+ }
+ }
+ // #endif
+}
diff --git a/components/mescroll/my-list-mescroll.vue b/components/mescroll/my-list-mescroll.vue
index dbe0d76..d0d2935 100644
--- a/components/mescroll/my-list-mescroll.vue
+++ b/components/mescroll/my-list-mescroll.vue
@@ -1,158 +1,158 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/ns-chat/ns-chat-goods.vue b/components/ns-chat/ns-chat-goods.vue
index be57e01..b5b95a2 100644
--- a/components/ns-chat/ns-chat-goods.vue
+++ b/components/ns-chat/ns-chat-goods.vue
@@ -1,142 +1,142 @@
-
-
-
-
-
- {{ goodsInfo.sku_name ? goodsInfo.sku_name : (isEnEnv ? goodsInfo.en_goods_name : goodsInfo.goods_name) }}
-
-
- ¥
- {{ goodsInfo.price }}
-
- {{ $lang("common.ns-chat.ns-chat-goods.l12.t0") }}
-
-
-
-
-
-
- {{ goodsDetail.sku_name ? goodsDetail.sku_name : (isEnEnv ? goodsDetail.en_goods_name : goodsDetail.goods_name) }}
-
-
- ¥
- {{ goodsDetail.price }}
-
- {{ $lang("common.ns-chat.ns-chat-goods.l25.t0") }}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ {{ goodsInfo.sku_name ? goodsInfo.sku_name : (isEnEnv ? goodsInfo.en_goods_name : goodsInfo.goods_name) }}
+
+
+ ¥
+ {{ goodsInfo.price }}
+
+ 已发送
+
+
+
+
+
+
+ {{ goodsDetail.sku_name ? goodsDetail.sku_name : (isEnEnv ? goodsDetail.en_goods_name : goodsDetail.goods_name) }}
+
+
+ ¥
+ {{ goodsDetail.price }}
+
+ 发送
+
+
+
+
+
+
+
+
+
diff --git a/components/ns-chat/ns-chat-order.vue b/components/ns-chat/ns-chat-order.vue
index a63ee21..1e3c5d2 100644
--- a/components/ns-chat/ns-chat-order.vue
+++ b/components/ns-chat/ns-chat-order.vue
@@ -1,149 +1,149 @@
-
-
-
-
-
- {{ orderdetails.order_goods ? orderdetails.order_goods[0].sku_name : '' }}
- { $lang("common.ns-chat.ns-chat-order.l7.t0") } orderdetails.order_status_name }}
- { $lang("common.ns-chat.ns-chat-order.l8.t0") } orderdetails.delivery_type_name }}
-
-
- ¥
- {{ orderdetails.order_goods ? orderdetails.order_goods[0].price : '' }}
-
- {{ $lang("common.ns-chat.ns-chat-goods.l25.t0") }}
-
-
-
-
-
-
- {{ orderInfo.order_goods ? orderInfo.order_goods[0].sku_name : '' }}
- { $lang("common.ns-chat.ns-chat-order.l7.t0") } orderInfo.order_status_name }}
- { $lang("common.ns-chat.ns-chat-order.l8.t0") } orderInfo.delivery_type_name }}
-
-
- ¥
- {{ orderInfo.order_goods ? orderInfo.order_goods[0].price : '' }}
-
- {{ $lang("common.ns-chat.ns-chat-goods.l12.t0") }}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ {{ orderdetails.order_goods ? orderdetails.order_goods[0].sku_name : '' }}
+ 订单状态:{{ orderdetails.order_status_name }}
+ 配送方式:{{ orderdetails.delivery_type_name }}
+
+
+ ¥
+ {{ orderdetails.order_goods ? orderdetails.order_goods[0].price : '' }}
+
+ 发送
+
+
+
+
+
+
+ {{ orderInfo.order_goods ? orderInfo.order_goods[0].sku_name : '' }}
+ 订单状态:{{ orderInfo.order_status_name }}
+ 配送方式:{{ orderInfo.delivery_type_name }}
+
+
+ ¥
+ {{ orderInfo.order_goods ? orderInfo.order_goods[0].price : '' }}
+
+ 已发送
+
+
+
+
+
+
+
+
+
diff --git a/components/ns-chat/ns-chat-receiveGoods.vue b/components/ns-chat/ns-chat-receiveGoods.vue
index af2dd7e..1217161 100644
--- a/components/ns-chat/ns-chat-receiveGoods.vue
+++ b/components/ns-chat/ns-chat-receiveGoods.vue
@@ -6,7 +6,7 @@
{{ isEnEnv ? goodsInfo.en_goods_name : goodsInfo.goods_name }}
库存:{{ goodsInfo.stock }}
- { $lang("common.ns-chat.ns-chat-receiveGoods.l9.t0") } goodsInfo.sale_num }}
+ 销量:{{ goodsInfo.sale_num }}
diff --git a/components/ns-contact/ns-contact.vue b/components/ns-contact/ns-contact.vue
index 779f8de..fc97a74 100644
--- a/components/ns-contact/ns-contact.vue
+++ b/components/ns-contact/ns-contact.vue
@@ -29,10 +29,10 @@
diff --git a/components/ns-copyright/ns-copyright.vue b/components/ns-copyright/ns-copyright.vue
index f983905..0ea40ef 100644
--- a/components/ns-copyright/ns-copyright.vue
+++ b/components/ns-copyright/ns-copyright.vue
@@ -1,142 +1,142 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ns-empty/ns-empty.vue b/components/ns-empty/ns-empty.vue
index 8f99a3e..3249614 100644
--- a/components/ns-empty/ns-empty.vue
+++ b/components/ns-empty/ns-empty.vue
@@ -1,95 +1,95 @@
-
-
-
- {{ text }}
- {{ subText }}
-
-
-
-
-
-
-
+
+
+
+ {{ text }}
+ {{ subText }}
+
+
+
+
+
+
+
diff --git a/components/ns-form/ns-form.vue b/components/ns-form/ns-form.vue
index 80cdc66..ce2d8c1 100644
--- a/components/ns-form/ns-form.vue
+++ b/components/ns-form/ns-form.vue
@@ -1,863 +1,863 @@
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
- {{ item.val }}
- {{ $lang("common.ns-form.l37.t0") }}
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
- {{ item.val ? item.val : item.value.placeholder }}
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
-
-
- {{ item.start_date ? item.start_date : item.value.placeholder_start }}
-
-
-
-
-
-
-
- {{ item.end_date ? item.end_date : item.value.placeholder_end }}
-
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
- {{ item.val ? item.val : item.value.placeholder }}
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
-
-
- {{ item.start_time ? item.start_time : item.value.placeholder_start }}
-
-
-
-
-
-
-
- {{ item.end_time ? item.end_time : item.value.placeholder_end }}
-
-
-
-
-
-
-
-
-
-
- {{ item.value.title }}
- {{ item.value.required ? '*' : '' }}
-
-
-
-
- {{ item.val ? item.val : item.select_arr == '2' ? '请选择省市' : $lang('common.ns-form.l191.t1') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ns-goods-recommend/ns-goods-recommend.vue b/components/ns-goods-recommend/ns-goods-recommend.vue
index c960ee1..88223eb 100644
--- a/components/ns-goods-recommend/ns-goods-recommend.vue
+++ b/components/ns-goods-recommend/ns-goods-recommend.vue
@@ -1,394 +1,394 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ns-goods-sku/ns-goods-sku-category.vue b/components/ns-goods-sku/ns-goods-sku-category.vue
index 9cc9fe6..16c4735 100644
--- a/components/ns-goods-sku/ns-goods-sku-category.vue
+++ b/components/ns-goods-sku/ns-goods-sku-category.vue
@@ -1,857 +1,857 @@
-
-
-
-
-
-
-
-
-
-
- {{ item.spec_name }}
-
-
-
- {{ item_value.spec_value_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ns-goods-sku/ns-goods-sku-index.vue b/components/ns-goods-sku/ns-goods-sku-index.vue
index 0e751b2..f57f889 100644
--- a/components/ns-goods-sku/ns-goods-sku-index.vue
+++ b/components/ns-goods-sku/ns-goods-sku-index.vue
@@ -1,234 +1,234 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ns-goods-sku/ns-goods-sku.vue b/components/ns-goods-sku/ns-goods-sku.vue
index 0918cde..e4f5cb1 100644
--- a/components/ns-goods-sku/ns-goods-sku.vue
+++ b/components/ns-goods-sku/ns-goods-sku.vue
@@ -1,1541 +1,1541 @@
-
-
-
-
-
-
-
-
-
-
-
-
- {{ goodsDetail.pintuan_num }}人团
-
-
- {{ goodsDetail.pintuan_num_2 }}人团
-
-
- {{ goodsDetail.pintuan_num_3 }}人团
-
-
-
-
- {{ item.spec_name }}
-
-
- {{ item_value.spec_value_name }}
-
-
-
-
-
- {{ $lang("common.ns-goods-sku.l161.t0") }}
- {{ $lang("common.ns-goods-sku.l162.t0") }}
- { $lang("common.ns-goods-sku.l163.t0") } limitNumber }}{{ goodsDetail.unit }})
-
- ({{ minBuy }}{{ goodsDetail.unit }}起售,限购{{ maxBuy }}{{ goodsDetail.unit }})
-
- { $lang("common.ns-goods-sku.l167.t0") } maxBuy }}{{ goodsDetail.unit }})
- ({{ minBuy }}{{ goodsDetail.unit }}起售)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ns-loading/ns-loading.vue b/components/ns-loading/ns-loading.vue
index df3295f..eb4507c 100644
--- a/components/ns-loading/ns-loading.vue
+++ b/components/ns-loading/ns-loading.vue
@@ -1,89 +1,89 @@
-
-
-
-
- {{ downText }}
-
-
-
-
-
-
-
+
+
+
+
+ {{ downText }}
+
+
+
+
+
+
+
diff --git a/components/ns-login/ns-login.vue b/components/ns-login/ns-login.vue
index 6a53358..0715071 100644
--- a/components/ns-login/ns-login.vue
+++ b/components/ns-login/ns-login.vue
@@ -1,887 +1,887 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/ns-navbar/ns-navbar.vue b/components/ns-navbar/ns-navbar.vue
index 15d3145..a2b4c5e 100644
--- a/components/ns-navbar/ns-navbar.vue
+++ b/components/ns-navbar/ns-navbar.vue
@@ -1,404 +1,404 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ns-newform/ns-newform.vue b/components/ns-newform/ns-newform.vue
index 4ad7213..394f703 100644
--- a/components/ns-newform/ns-newform.vue
+++ b/components/ns-newform/ns-newform.vue
@@ -50,7 +50,7 @@
{{ item.val }}
- {{ item.value.placeholder || $lang('common.ns-form.l37.t0') }}
+ {{ item.value.placeholder || '请选择' }}
@@ -146,7 +146,7 @@
@change="bindDateChange($event, index)"
>
- {{ item.val ? item.val : (item.value.placeholder || $lang('common.ns-newform.l149.t0')) }}
+ {{ item.val ? item.val : (item.value.placeholder || '请选择日期') }}
@@ -170,7 +170,7 @@
>
- {{ item.start_date ? item.start_date : (item.value.placeholder_start || $lang('common.ns-newform.l173.t0')) }}
+ {{ item.start_date ? item.start_date : (item.value.placeholder_start || '开始日期') }}
@@ -184,7 +184,7 @@
>
- {{ item.end_date ? item.end_date : (item.value.placeholder_end || $lang('common.ns-newform.l187.t0')) }}
+ {{ item.end_date ? item.end_date : (item.value.placeholder_end || '结束日期') }}
@@ -207,7 +207,7 @@
@change="bindTimeChange($event, index)"
>
- {{ item.val ? item.val : (item.value.placeholder || $lang('common.ns-newform.l210.t0')) }}
+ {{ item.val ? item.val : (item.value.placeholder || '请选择时间') }}
@@ -231,7 +231,7 @@
>
- {{ item.start_time ? item.start_time : (item.value.placeholder_start || $lang('common.ns-newform.l234.t0')) }}
+ {{ item.start_time ? item.start_time : (item.value.placeholder_start || '开始时间') }}
@@ -245,7 +245,7 @@
>
- {{ item.end_time ? item.end_time : (item.value.placeholder_end || $lang('common.ns-newform.l248.t0')) }}
+ {{ item.end_time ? item.end_time : (item.value.placeholder_end || '结束时间') }}
@@ -268,7 +268,7 @@
@getRegions="handleGetRegions($event, index)"
>
- {{ item.val ? item.val : (item.value.placeholder || (item.value.default_type == 1 ? '请选择省市' : $lang('common.ns-newform.l271.t0'))) }}
+ {{ item.val ? item.val : (item.value.placeholder || (item.value.default_type == 1 ? '请选择省市' : '请选择省市区')) }}
@@ -788,89 +788,89 @@ export default {
if (item.controller == 'Text') {
if (item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l368.t0') + item.value.title });
+ this.$util.showToast({ title: '请输入' + item.value.title });
return false;
}
if (item.name == 'ID_CARD' && !/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(item.val)) {
if (!item.value.required) {
- this.$util.showToast({ title: $lang('common.ns-form.l378.t0') });
+ this.$util.showToast({ title: '身份证输入不合法' });
return false;
}
if (item.val != '') {
- this.$util.showToast({ title: $lang('common.ns-form.l378.t0') });
+ this.$util.showToast({ title: '身份证输入不合法' });
return false;
}
}
if (item.name == 'MOBILE' && !this.$util.verifyMobile(item.val)) {
if (!item.value.required) {
- this.$util.showToast({ title: $lang('common.ns-form.l395.t0') });
+ this.$util.showToast({ title: '手机号输入不合法' });
return false;
}
if (item.val != '') {
- this.$util.showToast({ title: $lang('common.ns-form.l395.t0') });
+ this.$util.showToast({ title: '手机号输入不合法' });
return false;
}
}
}
if (item.controller == 'Textarea' && item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l368.t0') + item.value.title });
+ this.$util.showToast({ title: '请输入' + item.value.title });
return false;
}
if (item.controller == 'Select' && item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l37.t0') + item.value.title });
+ this.$util.showToast({ title: '请选择' + item.value.title });
return false;
}
if (item.controller == 'Checkbox' && item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l432.t0') + item.value.title });
+ this.$util.showToast({ title: '请至少选择一个' + item.value.title });
return false;
}
if (item.controller == 'Img' && item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l442.t0') + item.value.title });
+ this.$util.showToast({ title: '请至少上传一张' + item.value.title });
return false;
}
if (item.controller == 'Date' && item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l37.t0') + item.value.title });
+ this.$util.showToast({ title: '请选择' + item.value.title });
return false;
}
if (item.controller == 'Datelimit') {
if (item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l37.t0') + item.value.title });
+ this.$util.showToast({ title: '请选择' + item.value.title });
return false;
}
if (this.$util.timeTurnTimeStamp(item.start_date) > this.$util.timeTurnTimeStamp(item.end_date)) {
- this.$util.showToast({ title: $lang('common.ns-form.l470.t0') });
+ this.$util.showToast({ title: '结束日期不能小于开始日期' });
return false;
}
}
if (item.controller == 'Time' && item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l37.t0') + item.value.title });
+ this.$util.showToast({ title: '请选择' + item.value.title });
return false;
}
if (item.controller == 'Timelimit') {
if (item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l37.t0') + item.value.title });
+ this.$util.showToast({ title: '请选择' + item.value.title });
return false;
}
if (item.start_time >= item.end_time) {
- this.$util.showToast({ title: $lang('common.ns-form.l498.t0') });
+ this.$util.showToast({ title: '结束时间必须大于开始时间' });
return false;
}
}
if (item.controller == 'City' && item.value.required && !item.val) {
- this.$util.showToast({ title: $lang('common.ns-form.l37.t0') + item.value.title });
+ this.$util.showToast({ title: '请选择' + item.value.title });
return false;
}
}
@@ -902,7 +902,7 @@ export default {
if (res.length > 0) {
res.forEach(function(img) {
if (self.formData[index].img_lists.length >= Number(self.formData[index].value.max_count)) {
- self.$util.showToast({ title: $lang('common.ns-form.l545.t0') + self.formData[index].value.max_count + $lang('common.ns-form.l545.t1') });
+ self.$util.showToast({ title: '最多上传' + self.formData[index].value.max_count + '张图片' });
return false;
}
self.formData[index].img_lists.push(img);
@@ -916,7 +916,7 @@ export default {
addImg(index) {
let self = this;
if (this.formData[index].img_lists.length >= Number(this.formData[index].value.max_count)) {
- this.$util.showToast({ title: $lang('common.ns-form.l545.t0') + this.formData[index].value.max_count + $lang('common.ns-form.l545.t1') });
+ this.$util.showToast({ title: '最多上传' + this.formData[index].value.max_count + '张图片' });
return false;
}
diff --git a/components/ns-payment/ns-payment.vue b/components/ns-payment/ns-payment.vue
index 54ef886..6550598 100644
--- a/components/ns-payment/ns-payment.vue
+++ b/components/ns-payment/ns-payment.vue
@@ -1,643 +1,643 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ns-select-time/ns-select-time.vue b/components/ns-select-time/ns-select-time.vue
index 2fdcd00..8d39484 100644
--- a/components/ns-select-time/ns-select-time.vue
+++ b/components/ns-select-time/ns-select-time.vue
@@ -1,365 +1,365 @@
-
-
-
-
-
- {{ $lang("common.ns-select-time.l6.t0") }}
- {{ $lang("common.ns-select-time.l7.t0") }}
-
-
-
-
-
-
- {{ item.title }}
- {{ item.month }}
- {{ item.Day }}
-
-
-
-
-
- {{ item }}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ 选择送达时间
+ 选择自提时间
+
+
+
+
+
+
+ {{ item.title }}
+ {{ item.month }}
+ {{ item.Day }}
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/ns-video-player-popup/ns-video-player-popup.vue b/components/ns-video-player-popup/ns-video-player-popup.vue
index 3a07c00..774b25f 100644
--- a/components/ns-video-player-popup/ns-video-player-popup.vue
+++ b/components/ns-video-player-popup/ns-video-player-popup.vue
@@ -1,145 +1,145 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/payment/payment.vue b/components/payment/payment.vue
index 8aa1aab..501039a 100644
--- a/components/payment/payment.vue
+++ b/components/payment/payment.vue
@@ -1,647 +1,647 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/pick-regions/pick-regions.vue b/components/pick-regions/pick-regions.vue
index 9480a62..4260088 100644
--- a/components/pick-regions/pick-regions.vue
+++ b/components/pick-regions/pick-regions.vue
@@ -14,8 +14,8 @@
diff --git a/components/privacy-popup/privacy-popup.vue b/components/privacy-popup/privacy-popup.vue
index 4dbbcb8..d4c30fe 100644
--- a/components/privacy-popup/privacy-popup.vue
+++ b/components/privacy-popup/privacy-popup.vue
@@ -2,7 +2,7 @@
- {{ $lang("common.privacy-popup.l5.t0") }}
+ 用户隐私保护提示
感谢您使用{{ appName }},在使用前您应当阅读并同意
{{ privacyContractName }}
@@ -12,13 +12,13 @@
,当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用{{ appName }}相关功能。
-
+
+ @agreeprivacyauthorization="handleAgree">同意并继续
-
+
@@ -43,12 +43,12 @@ export default {
showPop: false,
privacyAuthorization: null,
privacyResolves: new Set(),
- privacyContractName: $lang('common.privacy-popup.l46.t0'),
- appName: $lang('common.privacy-popup.l47.t0'),
+ privacyContractName: '用户隐私保护指引',
+ appName: '本小程序',
// #ifdef WEB || H5
- appName: $lang('common.privacy-popup.l49.t0'),
- privacyContractName: $lang('common.ns-login.l51.t0'),
- privacyServiceName: $lang('common.ns-login.l53.t0'),
+ appName: '本应用',
+ privacyContractName: '《隐私条款》',
+ privacyServiceName: '《用户服务协议》',
// #endif
}
},
@@ -79,7 +79,7 @@ export default {
}
// #endif
} catch (e) {
- console.error($lang("common.privacy-popup.l82.t0"), e)
+ console.error("=========低版本基础库==========", e)
}
},
methods: {
@@ -250,7 +250,7 @@ export default {
uni.setStorageSync('privacyAgreed', true);
uni.showModal({
- content: $lang('common.privacy-popup.l253.t0'),
+ content: '未同意隐私协议,无法使用相关功能',
success: () => {
this.$emit('disagree')
}
diff --git a/components/register-reward/register-reward.vue b/components/register-reward/register-reward.vue
index 3611276..a23f850 100644
--- a/components/register-reward/register-reward.vue
+++ b/components/register-reward/register-reward.vue
@@ -1,292 +1,292 @@
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/components/wxwork-contact/wxwork-contact.vue b/components/wxwork-contact/wxwork-contact.vue
index 4e0d6f3..ccd3073 100644
--- a/components/wxwork-contact/wxwork-contact.vue
+++ b/components/wxwork-contact/wxwork-contact.vue
@@ -13,14 +13,14 @@
@@ -36,7 +36,7 @@
// 按钮文字
btnText: {
type: String,
- default: $lang('common.wxwork-contact.l16.t0')
+ default: '添加企业微信客服'
},
// 企业ID(必需)
corpId: {
@@ -105,11 +105,11 @@
});
if (!initResult) {
- console.error($lang('common.wxwork-contact.l108.t0'));
+ console.error('企业微信SDK初始化失败');
}
}
} catch (error) {
- console.error($lang('common.wxwork-contact.l112.t0'), error);
+ console.error('初始化企业微信SDK失败:', error);
}
},
@@ -142,7 +142,7 @@
// 方案2:使用SDK打开用户资料
this.openUserProfile(contactId);
} else {
- this.showError($lang('common.wxwork-contact.l145.t0'));
+ this.showError('未配置企业微信客服信息');
}
// #endif
@@ -151,7 +151,7 @@
// H5环境直接跳转
window.location.href = contactUrl;
} else {
- this.showError($lang('common.wxwork-contact.l145.t0'));
+ this.showError('未配置企业微信客服信息');
}
// #endif
},
@@ -165,13 +165,13 @@
path: `pages/contacts/externalContactDetail?url=${encodeURIComponent(contactUrl)}`,
success: () => {
this.$util.showToast({
- title: $lang('common.wxwork-contact.l168.t0'),
+ title: '跳转成功',
icon: 'success'
});
},
fail: (err) => {
- console.error($lang('common.wxwork-contact.l173.t0'), err);
- this.showError($lang('common.wxwork-contact.l174.t0'));
+ console.error('跳转企业微信失败:', err);
+ this.showError('跳转失败,请检查企业微信配置');
}
});
},
@@ -181,7 +181,7 @@
*/
openUserProfile(contactId) {
if (!this.wxWorkSDK) {
- this.showError($lang('common.wxwork-contact.l184.t0'));
+ this.showError('企业微信SDK未初始化');
return;
}
@@ -189,8 +189,8 @@
userId: contactId
}, (res) => {
}, (err) => {
- console.error($lang('common.wxwork-contact.l192.t0'), err);
- this.showError($lang('common.wxwork-contact.l193.t0'));
+ console.error('打开用户资料失败:', err);
+ this.showError('打开用户资料失败');
});
},
@@ -199,7 +199,7 @@
*/
showError(message) {
uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
+ title: '提示',
content: message,
showCancel: false
});
diff --git a/components/yuyue-date/yuyue-date.js b/components/yuyue-date/yuyue-date.js
index 98db83e..bfe777e 100644
--- a/components/yuyue-date/yuyue-date.js
+++ b/components/yuyue-date/yuyue-date.js
@@ -1,98 +1,98 @@
-//字符串拼接
-export function strFormat(str) {
- return str < 10 ? `0${str}` : str
-}
-// 获取当前时间
-export function currentTime() {
- const myDate = new Date();
- const year = myDate.getFullYear()
- const m = myDate.getMonth() + 1;
- const d = myDate.getDate();
- // const date = year + '-' + strFormat(m) + '-' + strFormat(d); // 隐藏年
- const date = strFormat(m) + '-' + strFormat(d);
-
- const hour = myDate.getHours()
- const min = myDate.getMinutes()
- const secon = myDate.getSeconds()
- const time = strFormat(hour) + ':' + strFormat(min) + ':' + strFormat(secon);
- return {
- year,
- date,
- time
- }
-}
-
-//时间戳转日期
-export function timeStamp(time) {
- const dates = new Date(time)
- const year = dates.getFullYear()
- const month = dates.getMonth() + 1
- const date = dates.getDate()
- const day = dates.getDay()
- const hour = dates.getHours()
- const min = dates.getMinutes()
- const days = [$lang('common.ns-select-time.l98.t0'), $lang('common.yuyue-date.l34.t0'), $lang('common.yuyue-date.l34.t1'), $lang('common.yuyue-date.l34.t2'), $lang('common.yuyue-date.l34.t3'), $lang('common.yuyue-date.l34.t4'), $lang('common.yuyue-date.l34.t5')]
- return {
- allDate: `${year}/${strFormat(month)}/${strFormat(date)}`,
- date: `${strFormat(month)}-${strFormat(date)}`, //返回的日期 07-01,${strFormat(year)}-${strFormat(month)}-${strFormat(date)}
- day: $lang(`common.yuyue-date.l38.t0`), //返回的礼拜天数 星期一
- hour: strFormat(hour) + ':' + strFormat(min) // + ':00' //返回的时钟 08:00
- }
-}
-
-//获取最近7天的日期和礼拜天数
-export function initData(appointedDay = '') {
- const time = []
- const date = appointedDay ? new Date(appointedDay) : new Date()
-
- const now = date.getTime() //获取当前日期的时间戳
- let timeStr = 3600 * 24 * 1000 //一天的时间戳
- let obj = {
- 0: $lang("common.ns-select-time.l173.t0"),
- 1: $lang("common.ns-select-time.l185.t0"),
- 2: $lang("common.yuyue-date.l53.t0")
- }
- for (let i = 0; i < 7; i++) {
- const timeObj = {}
- timeObj.date = timeStamp(now + timeStr * i).date //保存日期
- timeObj.timeStamp = now + timeStr * i //保存时间戳
- timeObj.week = appointedDay == '' ? (obj[i] ?? timeStamp(now + timeStr * i).day) : timeStamp(now + timeStr * i)
- .day
- time.push(timeObj)
- }
- return time
-}
-
-//时间数组
-export function initTime(startTime = '09:00', endTime = '18:30', timeInterval = 1) {
- const time = []
- const date = timeStamp(Date.now()).allDate
- const startDate = `${date} ${startTime}`
- const endDate = `${date} ${endTime}`
- const startTimeStamp = new Date(startDate).getTime()
- const endTimeStamp = new Date(endDate).getTime()
- const timeStr = 3600 * 1000 * timeInterval
- for (let i = startTimeStamp; i <= endTimeStamp; i = i + timeStr) {
- const timeObj = {}
- timeObj.time = timeStamp(i).hour
- timeObj.disable = false
- time.push(timeObj)
- }
- return time
-}
-
-export function weekDate(){
- var now = new Date(); //当前日期
- var nowDayOfWeek = now.getDay(); //今天本周的第几天
- var nowDay = now.getDate(); //当前日
- var nowMonth = now.getMonth(); //当前月
- var nowYear = now.getYear(); //当前年
-
- var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1);
- var weekEndDate = new Date(nowYear, nowMonth, nowDay + (7 - nowDayOfWeek));
-
- var arr = [];
- arr[0] = strFormat(weekStartDate.getMonth()+1) + '-' + strFormat(weekStartDate.getDate());
- arr[1] = strFormat(weekEndDate.getMonth()+1) + '-' + strFormat(weekEndDate.getDate());
- return arr;
-}
+//字符串拼接
+export function strFormat(str) {
+ return str < 10 ? `0${str}` : str
+}
+// 获取当前时间
+export function currentTime() {
+ const myDate = new Date();
+ const year = myDate.getFullYear()
+ const m = myDate.getMonth() + 1;
+ const d = myDate.getDate();
+ // const date = year + '-' + strFormat(m) + '-' + strFormat(d); // 隐藏年
+ const date = strFormat(m) + '-' + strFormat(d);
+
+ const hour = myDate.getHours()
+ const min = myDate.getMinutes()
+ const secon = myDate.getSeconds()
+ const time = strFormat(hour) + ':' + strFormat(min) + ':' + strFormat(secon);
+ return {
+ year,
+ date,
+ time
+ }
+}
+
+//时间戳转日期
+export function timeStamp(time) {
+ const dates = new Date(time)
+ const year = dates.getFullYear()
+ const month = dates.getMonth() + 1
+ const date = dates.getDate()
+ const day = dates.getDay()
+ const hour = dates.getHours()
+ const min = dates.getMinutes()
+ const days = ['日', '一', '二', '三', '四', '五', '六']
+ return {
+ allDate: `${year}/${strFormat(month)}/${strFormat(date)}`,
+ date: `${strFormat(month)}-${strFormat(date)}`, //返回的日期 07-01,${strFormat(year)}-${strFormat(month)}-${strFormat(date)}
+ day: `周${days[day]}`, //返回的礼拜天数 星期一
+ hour: strFormat(hour) + ':' + strFormat(min) // + ':00' //返回的时钟 08:00
+ }
+}
+
+//获取最近7天的日期和礼拜天数
+export function initData(appointedDay = '') {
+ const time = []
+ const date = appointedDay ? new Date(appointedDay) : new Date()
+
+ const now = date.getTime() //获取当前日期的时间戳
+ let timeStr = 3600 * 24 * 1000 //一天的时间戳
+ let obj = {
+ 0: "今天",
+ 1: "明天",
+ 2: "后天"
+ }
+ for (let i = 0; i < 7; i++) {
+ const timeObj = {}
+ timeObj.date = timeStamp(now + timeStr * i).date //保存日期
+ timeObj.timeStamp = now + timeStr * i //保存时间戳
+ timeObj.week = appointedDay == '' ? (obj[i] ?? timeStamp(now + timeStr * i).day) : timeStamp(now + timeStr * i)
+ .day
+ time.push(timeObj)
+ }
+ return time
+}
+
+//时间数组
+export function initTime(startTime = '09:00', endTime = '18:30', timeInterval = 1) {
+ const time = []
+ const date = timeStamp(Date.now()).allDate
+ const startDate = `${date} ${startTime}`
+ const endDate = `${date} ${endTime}`
+ const startTimeStamp = new Date(startDate).getTime()
+ const endTimeStamp = new Date(endDate).getTime()
+ const timeStr = 3600 * 1000 * timeInterval
+ for (let i = startTimeStamp; i <= endTimeStamp; i = i + timeStr) {
+ const timeObj = {}
+ timeObj.time = timeStamp(i).hour
+ timeObj.disable = false
+ time.push(timeObj)
+ }
+ return time
+}
+
+export function weekDate(){
+ var now = new Date(); //当前日期
+ var nowDayOfWeek = now.getDay(); //今天本周的第几天
+ var nowDay = now.getDate(); //当前日
+ var nowMonth = now.getMonth(); //当前月
+ var nowYear = now.getYear(); //当前年
+
+ var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1);
+ var weekEndDate = new Date(nowYear, nowMonth, nowDay + (7 - nowDayOfWeek));
+
+ var arr = [];
+ arr[0] = strFormat(weekStartDate.getMonth()+1) + '-' + strFormat(weekStartDate.getDate());
+ arr[1] = strFormat(weekEndDate.getMonth()+1) + '-' + strFormat(weekEndDate.getDate());
+ return arr;
+}
diff --git a/components/yuyue-date/yuyue-date.vue b/components/yuyue-date/yuyue-date.vue
index 23dba03..a43125e 100644
--- a/components/yuyue-date/yuyue-date.vue
+++ b/components/yuyue-date/yuyue-date.vue
@@ -3,7 +3,7 @@
@@ -20,7 +20,7 @@
- {{ $lang("common.yuyue-date.l23.t0") }}
+ 指定日期
@@ -54,13 +54,13 @@
-
+
@@ -100,12 +100,12 @@
disableText: {
//禁用显示的文本
type: String,
- default: $lang('common.yuyue-date.l103.t0')
+ default: '已约满'
},
undisableText: {
//未禁用显示的文本
type: String,
- default: $lang('common.yuyue-date.l108.t0')
+ default: '可预约'
},
timeInterval: {
// 时间间隔,小时为单位
@@ -173,7 +173,7 @@
return {
pickerStartDay: '', // 指定开始日期
pickerEndDay: '', // 指定结束日期
- orderDateTime: $lang('common.yuyue-date.l176.t0'), // 选中时间
+ orderDateTime: '暂无选择', // 选中时间
orderTimeArr: {}, //多选的时间
dateArr: [], //日期数据
timeArr: [], //时间数据
@@ -209,11 +209,11 @@
let date = e.split("-");
date = date[1] + "-" + date[2];
if (this.disableWeek.length && date >= weekDate()[0] && date <= weekDate()[1]) {
- let weekBox = [$lang('common.ns-select-time.l148.t0'), $lang('common.ns-select-time.l148.t1'), $lang('common.ns-select-time.l148.t2'), $lang('common.ns-select-time.l148.t3'), $lang('common.ns-select-time.l148.t4'), $lang('common.ns-select-time.l148.t5'), $lang('common.ns-select-time.l148.t6')];
+ let weekBox = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
let index = new Date(e).getDay();
if (this.disableWeek.indexOf(weekBox[index]) != -1) {
uni.showToast({
- title: weekBox[index] + $lang('common.yuyue-date.l216.t0'),
+ title: weekBox[index] + '不可以预约',
icon: 'none'
})
return false;
@@ -231,7 +231,7 @@
// 判断默认是不能选择的周,则都禁止选中
if (this.disableWeek.length && this.selectDate >= weekDate()[0] && this.selectDate <=
weekDate()[1]) {
- let weekBox = [$lang('common.ns-select-time.l148.t0'), $lang('common.ns-select-time.l148.t1'), $lang('common.ns-select-time.l148.t2'), $lang('common.ns-select-time.l148.t3'), $lang('common.ns-select-time.l148.t4'), $lang('common.ns-select-time.l148.t5'), $lang('common.ns-select-time.l148.t6')];
+ let weekBox = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
let date = currentTime().year + '-' + this.selectDate;
let index = new Date(date).getDay();
if (this.disableWeek.indexOf(weekBox[index]) != -1) {
@@ -297,11 +297,11 @@
// 日期选择事件
selectDateEvent(index, item) {
if (this.disableWeek.length && item.date >= weekDate()[0] && item.date <= weekDate()[1]) {
- let weekBox = [$lang('common.ns-select-time.l148.t0'), $lang('common.ns-select-time.l148.t1'), $lang('common.ns-select-time.l148.t2'), $lang('common.ns-select-time.l148.t3'), $lang('common.ns-select-time.l148.t4'), $lang('common.ns-select-time.l148.t5'), $lang('common.ns-select-time.l148.t6')];
+ let weekBox = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
let index = new Date(item.timeStamp).getDay();
if (this.disableWeek.indexOf(weekBox[index]) != -1) {
uni.showToast({
- title: weekBox[index] + $lang('common.yuyue-date.l216.t0'),
+ title: weekBox[index] + '不可以预约',
icon: 'none'
})
return false;
diff --git a/lang/en-us.js b/lang/en-us.js
deleted file mode 100644
index 8c33e83..0000000
--- a/lang/en-us.js
+++ /dev/null
@@ -1,1911 +0,0 @@
-// Auto-generated by i18n_build_zhcn.py
-// Single authoritative lang source. Do not edit manually.
-// locale: en-us
-// Generated: 2026-06-23
-
-export const lang = {
- "common": {
- "chat-message.l60.t0": "",
- "chat-message.l63.t0": "",
- "currency_symbol": "¥",
- "hover-nav.l192.t0": "",
- "hover-nav.l239.t0": "",
- "l460": "",
- "l466": "",
- "l477": "",
- "l496": "",
- "l506": "",
- "l-time.l40.t0": "",
- "l-time.l40.t1": "",
- "l-time.time.l110.t0": "",
- "l-time.time.l119.t0": "",
- "mescroll.mescroll-uni-option.l30.t0": "",
- "mescroll.mescroll-uni-option.l6.t0": "",
- "mescroll.mescroll-uni-option.l7.t0": "",
- "mescroll.mescroll-uni-option.l8.t0": "",
- "mescroll.my-list-mescroll.l44.t0": "",
- "mescroll.my-list-mescroll.l45.t0": "",
- "ns-chat.ns-chat-goods.l12.t0": "",
- "ns-chat.ns-chat-goods.l25.t0": "",
- "ns-chat.ns-chat-order.l7.t0": "",
- "ns-chat.ns-chat-order.l8.t0": "",
- "ns-chat.ns-chat-receiveGoods.l9.t0": "",
- "ns-contact.l32.t0": "",
- "ns-contact.l35.t0": "",
- "ns-contact.l35.t1": "",
- "ns-copyright.l13.t0": "",
- "ns-empty.l18.t0": "",
- "ns-empty.l31.t0": "",
- "ns-form.l191.t0": "",
- "ns-form.l191.t1": "",
- "ns-form.l368.t0": "",
- "ns-form.l37.t0": "",
- "ns-form.l378.t0": "",
- "ns-form.l395.t0": "",
- "ns-form.l432.t0": "",
- "ns-form.l442.t0": "",
- "ns-form.l470.t0": "",
- "ns-form.l498.t0": "",
- "ns-form.l545.t0": "",
- "ns-form.l545.t1": "",
- "ns-goods-recommend.l13.t0": "",
- "ns-goods-recommend.l20.t0": "",
- "ns-goods-sku.l1007.t0": "",
- "ns-goods-sku.l1014.t0": "",
- "ns-goods-sku.l120.t0": "",
- "ns-goods-sku.l124.t0": "",
- "ns-goods-sku.l161.t0": "",
- "ns-goods-sku.l162.t0": "",
- "ns-goods-sku.l163.t0": "",
- "ns-goods-sku.l167.t0": "",
- "ns-goods-sku.l185.t0": "",
- "ns-goods-sku.l195.t0": "",
- "ns-goods-sku.l196.t0": "",
- "ns-goods-sku.l199.t0": "",
- "ns-goods-sku.l208.t0": "",
- "ns-goods-sku.l51.t0": "",
- "ns-goods-sku.l710.t0": "",
- "ns-goods-sku.l897.t0": "",
- "ns-goods-sku.l897.t1": "",
- "ns-goods-sku.l985.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l264.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l272.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l278.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l279.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l378.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l388.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l459.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l75.t0": "",
- "ns-goods-sku.ns-goods-sku-category.l76.t0": "",
- "ns-goods-sku.ns-goods-sku-index.l124.t0": "",
- "ns-goods-sku.ns-goods-sku-index.l150.t0": "",
- "ns-goods-sku.ns-goods-sku-index.l70.t0": "",
- "ns-loading.l16.t0": "",
- "ns-login.l10.t0": "",
- "ns-login.l11.t0": "",
- "ns-login.l115.t0": "",
- "ns-login.l15.t0": "",
- "ns-login.l16.t0": "",
- "ns-login.l169.t0": "",
- "ns-login.l19.t0": "",
- "ns-login.l20.t0": "",
- "ns-login.l231.t0": "",
- "ns-login.l24.t0": "",
- "ns-login.l25.t0": "",
- "ns-login.l30.t0": "",
- "ns-login.l327.t0": "",
- "ns-login.l35.t0": "",
- "ns-login.l37.t0": "",
- "ns-login.l37.t1": "",
- "ns-login.l393.t0": "",
- "ns-login.l414.t0": "",
- "ns-login.l51.t0": "",
- "ns-login.l53.t0": "",
- "ns-login.l606.t0": "",
- "ns-login.l61.t0": "",
- "ns-login.l646.t0": "",
- "ns-login.l66.t0": "",
- "ns-login.l672.t0": "",
- "ns-login.l718.t0": "",
- "ns-login.l79.t0": "",
- "ns-login.l87.t0": "",
- "ns-login.l88.t0": "",
- "ns-navbar.l31.t0": "",
- "ns-navbar.l39.t0": "",
- "ns-navbar.l41.t0": "",
- "ns-newform.l149.t0": "",
- "ns-newform.l173.t0": "",
- "ns-newform.l187.t0": "",
- "ns-newform.l210.t0": "",
- "ns-newform.l234.t0": "",
- "ns-newform.l248.t0": "",
- "ns-newform.l271.t0": "",
- "ns-payment.l13.t0": "",
- "ns-payment.l161.t0": "",
- "ns-payment.l166.t0": "",
- "ns-payment.l18.t0": "",
- "ns-payment.l185.t0": "",
- "ns-payment.l19.t0": "",
- "ns-payment.l298.t0": "",
- "ns-payment.l34.t0": "",
- "ns-payment.l39.t0": "",
- "ns-payment.l398.t0": "",
- "ns-payment.l7.t0": "",
- "ns-payment.l75.t0": "",
- "ns-payment.l80.t0": "",
- "ns-select-time.l148.t0": "",
- "ns-select-time.l148.t1": "",
- "ns-select-time.l148.t2": "",
- "ns-select-time.l148.t3": "",
- "ns-select-time.l148.t4": "",
- "ns-select-time.l148.t5": "",
- "ns-select-time.l148.t6": "",
- "ns-select-time.l173.t0": "",
- "ns-select-time.l185.t0": "",
- "ns-select-time.l6.t0": "",
- "ns-select-time.l7.t0": "",
- "ns-select-time.l89.t0": "",
- "ns-select-time.l96.t0": "",
- "ns-select-time.l98.t0": "",
- "ns-video-player-popup.l17.t0": "",
- "l18": "",
- "pick-regions.l17.t0": "",
- "pick-regions.l18.t0": "",
- "privacy-popup.l15.t0": "",
- "privacy-popup.l18.t0": "",
- "privacy-popup.l253.t0": "",
- "privacy-popup.l46.t0": "",
- "privacy-popup.l47.t0": "",
- "privacy-popup.l49.t0": "",
- "privacy-popup.l5.t0": "",
- "privacy-popup.l82.t0": "",
- "register-reward.l14.t0": "",
- "register-reward.l19.t0": "",
- "register-reward.l21.t0": "",
- "register-reward.l23.t0": "",
- "register-reward.l27.t0": "",
- "register-reward.l34.t0": "",
- "register-reward.l40.t0": "",
- "register-reward.l45.t0": "",
- "register-reward.l47.t0": "",
- "register-reward.l53.t0": "",
- "register-reward.l60.t0": "",
- "register-reward.l60.t1": "",
- "register-reward.l60.t2": "",
- "search_tip": "Please enter search keywords",
- "submit": "Submit",
- "wxwork-contact.l108.t0": "",
- "wxwork-contact.l112.t0": "",
- "wxwork-contact.l145.t0": "",
- "wxwork-contact.l16.t0": "",
- "wxwork-contact.l168.t0": "",
- "wxwork-contact.l173.t0": "",
- "wxwork-contact.l174.t0": "",
- "wxwork-contact.l184.t0": "",
- "wxwork-contact.l19.t0": "",
- "wxwork-contact.l192.t0": "",
- "wxwork-contact.l193.t0": "",
- "wxwork-contact.l202.t0": "",
- "yuyue-date.l103.t0": "",
- "yuyue-date.l108.t0": "",
- "yuyue-date.l176.t0": "",
- "yuyue-date.l216.t0": "",
- "yuyue-date.l23.t0": "",
- "yuyue-date.l34.t0": "",
- "yuyue-date.l34.t1": "",
- "yuyue-date.l34.t2": "",
- "yuyue-date.l34.t3": "",
- "yuyue-date.l34.t4": "",
- "yuyue-date.l34.t5": "",
- "yuyue-date.l38.t0": "",
- "yuyue-date.l53.t0": "",
- "yuyue-date.l57.t0": "",
- "yuyue-date.l6.t0": "",
- "yuyue-date.l60.t0": "",
- "yuyue-date.l63.t0": "",
- },
- "customer": {
- },
- "pageTitles": {
- "article.detail": "文章详情",
- "article.list": "文章列表",
- "bale.detail": "",
- "bale.payment": "待付款订单",
- "bargain.detail": "",
- "bargain.launch": "砍价详情",
- "bargain.list": "砍价专区",
- "bargain.my_bargain": "我的砍价",
- "bargain.payment": "待付款订单",
- "combo.detail": "组合套餐",
- "combo.payment": "待付款订单",
- "contact.contact": "电子名片",
- "diy.diy": "",
- "fenxiao.apply": "",
- "fenxiao.bill": "账单",
- "fenxiao.follow": "我的关注",
- "fenxiao.goods_list": "",
- "fenxiao.index": "",
- "fenxiao.level": "",
- "fenxiao.order": "",
- "fenxiao.order_detail": "订单详情",
- "fenxiao.promote_code": "推广海报",
- "fenxiao.team": "",
- "fenxiao.withdraw_apply": "",
- "fenxiao.withdraw_list": "",
- "game.cards": "刮刮乐",
- "game.record": "中奖纪录",
- "game.smash_eggs": "砸金蛋",
- "game.turntable": "大转盘",
- "goods.brand": "品牌专区",
- "goods.cart": "购物车",
- "goods.category": "商品分类",
- "goods.consult": "商品咨询",
- "goods.consult_edit": "我要咨询",
- "goods.coupon": "优惠券领取",
- "goods.coupon_receive": "领取优惠券",
- "goods.detail": "",
- "goods.evaluate": "商品评价",
- "goods.list": "商品列表",
- "goods.not_exist": "商品找不到",
- "goods.point": "积分中心",
- "goods.search": "搜索",
- "groupbuy.detail": "",
- "groupbuy.list": "团购专区",
- "groupbuy.payment": "待付款订单",
- "help.detail": "帮助详情",
- "help.list": "帮助中心",
- "hongbao.list": "瓜分红包列表",
- "hongbao.my_hongbao": "我的红包列表",
- "index.index": "",
- "live.list": "直播",
- "login.find": "找回密码",
- "login.login": "登录",
- "login.register": "注册",
- "member.account": "账户列表",
- "member.account_edit": "编辑账户",
- "member.address": "收货地址",
- "member.address_edit": "编辑收货地址",
- "member.apply_withdrawal": "申请提现",
- "member.assets": "账号注销",
- "member.balance": "我的余额",
- "member.balance_detail": "余额明细",
- "member.cancellation": "账号注销",
- "member.cancelrefuse": "账号注销",
- "member.cancelstatus": "账号注销",
- "member.cancelsuccess": "账号注销",
- "member.card": "会员卡",
- "member.card_buy": "会员卡",
- "member.collection": "我的关注",
- "member.contact": "客服",
- "member.coupon": "我的优惠券",
- "member.footprint": "我的足迹",
- "member.gift": "我的礼品",
- "member.gift_detail": "礼品订单",
- "member.index": "会员中心",
- "member.info": "个人资料",
- "member.info_edit": "个人资料",
- "member.invite_friends": "邀请好友",
- "member.level": "会员等级",
- "member.message": "我的消息",
- "member.modify_face": "修改头像",
- "member.pay_password": "支付密码",
- "member.point": "我的积分",
- "member.point_detail": "积分明细",
- "member.signin": "签到有礼",
- "member.withdrawal": "提现记录",
- "member.withdrawal_detail": "提现详情",
- "notice.detail": "公告详情",
- "notice.list": "公告列表",
- "order.activist": "售后",
- "order.detail": "订单详情",
- "order.detail_local_delivery": "订单详情",
- "order.detail_pickup": "订单详情",
- "order.detail_point": "订单详情",
- "order.detail_virtual": "订单详情",
- "order.evaluate": "我要评价",
- "order.list": "订单列表",
- "order.logistics": "物流信息",
- "order.payment": "待付款订单",
- "order.refund": "申请退款",
- "order.refund_batch": "申请退款",
- "order.refund_detail": "退款详情",
- "pay.index": "支付方式",
- "pay.result": "支付结果",
- "pintuan.detail": "",
- "pintuan.list": "拼团专区",
- "pintuan.my_spell": "我的拼单",
- "pintuan.payment": "待付款订单",
- "pintuan.share": "拼团分享",
- "point.detail": "兑换",
- "point.list": "积分商城",
- "point.order_detail": "积分兑换订单详情",
- "point.order_list": "积分兑换",
- "point.payment": "待付款订单",
- "point.result": "兑换结果",
- "presale.detail": "",
- "presale.list": "预售专区",
- "presale.order_detail": "订单详情",
- "presale.order_list": "我的预售",
- "presale.payment": "待付款订单",
- "recharge.detail": "充值详情",
- "recharge.list": "充值列表",
- "recharge.order_list": "充值记录",
- "seckill.detail": "",
- "seckill.list": "秒杀专区",
- "seckill.payment": "待付款订单",
- "store_notes.note_detail": "笔记详情",
- "store_notes.note_list": "店铺笔记",
- "storeclose.storeclose": "店铺打烊",
- "topics.detail": "专题活动详情",
- "topics.goods_detail": "",
- "topics.list": "专题活动列表",
- "topics.payment": "待付款订单",
- "verification.detail": "核销明细",
- "verification.index": "核销台",
- "verification.list": "核销记录",
- "vr.index": "VR",
- },
- "tabBar": {
- },
- "address": {
- },
- "aiChat": {
- },
- "ai_chat": {
- "ai-chat.ai-chat-message.l1026.t0": "",
- "ai-chat.ai-chat-message.l1082.t0": "",
- "ai-chat.ai-chat-message.l1100.t0": "",
- "ai-chat.ai-chat-message.l1101.t0": "",
- "ai-chat.ai-chat-message.l1102.t0": "",
- "ai-chat.ai-chat-message.l1103.t0": "",
- "ai-chat.ai-chat-message.l1128.t0": "",
- "ai-chat.ai-chat-message.l1128.t1": "",
- "ai-chat.ai-chat-message.l1129.t0": "",
- "ai-chat.ai-chat-message.l1130.t0": "",
- "ai-chat.ai-chat-message.l1130.t1": "",
- "ai-chat.ai-chat-message.l1131.t0": "",
- "ai-chat.ai-chat-message.l1131.t1": "",
- "ai-chat.ai-chat-message.l1132.t0": "",
- "ai-chat.ai-chat-message.l1132.t1": "",
- "ai-chat.ai-chat-message.l1139.t0": "",
- "ai-chat.ai-chat-message.l1139.t1": "",
- "ai-chat.ai-chat-message.l1429.t0": "",
- "ai-chat.ai-chat-message.l1477.t0": "",
- "ai-chat.ai-chat-message.l1483.t0": "",
- "ai-chat.ai-chat-message.l1691.t0": "",
- "ai-chat.ai-chat-message.l1691.t1": "",
- "ai-chat.ai-chat-message.l1705.t0": "",
- "ai-chat.ai-chat-message.l1705.t1": "",
- "ai-chat.ai-chat-message.l1709.t0": "",
- "ai-chat.ai-chat-message.l1713.t0": "",
- "ai-chat.ai-chat-message.l1714.t0": "",
- "ai-chat.ai-chat-message.l1714.t1": "",
- "ai-chat.ai-chat-message.l1971.t0": "",
- "ai-chat.ai-chat-message.l1972.t0": "",
- "ai-chat.ai-chat-message.l1973.t0": "",
- "ai-chat.ai-chat-message.l1974.t0": "",
- "ai-chat.ai-chat-message.l1975.t0": "",
- "ai-chat.ai-chat-message.l1976.t0": "",
- "ai-chat.ai-chat-message.l1977.t0": "",
- "ai-chat.ai-chat-message.l1978.t0": "",
- "ai-chat.ai-chat-message.l1979.t0": "",
- "ai-chat.ai-chat-message.l1980.t0": "",
- "ai-chat.ai-chat-message.l1981.t0": "",
- "ai-chat.ai-chat-message.l1983.t0": "",
- "ai-chat.ai-chat-message.l1984.t0": "",
- "ai-chat.ai-chat-message.l1985.t0": "",
- "ai-chat.ai-chat-message.l1987.t0": "",
- "ai-chat.ai-chat-message.l1989.t0": "",
- "ai-chat.ai-chat-message.l1990.t0": "",
- "ai-chat.ai-chat-message.l1991.t0": "",
- "ai-chat.ai-chat-message.l1996.t0": "",
- "ai-chat.ai-chat-message.l1997.t0": "",
- "ai-chat.ai-chat-message.l1998.t0": "",
- "ai-chat.ai-chat-message.l1999.t0": "",
- "ai-chat.ai-chat-message.l2001.t0": "",
- "ai-chat.ai-chat-message.l2003.t0": "",
- "ai-chat.ai-chat-message.l2004.t0": "",
- "ai-chat.ai-chat-message.l2005.t0": "",
- "ai-chat.ai-chat-message.l2006.t0": "",
- "ai-chat.ai-chat-message.l2007.t0": "",
- "ai-chat.ai-chat-message.l2008.t0": "",
- "ai-chat.ai-chat-message.l2010.t0": "",
- "ai-chat.ai-chat-message.l2011.t0": "",
- "ai-chat.ai-chat-message.l2012.t0": "",
- "ai-chat.ai-chat-message.l2014.t0": "",
- "ai-chat.ai-chat-message.l2015.t0": "",
- "ai-chat.ai-chat-message.l2017.t0": "",
- "ai-chat.ai-chat-message.l2018.t0": "",
- "ai-chat.ai-chat-message.l2019.t0": "",
- "ai-chat.ai-chat-message.l2020.t0": "",
- "ai-chat.ai-chat-message.l2021.t0": "",
- "ai-chat.ai-chat-message.l2022.t0": "",
- "ai-chat.ai-chat-message.l2023.t0": "",
- "ai-chat.ai-chat-message.l2024.t0": "",
- "ai-chat.ai-chat-message.l2025.t0": "",
- "ai-chat.ai-chat-message.l2026.t0": "",
- "ai-chat.ai-chat-message.l2027.t0": "",
- "ai-chat.ai-chat-message.l2028.t0": "",
- "ai-chat.ai-chat-message.l2029.t0": "",
- "ai-chat.ai-chat-message.l2031.t0": "",
- "ai-chat.ai-chat-message.l2033.t0": "",
- "ai-chat.ai-chat-message.l2034.t0": "",
- "ai-chat.ai-chat-message.l2036.t0": "",
- "ai-chat.ai-chat-message.l2038.t0": "",
- "ai-chat.ai-chat-message.l2039.t0": "",
- "ai-chat.ai-chat-message.l2040.t0": "",
- "ai-chat.ai-chat-message.l2043.t0": "",
- "ai-chat.ai-chat-message.l2044.t0": "",
- "ai-chat.ai-chat-message.l2045.t0": "",
- "ai-chat.ai-chat-message.l2046.t0": "",
- "ai-chat.ai-chat-message.l2047.t0": "",
- "ai-chat.ai-chat-message.l2048.t0": "",
- "ai-chat.ai-chat-message.l2050.t0": "",
- "ai-chat.ai-chat-message.l2051.t0": "",
- "ai-chat.ai-chat-message.l2054.t0": "",
- "ai-chat.ai-chat-message.l2056.t0": "",
- "ai-chat.ai-chat-message.l2057.t0": "",
- "ai-chat.ai-chat-message.l2059.t0": "",
- "ai-chat.ai-chat-message.l2060.t0": "",
- "ai-chat.ai-chat-message.l2061.t0": "",
- "ai-chat.ai-chat-message.l2062.t0": "",
- "ai-chat.ai-chat-message.l2063.t0": "",
- "ai-chat.ai-chat-message.l2064.t0": "",
- "ai-chat.ai-chat-message.l2065.t0": "",
- "ai-chat.ai-chat-message.l2066.t0": "",
- "ai-chat.ai-chat-message.l2067.t0": "",
- "ai-chat.ai-chat-message.l2068.t0": "",
- "ai-chat.ai-chat-message.l2069.t0": "",
- "ai-chat.ai-chat-message.l2070.t0": "",
- "ai-chat.ai-chat-message.l2071.t0": "",
- "ai-chat.ai-chat-message.l2072.t0": "",
- "ai-chat.ai-chat-message.l2073.t0": "",
- "ai-chat.ai-chat-message.l2074.t0": "",
- "ai-chat.ai-chat-message.l2075.t0": "",
- "ai-chat.ai-chat-message.l2076.t0": "",
- "ai-chat.ai-chat-message.l2080.t0": "",
- "ai-chat.ai-chat-message.l2081.t0": "",
- "ai-chat.ai-chat-message.l2082.t0": "",
- "ai-chat.ai-chat-message.l2083.t0": "",
- "ai-chat.ai-chat-message.l2084.t0": "",
- "ai-chat.ai-chat-message.l2085.t0": "",
- "ai-chat.ai-chat-message.l2086.t0": "",
- "ai-chat.ai-chat-message.l2087.t0": "",
- "ai-chat.ai-chat-message.l2088.t0": "",
- "ai-chat.ai-chat-message.l2089.t0": "",
- "ai-chat.ai-chat-message.l2090.t0": "",
- "ai-chat.ai-chat-message.l2091.t0": "",
- "ai-chat.ai-chat-message.l2092.t0": "",
- "ai-chat.ai-chat-message.l2093.t0": "",
- "ai-chat.ai-chat-message.l2095.t0": "",
- "ai-chat.ai-chat-message.l2096.t0": "",
- "ai-chat.ai-chat-message.l2097.t0": "",
- "ai-chat.ai-chat-message.l2098.t0": "",
- "ai-chat.ai-chat-message.l2099.t0": "",
- "ai-chat.ai-chat-message.l2100.t0": "",
- "ai-chat.ai-chat-message.l2101.t0": "",
- "ai-chat.ai-chat-message.l2102.t0": "",
- "ai-chat.ai-chat-message.l2103.t0": "",
- "ai-chat.ai-chat-message.l2104.t0": "",
- "ai-chat.ai-chat-message.l2105.t0": "",
- "ai-chat.ai-chat-message.l2107.t0": "",
- "ai-chat.ai-chat-message.l2108.t0": "",
- "ai-chat.ai-chat-message.l2109.t0": "",
- "ai-chat.ai-chat-message.l2110.t0": "",
- "ai-chat.ai-chat-message.l2111.t0": "",
- "ai-chat.ai-chat-message.l2112.t0": "",
- "ai-chat.ai-chat-message.l2113.t0": "",
- "ai-chat.ai-chat-message.l2114.t0": "",
- "ai-chat.ai-chat-message.l2115.t0": "",
- "ai-chat.ai-chat-message.l2116.t0": "",
- "ai-chat.ai-chat-message.l2117.t0": "",
- "ai-chat.ai-chat-message.l2118.t0": "",
- "ai-chat.ai-chat-message.l2119.t0": "",
- "ai-chat.ai-chat-message.l2121.t0": "",
- "ai-chat.ai-chat-message.l2125.t0": "",
- "ai-chat.ai-chat-message.l2126.t0": "",
- "ai-chat.ai-chat-message.l2127.t0": "",
- "ai-chat.ai-chat-message.l2128.t0": "",
- "ai-chat.ai-chat-message.l2129.t0": "",
- "ai-chat.ai-chat-message.l2130.t0": "",
- "ai-chat.ai-chat-message.l2131.t0": "",
- "ai-chat.ai-chat-message.l618.t0": "",
- "ai-chat.ai-chat-message.l623.t0": "",
- "ai-chat.ai-chat-message.l627.t0": "",
- "ai-chat.ai-chat-message.l630.t0": "",
- "ai-chat.ai-chat-message.l638.t0": "",
- "ai-chat.ai-chat-message.l649.t0": "",
- "ai-chat.ai-chat-message.l660.t0": "",
- "ai-chat.ai-chat-message.l664.t0": "",
- "ai-chat.ai-chat-message.l672.t0": "",
- "ai-chat.ai-chat-message.l674.t0": "",
- "ai-chat.ai-chat-message.l767.t0": "",
- "ai-chat.ai-chat-message.l771.t0": "",
- "ai-chat.ai-chat-message.l775.t0": "",
- "ai-chat.ai-chat-message.l778.t0": "",
- "ai-chat.ai-chat-message.l781.t0": "",
- "ai-chat.ai-chat-message.l801.t0": "",
- "ai-chat.ai-chat-message.l801.t1": "",
- "ai-chat.ai-chat-message.l807.t0": "",
- "ai-chat.ai-chat-message.l884.t0": "",
- "ai-chat.index.l146.t0": "",
- "ai-chat.index.l157.t0": "",
- "ai-chat.index.l180.t0": "",
- "ai-chat.index.l236.t0": "",
- "ai-chat.index.l266.t0": "",
- "ai-chat.index.l424.t0": "",
- "ai-chat.index.l425.t0": "",
- "ai-chat.index.l426.t0": "",
- "ai-chat.index.l427.t0": "",
- "ai-chat.index.l428.t0": "",
- "ai-chat.index.l437.t0": "",
- "ai-chat.index.l437.t1": "",
- "ai-chat.index.l481.t0": "",
- "ai-chat.index.l485.t0": "",
- "ai-chat.index.l521.t0": "",
- },
- "appointment": {
- },
- "article": {
- "detail.l5.t0": "",
- "list.l24.t0": "",
- "list.l91.t0": "",
- },
- "assets": {
- },
- "auth": {
- },
- "balance": {
- },
- "bale": {
- },
- "bargain": {
- },
- "birthday": {
- },
- "brand": {
- },
- "cancel": {
- },
- "card": {
- },
- "cart": {
- },
- "cases": {
- },
- "category": {
- },
- "channel": {
- },
- "chat": {
- },
- "collection": {
- },
- "combo": {
- },
- "contact": {
- "l165.t0": "",
- "l314.t0": "",
- "l372.t0": "",
- "l376.t0": "",
- "l380.t0": "",
- "l405.t0": "",
- "l76.t0": "",
- "l93.t0": "",
- },
- "coupon": {
- },
- "customerService": {
- },
- "date": {
- },
- "delivery": {
- },
- "diy": {
- "diy-article.l10.t0": "",
- "diy-article.l908.t0": "",
- "diy-article.l925.t0": "",
- "diy-article.l94.t0": "",
- "diy-article.l99.t0": "",
- "diy-bargain.l15.t0": "",
- "diy-bargain.l78.t0": "",
- "diy-category-item.l132.t0": "",
- "diy-category-item.l163.t0": "",
- "diy-category-item.l47.t0": "",
- "diy-category.l12.t0": "",
- "diy-category.l123.t0": "",
- "diy-category.l138.t0": "",
- "diy-category.l144.t0": "",
- "diy-category.l54.t0": "",
- "diy-category.l71.t0": "",
- "diy-channel-list.l268.t0": "",
- "diy-channel-list.l278.t0": "",
- "diy-coupon.l103.t0": "",
- "diy-coupon.l104.t0": "",
- "diy-coupon.l105.t0": "",
- "diy-coupon.l143.t0": "",
- "diy-coupon.l181.t0": "",
- "diy-coupon.l209.t0": "",
- "diy-coupon.l229.t0": "",
- "diy-coupon.l241.t0": "",
- "diy-coupon.l32.t0": "",
- "diy-coupon.l32.t1": "",
- "diy-coupon.l32.t2": "",
- "diy-coupon.l38.t0": "",
- "diy-coupon.l407.t0": "",
- "diy-coupon.l430.t0": "",
- "diy-coupon.l71.t0": "",
- "diy-fenxiao-goods-list.l141.t0": "",
- "diy-fenxiao-goods-list.l153.t0": "",
- "diy-fenxiao-goods-list.l170.t0": "",
- "diy-fenxiao-goods-list.l23.t0": "",
- "diy-form.l142.t0": "",
- "diy-form.l301.t0": "",
- "diy-form.l306.t0": "",
- "diy-form.l315.t0": "",
- "diy-index-page.l156.t0": "",
- "diy-index-page.l196.t0": "",
- "diy-kefu.l17.t0": "",
- "diy-listmenu.l15.t0": "",
- "diy-live.l29.t0": "",
- "diy-live.l33.t0": "",
- "diy-map.l9.t0": "",
- "diy-member-info.l110.t0": "",
- "diy-member-info.l113.t0": "",
- "diy-member-info.l114.t0": "",
- "diy-member-info.l121.t0": "",
- "diy-member-info.l125.t0": "",
- "diy-member-info.l137.t0": "",
- "diy-member-info.l146.t0": "",
- "diy-member-info.l15.t0": "",
- "diy-member-info.l164.t0": "",
- "diy-member-info.l197.t0": "",
- "diy-member-info.l198.t0": "",
- "diy-member-info.l39.t0": "",
- "diy-member-info.l407.t0": "",
- "diy-member-info.l497.t0": "",
- "diy-merch-list.l66.t0": "",
- "diy-notes.l20.t0": "",
- "diy-notes.l21.t0": "",
- "diy-notice.l45.t0": "",
- "diy-notice.l49.t0": "",
- "diy-payment-qrcode.l12.t0": "",
- "diy-payment-qrcode.l16.t0": "",
- "diy-payment-qrcode.l22.t0": "",
- "diy-payment-qrcode.l33.t0": "",
- "diy-payment-qrcode.l6.t0": "",
- "diy-pinfan.l28.t0": "",
- "diy-pinfan.l52.t0": "",
- "diy-pinfan.l55.t0": "",
- "diy-pintuan.l151.t0": "",
- "diy-pintuan.l29.t0": "",
- "diy-pintuan.l29.t1": "",
- "diy-search.l31.t0": "",
- "diy-seckill.l100.t0": "",
- "diy-seckill.l16.t0": "",
- "diy-seckill.l19.t0": "",
- "diy-seckill.l505.t0": "",
- "diy-seckill.l90.t0": "",
- "diy-store.l10.t0": "",
- "diy-store.l20.t0": "",
- "diy-store.l66.t0": "",
- "diy-text.l211.t0": "",
- "diy-video.l146.t0": "",
- "diy-video.l187.t0": "",
- "js.wechat-channel.l111.t0": "",
- "js.wechat-channel.l170.t0": "",
- "js.wechat-channel.l59.t0": "",
- "js.wechat-channel.l60.t0": "",
- "js.wechat-channel.l61.t0": "",
- "js.wechat-channel.l62.t0": "",
- },
- "diyText": {
- },
- "evaluate": {
- },
- "fenxiao": {
- "apply.l100.t0": "",
- "apply.l101.t0": "",
- "apply.l126.t0": "",
- "apply.l131.t0": "",
- "apply.l133.t0": "",
- "apply.l134.t0": "",
- "apply.l16.t0": "",
- "apply.l166.t0": "",
- "apply.l194.t0": "",
- "apply.l210.t0": "",
- "apply.l27.t0": "",
- "apply.l278.t0": "",
- "apply.l32.t0": "",
- "apply.l45.t0": "",
- "apply.l52.t0": "",
- "apply.l82.t0": "",
- "bill.l11.t0": "",
- "bill.l19.t0": "",
- "child_fenxiao.l23.t0": "",
- "child_fenxiao.l24.t0": "",
- "child_fenxiao.l32.t0": "",
- "goods_list.l118.t0": "",
- "goods_list.l43.t0": "",
- "goods_list.l49.t0": "",
- "goods_list.l56.t0": "",
- "goods_list.l59.t0": "",
- "index.l114.t0": "",
- "index.l124.t0": "",
- "index.l125.t0": "",
- "index.l133.t0": "",
- "index.l142.t0": "",
- "index.l162.t0": "",
- "index.l171.t0": "",
- "index.l172.t0": "",
- "index.l180.t0": "",
- "index.l21.t0": "",
- "index.l21.t1": "",
- "index.l214.t0": "",
- "index.l215.t0": "",
- "index.l22.t0": "",
- "index.l223.t0": "",
- "index.l231.t0": "",
- "index.l239.t0": "",
- "index.l254.t0": "",
- "index.l254.t1": "",
- "index.l293.t0": "",
- "index.l33.t0": "",
- "index.l33.t1": "",
- "index.l34.t0": "",
- "index.l36.t0": "",
- "index.l371.t0": "",
- "index.l43.t0": "",
- "index.l483.t0": "",
- "index.l484.t0": "",
- "index.l485.t0": "",
- "index.l498.t0": "",
- "index.l499.t0": "",
- "index.l512.t0": "",
- "index.l512.t1": "",
- "index.l514.t0": "",
- "index.l514.t1": "",
- "index.l526.t0": "",
- "index.l527.t0": "",
- "index.l528.t0": "",
- "index.l539.t0": "",
- "index.l540.t0": "",
- "index.l55.t0": "",
- "index.l553.t0": "",
- "index.l554.t0": "",
- "index.l567.t0": "",
- "index.l568.t0": "",
- "index.l59.t0": "",
- "index.l64.t0": "",
- "index.l70.t0": "",
- "index.l93.t0": "",
- "index.l94.t0": "",
- "level.l119.t0": "",
- "level.l131.t0": "",
- "level.l143.t0": "",
- "level.l144.t0": "",
- "level.l157.t0": "",
- "level.l169.t0": "",
- "level.l181.t0": "",
- "level.l181.t1": "",
- "level.l193.t0": "",
- "level.l20.t0": "",
- "level.l221.t0": "",
- "level.l24.t0": "",
- "level.l28.t0": "",
- "order.l17.t0": "",
- "order.l19.t0": "",
- "order.l20.t0": "",
- "order.l81.t0": "",
- "order.l83.t0": "",
- "order.l85.t0": "",
- "order.l87.t0": "",
- "order_detail.l47.t0": "",
- "order_detail.l56.t0": "",
- "order_detail.l60.t0": "",
- "promote.l21.t0": "",
- "promote.l22.t0": "",
- "promote.l35.t0": "",
- "promote.l44.t0": "",
- "promote_code.l114.t0": "",
- "promote_code.l139.t0": "",
- "promote_code.l14.t0": "",
- "promote_code.l18.t0": "",
- "promote_code.l24.t0": "",
- "promote_code.l29.t0": "",
- "ranking_list.l19.t0": "",
- "ranking_list.l21.t0": "",
- "ranking_list.l33.t0": "",
- "ranking_list.l44.t0": "",
- "ranking_list.l45.t0": "",
- "ranking_list.l57.t0": "",
- "ranking_list.l68.t0": "",
- "team.l92.t0": "",
- "team.l96.t0": "",
- "withdraw_apply.l178.t0": "",
- "withdraw_apply.l189.t0": "",
- "withdraw_apply.l19.t0": "",
- "withdraw_apply.l196.t0": "",
- "withdraw_apply.l205.t0": "",
- "withdraw_apply.l238.t0": "",
- "withdraw_apply.l31.t0": "",
- "withdraw_apply.l41.t0": "",
- "withdraw_apply.l42.t0": "",
- "withdraw_apply.l46.t0": "",
- "withdraw_apply.l48.t0": "",
- "withdraw_apply.l5.t0": "",
- "withdraw_apply.l59.t0": "",
- "withdraw_apply.l6.t0": "",
- "withdraw_apply.l64.t0": "",
- "withdraw_list.l12.t0": "",
- "withdraw_list.l12.t1": "",
- "withdraw_list.l13.t0": "",
- "withdraw_list.l28.t0": "",
- "withdraw_list.l45.t0": "",
- "withdraw_list.l49.t0": "",
- "withdraw_list.l53.t0": "",
- "withdraw_list.l57.t0": "",
- "withdraw_list.l78.t0": "",
- "withdrawal_detail.l10.t0": "",
- "withdrawal_detail.l14.t0": "",
- "withdrawal_detail.l18.t0": "",
- "withdrawal_detail.l22.t0": "",
- "withdrawal_detail.l26.t0": "",
- "withdrawal_detail.l30.t0": "",
- "withdrawal_detail.l34.t0": "",
- "withdrawal_detail.l38.t0": "",
- "withdrawal_detail.l42.t0": "",
- "withdrawal_detail.l46.t0": "",
- },
- "files": {
- },
- "find": {
- },
- "footprint": {
- },
- "form": {
- },
- "game": {
- },
- "goods": {
- "_components.goods-detail-view.detail.l285.t0": "",
- "_components.goods-detail-view.detail.l351.t0": "",
- "_components.goods-detail-view.detail.l356.t0": "",
- "_components.goods-detail-view.l143.t0": "",
- "_components.goods-detail-view.l156.t0": "",
- "_components.goods-detail-view.l180.t0": "",
- "_components.goods-detail-view.l213.t0": "",
- "_components.goods-detail-view.l257.t0": "",
- "_components.goods-detail-view.l264.t0": "",
- "_components.goods-detail-view.l269.t0": "",
- "_components.goods-detail-view.l290.t0": "",
- "_components.goods-detail-view.l292.t0": "",
- "_components.goods-detail-view.l338.t0": "",
- "_components.goods-detail-view.l397.t0": "",
- "_components.goods-detail-view.l400.t0": "",
- "_components.goods-detail-view.l411.t0": "",
- "_components.goods-detail-view.l417.t0": "",
- "_components.goods-detail-view.l426.t0": "",
- "_components.goods-detail-view.l434.t0": "",
- "_components.goods-detail-view.l441.t0": "",
- "_components.goods-detail-view.l446.t0": "",
- "_components.goods-detail-view.l75.t0": "",
- "_components.goods-detail-view.l81.t0": "",
- "_components.goods-detail-view.l99.t0": "",
- "_components.ns-goods-promotion.l13.t0": "",
- "_components.ns-goods-promotion.l19.t0": "",
- "_components.ns-goods-promotion.l25.t0": "",
- "_components.ns-goods-promotion.l31.t0": "",
- "_components.ns-goods-promotion.l37.t0": "",
- "_components.ns-goods-promotion.l43.t0": "",
- "_components.ns-goods-promotion.l6.t0": "",
- "_components.ns-goods-promotion.l7.t0": "",
- "cart.l123.t0": "",
- "cart.l143.t0": "",
- "cart.l145.t0": "",
- "cart.l17.t0": "",
- "cart.l192.t0": "",
- "cart.l202.t0": "",
- "cart.l202.t1": "",
- "cart.l221.t0": "",
- "cart.l226.t0": "",
- "cart.l239.t0": "",
- "cart.l294.t0": "",
- "cart.l298.t0": "",
- "cart.l341.t0": "",
- "cart.l341.t1": "",
- "cart.l8.t0": "",
- "category.l51.t0": "",
- "detail.l129.t0": "",
- "detail.l131.t0": "",
- "detail.l132.t0": "",
- "detail.l133.t0": "",
- "detail.l134.t0": "",
- "detail.l152.t0": "",
- "detail.l18.t0": "",
- "detail.l187.t0": "",
- "detail.l194.t0": "",
- "detail.l220.t0": "",
- "detail.l23.t0": "",
- "detail.l300.t0": "",
- "detail.l348.t0": "",
- "detail.l349.t0": "",
- "detail.l350.t0": "",
- "detail.l354.t0": "",
- "detail.l379.t0": "",
- "detail.l383.t0": "",
- "detail.l396.t0": "",
- "detail.l523.t0": "",
- "detail.l527.t0": "",
- "detail.l55.t0": "",
- "detail.l591.t0": "",
- "detail.l99.t0": "",
- "list.l148.t0": "",
- "list.l160.t0": "",
- "list.l168.t0": "",
- "list.l170.t0": "",
- "list.l172.t0": "",
- "list.l188.t0": "",
- "list.l19.t0": "",
- "list.l203.t0": "",
- "list.l23.t0": "",
- "list.l28.t0": "",
- "list.l40.t0": "",
- "public.js.cart.l236.t0": "",
- "public.js.cart.l243.t0": "",
- "public.js.cart.l243.t1": "",
- "public.js.cart.l385.t0": "",
- "public.js.detail.l321.t0": "",
- "public.js.detail.l323.t0": "",
- "public.js.detail.l379.t0": "",
- "public.js.detail.l386.t0": "",
- "public.js.detail.l392.t0": "",
- "public.js.detail.l392.t1": "",
- "public.js.detail.l392.t2": "",
- "public.js.detail.l395.t0": "",
- "public.js.list.l126.t0": "",
- "public.js.list.l126.t1": "",
- "public.js.list.l126.t2": "",
- "public.js.list.l365.t0": "",
- "public.js.list.l371.t0": "",
- "public.js.list.l378.t0": "",
- "public.js.list.l384.t0": "",
- "public.js.list.l78.t0": "",
- },
- "goodsList": {
- },
- "groupbuy": {
- },
- "help": {
- "list.l73.t0": "",
- "list.l81.t0": "",
- "list.l9.t0": "",
- },
- "hongbao": {
- },
- "http": {
- },
- "imgCropping": {
- },
- "index": {
- },
- "invite": {
- },
- "kefu": {
- },
- "level": {
- },
- "live": {
- },
- "login": {
- "find.l100.t0": "",
- "find.l13.t0": "",
- "find.l169.t0": "",
- "find.l18.t0": "",
- "find.l188.t0": "",
- "find.l19.t0": "",
- "find.l196.t0": "",
- "find.l196.t1": "",
- "find.l200.t0": "",
- "find.l204.t0": "",
- "find.l208.t0": "",
- "find.l212.t0": "",
- "find.l216.t0": "",
- "find.l230.t0": "",
- "find.l286.t0": "",
- "find.l7.t0": "",
- },
- "loginPage": {
- },
- "logistics": {
- },
- "map": {
- },
- "member": {
- "account.l10.t0": "",
- "account.l106.t0": "",
- "account.l107.t0": "",
- "account.l118.t0": "",
- "account.l123.t0": "",
- "account.l184.t0": "",
- "account.l32.t0": "",
- "account.l37.t0": "",
- "account.l55.t0": "",
- "account_edit.l139.t0": "",
- "account_edit.l163.t0": "",
- "account_edit.l178.t0": "",
- "account_edit.l20.t0": "",
- "account_edit.l226.t0": "",
- "account_edit.l23.t0": "",
- "account_edit.l230.t0": "",
- "account_edit.l24.t0": "",
- "account_edit.l5.t0": "",
- "account_edit.l67.t0": "",
- "account_edit.l71.t0": "",
- "address.l196.t0": "",
- "address.l201.t0": "",
- "address.l247.t0": "",
- "address.l293.t0": "",
- "address.l38.t0": "",
- "address.l57.t0": "",
- "address_edit.l138.t0": "",
- "address_edit.l142.t0": "",
- "address_edit.l200.t0": "",
- "address_edit.l233.t0": "",
- "address_edit.l234.t0": "",
- "address_edit.l241.t0": "",
- "address_edit.l259.t0": "",
- "address_edit.l319.t0": "",
- "address_edit.l4.t0": "",
- "address_edit.l44.t0": "",
- "apply_withdrawal.l109.t0": "",
- "apply_withdrawal.l19.t0": "",
- "apply_withdrawal.l24.t0": "",
- "apply_withdrawal.l34.t0": "",
- "apply_withdrawal.l40.t0": "",
- "assets.l18.t0": "",
- "assets.l22.t0": "",
- "assets.l33.t0": "",
- "assets.l46.t0": "",
- "assets.l5.t0": "",
- "assets.l54.t0": "",
- "assets.l59.t0": "",
- "assets.l63.t0": "",
- "assets.l67.t0": "",
- "assets.l73.t0": "",
- "assets.l74.t0": "",
- "assets.l9.t0": "",
- "balance.l19.t0": "",
- "balance.l24.t0": "",
- "balance.l28.t0": "",
- "balance.l33.t0": "",
- "balance.l49.t0": "",
- "balance.l56.t0": "",
- "balance_detail.l124.t0": "",
- "balance_detail.l46.t0": "",
- "balance_detail.l68.t0": "",
- "balance_detail.l71.t0": "",
- "cancellation.l13.t0": "",
- "cancellation.l15.t0": "",
- "cancellation.l63.t0": "",
- "cancelrefuse.l5.t0": "",
- "cancelrefuse.l6.t0": "",
- "cancelrefuse.l8.t0": "",
- "cancelstatus.l16.t0": "",
- "cancelstatus.l17.t0": "",
- "cancelstatus.l26.t0": "",
- "cancelstatus.l27.t0": "",
- "cancelstatus.l33.t0": "",
- "cancelstatus.l8.t0": "",
- "cancelstatus.l84.t0": "",
- "cancelstatus.l85.t0": "",
- "cancelstatus.l9.t0": "",
- "cancelsuccess.l7.t0": "",
- "cancelsuccess.l8.t0": "",
- "card.l104.t0": "",
- "card.l174.t0": "",
- "card.l25.t0": "",
- "card.l31.t0": "",
- "card.l42.t0": "",
- "card.l52.t0": "",
- "card.l53.t0": "",
- "card.l57.t0": "",
- "card.l58.t0": "",
- "card.l62.t0": "",
- "card.l63.t0": "",
- "card.l72.t0": "",
- "card.l81.t0": "",
- "card.l82.t0": "",
- "card.l86.t0": "",
- "card.l91.t0": "",
- "card_buy.l175.t0": "",
- "card_buy.l214.t0": "",
- "card_buy.l353.t0": "",
- "card_buy.l81.t0": "",
- "collection.l33.t0": "",
- "collection.l33.t1": "",
- "coupon.l45.t0": "",
- "coupon.l5.t0": "",
- "coupon.l6.t0": "",
- "footprint.l137.t0": "",
- "footprint.l4.t0": "",
- "footprint.l49.t0": "",
- "footprint.l49.t1": "",
- "footprint.l57.t0": "",
- "footprint.l59.t0": "",
- "info.l101.t0": "",
- "info.l14.t0": "",
- "info.l37.t0": "",
- "info.l43.t0": "",
- "info.l50.t0": "",
- "info.l66.t0": "",
- "info.l75.t0": "",
- "info.l83.t0": "",
- "info_edit.l10.t0": "",
- "info_edit.l120.t0": "",
- "info_edit.l131.t0": "",
- "info_edit.l134.t0": "",
- "info_edit.l139.t0": "",
- "info_edit.l147.t0": "",
- "info_edit.l57.t0": "",
- "info_edit.l7.t0": "",
- "info_edit.l71.t0": "",
- "info_edit.l72.t0": "",
- "info_edit.l77.t0": "",
- "info_edit.l82.t0": "",
- "info_edit.l87.t0": "",
- "invite_friends.l126.t0": "",
- "invite_friends.l133.t0": "",
- "invite_friends.l142.t0": "",
- "invite_friends.l151.t0": "",
- "invite_friends.l17.t0": "",
- "invite_friends.l20.t0": "",
- "invite_friends.l217.t0": "",
- "invite_friends.l50.t0": "",
- "invite_friends.l55.t0": "",
- "invite_friends.l56.t0": "",
- "invite_friends.l61.t0": "",
- "invite_friends.l71.t0": "",
- "invite_friends.l98.t0": "",
- "level.l100.t0": "",
- "level.l106.t0": "",
- "level.l113.t0": "",
- "level.l12.t0": "",
- "level.l268.t0": "",
- "level.l57.t0": "",
- "level.l59.t0": "",
- "level.l72.t0": "",
- "level.l91.t0": "",
- "level.l92.t0": "",
- "level.l98.t0": "",
- "level.l99.t0": "",
- "level_growth_rules.l23.t0": "",
- "level_growth_rules.l25.t0": "",
- "level_growth_rules.l30.t0": "",
- "level_growth_rules.l33.t0": "",
- "level_growth_rules.l34.t0": "",
- "level_growth_rules.l35.t0": "",
- "level_growth_rules.l36.t0": "",
- "modify_face.l117.t0": "",
- "modify_face.l14.t0": "",
- "modify_face.l22.t0": "",
- "modify_face.l23.t0": "",
- "modify_face.l95.t0": "",
- "pay_password.l10.t0": "",
- "pay_password.l11.t0": "",
- "pay_password.l12.t0": "",
- "pay_password.l152.t0": "",
- "pay_password.l3.t0": "",
- "pay_password.l37.t0": "",
- "pay_password.l4.t0": "",
- "pay_password.l52.t0": "",
- "point.l20.t0": "",
- "point.l24.t0": "",
- "point.l28.t0": "",
- "point.l32.t0": "",
- "point.l48.t0": "",
- "point.l53.t0": "",
- "point.l57.t0": "",
- "point.l58.t0": "",
- "point.l60.t0": "",
- "point.l65.t0": "",
- "point.l66.t0": "",
- "point.l68.t0": "",
- "public.js.info.l157.t0": "",
- "public.js.info.l404.t0": "",
- "public.js.info.l411.t0": "",
- "public.js.info.l579.t0": "",
- "public.js.info.l58.t0": "",
- "public.js.info.l612.t0": "",
- "public.js.info.l62.t0": "",
- "public.js.info.l67.t0": "",
- "public.js.info.l726.t0": "",
- "public.js.info.l744.t0": "",
- "public.js.info.l869.t0": "",
- "public.js.info.l874.t0": "",
- "public.js.member-public.l64.t0": "",
- "public.js.signin.l201.t0": "",
- "public.js.signin.l236.t0": "",
- "public.js.signin.l237.t0": "",
- "public.js.signin.l268.t0": "",
- "public.js.signin.l31.t0": "",
- },
- "memberInfo": {
- },
- "merch": {
- "detail.l102.t0": "",
- "detail.l31.t0": "",
- "detail.l35.t0": "",
- "detail.l35.t1": "",
- "detail.l7.t0": "",
- "merchcategory.l83.t0": "",
- "merchcategory.l87.t0": "",
- "public.edit.l103.t0": "",
- "public.edit.l126.t0": "",
- "public.edit.l133.t0": "",
- "public.edit.l170.t0": "",
- "public.edit.l496.t0": "",
- "public.edit.l533.t0": "",
- "public.edit.l56.t0": "",
- "public.edit.l56.t1": "",
- "public.edit.l578.t0": "",
- "public.edit.l58.t0": "",
- "public.edit.l58.t1": "",
- "public.edit.l58.t2": "",
- "public.edit.l58.t3": "",
- "public.edit.l585.t0": "",
- "public.edit.l63.t0": "",
- "public.edit.l635.t0": "",
- "public.edit.l641.t0": "",
- "public.edit.l648.t0": "",
- "public.edit.l658.t0": "",
- "public.edit.l665.t0": "",
- "public.edit.l67.t0": "",
- "public.edit.l671.t0": "",
- "public.edit.l677.t0": "",
- "public.edit.l71.t0": "",
- "public.edit.l81.t0": "",
- "public.edit.l85.t0": "",
- "public.edit.l908.t0": "",
- "public.edit.l929.t0": "",
- "public.edit.l93.t0": "",
- "public.edit.l93.t1": "",
- "public.edit.l96.t0": "",
- "public.edit.l99.t0": "",
- "public.js.list.l80.t0": "",
- },
- "mescroll": {
- },
- "navbar": {
- },
- "newGift": {
- },
- "note": {
- },
- "notice": {
- "detail.l87.t0": "",
- "list.l10.t0": "",
- "list.l18.t0": "",
- },
- "order": {
- "_components.common-payment.l100.t0": "",
- "_components.common-payment.l102.t0": "",
- "_components.common-payment.l128.t0": "",
- "_components.common-payment.l138.t0": "",
- "_components.common-payment.l144.t0": "",
- "_components.common-payment.l149.t0": "",
- "_components.common-payment.l156.t0": "",
- "_components.common-payment.l192.t0": "",
- "_components.common-payment.l227.t0": "",
- "_components.common-payment.l230.t0": "",
- "_components.common-payment.l238.t0": "",
- "_components.common-payment.l239.t0": "",
- "_components.common-payment.l242.t0": "",
- "_components.common-payment.l251.t0": "",
- "_components.common-payment.l27.t0": "",
- "_components.common-payment.l276.t0": "",
- "_components.common-payment.l28.t0": "",
- "_components.common-payment.l285.t0": "",
- "_components.common-payment.l293.t0": "",
- "_components.common-payment.l301.t0": "",
- "_components.common-payment.l303.t0": "",
- "_components.common-payment.l303.t1": "",
- "_components.common-payment.l304.t0": "",
- "_components.common-payment.l316.t0": "",
- "_components.common-payment.l335.t0": "",
- "_components.common-payment.l342.t0": "",
- "_components.common-payment.l351.t0": "",
- "_components.common-payment.l361.t0": "",
- "_components.common-payment.l385.t0": "",
- "_components.common-payment.l393.t0": "",
- "_components.common-payment.l403.t0": "",
- "_components.common-payment.l403.t1": "",
- "_components.common-payment.l408.t0": "",
- "_components.common-payment.l414.t0": "",
- "_components.common-payment.l415.t0": "",
- "_components.common-payment.l452.t0": "",
- "_components.common-payment.l469.t0": "",
- "_components.common-payment.l478.t0": "",
- "_components.common-payment.l500.t0": "",
- "_components.common-payment.l551.t0": "",
- "_components.common-payment.l557.t0": "",
- "_components.common-payment.l57.t0": "",
- "_components.common-payment.l587.t0": "",
- "_components.common-payment.l602.t0": "",
- "_components.common-payment.l610.t0": "",
- "_components.common-payment.l611.t0": "",
- "_components.common-payment.l7.t0": "",
- "_components.common-payment.l75.t0": "",
- "_components.common-payment.l81.t0": "",
- "_components.common-payment.payment.l134.t0": "",
- "_components.common-payment.payment.l135.t0": "",
- "_components.common-payment.payment.l142.t0": "",
- "_components.common-payment.payment.l150.t0": "",
- "_components.common-payment.payment.l151.t0": "",
- "_components.common-payment.payment.l158.t0": "",
- "_components.common-payment.payment.l159.t0": "",
- "_components.common-payment.payment.l487.t0": "",
- "_components.common-payment.payment.l500.t0": "",
- "_components.common-payment.payment.l509.t0": "",
- "_components.common-payment.payment.l517.t0": "",
- "_components.common-payment.payment.l535.t0": "",
- "_components.common-payment.payment.l544.t0": "",
- "_components.common-payment.payment.l840.t0": "",
- "_components.common-payment.payment.l846.t0": "",
- "_components.common-payment.payment.l852.t0": "",
- "_components.common-payment.payment.l858.t0": "",
- "_components.common-payment.payment.l866.t0": "",
- "_components.common-payment.payment.l873.t0": "",
- "detail.l106.t0": "",
- "detail.l109.t0": "",
- "detail.l16.t0": "",
- "detail.l192.t0": "",
- "detail.l192.t1": "",
- "detail.l198.t0": "",
- "detail.l198.t1": "",
- "detail.l208.t0": "",
- "detail.l214.t0": "",
- "detail.l221.t0": "",
- "detail.l227.t0": "",
- "detail.l233.t0": "",
- "detail.l241.t0": "",
- "detail.l247.t0": "",
- "detail.l254.t0": "",
- "detail.l260.t0": "",
- "detail.l266.t0": "",
- "detail.l274.t0": "",
- "detail.l276.t0": "",
- "detail.l276.t1": "",
- "detail.l280.t0": "",
- "detail.l282.t0": "",
- "detail.l282.t1": "",
- "detail.l286.t0": "",
- "detail.l293.t0": "",
- "detail.l299.t0": "",
- "detail.l305.t0": "",
- "detail.l329.t0": "",
- "detail.l350.t0": "",
- "detail.l360.t0": "",
- "detail.l362.t0": "",
- "detail.l37.t0": "",
- "detail.l372.t0": "",
- "detail.l376.t0": "",
- "detail.l382.t0": "",
- "detail.l387.t0": "",
- "detail.l393.t0": "",
- "detail.l400.t0": "",
- "detail.l406.t0": "",
- "detail.l409.t0": "",
- "detail.l416.t0": "",
- "detail.l42.t0": "",
- "detail.l47.t0": "",
- "detail.l51.t0": "",
- "detail.l537.t0": "",
- "detail.l568.t0": "",
- "detail.l589.t0": "",
- "detail.l601.t0": "",
- "detail.l602.t0": "",
- "detail.l737.t0": "",
- "detail.l84.t0": "",
- "detail_point.l126.t0": "",
- "detail_point.l128.t0": "",
- "detail_point.l14.t0": "",
- "detail_point.l14.t1": "",
- "detail_point.l15.t0": "",
- "detail_point.l225.t0": "",
- "detail_point.l236.t0": "",
- "detail_point.l99.t0": "",
- "list.l141.t0": "",
- "list.l152.t0": "",
- "list.l297.t0": "",
- "list.l302.t0": "",
- "list.l307.t0": "",
- "list.l317.t0": "",
- "list.l35.t0": "",
- "list.l6.t0": "",
- "list.l74.t0": "",
- "payment.l37.t0": "",
- "payment.l48.t0": "",
- "payment.l66.t0": "",
- "payment.l73.t0": "",
- "public.js.orderMethod.l13.t0": "",
- "public.js.orderMethod.l13.t1": "",
- "public.js.orderMethod.l176.t0": "",
- "public.js.orderMethod.l47.t0": "",
- "public.js.orderMethod.l60.t0": "",
- "public.js.orderMethod.l61.t0": "",
- "public.js.orderMethod.l81.t0": "",
- "public.js.refundMethod.l10.t0": "",
- "public.js.refundMethod.l11.t0": "",
- },
- "page": {
- "index.l108.t0": "",
- "index.l115.t0": "",
- "index.l119.t0": "",
- "index.l130.t0": "",
- "index.l133.t0": "",
- "index.l16.t0": "",
- "index.l47.t0": "",
- "index.l89.t0": "",
- "index.public.js.index.l121.t0": "",
- "index.public.js.index.l122.t0": "",
- "index.public.js.index.l126.t0": "",
- },
- "pay": {
- },
- "payment": {
- },
- "picker": {
- },
- "pinfan": {
- },
- "pintuan": {
- },
- "point": {
- "detail.l129.t0": "",
- "detail.l144.t0": "",
- "detail.l187.t0": "",
- "detail.l195.t0": "",
- "detail.l208.t0": "",
- "detail.l213.t0": "",
- "detail.l296.t0": "",
- "detail.l296.t1": "",
- "detail.l77.t0": "",
- "detail.l77.t1": "",
- "detail.l78.t0": "",
- "goods_list.l29.t0": "",
- "goods_list.l79.t0": "",
- "goods_list.l99.t0": "",
- "list.l125.t0": "",
- "list.l128.t0": "",
- "list.l13.t0": "",
- "list.l148.t0": "",
- "list.l181.t0": "",
- "list.l234.t0": "",
- "list.l239.t0": "",
- "list.l240.t0": "",
- "list.l241.t0": "",
- "list.l242.t0": "",
- "list.l243.t0": "",
- "list.l244.t0": "",
- "list.l245.t0": "",
- "list.l246.t0": "",
- "list.l247.t0": "",
- "list.l276.t0": "",
- "list.l305.t0": "",
- "list.l31.t0": "",
- "list.l40.t0": "",
- "list.l41.t0": "",
- "list.l50.t0": "",
- "list.l55.t0": "",
- "list.l583.t0": "",
- "list.l59.t0": "",
- "list.l63.t0": "",
- "list.l67.t0": "",
- "list.l84.t0": "",
- "list.l86.t0": "",
- "list.l94.t0": "",
- "order_list.l85.t0": "",
- "payment.l133.t0": "",
- "payment.l217.t0": "",
- "public.js.payment.l283.t0": "",
- "public.js.payment.l285.t0": "",
- "public.js.payment.l318.t0": "",
- "public.js.payment.l356.t0": "",
- "public.js.payment.l363.t0": "",
- "public.js.payment.l378.t0": "",
- "public.js.payment.l95.t0": "",
- },
- "presale": {
- },
- "privacy": {
- },
- "promotion": {
- },
- "recharge": {
- },
- "refund": {
- },
- "reward": {
- },
- "seal": {
- "medium.detail.l17.t0": "",
- "medium.detail.l18.t0": "",
- "medium.detail.l29.t0": "",
- "medium.search.l6.t0": "",
- "structure.l12.t0": "",
- "structure.l23.t0": "",
- "structure.l6.t0": "",
- },
- "seckill": {
- },
- "share": {
- },
- "sku": {
- },
- "store": {
- },
- "store_notes": {
- },
- "storeclose": {
- },
- "time": {
- },
- "tool": {
- "_components.img-cropping.l212.t0": "",
- "_components.img-cropping.l22.t0": "",
- "_components.img-cropping.l23.t0": "",
- "_components.img-cropping.l235.t0": "",
- "_components.img-cropping.l255.t0": "",
- "_components.ns-birthday-gift.l11.t0": "",
- "_components.ns-birthday-gift.l14.t0": "",
- "_components.ns-birthday-gift.l33.t0": "",
- "_components.ns-birthday-gift.l35.t0": "",
- "_components.ns-birthday-gift.l45.t0": "",
- "_components.ns-birthday-gift.l57.t0": "",
- "_components.ns-new-gift.l14.t0": "",
- "_components.ns-new-gift.l23.t0": "",
- "agreement.contenr.l11.t0": "",
- "agreement.contenr.l12.t0": "",
- "agreement.contenr.l13.t0": "",
- "cases.index.l143.t0": "",
- "cases.index.l167.t0": "",
- "cases.index.l22.t0": "",
- "cases.index.l31.t0": "",
- "cases.index.l47.t0": "",
- "cases.index.l56.t0": "",
- "cases.index.l60.t0": "",
- "cases.index.l62.t0": "",
- "cases.index.l66.t0": "",
- "cases.index.l68.t0": "",
- "file-preview.l15.t0": "",
- "file-preview.l32.t0": "",
- "files.list.l32.t0": "",
- "files.list.l5.t0": "",
- "form.formdata.l72.t0": "",
- "form.l8.t0": "",
- "goods.brand.l14.t0": "",
- "goods.brand.l79.t0": "",
- "goods.coupon.l10.t0": "",
- "goods.coupon.l102.t0": "",
- "goods.coupon.l11.t0": "",
- "goods.coupon.l44.t0": "",
- "goods.coupon.l45.t0": "",
- "goods.coupon.l52.t0": "",
- "goods.coupon.l52.t1": "",
- "goods.coupon.l65.t0": "",
- "goods.coupon.l66.t0": "",
- "goods.coupon.l70.t0": "",
- "goods.coupon.l8.t0": "",
- "goods.coupon_receive.l13.t0": "",
- "goods.coupon_receive.l186.t0": "",
- "goods.coupon_receive.l189.t0": "",
- "goods.coupon_receive.l192.t0": "",
- "goods.coupon_receive.l195.t0": "",
- "goods.coupon_receive.l207.t0": "",
- "goods.coupon_receive.l207.t1": "",
- "goods.coupon_receive.l212.t0": "",
- "goods.coupon_receive.l247.t0": "",
- "goods.coupon_receive.l249.t0": "",
- "goods.coupon_receive.l27.t0": "",
- "goods.evaluate.l47.t0": "",
- "goods.evaluate.l52.t0": "",
- "goods.evaluate.l69.t0": "",
- "goods.evaluate.l82.t0": "",
- "goods.evaluate.l82.t1": "",
- "goods.evaluate.l82.t2": "",
- "goods.not_exist.l5.t0": "",
- "goods.search.l15.t0": "",
- "goods.search.l165.t0": "",
- "goods.search.l33.t0": "",
- "goods.search.l86.t0": "",
- "goods.search.l99.t0": "",
- "order.activist.l10.t0": "",
- "order.activist.l115.t0": "",
- "order.activist.l12.t0": "",
- "order.activist.l30.t0": "",
- "order.evaluate.l16.t0": "",
- "order.evaluate.l42.t0": "",
- "order.evaluate.l47.t0": "",
- "order.evaluate.l72.t0": "",
- "order.logistics.l37.t0": "",
- "order.public.js.evaluate.l160.t0": "",
- "order.public.js.evaluate.l168.t0": "",
- "order.public.js.evaluate.l200.t0": "",
- "order.public.js.evaluate.l90.t0": "",
- "order.refund.l17.t0": "",
- "order.refund.l175.t0": "",
- "order.refund.l18.t0": "",
- "order.refund.l24.t0": "",
- "order.refund.l242.t0": "",
- "order.refund.l25.t0": "",
- "order.refund.l34.t0": "",
- "order.refund.l42.t0": "",
- "order.refund.l48.t0": "",
- "order.refund.l54.t0": "",
- "order.refund.l81.t0": "",
- "order.refund_batch.l26.t0": "",
- "order.refund_detail.l10.t0": "",
- "order.refund_detail.l100.t0": "",
- "order.refund_detail.l106.t0": "",
- "order.refund_detail.l121.t0": "",
- "order.refund_detail.l121.t1": "",
- "order.refund_detail.l13.t0": "",
- "order.refund_detail.l139.t0": "",
- "order.refund_detail.l14.t0": "",
- "order.refund_detail.l19.t0": "",
- "order.refund_detail.l24.t0": "",
- "order.refund_detail.l26.t0": "",
- "order.refund_detail.l29.t0": "",
- "order.refund_detail.l32.t0": "",
- "order.refund_detail.l38.t0": "",
- "order.refund_detail.l51.t0": "",
- "order.refund_detail.l51.t1": "",
- "order.refund_detail.l52.t0": "",
- "order.refund_detail.l52.t1": "",
- "order.refund_detail.l52.t2": "",
- "order.refund_detail.l52.t3": "",
- "order.refund_detail.l56.t0": "",
- "order.refund_detail.l57.t0": "",
- "order.refund_detail.l58.t0": "",
- "order.refund_detail.l59.t0": "",
- "order.refund_detail.l60.t0": "",
- "order.refund_detail.l76.t0": "",
- "order.refund_detail.l8.t0": "",
- "order.refund_detail.l80.t0": "",
- "order.refund_detail.l88.t0": "",
- "order.refund_detail.l9.t0": "",
- "order.refund_detail.l92.t0": "",
- "order.refund_goods_select.l28.t0": "",
- "order.refund_goods_select.l53.t0": "",
- "pay.cashier.l23.t0": "",
- "pay.cashier.l25.t0": "",
- "pay.cashier.l27.t0": "",
- "pay.result.l21.t0": "",
- "pay.result.l37.t0": "",
- "pay.result.l46.t0": "",
- "pay.wx_pay.l6.t0": "",
- "recharge.list.l20.t0": "",
- "recharge.list.l276.t0": "",
- "recharge.list.l29.t0": "",
- "recharge.list.l34.t0": "",
- "recharge.list.l44.t0": "",
- "recharge.list.l44.t1": "",
- "recharge.list.l50.t0": "",
- "recharge.list.l56.t0": "",
- "recharge.list.l67.t0": "",
- "recharge.list.l7.t0": "",
- "recharge.list.l89.t0": "",
- "recharge.order_list.l16.t0": "",
- "recharge.order_list.l24.t0": "",
- "recharge.order_list.l29.t0": "",
- "recharge.order_list.l34.t0": "",
- "storeclose.l41.t0": "",
- "storeclose.l45.t0": "",
- "storeclose.l47.t0": "",
- "weapp.order_shipping.l20.t0": "",
- "weapp.order_shipping.l32.t0": "",
- },
- "topics": {
- },
- "verification": {
- },
- "video": {
- },
- "vr": {
- },
- "weapp": {
- },
- "wxwork": {
- },
- "yuyueDate": {
- },
- "Filter": "",
- "Make": "",
- "Price": "",
- "Random": "",
- "Sales": "",
- "Search": "",
- "about": "",
- "account": "",
- "accountInputPlaceholder": "",
- "accountPlaceholder": "",
- "accountType": "",
- "activist": "",
- "addcart": "",
- "addressPlaceholder": "",
- "agreeAgreementTip": "",
- "aiNickname": "",
- "aiThinking": "",
- "alikeNickname": "",
- "alikePhone": "",
- "alikeusername": "",
- "allElection": "",
- "animateCodeInput": "",
- "audioMessage": "",
- "avatarSelectorTitle": "",
- "buy": "",
- "buynow": "",
- "call": "",
- "cancellation": "",
- "captchaPlaceholder": "",
- "changeAvatar": "",
- "changeAvatarDesc": "",
- "changeNickname": "",
- "changeNicknameDesc": "",
- "chatCleared": "",
- "chooseFromAlbum": "",
- "commission": "",
- "commissiontext": "",
- "complete": "",
- "completed": "",
- "confirmClearChat": "",
- "confirmCodeInput": "",
- "confirmOpenLink": "",
- "consignee": "",
- "consigneePlaceholder": "",
- "consult": "",
- "contactInfo": "",
- "copy": "",
- "copyFail": "",
- "copyFailed": "",
- "copySuccess": "",
- "defaultNickname": "",
- "del": "",
- "details": "",
- "dynacodeInputPlaceholder": "",
- "dynacodePlaceholder": "",
- "edit": "",
- "editNickname": "",
- "emojiTitle": "",
- "emptyTips": "",
- "enterCaptchaTip": "",
- "enterCorrectMobileTip": "",
- "enterMobileTip": "",
- "exchangeSuccess": "",
- "exclusiveCustomerService": "",
- "expandEditorTitle": "",
- "express": "",
- "fallbackWelcome": "",
- "featureDeveloping": "",
- "file": "",
- "fileOpenFail": "",
- "findanimateCode": "",
- "follow": "",
- "forgetPasswordText": "",
- "getAddress": "",
- "getDynacode": "",
- "goHome": "",
- "home": "",
- "image": "",
- "improveService": "",
- "inputPlaceholder": "",
- "lang": "",
- "leave": "",
- "loadHistoryFail": "",
- "loadMoreHistory": "",
- "location": "",
- "loginButtonText": "",
- "loginSuccessTip": "",
- "loginTpis": "",
- "logout": "",
- "logoutContent": "",
- "logoutTitle": "",
- "make": "",
- "max": "",
- "menuClearChat": "",
- "menuExport": "",
- "menuHelp": "",
- "menuSettings": "",
- "messageContent": "",
- "mobile": "",
- "mobileInputPlaceholder": "",
- "mobilePhone": "",
- "mobilePlaceholder": "",
- "modify": "",
- "modifyNickname": "",
- "moreFunctions": "",
- "name": "",
- "newAddAccount": "",
- "newAddAddress": "",
- "newNicknamePlaceholder": "",
- "next": "",
- "nicknameChangeSuccess": "",
- "nicknameTip": "",
- "noContentToCopy": "",
- "noEmityNickname": "",
- "noEmityUsername": "",
- "noMatchResult": "",
- "oneClickNavigation": "",
- "onlineMessage": "",
- "openLink": "",
- "openingFile": "",
- "operationFailed": "",
- "password": "",
- "passwordInputPlaceholder": "",
- "passwordPlaceholder": "",
- "paymentAmount": "",
- "paymentFail": "",
- "paymentSuccess": "",
- "paypassword": "",
- "pleaseEnterMessage": "",
- "pleaseEnterMobile": "",
- "pleaseEnterName": "",
- "pleaseInputNewPassword": "",
- "pleaseInputOldPassword": "",
- "privacyPolicy": "",
- "privacyPolicyText": "",
- "prompt": "",
- "rePasswordPlaceholder": "",
- "realName": "",
- "receivingCity": "",
- "receivingReply": "",
- "recordingTip": "",
- "registerAgreementText": "",
- "registrationAgreement": "",
- "requestFailTip": "",
- "retry": "",
- "sales": "",
- "save": "",
- "search": "",
- "searchAtBottom": "",
- "searchAtTop": "",
- "searchClose": "",
- "searchEntrance": "",
- "searchPlaceholder": "",
- "see": "",
- "sellout": "",
- "send": "",
- "serviceTemporaryUnavailable": "",
- "serviceTypeNotSupported": "",
- "serviceUnavailable": "",
- "settingsTitle": "",
- "settlement": "",
- "sex": "",
- "spec": "",
- "startRecordTip": "",
- "status": "",
- "stock": "",
- "submit": "",
- "surePhoneNumber": "",
- "telephone": "",
- "telephonePlaceholder": "",
- "thanksFeedback": "",
- "timeFormatBeforeYesterday": "",
- "timeFormatYesterday": "",
- "title": "",
- "toGoodsCategoryPage": "",
- "toLogin": "",
- "total": "",
- "updateSuccess": "",
- "userServiceAgreementText": "",
- "videoMessage": "",
- "voice": "",
- "voiceInputFailed": "",
- "voiceInputTitle": "",
- "waitconfirm": "",
- "waitpay": "",
- "waitsend": "",
- "welcomeText": "",
- "withdrawal": "",
-};
diff --git a/lang/en-us/ai-chat/index.js b/lang/en-us/ai-chat/index.js
new file mode 100644
index 0000000..2a41b70
--- /dev/null
+++ b/lang/en-us/ai-chat/index.js
@@ -0,0 +1,104 @@
+export const lang = {
+ //title for each page
+ title: 'AI Customer Service',
+
+ // ====== Common ======
+ cancel: 'Cancel',
+ save: 'Save',
+ send: 'Send',
+ retry: 'Retry',
+
+ // ====== Time Format ======
+ timeFormatToday: 'Today',
+ timeFormatYesterday: 'Yesterday',
+ timeFormatBeforeYesterday: 'Day before yesterday',
+
+ // ====== ai-chat-message ======
+ aiNickname: 'AI Assistant',
+ defaultNickname: 'Me',
+ audioMessage: 'Voice Message',
+ videoMessage: 'Video Message',
+ inputPlaceholder: 'Please enter your question...',
+ expandEditorTitle: 'Edit Content',
+ loadMoreHistory: 'Load more history',
+ loadingHistory: 'Loading history...',
+ aiThinking: 'AI is thinking',
+ receivingReply: 'Receiving reply',
+ aiThinkingStatus1: 'AI is thinking',
+ aiThinkingStatus2: 'AI is analyzing',
+ aiThinkingStatus3: 'AI is searching',
+ aiThinkingStatus4: 'AI is generating',
+ serviceUnavailable: 'Sorry, the AI service is temporarily unavailable. Please try again later.',
+ serviceTemporaryUnavailable: 'Sorry, the service is temporarily unavailable. Please try again later.',
+ noContentToCopy: 'No content to copy',
+ copySuccess: 'Copied',
+ copySelected: 'Copied selected content',
+ copyFail: 'Copy failed',
+ openingFile: 'Opening file...',
+ fileOpenFail: 'Failed to open file',
+ loadHistoryFail: 'Failed to load history',
+ about: '0B',
+
+ // ====== ai-chat-search ======
+ searchEntrance: 'Search',
+ searchPlaceholder: 'Search chat history',
+ searchClose: 'Done',
+ noMatchResult: 'No matching results',
+ searchAtTop: 'Already at top',
+ searchAtBottom: 'Already at bottom',
+
+ // ====== index.vue ======
+ settingsTitle: 'Settings',
+ fallbackWelcome: 'Hello! I am an AI customer service assistant, glad to serve you!\n\nI can help you with:\n• Product-related questions\n• Order issues\n• Technical support\n• Product recommendations\n\nPlease tell me how I can assist you?',
+ changeAvatar: 'Change Avatar',
+ changeAvatarDesc: 'Customize your chat avatar',
+ changeNickname: 'Change Nickname',
+ changeNicknameDesc: 'Customize your nickname',
+ clearChat: 'Clear Chat',
+ exportChat: 'Export Records',
+ help: 'Help',
+ confirmClearChat: 'Are you sure you want to clear the chat?',
+ chatCleared: 'Chat history has been cleared. How can I help you?',
+ featureDeveloping: 'Feature under development',
+ thanksFeedback: 'Thank you for your feedback!',
+ improveService: 'We will improve our service',
+ openLink: 'Open Link',
+ confirmOpenLink: 'Are you sure you want to open this link: ',
+ operationFailed: 'Operation failed, please try again',
+ prompt: 'Prompt',
+ serviceTypeNotSupported: 'Current service type does not support this page',
+
+ // ====== ai-chat-avatar-selector ======
+ avatarSelectorTitle: 'Change Avatar',
+ chooseFromAlbum: 'Choose from Album',
+ avatarChangeSuccess: 'Avatar changed successfully',
+ enableAlbumPermission: 'Please enable album permission',
+
+ // ====== ai-chat-emoji-panel ======
+ emojiTitle: 'Emoji',
+
+ // ====== ai-chat-nickname-editor ======
+ editNickname: 'Edit Nickname',
+ newNicknamePlaceholder: 'Please enter your new nickname',
+ nicknameTip: 'Nickname length 1-12 characters, visible only to you',
+ nicknameChangeSuccess: 'Nickname changed successfully',
+
+ // ====== ai-chat-tools-panel ======
+ moreFunctions: 'More Features',
+ image: 'Image',
+ file: 'File',
+ voice: 'Voice',
+ location: 'Location',
+
+ // ====== ai-chat-voice-panel ======
+ voiceInputTitle: 'Voice Input',
+ recordingTip: 'Recording, release to end',
+ startRecordTip: 'Tap to start recording',
+ voiceInputFailed: 'Voice input failed',
+
+ // ====== index.vue - Menu ======
+ menuClearChat: 'Clear Chat',
+ menuExport: 'Export Records',
+ menuSettings: 'Settings',
+ menuHelp: 'Help'
+}
diff --git a/lang/en-us/article/detail.js b/lang/en-us/article/detail.js
new file mode 100644
index 0000000..f9511d1
--- /dev/null
+++ b/lang/en-us/article/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Article Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/article/list.js b/lang/en-us/article/list.js
new file mode 100644
index 0000000..1cce3aa
--- /dev/null
+++ b/lang/en-us/article/list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Article List',
+ emptyText: "No article information available currently"
+}
\ No newline at end of file
diff --git a/lang/en-us/bale/detail.js b/lang/en-us/bale/detail.js
new file mode 100644
index 0000000..5df3c59
--- /dev/null
+++ b/lang/en-us/bale/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/bale/payment.js b/lang/en-us/bale/payment.js
new file mode 100644
index 0000000..dd3cca0
--- /dev/null
+++ b/lang/en-us/bale/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Order'
+}
\ No newline at end of file
diff --git a/lang/en-us/bargain/detail.js b/lang/en-us/bargain/detail.js
new file mode 100644
index 0000000..bb306c5
--- /dev/null
+++ b/lang/en-us/bargain/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: 'Select',
+ params: 'Parameters',
+ service: 'Product Service',
+ allGoods: 'All Products',
+ image: 'Image',
+ video: 'Video',
+}
\ No newline at end of file
diff --git a/lang/en-us/bargain/launch.js b/lang/en-us/bargain/launch.js
new file mode 100644
index 0000000..56140de
--- /dev/null
+++ b/lang/en-us/bargain/launch.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Bargain Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/bargain/list.js b/lang/en-us/bargain/list.js
new file mode 100644
index 0000000..eb635eb
--- /dev/null
+++ b/lang/en-us/bargain/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Bargain Zone'
+}
\ No newline at end of file
diff --git a/lang/en-us/bargain/my_bargain.js b/lang/en-us/bargain/my_bargain.js
new file mode 100644
index 0000000..836607b
--- /dev/null
+++ b/lang/en-us/bargain/my_bargain.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Bargain'
+}
\ No newline at end of file
diff --git a/lang/en-us/bargain/payment.js b/lang/en-us/bargain/payment.js
new file mode 100644
index 0000000..aec078a
--- /dev/null
+++ b/lang/en-us/bargain/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Order'
+}
\ No newline at end of file
diff --git a/lang/en-us/combo/detail.js b/lang/en-us/combo/detail.js
new file mode 100644
index 0000000..746d2f0
--- /dev/null
+++ b/lang/en-us/combo/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Combo Package'
+}
\ No newline at end of file
diff --git a/lang/en-us/combo/payment.js b/lang/en-us/combo/payment.js
new file mode 100644
index 0000000..1572d25
--- /dev/null
+++ b/lang/en-us/combo/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Orders'
+}
\ No newline at end of file
diff --git a/lang/en-us/common.js b/lang/en-us/common.js
new file mode 100644
index 0000000..7ed4c42
--- /dev/null
+++ b/lang/en-us/common.js
@@ -0,0 +1,37 @@
+export const lang = {
+
+ // 底部选项卡
+ tabBar: {
+ home: 'index',
+ category: 'category',
+ cart: 'cart',
+ member: 'member',
+ },
+
+ //公共
+ common: {
+ //语言包名称
+ name: '英文',
+ mescrollTextInOffset: 'pull to refresh',
+ mescrollTextOutOffset: 'Loading...',
+ mescrollEmpty: "No data available",
+ goodsRecommendTitle: 'Guess you like',
+ currencySymbol: '¥',
+ submit: 'Submit',
+ searchTip: 'Please enter search keywords'
+ },
+
+ //customer service
+ customer: {
+ weChatKefu: 'WeChat Customer Service',
+ systemKefu: 'System Customer Service',
+ weChatWorkKefu: 'WeChat Work Customer Service',
+ },
+
+ getDynacode: 'Get Code',
+
+ login: 'Login/Register',
+ loginTips: 'Click to login and enjoy more exciting information',
+ toLogin: 'Go to login',
+ toGoodsCategoryPage: 'Go shopping',
+}
\ No newline at end of file
diff --git a/lang/en-us/contact/contact.js b/lang/en-us/contact/contact.js
new file mode 100644
index 0000000..a27c572
--- /dev/null
+++ b/lang/en-us/contact/contact.js
@@ -0,0 +1,18 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Electronic Card',
+ onlineMessage: 'Online Message',
+ call: 'One-click Call',
+ copy: 'Copy',
+ copyFailed: 'Copy Failed',
+ copySuccess: 'Copy Success',
+ oneClickNavigation: 'One-click Navigation',
+ name: 'Name',
+ contactInfo: 'Contact Info',
+ messageContent: 'Message Content',
+ pleaseEnterName: 'Please enter your name',
+ pleaseEnterMobile: 'Please enter your phone number',
+ pleaseEnterMessage: 'Please enter your message',
+ submit: 'Submit',
+ exclusiveCustomerService: 'Exclusive Customer Service'
+}
diff --git a/lang/en-us/diy/diy.js b/lang/en-us/diy/diy.js
new file mode 100644
index 0000000..69f2645
--- /dev/null
+++ b/lang/en-us/diy/diy.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/apply.js b/lang/en-us/fenxiao/apply.js
new file mode 100644
index 0000000..1306afc
--- /dev/null
+++ b/lang/en-us/fenxiao/apply.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'Distributor Application'
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/bill.js b/lang/en-us/fenxiao/bill.js
new file mode 100644
index 0000000..bc18ef0
--- /dev/null
+++ b/lang/en-us/fenxiao/bill.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Bill'
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/follow.js b/lang/en-us/fenxiao/follow.js
new file mode 100644
index 0000000..d7fdb92
--- /dev/null
+++ b/lang/en-us/fenxiao/follow.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Following'
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/goods_list.js b/lang/en-us/fenxiao/goods_list.js
new file mode 100644
index 0000000..7c9bbf1
--- /dev/null
+++ b/lang/en-us/fenxiao/goods_list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'Distribution Product List',
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/index.js b/lang/en-us/fenxiao/index.js
new file mode 100644
index 0000000..e8aab4e
--- /dev/null
+++ b/lang/en-us/fenxiao/index.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'Distribution Center',
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/level.js b/lang/en-us/fenxiao/level.js
new file mode 100644
index 0000000..8d9fb0a
--- /dev/null
+++ b/lang/en-us/fenxiao/level.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'Distributor Level',
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/order.js b/lang/en-us/fenxiao/order.js
new file mode 100644
index 0000000..43ed42f
--- /dev/null
+++ b/lang/en-us/fenxiao/order.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'Distribution Orders',
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/order_detail.js b/lang/en-us/fenxiao/order_detail.js
new file mode 100644
index 0000000..0d8984e
--- /dev/null
+++ b/lang/en-us/fenxiao/order_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Order Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/promote_code.js b/lang/en-us/fenxiao/promote_code.js
new file mode 100644
index 0000000..de3fd13
--- /dev/null
+++ b/lang/en-us/fenxiao/promote_code.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Promotion Poster'
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/team.js b/lang/en-us/fenxiao/team.js
new file mode 100644
index 0000000..8a96e75
--- /dev/null
+++ b/lang/en-us/fenxiao/team.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'My Team'
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/withdraw_apply.js b/lang/en-us/fenxiao/withdraw_apply.js
new file mode 100644
index 0000000..7b23789
--- /dev/null
+++ b/lang/en-us/fenxiao/withdraw_apply.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'Withdrawal Application'
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/fenxiao/withdraw_list.js b/lang/en-us/fenxiao/withdraw_list.js
new file mode 100644
index 0000000..a8bb884
--- /dev/null
+++ b/lang/en-us/fenxiao/withdraw_list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'Withdrawal Records'
+ title: ''
+}
\ No newline at end of file
diff --git a/lang/en-us/game/cards.js b/lang/en-us/game/cards.js
new file mode 100644
index 0000000..c55e6ba
--- /dev/null
+++ b/lang/en-us/game/cards.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Scratch Card'
+}
\ No newline at end of file
diff --git a/lang/en-us/game/record.js b/lang/en-us/game/record.js
new file mode 100644
index 0000000..6897f64
--- /dev/null
+++ b/lang/en-us/game/record.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Winning Records'
+}
\ No newline at end of file
diff --git a/lang/en-us/game/smash_eggs.js b/lang/en-us/game/smash_eggs.js
new file mode 100644
index 0000000..3f127d0
--- /dev/null
+++ b/lang/en-us/game/smash_eggs.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Smash Golden Eggs'
+}
\ No newline at end of file
diff --git a/lang/en-us/game/turntable.js b/lang/en-us/game/turntable.js
new file mode 100644
index 0000000..fecc1a0
--- /dev/null
+++ b/lang/en-us/game/turntable.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Turntable'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/brand.js b/lang/en-us/goods/brand.js
new file mode 100644
index 0000000..be4dcee
--- /dev/null
+++ b/lang/en-us/goods/brand.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Brand Zone'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/cart.js b/lang/en-us/goods/cart.js
new file mode 100644
index 0000000..273691d
--- /dev/null
+++ b/lang/en-us/goods/cart.js
@@ -0,0 +1,13 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Shopping Cart',
+ complete: 'Complete',
+ edit: 'Manage',
+ allElection: 'Select All',
+ total: 'Total',
+ settlement: 'Checkout',
+ emptyTips: 'No products yet',
+ goForStroll: 'Go shopping',
+ del: 'Delete',
+ login: 'Go to login'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/category.js b/lang/en-us/goods/category.js
new file mode 100644
index 0000000..248b48b
--- /dev/null
+++ b/lang/en-us/goods/category.js
@@ -0,0 +1,6 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Goods Category',
+ search: 'Search',
+ seeMore : 'See More'
+}
diff --git a/lang/en-us/goods/consult.js b/lang/en-us/goods/consult.js
new file mode 100644
index 0000000..1cbda06
--- /dev/null
+++ b/lang/en-us/goods/consult.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Product Consultation'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/consult_edit.js b/lang/en-us/goods/consult_edit.js
new file mode 100644
index 0000000..bcc9f83
--- /dev/null
+++ b/lang/en-us/goods/consult_edit.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'I Want to Consult'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/coupon.js b/lang/en-us/goods/coupon.js
new file mode 100644
index 0000000..5065578
--- /dev/null
+++ b/lang/en-us/goods/coupon.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Coupon Collection'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/coupon_receive.js b/lang/en-us/goods/coupon_receive.js
new file mode 100644
index 0000000..0595c45
--- /dev/null
+++ b/lang/en-us/goods/coupon_receive.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Receive Coupon'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/detail.js b/lang/en-us/goods/detail.js
new file mode 100644
index 0000000..04b1f4d
--- /dev/null
+++ b/lang/en-us/goods/detail.js
@@ -0,0 +1,38 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Product Details',
+ details:'Details',
+ document:'Document',
+ home:'Home',
+ cart:'Cart',
+
+ leave:'leave a message',
+ make:'make an appointment',
+ makebtn:'make',
+
+ sales:'sales',
+ stock:'stock',
+ send:'send',
+ express:'Express Delivery',
+ commission:'Commission Details',
+
+ express:'Express Delivery',
+ addcart:'Add Cart',
+ buynow:'Buy Now',
+ status:'Goods Off',
+ sellout:'Sell Out',
+ max:'Maximum',
+
+
+ select: 'Select',
+ params: 'Parameters',
+ service: 'Product Service',
+ allGoods: 'All Products',
+ image: 'Image',
+ video: 'Video',
+
+ kefu:'Contact',
+ follow:'Follow',
+
+ spec:'Spec'
+}
diff --git a/lang/en-us/goods/evaluate.js b/lang/en-us/goods/evaluate.js
new file mode 100644
index 0000000..f3f6e2b
--- /dev/null
+++ b/lang/en-us/goods/evaluate.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Product Reviews'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/list.js b/lang/en-us/goods/list.js
new file mode 100644
index 0000000..cb1fbb1
--- /dev/null
+++ b/lang/en-us/goods/list.js
@@ -0,0 +1,11 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Product List',
+ Random:'Comprehensive',
+ Sales:'Sales',
+ Price:'Price',
+ Filter:'Filter',
+ Search:'Please enter the product you want to search',
+ Make:'Consult',
+
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/not_exist.js b/lang/en-us/goods/not_exist.js
new file mode 100644
index 0000000..3f2b35f
--- /dev/null
+++ b/lang/en-us/goods/not_exist.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Product Not Found',
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/point.js b/lang/en-us/goods/point.js
new file mode 100644
index 0000000..6683d8b
--- /dev/null
+++ b/lang/en-us/goods/point.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Points Center'
+}
\ No newline at end of file
diff --git a/lang/en-us/goods/search.js b/lang/en-us/goods/search.js
new file mode 100644
index 0000000..2c42a12
--- /dev/null
+++ b/lang/en-us/goods/search.js
@@ -0,0 +1,9 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Search',
+ history: 'Search History',
+ hot: 'Hot Search',
+ find: 'Search Discovery',
+ hidefind: 'Current search discovery is hidden',
+ inputPlaceholder: 'Search products'
+}
\ No newline at end of file
diff --git a/lang/en-us/groupbuy/detail.js b/lang/en-us/groupbuy/detail.js
new file mode 100644
index 0000000..28c8a91
--- /dev/null
+++ b/lang/en-us/groupbuy/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: 'Select',
+ params: 'Parameters',
+ service: 'Product Service',
+ allGoods: 'All Products',
+ image: 'Image',
+ video: 'Video'
+}
\ No newline at end of file
diff --git a/lang/en-us/groupbuy/list.js b/lang/en-us/groupbuy/list.js
new file mode 100644
index 0000000..fec80b7
--- /dev/null
+++ b/lang/en-us/groupbuy/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Group Buy Zone'
+}
\ No newline at end of file
diff --git a/lang/en-us/groupbuy/payment.js b/lang/en-us/groupbuy/payment.js
new file mode 100644
index 0000000..1572d25
--- /dev/null
+++ b/lang/en-us/groupbuy/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Orders'
+}
\ No newline at end of file
diff --git a/lang/en-us/help/detail.js b/lang/en-us/help/detail.js
new file mode 100644
index 0000000..ed24d71
--- /dev/null
+++ b/lang/en-us/help/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Help Detail'
+}
\ No newline at end of file
diff --git a/lang/en-us/help/list.js b/lang/en-us/help/list.js
new file mode 100644
index 0000000..92132ab
--- /dev/null
+++ b/lang/en-us/help/list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Help Center',
+ emptyText: 'No help information available'
+}
\ No newline at end of file
diff --git a/lang/en-us/hongbao/list.js b/lang/en-us/hongbao/list.js
new file mode 100644
index 0000000..aad3396
--- /dev/null
+++ b/lang/en-us/hongbao/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Red Envelopes List'
+}
\ No newline at end of file
diff --git a/lang/en-us/hongbao/my_hongbao.js b/lang/en-us/hongbao/my_hongbao.js
new file mode 100644
index 0000000..cac0aa0
--- /dev/null
+++ b/lang/en-us/hongbao/my_hongbao.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Red Envelopes'
+}
\ No newline at end of file
diff --git a/lang/en-us/index/index.js b/lang/en-us/index/index.js
new file mode 100644
index 0000000..c1a15a9
--- /dev/null
+++ b/lang/en-us/index/index.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Home',
+}
\ No newline at end of file
diff --git a/lang/en-us/live/list.js b/lang/en-us/live/list.js
new file mode 100644
index 0000000..b4e990c
--- /dev/null
+++ b/lang/en-us/live/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Live Streaming',
+}
\ No newline at end of file
diff --git a/lang/en-us/login/find.js b/lang/en-us/login/find.js
new file mode 100644
index 0000000..3cad034
--- /dev/null
+++ b/lang/en-us/login/find.js
@@ -0,0 +1,12 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Find Password',
+ findPassword: 'Find Password',
+ accountPlaceholder: 'Please enter mobile number',
+ captchaPlaceholder: 'Please enter verification code',
+ dynacodePlaceholder: 'Please enter dynamic code',
+ passwordPlaceholder: 'Please enter new password',
+ rePasswordPlaceholder: 'Please confirm new password',
+ next: 'Next',
+ save: 'Confirm Modification'
+}
\ No newline at end of file
diff --git a/lang/en-us/login/login.js b/lang/en-us/login/login.js
new file mode 100644
index 0000000..09c44cd
--- /dev/null
+++ b/lang/en-us/login/login.js
@@ -0,0 +1,38 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Login',
+ mobileLogin: 'Mobile Login',
+ accountLogin: 'Account Login',
+ autoLogin: 'One-Click Authorization Login',
+ login: 'Login',
+ mobilePlaceholder: 'Mobile login is only for mainland China users',
+ dynacodePlaceholder: 'Please enter dynamic code',
+ captchaPlaceholder: 'Please enter verification code',
+ accountPlaceholder: 'Please enter account',
+ passwordPlaceholder: 'Please enter password',
+ rePasswordPlaceholder: 'Please confirm password',
+ forgetPassword: 'Forgot password',
+ register: 'Register',
+ registerTips: 'Users without an account',
+ registerTips1: 'register',
+ registerTips2: 'now',
+ newUserRegister: 'New User Registration',
+ // login.vue page new translation items
+ welcomeText: 'Hello,
Welcome to use',
+ getDynacode: 'Get Dynamic Code',
+ mobileInputPlaceholder: 'Please enter your mobile phone number',
+ accountInputPlaceholder: 'Please enter account',
+ passwordInputPlaceholder: 'Please enter password',
+ forgetPasswordText: 'Forgot password?',
+ dynacodeInputPlaceholder: 'Please enter dynamic code',
+ loginButtonText: 'Login',
+ registerAgreementText: 'If you are not registered, you will be automatically registered after login. Registration means you agree to',
+ privacyPolicyText: '《Privacy Policy》',
+ userServiceAgreementText: '《User Service Agreement》',
+ agreeAgreementTip: 'Please read and agree to the agreement first',
+ loginSuccessTip: 'Login successful',
+ enterMobileTip: 'Please enter mobile phone number',
+ enterCorrectMobileTip: 'Please enter correct mobile phone number',
+ enterCaptchaTip: 'Please enter verification code',
+ requestFailTip: 'request:fail'
+}
\ No newline at end of file
diff --git a/lang/en-us/login/register.js b/lang/en-us/login/register.js
new file mode 100644
index 0000000..abd15f0
--- /dev/null
+++ b/lang/en-us/login/register.js
@@ -0,0 +1,17 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Register',
+ mobileRegister: 'Mobile Registration',
+ accountRegister: 'Account Registration',
+ mobilePlaceholder: 'Mobile login is only for mainland China users',
+ dynacodePlaceholder: 'Please enter dynamic code',
+ captchaPlaceholder: 'Please enter verification code',
+ accountPlaceholder: 'Please enter username',
+ passwordPlaceholder: 'Please enter password',
+ rePasswordPlaceholder: 'Please confirm password',
+ completeRegister: 'Complete registration and login',
+ registerTips: 'By clicking register, you agree to the',
+ registerAgreement: 'Registration Agreement',
+ next: 'Next',
+ save: 'Save'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/account.js b/lang/en-us/member/account.js
new file mode 100644
index 0000000..75dad35
--- /dev/null
+++ b/lang/en-us/member/account.js
@@ -0,0 +1,13 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Account List',
+ name: 'Name',
+ accountType: 'Account Type',
+ mobilePhone: 'Mobile Number',
+ withdrawalAccount: 'Withdrawal Account',
+ bankInfo: 'Branch Information',
+ newAddAccount: 'Add New Account',
+ del: 'Delete',
+ update: 'Modify',
+ emptyText: 'No accounts available'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/account_edit.js b/lang/en-us/member/account_edit.js
new file mode 100644
index 0000000..06b0075
--- /dev/null
+++ b/lang/en-us/member/account_edit.js
@@ -0,0 +1,14 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Edit Account',
+ name: 'Name',
+ namePlaceholder: 'Please enter real name',
+ mobilePhone: 'Mobile Number',
+ mobilePhonePlaceholder: 'Please enter mobile number',
+ accountType: 'Account Type',
+ bankInfo: 'Branch Information',
+ bankInfoPlaceholder: 'Please enter branch information',
+ withdrawalAccount: 'Withdrawal Account',
+ withdrawalAccountPlaceholder: 'Please enter withdrawal account',
+ save: 'Save'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/address.js b/lang/en-us/member/address.js
new file mode 100644
index 0000000..7fedc77
--- /dev/null
+++ b/lang/en-us/member/address.js
@@ -0,0 +1,9 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Shipping Address',
+ newAddAddress: 'Add Shipping Address',
+ getAddress: 'Get Address with One Click',
+ is_default: 'Default',
+ modify: 'Edit',
+ del: 'Delete'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/address_edit.js b/lang/en-us/member/address_edit.js
new file mode 100644
index 0000000..d296615
--- /dev/null
+++ b/lang/en-us/member/address_edit.js
@@ -0,0 +1,14 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Edit Shipping Address',
+ consignee: 'Name',
+ consigneePlaceholder: 'Consignee Name',
+ mobile: 'Mobile',
+ mobilePlaceholder: 'Consignee Mobile Number',
+ telephone: 'Phone',
+ telephonePlaceholder: 'Consignee Fixed Phone (Optional)',
+ receivingCity: 'Region',
+ address: 'Detailed Address',
+ addressPlaceholder: 'Community, Street, Office Building',
+ save: 'Save'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/apply_withdrawal.js b/lang/en-us/member/apply_withdrawal.js
new file mode 100644
index 0000000..d3a3633
--- /dev/null
+++ b/lang/en-us/member/apply_withdrawal.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Apply for Withdrawal'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/assets.js b/lang/en-us/member/assets.js
new file mode 100644
index 0000000..605a8db
--- /dev/null
+++ b/lang/en-us/member/assets.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: 'Account Cancellation',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/balance.js b/lang/en-us/member/balance.js
new file mode 100644
index 0000000..350c22f
--- /dev/null
+++ b/lang/en-us/member/balance.js
@@ -0,0 +1,13 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Balance',
+ accountBalance: 'Account Balance ',
+ money:' (Yuan)',
+ recharge: 'Recharge',
+ withdrawal: 'Withdraw',
+ balanceDetailed: 'Balance Details',
+ emptyTips: 'No balance records',
+ rechargeRecord:'Recharge Records',
+ ableAccountBalance:'Cash Balance ',
+ noAccountBalance:'Stored Value Balance ',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/balance_detail.js b/lang/en-us/member/balance_detail.js
new file mode 100644
index 0000000..4f55314
--- /dev/null
+++ b/lang/en-us/member/balance_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Balance Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/cancellation.js b/lang/en-us/member/cancellation.js
new file mode 100644
index 0000000..605a8db
--- /dev/null
+++ b/lang/en-us/member/cancellation.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: 'Account Cancellation',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/cancelrefuse.js b/lang/en-us/member/cancelrefuse.js
new file mode 100644
index 0000000..605a8db
--- /dev/null
+++ b/lang/en-us/member/cancelrefuse.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: 'Account Cancellation',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/cancelstatus.js b/lang/en-us/member/cancelstatus.js
new file mode 100644
index 0000000..605a8db
--- /dev/null
+++ b/lang/en-us/member/cancelstatus.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: 'Account Cancellation',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/cancelsuccess.js b/lang/en-us/member/cancelsuccess.js
new file mode 100644
index 0000000..605a8db
--- /dev/null
+++ b/lang/en-us/member/cancelsuccess.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: 'Account Cancellation',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/card.js b/lang/en-us/member/card.js
new file mode 100644
index 0000000..3234b08
--- /dev/null
+++ b/lang/en-us/member/card.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Membership Card'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/card_buy.js b/lang/en-us/member/card_buy.js
new file mode 100644
index 0000000..3234b08
--- /dev/null
+++ b/lang/en-us/member/card_buy.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Membership Card'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/collection.js b/lang/en-us/member/collection.js
new file mode 100644
index 0000000..feaf7c6
--- /dev/null
+++ b/lang/en-us/member/collection.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Favorites'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/contact.js b/lang/en-us/member/contact.js
new file mode 100644
index 0000000..d892902
--- /dev/null
+++ b/lang/en-us/member/contact.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Customer Service',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/coupon.js b/lang/en-us/member/coupon.js
new file mode 100644
index 0000000..d6584be
--- /dev/null
+++ b/lang/en-us/member/coupon.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Coupons'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/footprint.js b/lang/en-us/member/footprint.js
new file mode 100644
index 0000000..19a2733
--- /dev/null
+++ b/lang/en-us/member/footprint.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Browsing History',
+ emptyTpis: 'You haven\'t browsed any products yet!'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/gift.js b/lang/en-us/member/gift.js
new file mode 100644
index 0000000..48692d2
--- /dev/null
+++ b/lang/en-us/member/gift.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Gifts',
+ emptyTips: 'No gifts available'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/gift_detail.js b/lang/en-us/member/gift_detail.js
new file mode 100644
index 0000000..251fe46
--- /dev/null
+++ b/lang/en-us/member/gift_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Gift Order',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/index.js b/lang/en-us/member/index.js
new file mode 100644
index 0000000..ef03491
--- /dev/null
+++ b/lang/en-us/member/index.js
@@ -0,0 +1,60 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Member Center',
+ login: 'Login',
+ loginTpis: 'Login experience',
+ memberLevel: 'Member Level',
+ moreAuthority: 'More Privileges',
+ allOrders: 'All Orders',
+ seeAllOrders: 'View All Orders',
+ waitPay: 'Pending Payment',
+ readyDelivery: 'Pending Shipment',
+ waitDelivery: 'Pending Receipt',
+ refunding: 'Refunding',
+ // 会员中心入口
+ sign: 'Check-in',
+ personInfo: 'Personal Information',
+ receivingAddress: 'Shipping Address',
+ accountList: 'Account List',
+ couponList: 'Coupon List',
+ mySpellList: 'My Group Orders',
+ myBargain: 'My Bargains',
+ virtualCode: 'Virtual Code',
+ winningRecord: 'My Gifts',
+ myCollection: 'My Favorites',
+ myTracks: 'My Browsing History',
+ pintuanOrder: 'Group Purchase Orders',
+ yushouOrder: 'Pre-sale Orders',
+ verification: 'Verification Desk',
+ message: 'My Messages',
+ exchangeOrder: 'Points Exchange',
+ // 推广中心
+ balance: 'Balance',
+ point: 'Point',
+ coupon: 'Coupon',
+ memberRecommend: 'Invite Rewards',
+ myPresale: 'My Pre-sales',
+ myGiftcard: 'My Gift Cards',
+ myDivideticket: 'My Dividend Tickets',
+ myRebate: 'Group Rebate',
+ myHongbao: 'My Red Envelopes',
+ myBlindBox: 'My Blind Boxes',
+
+ waitpay: 'Waitpay',
+ waitsend: 'Waitsend',
+ waitconfirm: 'Waitconfirm',
+ activist: 'Activist',
+ completed: 'Completed',
+
+ // 账户操作
+ logout: 'Logout',
+ cancellation: 'Account Cancellation',
+ logoutTitle: 'Tips',
+ logoutContent: 'Are you sure you want to log out',
+ cancellationTitle: 'Risk Warning',
+ cancellationContent: 'Are you sure you want to cancel your current account?',
+
+ // 协议
+ privacyPolicy: 'Privacy Policy',
+ registrationAgreement: 'Registration Agreement',
+}
diff --git a/lang/en-us/member/info.js b/lang/en-us/member/info.js
new file mode 100644
index 0000000..b37e91c
--- /dev/null
+++ b/lang/en-us/member/info.js
@@ -0,0 +1,56 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Profile',
+ headImg: 'Avatar',
+ account: 'Account',
+ nickname: 'Nickname',
+ realName: 'Real Name',
+ sex: 'Gender',
+ birthday: 'Birthday',
+ password: 'Password',
+ paypassword: 'Payment Password',
+ mobilePhone: 'Mobile Phone',
+ bindMobile: 'Bind Mobile',
+ cancellation: 'Cancel Account',
+ lang: "Language",
+ logout: 'Logout',
+ save: "Save",
+ noset: 'Not Set',
+
+ nickPlaceholder: "Please enter a new nickname",
+ pleaseRealName:"Please enter your real name",
+
+ nowPassword: "Current Password",
+ newPassword: "New Password",
+ confirmPassword: "Confirm New Password",
+
+ phoneNumber: "Phone Number",
+
+ confirmCode: "Verification Code",
+ confirmCodeInput: "Please enter verification code",
+ confirmCodeInputerror: "Invalid verification code",
+ findanimateCode: "Get Dynamic Code",
+ animateCode: "Dynamic Code",
+ animateCodeInput: "Please enter dynamic code",
+
+ modifyNickname: "Modify Nickname",
+ modifyPassword: "Modify Password",
+ bindPhone: "Bind Phone",
+
+ alikeNickname: "Same as original nickname, no need to modify",
+ noEmityNickname: "Nickname cannot be empty",
+
+ updateSuccess: "Update Successful",
+
+ pleaseInputOldPassword: "Please enter original password",
+ pleaseInputNewPassword: "Please enter new password",
+ passwordLength: "Password must be at least 6 characters long",
+ alikePassword: "Passwords do not match",
+
+ samePassword: "New password cannot be the same as current password",
+
+ surePhoneNumber: "Please enter a valid phone number",
+
+ alikePhone: "Same as original phone number, no need to modify",
+ modify: 'Modify'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/info_edit.js b/lang/en-us/member/info_edit.js
new file mode 100644
index 0000000..ab59965
--- /dev/null
+++ b/lang/en-us/member/info_edit.js
@@ -0,0 +1,61 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Edit Profile',
+ headImg: 'Avatar',
+ account: 'Account',
+ username: 'Username',
+ nickname: 'Nickname',
+ realName: 'Real Name',
+ sex: 'Gender',
+ birthday: 'Birthday',
+ password: 'Password',
+ paypassword: 'Payment Password',
+ mobilePhone: 'Mobile Phone',
+ bindMobile: 'Bind Mobile',
+ cancellation: 'Cancel Account',
+ lang: "Language",
+ logout: 'Logout',
+ save: "Save",
+ noset: 'Not Set',
+
+ usernamePlaceholder: "Please enter a new username",
+ nickPlaceholder: "Please enter a new nickname",
+ pleaseRealName:"Please enter your real name",
+
+ nowPassword: "Current Password",
+ newPassword: "New Password",
+ confirmPassword: "Confirm New Password",
+
+ phoneNumber: "Phone Number",
+
+ confirmCode: "Verification Code",
+ confirmCodeInput: "Please enter verification code",
+ confirmCodeInputerror: "Invalid verification code",
+ findanimateCode: "Get Dynamic Code",
+ animateCode: "Dynamic Code",
+ animateCodeInput: "Please enter dynamic code",
+
+ modifyNickname: "Modify Nickname",
+ modifyPassword: "Modify Password",
+ bindPhone: "Bind Phone",
+
+ alikeusername: "Same as original username, no need to modify",
+ noEmityUsername: "Username cannot be empty",
+
+ alikeNickname: "Same as original nickname, no need to modify",
+ noEmityNickname: "Nickname cannot be empty",
+
+ updateSuccess: "Update Successful",
+
+ pleaseInputOldPassword: "Please enter original password",
+ pleaseInputNewPassword: "Please enter new password",
+ passwordLength: "Password must be at least 6 characters long",
+ alikePassword: "Passwords do not match",
+
+ samePassword: "New password cannot be the same as current password",
+
+ surePhoneNumber: "Please enter a valid phone number",
+
+ alikePhone: "Same as original phone number, no need to modify",
+ modify: 'Modify'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/invite_friends.js b/lang/en-us/member/invite_friends.js
new file mode 100644
index 0000000..a5d534b
--- /dev/null
+++ b/lang/en-us/member/invite_friends.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: 'Invite Friends',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/level.js b/lang/en-us/member/level.js
new file mode 100644
index 0000000..158c1c2
--- /dev/null
+++ b/lang/en-us/member/level.js
@@ -0,0 +1,17 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Member Level',
+ defaultLevelTips: 'You are already the highest level member!',
+ tag: 'Exclusive Tag',
+ tagDesc: 'Tag Expert',
+ discount: 'Exclusive Discount',
+ discountDesc: 'Exclusive {0}% Off',
+ service: 'Premium Service',
+ serviceDesc: '360-degree comprehensive',
+ memberLevel: 'Member Level',
+ condition: 'Condition',
+ equity: 'Benefits',
+ giftPackage: 'Upgrade Gift Pack',
+ levelExplain: 'Level Explanation',
+ upgradeTips: 'Upgrade membership to enjoy exclusive benefits'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/message.js b/lang/en-us/member/message.js
new file mode 100644
index 0000000..b882e55
--- /dev/null
+++ b/lang/en-us/member/message.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Messages'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/modify_face.js b/lang/en-us/member/modify_face.js
new file mode 100644
index 0000000..cdca09b
--- /dev/null
+++ b/lang/en-us/member/modify_face.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Modify Avatar'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/pay_password.js b/lang/en-us/member/pay_password.js
new file mode 100644
index 0000000..8d07b67
--- /dev/null
+++ b/lang/en-us/member/pay_password.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: 'Payment Password',
+}
\ No newline at end of file
diff --git a/lang/en-us/member/point.js b/lang/en-us/member/point.js
new file mode 100644
index 0000000..095789e
--- /dev/null
+++ b/lang/en-us/member/point.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Points'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/point_detail.js b/lang/en-us/member/point_detail.js
new file mode 100644
index 0000000..a25ef2a
--- /dev/null
+++ b/lang/en-us/member/point_detail.js
@@ -0,0 +1,6 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Points Details',
+ emptyTpis: 'You don\'t have any points records yet!',
+ pointExplain: 'Points Explanation'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/signin.js b/lang/en-us/member/signin.js
new file mode 100644
index 0000000..44e5a15
--- /dev/null
+++ b/lang/en-us/member/signin.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Check-in Rewards'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/withdrawal.js b/lang/en-us/member/withdrawal.js
new file mode 100644
index 0000000..f4d7936
--- /dev/null
+++ b/lang/en-us/member/withdrawal.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Withdrawal Records'
+}
\ No newline at end of file
diff --git a/lang/en-us/member/withdrawal_detail.js b/lang/en-us/member/withdrawal_detail.js
new file mode 100644
index 0000000..1706d49
--- /dev/null
+++ b/lang/en-us/member/withdrawal_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Withdrawal Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/notice/detail.js b/lang/en-us/notice/detail.js
new file mode 100644
index 0000000..3ac62a0
--- /dev/null
+++ b/lang/en-us/notice/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Notice Detail'
+}
\ No newline at end of file
diff --git a/lang/en-us/notice/list.js b/lang/en-us/notice/list.js
new file mode 100644
index 0000000..980d2c9
--- /dev/null
+++ b/lang/en-us/notice/list.js
@@ -0,0 +1,6 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Notice List',
+ emptyText:"No more information available",
+ contentTitle:'Upgrade Notice'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/activist.js b/lang/en-us/order/activist.js
new file mode 100644
index 0000000..8383e2e
--- /dev/null
+++ b/lang/en-us/order/activist.js
@@ -0,0 +1,6 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Refund',
+ checkDetail: 'View Details',
+ emptyTips: 'No refund records'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/detail.js b/lang/en-us/order/detail.js
new file mode 100644
index 0000000..0d8984e
--- /dev/null
+++ b/lang/en-us/order/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Order Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/detail_local_delivery.js b/lang/en-us/order/detail_local_delivery.js
new file mode 100644
index 0000000..0d8984e
--- /dev/null
+++ b/lang/en-us/order/detail_local_delivery.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Order Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/detail_pickup.js b/lang/en-us/order/detail_pickup.js
new file mode 100644
index 0000000..0d8984e
--- /dev/null
+++ b/lang/en-us/order/detail_pickup.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Order Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/detail_point.js b/lang/en-us/order/detail_point.js
new file mode 100644
index 0000000..0d8984e
--- /dev/null
+++ b/lang/en-us/order/detail_point.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Order Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/detail_virtual.js b/lang/en-us/order/detail_virtual.js
new file mode 100644
index 0000000..0d8984e
--- /dev/null
+++ b/lang/en-us/order/detail_virtual.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Order Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/evaluate.js b/lang/en-us/order/evaluate.js
new file mode 100644
index 0000000..160c6f4
--- /dev/null
+++ b/lang/en-us/order/evaluate.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Write a Review'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/list.js b/lang/en-us/order/list.js
new file mode 100644
index 0000000..26d9ced
--- /dev/null
+++ b/lang/en-us/order/list.js
@@ -0,0 +1,13 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Order List',
+ emptyTips: 'No related orders',
+ all: 'All',
+ waitPay: 'Pending Payment',
+ readyDelivery: 'Pending Shipment',
+ waitDelivery: 'Pending Receipt',
+ waitEvaluate: 'Pending Review',
+ waitUse: 'Pending Use',
+ update: "Release to refresh",
+ updateIng: "Loading..."
+}
\ No newline at end of file
diff --git a/lang/en-us/order/logistics.js b/lang/en-us/order/logistics.js
new file mode 100644
index 0000000..d5a78de
--- /dev/null
+++ b/lang/en-us/order/logistics.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Logistics Information'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/payment.js b/lang/en-us/order/payment.js
new file mode 100644
index 0000000..aec078a
--- /dev/null
+++ b/lang/en-us/order/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Order'
+}
\ No newline at end of file
diff --git a/lang/en-us/order/refund.js b/lang/en-us/order/refund.js
new file mode 100644
index 0000000..4e5e27f
--- /dev/null
+++ b/lang/en-us/order/refund.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Apply for Refund',
+}
\ No newline at end of file
diff --git a/lang/en-us/order/refund_batch.js b/lang/en-us/order/refund_batch.js
new file mode 100644
index 0000000..4e5e27f
--- /dev/null
+++ b/lang/en-us/order/refund_batch.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Apply for Refund',
+}
\ No newline at end of file
diff --git a/lang/en-us/order/refund_detail.js b/lang/en-us/order/refund_detail.js
new file mode 100644
index 0000000..f8f8844
--- /dev/null
+++ b/lang/en-us/order/refund_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Refund Details',
+}
\ No newline at end of file
diff --git a/lang/en-us/pay/index.js b/lang/en-us/pay/index.js
new file mode 100644
index 0000000..d0f6ed0
--- /dev/null
+++ b/lang/en-us/pay/index.js
@@ -0,0 +1,7 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Payment Method',
+ paymentAmount: 'Payment Amount',
+ confirmPayment: 'Confirm Payment',
+ seeOrder: 'View Order'
+}
\ No newline at end of file
diff --git a/lang/en-us/pay/result.js b/lang/en-us/pay/result.js
new file mode 100644
index 0000000..4ec2575
--- /dev/null
+++ b/lang/en-us/pay/result.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Payment Result',
+ paymentSuccess: 'Payment Successful',
+ paymentFail: 'Payment Failed',
+ goHome: 'Back to Home',
+ memberCenter: 'Member Center',
+ payMoney: 'Payment Amount',
+ unit: 'Yuan'
+}
\ No newline at end of file
diff --git a/lang/en-us/pintuan/detail.js b/lang/en-us/pintuan/detail.js
new file mode 100644
index 0000000..c8bf3f1
--- /dev/null
+++ b/lang/en-us/pintuan/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: 'Select',
+ params: 'Parameters',
+ service: 'Product Services',
+ allGoods: 'All Products',
+ image: 'Image',
+ video: 'Video'
+}
\ No newline at end of file
diff --git a/lang/en-us/pintuan/list.js b/lang/en-us/pintuan/list.js
new file mode 100644
index 0000000..504dc54
--- /dev/null
+++ b/lang/en-us/pintuan/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Group Buying Zone'
+}
\ No newline at end of file
diff --git a/lang/en-us/pintuan/my_spell.js b/lang/en-us/pintuan/my_spell.js
new file mode 100644
index 0000000..1470b28
--- /dev/null
+++ b/lang/en-us/pintuan/my_spell.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Group Orders'
+}
\ No newline at end of file
diff --git a/lang/en-us/pintuan/payment.js b/lang/en-us/pintuan/payment.js
new file mode 100644
index 0000000..1572d25
--- /dev/null
+++ b/lang/en-us/pintuan/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Orders'
+}
\ No newline at end of file
diff --git a/lang/en-us/pintuan/share.js b/lang/en-us/pintuan/share.js
new file mode 100644
index 0000000..431d7a2
--- /dev/null
+++ b/lang/en-us/pintuan/share.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Group Buy Sharing'
+}
\ No newline at end of file
diff --git a/lang/en-us/point/detail.js b/lang/en-us/point/detail.js
new file mode 100644
index 0000000..bca1748
--- /dev/null
+++ b/lang/en-us/point/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Exchange'
+}
\ No newline at end of file
diff --git a/lang/en-us/point/goods_detail.js b/lang/en-us/point/goods_detail.js
new file mode 100644
index 0000000..a2b30e1
--- /dev/null
+++ b/lang/en-us/point/goods_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: 'Exchange'
+}
\ No newline at end of file
diff --git a/lang/en-us/point/list.js b/lang/en-us/point/list.js
new file mode 100644
index 0000000..7915f01
--- /dev/null
+++ b/lang/en-us/point/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Point Mall'
+}
\ No newline at end of file
diff --git a/lang/en-us/point/order_detail.js b/lang/en-us/point/order_detail.js
new file mode 100644
index 0000000..7b4f199
--- /dev/null
+++ b/lang/en-us/point/order_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Points Exchange Order Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/point/order_list.js b/lang/en-us/point/order_list.js
new file mode 100644
index 0000000..b234764
--- /dev/null
+++ b/lang/en-us/point/order_list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Points Exchange',
+ emptyTips: 'No more data available'
+}
\ No newline at end of file
diff --git a/lang/en-us/point/payment.js b/lang/en-us/point/payment.js
new file mode 100644
index 0000000..1572d25
--- /dev/null
+++ b/lang/en-us/point/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Orders'
+}
\ No newline at end of file
diff --git a/lang/en-us/point/result.js b/lang/en-us/point/result.js
new file mode 100644
index 0000000..ae1ed24
--- /dev/null
+++ b/lang/en-us/point/result.js
@@ -0,0 +1,7 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Exchange Result',
+ exchangeSuccess: 'Exchange Successful',
+ see: 'View Exchange History',
+ goHome: 'Go to Home'
+}
\ No newline at end of file
diff --git a/lang/en-us/presale/detail.js b/lang/en-us/presale/detail.js
new file mode 100644
index 0000000..28c8a91
--- /dev/null
+++ b/lang/en-us/presale/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: 'Select',
+ params: 'Parameters',
+ service: 'Product Service',
+ allGoods: 'All Products',
+ image: 'Image',
+ video: 'Video'
+}
\ No newline at end of file
diff --git a/lang/en-us/presale/list.js b/lang/en-us/presale/list.js
new file mode 100644
index 0000000..bdcabe3
--- /dev/null
+++ b/lang/en-us/presale/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Presale Zone'
+}
\ No newline at end of file
diff --git a/lang/en-us/presale/order_detail.js b/lang/en-us/presale/order_detail.js
new file mode 100644
index 0000000..0d8984e
--- /dev/null
+++ b/lang/en-us/presale/order_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Order Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/presale/order_list.js b/lang/en-us/presale/order_list.js
new file mode 100644
index 0000000..b7e5541
--- /dev/null
+++ b/lang/en-us/presale/order_list.js
@@ -0,0 +1,7 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'My Presales',
+ emptyTips: 'No presale orders available',
+ update: "Release to refresh",
+ updateIng: "Loading..."
+}
\ No newline at end of file
diff --git a/lang/en-us/presale/payment.js b/lang/en-us/presale/payment.js
new file mode 100644
index 0000000..1572d25
--- /dev/null
+++ b/lang/en-us/presale/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Orders'
+}
\ No newline at end of file
diff --git a/lang/en-us/recharge/detail.js b/lang/en-us/recharge/detail.js
new file mode 100644
index 0000000..d44ebbd
--- /dev/null
+++ b/lang/en-us/recharge/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Recharge Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/recharge/list.js b/lang/en-us/recharge/list.js
new file mode 100644
index 0000000..bf3d63c
--- /dev/null
+++ b/lang/en-us/recharge/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Recharge List'
+}
\ No newline at end of file
diff --git a/lang/en-us/recharge/order_list.js b/lang/en-us/recharge/order_list.js
new file mode 100644
index 0000000..8fbebae
--- /dev/null
+++ b/lang/en-us/recharge/order_list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Recharge Records',
+}
\ No newline at end of file
diff --git a/lang/en-us/seckill/detail.js b/lang/en-us/seckill/detail.js
new file mode 100644
index 0000000..28c8a91
--- /dev/null
+++ b/lang/en-us/seckill/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: 'Select',
+ params: 'Parameters',
+ service: 'Product Service',
+ allGoods: 'All Products',
+ image: 'Image',
+ video: 'Video'
+}
\ No newline at end of file
diff --git a/lang/en-us/seckill/list.js b/lang/en-us/seckill/list.js
new file mode 100644
index 0000000..ff3a1a0
--- /dev/null
+++ b/lang/en-us/seckill/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Flash Sale Zone'
+}
\ No newline at end of file
diff --git a/lang/en-us/seckill/payment.js b/lang/en-us/seckill/payment.js
new file mode 100644
index 0000000..1572d25
--- /dev/null
+++ b/lang/en-us/seckill/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Orders'
+}
\ No newline at end of file
diff --git a/lang/en-us/store_notes/note_detail.js b/lang/en-us/store_notes/note_detail.js
new file mode 100644
index 0000000..815a23a
--- /dev/null
+++ b/lang/en-us/store_notes/note_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Note Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/store_notes/note_list.js b/lang/en-us/store_notes/note_list.js
new file mode 100644
index 0000000..240b790
--- /dev/null
+++ b/lang/en-us/store_notes/note_list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Store Notes'
+}
\ No newline at end of file
diff --git a/lang/en-us/storeclose/storeclose.js b/lang/en-us/storeclose/storeclose.js
new file mode 100644
index 0000000..d3c4dc4
--- /dev/null
+++ b/lang/en-us/storeclose/storeclose.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Store Closed'
+}
\ No newline at end of file
diff --git a/lang/en-us/topics/detail.js b/lang/en-us/topics/detail.js
new file mode 100644
index 0000000..9eda13e
--- /dev/null
+++ b/lang/en-us/topics/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Special Topic Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/topics/goods_detail.js b/lang/en-us/topics/goods_detail.js
new file mode 100644
index 0000000..28c8a91
--- /dev/null
+++ b/lang/en-us/topics/goods_detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: 'Select',
+ params: 'Parameters',
+ service: 'Product Service',
+ allGoods: 'All Products',
+ image: 'Image',
+ video: 'Video'
+}
\ No newline at end of file
diff --git a/lang/en-us/topics/list.js b/lang/en-us/topics/list.js
new file mode 100644
index 0000000..0fee407
--- /dev/null
+++ b/lang/en-us/topics/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Special Topic List'
+}
\ No newline at end of file
diff --git a/lang/en-us/topics/payment.js b/lang/en-us/topics/payment.js
new file mode 100644
index 0000000..1572d25
--- /dev/null
+++ b/lang/en-us/topics/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Pending Payment Orders'
+}
\ No newline at end of file
diff --git a/lang/en-us/verification/detail.js b/lang/en-us/verification/detail.js
new file mode 100644
index 0000000..fcc9da5
--- /dev/null
+++ b/lang/en-us/verification/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Verification Details'
+}
\ No newline at end of file
diff --git a/lang/en-us/verification/index.js b/lang/en-us/verification/index.js
new file mode 100644
index 0000000..459e380
--- /dev/null
+++ b/lang/en-us/verification/index.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Verification Counter'
+}
\ No newline at end of file
diff --git a/lang/en-us/verification/list.js b/lang/en-us/verification/list.js
new file mode 100644
index 0000000..f8a1e6c
--- /dev/null
+++ b/lang/en-us/verification/list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'Verification Records',
+ emptyTips: 'No Records'
+}
\ No newline at end of file
diff --git a/lang/en-us/vr/index.js b/lang/en-us/vr/index.js
new file mode 100644
index 0000000..24d3a31
--- /dev/null
+++ b/lang/en-us/vr/index.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'VR'
+}
\ No newline at end of file
diff --git a/lang/zh-cn.js b/lang/zh-cn.js
deleted file mode 100644
index 433fc63..0000000
--- a/lang/zh-cn.js
+++ /dev/null
@@ -1,1911 +0,0 @@
-// Auto-generated by i18n_build_zhcn.py
-// Single authoritative lang source. Do not edit manually.
-// locale: zh-cn
-// Generated: 2026-06-23
-
-export const lang = {
- "common": {
- "chat-message.l60.t0": "客服不在线",
- "chat-message.l63.t0": "客服在线",
- "currency_symbol": "¥",
- "hover-nav.l192.t0": "未获取到 shopInfo,使用默认设置",
- "hover-nav.l239.t0": "来自悬浮按钮的咨询",
- "l460": "设置主题颜色失败",
- "l466": "加载",
- "l477": "[theme] loadTheme 返回空:",
- "l496": "[theme] applyThemeWithRemote 失败,回退到纯预设:",
- "l506": "[theme] 纯预设回退也失败:",
- "l-time.l40.t0": "刚刚",
- "l-time.l40.t1": "分钟前",
- "l-time.time.l110.t0": "小时前",
- "l-time.time.l119.t0": "天前",
- "mescroll.mescroll-uni-option.l30.t0": "~ 暂无相关数据 ~",
- "mescroll.mescroll-uni-option.l6.t0": "下拉刷新",
- "mescroll.mescroll-uni-option.l7.t0": "释放更新",
- "mescroll.mescroll-uni-option.l8.t0": "加载中 ...",
- "mescroll.my-list-mescroll.l44.t0": "~ 空空如也 ~",
- "mescroll.my-list-mescroll.l45.t0": "去看看",
- "ns-chat.ns-chat-goods.l12.t0": "已发送",
- "ns-chat.ns-chat-goods.l25.t0": "发送",
- "ns-chat.ns-chat-order.l7.t0": "订单状态:",
- "ns-chat.ns-chat-order.l8.t0": "配送方式:",
- "ns-chat.ns-chat-receiveGoods.l9.t0": "销量:",
- "ns-contact.l32.t0": "联系客服",
- "ns-contact.l35.t0": "请联系客服,客服电话是",
- "ns-contact.l35.t1": "抱歉,商家暂无客服,请线下联系",
- "ns-copyright.l13.t0": "公安备案",
- "ns-empty.l18.t0": "暂无相关数据",
- "ns-empty.l31.t0": "去逛逛",
- "ns-form.l191.t0": "请选择省市",
- "ns-form.l191.t1": "请选择省市区/县",
- "ns-form.l368.t0": "请输入",
- "ns-form.l37.t0": "请选择",
- "ns-form.l378.t0": "身份证输入不合法",
- "ns-form.l395.t0": "手机号输入不合法",
- "ns-form.l432.t0": "请至少选择一个",
- "ns-form.l442.t0": "请至少上传一张",
- "ns-form.l470.t0": "结束日期不能小于开始日期",
- "ns-form.l498.t0": "结束时间必须大于开始时间",
- "ns-form.l545.t0": "最多上传",
- "ns-form.l545.t1": "张图片",
- "ns-goods-recommend.l13.t0": "猜你喜欢",
- "ns-goods-recommend.l20.t0": "购买",
- "ns-goods-sku.l1007.t0": "购买数量不能小于等于0",
- "ns-goods-sku.l1014.t0": "库存小于最低购买数量",
- "ns-goods-sku.l120.t0": "库存",
- "ns-goods-sku.l124.t0": "已选规格:",
- "ns-goods-sku.l161.t0": "兑换数量",
- "ns-goods-sku.l162.t0": "购买数量",
- "ns-goods-sku.l163.t0": "(每人限购",
- "ns-goods-sku.l167.t0": "(限购",
- "ns-goods-sku.l185.t0": "兑换",
- "ns-goods-sku.l195.t0": "立即购买",
- "ns-goods-sku.l196.t0": "确认",
- "ns-goods-sku.l199.t0": "立即抢购",
- "ns-goods-sku.l208.t0": "该商品已下架",
- "ns-goods-sku.l51.t0": "尾款",
- "ns-goods-sku.l710.t0": "该规格未参与打包一口价活动",
- "ns-goods-sku.l897.t0": "该商品",
- "ns-goods-sku.l897.t1": "起售",
- "ns-goods-sku.l985.t0": "预览商品无法购买",
- "ns-goods-sku.ns-goods-sku-category.l264.t0": "库存不足",
- "ns-goods-sku.ns-goods-sku-category.l272.t0": "该商品每次最多购买",
- "ns-goods-sku.ns-goods-sku-category.l278.t0": "该商品每人限购",
- "ns-goods-sku.ns-goods-sku-category.l279.t0": ",您已购买了",
- "ns-goods-sku.ns-goods-sku-category.l378.t0": "商品已下架",
- "ns-goods-sku.ns-goods-sku-category.l388.t0": "商品已售罄",
- "ns-goods-sku.ns-goods-sku-category.l459.t0": "加入购物车成功",
- "ns-goods-sku.ns-goods-sku-category.l75.t0": "加入购物车",
- "ns-goods-sku.ns-goods-sku-category.l76.t0": "确定",
- "ns-goods-sku.ns-goods-sku-index.l124.t0": "商品添加购物车成功",
- "ns-goods-sku.ns-goods-sku-index.l150.t0": "件",
- "ns-goods-sku.ns-goods-sku-index.l70.t0": "商品库存不足",
- "ns-loading.l16.t0": "加载中",
- "ns-login.l10.t0": "检测到您还未绑定手机号",
- "ns-login.l11.t0": "为了方便您接收订单等信息,需要绑定手机号",
- "ns-login.l115.t0": "获取手机号",
- "ns-login.l15.t0": "手机号",
- "ns-login.l16.t0": "请输入手机号",
- "ns-login.l169.t0": "获取动态码",
- "ns-login.l19.t0": "验证码",
- "ns-login.l20.t0": "请输入验证码",
- "ns-login.l231.t0": "请确认相关协议",
- "ns-login.l24.t0": "动态码",
- "ns-login.l25.t0": "请输入动态码",
- "ns-login.l30.t0": "保存",
- "ns-login.l327.t0": "上传失败",
- "ns-login.l35.t0": "欢迎来到",
- "ns-login.l37.t0": "使用手机号登录,",
- "ns-login.l37.t1": "注册登录,",
- "ns-login.l393.t0": "请输入正确的手机号",
- "ns-login.l414.t0": "s后可重新获取",
- "ns-login.l51.t0": "《隐私条款》",
- "ns-login.l53.t0": "《用户服务协议》",
- "ns-login.l606.t0": "登录中",
- "ns-login.l61.t0": "同意隐私协议并授权手机号",
- "ns-login.l646.t0": "登录失败",
- "ns-login.l66.t0": "授权手机号码",
- "ns-login.l672.t0": "请授权您的手机号码",
- "ns-login.l718.t0": "头像拉取失败",
- "ns-login.l79.t0": "头像",
- "ns-login.l87.t0": "昵称",
- "ns-login.l88.t0": "请输入昵称",
- "ns-navbar.l31.t0": "请输入商品名称",
- "ns-navbar.l39.t0": "定位中...",
- "ns-navbar.l41.t0": "附近门店",
- "ns-newform.l149.t0": "请选择日期",
- "ns-newform.l173.t0": "开始日期",
- "ns-newform.l187.t0": "结束日期",
- "ns-newform.l210.t0": "请选择时间",
- "ns-newform.l234.t0": "开始时间",
- "ns-newform.l248.t0": "结束时间",
- "ns-newform.l271.t0": "请选择省市区",
- "ns-payment.l13.t0": "支付金额",
- "ns-payment.l161.t0": "请选择支付方式!",
- "ns-payment.l166.t0": "支付中...",
- "ns-payment.l18.t0": "余额抵扣",
- "ns-payment.l185.t0": "未获取到支付信息!",
- "ns-payment.l19.t0": "可用¥",
- "ns-payment.l298.t0": "您已取消支付",
- "ns-payment.l34.t0": "平台尚未配置支付方式!",
- "ns-payment.l39.t0": "确认支付",
- "ns-payment.l398.t0": "支付失败,失败原因:",
- "ns-payment.l7.t0": "支付方式",
- "ns-payment.l75.t0": "支付宝支付",
- "ns-payment.l80.t0": "微信支付",
- "ns-select-time.l148.t0": "周日",
- "ns-select-time.l148.t1": "周一",
- "ns-select-time.l148.t2": "周二",
- "ns-select-time.l148.t3": "周三",
- "ns-select-time.l148.t4": "周四",
- "ns-select-time.l148.t5": "周五",
- "ns-select-time.l148.t6": "周六",
- "ns-select-time.l173.t0": "今天",
- "ns-select-time.l185.t0": "明天",
- "ns-select-time.l6.t0": "选择送达时间",
- "ns-select-time.l7.t0": "选择自提时间",
- "ns-select-time.l89.t0": "立即配送(",
- "ns-select-time.l96.t0": "月",
- "ns-select-time.l98.t0": "日",
- "ns-video-player-popup.l17.t0": "视频地址不存在",
- "l18": "余额支付",
- "pick-regions.l17.t0": "取消",
- "pick-regions.l18.t0": "完成",
- "privacy-popup.l15.t0": "不同意",
- "privacy-popup.l18.t0": "同意并继续",
- "privacy-popup.l253.t0": "未同意隐私协议,无法使用相关功能",
- "privacy-popup.l46.t0": "用户隐私保护指引",
- "privacy-popup.l47.t0": "本小程序",
- "privacy-popup.l49.t0": "本应用",
- "privacy-popup.l5.t0": "用户隐私保护提示",
- "privacy-popup.l82.t0": "=========低版本基础库==========",
- "register-reward.l14.t0": "积分奖励",
- "register-reward.l19.t0": "积分",
- "register-reward.l21.t0": "用于下单时抵现或兑换商品等",
- "register-reward.l23.t0": "立即查看",
- "register-reward.l27.t0": "成长值",
- "register-reward.l34.t0": "用于提升会员等级",
- "register-reward.l40.t0": "红包奖励",
- "register-reward.l45.t0": "元",
- "register-reward.l47.t0": "不可提现下单时可用",
- "register-reward.l53.t0": "优惠券奖励",
- "register-reward.l60.t0": "打",
- "register-reward.l60.t1": "折",
- "register-reward.l60.t2": "减",
- "search_tip": "请输入搜索关键词",
- "submit": "提交",
- "wxwork-contact.l108.t0": "企业微信SDK初始化失败",
- "wxwork-contact.l112.t0": "初始化企业微信SDK失败:",
- "wxwork-contact.l145.t0": "未配置企业微信客服信息",
- "wxwork-contact.l16.t0": "添加企业微信客服",
- "wxwork-contact.l168.t0": "跳转成功",
- "wxwork-contact.l173.t0": "跳转企业微信失败:",
- "wxwork-contact.l174.t0": "跳转失败,请检查企业微信配置",
- "wxwork-contact.l184.t0": "企业微信SDK未初始化",
- "wxwork-contact.l19.t0": "点击确定后将跳转至企业微信,添加专业客服为您服务",
- "wxwork-contact.l192.t0": "打开用户资料失败:",
- "wxwork-contact.l193.t0": "打开用户资料失败",
- "wxwork-contact.l202.t0": "提示",
- "yuyue-date.l103.t0": "已约满",
- "yuyue-date.l108.t0": "可预约",
- "yuyue-date.l176.t0": "暂无选择",
- "yuyue-date.l216.t0": "不可以预约",
- "yuyue-date.l23.t0": "指定日期",
- "yuyue-date.l34.t0": "一",
- "yuyue-date.l34.t1": "二",
- "yuyue-date.l34.t2": "三",
- "yuyue-date.l34.t3": "四",
- "yuyue-date.l34.t4": "五",
- "yuyue-date.l34.t5": "六",
- "yuyue-date.l38.t0": "周${days[day]}",
- "yuyue-date.l53.t0": "后天",
- "yuyue-date.l57.t0": "预约时间:",
- "yuyue-date.l6.t0": "选择时间",
- "yuyue-date.l60.t0": "确认预约",
- "yuyue-date.l63.t0": "如不想线上预约,可致电商家电话预约",
- },
- "customer": {
- },
- "pageTitles": {
- "article.detail": "文章详情",
- "article.list": "文章列表",
- "bale.detail": "",
- "bale.payment": "待付款订单",
- "bargain.detail": "",
- "bargain.launch": "砍价详情",
- "bargain.list": "砍价专区",
- "bargain.my_bargain": "我的砍价",
- "bargain.payment": "待付款订单",
- "combo.detail": "组合套餐",
- "combo.payment": "待付款订单",
- "contact.contact": "电子名片",
- "diy.diy": "",
- "fenxiao.apply": "",
- "fenxiao.bill": "账单",
- "fenxiao.follow": "我的关注",
- "fenxiao.goods_list": "",
- "fenxiao.index": "",
- "fenxiao.level": "",
- "fenxiao.order": "",
- "fenxiao.order_detail": "订单详情",
- "fenxiao.promote_code": "推广海报",
- "fenxiao.team": "",
- "fenxiao.withdraw_apply": "",
- "fenxiao.withdraw_list": "",
- "game.cards": "刮刮乐",
- "game.record": "中奖纪录",
- "game.smash_eggs": "砸金蛋",
- "game.turntable": "大转盘",
- "goods.brand": "品牌专区",
- "goods.cart": "购物车",
- "goods.category": "商品分类",
- "goods.consult": "商品咨询",
- "goods.consult_edit": "我要咨询",
- "goods.coupon": "优惠券领取",
- "goods.coupon_receive": "领取优惠券",
- "goods.detail": "",
- "goods.evaluate": "商品评价",
- "goods.list": "商品列表",
- "goods.not_exist": "商品找不到",
- "goods.point": "积分中心",
- "goods.search": "搜索",
- "groupbuy.detail": "",
- "groupbuy.list": "团购专区",
- "groupbuy.payment": "待付款订单",
- "help.detail": "帮助详情",
- "help.list": "帮助中心",
- "hongbao.list": "瓜分红包列表",
- "hongbao.my_hongbao": "我的红包列表",
- "index.index": "",
- "live.list": "直播",
- "login.find": "找回密码",
- "login.login": "登录",
- "login.register": "注册",
- "member.account": "账户列表",
- "member.account_edit": "编辑账户",
- "member.address": "收货地址",
- "member.address_edit": "编辑收货地址",
- "member.apply_withdrawal": "申请提现",
- "member.assets": "账号注销",
- "member.balance": "我的余额",
- "member.balance_detail": "余额明细",
- "member.cancellation": "账号注销",
- "member.cancelrefuse": "账号注销",
- "member.cancelstatus": "账号注销",
- "member.cancelsuccess": "账号注销",
- "member.card": "会员卡",
- "member.card_buy": "会员卡",
- "member.collection": "我的关注",
- "member.contact": "客服",
- "member.coupon": "我的优惠券",
- "member.footprint": "我的足迹",
- "member.gift": "我的礼品",
- "member.gift_detail": "礼品订单",
- "member.index": "会员中心",
- "member.info": "个人资料",
- "member.info_edit": "个人资料",
- "member.invite_friends": "邀请好友",
- "member.level": "会员等级",
- "member.message": "我的消息",
- "member.modify_face": "修改头像",
- "member.pay_password": "支付密码",
- "member.point": "我的积分",
- "member.point_detail": "积分明细",
- "member.signin": "签到有礼",
- "member.withdrawal": "提现记录",
- "member.withdrawal_detail": "提现详情",
- "notice.detail": "公告详情",
- "notice.list": "公告列表",
- "order.activist": "售后",
- "order.detail": "订单详情",
- "order.detail_local_delivery": "订单详情",
- "order.detail_pickup": "订单详情",
- "order.detail_point": "订单详情",
- "order.detail_virtual": "订单详情",
- "order.evaluate": "我要评价",
- "order.list": "订单列表",
- "order.logistics": "物流信息",
- "order.payment": "待付款订单",
- "order.refund": "申请退款",
- "order.refund_batch": "申请退款",
- "order.refund_detail": "退款详情",
- "pay.index": "支付方式",
- "pay.result": "支付结果",
- "pintuan.detail": "",
- "pintuan.list": "拼团专区",
- "pintuan.my_spell": "我的拼单",
- "pintuan.payment": "待付款订单",
- "pintuan.share": "拼团分享",
- "point.detail": "兑换",
- "point.list": "积分商城",
- "point.order_detail": "积分兑换订单详情",
- "point.order_list": "积分兑换",
- "point.payment": "待付款订单",
- "point.result": "兑换结果",
- "presale.detail": "",
- "presale.list": "预售专区",
- "presale.order_detail": "订单详情",
- "presale.order_list": "我的预售",
- "presale.payment": "待付款订单",
- "recharge.detail": "充值详情",
- "recharge.list": "充值列表",
- "recharge.order_list": "充值记录",
- "seckill.detail": "",
- "seckill.list": "秒杀专区",
- "seckill.payment": "待付款订单",
- "store_notes.note_detail": "笔记详情",
- "store_notes.note_list": "店铺笔记",
- "storeclose.storeclose": "店铺打烊",
- "topics.detail": "专题活动详情",
- "topics.goods_detail": "",
- "topics.list": "专题活动列表",
- "topics.payment": "待付款订单",
- "verification.detail": "核销明细",
- "verification.index": "核销台",
- "verification.list": "核销记录",
- "vr.index": "VR",
- },
- "tabBar": {
- },
- "address": {
- },
- "aiChat": {
- },
- "ai_chat": {
- "ai-chat.ai-chat-message.l1026.t0": "流式请求失败:",
- "ai-chat.ai-chat-message.l1082.t0": "流式请求失败",
- "ai-chat.ai-chat-message.l1100.t0": "AI正在思考",
- "ai-chat.ai-chat-message.l1101.t0": "AI正在分析",
- "ai-chat.ai-chat-message.l1102.t0": "AI正在检索",
- "ai-chat.ai-chat-message.l1103.t0": "AI正在生成",
- "ai-chat.ai-chat-message.l1128.t0": "你好",
- "ai-chat.ai-chat-message.l1128.t1": "您好!我是AI智能客服,很高兴为您服务!有什么可以帮助您的吗?",
- "ai-chat.ai-chat-message.l1129.t0": "我们的产品价格根据型号和配置有所不同,具体价格请查看商品详情页面。",
- "ai-chat.ai-chat-message.l1130.t0": "发货",
- "ai-chat.ai-chat-message.l1130.t1": "一般情况下,订单会在24小时内发货,具体时效请查看物流信息。",
- "ai-chat.ai-chat-message.l1131.t0": "退货",
- "ai-chat.ai-chat-message.l1131.t1": "支持7天无理由退货,请确保商品完好无损。",
- "ai-chat.ai-chat-message.l1132.t0": "客服",
- "ai-chat.ai-chat-message.l1132.t1": "我们的客服工作时间是9:00-18:00,有问题可以随时联系我们。",
- "ai-chat.ai-chat-message.l1139.t0": "感谢您的咨询!关于",
- "ai-chat.ai-chat-message.l1139.t1": "的问题,我们的专业客服会尽快为您解答。您也可以查看我们的帮助文档获取更多信息。",
- "ai-chat.ai-chat-message.l1429.t0": "加载历史消息中...",
- "ai-chat.ai-chat-message.l1477.t0": "加载历史失败:",
- "ai-chat.ai-chat-message.l1483.t0": "加载更多历史消息",
- "ai-chat.ai-chat-message.l1691.t0": "已复制选中内容",
- "ai-chat.ai-chat-message.l1691.t1": "已复制",
- "ai-chat.ai-chat-message.l1705.t0": "[AI Chat] 开始复制, 内容长度:",
- "ai-chat.ai-chat-message.l1705.t1": "内容前50字:",
- "ai-chat.ai-chat-message.l1709.t0": "[AI Chat] 复制成功",
- "ai-chat.ai-chat-message.l1713.t0": "[AI Chat] 复制失败, 详细错误:",
- "ai-chat.ai-chat-message.l1714.t0": "[AI Chat] 复制失败 errMsg:",
- "ai-chat.ai-chat-message.l1714.t1": "无错误消息",
- "ai-chat.ai-chat-message.l1971.t0": "[开心]",
- "ai-chat.ai-chat-message.l1972.t0": "[大笑]",
- "ai-chat.ai-chat-message.l1973.t0": "[微笑]",
- "ai-chat.ai-chat-message.l1974.t0": "[爱心]",
- "ai-chat.ai-chat-message.l1975.t0": "[点赞]",
- "ai-chat.ai-chat-message.l1976.t0": "[哭泣]",
- "ai-chat.ai-chat-message.l1977.t0": "[感谢/拜托]",
- "ai-chat.ai-chat-message.l1978.t0": "[喜欢]",
- "ai-chat.ai-chat-message.l1979.t0": "[庆祝]",
- "ai-chat.ai-chat-message.l1980.t0": "[思考]",
- "ai-chat.ai-chat-message.l1981.t0": "[尴尬]",
- "ai-chat.ai-chat-message.l1983.t0": "[喜爱]",
- "ai-chat.ai-chat-message.l1984.t0": "[飞吻]",
- "ai-chat.ai-chat-message.l1985.t0": "[坏笑]",
- "ai-chat.ai-chat-message.l1987.t0": "[难过]",
- "ai-chat.ai-chat-message.l1989.t0": "[生气]",
- "ai-chat.ai-chat-message.l1990.t0": "[困]",
- "ai-chat.ai-chat-message.l1991.t0": "[拥抱]",
- "ai-chat.ai-chat-message.l1996.t0": "[天使]",
- "ai-chat.ai-chat-message.l1997.t0": "[惊喜]",
- "ai-chat.ai-chat-message.l1998.t0": "[好吃]",
- "ai-chat.ai-chat-message.l1999.t0": "[调皮]",
- "ai-chat.ai-chat-message.l2001.t0": "[搞怪]",
- "ai-chat.ai-chat-message.l2003.t0": "[发财]",
- "ai-chat.ai-chat-message.l2004.t0": "[害羞]",
- "ai-chat.ai-chat-message.l2005.t0": "[嘘]",
- "ai-chat.ai-chat-message.l2006.t0": "[闭嘴]",
- "ai-chat.ai-chat-message.l2007.t0": "[疑惑]",
- "ai-chat.ai-chat-message.l2008.t0": "[无语]",
- "ai-chat.ai-chat-message.l2010.t0": "[沉默]",
- "ai-chat.ai-chat-message.l2011.t0": "[不屑]",
- "ai-chat.ai-chat-message.l2012.t0": "[白眼]",
- "ai-chat.ai-chat-message.l2014.t0": "[说谎]",
- "ai-chat.ai-chat-message.l2015.t0": "[安心]",
- "ai-chat.ai-chat-message.l2017.t0": "[流口水]",
- "ai-chat.ai-chat-message.l2018.t0": "[生病]",
- "ai-chat.ai-chat-message.l2019.t0": "[发烧]",
- "ai-chat.ai-chat-message.l2020.t0": "[受伤]",
- "ai-chat.ai-chat-message.l2021.t0": "[恶心]",
- "ai-chat.ai-chat-message.l2022.t0": "[呕吐]",
- "ai-chat.ai-chat-message.l2023.t0": "[感冒]",
- "ai-chat.ai-chat-message.l2024.t0": "[热]",
- "ai-chat.ai-chat-message.l2025.t0": "[冷]",
- "ai-chat.ai-chat-message.l2026.t0": "[头晕]",
- "ai-chat.ai-chat-message.l2027.t0": "[晕]",
- "ai-chat.ai-chat-message.l2028.t0": "[爆炸]",
- "ai-chat.ai-chat-message.l2029.t0": "[酷]",
- "ai-chat.ai-chat-message.l2031.t0": "[书呆子]",
- "ai-chat.ai-chat-message.l2033.t0": "[困惑]",
- "ai-chat.ai-chat-message.l2034.t0": "[担心]",
- "ai-chat.ai-chat-message.l2036.t0": "[惊讶]",
- "ai-chat.ai-chat-message.l2038.t0": "[震惊]",
- "ai-chat.ai-chat-message.l2039.t0": "[脸红]",
- "ai-chat.ai-chat-message.l2040.t0": "[恳求]",
- "ai-chat.ai-chat-message.l2043.t0": "[害怕]",
- "ai-chat.ai-chat-message.l2044.t0": "[紧张]",
- "ai-chat.ai-chat-message.l2045.t0": "[失望]",
- "ai-chat.ai-chat-message.l2046.t0": "[恐惧]",
- "ai-chat.ai-chat-message.l2047.t0": "[困扰]",
- "ai-chat.ai-chat-message.l2048.t0": "[痛苦]",
- "ai-chat.ai-chat-message.l2050.t0": "[汗]",
- "ai-chat.ai-chat-message.l2051.t0": "[累]",
- "ai-chat.ai-chat-message.l2054.t0": "[愤怒]",
- "ai-chat.ai-chat-message.l2056.t0": "[咒骂]",
- "ai-chat.ai-chat-message.l2057.t0": "[恶魔]",
- "ai-chat.ai-chat-message.l2059.t0": "[骷髅]",
- "ai-chat.ai-chat-message.l2060.t0": "[便便]",
- "ai-chat.ai-chat-message.l2061.t0": "[鬼]",
- "ai-chat.ai-chat-message.l2062.t0": "[外星人]",
- "ai-chat.ai-chat-message.l2063.t0": "[机器人]",
- "ai-chat.ai-chat-message.l2064.t0": "[万圣节]",
- "ai-chat.ai-chat-message.l2065.t0": "[开心猫]",
- "ai-chat.ai-chat-message.l2066.t0": "[微笑猫]",
- "ai-chat.ai-chat-message.l2067.t0": "[大笑猫]",
- "ai-chat.ai-chat-message.l2068.t0": "[花痴猫]",
- "ai-chat.ai-chat-message.l2069.t0": "[得意猫]",
- "ai-chat.ai-chat-message.l2070.t0": "[亲亲猫]",
- "ai-chat.ai-chat-message.l2071.t0": "[惊讶猫]",
- "ai-chat.ai-chat-message.l2072.t0": "[哭泣猫]",
- "ai-chat.ai-chat-message.l2073.t0": "[生气猫]",
- "ai-chat.ai-chat-message.l2074.t0": "[挥手]",
- "ai-chat.ai-chat-message.l2075.t0": "[举手]",
- "ai-chat.ai-chat-message.l2076.t0": "[手掌]",
- "ai-chat.ai-chat-message.l2080.t0": "[捏]",
- "ai-chat.ai-chat-message.l2081.t0": "[耶]",
- "ai-chat.ai-chat-message.l2082.t0": "[好运]",
- "ai-chat.ai-chat-message.l2083.t0": "[爱你]",
- "ai-chat.ai-chat-message.l2084.t0": "[摇滚]",
- "ai-chat.ai-chat-message.l2085.t0": "[打电话]",
- "ai-chat.ai-chat-message.l2086.t0": "[左边]",
- "ai-chat.ai-chat-message.l2087.t0": "[右边]",
- "ai-chat.ai-chat-message.l2088.t0": "[上边]",
- "ai-chat.ai-chat-message.l2089.t0": "[竖中指]",
- "ai-chat.ai-chat-message.l2090.t0": "[下边]",
- "ai-chat.ai-chat-message.l2091.t0": "[向上]",
- "ai-chat.ai-chat-message.l2092.t0": "[鄙视]",
- "ai-chat.ai-chat-message.l2093.t0": "[拳头]",
- "ai-chat.ai-chat-message.l2095.t0": "[左拳]",
- "ai-chat.ai-chat-message.l2096.t0": "[右拳]",
- "ai-chat.ai-chat-message.l2097.t0": "[鼓掌]",
- "ai-chat.ai-chat-message.l2098.t0": "[举手庆祝]",
- "ai-chat.ai-chat-message.l2099.t0": "[张开手]",
- "ai-chat.ai-chat-message.l2100.t0": "[摊手]",
- "ai-chat.ai-chat-message.l2101.t0": "[握手]",
- "ai-chat.ai-chat-message.l2102.t0": "[写字]",
- "ai-chat.ai-chat-message.l2103.t0": "[美甲]",
- "ai-chat.ai-chat-message.l2104.t0": "[自拍]",
- "ai-chat.ai-chat-message.l2105.t0": "[肌肉]",
- "ai-chat.ai-chat-message.l2107.t0": "[心跳]",
- "ai-chat.ai-chat-message.l2108.t0": "[两颗心]",
- "ai-chat.ai-chat-message.l2109.t0": "[闪亮心]",
- "ai-chat.ai-chat-message.l2110.t0": "[礼物心]",
- "ai-chat.ai-chat-message.l2111.t0": "[旋转心]",
- "ai-chat.ai-chat-message.l2112.t0": "[丘比特]",
- "ai-chat.ai-chat-message.l2113.t0": "[情书]",
- "ai-chat.ai-chat-message.l2114.t0": "[心形]",
- "ai-chat.ai-chat-message.l2115.t0": "[黄心]",
- "ai-chat.ai-chat-message.l2116.t0": "[蓝心]",
- "ai-chat.ai-chat-message.l2117.t0": "[紫心]",
- "ai-chat.ai-chat-message.l2118.t0": "[黑心]",
- "ai-chat.ai-chat-message.l2119.t0": "[心碎]",
- "ai-chat.ai-chat-message.l2121.t0": "[炸弹]",
- "ai-chat.ai-chat-message.l2125.t0": "[风]",
- "ai-chat.ai-chat-message.l2126.t0": "[眼睛]",
- "ai-chat.ai-chat-message.l2127.t0": "[看]",
- "ai-chat.ai-chat-message.l2128.t0": "[舌头]",
- "ai-chat.ai-chat-message.l2129.t0": "[嘴巴]",
- "ai-chat.ai-chat-message.l2130.t0": "[耳朵]",
- "ai-chat.ai-chat-message.l2131.t0": "[鼻子]",
- "ai-chat.ai-chat-message.l618.t0": "[AI Chat] → 分支1: ID变化,加载历史",
- "ai-chat.ai-chat-message.l623.t0": "[AI Chat] → 分支2: ID不变但只有初始消息,从服务端恢复",
- "ai-chat.ai-chat-message.l627.t0": "[AI Chat] → 分支3: 全新会话",
- "ai-chat.ai-chat-message.l630.t0": "[AI Chat] → 分支4: 跳过加载,保留当前消息, messages.length:",
- "ai-chat.ai-chat-message.l638.t0": "[AI Chat] 已有会话,跳过欢迎语",
- "ai-chat.ai-chat-message.l649.t0": "[AI Chat] API getServiceConfig 返回:",
- "ai-chat.ai-chat-message.l660.t0": "[AI Chat] 使用远程欢迎语:",
- "ai-chat.ai-chat-message.l664.t0": "[AI Chat] 获取服务配置失败:",
- "ai-chat.ai-chat-message.l672.t0": "[AI Chat] 使用降级欢迎语",
- "ai-chat.ai-chat-message.l674.t0": "[AI Chat] 无可用欢迎语",
- "ai-chat.ai-chat-message.l767.t0": "[AI Chat] loadChatHistoryIfExist 被调用, convId:",
- "ai-chat.ai-chat-message.l771.t0": "[AI Chat] 请求历史 API...",
- "ai-chat.ai-chat-message.l775.t0": "[AI Chat] 历史 API 返回:",
- "ai-chat.ai-chat-message.l778.t0": "[AI Chat] 历史记录为空或格式无效, success:",
- "ai-chat.ai-chat-message.l781.t0": "[AI Chat] 原始消息数:",
- "ai-chat.ai-chat-message.l801.t0": "[AI Chat] 过滤后消息数:",
- "ai-chat.ai-chat-message.l801.t1": "内容摘要:",
- "ai-chat.ai-chat-message.l807.t0": "[AI Chat] 加载历史记录失败:",
- "ai-chat.ai-chat-message.l884.t0": "AI服务调用失败:",
- "ai-chat.index.l146.t0": "[AI Chat Page] onShow 触发",
- "ai-chat.index.l157.t0": "onKeyboardHeightChange 不可用:",
- "ai-chat.index.l180.t0": "[AI Chat Page] onUnload 触发",
- "ai-chat.index.l236.t0": "事件处理错误:",
- "ai-chat.index.l266.t0": "初始化导航栏失败:",
- "ai-chat.index.l424.t0": "我理解您的需求,让我为您详细解答。",
- "ai-chat.index.l425.t0": "感谢您的提问,这是一个很好的问题。",
- "ai-chat.index.l426.t0": "根据您的问题,我建议您可以考虑以下几个方面:",
- "ai-chat.index.l427.t0": "这个问题很常见,让我为您提供一些解决方案。",
- "ai-chat.index.l428.t0": "我明白您的困惑,让我帮您分析一下。",
- "ai-chat.index.l437.t0": "$ {randomResponse}\\n\\n您的问题",
- "ai-chat.index.l437.t1": "我已经收到,正在为您处理中...",
- "ai-chat.index.l481.t0": "聊天组件未初始化",
- "ai-chat.index.l485.t0": "我想了解以下商品的详细信息:\\n商品名称:${product.goods_name}\\n价格:¥${product.price}\\n商品ID:${product.goods_id}",
- "ai-chat.index.l521.t0": "【AI客服】servicerConfig 未加载,200ms后重试...",
- },
- "appointment": {
- },
- "article": {
- "detail.l5.t0": "发表时间:",
- "list.l24.t0": "暂无文章",
- "list.l91.t0": "文章列表",
- },
- "assets": {
- },
- "auth": {
- },
- "balance": {
- },
- "bale": {
- },
- "bargain": {
- },
- "birthday": {
- },
- "brand": {
- },
- "cancel": {
- },
- "card": {
- },
- "cart": {
- },
- "cases": {
- },
- "category": {
- },
- "channel": {
- },
- "chat": {
- },
- "collection": {
- },
- "combo": {
- },
- "contact": {
- "l165.t0": "请输入您的邮箱",
- "l314.t0": "联系我们",
- "l372.t0": "请填写姓名",
- "l376.t0": "手机号格式不正确",
- "l380.t0": "请填写留言内容",
- "l405.t0": "提交失败,请重试",
- "l76.t0": "企业文件",
- "l93.t0": "企业视频",
- },
- "coupon": {
- },
- "customerService": {
- },
- "date": {
- },
- "delivery": {
- },
- "diy": {
- "diy-article.l10.t0": "滚到底后跳变",
- "diy-article.l908.t0": "但不是 .read-wrap,特异性 view",
- "diy-article.l925.t0": "组件内部",
- "diy-article.l94.t0": "查看更多",
- "diy-article.l99.t0": "暂无相关文章",
- "diy-bargain.l15.t0": "低至0元免费拿",
- "diy-bargain.l78.t0": "继续砍价",
- "diy-category-item.l132.t0": "选规格",
- "diy-category-item.l163.t0": "已经到底了~",
- "diy-category-item.l47.t0": "全部",
- "diy-category.l12.t0": "商品分类",
- "diy-category.l123.t0": "暂时没有分类哦!",
- "diy-category.l138.t0": "总计:",
- "diy-category.l144.t0": "去结算",
- "diy-category.l54.t0": "展开",
- "diy-category.l71.t0": "点击收起",
- "diy-channel-list.l268.t0": "视频号仅支持在微信小程序环境中播放",
- "diy-channel-list.l278.t0": "打开视频号失败",
- "diy-coupon.l103.t0": "所有商品可用",
- "diy-coupon.l104.t0": "指定商品可用",
- "diy-coupon.l105.t0": "指定商品不可用",
- "diy-coupon.l143.t0": "立即使用",
- "diy-coupon.l181.t0": "立即领取",
- "diy-coupon.l209.t0": "优惠券",
- "diy-coupon.l229.t0": "无门槛使用",
- "diy-coupon.l241.t0": "暂无优惠券",
- "diy-coupon.l32.t0": "满",
- "diy-coupon.l32.t1": "元可用",
- "diy-coupon.l32.t2": "无门槛优惠券",
- "diy-coupon.l38.t0": "去使用",
- "diy-coupon.l407.t0": "该优惠券已抢光",
- "diy-coupon.l430.t0": "领取成功",
- "diy-coupon.l71.t0": "领取",
- "diy-fenxiao-goods-list.l141.t0": "关注成功",
- "diy-fenxiao-goods-list.l153.t0": "确认取消关注该商品吗",
- "diy-fenxiao-goods-list.l170.t0": "取消成功",
- "diy-fenxiao-goods-list.l23.t0": "赚 ¥",
- "diy-form.l142.t0": "提交",
- "diy-form.l301.t0": "默认表单",
- "diy-form.l306.t0": "提交成功",
- "diy-form.l315.t0": "提交失败",
- "diy-index-page.l156.t0": "该分类下暂无商品",
- "diy-index-page.l196.t0": "首页",
- "diy-kefu.l17.t0": "立即添加",
- "diy-listmenu.l15.t0": "查看",
- "diy-live.l29.t0": "主播:",
- "diy-live.l33.t0": "直播商品:",
- "diy-map.l9.t0": "一键导航",
- "diy-member-info.l110.t0": "超级会员",
- "diy-member-info.l113.t0": "查看特权",
- "diy-member-info.l114.t0": "会员可享更多权益",
- "diy-member-info.l121.t0": "开通可享更多权益",
- "diy-member-info.l125.t0": "立即开通",
- "diy-member-info.l137.t0": "查看更多权益",
- "diy-member-info.l146.t0": "余额",
- "diy-member-info.l15.t0": "点击授权头像昵称",
- "diy-member-info.l164.t0": "余额充值",
- "diy-member-info.l197.t0": "获取您的昵称、头像",
- "diy-member-info.l198.t0": "获取用户头像、昵称完善个人资料,主要用于向用户提供具有辨识度的用户中心界面",
- "diy-member-info.l39.t0": "点击获取微信头像",
- "diy-member-info.l407.t0": "微信用户",
- "diy-member-info.l497.t0": "使用会员码需先绑定手机号,是否绑定手机号?",
- "diy-merch-list.l66.t0": "品牌",
- "diy-notes.l20.t0": "单品介绍",
- "diy-notes.l21.t0": "掌柜说",
- "diy-notice.l45.t0": "公告",
- "diy-notice.l49.t0": "我知道了",
- "diy-payment-qrcode.l12.t0": "付款码",
- "diy-payment-qrcode.l16.t0": "扫码付",
- "diy-payment-qrcode.l22.t0": "门店支付",
- "diy-payment-qrcode.l33.t0": "扫码付请退出程序后直接使用微信扫一扫或返回上一页使用付款码进行支付",
- "diy-payment-qrcode.l6.t0": "门店消费时使用,支付时点击下方展示付款码",
- "diy-pinfan.l28.t0": "已拼",
- "diy-pinfan.l52.t0": "返",
- "diy-pinfan.l55.t0": "返优惠券",
- "diy-pintuan.l151.t0": "去参团",
- "diy-pintuan.l29.t0": "人参与",
- "diy-pintuan.l29.t1": "人拼团成功",
- "diy-search.l31.t0": "搜索",
- "diy-seckill.l100.t0": "即将开始",
- "diy-seckill.l16.t0": "距离开始",
- "diy-seckill.l19.t0": "距离结束",
- "diy-seckill.l505.t0": "秒杀活动即将开启,敬请期待!",
- "diy-seckill.l90.t0": "原价:",
- "diy-store.l10.t0": "切换",
- "diy-store.l20.t0": "获取当前位置...",
- "diy-store.l66.t0": "商品搜索",
- "diy-text.l211.t0": "专区",
- "diy-video.l146.t0": "H5端预加载视频失败:",
- "diy-video.l187.t0": "视频加载失败:",
- "js.wechat-channel.l111.t0": "缺少必要字段: ${field}",
- "js.wechat-channel.l170.t0": "微信视频号错误:",
- "js.wechat-channel.l59.t0": "当前环境不是微信小程序",
- "js.wechat-channel.l60.t0": "当前微信基础库版本过低,需要 2.19.2 或以上版本",
- "js.wechat-channel.l61.t0": "当前环境不支持微信视频号",
- "js.wechat-channel.l62.t0": "缺少必要字段: {field}",
- },
- "diyText": {
- },
- "evaluate": {
- },
- "fenxiao": {
- "apply.l100.t0": "成为分销商的条件",
- "apply.l101.t0": "成为",
- "apply.l126.t0": "您还不是分销商",
- "apply.l131.t0": "您已提交",
- "apply.l133.t0": "您提交的",
- "apply.l134.t0": "重新申请",
- "apply.l16.t0": "请填写申请信息",
- "apply.l166.t0": "无",
- "apply.l194.t0": "商家未开启分销",
- "apply.l210.t0": "申请",
- "apply.l27.t0": "邀请人",
- "apply.l278.t0": "请仔细阅读协议,并勾选",
- "apply.l32.t0": "名称",
- "apply.l45.t0": "申请成为",
- "apply.l52.t0": "分销商申请条件",
- "apply.l82.t0": "展开更多",
- "bill.l11.t0": "账单编号:",
- "bill.l19.t0": "暂无账单信息",
- "child_fenxiao.l23.t0": "人",
- "child_fenxiao.l24.t0": "单",
- "child_fenxiao.l32.t0": "暂无数据",
- "goods_list.l118.t0": "长按保存图片",
- "goods_list.l43.t0": "赚",
- "goods_list.l49.t0": "暂无分销商品",
- "goods_list.l56.t0": "分享好友",
- "goods_list.l59.t0": "生成海报",
- "index.l114.t0": "订单",
- "index.l124.t0": "我的邀请码",
- "index.l125.t0": "邀好友赚好礼",
- "index.l133.t0": "邀请好友",
- "index.l142.t0": "账单报表",
- "index.l162.t0": "您的排名为第",
- "index.l171.t0": "推广人排行",
- "index.l172.t0": "您的排名为",
- "index.l180.t0": "等级说明",
- "index.l21.t0": "总店",
- "index.l21.t1": "上级代理商:",
- "index.l214.t0": "您还不是",
- "index.l215.t0": "立即加入",
- "index.l22.t0": "已邀请成功:",
- "index.l223.t0": "快速升级技巧",
- "index.l231.t0": "未完成",
- "index.l239.t0": "去完成",
- "index.l254.t0": "满足任意一条件即可升级",
- "index.l254.t1": "满足全部条件才能进行升级",
- "index.l293.t0": "中心",
- "index.l33.t0": "等级未解锁",
- "index.l33.t1": "0 ? info.level_name : '等级未解锁' }}",
- "index.l34.t0": "下单、邀请好友均可提升等级",
- "index.l36.t0": "做任务",
- "index.l371.t0": "当前分销商已冻结",
- "index.l43.t0": "可",
- "index.l483.t0": "下级消费",
- "index.l484.t0": "下级消费单数满",
- "index.l485.t0": "分销商自己购买和自己推荐的直属会员购买的订单次数",
- "index.l498.t0": "下级消费金额满",
- "index.l499.t0": "分销商自己购买和推荐的直属会员购买的订单的总额",
- "index.l512.t0": "下级消费产生",
- "index.l512.t1": "总额满",
- "index.l514.t0": "分销商自己购买和自己推荐的直属会员购买的订单",
- "index.l514.t1": "总额",
- "index.l526.t0": "自身消费",
- "index.l527.t0": "自身消费单数满",
- "index.l528.t0": "分销商自己购买的订单次数",
- "index.l539.t0": "自身消费金额满",
- "index.l540.t0": "分销商自己购买的订单总额",
- "index.l55.t0": "总",
- "index.l553.t0": "邀请好友人数达到",
- "index.l554.t0": "分销商的直属下级会员人数(包含已经申请成为分销商的)",
- "index.l567.t0": "邀请好友成为分销商人数达到",
- "index.l568.t0": "分销商的直属下级分销商人数",
- "index.l59.t0": "已提现",
- "index.l64.t0": "提现中(元)",
- "index.l70.t0": "待入账(元)",
- "index.l93.t0": "我的粉丝",
- "index.l94.t0": "邀请的用户",
- "level.l119.t0": "分销商自己购买和自己推荐的直属会员购买的订单次数达到",
- "level.l131.t0": "分销商自己购买和推荐的直属会员购买的订单的总额达到",
- "level.l143.t0": "下级消费产生佣金总额满",
- "level.l144.t0": "分销商自己购买和自己推荐的直属会员购买的订单佣金总额达到",
- "level.l157.t0": "分销商自己购买的订单次数达到",
- "level.l169.t0": "分销商自己购买的订单总额满足",
- "level.l181.t0": "分销商的直属下级会员人数达到",
- "level.l181.t1": "人(包含已经申请成为分销商的)",
- "level.l193.t0": "分销商的直属下级分销商人数达到",
- "level.l20.t0": "一级分佣比率",
- "level.l221.t0": "等级",
- "level.l24.t0": "二级分佣比率",
- "level.l28.t0": "三级分佣比率",
- "order.l17.t0": "已退款",
- "order.l19.t0": "已结算",
- "order.l20.t0": "待结算",
- "order.l81.t0": "暂无订单",
- "order.l83.t0": "暂无待结算订单",
- "order.l85.t0": "暂无已结算订单",
- "order.l87.t0": "暂无已退款订单",
- "order_detail.l47.t0": "返佣详情",
- "order_detail.l56.t0": "分佣层级:",
- "order_detail.l60.t0": "返佣金额:",
- "promote.l21.t0": "已邀请好友",
- "promote.l22.t0": "已下单好友",
- "promote.l35.t0": "暂无已邀请好友,快去邀请吧",
- "promote.l44.t0": "暂无活动规则",
- "promote_code.l114.t0": "下载失败",
- "promote_code.l139.t0": "海报生成失败",
- "promote_code.l14.t0": "长按识别图中二维码",
- "promote_code.l18.t0": "保存海报",
- "promote_code.l24.t0": "您拒绝了保存图片到相册的授权请求,无法保存图片到相册,如需正常使用,请授权之后再进行操作。",
- "promote_code.l29.t0": "立即授权",
- "ranking_list.l19.t0": "点击提现",
- "ranking_list.l21.t0": "我的团队",
- "ranking_list.l33.t0": "分销佣金",
- "ranking_list.l44.t0": "佣金排行",
- "ranking_list.l45.t0": "您排行第",
- "ranking_list.l57.t0": "推广人数",
- "ranking_list.l68.t0": "推广排行",
- "team.l92.t0": "一级",
- "team.l96.t0": "二级",
- "withdraw_apply.l178.t0": "请输入提现金额",
- "withdraw_apply.l189.t0": "提现金额超出可提现金额",
- "withdraw_apply.l19.t0": "请添加提现账户",
- "withdraw_apply.l196.t0": "提现金额小于最低提现金额",
- "withdraw_apply.l205.t0": "请先添加提现方式",
- "withdraw_apply.l238.t0": "提现申请成功",
- "withdraw_apply.l31.t0": "提现金额:",
- "withdraw_apply.l41.t0": "可提现金额:",
- "withdraw_apply.l42.t0": "全部提现",
- "withdraw_apply.l46.t0": "最小提现金额为",
- "withdraw_apply.l48.t0": "手续费为",
- "withdraw_apply.l5.t0": "提现到",
- "withdraw_apply.l59.t0": "提现",
- "withdraw_apply.l6.t0": "微信默认钱包",
- "withdraw_apply.l64.t0": "提现记录",
- "withdraw_list.l12.t0": "支付宝",
- "withdraw_list.l12.t1": "银行卡",
- "withdraw_list.l13.t0": "微信",
- "withdraw_list.l28.t0": "暂无提现记录",
- "withdraw_list.l45.t0": "已转账",
- "withdraw_list.l49.t0": "待审核",
- "withdraw_list.l53.t0": "已审核",
- "withdraw_list.l57.t0": "已拒绝",
- "withdraw_list.l78.t0": "明细",
- "withdrawal_detail.l10.t0": "当前状态",
- "withdrawal_detail.l14.t0": "交易号",
- "withdrawal_detail.l18.t0": "手续费",
- "withdrawal_detail.l22.t0": "申请时间",
- "withdrawal_detail.l26.t0": "审核时间",
- "withdrawal_detail.l30.t0": "银行名称",
- "withdrawal_detail.l34.t0": "收款账号",
- "withdrawal_detail.l38.t0": "拒绝理由",
- "withdrawal_detail.l42.t0": "转账方式名称",
- "withdrawal_detail.l46.t0": "转账时间",
- },
- "files": {
- },
- "find": {
- },
- "footprint": {
- },
- "form": {
- },
- "game": {
- },
- "goods": {
- "_components.goods-detail-view.detail.l285.t0": "海报生成中...",
- "_components.goods-detail-view.detail.l351.t0": "保存成功",
- "_components.goods-detail-view.detail.l356.t0": "保存失败,请稍后重试",
- "_components.goods-detail-view.l143.t0": "官方认证商家,值得信赖!",
- "_components.goods-detail-view.l156.t0": "配送",
- "_components.goods-detail-view.l180.t0": "商品服务",
- "_components.goods-detail-view.l213.t0": "门店列表",
- "_components.goods-detail-view.l257.t0": "添加",
- "_components.goods-detail-view.l264.t0": "添加社群",
- "_components.goods-detail-view.l269.t0": "长按识别二维码,添加社群",
- "_components.goods-detail-view.l290.t0": "暂无评价",
- "_components.goods-detail-view.l292.t0": "查看全部",
- "_components.goods-detail-view.l338.t0": "规格属性",
- "_components.goods-detail-view.l397.t0": "保存图片",
- "_components.goods-detail-view.l400.t0": "长按图片进行保存",
- "_components.goods-detail-view.l411.t0": "分享",
- "_components.goods-detail-view.l417.t0": "分享给好友",
- "_components.goods-detail-view.l426.t0": "分享到好物圈",
- "_components.goods-detail-view.l434.t0": "生成分享海报",
- "_components.goods-detail-view.l441.t0": "复制链接",
- "_components.goods-detail-view.l446.t0": "取消分享",
- "_components.goods-detail-view.l75.t0": "未配置",
- "_components.goods-detail-view.l81.t0": "门店",
- "_components.goods-detail-view.l99.t0": "服务",
- "_components.ns-goods-promotion.l13.t0": "团购",
- "_components.ns-goods-promotion.l19.t0": "拼团",
- "_components.ns-goods-promotion.l25.t0": "秒杀",
- "_components.ns-goods-promotion.l31.t0": "专题活动",
- "_components.ns-goods-promotion.l37.t0": "砍价",
- "_components.ns-goods-promotion.l43.t0": "拼团返利",
- "_components.ns-goods-promotion.l6.t0": "限时折扣",
- "_components.ns-goods-promotion.l7.t0": "当前商品正在参加",
- "cart.l123.t0": "满减",
- "cart.l143.t0": "失效商品",
- "cart.l145.t0": "清空",
- "cart.l17.t0": "领券结算最高可减",
- "cart.l192.t0": "已失效",
- "cart.l202.t0": "购物车为空",
- "cart.l202.t1": "赶紧去逛逛, 购买心仪的商品吧",
- "cart.l221.t0": "优惠明细",
- "cart.l226.t0": "商品总额",
- "cart.l239.t0": "合计",
- "cart.l294.t0": "有效期:长期有效",
- "cart.l298.t0": "已领取",
- "cart.l341.t0": "领券",
- "cart.l341.t1": "立即",
- "cart.l8.t0": "共",
- "category.l51.t0": "发现超多好物,快来看看",
- "detail.l129.t0": "- 套餐包含以下的服务及商品 -",
- "detail.l131.t0": "卡项内项目/商品总的可用次数为",
- "detail.l132.t0": "次数不限 ,",
- "detail.l133.t0": "永久",
- "detail.l134.t0": "天",
- "detail.l152.t0": "收起",
- "detail.l18.t0": "已售",
- "detail.l187.t0": "选择",
- "detail.l194.t0": "促销",
- "detail.l220.t0": "组合套餐",
- "detail.l23.t0": "距结束仅剩",
- "detail.l300.t0": "套餐价",
- "detail.l348.t0": "最多可抵¥",
- "detail.l349.t0": "有效期:",
- "detail.l350.t0": "有效期:领取之日起",
- "detail.l354.t0": "已抢光",
- "detail.l379.t0": "满送",
- "detail.l383.t0": "包邮",
- "detail.l396.t0": "商品留言",
- "detail.l523.t0": "可在手机端拨打 021-51815181",
- "detail.l527.t0": "复制到剪切板",
- "detail.l55.t0": "原价",
- "detail.l591.t0": "复制成功",
- "detail.l99.t0": "开通",
- "list.l148.t0": "暂无商品",
- "list.l160.t0": "是否包邮",
- "list.l168.t0": "价格区间(元)",
- "list.l170.t0": "最低价",
- "list.l172.t0": "最高价",
- "list.l188.t0": "全部分类",
- "list.l19.t0": "综合",
- "list.l203.t0": "重置",
- "list.l23.t0": "销量",
- "list.l28.t0": "价格",
- "list.l40.t0": "筛选",
- "public.js.cart.l236.t0": "请选择要删除的商品",
- "public.js.cart.l243.t0": "确定要删除这些商品吗?",
- "public.js.cart.l243.t1": "确定要删除该商品吗?",
- "public.js.cart.l385.t0": "确定要清空这些商品吗?",
- "public.js.detail.l321.t0": "您已领取过该优惠券,快去使用吧",
- "public.js.detail.l323.t0": "领取成功,快去使用吧",
- "public.js.detail.l379.t0": ";满",
- "public.js.detail.l386.t0": "送",
- "public.js.detail.l392.t0": "、送",
- "public.js.detail.l392.t1": "张",
- "public.js.detail.l392.t2": "折优惠券",
- "public.js.detail.l395.t0": "元优惠券",
- "public.js.list.l126.t0": "搜索到",
- "public.js.list.l126.t1": "件“",
- "public.js.list.l126.t2": "”相关的优质商品",
- "public.js.list.l365.t0": "请输入最高价",
- "public.js.list.l371.t0": "筛选价格不能小于0",
- "public.js.list.l378.t0": "最低价不能大于最高价",
- "public.js.list.l384.t0": "最高价不能小于最低价",
- "public.js.list.l78.t0": "商品列表",
- },
- "goodsList": {
- },
- "groupbuy": {
- },
- "help": {
- "list.l73.t0": "帮助中心",
- "list.l81.t0": "帮助中心使你更加方便",
- "list.l9.t0": "暂无帮助信息",
- },
- "hongbao": {
- },
- "http": {
- },
- "imgCropping": {
- },
- "index": {
- },
- "invite": {
- },
- "kefu": {
- },
- "level": {
- },
- "live": {
- },
- "login": {
- "find.l100.t0": "重新获取",
- "find.l13.t0": "已将验证码发送至手机号:",
- "find.l169.t0": "该手机号未注册",
- "find.l18.t0": "请设置新的密码",
- "find.l188.t0": "请输入密码",
- "find.l19.t0": "建议您的新密码以简单好记为标准",
- "find.l196.t0": "密码长度不能小于",
- "find.l196.t1": "位",
- "find.l200.t0": "密码需包含",
- "find.l204.t0": "数字",
- "find.l208.t0": "、小写字母",
- "find.l212.t0": "、大写字母",
- "find.l216.t0": "、特殊字符",
- "find.l230.t0": "两次密码不一致",
- "find.l286.t0": "重新获取(",
- "find.l7.t0": "请确认您的账号已绑定此手机号",
- },
- "loginPage": {
- },
- "logistics": {
- },
- "map": {
- },
- "member": {
- "account.l10.t0": "提现到余额",
- "account.l106.t0": "操作提示",
- "account.l107.t0": "确定要删除该账户吗?",
- "account.l118.t0": "删除成功",
- "account.l123.t0": "删除失败",
- "account.l184.t0": "银行",
- "account.l32.t0": "修改",
- "account.l37.t0": "设为默认账户",
- "account.l55.t0": "暂无账户信息,请添加",
- "account_edit.l139.t0": "微信零钱",
- "account_edit.l163.t0": "请输入姓名",
- "account_edit.l178.t0": "请选择账户类型",
- "account_edit.l20.t0": "请输入银行名称",
- "account_edit.l226.t0": "添加成功",
- "account_edit.l23.t0": "提现账号",
- "account_edit.l230.t0": "修改成功",
- "account_edit.l24.t0": "请输入提现账号",
- "account_edit.l5.t0": "请输入真实姓名",
- "account_edit.l67.t0": "编辑账户",
- "account_edit.l71.t0": "新增账户",
- "address.l196.t0": "确定要删除该地址吗?",
- "address.l201.t0": "默认地址,不能删除",
- "address.l247.t0": "修改默认地址成功",
- "address.l293.t0": "PC端微信不支持一键获取地址",
- "address.l38.t0": "设为默认地址",
- "address.l57.t0": "暂无收货地址,请添加",
- "address_edit.l138.t0": "编辑收货地址",
- "address_edit.l142.t0": "新增收货地址",
- "address_edit.l200.t0": "数据有误",
- "address_edit.l233.t0": "是否授权当前位置",
- "address_edit.l234.t0": "需要获取您的地理位置,请确认授权,否则地图功能将无法使用",
- "address_edit.l241.t0": "授权成功",
- "address_edit.l259.t0": "授权失败",
- "address_edit.l319.t0": "详细地址不能为空",
- "address_edit.l4.t0": "地址信息",
- "address_edit.l44.t0": "请选择省市区县",
- "apply_withdrawal.l109.t0": "未开启提现",
- "apply_withdrawal.l19.t0": "请添加提现方式",
- "apply_withdrawal.l24.t0": "提现金额",
- "apply_withdrawal.l34.t0": "可提现余额:",
- "apply_withdrawal.l40.t0": ",手续费为",
- "assets.l18.t0": "现金余额",
- "assets.l22.t0": "储值余额",
- "assets.l33.t0": "订单资产",
- "assets.l46.t0": "退款中",
- "assets.l5.t0": "风险提示:确认申请后您的资产将被清空且不可找回!",
- "assets.l54.t0": "分销资产",
- "assets.l59.t0": "可提现佣金",
- "assets.l63.t0": "提现中佣金",
- "assets.l67.t0": "待结算订单",
- "assets.l73.t0": "上一步",
- "assets.l74.t0": "确认申请",
- "assets.l9.t0": "账户资产",
- "balance.l19.t0": "账户余额(元)",
- "balance.l24.t0": "现金余额(元)",
- "balance.l28.t0": "储值余额(元)",
- "balance.l33.t0": "充值",
- "balance.l49.t0": "余额明细",
- "balance.l56.t0": "充值记录",
- "balance_detail.l124.t0": "${year}年${month}月",
- "balance_detail.l46.t0": "暂无余额明细",
- "balance_detail.l68.t0": "收入",
- "balance_detail.l71.t0": "支出",
- "cancellation.l13.t0": "勾选即表示您已阅读并同意本协议",
- "cancellation.l15.t0": "下一步",
- "cancellation.l63.t0": "请先勾选同意协议",
- "cancelrefuse.l5.t0": "您的申请已拒绝",
- "cancelrefuse.l6.t0": "拒绝理由:",
- "cancelrefuse.l8.t0": "返回",
- "cancelstatus.l16.t0": "等待审核",
- "cancelstatus.l17.t0": "等待审核中,审核通过后您的账号将直接被删除",
- "cancelstatus.l26.t0": "审核通过,注销完成",
- "cancelstatus.l27.t0": "您已成功注销账号,期待下一次与您相遇",
- "cancelstatus.l33.t0": "撤销申请",
- "cancelstatus.l8.t0": "提交申请",
- "cancelstatus.l84.t0": "风险提示",
- "cancelstatus.l85.t0": "确定要撤销申请吗?",
- "cancelstatus.l9.t0": "您已提交申请,请耐心等待~",
- "cancelsuccess.l7.t0": "您已成功注销账号",
- "cancelsuccess.l8.t0": "待下次与您更好的相遇,如需再次使用,请重新注册",
- "card.l104.t0": "会员卡说明",
- "card.l174.t0": "专属会员权益,快来体验",
- "card.l25.t0": "会员大礼包等权益",
- "card.l31.t0": "立即续费",
- "card.l42.t0": "会员权益",
- "card.l52.t0": "全场包邮",
- "card.l53.t0": "享受商品包邮服务",
- "card.l57.t0": "消费折扣",
- "card.l58.t0": "部分商品下单可享",
- "card.l62.t0": "积分回馈",
- "card.l63.t0": "下单享",
- "card.l72.t0": "开卡礼包",
- "card.l81.t0": "积分礼包",
- "card.l82.t0": "赠送",
- "card.l86.t0": "红包礼包",
- "card.l91.t0": "优惠券礼包",
- "card_buy.l175.t0": "充值开通",
- "card_buy.l214.t0": "暂无可开会员卡",
- "card_buy.l353.t0": "您有尚未过期的会员卡,再次购卡会覆盖掉之前的卡,是否继续?",
- "card_buy.l81.t0": "卡种选择",
- "collection.l33.t0": "暂无关注的商品",
- "collection.l33.t1": "赶紧去逛逛, 关注心仪的商品吧",
- "coupon.l45.t0": "(最大优惠",
- "coupon.l5.t0": "未使用",
- "coupon.l6.t0": "已使用",
- "footprint.l137.t0": "请选择要删除的数据!",
- "footprint.l4.t0": "管理",
- "footprint.l49.t0": "暂无浏览过的商品",
- "footprint.l49.t1": "赶紧去逛逛, 发现更多商品吧",
- "footprint.l57.t0": "全选",
- "footprint.l59.t0": "删除",
- "info.l101.t0": "退出登录",
- "info.l14.t0": "账号",
- "info.l37.t0": "性别",
- "info.l43.t0": "生日",
- "info.l50.t0": "密码",
- "info.l66.t0": "所在地址",
- "info.l75.t0": "注销账号",
- "info.l83.t0": "版本号",
- "info_edit.l10.t0": "用户名仅可修改一次,请谨慎设置",
- "info_edit.l120.t0": "短信验证码",
- "info_edit.l131.t0": "一键授权绑定",
- "info_edit.l134.t0": "手动绑定",
- "info_edit.l139.t0": "所在地区",
- "info_edit.l147.t0": "详细地址",
- "info_edit.l57.t0": "请选择生日",
- "info_edit.l7.t0": "用户名",
- "info_edit.l71.t0": "请先绑定手机再执行该操作",
- "info_edit.l72.t0": "立即绑定",
- "info_edit.l77.t0": "原密码",
- "info_edit.l82.t0": "新密码",
- "info_edit.l87.t0": "再次输入",
- "invite_friends.l126.t0": "如何邀请好友",
- "invite_friends.l133.t0": "分享链接给好友",
- "invite_friends.l142.t0": "好友进入",
- "invite_friends.l151.t0": "好友注册成功获得奖励",
- "invite_friends.l17.t0": "立即邀请",
- "invite_friends.l20.t0": "我的好友",
- "invite_friends.l217.t0": "活动说明",
- "invite_friends.l50.t0": "没有更多数据了",
- "invite_friends.l55.t0": "您还没有邀请到新朋友哦",
- "invite_friends.l56.t0": "邀请好友,赚取好礼。赶紧去试试吧~",
- "invite_friends.l61.t0": "邀请好友奖励",
- "invite_friends.l71.t0": "现金红包",
- "invite_friends.l98.t0": "分享给好友,让好友通过你的分享链接进入并注册登录,可获得以下奖励:",
- "level.l100.t0": "提供",
- "level.l106.t0": "享受积分回馈服务",
- "level.l113.t0": "会员礼包",
- "level.l12.t0": "当前等级:",
- "level.l268.t0": "将前往详情页面",
- "level.l57.t0": "当前等级",
- "level.l59.t0": "当前成长值",
- "level.l72.t0": "您现在已经是最高等级",
- "level.l91.t0": "包邮服务",
- "level.l92.t0": "提供商品包邮服务",
- "level.l98.t0": "享受消费折扣服务",
- "level.l99.t0": "不享受任何消费折扣和其他权益",
- "level_growth_rules.l23.t0": "什么是成长值",
- "level_growth_rules.l25.t0": "成长值是消费者在店铺成为会员后,通过消费计算出来的值。成长值决定会员等级,会员等级越高,所享受的会员权益和会员礼包就越多。",
- "level_growth_rules.l30.t0": "如何获得成长值",
- "level_growth_rules.l33.t0": "1、注册会员送x成长值。",
- "level_growth_rules.l34.t0": "2、会员充值到余额送x成长值。",
- "level_growth_rules.l35.t0": "3、会员签到送x成长值。",
- "level_growth_rules.l36.t0": "4、会员消费x元,交易完成即可获得x个成长值。",
- "modify_face.l117.t0": "头像修改成功",
- "modify_face.l14.t0": "点击上传",
- "modify_face.l22.t0": "确认保存",
- "modify_face.l23.t0": "重新上传",
- "modify_face.l95.t0": "头像上传失败",
- "pay_password.l10.t0": "输入短信验证码",
- "pay_password.l11.t0": "请设置支付密码",
- "pay_password.l12.t0": "请再次输入",
- "pay_password.l152.t0": "两次输入的密码不一致",
- "pay_password.l3.t0": "请输入6位支付密码,建议不要使用重复或连续数字",
- "pay_password.l37.t0": "获取验证码",
- "pay_password.l4.t0": "验证码已发送至",
- "pay_password.l52.t0": "设置支付密码需要先绑定手机号,是否立即绑定?",
- "point.l20.t0": "当前积分",
- "point.l24.t0": "累计积分",
- "point.l28.t0": "累计消费",
- "point.l32.t0": "今日获得",
- "point.l48.t0": "积分商城",
- "point.l53.t0": "做任务赚积分",
- "point.l57.t0": "每日签到",
- "point.l58.t0": "连续签到可获得更多积分",
- "point.l60.t0": "去签到",
- "point.l65.t0": "购买商品",
- "point.l66.t0": "购买商品可获得积分",
- "point.l68.t0": "去下单",
- "public.js.info.l157.t0": "个人资料",
- "public.js.info.l404.t0": "与原真实姓名一致,无需修改",
- "public.js.info.l411.t0": "真实姓名不能为空",
- "public.js.info.l579.t0": "新密码长度不能小于",
- "public.js.info.l58.t0": "未知",
- "public.js.info.l612.t0": "新密码不能与原密码相同",
- "public.js.info.l62.t0": "男",
- "public.js.info.l67.t0": "女",
- "public.js.info.l726.t0": "已发送(",
- "public.js.info.l744.t0": "请勿重复点击",
- "public.js.info.l869.t0": "请选择所在地区",
- "public.js.info.l874.t0": "请输入详细地址",
- "public.js.member-public.l64.t0": "确定要注销当前账号吗?",
- "public.js.signin.l201.t0": "签到未开启",
- "public.js.signin.l236.t0": "签到有礼",
- "public.js.signin.l237.t0": "天天签到,积分好礼送不停",
- "public.js.signin.l268.t0": "签到有礼,天天签到,积分好礼送不停",
- "public.js.signin.l31.t0": "商家未开启会员签到",
- },
- "memberInfo": {
- },
- "merch": {
- "detail.l102.t0": "立即咨询",
- "detail.l31.t0": "上滑查看更多",
- "detail.l35.t0": "↑ 收起",
- "detail.l35.t1": "↓ 展开",
- "detail.l7.t0": "请输入您要搜索的商品",
- "merchcategory.l83.t0": "物业",
- "merchcategory.l87.t0": "鞋里革",
- "public.edit.l103.t0": "长期限购",
- "public.edit.l126.t0": "编辑商品",
- "public.edit.l133.t0": "添加商品",
- "public.edit.l170.t0": "商品不存在",
- "public.edit.l496.t0": "商品可以属于多个分类,最多10个",
- "public.edit.l533.t0": "添加卡密【",
- "public.edit.l56.t0": "下架",
- "public.edit.l56.t1": "上架",
- "public.edit.l578.t0": "商品简介不能超过100个字符",
- "public.edit.l58.t0": "当日达",
- "public.edit.l58.t1": "次日达",
- "public.edit.l58.t2": "隔日达",
- "public.edit.l58.t3": "自定义",
- "public.edit.l585.t0": "请上传商品图片",
- "public.edit.l63.t0": "自动发货",
- "public.edit.l635.t0": "请输入销售价",
- "public.edit.l641.t0": "[销售价]格式输入错误",
- "public.edit.l648.t0": "[原价价]格式输入错误",
- "public.edit.l658.t0": "请输入库存",
- "public.edit.l665.t0": "[库存]格式输入错误",
- "public.edit.l67.t0": "手动发货",
- "public.edit.l671.t0": "[起售]格式输入错误",
- "public.edit.l677.t0": "起售数量不能小于0",
- "public.edit.l71.t0": "到店核销",
- "public.edit.l81.t0": "自动收货",
- "public.edit.l85.t0": "买家确认收货",
- "public.edit.l908.t0": "请选择商品表单",
- "public.edit.l929.t0": "请选择供应商",
- "public.edit.l93.t0": "购买后几日有效",
- "public.edit.l93.t1": "指定过期日期",
- "public.edit.l96.t0": "添加卡密",
- "public.edit.l99.t0": "单次限购",
- "public.js.list.l80.t0": "商家不存在",
- },
- "mescroll": {
- },
- "navbar": {
- },
- "newGift": {
- },
- "note": {
- },
- "notice": {
- "detail.l87.t0": "[公告]",
- "list.l10.t0": "置顶",
- "list.l18.t0": "暂无公告",
- },
- "order": {
- "_components.common-payment.l100.t0": "送达时间",
- "_components.common-payment.l102.t0": "请选择送达时间",
- "_components.common-payment.l128.t0": "营业时间:",
- "_components.common-payment.l138.t0": "姓名",
- "_components.common-payment.l144.t0": "预留手机",
- "_components.common-payment.l149.t0": "提货时间",
- "_components.common-payment.l156.t0": "当前无自提门店,请选择其它配送方式",
- "_components.common-payment.l192.t0": "该商品不支持",
- "_components.common-payment.l227.t0": "买家留言",
- "_components.common-payment.l230.t0": "无留言",
- "_components.common-payment.l238.t0": "已选择1张优惠券",
- "_components.common-payment.l239.t0": "优惠",
- "_components.common-payment.l242.t0": "不使用优惠券",
- "_components.common-payment.l251.t0": "小计:",
- "_components.common-payment.l27.t0": "手机号码",
- "_components.common-payment.l276.t0": "已使用优惠券,优惠",
- "_components.common-payment.l28.t0": "请输入您的手机号码",
- "_components.common-payment.l285.t0": "活动优惠",
- "_components.common-payment.l293.t0": "使用",
- "_components.common-payment.l301.t0": "发票",
- "_components.common-payment.l303.t0": "纸质",
- "_components.common-payment.l303.t1": "电子",
- "_components.common-payment.l304.t0": "无需发票",
- "_components.common-payment.l316.t0": "本单预计可省",
- "_components.common-payment.l335.t0": "商品金额",
- "_components.common-payment.l342.t0": "运费",
- "_components.common-payment.l351.t0": "税费",
- "_components.common-payment.l361.t0": "发票邮寄费",
- "_components.common-payment.l385.t0": "积分抵扣",
- "_components.common-payment.l393.t0": "会员卡",
- "_components.common-payment.l403.t0": "购买前请先阅读",
- "_components.common-payment.l403.t1": ",下单即代表同意该协议",
- "_components.common-payment.l408.t0": "合计:",
- "_components.common-payment.l414.t0": "提交订单",
- "_components.common-payment.l415.t0": "差",
- "_components.common-payment.l452.t0": "已为您甄选出附近所有相关门店",
- "_components.common-payment.l469.t0": "地址:",
- "_components.common-payment.l478.t0": "所选择收货地址附近没有可以自提的门店",
- "_components.common-payment.l500.t0": "留言前建议先与商家协调一致",
- "_components.common-payment.l551.t0": "长期有效",
- "_components.common-payment.l557.t0": "暂无可用的优惠券",
- "_components.common-payment.l57.t0": "请设置收货地址",
- "_components.common-payment.l587.t0": "买家信息",
- "_components.common-payment.l602.t0": "选择次卡",
- "_components.common-payment.l610.t0": "不限次数",
- "_components.common-payment.l611.t0": "剩余",
- "_components.common-payment.l7.t0": "确认订单",
- "_components.common-payment.l75.t0": "点击切换",
- "_components.common-payment.l81.t0": "您的附近没有可配送的门店,请选择其他配送方式",
- "_components.common-payment.payment.l134.t0": "周卡",
- "_components.common-payment.payment.l135.t0": "周",
- "_components.common-payment.payment.l142.t0": "月卡",
- "_components.common-payment.payment.l150.t0": "季卡",
- "_components.common-payment.payment.l151.t0": "季",
- "_components.common-payment.payment.l158.t0": "年卡",
- "_components.common-payment.payment.l159.t0": "年",
- "_components.common-payment.payment.l487.t0": "请输入预留手机",
- "_components.common-payment.payment.l500.t0": "商家未设置配送方式",
- "_components.common-payment.payment.l509.t0": "请先选择您的收货地址",
- "_components.common-payment.payment.l517.t0": "没有可提货的门店,请选择其他配送方式",
- "_components.common-payment.payment.l535.t0": "请选择提货时间",
- "_components.common-payment.payment.l544.t0": "没有可配送的门店,请选择其他配送方式",
- "_components.common-payment.payment.l840.t0": "请填写发票抬头",
- "_components.common-payment.payment.l846.t0": "请填写纳税人识别号",
- "_components.common-payment.payment.l852.t0": "请填写发票邮寄地址",
- "_components.common-payment.payment.l858.t0": "请填写邮箱",
- "_components.common-payment.payment.l866.t0": "请填写正确的邮箱",
- "_components.common-payment.payment.l873.t0": "请选择发票内容",
- "detail.l106.t0": "提货码:",
- "detail.l109.t0": "复制",
- "detail.l16.t0": "订单关闭原因:",
- "detail.l192.t0": "申请售后",
- "detail.l192.t1": "申请退款",
- "detail.l198.t0": "查看售后",
- "detail.l198.t1": "查看退款",
- "detail.l208.t0": "订单类型:",
- "detail.l214.t0": "订单编号:",
- "detail.l221.t0": "订单交易号:",
- "detail.l227.t0": "创建时间:",
- "detail.l233.t0": "关闭时间:",
- "detail.l241.t0": "支付方式:",
- "detail.l247.t0": "支付时间:",
- "detail.l254.t0": "配送方式:",
- "detail.l260.t0": "买家留言:",
- "detail.l266.t0": "活动优惠:",
- "detail.l274.t0": "发票类型:",
- "detail.l276.t0": "纸质发票",
- "detail.l276.t1": "电子发票",
- "detail.l280.t0": "发票抬头类型:",
- "detail.l282.t0": "个人",
- "detail.l282.t1": "企业",
- "detail.l286.t0": "发票抬头:",
- "detail.l293.t0": "发票内容:",
- "detail.l299.t0": "发票邮寄地址:",
- "detail.l305.t0": "发票接收邮件:",
- "detail.l329.t0": "我的卡包:",
- "detail.l350.t0": "请将条形码或二维码出示给核销员",
- "detail.l360.t0": "核销信息",
- "detail.l362.t0": "核销次数",
- "detail.l37.t0": "收货地址:",
- "detail.l372.t0": "有效期",
- "detail.l376.t0": "永久有效",
- "detail.l382.t0": "核销记录",
- "detail.l387.t0": "核销人",
- "detail.l393.t0": "核销时间",
- "detail.l400.t0": "暂无核销记录",
- "detail.l406.t0": "卡密信息",
- "detail.l409.t0": "卡号:",
- "detail.l416.t0": "密码:",
- "detail.l42.t0": "送达时间:",
- "detail.l47.t0": "配送员:",
- "detail.l51.t0": "外卖电话:",
- "detail.l537.t0": "订单调整",
- "detail.l568.t0": "使用余额",
- "detail.l589.t0": "实付金额:",
- "detail.l601.t0": "评价",
- "detail.l602.t0": "追评",
- "detail.l737.t0": "未获取到订单信息!",
- "detail.l84.t0": "当前无自提门店",
- "detail_point.l126.t0": "关闭",
- "detail_point.l128.t0": "支付",
- "detail_point.l14.t0": "待支付",
- "detail_point.l14.t1": "已完成",
- "detail_point.l15.t0": "已关闭",
- "detail_point.l225.t0": "确定关闭此次兑换?",
- "detail_point.l236.t0": "关闭成功",
- "detail_point.l99.t0": "使用积分",
- "list.l141.t0": "查看详情",
- "list.l152.t0": "合并付款",
- "list.l297.t0": "待付款",
- "list.l302.t0": "待发货",
- "list.l307.t0": "待收货",
- "list.l317.t0": "待使用",
- "list.l35.t0": "订单号:",
- "list.l6.t0": "请输入商品名称/订单编号",
- "list.l74.t0": "加购物车",
- "payment.l37.t0": "满减送",
- "payment.l48.t0": "购买可享受满",
- "payment.l66.t0": "购物满",
- "payment.l73.t0": "可得",
- "public.js.orderMethod.l13.t0": "商家已将支付金额调整为",
- "public.js.orderMethod.l13.t1": "元,是否继续支付?",
- "public.js.orderMethod.l176.t0": "您确定要进行收货吗?",
- "public.js.orderMethod.l47.t0": "您确定要关闭该订单吗?",
- "public.js.orderMethod.l60.t0": "当前订单可能存在拼团,维权等操作,",
- "public.js.orderMethod.l61.t0": "不可以关闭哦!",
- "public.js.orderMethod.l81.t0": "您确定已经收到货物了吗?",
- "public.js.refundMethod.l10.t0": "撤销之后本次申请将会关闭,如后续仍有问题可再次发起申请。",
- "public.js.refundMethod.l11.t0": "暂不撤销",
- },
- "page": {
- "index.l108.t0": "请确认门店",
- "index.l115.t0": "重新定位",
- "index.l119.t0": "当前门店",
- "index.l130.t0": "确认进入",
- "index.l133.t0": "选择其他门店",
- "index.l16.t0": "关注公众号",
- "index.l47.t0": "跳过",
- "index.l89.t0": "关注了解更多",
- "index.public.js.index.l121.t0": "构建版本信息",
- "index.public.js.index.l122.t0": "提交 ID: ${v.commitId}\\n构建时间: ${v.buildTime}",
- "index.public.js.index.l126.t0": "未获取到构建版本信息",
- },
- "pay": {
- },
- "payment": {
- },
- "picker": {
- },
- "pinfan": {
- },
- "pintuan": {
- },
- "point": {
- "detail.l129.t0": "属性",
- "detail.l144.t0": "商品属性",
- "detail.l187.t0": "兑换详情",
- "detail.l195.t0": "暂无兑换详情!",
- "detail.l208.t0": "登录之后方可兑换",
- "detail.l213.t0": "积分不足",
- "detail.l296.t0": "仅需",
- "detail.l296.t1": "积分即可兑换",
- "detail.l77.t0": "领取之日起",
- "detail.l77.t1": "天内有效",
- "detail.l78.t0": "到期",
- "goods_list.l29.t0": "上新时间",
- "goods_list.l79.t0": "立即兑换",
- "goods_list.l99.t0": "积分区间",
- "list.l125.t0": "可用",
- "list.l128.t0": "全场券",
- "list.l13.t0": "搜索商品",
- "list.l148.t0": "积分换红包",
- "list.l181.t0": "积分换礼品",
- "list.l234.t0": "积分说明",
- "list.l239.t0": "积分的获取",
- "list.l240.t0": "1、积分可在注册、签到、分享、消费、充值时获得。",
- "list.l241.t0": "2、在购买部分商品时可获得积分。",
- "list.l242.t0": "积分的使用",
- "list.l243.t0": "1、积分可用于兑换积分中心的商品。",
- "list.l244.t0": "2、积分可在参与某些活动时使用。",
- "list.l245.t0": "3、积分不得转让,出售,不设有效期。",
- "list.l246.t0": "积分的查询",
- "list.l247.t0": "1、积分可在会员中心中查询具体数额以及明细。",
- "list.l276.t0": "积分换好物",
- "list.l305.t0": "商家未开启积分商城",
- "list.l31.t0": "我的积分",
- "list.l40.t0": "提醒",
- "list.l41.t0": "积分兑好礼,每日上新换不停!",
- "list.l50.t0": "活动规则",
- "list.l55.t0": "储值赚积分",
- "list.l583.t0": "暂无相关活动",
- "list.l59.t0": "兑换记录",
- "list.l63.t0": "积分抽奖",
- "list.l67.t0": "积分明细",
- "list.l84.t0": "储值",
- "list.l86.t0": "去储值",
- "list.l94.t0": "积分换券",
- "order_list.l85.t0": "暂无积分兑换订单",
- "payment.l133.t0": "自提时间",
- "payment.l217.t0": "所需积分",
- "public.js.payment.l283.t0": "订单未创建",
- "public.js.payment.l285.t0": "去设置",
- "public.js.payment.l318.t0": "请输入正确的手机号码",
- "public.js.payment.l356.t0": "请输入正确的预留手机",
- "public.js.payment.l363.t0": "请选择自提时间",
- "public.js.payment.l378.t0": "请选择配送时间",
- "public.js.payment.l95.t0": "未获取到创建订单所需数据!",
- },
- "presale": {
- },
- "privacy": {
- },
- "promotion": {
- },
- "recharge": {
- },
- "refund": {
- },
- "reward": {
- },
- "seal": {
- "medium.detail.l17.t0": "导出图片",
- "medium.detail.l18.t0": "导出PDF",
- "medium.detail.l29.t0": "搜索结果",
- "medium.search.l6.t0": "请输入介质名称",
- "structure.l12.t0": "选型结果:",
- "structure.l23.t0": "结果文件",
- "structure.l6.t0": "当前选择:",
- },
- "seckill": {
- },
- "share": {
- },
- "sku": {
- },
- "store": {
- },
- "store_notes": {
- },
- "storeclose": {
- },
- "time": {
- },
- "tool": {
- "_components.img-cropping.l212.t0": "加载中...",
- "_components.img-cropping.l22.t0": "预览",
- "_components.img-cropping.l23.t0": "上传",
- "_components.img-cropping.l235.t0": "裁剪框的宽或高没有设置",
- "_components.img-cropping.l255.t0": "请选择正确图片",
- "_components.ns-birthday-gift.l11.t0": "感谢您一直以来的支持,在您生日到来之际,特为您送上最真诚的祝福!",
- "_components.ns-birthday-gift.l14.t0": "生日贺礼",
- "_components.ns-birthday-gift.l33.t0": "元红包",
- "_components.ns-birthday-gift.l35.t0": "不可提现红包",
- "_components.ns-birthday-gift.l45.t0": "可提现红包",
- "_components.ns-birthday-gift.l57.t0": "元优惠劵",
- "_components.ns-new-gift.l14.t0": "感谢您一直以来的支持,为回馈会员,商城",
- "_components.ns-new-gift.l23.t0": "用于参与活动购买商品时抵扣",
- "agreement.contenr.l11.t0": "暂无内容",
- "agreement.contenr.l12.t0": "该协议内容暂未设置",
- "agreement.contenr.l13.t0": "重新加载",
- "cases.index.l143.t0": "正在加载",
- "cases.index.l167.t0": "文件不存在",
- "cases.index.l22.t0": "完成时间:",
- "cases.index.l31.t0": "查看PDF文件",
- "cases.index.l47.t0": "在线留言",
- "cases.index.l56.t0": "请输入您的姓名",
- "cases.index.l60.t0": "联系方式",
- "cases.index.l62.t0": "请输入您的手机号",
- "cases.index.l66.t0": "留言内容",
- "cases.index.l68.t0": "请输入留言内容",
- "file-preview.l15.t0": "文件地址不存在",
- "file-preview.l32.t0": "不支持的文件类型",
- "files.list.l32.t0": "暂无文件",
- "files.list.l5.t0": "请输入您要搜索的文件名称",
- "form.formdata.l72.t0": "参数错误",
- "form.l8.t0": "请填写表单所需信息",
- "goods.brand.l14.t0": "暂无更多品牌,去首页看看吧",
- "goods.brand.l79.t0": "你想要的大牌都在这里",
- "goods.coupon.l10.t0": "折扣券",
- "goods.coupon.l102.t0": "商家未开启优惠券",
- "goods.coupon.l11.t0": "无门槛券",
- "goods.coupon.l44.t0": "指定商品",
- "goods.coupon.l45.t0": "全场商品",
- "goods.coupon.l52.t0": "适用门店:全部门店",
- "goods.coupon.l52.t1": "适用门店:",
- "goods.coupon.l65.t0": "已过期",
- "goods.coupon.l66.t0": "已达上限",
- "goods.coupon.l70.t0": "暂无可领取的优惠券",
- "goods.coupon.l8.t0": "满减券",
- "goods.coupon_receive.l13.t0": "有效期至",
- "goods.coupon_receive.l186.t0": "来迟了该优惠券已被领取完了!",
- "goods.coupon_receive.l189.t0": "该优惠券活动已结束!",
- "goods.coupon_receive.l192.t0": "该优惠券活动已关闭",
- "goods.coupon_receive.l195.t0": "该优惠券领取已达到上限!",
- "goods.coupon_receive.l207.t0": "恭喜您获得一张",
- "goods.coupon_receive.l207.t1": "元的优惠券",
- "goods.coupon_receive.l212.t0": "满${this.info.at_least}元可用",
- "goods.coupon_receive.l247.t0": ",满${this.info.at_least}元可用",
- "goods.coupon_receive.l249.t0": ",无门槛优惠券",
- "goods.coupon_receive.l27.t0": "注:扫描二维码或点击右上角进行分享",
- "goods.evaluate.l47.t0": "商家回复:",
- "goods.evaluate.l52.t0": "追加评价",
- "goods.evaluate.l69.t0": "暂无商品评价",
- "goods.evaluate.l82.t0": "好评",
- "goods.evaluate.l82.t1": "中评",
- "goods.evaluate.l82.t2": "差评",
- "goods.not_exist.l5.t0": "您查看的商品不存在,可能已下架或被删除",
- "goods.search.l15.t0": "历史搜索",
- "goods.search.l165.t0": "搜索内容不能为空哦",
- "goods.search.l33.t0": "热门搜索",
- "goods.search.l86.t0": "确认删除全部历史记录?",
- "goods.search.l99.t0": "确认删除该条历史记录?",
- "order.activist.l10.t0": "退款成功",
- "order.activist.l115.t0": "撤销成功",
- "order.activist.l12.t0": "退款失败",
- "order.activist.l30.t0": "退款:¥",
- "order.evaluate.l16.t0": "描述相符",
- "order.evaluate.l42.t0": "请在此处输入您的评价",
- "order.evaluate.l47.t0": "请在此处输入您的追评",
- "order.evaluate.l72.t0": "匿名",
- "order.logistics.l37.t0": "承运公司:",
- "order.public.js.evaluate.l160.t0": "商家未开启商品评价功能",
- "order.public.js.evaluate.l168.t0": "商品的评价不能为空哦",
- "order.public.js.evaluate.l200.t0": "评价成功",
- "order.public.js.evaluate.l90.t0": "未获取到订单数据",
- "order.refund.l17.t0": "退款无需退货",
- "order.refund.l175.t0": "未获取到该订单项退款信息",
- "order.refund.l18.t0": "没收到货,或与卖家协商同意无需退货只退款",
- "order.refund.l24.t0": "退货退款",
- "order.refund.l242.t0": "请选择退款原因",
- "order.refund.l25.t0": "已收到货,需退还收到的货物",
- "order.refund.l34.t0": "退款原因:",
- "order.refund.l42.t0": "退款金额:",
- "order.refund.l48.t0": "退款说明",
- "order.refund.l54.t0": "请输入退款说明(选填)",
- "order.refund.l81.t0": "退款原因",
- "order.refund_batch.l26.t0": "退款方式:",
- "order.refund_detail.l10.t0": "如果商家逾期未处理,平台将自动通过申请并退款给你",
- "order.refund_detail.l100.t0": "物流说明",
- "order.refund_detail.l106.t0": "选填",
- "order.refund_detail.l121.t0": "买家",
- "order.refund_detail.l121.t1": "卖家",
- "order.refund_detail.l13.t0": "如果商家确认收货将会退款给你",
- "order.refund_detail.l139.t0": "返回详情",
- "order.refund_detail.l14.t0": "如果商家拒绝收货,该次退款将会关闭,你可以重新发起退款",
- "order.refund_detail.l19.t0": "协商记录",
- "order.refund_detail.l24.t0": "退货地址",
- "order.refund_detail.l26.t0": "收货人:",
- "order.refund_detail.l29.t0": "联系方式:",
- "order.refund_detail.l32.t0": "退货地址:",
- "order.refund_detail.l38.t0": "退款信息",
- "order.refund_detail.l51.t0": "仅退款",
- "order.refund_detail.l51.t1": "退款退货",
- "order.refund_detail.l52.t0": "原路退款",
- "order.refund_detail.l52.t1": "线下退款",
- "order.refund_detail.l52.t2": "退款到余额",
- "order.refund_detail.l52.t3": "退款途径:",
- "order.refund_detail.l56.t0": "退款编号:",
- "order.refund_detail.l57.t0": "申请时间:",
- "order.refund_detail.l58.t0": "退款时间:",
- "order.refund_detail.l59.t0": "退款说明:",
- "order.refund_detail.l60.t0": "退款积分:",
- "order.refund_detail.l76.t0": "物流公司",
- "order.refund_detail.l8.t0": "如果商家拒绝,你可重新发起申请",
- "order.refund_detail.l80.t0": "请输入物流公司",
- "order.refund_detail.l88.t0": "物流单号",
- "order.refund_detail.l9.t0": "如果商家同意,将通过申请并退款给你",
- "order.refund_detail.l92.t0": "请输入物流单号",
- "order.refund_goods_select.l28.t0": "请选择商品",
- "order.refund_goods_select.l53.t0": "未查找到订单信息",
- "pay.cashier.l23.t0": "店铺尚未配置支付方式!",
- "pay.cashier.l25.t0": "该支付单据已支付",
- "pay.cashier.l27.t0": "未获取到支付信息",
- "pay.result.l21.t0": "恭喜您获得",
- "pay.result.l37.t0": "张优惠券",
- "pay.result.l46.t0": "查看订单",
- "pay.wx_pay.l6.t0": "点击右上角跳转到浏览器打开",
- "recharge.list.l20.t0": "请输入充值金额",
- "recharge.list.l276.t0": "请选择套餐",
- "recharge.list.l29.t0": "售价",
- "recharge.list.l34.t0": "其他金额",
- "recharge.list.l44.t0": ">,优惠券X{{ list[isIndex].coupon_id.split(",
- "recharge.list.l44.t1": ",优惠券X",
- "recharge.list.l50.t0": "充值说明",
- "recharge.list.l56.t0": ">,优惠券X{{ item.coupon_id.split(",
- "recharge.list.l67.t0": "金额",
- "recharge.list.l7.t0": "账户余额",
- "recharge.list.l89.t0": "确认充值",
- "recharge.order_list.l16.t0": "充值成功",
- "recharge.order_list.l24.t0": "赠送:",
- "recharge.order_list.l29.t0": "优惠券x",
- "recharge.order_list.l34.t0": "暂无充值记录",
- "storeclose.l41.t0": "该店铺已打烊...",
- "storeclose.l45.t0": "店铺不存在",
- "storeclose.l47.t0": "店铺打烊",
- "weapp.order_shipping.l20.t0": "缺少merchant_trade_no参数",
- "weapp.order_shipping.l32.t0": "未知错误",
- },
- "topics": {
- },
- "verification": {
- },
- "video": {
- },
- "vr": {
- },
- "weapp": {
- },
- "wxwork": {
- },
- "yuyueDate": {
- },
- "Filter": "筛选",
- "Make": "立即咨询",
- "Price": "价格",
- "Random": "综合",
- "Sales": "销量",
- "Search": "请输入您要搜索的商品",
- "about": "0B",
- "account": "账号",
- "accountInputPlaceholder": "请输入账号",
- "accountPlaceholder": "请输入用户名",
- "accountType": "账号类型",
- "activist": "售后",
- "addcart": "添加购物车",
- "addressPlaceholder": "小区、街道、写字楼",
- "agreeAgreementTip": "请先阅读并同意协议",
- "aiNickname": "智能助手",
- "aiThinking": "AI正在思考",
- "alikeNickname": "与原昵称一致,无需修改",
- "alikePhone": "与原手机号一致,无需修改",
- "alikeusername": "与原用户名一致,无需修改",
- "allElection": "全选",
- "animateCodeInput": "请输入动态码",
- "audioMessage": "语音消息",
- "avatarSelectorTitle": "更换头像",
- "buy": "购买",
- "buynow": "立即购买",
- "call": "一键拨打",
- "cancellation": "注销账号",
- "captchaPlaceholder": "请输入验证码",
- "changeAvatar": "更换头像",
- "changeAvatarDesc": "自定义您的聊天头像",
- "changeNickname": "更换昵称",
- "changeNicknameDesc": "自定义您的昵称",
- "chatCleared": "聊天记录已清空,有什么可以帮助您的吗?",
- "chooseFromAlbum": "从相册选择",
- "commission": "佣金详情",
- "commissiontext": "佣金",
- "complete": "完成",
- "completed": "已完成",
- "confirmClearChat": "确定要清空聊天记录吗?",
- "confirmCodeInput": "请输入验证码",
- "confirmOpenLink": "确定要打开链接:",
- "consignee": "姓名",
- "consigneePlaceholder": "收货人姓名",
- "consult": "立即咨询",
- "contactInfo": "联系方式",
- "copy": "复制",
- "copyFail": "复制失败",
- "copyFailed": "复制失败",
- "copySuccess": "复制成功",
- "defaultNickname": "我",
- "del": "删除",
- "details": "商品详情",
- "dynacodeInputPlaceholder": "请输入动态码",
- "dynacodePlaceholder": "请输入动态码",
- "edit": "管理",
- "editNickname": "修改昵称",
- "emojiTitle": "表情",
- "emptyTips": "暂无记录",
- "enterCaptchaTip": "请输入验证码",
- "enterCorrectMobileTip": "请输入正确的手机号",
- "enterMobileTip": "请输入手机号",
- "exchangeSuccess": "兑换成功",
- "exclusiveCustomerService": "专属客服",
- "expandEditorTitle": "编辑内容",
- "express": "快递发货",
- "fallbackWelcome": "您好!我是AI智能客服,很高兴为您服务!\\n\\n我可以帮您:\\n• 解答产品相关问题\\n• 处理订单问题\\n• 提供技术支持\\n• 推荐相关商品\\n\\n请告诉我您需要什么帮助?",
- "featureDeveloping": "功能开发中",
- "file": "文件",
- "fileOpenFail": "文件打开失败",
- "findanimateCode": "获取动态码",
- "follow": "收藏",
- "forgetPasswordText": "忘记密码?",
- "getAddress": "一键获取地址",
- "getDynacode": "获取动态验证码",
- "goHome": "回到首页",
- "home": "首页",
- "image": "图片",
- "improveService": "我们会改进服务",
- "inputPlaceholder": "搜索商品",
- "lang": "语言",
- "leave": "立即留言",
- "loadHistoryFail": "加载历史失败",
- "loadMoreHistory": "加载更多历史消息",
- "location": "位置",
- "loginButtonText": "登录",
- "loginSuccessTip": "登录成功",
- "loginTpis": "点击登录 享受更多精彩信息",
- "logout": "退出登录",
- "logoutContent": "确定要退出登录吗",
- "logoutTitle": "提示",
- "make": "立即咨询",
- "max": "已达最大限购数量",
- "menuClearChat": "清空聊天",
- "menuExport": "导出记录",
- "menuHelp": "帮助",
- "menuSettings": "设置",
- "messageContent": "留言内容",
- "mobile": "手机",
- "mobileInputPlaceholder": "请输入您的手机号",
- "mobilePhone": "手机",
- "mobilePlaceholder": "收货人手机号",
- "modify": "修改",
- "modifyNickname": "修改昵称",
- "moreFunctions": "更多功能",
- "name": "姓名",
- "newAddAccount": "新增账户",
- "newAddAddress": "添加收货地址",
- "newNicknamePlaceholder": "请输入您的新昵称",
- "next": "下一步",
- "nicknameChangeSuccess": "昵称修改成功",
- "nicknameTip": "昵称长度限制1-12个字符,仅自己可见",
- "noContentToCopy": "无可复制的内容",
- "noEmityNickname": "昵称不能为空",
- "noEmityUsername": "用户名不能为空",
- "noMatchResult": "未找到匹配结果",
- "oneClickNavigation": "一键导航",
- "onlineMessage": "在线留言",
- "openLink": "打开链接",
- "openingFile": "打开文件中...",
- "operationFailed": "操作失败,请重试",
- "password": "密码",
- "passwordInputPlaceholder": "请输入密码",
- "passwordPlaceholder": "请输入密码",
- "paymentAmount": "支付金额",
- "paymentFail": "支付失败",
- "paymentSuccess": "支付成功",
- "paypassword": "支付密码",
- "pleaseEnterMessage": "请输入留言内容",
- "pleaseEnterMobile": "请输入您的手机号",
- "pleaseEnterName": "请输入您的姓名",
- "pleaseInputNewPassword": "请输入新密码",
- "pleaseInputOldPassword": "请输入原始密码",
- "privacyPolicy": "隐私协议",
- "privacyPolicyText": "《隐私条款》",
- "prompt": "提示",
- "rePasswordPlaceholder": "请确认密码",
- "realName": "真实姓名",
- "receivingCity": "地区",
- "receivingReply": "正在接收回复",
- "recordingTip": "正在录音,松开结束",
- "registerAgreementText": "若您未注册,则登录后将自动帮您注册。注册即视为同意",
- "registrationAgreement": "注册协议",
- "requestFailTip": "request:fail",
- "retry": "重试",
- "sales": "销量",
- "save": "保存",
- "search": "商品搜索",
- "searchAtBottom": "已到底部",
- "searchAtTop": "已到顶部",
- "searchClose": "完成",
- "searchEntrance": "搜索",
- "searchPlaceholder": "搜索聊天记录",
- "see": "查看兑换记录",
- "sellout": "库存不足",
- "send": "配送",
- "serviceTemporaryUnavailable": "抱歉,服务暂时不可用,请稍后重试。",
- "serviceTypeNotSupported": "当前客服类型不支持此页面",
- "serviceUnavailable": "抱歉,AI服务暂时不可用,请稍后重试。",
- "settingsTitle": "设置",
- "settlement": "结算",
- "sex": "性别",
- "spec": "规格",
- "startRecordTip": "点击开始录音",
- "status": "该商品已下架",
- "stock": "库存",
- "submit": "提交",
- "surePhoneNumber": "请输入正确的手机号",
- "telephone": "电话",
- "telephonePlaceholder": "收货人固定电话(选填)",
- "thanksFeedback": "感谢您的反馈!",
- "timeFormatBeforeYesterday": "前天",
- "timeFormatYesterday": "昨天",
- "title": "VR",
- "toGoodsCategoryPage": "去逛逛",
- "toLogin": "去登录",
- "total": "合计",
- "updateSuccess": "修改成功",
- "userServiceAgreementText": "《用户服务协议》",
- "videoMessage": "视频消息",
- "voice": "语音",
- "voiceInputFailed": "语音输入失败",
- "voiceInputTitle": "语音输入",
- "waitconfirm": "待收货",
- "waitpay": "待付款",
- "waitsend": "待发货",
- "welcomeText": "您好,
欢迎使用",
- "withdrawal": "提现",
-};
diff --git a/lang/zh-cn/agreement/contenr.js b/lang/zh-cn/agreement/contenr.js
new file mode 100644
index 0000000..e9f3538
--- /dev/null
+++ b/lang/zh-cn/agreement/contenr.js
@@ -0,0 +1 @@
+export const lang = {}
\ No newline at end of file
diff --git a/lang/zh-cn/ai-chat/index.js b/lang/zh-cn/ai-chat/index.js
new file mode 100644
index 0000000..98d721c
--- /dev/null
+++ b/lang/zh-cn/ai-chat/index.js
@@ -0,0 +1,104 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'AI智能客服',
+
+ // ====== 通用 ======
+ cancel: '取消',
+ save: '保存',
+ send: '发送',
+ retry: '重试',
+
+ // ====== 时间格式化 ======
+ timeFormatToday: '今天',
+ timeFormatYesterday: '昨天',
+ timeFormatBeforeYesterday: '前天',
+
+ // ====== ai-chat-message ======
+ aiNickname: '智能助手',
+ defaultNickname: '我',
+ audioMessage: '语音消息',
+ videoMessage: '视频消息',
+ inputPlaceholder: '请输入您的问题...',
+ expandEditorTitle: '编辑内容',
+ loadMoreHistory: '加载更多历史消息',
+ loadingHistory: '加载历史消息中...',
+ aiThinking: 'AI正在思考',
+ receivingReply: '正在接收回复',
+ aiThinkingStatus1: 'AI正在思考',
+ aiThinkingStatus2: 'AI正在分析',
+ aiThinkingStatus3: 'AI正在检索',
+ aiThinkingStatus4: 'AI正在生成',
+ serviceUnavailable: '抱歉,AI服务暂时不可用,请稍后重试。',
+ serviceTemporaryUnavailable: '抱歉,服务暂时不可用,请稍后重试。',
+ noContentToCopy: '无可复制的内容',
+ copySuccess: '已复制',
+ copySelected: '已复制选中内容',
+ copyFail: '复制失败',
+ openingFile: '打开文件中...',
+ fileOpenFail: '文件打开失败',
+ loadHistoryFail: '加载历史失败',
+ about: '0B',
+
+ // ====== ai-chat-search ======
+ searchEntrance: '搜索',
+ searchPlaceholder: '搜索聊天记录',
+ searchClose: '完成',
+ noMatchResult: '未找到匹配结果',
+ searchAtTop: '已到顶部',
+ searchAtBottom: '已到底部',
+
+ // ====== index.vue ======
+ settingsTitle: '设置',
+ fallbackWelcome: '您好!我是AI智能客服,很高兴为您服务!\n\n我可以帮您:\n• 解答产品相关问题\n• 处理订单问题\n• 提供技术支持\n• 推荐相关商品\n\n请告诉我您需要什么帮助?',
+ changeAvatar: '更换头像',
+ changeAvatarDesc: '自定义您的聊天头像',
+ changeNickname: '更换昵称',
+ changeNicknameDesc: '自定义您的昵称',
+ clearChat: '清空聊天',
+ exportChat: '导出记录',
+ help: '帮助',
+ confirmClearChat: '确定要清空聊天记录吗?',
+ chatCleared: '聊天记录已清空,有什么可以帮助您的吗?',
+ featureDeveloping: '功能开发中',
+ thanksFeedback: '感谢您的反馈!',
+ improveService: '我们会改进服务',
+ openLink: '打开链接',
+ confirmOpenLink: '确定要打开链接:',
+ operationFailed: '操作失败,请重试',
+ prompt: '提示',
+ serviceTypeNotSupported: '当前客服类型不支持此页面',
+
+ // ====== ai-chat-avatar-selector ======
+ avatarSelectorTitle: '更换头像',
+ chooseFromAlbum: '从相册选择',
+ avatarChangeSuccess: '头像更换成功',
+ enableAlbumPermission: '请开启相册权限',
+
+ // ====== ai-chat-emoji-panel ======
+ emojiTitle: '表情',
+
+ // ====== ai-chat-nickname-editor ======
+ editNickname: '修改昵称',
+ newNicknamePlaceholder: '请输入您的新昵称',
+ nicknameTip: '昵称长度限制1-12个字符,仅自己可见',
+ nicknameChangeSuccess: '昵称修改成功',
+
+ // ====== ai-chat-tools-panel ======
+ moreFunctions: '更多功能',
+ image: '图片',
+ file: '文件',
+ voice: '语音',
+ location: '位置',
+
+ // ====== ai-chat-voice-panel ======
+ voiceInputTitle: '语音输入',
+ recordingTip: '正在录音,松开结束',
+ startRecordTip: '点击开始录音',
+ voiceInputFailed: '语音输入失败',
+
+ // ====== index.vue - 菜单 ======
+ menuClearChat: '清空聊天',
+ menuExport: '导出记录',
+ menuSettings: '设置',
+ menuHelp: '帮助'
+}
diff --git a/lang/zh-cn/article/detail.js b/lang/zh-cn/article/detail.js
new file mode 100644
index 0000000..2d9ca88
--- /dev/null
+++ b/lang/zh-cn/article/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '文章详情'
+}
diff --git a/lang/zh-cn/article/list.js b/lang/zh-cn/article/list.js
new file mode 100644
index 0000000..129277a
--- /dev/null
+++ b/lang/zh-cn/article/list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '文章列表',
+ emptyText:"当前暂无文章信息"
+}
diff --git a/lang/zh-cn/bale/detail.js b/lang/zh-cn/bale/detail.js
new file mode 100644
index 0000000..02a0bea
--- /dev/null
+++ b/lang/zh-cn/bale/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: ''
+}
diff --git a/lang/zh-cn/bale/payment.js b/lang/zh-cn/bale/payment.js
new file mode 100644
index 0000000..a6fa0ed
--- /dev/null
+++ b/lang/zh-cn/bale/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
\ No newline at end of file
diff --git a/lang/zh-cn/bargain/detail.js b/lang/zh-cn/bargain/detail.js
new file mode 100644
index 0000000..c3c6999
--- /dev/null
+++ b/lang/zh-cn/bargain/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: '选择',
+ params: '参数',
+ service: '商品服务',
+ allGoods: '全部商品',
+ image: '图片',
+ video: '视频',
+}
diff --git a/lang/zh-cn/bargain/launch.js b/lang/zh-cn/bargain/launch.js
new file mode 100644
index 0000000..4a271f2
--- /dev/null
+++ b/lang/zh-cn/bargain/launch.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '砍价详情'
+}
diff --git a/lang/zh-cn/bargain/list.js b/lang/zh-cn/bargain/list.js
new file mode 100644
index 0000000..efbd47b
--- /dev/null
+++ b/lang/zh-cn/bargain/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '砍价专区'
+}
diff --git a/lang/zh-cn/bargain/my_bargain.js b/lang/zh-cn/bargain/my_bargain.js
new file mode 100644
index 0000000..bb9b398
--- /dev/null
+++ b/lang/zh-cn/bargain/my_bargain.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的砍价'
+}
diff --git a/lang/zh-cn/bargain/payment.js b/lang/zh-cn/bargain/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/bargain/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/combo/detail.js b/lang/zh-cn/combo/detail.js
new file mode 100644
index 0000000..e67f6f4
--- /dev/null
+++ b/lang/zh-cn/combo/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '组合套餐'
+}
diff --git a/lang/zh-cn/combo/payment.js b/lang/zh-cn/combo/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/combo/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/common.js b/lang/zh-cn/common.js
new file mode 100644
index 0000000..bd649fc
--- /dev/null
+++ b/lang/zh-cn/common.js
@@ -0,0 +1,66 @@
+export const lang = {
+
+ // 底部选项卡
+ tabBar: {
+ home: '首页',
+ category: '分类',
+ cart: '购物车',
+ member: '个人中心'
+ },
+
+ //公共
+ common: {
+ //语言包名称
+ name: '中文',
+ mescrollTextInOffset: '下拉刷新',
+ mescrollTextOutOffset: '释放更新',
+ mescrollEmpty: "暂无相关数据",
+ goodsRecommendTitle: '猜你喜欢',
+ currencySymbol: '¥',
+ submit: '提交',
+ searchTip: '请输入搜索关键词'
+ },
+
+ //客服
+ customer: {
+ weChatKefu: '微信客服',
+ systemKefu: '专属客服',
+ weChatWorkKefu: '企业微信客服',
+ },
+
+ login: '登录/注册',
+ loginTpis: '点击登录 享受更多精彩信息',
+ toLogin: '去登录',
+ toGoodsCategoryPage: '去逛逛',
+
+ getDynacode: '获取动态码',
+
+ waitpay: '待付款',
+ waitsend: '待发货',
+ waitconfirm: '待收货',
+ activist: '售后',
+ completed: '已完成',
+
+ buy: '购买',
+ buyNow: '立即购买',
+ addToCart: '加入购物车',
+ addToCartSuccess: '已加入购物车',
+ addToCartFail: '加入购物车失败',
+ addToCartFailMax: '已达到最大购买数量',
+ addToCartFailMin: '已达到最小购买数量',
+ addToCartFailStock: '库存不足',
+
+ consult: '立即咨询',
+ consultSuccess: '咨询成功',
+ consultFail: '咨询失败',
+
+ // 会员相关
+ privacyPolicy: '隐私协议',
+ registrationAgreement: '注册协议',
+ cancellation: '账号注销',
+ logout: '退出登录',
+ logoutTitle: '提示',
+ logoutContent: '确定要退出登录吗',
+
+
+}
diff --git a/lang/zh-cn/contact/contact.js b/lang/zh-cn/contact/contact.js
new file mode 100644
index 0000000..14121e4
--- /dev/null
+++ b/lang/zh-cn/contact/contact.js
@@ -0,0 +1,18 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '电子名片',
+ onlineMessage: '在线留言',
+ call: '一键拨打',
+ copy: '复制',
+ copyFailed: '复制失败',
+ copySuccess: '复制成功',
+ oneClickNavigation: '一键导航',
+ name: '姓名',
+ contactInfo: '联系方式',
+ messageContent: '留言内容',
+ pleaseEnterName: '请输入您的姓名',
+ pleaseEnterMobile: '请输入您的手机号',
+ pleaseEnterMessage: '请输入留言内容',
+ submit: '提交',
+ exclusiveCustomerService: '专属客服'
+}
diff --git a/lang/zh-cn/diy/diy.js b/lang/zh-cn/diy/diy.js
new file mode 100644
index 0000000..74eb5f5
--- /dev/null
+++ b/lang/zh-cn/diy/diy.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+}
diff --git a/lang/zh-cn/fenxiao/apply.js b/lang/zh-cn/fenxiao/apply.js
new file mode 100644
index 0000000..46bed58
--- /dev/null
+++ b/lang/zh-cn/fenxiao/apply.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '分销商申请'
+ title: ''
+}
diff --git a/lang/zh-cn/fenxiao/bill.js b/lang/zh-cn/fenxiao/bill.js
new file mode 100644
index 0000000..5deadae
--- /dev/null
+++ b/lang/zh-cn/fenxiao/bill.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '账单'
+}
diff --git a/lang/zh-cn/fenxiao/follow.js b/lang/zh-cn/fenxiao/follow.js
new file mode 100644
index 0000000..7ba4f3f
--- /dev/null
+++ b/lang/zh-cn/fenxiao/follow.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的关注'
+}
diff --git a/lang/zh-cn/fenxiao/goods_list.js b/lang/zh-cn/fenxiao/goods_list.js
new file mode 100644
index 0000000..2c765c5
--- /dev/null
+++ b/lang/zh-cn/fenxiao/goods_list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '分销商品列表',
+ title: ''
+}
diff --git a/lang/zh-cn/fenxiao/index.js b/lang/zh-cn/fenxiao/index.js
new file mode 100644
index 0000000..3f940bb
--- /dev/null
+++ b/lang/zh-cn/fenxiao/index.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '分销中心',
+ title: ''
+}
diff --git a/lang/zh-cn/fenxiao/level.js b/lang/zh-cn/fenxiao/level.js
new file mode 100644
index 0000000..a504074
--- /dev/null
+++ b/lang/zh-cn/fenxiao/level.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '分销商等级',
+ title: ''
+}
diff --git a/lang/zh-cn/fenxiao/order.js b/lang/zh-cn/fenxiao/order.js
new file mode 100644
index 0000000..7db8bb1
--- /dev/null
+++ b/lang/zh-cn/fenxiao/order.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '分销订单',
+ title: ''
+}
diff --git a/lang/zh-cn/fenxiao/order_detail.js b/lang/zh-cn/fenxiao/order_detail.js
new file mode 100644
index 0000000..6c02235
--- /dev/null
+++ b/lang/zh-cn/fenxiao/order_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '订单详情'
+}
diff --git a/lang/zh-cn/fenxiao/promote_code.js b/lang/zh-cn/fenxiao/promote_code.js
new file mode 100644
index 0000000..e462f20
--- /dev/null
+++ b/lang/zh-cn/fenxiao/promote_code.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '推广海报'
+}
diff --git a/lang/zh-cn/fenxiao/team.js b/lang/zh-cn/fenxiao/team.js
new file mode 100644
index 0000000..26c1595
--- /dev/null
+++ b/lang/zh-cn/fenxiao/team.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '我的团队'
+ title: ''
+}
diff --git a/lang/zh-cn/fenxiao/withdraw_apply.js b/lang/zh-cn/fenxiao/withdraw_apply.js
new file mode 100644
index 0000000..5ed3079
--- /dev/null
+++ b/lang/zh-cn/fenxiao/withdraw_apply.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '提现申请'
+ title: ''
+}
diff --git a/lang/zh-cn/fenxiao/withdraw_list.js b/lang/zh-cn/fenxiao/withdraw_list.js
new file mode 100644
index 0000000..6b4a6ae
--- /dev/null
+++ b/lang/zh-cn/fenxiao/withdraw_list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '提现记录'
+ title: ''
+}
diff --git a/lang/zh-cn/game/cards.js b/lang/zh-cn/game/cards.js
new file mode 100644
index 0000000..ce82d23
--- /dev/null
+++ b/lang/zh-cn/game/cards.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '刮刮乐'
+}
diff --git a/lang/zh-cn/game/record.js b/lang/zh-cn/game/record.js
new file mode 100644
index 0000000..de9a180
--- /dev/null
+++ b/lang/zh-cn/game/record.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '中奖纪录'
+}
diff --git a/lang/zh-cn/game/smash_eggs.js b/lang/zh-cn/game/smash_eggs.js
new file mode 100644
index 0000000..4acf085
--- /dev/null
+++ b/lang/zh-cn/game/smash_eggs.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '砸金蛋'
+}
diff --git a/lang/zh-cn/game/turntable.js b/lang/zh-cn/game/turntable.js
new file mode 100644
index 0000000..3ebe1ec
--- /dev/null
+++ b/lang/zh-cn/game/turntable.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '大转盘'
+}
diff --git a/lang/zh-cn/goods/brand.js b/lang/zh-cn/goods/brand.js
new file mode 100644
index 0000000..68694de
--- /dev/null
+++ b/lang/zh-cn/goods/brand.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '品牌专区'
+}
diff --git a/lang/zh-cn/goods/cart.js b/lang/zh-cn/goods/cart.js
new file mode 100644
index 0000000..85f4341
--- /dev/null
+++ b/lang/zh-cn/goods/cart.js
@@ -0,0 +1,13 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '购物车',
+ complete: '完成',
+ edit: '管理',
+ allElection: '全选',
+ total: '合计',
+ settlement: '结算',
+ emptyTips: '暂无商品',
+ goForStroll: '去逛逛',
+ del: '删除',
+ login: '去登录'
+}
diff --git a/lang/zh-cn/goods/category.js b/lang/zh-cn/goods/category.js
new file mode 100644
index 0000000..491be73
--- /dev/null
+++ b/lang/zh-cn/goods/category.js
@@ -0,0 +1,7 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '商品分类',
+ search:'商品搜索',
+ seeMore : '查看更多',
+ Make: "立即咨询"
+}
diff --git a/lang/zh-cn/goods/consult.js b/lang/zh-cn/goods/consult.js
new file mode 100644
index 0000000..89b8e55
--- /dev/null
+++ b/lang/zh-cn/goods/consult.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '商品咨询'
+}
diff --git a/lang/zh-cn/goods/consult_edit.js b/lang/zh-cn/goods/consult_edit.js
new file mode 100644
index 0000000..c27770a
--- /dev/null
+++ b/lang/zh-cn/goods/consult_edit.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我要咨询'
+}
diff --git a/lang/zh-cn/goods/coupon.js b/lang/zh-cn/goods/coupon.js
new file mode 100644
index 0000000..0e6b51a
--- /dev/null
+++ b/lang/zh-cn/goods/coupon.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '优惠券领取'
+}
diff --git a/lang/zh-cn/goods/coupon_receive.js b/lang/zh-cn/goods/coupon_receive.js
new file mode 100644
index 0000000..2bbf131
--- /dev/null
+++ b/lang/zh-cn/goods/coupon_receive.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '领取优惠券'
+}
diff --git a/lang/zh-cn/goods/detail.js b/lang/zh-cn/goods/detail.js
new file mode 100644
index 0000000..2ca424d
--- /dev/null
+++ b/lang/zh-cn/goods/detail.js
@@ -0,0 +1,32 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: '选择',
+ details:'商品详情',
+ document:'文档详情',
+ params: '参数',
+ service: '商品服务',
+ allGoods: '全部商品',
+ image: '图片',
+ video: '视频',
+ home:'首页',
+ cart:'购物车',
+ leave:'立即留言',
+ make:'立即咨询',
+
+ send:'配送',
+ express:'快递发货',
+ commission:'佣金详情',
+ commissiontext:'佣金',
+ addcart:'添加购物车',
+ buynow:'立即购买',
+ status:'该商品已下架',
+ sellout:'库存不足',
+ max:'已达最大限购数量',
+ makebtn:'立即咨询',
+ sales:'销量',
+ stock:'库存',
+ kefu:'客服',
+ follow:'收藏',
+ spec:'规格',
+}
diff --git a/lang/zh-cn/goods/evaluate.js b/lang/zh-cn/goods/evaluate.js
new file mode 100644
index 0000000..3694418
--- /dev/null
+++ b/lang/zh-cn/goods/evaluate.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '商品评价'
+}
diff --git a/lang/zh-cn/goods/list.js b/lang/zh-cn/goods/list.js
new file mode 100644
index 0000000..475ef45
--- /dev/null
+++ b/lang/zh-cn/goods/list.js
@@ -0,0 +1,11 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '商品列表',
+ Random:'综合',
+ Sales:'销量',
+ Price:'价格',
+ Filter:'筛选',
+ Search:'请输入您要搜索的商品',
+ Make:'立即咨询',
+
+}
diff --git a/lang/zh-cn/goods/not_exist.js b/lang/zh-cn/goods/not_exist.js
new file mode 100644
index 0000000..7690bf6
--- /dev/null
+++ b/lang/zh-cn/goods/not_exist.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '商品找不到',
+}
diff --git a/lang/zh-cn/goods/point.js b/lang/zh-cn/goods/point.js
new file mode 100644
index 0000000..4c12e0b
--- /dev/null
+++ b/lang/zh-cn/goods/point.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '积分中心'
+}
diff --git a/lang/zh-cn/goods/search.js b/lang/zh-cn/goods/search.js
new file mode 100644
index 0000000..70059c1
--- /dev/null
+++ b/lang/zh-cn/goods/search.js
@@ -0,0 +1,9 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '搜索',
+ history: '历史搜索',
+ hot: '热门搜索',
+ find: '搜索发现',
+ hidefind: '当前搜索发现已隐藏',
+ inputPlaceholder: '搜索商品'
+}
diff --git a/lang/zh-cn/groupbuy/detail.js b/lang/zh-cn/groupbuy/detail.js
new file mode 100644
index 0000000..aa08c12
--- /dev/null
+++ b/lang/zh-cn/groupbuy/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: '选择',
+ params: '参数',
+ service: '商品服务',
+ allGoods: '全部商品',
+ image: '图片',
+ video: '视频'
+}
diff --git a/lang/zh-cn/groupbuy/list.js b/lang/zh-cn/groupbuy/list.js
new file mode 100644
index 0000000..98b8fd7
--- /dev/null
+++ b/lang/zh-cn/groupbuy/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '团购专区'
+}
diff --git a/lang/zh-cn/groupbuy/payment.js b/lang/zh-cn/groupbuy/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/groupbuy/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/help/detail.js b/lang/zh-cn/help/detail.js
new file mode 100644
index 0000000..f872d86
--- /dev/null
+++ b/lang/zh-cn/help/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '帮助详情'
+}
diff --git a/lang/zh-cn/help/list.js b/lang/zh-cn/help/list.js
new file mode 100644
index 0000000..34c12e0
--- /dev/null
+++ b/lang/zh-cn/help/list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '帮助中心',
+ emptyText:"当前暂无帮助信息"
+}
diff --git a/lang/zh-cn/hongbao/list.js b/lang/zh-cn/hongbao/list.js
new file mode 100644
index 0000000..94882b2
--- /dev/null
+++ b/lang/zh-cn/hongbao/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '瓜分红包列表'
+}
diff --git a/lang/zh-cn/hongbao/my_hongbao.js b/lang/zh-cn/hongbao/my_hongbao.js
new file mode 100644
index 0000000..e541b7e
--- /dev/null
+++ b/lang/zh-cn/hongbao/my_hongbao.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的红包列表'
+}
diff --git a/lang/zh-cn/index/index.js b/lang/zh-cn/index/index.js
new file mode 100644
index 0000000..74eb5f5
--- /dev/null
+++ b/lang/zh-cn/index/index.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+}
diff --git a/lang/zh-cn/live/list.js b/lang/zh-cn/live/list.js
new file mode 100644
index 0000000..69c6591
--- /dev/null
+++ b/lang/zh-cn/live/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '直播',
+}
diff --git a/lang/zh-cn/login/find.js b/lang/zh-cn/login/find.js
new file mode 100644
index 0000000..6cd27dd
--- /dev/null
+++ b/lang/zh-cn/login/find.js
@@ -0,0 +1,12 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '找回密码',
+ findPassword: '找回密码',
+ accountPlaceholder: '请输入手机号',
+ captchaPlaceholder: "请输入验证码",
+ dynacodePlaceholder: '请输入动态码',
+ passwordPlaceholder: '请输入新密码',
+ rePasswordPlaceholder: '请确认新密码',
+ next: '下一步',
+ save: '确认修改'
+}
diff --git a/lang/zh-cn/login/login.js b/lang/zh-cn/login/login.js
new file mode 100644
index 0000000..dded48e
--- /dev/null
+++ b/lang/zh-cn/login/login.js
@@ -0,0 +1,38 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '登录',
+ mobileLogin: '手机号登录',
+ accountLogin: '账号登录',
+ autoLogin: '一键授权登录',
+ login: '登录',
+ mobilePlaceholder: '手机号登录仅限中国大陆用户',
+ dynacodePlaceholder: '请输入动态码',
+ captchaPlaceholder: '请输入验证码',
+ accountPlaceholder: '请输入账号',
+ passwordPlaceholder: '请输入密码',
+ rePasswordPlaceholder: '请确认密码',
+ forgetPassword: '忘记密码',
+ register: '注册',
+ registerTips: '没有账号的用户快来',
+ registerTips1: '注册',
+ registerTips2: '吧',
+ newUserRegister: '新用户注册',
+ // login.vue页面新增翻译项
+ welcomeText: '您好,
欢迎使用',
+ getDynacode: '获取动态码',
+ mobileInputPlaceholder: '请输入您的手机号',
+ accountInputPlaceholder: '请输入账号',
+ passwordInputPlaceholder: '请输入密码',
+ forgetPasswordText: '忘记密码?',
+ dynacodeInputPlaceholder: '请输入动态码',
+ loginButtonText: '登录',
+ registerAgreementText: '若您未注册,则登录后将自动帮您注册。注册即视为同意',
+ privacyPolicyText: '《隐私条款》',
+ userServiceAgreementText: '《用户服务协议》',
+ agreeAgreementTip: '请先阅读并同意协议',
+ loginSuccessTip: '登录成功',
+ enterMobileTip: '请输入手机号',
+ enterCorrectMobileTip: '请输入正确的手机号',
+ enterCaptchaTip: '请输入验证码',
+ requestFailTip: 'request:fail'
+}
diff --git a/lang/zh-cn/login/register.js b/lang/zh-cn/login/register.js
new file mode 100644
index 0000000..503e921
--- /dev/null
+++ b/lang/zh-cn/login/register.js
@@ -0,0 +1,17 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '注册',
+ mobileRegister: '手机号注册',
+ accountRegister: '账号注册',
+ mobilePlaceholder: '手机号登录仅限中国大陆用户',
+ dynacodePlaceholder: '请输入动态码',
+ captchaPlaceholder: '请输入验证码',
+ accountPlaceholder: '请输入用户名',
+ passwordPlaceholder: '请输入密码',
+ rePasswordPlaceholder: '请确认密码',
+ completeRegister: '完成注册,并登录',
+ registerTips: '点击注册即代表您已同意',
+ registerAgreement: '注册协议',
+ next: '下一步',
+ save: '保存'
+}
diff --git a/lang/zh-cn/member/account.js b/lang/zh-cn/member/account.js
new file mode 100644
index 0000000..79dde87
--- /dev/null
+++ b/lang/zh-cn/member/account.js
@@ -0,0 +1,13 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '账户列表',
+ name: '姓名',
+ accountType: '账号类型',
+ mobilePhone: '手机号码',
+ withdrawalAccount: '提现账号',
+ bankInfo: '支行信息',
+ newAddAccount: '新增账户',
+ del: '删除',
+ update: "修改",
+ emptyText:"当前暂无账户"
+}
diff --git a/lang/zh-cn/member/account_edit.js b/lang/zh-cn/member/account_edit.js
new file mode 100644
index 0000000..5088b38
--- /dev/null
+++ b/lang/zh-cn/member/account_edit.js
@@ -0,0 +1,14 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '编辑账户',
+ name: '姓名',
+ namePlaceholder: '请输入真实姓名',
+ mobilePhone: '手机号码',
+ mobilePhonePlaceholder: '请输入手机号',
+ accountType: '账号类型',
+ bankInfo: '支行信息',
+ bankInfoPlaceholder: '请输入支行信息',
+ withdrawalAccount: '提现账号',
+ withdrawalAccountPlaceholder: '请输入提现账号',
+ save: '保存'
+}
diff --git a/lang/zh-cn/member/address.js b/lang/zh-cn/member/address.js
new file mode 100644
index 0000000..08a97e8
--- /dev/null
+++ b/lang/zh-cn/member/address.js
@@ -0,0 +1,9 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '收货地址',
+ newAddAddress: '添加收货地址',
+ getAddress: '一键获取地址',
+ is_default: '默认',
+ modify: '编辑',
+ del: '删除'
+}
diff --git a/lang/zh-cn/member/address_edit.js b/lang/zh-cn/member/address_edit.js
new file mode 100644
index 0000000..e93f405
--- /dev/null
+++ b/lang/zh-cn/member/address_edit.js
@@ -0,0 +1,14 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '编辑收货地址',
+ consignee: '姓名',
+ consigneePlaceholder: '收货人姓名',
+ mobile: '手机',
+ mobilePlaceholder: '收货人手机号',
+ telephone: '电话',
+ telephonePlaceholder: '收货人固定电话(选填)',
+ receivingCity: '地区',
+ address: '详细地址',
+ addressPlaceholder: '小区、街道、写字楼',
+ save: '保存'
+}
diff --git a/lang/zh-cn/member/apply_withdrawal.js b/lang/zh-cn/member/apply_withdrawal.js
new file mode 100644
index 0000000..d2f5f7a
--- /dev/null
+++ b/lang/zh-cn/member/apply_withdrawal.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '申请提现'
+}
diff --git a/lang/zh-cn/member/assets.js b/lang/zh-cn/member/assets.js
new file mode 100644
index 0000000..1702e20
--- /dev/null
+++ b/lang/zh-cn/member/assets.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: '账号注销',
+}
\ No newline at end of file
diff --git a/lang/zh-cn/member/balance.js b/lang/zh-cn/member/balance.js
new file mode 100644
index 0000000..49fb93d
--- /dev/null
+++ b/lang/zh-cn/member/balance.js
@@ -0,0 +1,13 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的余额',
+ accountBalance: '账户余额 ',
+ money:' (元)',
+ recharge: '充值',
+ withdrawal: '提现',
+ balanceDetailed: '余额明细',
+ emptyTips: '暂无余额记录',
+ rechargeRecord:'充值记录',
+ ableAccountBalance:'现金余额 ',
+ noAccountBalance:'储值余额 ',
+}
diff --git a/lang/zh-cn/member/balance_detail.js b/lang/zh-cn/member/balance_detail.js
new file mode 100644
index 0000000..538ab54
--- /dev/null
+++ b/lang/zh-cn/member/balance_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '余额明细'
+}
diff --git a/lang/zh-cn/member/cancellation.js b/lang/zh-cn/member/cancellation.js
new file mode 100644
index 0000000..1702e20
--- /dev/null
+++ b/lang/zh-cn/member/cancellation.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: '账号注销',
+}
\ No newline at end of file
diff --git a/lang/zh-cn/member/cancelrefuse.js b/lang/zh-cn/member/cancelrefuse.js
new file mode 100644
index 0000000..1702e20
--- /dev/null
+++ b/lang/zh-cn/member/cancelrefuse.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: '账号注销',
+}
\ No newline at end of file
diff --git a/lang/zh-cn/member/cancelstatus.js b/lang/zh-cn/member/cancelstatus.js
new file mode 100644
index 0000000..1702e20
--- /dev/null
+++ b/lang/zh-cn/member/cancelstatus.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: '账号注销',
+}
\ No newline at end of file
diff --git a/lang/zh-cn/member/cancelsuccess.js b/lang/zh-cn/member/cancelsuccess.js
new file mode 100644
index 0000000..1702e20
--- /dev/null
+++ b/lang/zh-cn/member/cancelsuccess.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: '账号注销',
+}
\ No newline at end of file
diff --git a/lang/zh-cn/member/card.js b/lang/zh-cn/member/card.js
new file mode 100644
index 0000000..1aab742
--- /dev/null
+++ b/lang/zh-cn/member/card.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '会员卡'
+}
diff --git a/lang/zh-cn/member/card_buy.js b/lang/zh-cn/member/card_buy.js
new file mode 100644
index 0000000..1aab742
--- /dev/null
+++ b/lang/zh-cn/member/card_buy.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '会员卡'
+}
diff --git a/lang/zh-cn/member/collection.js b/lang/zh-cn/member/collection.js
new file mode 100644
index 0000000..7ba4f3f
--- /dev/null
+++ b/lang/zh-cn/member/collection.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的关注'
+}
diff --git a/lang/zh-cn/member/contact.js b/lang/zh-cn/member/contact.js
new file mode 100644
index 0000000..ff0307c
--- /dev/null
+++ b/lang/zh-cn/member/contact.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '客服',
+}
diff --git a/lang/zh-cn/member/coupon.js b/lang/zh-cn/member/coupon.js
new file mode 100644
index 0000000..3b4a64d
--- /dev/null
+++ b/lang/zh-cn/member/coupon.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的优惠券'
+}
diff --git a/lang/zh-cn/member/footprint.js b/lang/zh-cn/member/footprint.js
new file mode 100644
index 0000000..2809ba2
--- /dev/null
+++ b/lang/zh-cn/member/footprint.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的足迹',
+ emptyTpis: '您还未浏览过任何商品!'
+}
diff --git a/lang/zh-cn/member/gift.js b/lang/zh-cn/member/gift.js
new file mode 100644
index 0000000..ebdcbda
--- /dev/null
+++ b/lang/zh-cn/member/gift.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的礼品',
+ emptyTips: '暂无礼品'
+}
diff --git a/lang/zh-cn/member/gift_detail.js b/lang/zh-cn/member/gift_detail.js
new file mode 100644
index 0000000..492e1ae
--- /dev/null
+++ b/lang/zh-cn/member/gift_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '礼品订单',
+}
diff --git a/lang/zh-cn/member/index.js b/lang/zh-cn/member/index.js
new file mode 100644
index 0000000..7dccba7
--- /dev/null
+++ b/lang/zh-cn/member/index.js
@@ -0,0 +1,64 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '会员中心',
+ login: '登录/注册',
+ loginTpis: '点击登录 享受更多精彩信息',
+ memberLevel: '会员等级',
+ moreAuthority: '更多权限',
+ allOrders: '全部订单',
+ seeAllOrders: '查看全部订单',
+ waitPay: '待付款',
+ readyDelivery: '待发货',
+ waitDelivery: '待收货',
+ refunding: '退款',
+ getDynacode: '获取动态验证码',
+
+
+ // 会员中心入口
+ sign: '签到',
+ personInfo: '个人资料',
+ receivingAddress: '收货地址',
+ accountList: '账户列表',
+ couponList: '优惠券',
+ mySpellList: '我的拼单',
+ myBargain: '我的砍价',
+ virtualCode: '虚拟码',
+ winningRecord: '我的礼品',
+ myCollection: '我的关注',
+ myTracks: '我的足迹',
+ pintuanOrder: '拼团订单',
+ yushouOrder: '预售订单',
+ verification: '核销台',
+ message: '我的消息',
+ exchangeOrder: '积分兑换',
+
+ waitpay: '待付款',
+ waitsend: '待发货',
+ waitconfirm: '待收货',
+ activist: '售后',
+ completed: '已完成',
+
+ // 推广中心
+ balance: '余额',
+ point: '积分',
+ coupon: '优惠券',
+ memberRecommend: '邀请有礼',
+ myPresale: '我的预售',
+ myGiftcard: '我的礼品卡',
+ myDivideticket: '我的瓜分券',
+ myRebate: '拼团返利',
+ myHongbao: '我的红包列表',
+ myBlindBox: '我的盲盒',
+
+ // 账户操作
+ logout: '退出登录',
+ cancellation: '账号注销',
+ logoutTitle: '提示',
+ logoutContent: '确定要退出登录吗',
+ cancellationTitle: '风险提示',
+ cancellationContent: '确定要注销当前账号吗?',
+
+ // 协议
+ privacyPolicy: '隐私协议',
+ registrationAgreement: '注册协议',
+}
diff --git a/lang/zh-cn/member/info.js b/lang/zh-cn/member/info.js
new file mode 100644
index 0000000..52b220a
--- /dev/null
+++ b/lang/zh-cn/member/info.js
@@ -0,0 +1,56 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '个人资料',
+ headImg: '头像',
+ account: '账号',
+ nickname: '昵称',
+ realName: '真实姓名',
+ sex: '性别',
+ birthday: '生日',
+ password: '密码',
+ paypassword: '支付密码',
+ mobilePhone: '手机',
+ bindMobile: '绑定手机',
+ cancellation: '注销账号',
+ lang: "语言",
+ logout: '退出登录',
+ save: "保存",
+ noset: '未设置',
+
+ nickPlaceholder: "请输入新昵称",
+ pleaseRealName:"请输入真实姓名",
+
+ nowPassword: "当前密码",
+ newPassword: "新密码",
+ confirmPassword: "确认新密码",
+
+ phoneNumber: "手机号",
+
+ confirmCode: "验证码",
+ confirmCodeInput: "请输入验证码",
+ confirmCodeInputerror: "验证码错误",
+ findanimateCode: "获取动态码",
+ animateCode: "动态码",
+ animateCodeInput: "请输入动态码",
+
+ modifyNickname: "修改昵称",
+ modifyPassword: "修改密码",
+ bindPhone: "绑定手机",
+
+ alikeNickname: "与原昵称一致,无需修改",
+ noEmityNickname: "昵称不能为空",
+
+ updateSuccess: "修改成功",
+
+ pleaseInputOldPassword: "请输入原始密码",
+ pleaseInputNewPassword: "请输入新密码",
+ passwordLength: "密码长度不能小于6位",
+ alikePassword: "两次密码不一致",
+
+ samePassword: "新密码不能与原密码相同",
+
+ surePhoneNumber: "请输入正确的手机号",
+
+ alikePhone: "与原手机号一致,无需修改",
+ modify: '修改'
+}
diff --git a/lang/zh-cn/member/info_edit.js b/lang/zh-cn/member/info_edit.js
new file mode 100644
index 0000000..9220f03
--- /dev/null
+++ b/lang/zh-cn/member/info_edit.js
@@ -0,0 +1,61 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '个人资料',
+ headImg: '头像',
+ account: '账号',
+ username: '用户名',
+ nickname: '昵称',
+ realName: '真实姓名',
+ sex: '性别',
+ birthday: '生日',
+ password: '密码',
+ paypassword: '支付密码',
+ mobilePhone: '手机',
+ bindMobile: '绑定手机',
+ cancellation: '注销账号',
+ lang: "语言",
+ logout: '退出登录',
+ save: "保存",
+ noset: '未设置',
+
+ usernamePlaceholder: "请输入新用户名",
+ nickPlaceholder: "请输入新昵称",
+ pleaseRealName:"请输入真实姓名",
+
+ nowPassword: "当前密码",
+ newPassword: "新密码",
+ confirmPassword: "确认新密码",
+
+ phoneNumber: "手机号",
+
+ confirmCode: "验证码",
+ confirmCodeInput: "请输入验证码",
+ confirmCodeInputerror: "验证码错误",
+ findanimateCode: "获取动态码",
+ animateCode: "动态码",
+ animateCodeInput: "请输入动态码",
+
+ modifyNickname: "修改昵称",
+ modifyPassword: "修改密码",
+ bindPhone: "绑定手机",
+
+ alikeusername: "与原用户名一致,无需修改",
+ noEmityUsername: "用户名不能为空",
+
+ alikeNickname: "与原昵称一致,无需修改",
+ noEmityNickname: "昵称不能为空",
+
+ updateSuccess: "修改成功",
+
+ pleaseInputOldPassword: "请输入原始密码",
+ pleaseInputNewPassword: "请输入新密码",
+ passwordLength: "密码长度不能小于6位",
+ alikePassword: "两次密码不一致",
+
+ samePassword: "新密码不能与原密码相同",
+
+ surePhoneNumber: "请输入正确的手机号",
+
+ alikePhone: "与原手机号一致,无需修改",
+ modify: '修改'
+}
diff --git a/lang/zh-cn/member/invite_friends.js b/lang/zh-cn/member/invite_friends.js
new file mode 100644
index 0000000..5456928
--- /dev/null
+++ b/lang/zh-cn/member/invite_friends.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: '邀请好友',
+}
\ No newline at end of file
diff --git a/lang/zh-cn/member/level.js b/lang/zh-cn/member/level.js
new file mode 100644
index 0000000..a4a0e8d
--- /dev/null
+++ b/lang/zh-cn/member/level.js
@@ -0,0 +1,17 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '会员等级',
+ defaultLevelTips: '您已经是最高级别的会员了!',
+ tag: '专属标签',
+ tagDesc: '标签达人',
+ discount: '专享折扣',
+ discountDesc: '专享{0}折',
+ service: '优质服务',
+ serviceDesc: '360度全方位',
+ memberLevel: '会员等级',
+ condition: '条件',
+ equity: '权益',
+ giftPackage: '升级礼包',
+ levelExplain: '等级说明',
+ upgradeTips: '升级会员,享专属权益'
+}
diff --git a/lang/zh-cn/member/message.js b/lang/zh-cn/member/message.js
new file mode 100644
index 0000000..c970ecb
--- /dev/null
+++ b/lang/zh-cn/member/message.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的消息'
+}
diff --git a/lang/zh-cn/member/modify_face.js b/lang/zh-cn/member/modify_face.js
new file mode 100644
index 0000000..cb7f76f
--- /dev/null
+++ b/lang/zh-cn/member/modify_face.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '修改头像'
+}
diff --git a/lang/zh-cn/member/pay_password.js b/lang/zh-cn/member/pay_password.js
new file mode 100644
index 0000000..f699e06
--- /dev/null
+++ b/lang/zh-cn/member/pay_password.js
@@ -0,0 +1,3 @@
+export const lang = {
+ title: '支付密码',
+}
\ No newline at end of file
diff --git a/lang/zh-cn/member/point.js b/lang/zh-cn/member/point.js
new file mode 100644
index 0000000..bd74dd9
--- /dev/null
+++ b/lang/zh-cn/member/point.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的积分'
+}
diff --git a/lang/zh-cn/member/point_detail.js b/lang/zh-cn/member/point_detail.js
new file mode 100644
index 0000000..5c33ed8
--- /dev/null
+++ b/lang/zh-cn/member/point_detail.js
@@ -0,0 +1,6 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '积分明细',
+ emptyTpis: '您暂时还没有积分记录哦!',
+ pointExplain: '积分说明'
+}
diff --git a/lang/zh-cn/member/signin.js b/lang/zh-cn/member/signin.js
new file mode 100644
index 0000000..00003a9
--- /dev/null
+++ b/lang/zh-cn/member/signin.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '签到有礼'
+}
diff --git a/lang/zh-cn/member/withdrawal.js b/lang/zh-cn/member/withdrawal.js
new file mode 100644
index 0000000..9b99202
--- /dev/null
+++ b/lang/zh-cn/member/withdrawal.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '提现记录'
+}
diff --git a/lang/zh-cn/member/withdrawal_detail.js b/lang/zh-cn/member/withdrawal_detail.js
new file mode 100644
index 0000000..8b822bb
--- /dev/null
+++ b/lang/zh-cn/member/withdrawal_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '提现详情'
+}
diff --git a/lang/zh-cn/notice/detail.js b/lang/zh-cn/notice/detail.js
new file mode 100644
index 0000000..d2d77c9
--- /dev/null
+++ b/lang/zh-cn/notice/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '公告详情'
+}
diff --git a/lang/zh-cn/notice/list.js b/lang/zh-cn/notice/list.js
new file mode 100644
index 0000000..e2c2d7c
--- /dev/null
+++ b/lang/zh-cn/notice/list.js
@@ -0,0 +1,6 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '公告列表',
+ emptyText:"当前暂无更多信息",
+ contentTitle:'升级公告'
+}
diff --git a/lang/zh-cn/order/activist.js b/lang/zh-cn/order/activist.js
new file mode 100644
index 0000000..bc39f08
--- /dev/null
+++ b/lang/zh-cn/order/activist.js
@@ -0,0 +1,6 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '售后',
+ checkDetail: '查看详情',
+ emptyTips: '暂无售后记录'
+}
diff --git a/lang/zh-cn/order/detail.js b/lang/zh-cn/order/detail.js
new file mode 100644
index 0000000..6c02235
--- /dev/null
+++ b/lang/zh-cn/order/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '订单详情'
+}
diff --git a/lang/zh-cn/order/detail_local_delivery.js b/lang/zh-cn/order/detail_local_delivery.js
new file mode 100644
index 0000000..6c02235
--- /dev/null
+++ b/lang/zh-cn/order/detail_local_delivery.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '订单详情'
+}
diff --git a/lang/zh-cn/order/detail_pickup.js b/lang/zh-cn/order/detail_pickup.js
new file mode 100644
index 0000000..6c02235
--- /dev/null
+++ b/lang/zh-cn/order/detail_pickup.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '订单详情'
+}
diff --git a/lang/zh-cn/order/detail_point.js b/lang/zh-cn/order/detail_point.js
new file mode 100644
index 0000000..6c02235
--- /dev/null
+++ b/lang/zh-cn/order/detail_point.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '订单详情'
+}
diff --git a/lang/zh-cn/order/detail_virtual.js b/lang/zh-cn/order/detail_virtual.js
new file mode 100644
index 0000000..6c02235
--- /dev/null
+++ b/lang/zh-cn/order/detail_virtual.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '订单详情'
+}
diff --git a/lang/zh-cn/order/evaluate.js b/lang/zh-cn/order/evaluate.js
new file mode 100644
index 0000000..73d6c04
--- /dev/null
+++ b/lang/zh-cn/order/evaluate.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我要评价'
+}
diff --git a/lang/zh-cn/order/list.js b/lang/zh-cn/order/list.js
new file mode 100644
index 0000000..1160a28
--- /dev/null
+++ b/lang/zh-cn/order/list.js
@@ -0,0 +1,13 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '订单列表',
+ emptyTips: '暂无相关订单',
+ all: '全部',
+ waitPay: '待付款',
+ readyDelivery: '待发货',
+ waitDelivery: '待收货',
+ waitEvaluate: '待评价',
+ waitUse: '待使用',
+ update: "释放刷新",
+ updateIng: "加载中..."
+}
diff --git a/lang/zh-cn/order/logistics.js b/lang/zh-cn/order/logistics.js
new file mode 100644
index 0000000..3736635
--- /dev/null
+++ b/lang/zh-cn/order/logistics.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '物流信息'
+}
diff --git a/lang/zh-cn/order/payment.js b/lang/zh-cn/order/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/order/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/order/refund.js b/lang/zh-cn/order/refund.js
new file mode 100644
index 0000000..d1b3c1d
--- /dev/null
+++ b/lang/zh-cn/order/refund.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '申请退款',
+}
diff --git a/lang/zh-cn/order/refund_batch.js b/lang/zh-cn/order/refund_batch.js
new file mode 100644
index 0000000..d1b3c1d
--- /dev/null
+++ b/lang/zh-cn/order/refund_batch.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '申请退款',
+}
diff --git a/lang/zh-cn/order/refund_detail.js b/lang/zh-cn/order/refund_detail.js
new file mode 100644
index 0000000..f931c6b
--- /dev/null
+++ b/lang/zh-cn/order/refund_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '退款详情',
+}
diff --git a/lang/zh-cn/pay/index.js b/lang/zh-cn/pay/index.js
new file mode 100644
index 0000000..60ddcaf
--- /dev/null
+++ b/lang/zh-cn/pay/index.js
@@ -0,0 +1,7 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '支付方式',
+ paymentAmount: '支付金额',
+ confirmPayment: '确认支付',
+ seeOrder: '查看订单'
+}
diff --git a/lang/zh-cn/pay/result.js b/lang/zh-cn/pay/result.js
new file mode 100644
index 0000000..294c202
--- /dev/null
+++ b/lang/zh-cn/pay/result.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '支付结果',
+ paymentSuccess: '支付成功',
+ paymentFail: '支付失败',
+ goHome: '回到首页',
+ memberCenter: '会员中心',
+ payMoney: '支付金额',
+ unit: '元'
+}
diff --git a/lang/zh-cn/pintuan/detail.js b/lang/zh-cn/pintuan/detail.js
new file mode 100644
index 0000000..aa08c12
--- /dev/null
+++ b/lang/zh-cn/pintuan/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: '选择',
+ params: '参数',
+ service: '商品服务',
+ allGoods: '全部商品',
+ image: '图片',
+ video: '视频'
+}
diff --git a/lang/zh-cn/pintuan/list.js b/lang/zh-cn/pintuan/list.js
new file mode 100644
index 0000000..c9e868c
--- /dev/null
+++ b/lang/zh-cn/pintuan/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '拼团专区'
+}
diff --git a/lang/zh-cn/pintuan/my_spell.js b/lang/zh-cn/pintuan/my_spell.js
new file mode 100644
index 0000000..ffb8d0f
--- /dev/null
+++ b/lang/zh-cn/pintuan/my_spell.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的拼单'
+}
diff --git a/lang/zh-cn/pintuan/payment.js b/lang/zh-cn/pintuan/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/pintuan/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/pintuan/share.js b/lang/zh-cn/pintuan/share.js
new file mode 100644
index 0000000..9b25eb4
--- /dev/null
+++ b/lang/zh-cn/pintuan/share.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '拼团分享'
+}
diff --git a/lang/zh-cn/point/detail.js b/lang/zh-cn/point/detail.js
new file mode 100644
index 0000000..17ad9f1
--- /dev/null
+++ b/lang/zh-cn/point/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '兑换'
+}
diff --git a/lang/zh-cn/point/goods_detail.js b/lang/zh-cn/point/goods_detail.js
new file mode 100644
index 0000000..7c5e6bf
--- /dev/null
+++ b/lang/zh-cn/point/goods_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ // title: '兑换'
+}
\ No newline at end of file
diff --git a/lang/zh-cn/point/list.js b/lang/zh-cn/point/list.js
new file mode 100644
index 0000000..35fa006
--- /dev/null
+++ b/lang/zh-cn/point/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '积分商城'
+}
diff --git a/lang/zh-cn/point/order_detail.js b/lang/zh-cn/point/order_detail.js
new file mode 100644
index 0000000..02b134b
--- /dev/null
+++ b/lang/zh-cn/point/order_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '积分兑换订单详情'
+}
diff --git a/lang/zh-cn/point/order_list.js b/lang/zh-cn/point/order_list.js
new file mode 100644
index 0000000..5139a9a
--- /dev/null
+++ b/lang/zh-cn/point/order_list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '积分兑换',
+ emptyTips: '暂无更多数据了'
+}
diff --git a/lang/zh-cn/point/payment.js b/lang/zh-cn/point/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/point/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/point/result.js b/lang/zh-cn/point/result.js
new file mode 100644
index 0000000..fb9a581
--- /dev/null
+++ b/lang/zh-cn/point/result.js
@@ -0,0 +1,7 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '兑换结果',
+ exchangeSuccess: '兑换成功',
+ see: '查看兑换记录',
+ goHome: '回到首页'
+}
diff --git a/lang/zh-cn/presale/detail.js b/lang/zh-cn/presale/detail.js
new file mode 100644
index 0000000..aa08c12
--- /dev/null
+++ b/lang/zh-cn/presale/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: '选择',
+ params: '参数',
+ service: '商品服务',
+ allGoods: '全部商品',
+ image: '图片',
+ video: '视频'
+}
diff --git a/lang/zh-cn/presale/list.js b/lang/zh-cn/presale/list.js
new file mode 100644
index 0000000..6062102
--- /dev/null
+++ b/lang/zh-cn/presale/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '预售专区'
+}
diff --git a/lang/zh-cn/presale/order_detail.js b/lang/zh-cn/presale/order_detail.js
new file mode 100644
index 0000000..6c02235
--- /dev/null
+++ b/lang/zh-cn/presale/order_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '订单详情'
+}
diff --git a/lang/zh-cn/presale/order_list.js b/lang/zh-cn/presale/order_list.js
new file mode 100644
index 0000000..33e46b3
--- /dev/null
+++ b/lang/zh-cn/presale/order_list.js
@@ -0,0 +1,7 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '我的预售',
+ emptyTips: '暂无相关预售订单',
+ update: "释放刷新",
+ updateIng: "加载中..."
+}
diff --git a/lang/zh-cn/presale/payment.js b/lang/zh-cn/presale/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/presale/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/recharge/detail.js b/lang/zh-cn/recharge/detail.js
new file mode 100644
index 0000000..7f56b11
--- /dev/null
+++ b/lang/zh-cn/recharge/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '充值详情'
+}
diff --git a/lang/zh-cn/recharge/list.js b/lang/zh-cn/recharge/list.js
new file mode 100644
index 0000000..0247946
--- /dev/null
+++ b/lang/zh-cn/recharge/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '充值列表'
+}
diff --git a/lang/zh-cn/recharge/order_list.js b/lang/zh-cn/recharge/order_list.js
new file mode 100644
index 0000000..ccae5ec
--- /dev/null
+++ b/lang/zh-cn/recharge/order_list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '充值记录',
+}
diff --git a/lang/zh-cn/seckill/detail.js b/lang/zh-cn/seckill/detail.js
new file mode 100644
index 0000000..aa08c12
--- /dev/null
+++ b/lang/zh-cn/seckill/detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: '选择',
+ params: '参数',
+ service: '商品服务',
+ allGoods: '全部商品',
+ image: '图片',
+ video: '视频'
+}
diff --git a/lang/zh-cn/seckill/list.js b/lang/zh-cn/seckill/list.js
new file mode 100644
index 0000000..d546477
--- /dev/null
+++ b/lang/zh-cn/seckill/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '秒杀专区'
+}
diff --git a/lang/zh-cn/seckill/payment.js b/lang/zh-cn/seckill/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/seckill/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/store_notes/note_detail.js b/lang/zh-cn/store_notes/note_detail.js
new file mode 100644
index 0000000..f776d19
--- /dev/null
+++ b/lang/zh-cn/store_notes/note_detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '笔记详情'
+}
\ No newline at end of file
diff --git a/lang/zh-cn/store_notes/note_list.js b/lang/zh-cn/store_notes/note_list.js
new file mode 100644
index 0000000..daf0791
--- /dev/null
+++ b/lang/zh-cn/store_notes/note_list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '店铺笔记'
+}
\ No newline at end of file
diff --git a/lang/zh-cn/storeclose/storeclose.js b/lang/zh-cn/storeclose/storeclose.js
new file mode 100644
index 0000000..af147fc
--- /dev/null
+++ b/lang/zh-cn/storeclose/storeclose.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '店铺打烊'
+}
diff --git a/lang/zh-cn/topics/detail.js b/lang/zh-cn/topics/detail.js
new file mode 100644
index 0000000..37300ef
--- /dev/null
+++ b/lang/zh-cn/topics/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '专题活动详情'
+}
diff --git a/lang/zh-cn/topics/goods_detail.js b/lang/zh-cn/topics/goods_detail.js
new file mode 100644
index 0000000..aa08c12
--- /dev/null
+++ b/lang/zh-cn/topics/goods_detail.js
@@ -0,0 +1,10 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '',
+ select: '选择',
+ params: '参数',
+ service: '商品服务',
+ allGoods: '全部商品',
+ image: '图片',
+ video: '视频'
+}
diff --git a/lang/zh-cn/topics/list.js b/lang/zh-cn/topics/list.js
new file mode 100644
index 0000000..88fad9a
--- /dev/null
+++ b/lang/zh-cn/topics/list.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '专题活动列表'
+}
diff --git a/lang/zh-cn/topics/payment.js b/lang/zh-cn/topics/payment.js
new file mode 100644
index 0000000..88657dd
--- /dev/null
+++ b/lang/zh-cn/topics/payment.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '待付款订单'
+}
diff --git a/lang/zh-cn/verification/detail.js b/lang/zh-cn/verification/detail.js
new file mode 100644
index 0000000..d363d70
--- /dev/null
+++ b/lang/zh-cn/verification/detail.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '核销明细'
+}
diff --git a/lang/zh-cn/verification/index.js b/lang/zh-cn/verification/index.js
new file mode 100644
index 0000000..e03614d
--- /dev/null
+++ b/lang/zh-cn/verification/index.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '核销台'
+}
diff --git a/lang/zh-cn/verification/list.js b/lang/zh-cn/verification/list.js
new file mode 100644
index 0000000..0280f33
--- /dev/null
+++ b/lang/zh-cn/verification/list.js
@@ -0,0 +1,5 @@
+export const lang = {
+ //title为每个页面的标题
+ title: '核销记录',
+ emptyTips: '暂无记录'
+}
diff --git a/lang/zh-cn/vr/index.js b/lang/zh-cn/vr/index.js
new file mode 100644
index 0000000..24d3a31
--- /dev/null
+++ b/lang/zh-cn/vr/index.js
@@ -0,0 +1,4 @@
+export const lang = {
+ //title为每个页面的标题
+ title: 'VR'
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 4ee2de8..79ec5dc 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,6 @@
{
"scripts": {
- "mp-weixin": "node scripts/mp-weixin.patch.js",
- "i18n:check": "python scripts/i18n_check.py",
- "i18n:audit": "python scripts/i18n_audit.py",
- "i18n:strict": "python scripts/i18n_check.py strict",
- "i18n:apply": "python scripts/i18n_rewrite_calls.py --apply",
- "i18n:merge": "python scripts/i18n_merge.py",
- "i18n:clean-dead": "python scripts/i18n_clean_dead.py"
+ "mp-weixin": "node scripts/mp-weixin.patch.js"
},
"devDependencies": {
"dart-sass": "^1.25.0",
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 9edba56..462fcbf 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,258 +1,258 @@
-
-
-
-
-
-
-
-
-
- {{ siteInfo.site_name }}
- {{ followOfficialAccount.welcomeMsg }}
-
-
- {{ isEnEnv ? 'Follow Official Account' : $lang('page.index.l16.t0')
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("page.index.l89.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages/index/public/js/index.js b/pages/index/public/js/index.js
index 8edd140..addebae 100644
--- a/pages/index/public/js/index.js
+++ b/pages/index/public/js/index.js
@@ -1,130 +1,130 @@
-export default {
- data() {
- return {
- minScrollTop: 100, // 设置回到顶端按钮显示要求,最小页面滚动距离
- wechatQrcode: '', // 公众号二维码
- diyRoute: '/pages/index/index',
- shopInfo: null // 店铺信息
- };
- },
- onLoad(option) {
- // #ifdef H5
- // H5地图选择位置回调数据
- if (option.module && option.module == 'locationPicker') {
- option.name = ''; // 清空地址
- }
- // #endif
- this.name = option.name || 'DIY_VIEW_INDEX'; // 根据店铺运营模式,打开平台(shop)或者连锁门店(stroe)页面,接口会自行判断
-
- // 获取店铺信息
- this.shopInfo = uni.getStorageSync('shopInfo');
- },
- onShow() {
- // 获取关注公众号二维码
- this.getFollowQrcode();
-
- // 重新获取店铺信息
- this.shopInfo = uni.getStorageSync('shopInfo');
- },
- mounted() {
- // 监听图片、文字、商品列表等组件的点击事件
- this.unsubscribe = this.$eventBus?.onMany([
- 'rubik-cube-tap',
- 'picture-tap',
- 'text-tap',
- 'goods-list-tap',
- 'presale-tap',
- 'notes-tap',
- 'merch-list-tap',
- 'map-tap',
- 'img-ads-tap',
- 'many-goods-list-tap',
- 'search-tap',
- ], this._handleDiyGroupInteractionEvent);
- },
- beforeDestroy() {
- // 移除图片点击事件监听
- if (this.unsubscribe) this.unsubscribe();
- },
- methods: {
- // 关注公众号
- getFollowQrcode() {
- if (!this.$util.isWeiXin()) return;
- this.$api.sendRequest({
- url: '/wechat/api/wechat/followqrcode',
- success: res => {
- if (res.code >= 0 && res.data) {
- this.wechatQrcode = res.data.qrcode;
- }
- }
- });
- },
- officialAccountsOpen() {
- this.$refs.officialAccountsPopup.open();
- },
- officialAccountsClose() {
- this.$refs.officialAccountsPopup.close();
- },
- // 判断是否需要登录授权
- _requireHomeAuth() {
- // #ifdef MP-WEIXIN
- // 检查 index_login_auth 都开启时才需要登录授权
- return this.shopInfo?.index_login_auth === 1;
- // #endif
-
- // TODO: 其他平台, 后面可以根据平台类型判断
-
- return false;
- },
- // 统一处理点击及触摸事件
- _handleDiyGroupInteractionEvent(payload) {
- // 如果不需要登录授权,直接返回 true 继续传播
- if (!this._requireHomeAuth()) {
- return true;
- }
-
- // 如果已登录,直接返回 true 继续传播
- if (this.storeToken) {
- return true;
- }
-
- this.$refs.login?.open();
-
- // 阻止事件继续传播
- return false;
- },
- /**
- * 标题连击 5 次显示构建版本信息(供测试人员使用)
- */
- onTitleTap() {
- this._titleTapCount = (this._titleTapCount || 0) + 1;
- if (this._titleTapTimer) {
- clearTimeout(this._titleTapTimer);
- }
- if (this._titleTapCount >= 5) {
- this._titleTapCount = 0;
- this._showVersionInfo();
- return;
- }
- // 2 秒内未达到 5 次则重置计数
- this._titleTapTimer = setTimeout(() => {
- this._titleTapCount = 0;
- }, 2000);
- },
- _showVersionInfo() {
- let v = null;
- try {
- v = typeof __app_version !== 'undefined' ? __app_version : null;
- } catch (e) {}
- if (v && v.commitId) {
- uni.showModal({
- title: $lang('page.index.public.js.index.l121.t0'),
- content: $lang(`page.index.public.js.index.l122.t0`),
- showCancel: false
- });
- } else {
- console.log($lang('page.index.public.js.index.l126.t0'));
- }
- }
- }
+export default {
+ data() {
+ return {
+ minScrollTop: 100, // 设置回到顶端按钮显示要求,最小页面滚动距离
+ wechatQrcode: '', // 公众号二维码
+ diyRoute: '/pages/index/index',
+ shopInfo: null // 店铺信息
+ };
+ },
+ onLoad(option) {
+ // #ifdef H5
+ // H5地图选择位置回调数据
+ if (option.module && option.module == 'locationPicker') {
+ option.name = ''; // 清空地址
+ }
+ // #endif
+ this.name = option.name || 'DIY_VIEW_INDEX'; // 根据店铺运营模式,打开平台(shop)或者连锁门店(stroe)页面,接口会自行判断
+
+ // 获取店铺信息
+ this.shopInfo = uni.getStorageSync('shopInfo');
+ },
+ onShow() {
+ // 获取关注公众号二维码
+ this.getFollowQrcode();
+
+ // 重新获取店铺信息
+ this.shopInfo = uni.getStorageSync('shopInfo');
+ },
+ mounted() {
+ // 监听图片、文字、商品列表等组件的点击事件
+ this.unsubscribe = this.$eventBus?.onMany([
+ 'rubik-cube-tap',
+ 'picture-tap',
+ 'text-tap',
+ 'goods-list-tap',
+ 'presale-tap',
+ 'notes-tap',
+ 'merch-list-tap',
+ 'map-tap',
+ 'img-ads-tap',
+ 'many-goods-list-tap',
+ 'search-tap',
+ ], this._handleDiyGroupInteractionEvent);
+ },
+ beforeDestroy() {
+ // 移除图片点击事件监听
+ if (this.unsubscribe) this.unsubscribe();
+ },
+ methods: {
+ // 关注公众号
+ getFollowQrcode() {
+ if (!this.$util.isWeiXin()) return;
+ this.$api.sendRequest({
+ url: '/wechat/api/wechat/followqrcode',
+ success: res => {
+ if (res.code >= 0 && res.data) {
+ this.wechatQrcode = res.data.qrcode;
+ }
+ }
+ });
+ },
+ officialAccountsOpen() {
+ this.$refs.officialAccountsPopup.open();
+ },
+ officialAccountsClose() {
+ this.$refs.officialAccountsPopup.close();
+ },
+ // 判断是否需要登录授权
+ _requireHomeAuth() {
+ // #ifdef MP-WEIXIN
+ // 检查 index_login_auth 都开启时才需要登录授权
+ return this.shopInfo?.index_login_auth === 1;
+ // #endif
+
+ // TODO: 其他平台, 后面可以根据平台类型判断
+
+ return false;
+ },
+ // 统一处理点击及触摸事件
+ _handleDiyGroupInteractionEvent(payload) {
+ // 如果不需要登录授权,直接返回 true 继续传播
+ if (!this._requireHomeAuth()) {
+ return true;
+ }
+
+ // 如果已登录,直接返回 true 继续传播
+ if (this.storeToken) {
+ return true;
+ }
+
+ this.$refs.login?.open();
+
+ // 阻止事件继续传播
+ return false;
+ },
+ /**
+ * 标题连击 5 次显示构建版本信息(供测试人员使用)
+ */
+ onTitleTap() {
+ this._titleTapCount = (this._titleTapCount || 0) + 1;
+ if (this._titleTapTimer) {
+ clearTimeout(this._titleTapTimer);
+ }
+ if (this._titleTapCount >= 5) {
+ this._titleTapCount = 0;
+ this._showVersionInfo();
+ return;
+ }
+ // 2 秒内未达到 5 次则重置计数
+ this._titleTapTimer = setTimeout(() => {
+ this._titleTapCount = 0;
+ }, 2000);
+ },
+ _showVersionInfo() {
+ let v = null;
+ try {
+ v = typeof __app_version !== 'undefined' ? __app_version : null;
+ } catch (e) {}
+ if (v && v.commitId) {
+ uni.showModal({
+ title: '构建版本信息',
+ content: `提交 ID: ${v.commitId}\n构建时间: ${v.buildTime}`,
+ showCancel: false
+ });
+ } else {
+ console.log('未获取到构建版本信息');
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/pages_goods/_components/goods-detail-view/detail.js b/pages_goods/_components/goods-detail-view/detail.js
index a6e45e8..00a9516 100644
--- a/pages_goods/_components/goods-detail-view/detail.js
+++ b/pages_goods/_components/goods-detail-view/detail.js
@@ -1,523 +1,523 @@
-// 商品详情业务
-import {
- Weixin
-} from '@/common/js/wx-jssdk.js';
-
-export default {
- data() {
- return {
- skuId: 0,
- goodsId: 0,
- isIphoneX: false, //判断手机是否是iphoneX以上
- whetherCollection: 0,
-
- //是否开启预览,0:不开启,1:开启
- preview: 0,
- videoContext: '',
-
- // 媒体,图片,视频
-
- // 解决每个商品SKU图片数量不同时,无法切换到第一个,导致轮播图显示不出来
- swiperInterval: 1,
- swiperAutoplay: false,
- swiperCurrent: 1,
- switchMedia: 'img',
-
- //评价
- goodsEvaluate: [{
- member_headimg: '',
- member_name: '',
- content: '',
- images: [],
- create_time: 0,
- sku_name: ''
- }],
- evaluateConfig: {
- evaluate_audit: 1,
- evaluate_show: 0,
- evaluate_status: 1
- },
-
- // 是否可分享到好物圈
- goodsCircle: false,
- service: null,
- shareUrl: '', // 分享链接
- source_member: 0, //分享人的id
- isCommunity: false, //社群弹窗
-
- poster: "-1", //海报
- posterMsg: "", //海报错误信息
- posterHeight: 0,
- posterParams: {}, //海报所需参数
- goodsRoute: '',
- posterApi: '',
- goodsAttrShow: false, // 商品属性是否展开
-
- //门店列表
- storeList: {
- data: [],
- page: 1,
- page_size: 10
- },
- isShowStore: false,
- latitude: null, // 纬度
- longitude: null, // 经度
- evaluateCount: 0, // 商品评论数量
- deliveryType: null, // 配送方式
- isVirtual: 0, //是否为虚拟商品
-
- // 详情 Tab: 'html' 商品详情 / 'pdf' 文档详情
- detailTab: 'html'
- }
- },
- created() {
- this.isIphoneX = this.$util.uniappIsIPhoneX();
-
- if (this.location) {
- this.latitude = this.location.latitude;
- this.longitude = this.location.longitude;
- } else {
- this.$util.getLocation();
- }
- this.getStoreData();
- },
- watch: {
- location: function (nVal) {
- if (nVal) {
- this.latitude = nVal.latitude;
- this.longitude = nVal.longitude;
- this.getStoreData();
- }
- },
- // 跟随 goodsSkuDetail 变化重新决定默认 Tab
- // 解决 refreshGoodsSkuDetail 后续合并 pdf_url 时,Tab 已显示但 detailTab 仍为 'html' 的问题
- goodsSkuDetail: {
- deep: true,
- immediate: true,
- handler(newVal) {
- if (!newVal) return;
- if (newVal.pdf_url) {
- this.detailTab = 'pdf';
- } else if (newVal.goods_content) {
- this.detailTab = 'html';
- }
- }
- }
- },
- methods: {
- init(params) {
- this.skuId = params.sku_id;
- this.goodsId = params.goods_id;
- this.preview = params.preview;
- this.source_member = params.source_member;
- this.whetherCollection = params.whetherCollection;
- this.posterParams = params.posterParams;
-
- this.shareUrl = params.shareUrl;
- this.goodsRoute = params.goodsRoute;
- this.posterApi = params.posterApi;
- this.isVirtual = params.isVirtual;
- this.deliveryType = params.deliveryType;
- this.evaluateConfig = params.evaluateConfig;
-
- if (this.evaluateConfig.evaluate_show == 1) {
- //商品评论
- this.getGoodsEvaluate(params.evaluateList);
- this.evaluateCount = params.evaluateCount;
- }
-
- for (let k in this.deliveryType) {
- if (k == 'store') {
- this.isShowStore = true;
- }
- }
-
- this.getService();
-
- this.videoContext = uni.createVideoContext('goodsVideo');
-
- // #ifdef MP-WEIXIN
- this.goodsSyncToGoodsCircle();
- // #endif
-
- },
- swiperChange(e) {
- this.swiperCurrent = e.detail.current + 1;
- },
-
- //-------------------------------------服务-------------------------------------
-
- openMerchantsServicePopup() {
- this.$refs.merchantsServicePopup.open();
- },
- closeMerchantsServicePopup() {
- this.$refs.merchantsServicePopup.close();
- },
-
- //-------------------------------------门店列表-------------------------------------
- openStoreListPopup() {
- this.$refs.storeListPopup.open();
- },
- closeStoreListPopup() {
- this.$refs.storeListPopup.close();
- },
- getStoreData() {
- //门店列表
- let data = {
- page: this.storeList.page,
- page_size: this.storeList.page_size
- };
- if (this.latitude && this.longitude) {
- data.latitude = this.latitude;
- data.longitude = this.longitude;
- }
- this.$api.sendRequest({
- url: '/api/store/page',
- data: data,
- success: res => {
- if (this.storeList.page == 1) this.storeList.data == [];
- if (res.code >= 0 && res.data) {
- this.storeList.data = this.storeList.data.concat(res.data.list);
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- },
- selectStore(item) {
- this.$util.redirectTo('/pages_tool/store/detail', {
- store_id: item.store_id
- });
- this.closeStoreListPopup();
- },
- //-------------------------------------属性-------------------------------------
-
- switchGoodsAttr() {
- this.goodsAttrShow = !this.goodsAttrShow;
- },
- //-------------------------------------评价-------------------------------------
- //商品评论列表
- getGoodsEvaluate(list) {
- if (list) {
- this.goodsEvaluate = list;
- this.goodsEvaluate.forEach((item, index) => {
- if (this.goodsEvaluate[index].images) this.goodsEvaluate[index].images = this.goodsEvaluate[index].images.split(",");
- if (this.goodsEvaluate[index].is_anonymous == 1) this.goodsEvaluate[index].member_name = this.goodsEvaluate[index].member_name.replace(this.goodsEvaluate[index].member_name.substring(1, this.goodsEvaluate[index].member_name.length - 1), '***')
- })
- // if (this.goodsEvaluate.images) this.goodsEvaluate.images = this.goodsEvaluate.images.split(",");
- // if (this.goodsEvaluate.is_anonymous == 1) this.goodsEvaluate.member_name = this.goodsEvaluate.member_name.replace(
- // this.goodsEvaluate.member_name.substring(1, this.goodsEvaluate.member_name.length - 1), '***')
- }
- },
- // 预览评价图片
- previewEvaluate(index, img_index, field) {
- var paths = [];
- for (let i = 0; i < this.goodsEvaluate[index][field].length; i++) {
- paths.push(this.$util.img(this.goodsEvaluate[index][field][i]));
- }
- uni.previewImage({
- current: img_index,
- urls: paths
- });
- },
- //-------------------------------------关注-------------------------------------
- async collection() {
- if (this.preview) return; // 开启预览,禁止任何操作和跳转
-
- if (this.storeToken) {
-
- //未关注添加关注
- if (this.whetherCollection == 0) {
- let res = await this.$api.sendRequest({
- url: "/api/goodscollect/add",
- data: {
- sku_id: this.skuId,
- goods_id: this.goodsSkuDetail.goods_id,
- sku_name: this.goodsSkuDetail.sku_name,
- sku_price: this.goodsSkuDetail.show_price,
- sku_image: this.goodsSkuDetail.sku_image
- },
- async: false,
- });
- var data = res.data;
- if (data > 0) {
- this.whetherCollection = 1;
- }
- } else {
- //已关注取消关注
- let res = await this.$api.sendRequest({
- url: "/api/goodscollect/delete",
- data: {
- goods_id: this.goodsSkuDetail.goods_id
- },
- async: false,
- });
- var data = res.data;
- if (data > 0) {
- this.whetherCollection = 0;
- }
- }
- return this.whetherCollection;
- } else {
- if (this.source_member) {
- this.$refs.login.open(this.shareUrl + '&source_member=' + this.source_member);
- } else {
- this.$refs.login.open(this.shareUrl);
- }
- }
- },
- //-------------------------------------分享-------------------------------------
- // 打开分享弹出层
- openSharePopup() {
- this.$refs.sharePopup.open();
- },
- // 关闭分享弹出层
- closeSharePopup() {
- this.$refs.sharePopup.close();
- },
- copyUrl() {
- let text = this.$config.h5Domain + this.shareUrl;
- if (this.memberInfo && this.memberInfo.member_id) text += '&source_member=' + this.memberInfo.member_id;
- this.$util.copy(text, () => {
- this.closeSharePopup();
- });
- },
-
- //-------------------------------------海报-------------------------------------
- // 打开海报弹出层
- openPosterPopup() {
- this.getGoodsPoster();
- this.$refs.sharePopup.close();
- },
- // 关闭海报弹出层
- closePosterPopup() {
- this.$refs.posterPopup.close();
- this.poster = ''
- },
- //生成海报
- getGoodsPoster() {
- uni.showLoading({
- 'title': $lang('goods._components.goods-detail-view.detail.l285.t0')
- })
- //活动海报信息
- if (this.memberInfo && this.memberInfo.member_id) this.posterParams.source_member = this.memberInfo.member_id;
-
- this.$api.sendRequest({
- url: this.posterApi,
- data: {
- page: this.goodsRoute,
- qrcode_param: JSON.stringify(this.posterParams)
- },
- success: res => {
- if (res.code == 0) {
- this.$refs.posterPopup.open();
- this.poster = res.data.path + "?time=" + new Date().getTime();
- } else {
- this.posterMsg = res.message;
- this.$util.showToast({
- title: res.message
- })
- }
- uni.hideLoading();
- },
- fail: err => {
- uni.hideLoading();
- }
- });
- },
- // 预览图片
- previewMedia(index) {
- var paths = [];
- for (let i = 0; i < this.goodsSkuDetail.sku_images.length; i++) {
- paths.push(this.$util.img(this.goodsSkuDetail.sku_images[i], {
- size: 'big'
- }));
- }
- uni.previewImage({
- current: index,
- urls: paths,
- // longPressActions: {
- // itemList: ['发送给朋友', '保存图片', '关注'],
- // success: function(data) {
- // console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
- // },
- // fail: function(err) {
- // console.log(err.errMsg);
- // }
- // }
- });
- },
- swiperImageError(index) {
- this.goodsSkuDetail.sku_images[index] = this.$util.getDefaultImage().goods;
- this.$forceUpdate();
- },
- // #ifdef MP || APP-PLUS
- //小程序中保存海报
- saveGoodsPoster() {
- let url = this.$util.img(this.poster);
- uni.downloadFile({
- url: url,
- success: (res) => {
- if (res.errMsg == "downloadFile:ok") {
- uni.saveImageToPhotosAlbum({
- filePath: res.tempFilePath,
- success: () => {
- this.$util.showToast({
- title: $lang("goods._components.goods-detail-view.detail.l351.t0")
- });
- },
- fail: (err) => {
- this.$util.showToast({
- title: $lang("goods._components.goods-detail-view.detail.l356.t0")
- });
- }
- });
- }
- },
- fail: (err) => {
- this.$util.showToast({
- title: $lang("goods._components.goods-detail-view.detail.l356.t0")
- });
- }
- });
- },
- // #endif
- //售后保障查询
- getService() {
- this.$api.sendRequest({
- url: '/api/goods/aftersale',
- success: res => {
- if (res.code == 0 && res.data) {
- this.service = res.data;
- }
- }
- });
- },
-
- // #ifdef MP-WEIXIN
- /**
- * 将商品同步到微信圈子
- */
- goodsSyncToGoodsCircle() {
- this.$api.sendRequest({
- url: '/goodscircle/api/goods/sync',
- data: {
- goods_id: this.goodsSkuDetail.goods_id
- },
- success: res => {
- if (res.code == 0) {
- this.goodsCircle = true;
- }
- }
- })
- },
- /**
- * 将商品推荐到微信圈子
- */
- openBusinessView() {
- if (wx.openBusinessView) {
- wx.openBusinessView({
- businessType: 'friendGoodsRecommend',
- extraData: {
- product: {
- item_code: this.goodsSkuDetail.goods_id,
- title: this.goodsSkuDetail.sku_name,
- image_list: this.goodsSkuDetail.sku_images.map((ele) => {
- return this.$util.img(ele);
- })
- }
- },
- success: function (res) {
- },
- fail: function (res) {
- }
- })
- }
- },
- // #endif
- toEvaluateDetail(id) {
- this.$util.redirectTo('/pages_tool/goods/evaluate', {
- goods_id: id
- });
- },
- showImg(e) {
- //拿到图片的路径里面的内容放在我们数组中
- let contentimg = e.target.dataset.nodes;
- let arrImg = [];
- for (var i = 0; i < contentimg.length; i++) {
- var img = contentimg[i].children;
- if (Array.isArray(img)) {
- for (var j = 0; j < img.length; j++) {
- if (img[j].attrs && img[j].name == "img") {
- if (img[j].attrs.src) {
- arrImg.push(img[j].attrs.src)
- }
- }
- }
- }
- }
- //最后一步就是把我们的所有图片放在预览的api中就可以了
- uni.previewImage({
- current: arrImg,
- urls: arrImg,
- })
- },
-
- //-------------------------------------社群-------------------------------------
-
- //添加福利群
- onCommunity() {
- this.isCommunity = true
- },
- onCloseCommunity() {
- this.isCommunity = false
- },
-
- //-------------------------------------PDF文档-------------------------------------
- // 切换详情 Tab
- switchDetailTab(tab) {
- if (tab !== 'html' && tab !== 'pdf') return;
- this.detailTab = tab;
- },
- onTapDoc(pdf_url) {
- if (!pdf_url) return;
- uni.showLoading({
- title: '正在加载'
- });
- let url = this.$util.img(pdf_url);
- uni.downloadFile({
- url: url,
- success: (res) => {
- if (res.statusCode === 200) {
- let filePath = res.tempFilePath;
- uni.openDocument({
- filePath: filePath,
- success: () => {
- console.log('打开成功');
- },
- fail: () => {},
- complete: () => {
- uni.hideLoading();
- }
- });
- }
- },
- fail: (res) => {
- uni.hideLoading();
- },
- complete: (res) => {
- if (res.statusCode === 404) {
- uni.showToast({
- title: '文件不存在',
- icon: 'none'
- });
- }
- }
- });
- },
-
- }
-
+// 商品详情业务
+import {
+ Weixin
+} from '@/common/js/wx-jssdk.js';
+
+export default {
+ data() {
+ return {
+ skuId: 0,
+ goodsId: 0,
+ isIphoneX: false, //判断手机是否是iphoneX以上
+ whetherCollection: 0,
+
+ //是否开启预览,0:不开启,1:开启
+ preview: 0,
+ videoContext: '',
+
+ // 媒体,图片,视频
+
+ // 解决每个商品SKU图片数量不同时,无法切换到第一个,导致轮播图显示不出来
+ swiperInterval: 1,
+ swiperAutoplay: false,
+ swiperCurrent: 1,
+ switchMedia: 'img',
+
+ //评价
+ goodsEvaluate: [{
+ member_headimg: '',
+ member_name: '',
+ content: '',
+ images: [],
+ create_time: 0,
+ sku_name: ''
+ }],
+ evaluateConfig: {
+ evaluate_audit: 1,
+ evaluate_show: 0,
+ evaluate_status: 1
+ },
+
+ // 是否可分享到好物圈
+ goodsCircle: false,
+ service: null,
+ shareUrl: '', // 分享链接
+ source_member: 0, //分享人的id
+ isCommunity: false, //社群弹窗
+
+ poster: "-1", //海报
+ posterMsg: "", //海报错误信息
+ posterHeight: 0,
+ posterParams: {}, //海报所需参数
+ goodsRoute: '',
+ posterApi: '',
+ goodsAttrShow: false, // 商品属性是否展开
+
+ //门店列表
+ storeList: {
+ data: [],
+ page: 1,
+ page_size: 10
+ },
+ isShowStore: false,
+ latitude: null, // 纬度
+ longitude: null, // 经度
+ evaluateCount: 0, // 商品评论数量
+ deliveryType: null, // 配送方式
+ isVirtual: 0, //是否为虚拟商品
+
+ // 详情 Tab: 'html' 商品详情 / 'pdf' 文档详情
+ detailTab: 'html'
+ }
+ },
+ created() {
+ this.isIphoneX = this.$util.uniappIsIPhoneX();
+
+ if (this.location) {
+ this.latitude = this.location.latitude;
+ this.longitude = this.location.longitude;
+ } else {
+ this.$util.getLocation();
+ }
+ this.getStoreData();
+ },
+ watch: {
+ location: function (nVal) {
+ if (nVal) {
+ this.latitude = nVal.latitude;
+ this.longitude = nVal.longitude;
+ this.getStoreData();
+ }
+ },
+ // 跟随 goodsSkuDetail 变化重新决定默认 Tab
+ // 解决 refreshGoodsSkuDetail 后续合并 pdf_url 时,Tab 已显示但 detailTab 仍为 'html' 的问题
+ goodsSkuDetail: {
+ deep: true,
+ immediate: true,
+ handler(newVal) {
+ if (!newVal) return;
+ if (newVal.pdf_url) {
+ this.detailTab = 'pdf';
+ } else if (newVal.goods_content) {
+ this.detailTab = 'html';
+ }
+ }
+ }
+ },
+ methods: {
+ init(params) {
+ this.skuId = params.sku_id;
+ this.goodsId = params.goods_id;
+ this.preview = params.preview;
+ this.source_member = params.source_member;
+ this.whetherCollection = params.whetherCollection;
+ this.posterParams = params.posterParams;
+
+ this.shareUrl = params.shareUrl;
+ this.goodsRoute = params.goodsRoute;
+ this.posterApi = params.posterApi;
+ this.isVirtual = params.isVirtual;
+ this.deliveryType = params.deliveryType;
+ this.evaluateConfig = params.evaluateConfig;
+
+ if (this.evaluateConfig.evaluate_show == 1) {
+ //商品评论
+ this.getGoodsEvaluate(params.evaluateList);
+ this.evaluateCount = params.evaluateCount;
+ }
+
+ for (let k in this.deliveryType) {
+ if (k == 'store') {
+ this.isShowStore = true;
+ }
+ }
+
+ this.getService();
+
+ this.videoContext = uni.createVideoContext('goodsVideo');
+
+ // #ifdef MP-WEIXIN
+ this.goodsSyncToGoodsCircle();
+ // #endif
+
+ },
+ swiperChange(e) {
+ this.swiperCurrent = e.detail.current + 1;
+ },
+
+ //-------------------------------------服务-------------------------------------
+
+ openMerchantsServicePopup() {
+ this.$refs.merchantsServicePopup.open();
+ },
+ closeMerchantsServicePopup() {
+ this.$refs.merchantsServicePopup.close();
+ },
+
+ //-------------------------------------门店列表-------------------------------------
+ openStoreListPopup() {
+ this.$refs.storeListPopup.open();
+ },
+ closeStoreListPopup() {
+ this.$refs.storeListPopup.close();
+ },
+ getStoreData() {
+ //门店列表
+ let data = {
+ page: this.storeList.page,
+ page_size: this.storeList.page_size
+ };
+ if (this.latitude && this.longitude) {
+ data.latitude = this.latitude;
+ data.longitude = this.longitude;
+ }
+ this.$api.sendRequest({
+ url: '/api/store/page',
+ data: data,
+ success: res => {
+ if (this.storeList.page == 1) this.storeList.data == [];
+ if (res.code >= 0 && res.data) {
+ this.storeList.data = this.storeList.data.concat(res.data.list);
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ },
+ selectStore(item) {
+ this.$util.redirectTo('/pages_tool/store/detail', {
+ store_id: item.store_id
+ });
+ this.closeStoreListPopup();
+ },
+ //-------------------------------------属性-------------------------------------
+
+ switchGoodsAttr() {
+ this.goodsAttrShow = !this.goodsAttrShow;
+ },
+ //-------------------------------------评价-------------------------------------
+ //商品评论列表
+ getGoodsEvaluate(list) {
+ if (list) {
+ this.goodsEvaluate = list;
+ this.goodsEvaluate.forEach((item, index) => {
+ if (this.goodsEvaluate[index].images) this.goodsEvaluate[index].images = this.goodsEvaluate[index].images.split(",");
+ if (this.goodsEvaluate[index].is_anonymous == 1) this.goodsEvaluate[index].member_name = this.goodsEvaluate[index].member_name.replace(this.goodsEvaluate[index].member_name.substring(1, this.goodsEvaluate[index].member_name.length - 1), '***')
+ })
+ // if (this.goodsEvaluate.images) this.goodsEvaluate.images = this.goodsEvaluate.images.split(",");
+ // if (this.goodsEvaluate.is_anonymous == 1) this.goodsEvaluate.member_name = this.goodsEvaluate.member_name.replace(
+ // this.goodsEvaluate.member_name.substring(1, this.goodsEvaluate.member_name.length - 1), '***')
+ }
+ },
+ // 预览评价图片
+ previewEvaluate(index, img_index, field) {
+ var paths = [];
+ for (let i = 0; i < this.goodsEvaluate[index][field].length; i++) {
+ paths.push(this.$util.img(this.goodsEvaluate[index][field][i]));
+ }
+ uni.previewImage({
+ current: img_index,
+ urls: paths
+ });
+ },
+ //-------------------------------------关注-------------------------------------
+ async collection() {
+ if (this.preview) return; // 开启预览,禁止任何操作和跳转
+
+ if (this.storeToken) {
+
+ //未关注添加关注
+ if (this.whetherCollection == 0) {
+ let res = await this.$api.sendRequest({
+ url: "/api/goodscollect/add",
+ data: {
+ sku_id: this.skuId,
+ goods_id: this.goodsSkuDetail.goods_id,
+ sku_name: this.goodsSkuDetail.sku_name,
+ sku_price: this.goodsSkuDetail.show_price,
+ sku_image: this.goodsSkuDetail.sku_image
+ },
+ async: false,
+ });
+ var data = res.data;
+ if (data > 0) {
+ this.whetherCollection = 1;
+ }
+ } else {
+ //已关注取消关注
+ let res = await this.$api.sendRequest({
+ url: "/api/goodscollect/delete",
+ data: {
+ goods_id: this.goodsSkuDetail.goods_id
+ },
+ async: false,
+ });
+ var data = res.data;
+ if (data > 0) {
+ this.whetherCollection = 0;
+ }
+ }
+ return this.whetherCollection;
+ } else {
+ if (this.source_member) {
+ this.$refs.login.open(this.shareUrl + '&source_member=' + this.source_member);
+ } else {
+ this.$refs.login.open(this.shareUrl);
+ }
+ }
+ },
+ //-------------------------------------分享-------------------------------------
+ // 打开分享弹出层
+ openSharePopup() {
+ this.$refs.sharePopup.open();
+ },
+ // 关闭分享弹出层
+ closeSharePopup() {
+ this.$refs.sharePopup.close();
+ },
+ copyUrl() {
+ let text = this.$config.h5Domain + this.shareUrl;
+ if (this.memberInfo && this.memberInfo.member_id) text += '&source_member=' + this.memberInfo.member_id;
+ this.$util.copy(text, () => {
+ this.closeSharePopup();
+ });
+ },
+
+ //-------------------------------------海报-------------------------------------
+ // 打开海报弹出层
+ openPosterPopup() {
+ this.getGoodsPoster();
+ this.$refs.sharePopup.close();
+ },
+ // 关闭海报弹出层
+ closePosterPopup() {
+ this.$refs.posterPopup.close();
+ this.poster = ''
+ },
+ //生成海报
+ getGoodsPoster() {
+ uni.showLoading({
+ 'title': '海报生成中...'
+ })
+ //活动海报信息
+ if (this.memberInfo && this.memberInfo.member_id) this.posterParams.source_member = this.memberInfo.member_id;
+
+ this.$api.sendRequest({
+ url: this.posterApi,
+ data: {
+ page: this.goodsRoute,
+ qrcode_param: JSON.stringify(this.posterParams)
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.$refs.posterPopup.open();
+ this.poster = res.data.path + "?time=" + new Date().getTime();
+ } else {
+ this.posterMsg = res.message;
+ this.$util.showToast({
+ title: res.message
+ })
+ }
+ uni.hideLoading();
+ },
+ fail: err => {
+ uni.hideLoading();
+ }
+ });
+ },
+ // 预览图片
+ previewMedia(index) {
+ var paths = [];
+ for (let i = 0; i < this.goodsSkuDetail.sku_images.length; i++) {
+ paths.push(this.$util.img(this.goodsSkuDetail.sku_images[i], {
+ size: 'big'
+ }));
+ }
+ uni.previewImage({
+ current: index,
+ urls: paths,
+ // longPressActions: {
+ // itemList: ['发送给朋友', '保存图片', '关注'],
+ // success: function(data) {
+ // console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
+ // },
+ // fail: function(err) {
+ // console.log(err.errMsg);
+ // }
+ // }
+ });
+ },
+ swiperImageError(index) {
+ this.goodsSkuDetail.sku_images[index] = this.$util.getDefaultImage().goods;
+ this.$forceUpdate();
+ },
+ // #ifdef MP || APP-PLUS
+ //小程序中保存海报
+ saveGoodsPoster() {
+ let url = this.$util.img(this.poster);
+ uni.downloadFile({
+ url: url,
+ success: (res) => {
+ if (res.errMsg == "downloadFile:ok") {
+ uni.saveImageToPhotosAlbum({
+ filePath: res.tempFilePath,
+ success: () => {
+ this.$util.showToast({
+ title: "保存成功"
+ });
+ },
+ fail: (err) => {
+ this.$util.showToast({
+ title: "保存失败,请稍后重试"
+ });
+ }
+ });
+ }
+ },
+ fail: (err) => {
+ this.$util.showToast({
+ title: "保存失败,请稍后重试"
+ });
+ }
+ });
+ },
+ // #endif
+ //售后保障查询
+ getService() {
+ this.$api.sendRequest({
+ url: '/api/goods/aftersale',
+ success: res => {
+ if (res.code == 0 && res.data) {
+ this.service = res.data;
+ }
+ }
+ });
+ },
+
+ // #ifdef MP-WEIXIN
+ /**
+ * 将商品同步到微信圈子
+ */
+ goodsSyncToGoodsCircle() {
+ this.$api.sendRequest({
+ url: '/goodscircle/api/goods/sync',
+ data: {
+ goods_id: this.goodsSkuDetail.goods_id
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.goodsCircle = true;
+ }
+ }
+ })
+ },
+ /**
+ * 将商品推荐到微信圈子
+ */
+ openBusinessView() {
+ if (wx.openBusinessView) {
+ wx.openBusinessView({
+ businessType: 'friendGoodsRecommend',
+ extraData: {
+ product: {
+ item_code: this.goodsSkuDetail.goods_id,
+ title: this.goodsSkuDetail.sku_name,
+ image_list: this.goodsSkuDetail.sku_images.map((ele) => {
+ return this.$util.img(ele);
+ })
+ }
+ },
+ success: function (res) {
+ },
+ fail: function (res) {
+ }
+ })
+ }
+ },
+ // #endif
+ toEvaluateDetail(id) {
+ this.$util.redirectTo('/pages_tool/goods/evaluate', {
+ goods_id: id
+ });
+ },
+ showImg(e) {
+ //拿到图片的路径里面的内容放在我们数组中
+ let contentimg = e.target.dataset.nodes;
+ let arrImg = [];
+ for (var i = 0; i < contentimg.length; i++) {
+ var img = contentimg[i].children;
+ if (Array.isArray(img)) {
+ for (var j = 0; j < img.length; j++) {
+ if (img[j].attrs && img[j].name == "img") {
+ if (img[j].attrs.src) {
+ arrImg.push(img[j].attrs.src)
+ }
+ }
+ }
+ }
+ }
+ //最后一步就是把我们的所有图片放在预览的api中就可以了
+ uni.previewImage({
+ current: arrImg,
+ urls: arrImg,
+ })
+ },
+
+ //-------------------------------------社群-------------------------------------
+
+ //添加福利群
+ onCommunity() {
+ this.isCommunity = true
+ },
+ onCloseCommunity() {
+ this.isCommunity = false
+ },
+
+ //-------------------------------------PDF文档-------------------------------------
+ // 切换详情 Tab
+ switchDetailTab(tab) {
+ if (tab !== 'html' && tab !== 'pdf') return;
+ this.detailTab = tab;
+ },
+ onTapDoc(pdf_url) {
+ if (!pdf_url) return;
+ uni.showLoading({
+ title: '正在加载'
+ });
+ let url = this.$util.img(pdf_url);
+ uni.downloadFile({
+ url: url,
+ success: (res) => {
+ if (res.statusCode === 200) {
+ let filePath = res.tempFilePath;
+ uni.openDocument({
+ filePath: filePath,
+ success: () => {
+ console.log('打开成功');
+ },
+ fail: () => {},
+ complete: () => {
+ uni.hideLoading();
+ }
+ });
+ }
+ },
+ fail: (res) => {
+ uni.hideLoading();
+ },
+ complete: (res) => {
+ if (res.statusCode === 404) {
+ uni.showToast({
+ title: '文件不存在',
+ icon: 'none'
+ });
+ }
+ }
+ });
+ },
+
+ }
+
}
\ No newline at end of file
diff --git a/pages_goods/_components/goods-detail-view/goods-detail-view.vue b/pages_goods/_components/goods-detail-view/goods-detail-view.vue
index 3ac445c..c8a43f1 100644
--- a/pages_goods/_components/goods-detail-view/goods-detail-view.vue
+++ b/pages_goods/_components/goods-detail-view/goods-detail-view.vue
@@ -1,679 +1,680 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ swiperCurrent }}
- /{{ goodsSkuDetail.sku_images.length }}
-
-
-
-
-
-
-
-
-
-
- {{
- $lang('video') }}
- {{ $lang('common.list.image') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.list.send') }}
-
-
-
- {{ $lang('order.list.express') }}
-
-
-
-
-
-
- {{ $lang("goods._components.goods-detail-view.l75.t0") }}
-
-
-
-
-
-
-
- {{ $lang("goods._components.goods-detail-view.l99.t0") }}
-
-
-
-
-
-
-
-
- {{ item.service_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ goodsSkuDetail.merchinfo.merch_name }}
- {{ $lang("goods._components.goods-detail-view.l143.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 评价
- ({{ evaluateCount }})
-
- {{ $lang("goods._components.goods-detail-view.l290.t0") }}
-
- {{ $lang("goods._components.goods-detail-view.l292.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.member_name[0] }}***{{ item.member_name[item.member_name.length - 1]
- }}
-
- {{ item.member_name }}
-
-
-
-
-
- {{ $util.timeStampTurnTime(item.create_time) }}
-
- {{ item.content }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("goods._components.goods-detail-view.l338.t0") }}
-
-
-
- {{ item.attr_name }}
- {{ item.attr_value_name }}
-
-
-
-
- 展开
-
-
- 收起
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('goods.detail.document') }}
-
-
- {{ $lang('goods.detail.details') }}
-
-
-
-
-
-
-
-
-
-
- {{ goodsSkuDetail.pdf_name || '商品文档' }}
- 点击查看文档详情
-
-
- 查看
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("goods._components.goods-detail-view.l397.t0") }}
-
-
- {{ $lang("goods._components.goods-detail-view.l400.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages_goods/_components/ns-goods-promotion/ns-goods-promotion.vue b/pages_goods/_components/ns-goods-promotion/ns-goods-promotion.vue
index 7302f54..93c8905 100644
--- a/pages_goods/_components/ns-goods-promotion/ns-goods-promotion.vue
+++ b/pages_goods/_components/ns-goods-promotion/ns-goods-promotion.vue
@@ -1,125 +1,125 @@
-
-
-
-
-
- {{ $lang("goods._components.ns-goods-promotion.l6.t0") }}
- { $lang("goods._components.ns-goods-promotion.l7.t0") } item.promotion_name }}
-
-
-
-
-
- {{ $lang("goods._components.ns-goods-promotion.l13.t0") }}
- { $lang("goods._components.ns-goods-promotion.l7.t0") } item.promotion_name }}
-
-
-
-
- {{ $lang("goods._components.ns-goods-promotion.l19.t0") }}
- { $lang("goods._components.ns-goods-promotion.l7.t0") } item.promotion_name }}
-
-
-
-
- {{ $lang("goods._components.ns-goods-promotion.l25.t0") }}
- { $lang("goods._components.ns-goods-promotion.l7.t0") } item.promotion_name }}
-
-
-
-
- {{ $lang("goods._components.ns-goods-promotion.l31.t0") }}
- { $lang("goods._components.ns-goods-promotion.l7.t0") } item.promotion_name }}
-
-
-
-
- {{ $lang("goods._components.ns-goods-promotion.l37.t0") }}
- { $lang("goods._components.ns-goods-promotion.l7.t0") } item.promotion_name }}
-
-
-
-
- {{ $lang("goods._components.ns-goods-promotion.l43.t0") }}
- { $lang("goods._components.ns-goods-promotion.l7.t0") } item.promotion_name }}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ 限时折扣
+ 当前商品正在参加{{ item.promotion_name }}
+
+
+
+
+
+ 团购
+ 当前商品正在参加{{ item.promotion_name }}
+
+
+
+
+ 拼团
+ 当前商品正在参加{{ item.promotion_name }}
+
+
+
+
+ 秒杀
+ 当前商品正在参加{{ item.promotion_name }}
+
+
+
+
+ 专题活动
+ 当前商品正在参加{{ item.promotion_name }}
+
+
+
+
+ 砍价
+ 当前商品正在参加{{ item.promotion_name }}
+
+
+
+
+ 拼团返利
+ 当前商品正在参加{{ item.promotion_name }}
+
+
+
+
+
+
+
+
+
diff --git a/pages_goods/cart.vue b/pages_goods/cart.vue
index 6414191..b8dea99 100644
--- a/pages_goods/cart.vue
+++ b/pages_goods/cart.vue
@@ -1,390 +1,390 @@
-
-
-
-
-
-
-
-
-
- {{ $lang("diy.diy-coupon.l209.t0") }}
- { $lang("goods.cart.l17") } discount.coupon_info.coupon_money | moneyFormat }}元
-
-
- 点击{{ discount.coupon_info.receive_type == 'wait' ? '领取' : $lang('diy.diy-listmenu.l15.t0') }}
-
-
-
-
-
- {{ globalStoreInfo.store_name }}
-
-
-
-
-
-
-
-
-
-
- {{ isEnEnv ?
- item.en_goods_name : item.goods_name }}
-
-
-
-
- {{ x.spec_name }}:{{ x.spec_value_name }}
- {{ i < item.sku_spec_format.length - 1 ? ';' : '' }}
-
-
-
-
-
-
-
-
-
-
-
- {{
- $lang('common.currency_symbol') }}
- {{ parseFloat(item.member_price).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(item.member_price).toFixed(2).split('.')[1]
- }}
-
-
-
-
-
-
-
- {{
- $lang('common.currency_symbol') }}
- {{ parseFloat(item.discount_price).toFixed(2).split('.')[0]
- }}
- .{{
- parseFloat(item.discount_price).toFixed(2).split('.')[1]
- }}
-
-
-
-
-
-
-
-
-
- {{
- $lang('common.currency_symbol') }}
- {{ parseFloat(item.member_price).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(item.member_price).toFixed(2).split('.')[1]
- }}
-
-
-
-
-
-
-
- {{
- $lang('common.currency_symbol') }}
- {{ parseFloat(item.price).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(item.price).toFixed(2).split('.')[1]
- }}
-
-
-
-
-
-
-
- {{ $lang("goods.cart.l123") }}
-
-
- {{ Number(mitem.limit) }}减{{
- mitem.discount_money }}
-
-
-
-
-
-
- {{ $lang('common.list.del') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ goodsItem.sku_name }}
-
-
-
-
- {{ x.spec_name }}:{{ x.spec_value_name }}
- {{ i < goodsItem.sku_spec_format.length - 1 ? '; ' : '' }}
-
-
-
-
-
-
-
-
- {{
- $lang('common.currency_symbol') }}
- {{ parseFloat(goodsItem.member_price).toFixed(2).split('.')[0]
- }}
- .{{
- parseFloat(goodsItem.member_price).toFixed(2).split('.')[1]
- }}
-
-
-
- {{
- $lang('common.currency_symbol') }}
- {{ parseFloat(goodsItem.discount_price).toFixed(2).split('.')[0]
- }}
- .{{
- parseFloat(goodsItem.discount_price).toFixed(2).split('.')[1]
- }}
-
-
-
- {{ $lang("goods.cart.l192") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.button.select_all') }}
-
-
-
- {{ $lang('cart.list.total') }}:
- {{ $lang('common.currency_symbol') }}
-
- {{ parseFloat(discount.order_money).toFixed(2).split('.')[0]
- }}
- .{{ parseFloat(discount.order_money).toFixed(2).split('.')[1]
- }}
-
-
- {{ parseFloat(totalPrice).toFixed(2).split('.')[0] }}
- .{{ parseFloat(totalPrice).toFixed(2).split('.')[1] }}
-
-
-
- 优惠明细
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_goods/cart.vue.bak b/pages_goods/cart.vue.bak
deleted file mode 100644
index b8dea99..0000000
--- a/pages_goods/cart.vue.bak
+++ /dev/null
@@ -1,390 +0,0 @@
-
-
-
-
-
-
-
-
-
- 优惠券
- 领券结算最高可减{{ discount.coupon_info.coupon_money | moneyFormat }}元
-
-
- 点击{{ discount.coupon_info.receive_type == 'wait' ? '领取' : '查看' }}
-
-
-
-
-
- {{ globalStoreInfo.store_name }}
-
-
-
-
-
-
-
-
-
-
- {{ isEnEnv ?
- item.en_goods_name : item.goods_name }}
-
-
-
-
- {{ x.spec_name }}:{{ x.spec_value_name }}
- {{ i < item.sku_spec_format.length - 1 ? ';' : '' }}
-
-
-
-
-
-
-
-
-
-
-
- {{
- $lang('common.currencySymbol') }}
- {{ parseFloat(item.member_price).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(item.member_price).toFixed(2).split('.')[1]
- }}
-
-
-
-
-
-
-
- {{
- $lang('common.currencySymbol') }}
- {{ parseFloat(item.discount_price).toFixed(2).split('.')[0]
- }}
- .{{
- parseFloat(item.discount_price).toFixed(2).split('.')[1]
- }}
-
-
-
-
-
-
-
-
-
- {{
- $lang('common.currencySymbol') }}
- {{ parseFloat(item.member_price).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(item.member_price).toFixed(2).split('.')[1]
- }}
-
-
-
-
-
-
-
- {{
- $lang('common.currencySymbol') }}
- {{ parseFloat(item.price).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(item.price).toFixed(2).split('.')[1]
- }}
-
-
-
-
-
-
-
- 满减
-
-
- {{ Number(mitem.limit) }}减{{
- mitem.discount_money }}
-
-
-
-
-
-
- {{ $lang('del') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ goodsItem.sku_name }}
-
-
-
-
- {{ x.spec_name }}:{{ x.spec_value_name }}
- {{ i < goodsItem.sku_spec_format.length - 1 ? '; ' : '' }}
-
-
-
-
-
-
-
-
- {{
- $lang('common.currencySymbol') }}
- {{ parseFloat(goodsItem.member_price).toFixed(2).split('.')[0]
- }}
- .{{
- parseFloat(goodsItem.member_price).toFixed(2).split('.')[1]
- }}
-
-
-
- {{
- $lang('common.currencySymbol') }}
- {{ parseFloat(goodsItem.discount_price).toFixed(2).split('.')[0]
- }}
- .{{
- parseFloat(goodsItem.discount_price).toFixed(2).split('.')[1]
- }}
-
-
-
- 已失效
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('allElection') }}
-
-
-
- {{ $lang('total') }}:
- {{ $lang('common.currencySymbol') }}
-
- {{ parseFloat(discount.order_money).toFixed(2).split('.')[0]
- }}
- .{{ parseFloat(discount.order_money).toFixed(2).split('.')[1]
- }}
-
-
- {{ parseFloat(totalPrice).toFixed(2).split('.')[0] }}
- .{{ parseFloat(totalPrice).toFixed(2).split('.')[1] }}
-
-
-
- 优惠明细
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_goods/category.vue b/pages_goods/category.vue
index f8b1c05..7f265db 100644
--- a/pages_goods/category.vue
+++ b/pages_goods/category.vue
@@ -1,149 +1,149 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_goods/detail.vue b/pages_goods/detail.vue
index 0127d51..16437a8 100644
--- a/pages_goods/detail.vue
+++ b/pages_goods/detail.vue
@@ -1,760 +1,760 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("goods._components.ns-goods-promotion.l6.t0") }}
- { $lang("goods.detail.l18") } goodsSkuDetail.sale_num }}{{ goodsSkuDetail.unit }}
-
-
-
-
- {{ $lang("goods.detail.l23") }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ parseFloat(goodsSkuDetail.discount_price).toFixed(2).split('.')[0] }}
- .{{ parseFloat(goodsSkuDetail.discount_price).toFixed(2).split('.')[1] }}
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ parseFloat(goodsSkuDetail.member_price).toFixed(2).split('.')[0] }}
- .{{ parseFloat(goodsSkuDetail.member_price).toFixed(2).split('.')[1] }}
-
-
-
-
- {{ $lang("goods.detail.l55") }}
- {{ $lang('common.currency_symbol') }}
- {{ goodsSkuDetail.price }}
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ parseFloat(goodsSkuDetail.price).toFixed(2).split('.')[0] }}
- .{{ parseFloat(goodsSkuDetail.price).toFixed(2).split('.')[1] }}
-
-
-
-
- {{ $lang('common.currency_symbol') }}
-
- {{ goodsSkuDetail.price }}
- {{ goodsSkuDetail.market_price }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ isEnEnv ? goodsSkuDetail.en_goods_name : goodsSkuDetail.goods_name }}
-
- {{ goodsSkuDetail.introduction }}
-
-
- {{ goodsSkuDetail.label_name }}
-
-
- {{$lang('goods.detail.stock')}}: {{ goodsSkuDetail.stock +goodsSkuDetail.unit}}
- {{$lang('goods.list.sales')}}: {{ goodsSkuDetail.sale_num+goodsSkuDetail.unit }}
-
-
-
-
-
-
-
-
-
-
- {{$lang('fenxiao.list.commission')}}
-
-
- One {{$lang('fenxiao.list.commissiontext')}}
-
- ¥
- {{ parseFloat(goodsSkuDetail.fenxiao_detail.commission_money).toFixed(2).split('.')[0] }}
- .{{ parseFloat(goodsSkuDetail.fenxiao_detail.commission_money).toFixed(2).split('.')[1] }}
-
-
-
-
-
-
-
-
-
-
- {{$lang('goods.detail.spec')}}
-
- {{ item.spec_name }}/{{ item.spec_value_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("goods.detail.l220") }}
- {{ bundling[0].bl_name }}
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ goodsSkuDetail.price }}
-
-
- {{ isEnEnv ? goodsSkuDetail.en_goods_name : goodsSkuDetail.goods_name }}
-
-
-
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ item.price }}
-
-
- {{ item.sku_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 限时折扣
+ 已售{{ goodsSkuDetail.sale_num }}{{ goodsSkuDetail.unit }}
+
+
+
+
+ 距结束仅剩
+
+
+
+
+
+
+
+
+
+
+
+ {{ $lang('common.currencySymbol') }}
+ {{ parseFloat(goodsSkuDetail.discount_price).toFixed(2).split('.')[0] }}
+ .{{ parseFloat(goodsSkuDetail.discount_price).toFixed(2).split('.')[1] }}
+
+
+
+ {{ $lang('common.currencySymbol') }}
+ {{ parseFloat(goodsSkuDetail.member_price).toFixed(2).split('.')[0] }}
+ .{{ parseFloat(goodsSkuDetail.member_price).toFixed(2).split('.')[1] }}
+
+
+
+
+ 原价
+ {{ $lang('common.currencySymbol') }}
+ {{ goodsSkuDetail.price }}
+
+
+
+ {{ $lang('common.currencySymbol') }}
+ {{ parseFloat(goodsSkuDetail.price).toFixed(2).split('.')[0] }}
+ .{{ parseFloat(goodsSkuDetail.price).toFixed(2).split('.')[1] }}
+
+
+
+
+ {{ $lang('common.currencySymbol') }}
+
+ {{ goodsSkuDetail.price }}
+ {{ goodsSkuDetail.market_price }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ isEnEnv ? goodsSkuDetail.en_goods_name : goodsSkuDetail.goods_name }}
+
+ {{ goodsSkuDetail.introduction }}
+
+
+ {{ goodsSkuDetail.label_name }}
+
+
+ {{$lang('stock')}}: {{ goodsSkuDetail.stock +goodsSkuDetail.unit}}
+ {{$lang('sales')}}: {{ goodsSkuDetail.sale_num+goodsSkuDetail.unit }}
+
+
+
+
+
+
+
+
+
+
+ {{$lang('commission')}}
+
+
+ One {{$lang('commissiontext')}}
+
+ ¥
+ {{ parseFloat(goodsSkuDetail.fenxiao_detail.commission_money).toFixed(2).split('.')[0] }}
+ .{{ parseFloat(goodsSkuDetail.fenxiao_detail.commission_money).toFixed(2).split('.')[1] }}
+
+
+
+
+
+
+
+
+
+
+ {{$lang('spec')}}
+
+ {{ item.spec_name }}/{{ item.spec_value_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 组合套餐
+ {{ bundling[0].bl_name }}
+
+
+
+
+
+
+
+
+
+
+ {{ $lang('common.currencySymbol') }}
+ {{ goodsSkuDetail.price }}
+
+
+ {{ isEnEnv ? goodsSkuDetail.en_goods_name : goodsSkuDetail.goods_name }}
+
+
+
+
+
+
+
+ {{ $lang('common.currencySymbol') }}
+ {{ item.price }}
+
+
+ {{ item.sku_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_goods/list.vue b/pages_goods/list.vue
index 24c2de5..1e0f8b9 100644
--- a/pages_goods/list.vue
+++ b/pages_goods/list.vue
@@ -1,269 +1,269 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ langstatus ? $lang('goods.list.random') : $lang('goods.list.l19') }}
-
-
-
- {{ langstatus ? $lang('goods.list.sales') : $lang('goods.list.l23') }}
-
-
-
- {{ langstatus ? $lang('goods.list.price') : $lang('goods.list.l28') }}
-
-
-
-
-
-
-
-
-
- {{ langstatus ? $lang('goods.list.filter') : $lang('goods.list.l40') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ goodsTag(item) }}
-
-
-
-
-
-
-
-
-
- {{ isEnEnv ? item.en_goods_name : item.goods_name }}
-
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{
- parseFloat(showPrice(item)).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(showPrice(item)).toFixed(2).split('.')[1] }}
-
-
-
-
- 已售{{ item.sale_num }}{{ item.unit
- ? item.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
-
-
-
- {{ $lang('common.action.buy') }}
-
-
-
-
-
-
- {{ $lang('common.action.consult') }}
-
-
-
-
-
-
-
-
-
- {{ goodsTag(item) }}
-
-
-
-
-
-
-
- {{ isEnEnv ? item.en_goods_name : item.goods_name }}
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{
- parseFloat(showPrice(item)).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(showPrice(item)).toFixed(2).split('.')[1] }}
-
-
-
-
- 已售{{ item.sale_num }}{{ item.unit
- ? item.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
-
-
-
- {{ $lang('common.action.buy') }}
-
-
-
-
-
-
- {{ $lang('common.action.consult') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("goods.list.l40") }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("goods.list.l188") }}
-
-
- {{ $lang("diy.diy-category-item.l47.t0") }}
-
-
- {{
- item.category_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages_goods/public/js/cart.js b/pages_goods/public/js/cart.js
index c50e84b..35134f6 100644
--- a/pages_goods/public/js/cart.js
+++ b/pages_goods/public/js/cart.js
@@ -1,598 +1,598 @@
-import common from './common.js';
-
-export default {
- mixins: [common],
- data() {
- return {
- cartData: [], // 购物车
- checkAll: true,
- totalPrice: '0.00',
- totalCount: 0,
- isSub: false,
- invalidGoods: [], // 失效商品集合
- isIphoneX: false, //判断手机是否是iphoneX以上,
- isAction: false, // 是否操作删除
- goodsSkuDetail: null,
- discount: {},
- manjian: {},
- receiveSub: false,
- discountPopupShow: false,
- startX: '', // 触摸开始位置
- endX: '', // 触摸结束位置
- refresherTriggered: false, // 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发
- timeout: {}
- };
- },
- onLoad() {
- uni.hideTabBar();
- this.isIphoneX = this.$util.uniappIsIPhoneX();
- },
- onShow() {
- if (this.storeToken) {
- this.getCartData();
- } else {
- this.cartData = [];
- this.invalidGoods = [];
- this.calculationTotalPrice();
- }
- },
- onHide() {
- this.isAction = false;
- },
- onUnload() {
- if (!this.storeToken && this.$refs.login) this.$refs.login.cancelCompleteInfo();
- },
- onReady() {
- if (!this.storeToken) {
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- }
- },
- computed: {
- hasData() {
- return this.cartData.length > 0 || this.invalidGoods.length > 0;
- }
- },
- methods: {
- initNum(item) {
- let max_buy = item.max_buy > 0 && item.max_buy < item.stock ? item.max_buy : item.stock;
- max_buy = max_buy == 0 ? 1 : max_buy;
- if (item.num > max_buy) return max_buy;
- return item.num;
- },
- /**
- * 获取购物车数据
- */
- getCartData() {
- this.$api.sendRequest({
- url: '/api/cart/goodslists',
- success: res => {
- if (res.code >= 0) {
- if (res.data.length) this.handleCartData(res.data);
- else this.cartData = [];
- }
- this.refresherTriggered = false;
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- },
- fail: res => {
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- }
- });
- },
- /**
- * 处理购物车数据结构
- */
- handleCartData(data) {
- this.invalidGoods = [];
- this.cartData = [];
- var temp = {};
- data.forEach((item, index) => {
- if (item.goods_state == 1) {
- if (item.store_goods_status != undefined && item.store_goods_status != 1) {
- this.invalidGoods.push(item);
- } else if (item.min_buy > 0 && item.min_buy > item.stock) {
- // 如果最小限购超出库存则该商品失效
- this.invalidGoods.push(item);
- } else {
- item.checked = true;
- item.edit = false;
- if (temp['site_' + item.site_id] != undefined) {
- temp['site_' + item.site_id].cartList.push(item);
- } else {
- temp['site_' + item.site_id] = {
- siteId: item.site_id,
- siteName: item.site_name,
- edit: false,
- checked: true,
- cartList: [item]
- };
- }
- }
- } else {
- this.invalidGoods.push(item);
- }
- });
-
- this.cartData = [];
- Object.keys(temp).forEach(key => {
- this.cartData.push(temp[key]);
- });
- this.calculationTotalPrice();
- if (this.cartData.length) {
- this.cartData[0].cartList.forEach(v => {
- if (v.sku_spec_format) {
- v.sku_spec_format = JSON.parse(v.sku_spec_format);
- } else {
- v.sku_spec_format = [];
- }
- });
- }
- if (this.invalidGoods.length) {
- this.invalidGoods.forEach(v => {
- if (v.sku_spec_format) {
- v.sku_spec_format = JSON.parse(v.sku_spec_format);
- } else {
- v.sku_spec_format = [];
- }
- });
- }
- },
- /**
- * 单选
- * @param siteIndex
- * @param index
- */
- singleElection(siteIndex, index) {
- this.cartData[siteIndex].cartList[index].checked = !this.cartData[siteIndex].cartList[index].checked;
- this.calculationTotalPrice();
- },
- /**
- * 店铺全选
- * @param checked
- * @param index
- */
- siteAllElection(checked, index) {
- this.cartData[index].checked = checked;
- this.cartData[index].cartList.forEach(item => {
- item.checked = checked;
- });
- this.calculationTotalPrice();
- },
- /**
- * 全选
- */
- allElection(checked) {
- if (typeof checked == 'boolean') {
- this.checkAll = checked;
- } else {
- this.checkAll = !this.checkAll;
- }
- if (this.cartData.length) {
- this.cartData.forEach(siteItem => {
- siteItem.checked = this.checkAll;
- siteItem.cartList.forEach(item => {
- item.checked = this.checkAll;
- });
- });
- }
- this.calculationTotalPrice();
- },
- /**
- * 计算购物车总价
- */
- calculationTotalPrice() {
- if (this.cartData.length) {
- let totalPrice = 0,
- totalCount = 0,
- siteAllElectionCount = 0;
-
- this.cartData.forEach(siteItem => {
- let siteGoodsCount = 0;
- siteItem.cartList.forEach(item => {
- if (item.checked) {
- siteGoodsCount += 1;
- totalCount += parseInt(item.num);
- if (Number(item.member_price) > 0 && Number(item.member_price) < Number(item.discount_price)) {
- totalPrice += item.member_price * item.num;
- } else {
- totalPrice += item.discount_price * item.num;
- }
- }
- });
- if (siteItem.cartList.length == siteGoodsCount) {
- siteItem.checked = true;
- siteAllElectionCount += 1;
- } else {
- siteItem.checked = false;
- }
- });
- this.totalPrice = totalPrice.toFixed(2);
- this.totalCount = totalCount;
- this.checkAll = this.cartData.length == siteAllElectionCount;
- } else {
- this.totalPrice = '0.00';
- this.totalCount = 0;
- }
- this.discountCalculate();
- },
- /**
- * 删除购物车
- * @param tag
- * @param siteIndex
- * @param cartIndex
- */
- deleteCart(tag, siteIndex, cartIndex) {
- var cart_id = [];
- if (tag == 'all') {
- for (let i = 0; i < this.cartData.length; i++) {
- for (let j = 0; j < this.cartData[i].cartList.length; j++) {
- if (this.cartData[i].cartList[j].checked) cart_id.push(this.cartData[i].cartList[j].cart_id);
- }
- }
- } else {
- cart_id.push(this.cartData[siteIndex].cartList[cartIndex].cart_id);
- }
- if (cart_id.length == 0) {
- this.$util.showToast({
- title: $lang('goods.public.js.cart.l236')
- });
- return;
- }
-
- uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: cart_id.length > 1 ? '确定要删除这些商品吗?' : $lang('goods.public.js.cart.l243'),
- success: res => {
- if (res.confirm) {
- cart_id = cart_id.toString();
-
- this.$api.sendRequest({
- url: '/api/cart/delete',
- data: {
- cart_id
- },
- success: res => {
- if (res.code >= 0) {
-
- if (tag == 'all') {
- // 全选
- for (var i = 0; i < this.cartData.length; i++) {
- for (var j = 0; j < this.cartData[i].cartList.length; j++) {
- var item = this.cartData[i].cartList[j];
- if (item.checked) {
- this.cartData[i].cartList.splice(j, 1);
- j = -1;
- }
- }
- if (this.cartData[i].cartList.length == 0) {
- this.cartData.splice(i, 1);
- i = -1;
- }
- }
-
- this.$store.dispatch('emptyCart');
- } else {
- let item = this.cartData[siteIndex].cartList;
- let goods_id = item[cartIndex].goods_id;
- let sku_id = item[cartIndex].sku_id;
-
- delete this.cartList['goods_' + goods_id]['sku_' + sku_id];
- if (Object.keys(this.cartList['goods_' + goods_id]).length == 2) {
- delete this.cartList['goods_' + goods_id];
- }
- this.$store.dispatch('cartCalculate');
-
- item.splice(cartIndex, 1);
- if (item.length == 0) this.cartData.splice(siteIndex, 1);
-
- }
-
- this.resetEditStatus();
- this.calculationTotalPrice();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- }
- }
- });
- },
- /**
- * 变更购物车数量
- * @param {Object} params
- */
- cartNumChange(num, params) {
- if (isNaN(num)) return;
- let data = this.cartData[params.siteIndex].cartList[params.cartIndex],
- max_buy = data.is_limit && data.max_buy > 0 && data.max_buy < data.stock ? data.max_buy : data.stock,
- min_buy = data.min_buy > 0 ? data.min_buy : 1;
- if (num > max_buy) num = max_buy;
- if (num < min_buy) num = min_buy;
-
- let cartId = this.cartData[params.siteIndex].cartList[params.cartIndex].cart_id
-
- if (this.timeout[cartId]) clearTimeout(this.timeout[cartId])
-
- this.timeout[cartId] = setTimeout(() => {
- this.$api.sendRequest({
- url: '/api/cart/edit',
- data: {
- num,
- cart_id: cartId
- },
- success: res => {
- if (res.code >= 0) {
- let item = this.cartData[params.siteIndex].cartList[params.cartIndex];
- let goods_id = item.goods_id;
- let sku_id = item.sku_id;
- item.num = num;
-
- this.cartList['goods_' + goods_id]['sku_' + sku_id].num = num;
- this.$store.dispatch('cartCalculate');
- this.resetEditStatus();
-
- this.calculationTotalPrice();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- }, 800)
- },
- /**
- * 结算
- */
- settlement() {
- if (this.totalCount > 0) {
- let cart_ids = [];
- this.cartData.forEach(siteItem => {
- siteItem.cartList.forEach(item => {
- if (item.checked) {
- cart_ids.push(item.cart_id);
- }
- });
- });
-
- if (this.discount.coupon_info && this.discount.coupon_info.receive_type == 'wait') this.receiveCoupon(
- this.discount.coupon_info.coupon_type_id, false);
-
- if (this.isSub) return;
- this.isSub = true;
-
- uni.removeStorageSync('delivery');
- uni.setStorage({
- key: 'orderCreateData',
- data: {
- cart_ids: cart_ids.toString()
- },
- success: () => {
- this.$util.redirectTo('/pages_order/payment');
- this.isSub = false;
- }
- });
- }
- },
- /**
- * 清空失效商品
- */
- clearInvalidGoods() {
- uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('goods.public.js.cart.l385'),
- success: res => {
- if (res.confirm) {
- var cart_ids = [];
- this.invalidGoods.forEach(goodsItem => {
- cart_ids.push(goodsItem.cart_id);
- });
- if (cart_ids.length) {
- this.$api.sendRequest({
- url: '/api/cart/delete',
- data: {
- cart_id: cart_ids.toString()
- },
- success: res => {
- if (res.code >= 0) {
- this.invalidGoods = [];
- this.refreshCartNumber();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- }
- }
- }
- });
- },
- imageError(siteIndex, cartIndex) {
- this.cartData[siteIndex].cartList[cartIndex].sku_image = this.$util.getDefaultImage().goods;
- this.$forceUpdate();
- },
- toGoodsDetail(item) {
- this.$util.redirectTo('/pages_goods/detail', {
- sku_id: item.sku_id
- });
- },
- // 购物车数量
- refreshCartNumber() {
- if (this.storeToken) {
- this.$store.dispatch('getCartNumber');
- this.resetEditStatus();
- }
- },
- goodsLimit(event, params) {
- let data = this.cartData[params.siteIndex].cartList[params.cartIndex];
- if (event.type == 'plus') {
- if (data.max_buy > 0 && data.max_buy < data.stock) {
- this.$util.showToast({
- title: $lang('common.ns-goods-sku.ns-goods-sku-category.l278.t0') + data.max_buy + $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0')
- });
- } else {
- this.$util.showToast({
- title: $lang('common.ns-goods-sku.ns-goods-sku-category.l264.t0')
- });
- }
- } else {
- // 数量减至最少时,则删除商品
- this.deleteCart('single', params.siteIndex, params.cartIndex);
- // this.$util.showToast({
- // title: '最少购买' + event.value + '件'
- // });
- }
- },
- // 重置编辑状态
- resetEditStatus() {
- if (this.cartData.length) {
- for (var i = 0; i < this.cartData[0].cartList.length; i++) {
- this.cartData[0].cartList[i].edit = false;
- }
- this.$forceUpdate();
- }
- },
- changeAction() {
- this.isAction = !this.isAction;
- this.resetEditStatus();
- },
- selectSku(data) {
- let goodsSkuDetail = this.$util.deepClone(data);
- if (goodsSkuDetail.goods_spec_format) goodsSkuDetail.goods_spec_format = JSON.parse(goodsSkuDetail.goods_spec_format);
- this.goodsSkuDetail = goodsSkuDetail;
-
- this.$nextTick(() => {
- this.$refs.selectSku.show('confirm', (sku_id, num) => {
- this.$api.sendRequest({
- url: '/api/cart/editcartsku',
- data: {
- cart_id: data.cart_id,
- sku_id: sku_id,
- num: num
- },
- success: res => {
- if (res.code >= 0) {
- this.invalidGoods = [];
- this.getCartData();
- this.refreshCartNumber();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- }, this.goodsSkuDetail);
- })
- },
- toggleDiscountPopup() {
- if (this.$refs.discountPopup.showPopup) this.$refs.discountPopup.close();
- else this.$refs.discountPopup.open();
- this.discountPopupShow = !this.discountPopupShow;
- },
- /**
- * 优惠信息计算
- */
- discountCalculate() {
- if (this.cartData.length == 0) return;
- let skuIds = [];
- this.cartData.forEach(siteItem => {
- siteItem.cartList.forEach(item => {
- if (item.checked) {
- skuIds.push({
- sku_id: item.sku_id,
- num: item.num
- });
- }
- });
- });
- if (skuIds.length == 0) {
- this.discount = {};
- return;
- }
-
- this.$api.sendRequest({
- url: '/api/cartcalculate/calculate',
- data: {
- sku_ids: JSON.stringify(skuIds)
- },
- success: res => {
- if (res.code >= 0 && res.data && (res.data.coupon_money > 0 || res.data.promotion_money > 0)) {
- this.discount = res.data;
- let manjian = {};
- res.data.goods_list.forEach(item => {
- if (item.promotion && item.promotion.manjian) {
- manjian['sku_' + item.sku_id] = JSON.parse(item.promotion.manjian.rule_json);
- }
- })
- Object.assign(this.manjian, manjian);
- this.refresherTriggered = false;
- } else {
- this.discount = {};
- }
- }
- })
- },
- /**
- * 领取优惠券
- * tips 失败时是否提示
- * @param {Object} couponTypeId
- */
- receiveCoupon(couponTypeId, tips = true) {
- if (this.receiveSub) return;
- this.receiveSub = true;
- this.$api.sendRequest({
- url: '/coupon/api/coupon/receive',
- data: {
- coupon_type_id: couponTypeId,
- get_type: 2 //获取方式:1订单2.直接领取3.活动领取
- },
- success: res => {
- if (res.code == 0) {
- this.$set(this.discount.coupon_info, 'receive_type', '');
- } else {
- if (tips) this.$util.showToast({
- title: res.message
- });
- this.receiveSub = false;
- }
- }
- });
- },
- // 手指触摸事件 用于菜单左滑
- touchS(e) {
- this.startX = e.touches[0].clientX;
- },
- touchE(e, cartIndex) {
- this.endX = e.changedTouches[0].clientX;
- // 触摸开始到停止的差值,小于0左滑,大于0右滑
- var disX = this.startX - this.endX;
- // cartIndex.edit = disX > 50;
- if (disX > 50) cartIndex.edit = true;
- else if (disX < 0) cartIndex.edit = false;
- this.$forceUpdate();
- },
- moneyFormat(money) {
- if (isNaN(parseFloat(money))) return money;
- return parseFloat(money).toFixed(2);
- },
- refreshSkuDetail(goodsSkuDetail) {
- this.goodsSkuDetail = goodsSkuDetail;
- },
- onRefresh(e) {
- this.refresherTriggered = true;
- if (this.storeToken) {
- this.getCartData();
- this.refreshCartNumber();
- } else {
- this.cartData = [];
- this.invalidGoods = [];
- this.calculationTotalPrice();
- }
- }
- },
+import common from './common.js';
+
+export default {
+ mixins: [common],
+ data() {
+ return {
+ cartData: [], // 购物车
+ checkAll: true,
+ totalPrice: '0.00',
+ totalCount: 0,
+ isSub: false,
+ invalidGoods: [], // 失效商品集合
+ isIphoneX: false, //判断手机是否是iphoneX以上,
+ isAction: false, // 是否操作删除
+ goodsSkuDetail: null,
+ discount: {},
+ manjian: {},
+ receiveSub: false,
+ discountPopupShow: false,
+ startX: '', // 触摸开始位置
+ endX: '', // 触摸结束位置
+ refresherTriggered: false, // 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发
+ timeout: {}
+ };
+ },
+ onLoad() {
+ uni.hideTabBar();
+ this.isIphoneX = this.$util.uniappIsIPhoneX();
+ },
+ onShow() {
+ if (this.storeToken) {
+ this.getCartData();
+ } else {
+ this.cartData = [];
+ this.invalidGoods = [];
+ this.calculationTotalPrice();
+ }
+ },
+ onHide() {
+ this.isAction = false;
+ },
+ onUnload() {
+ if (!this.storeToken && this.$refs.login) this.$refs.login.cancelCompleteInfo();
+ },
+ onReady() {
+ if (!this.storeToken) {
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+ }
+ },
+ computed: {
+ hasData() {
+ return this.cartData.length > 0 || this.invalidGoods.length > 0;
+ }
+ },
+ methods: {
+ initNum(item) {
+ let max_buy = item.max_buy > 0 && item.max_buy < item.stock ? item.max_buy : item.stock;
+ max_buy = max_buy == 0 ? 1 : max_buy;
+ if (item.num > max_buy) return max_buy;
+ return item.num;
+ },
+ /**
+ * 获取购物车数据
+ */
+ getCartData() {
+ this.$api.sendRequest({
+ url: '/api/cart/goodslists',
+ success: res => {
+ if (res.code >= 0) {
+ if (res.data.length) this.handleCartData(res.data);
+ else this.cartData = [];
+ }
+ this.refresherTriggered = false;
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+ },
+ fail: res => {
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+ }
+ });
+ },
+ /**
+ * 处理购物车数据结构
+ */
+ handleCartData(data) {
+ this.invalidGoods = [];
+ this.cartData = [];
+ var temp = {};
+ data.forEach((item, index) => {
+ if (item.goods_state == 1) {
+ if (item.store_goods_status != undefined && item.store_goods_status != 1) {
+ this.invalidGoods.push(item);
+ } else if (item.min_buy > 0 && item.min_buy > item.stock) {
+ // 如果最小限购超出库存则该商品失效
+ this.invalidGoods.push(item);
+ } else {
+ item.checked = true;
+ item.edit = false;
+ if (temp['site_' + item.site_id] != undefined) {
+ temp['site_' + item.site_id].cartList.push(item);
+ } else {
+ temp['site_' + item.site_id] = {
+ siteId: item.site_id,
+ siteName: item.site_name,
+ edit: false,
+ checked: true,
+ cartList: [item]
+ };
+ }
+ }
+ } else {
+ this.invalidGoods.push(item);
+ }
+ });
+
+ this.cartData = [];
+ Object.keys(temp).forEach(key => {
+ this.cartData.push(temp[key]);
+ });
+ this.calculationTotalPrice();
+ if (this.cartData.length) {
+ this.cartData[0].cartList.forEach(v => {
+ if (v.sku_spec_format) {
+ v.sku_spec_format = JSON.parse(v.sku_spec_format);
+ } else {
+ v.sku_spec_format = [];
+ }
+ });
+ }
+ if (this.invalidGoods.length) {
+ this.invalidGoods.forEach(v => {
+ if (v.sku_spec_format) {
+ v.sku_spec_format = JSON.parse(v.sku_spec_format);
+ } else {
+ v.sku_spec_format = [];
+ }
+ });
+ }
+ },
+ /**
+ * 单选
+ * @param siteIndex
+ * @param index
+ */
+ singleElection(siteIndex, index) {
+ this.cartData[siteIndex].cartList[index].checked = !this.cartData[siteIndex].cartList[index].checked;
+ this.calculationTotalPrice();
+ },
+ /**
+ * 店铺全选
+ * @param checked
+ * @param index
+ */
+ siteAllElection(checked, index) {
+ this.cartData[index].checked = checked;
+ this.cartData[index].cartList.forEach(item => {
+ item.checked = checked;
+ });
+ this.calculationTotalPrice();
+ },
+ /**
+ * 全选
+ */
+ allElection(checked) {
+ if (typeof checked == 'boolean') {
+ this.checkAll = checked;
+ } else {
+ this.checkAll = !this.checkAll;
+ }
+ if (this.cartData.length) {
+ this.cartData.forEach(siteItem => {
+ siteItem.checked = this.checkAll;
+ siteItem.cartList.forEach(item => {
+ item.checked = this.checkAll;
+ });
+ });
+ }
+ this.calculationTotalPrice();
+ },
+ /**
+ * 计算购物车总价
+ */
+ calculationTotalPrice() {
+ if (this.cartData.length) {
+ let totalPrice = 0,
+ totalCount = 0,
+ siteAllElectionCount = 0;
+
+ this.cartData.forEach(siteItem => {
+ let siteGoodsCount = 0;
+ siteItem.cartList.forEach(item => {
+ if (item.checked) {
+ siteGoodsCount += 1;
+ totalCount += parseInt(item.num);
+ if (Number(item.member_price) > 0 && Number(item.member_price) < Number(item.discount_price)) {
+ totalPrice += item.member_price * item.num;
+ } else {
+ totalPrice += item.discount_price * item.num;
+ }
+ }
+ });
+ if (siteItem.cartList.length == siteGoodsCount) {
+ siteItem.checked = true;
+ siteAllElectionCount += 1;
+ } else {
+ siteItem.checked = false;
+ }
+ });
+ this.totalPrice = totalPrice.toFixed(2);
+ this.totalCount = totalCount;
+ this.checkAll = this.cartData.length == siteAllElectionCount;
+ } else {
+ this.totalPrice = '0.00';
+ this.totalCount = 0;
+ }
+ this.discountCalculate();
+ },
+ /**
+ * 删除购物车
+ * @param tag
+ * @param siteIndex
+ * @param cartIndex
+ */
+ deleteCart(tag, siteIndex, cartIndex) {
+ var cart_id = [];
+ if (tag == 'all') {
+ for (let i = 0; i < this.cartData.length; i++) {
+ for (let j = 0; j < this.cartData[i].cartList.length; j++) {
+ if (this.cartData[i].cartList[j].checked) cart_id.push(this.cartData[i].cartList[j].cart_id);
+ }
+ }
+ } else {
+ cart_id.push(this.cartData[siteIndex].cartList[cartIndex].cart_id);
+ }
+ if (cart_id.length == 0) {
+ this.$util.showToast({
+ title: '请选择要删除的商品'
+ });
+ return;
+ }
+
+ uni.showModal({
+ title: '提示',
+ content: cart_id.length > 1 ? '确定要删除这些商品吗?' : '确定要删除该商品吗?',
+ success: res => {
+ if (res.confirm) {
+ cart_id = cart_id.toString();
+
+ this.$api.sendRequest({
+ url: '/api/cart/delete',
+ data: {
+ cart_id
+ },
+ success: res => {
+ if (res.code >= 0) {
+
+ if (tag == 'all') {
+ // 全选
+ for (var i = 0; i < this.cartData.length; i++) {
+ for (var j = 0; j < this.cartData[i].cartList.length; j++) {
+ var item = this.cartData[i].cartList[j];
+ if (item.checked) {
+ this.cartData[i].cartList.splice(j, 1);
+ j = -1;
+ }
+ }
+ if (this.cartData[i].cartList.length == 0) {
+ this.cartData.splice(i, 1);
+ i = -1;
+ }
+ }
+
+ this.$store.dispatch('emptyCart');
+ } else {
+ let item = this.cartData[siteIndex].cartList;
+ let goods_id = item[cartIndex].goods_id;
+ let sku_id = item[cartIndex].sku_id;
+
+ delete this.cartList['goods_' + goods_id]['sku_' + sku_id];
+ if (Object.keys(this.cartList['goods_' + goods_id]).length == 2) {
+ delete this.cartList['goods_' + goods_id];
+ }
+ this.$store.dispatch('cartCalculate');
+
+ item.splice(cartIndex, 1);
+ if (item.length == 0) this.cartData.splice(siteIndex, 1);
+
+ }
+
+ this.resetEditStatus();
+ this.calculationTotalPrice();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ }
+ }
+ });
+ },
+ /**
+ * 变更购物车数量
+ * @param {Object} params
+ */
+ cartNumChange(num, params) {
+ if (isNaN(num)) return;
+ let data = this.cartData[params.siteIndex].cartList[params.cartIndex],
+ max_buy = data.is_limit && data.max_buy > 0 && data.max_buy < data.stock ? data.max_buy : data.stock,
+ min_buy = data.min_buy > 0 ? data.min_buy : 1;
+ if (num > max_buy) num = max_buy;
+ if (num < min_buy) num = min_buy;
+
+ let cartId = this.cartData[params.siteIndex].cartList[params.cartIndex].cart_id
+
+ if (this.timeout[cartId]) clearTimeout(this.timeout[cartId])
+
+ this.timeout[cartId] = setTimeout(() => {
+ this.$api.sendRequest({
+ url: '/api/cart/edit',
+ data: {
+ num,
+ cart_id: cartId
+ },
+ success: res => {
+ if (res.code >= 0) {
+ let item = this.cartData[params.siteIndex].cartList[params.cartIndex];
+ let goods_id = item.goods_id;
+ let sku_id = item.sku_id;
+ item.num = num;
+
+ this.cartList['goods_' + goods_id]['sku_' + sku_id].num = num;
+ this.$store.dispatch('cartCalculate');
+ this.resetEditStatus();
+
+ this.calculationTotalPrice();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ }, 800)
+ },
+ /**
+ * 结算
+ */
+ settlement() {
+ if (this.totalCount > 0) {
+ let cart_ids = [];
+ this.cartData.forEach(siteItem => {
+ siteItem.cartList.forEach(item => {
+ if (item.checked) {
+ cart_ids.push(item.cart_id);
+ }
+ });
+ });
+
+ if (this.discount.coupon_info && this.discount.coupon_info.receive_type == 'wait') this.receiveCoupon(
+ this.discount.coupon_info.coupon_type_id, false);
+
+ if (this.isSub) return;
+ this.isSub = true;
+
+ uni.removeStorageSync('delivery');
+ uni.setStorage({
+ key: 'orderCreateData',
+ data: {
+ cart_ids: cart_ids.toString()
+ },
+ success: () => {
+ this.$util.redirectTo('/pages_order/payment');
+ this.isSub = false;
+ }
+ });
+ }
+ },
+ /**
+ * 清空失效商品
+ */
+ clearInvalidGoods() {
+ uni.showModal({
+ title: '提示',
+ content: '确定要清空这些商品吗?',
+ success: res => {
+ if (res.confirm) {
+ var cart_ids = [];
+ this.invalidGoods.forEach(goodsItem => {
+ cart_ids.push(goodsItem.cart_id);
+ });
+ if (cart_ids.length) {
+ this.$api.sendRequest({
+ url: '/api/cart/delete',
+ data: {
+ cart_id: cart_ids.toString()
+ },
+ success: res => {
+ if (res.code >= 0) {
+ this.invalidGoods = [];
+ this.refreshCartNumber();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ }
+ }
+ }
+ });
+ },
+ imageError(siteIndex, cartIndex) {
+ this.cartData[siteIndex].cartList[cartIndex].sku_image = this.$util.getDefaultImage().goods;
+ this.$forceUpdate();
+ },
+ toGoodsDetail(item) {
+ this.$util.redirectTo('/pages_goods/detail', {
+ sku_id: item.sku_id
+ });
+ },
+ // 购物车数量
+ refreshCartNumber() {
+ if (this.storeToken) {
+ this.$store.dispatch('getCartNumber');
+ this.resetEditStatus();
+ }
+ },
+ goodsLimit(event, params) {
+ let data = this.cartData[params.siteIndex].cartList[params.cartIndex];
+ if (event.type == 'plus') {
+ if (data.max_buy > 0 && data.max_buy < data.stock) {
+ this.$util.showToast({
+ title: '该商品每人限购' + data.max_buy + '件'
+ });
+ } else {
+ this.$util.showToast({
+ title: '库存不足'
+ });
+ }
+ } else {
+ // 数量减至最少时,则删除商品
+ this.deleteCart('single', params.siteIndex, params.cartIndex);
+ // this.$util.showToast({
+ // title: '最少购买' + event.value + '件'
+ // });
+ }
+ },
+ // 重置编辑状态
+ resetEditStatus() {
+ if (this.cartData.length) {
+ for (var i = 0; i < this.cartData[0].cartList.length; i++) {
+ this.cartData[0].cartList[i].edit = false;
+ }
+ this.$forceUpdate();
+ }
+ },
+ changeAction() {
+ this.isAction = !this.isAction;
+ this.resetEditStatus();
+ },
+ selectSku(data) {
+ let goodsSkuDetail = this.$util.deepClone(data);
+ if (goodsSkuDetail.goods_spec_format) goodsSkuDetail.goods_spec_format = JSON.parse(goodsSkuDetail.goods_spec_format);
+ this.goodsSkuDetail = goodsSkuDetail;
+
+ this.$nextTick(() => {
+ this.$refs.selectSku.show('confirm', (sku_id, num) => {
+ this.$api.sendRequest({
+ url: '/api/cart/editcartsku',
+ data: {
+ cart_id: data.cart_id,
+ sku_id: sku_id,
+ num: num
+ },
+ success: res => {
+ if (res.code >= 0) {
+ this.invalidGoods = [];
+ this.getCartData();
+ this.refreshCartNumber();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ }, this.goodsSkuDetail);
+ })
+ },
+ toggleDiscountPopup() {
+ if (this.$refs.discountPopup.showPopup) this.$refs.discountPopup.close();
+ else this.$refs.discountPopup.open();
+ this.discountPopupShow = !this.discountPopupShow;
+ },
+ /**
+ * 优惠信息计算
+ */
+ discountCalculate() {
+ if (this.cartData.length == 0) return;
+ let skuIds = [];
+ this.cartData.forEach(siteItem => {
+ siteItem.cartList.forEach(item => {
+ if (item.checked) {
+ skuIds.push({
+ sku_id: item.sku_id,
+ num: item.num
+ });
+ }
+ });
+ });
+ if (skuIds.length == 0) {
+ this.discount = {};
+ return;
+ }
+
+ this.$api.sendRequest({
+ url: '/api/cartcalculate/calculate',
+ data: {
+ sku_ids: JSON.stringify(skuIds)
+ },
+ success: res => {
+ if (res.code >= 0 && res.data && (res.data.coupon_money > 0 || res.data.promotion_money > 0)) {
+ this.discount = res.data;
+ let manjian = {};
+ res.data.goods_list.forEach(item => {
+ if (item.promotion && item.promotion.manjian) {
+ manjian['sku_' + item.sku_id] = JSON.parse(item.promotion.manjian.rule_json);
+ }
+ })
+ Object.assign(this.manjian, manjian);
+ this.refresherTriggered = false;
+ } else {
+ this.discount = {};
+ }
+ }
+ })
+ },
+ /**
+ * 领取优惠券
+ * tips 失败时是否提示
+ * @param {Object} couponTypeId
+ */
+ receiveCoupon(couponTypeId, tips = true) {
+ if (this.receiveSub) return;
+ this.receiveSub = true;
+ this.$api.sendRequest({
+ url: '/coupon/api/coupon/receive',
+ data: {
+ coupon_type_id: couponTypeId,
+ get_type: 2 //获取方式:1订单2.直接领取3.活动领取
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.$set(this.discount.coupon_info, 'receive_type', '');
+ } else {
+ if (tips) this.$util.showToast({
+ title: res.message
+ });
+ this.receiveSub = false;
+ }
+ }
+ });
+ },
+ // 手指触摸事件 用于菜单左滑
+ touchS(e) {
+ this.startX = e.touches[0].clientX;
+ },
+ touchE(e, cartIndex) {
+ this.endX = e.changedTouches[0].clientX;
+ // 触摸开始到停止的差值,小于0左滑,大于0右滑
+ var disX = this.startX - this.endX;
+ // cartIndex.edit = disX > 50;
+ if (disX > 50) cartIndex.edit = true;
+ else if (disX < 0) cartIndex.edit = false;
+ this.$forceUpdate();
+ },
+ moneyFormat(money) {
+ if (isNaN(parseFloat(money))) return money;
+ return parseFloat(money).toFixed(2);
+ },
+ refreshSkuDetail(goodsSkuDetail) {
+ this.goodsSkuDetail = goodsSkuDetail;
+ },
+ onRefresh(e) {
+ this.refresherTriggered = true;
+ if (this.storeToken) {
+ this.getCartData();
+ this.refreshCartNumber();
+ } else {
+ this.cartData = [];
+ this.invalidGoods = [];
+ this.calculationTotalPrice();
+ }
+ }
+ },
}
\ No newline at end of file
diff --git a/pages_goods/public/js/detail.js b/pages_goods/public/js/detail.js
index 76ab684..787a955 100644
--- a/pages_goods/public/js/detail.js
+++ b/pages_goods/public/js/detail.js
@@ -1,525 +1,525 @@
-export default {
- data() {
- return {
- goodsRoute: '/pages_goods/detail',
- couponList: [], //优惠券列表
- couponBtnSwitch: false, //获取优惠券防止重复提交
-
- posterApi: '/api/goods/poster',
-
- //满减活动
- manjian: {
- type: 0,
- manjian_name: "",
- rule_json: null
- },
- //组合套餐
- bundlingType: false,
- bundling: [{
- bundling_goods: {
- bl_name: '',
- sku_image: ''
- }
- }],
-
- membercard: null, // 会员卡信息
- hackReset: true,
- cardOff: false,
- informationform:[]//留言表单
-
- }
- },
- computed: {
- showDiscount() {
- var flag = false;
- if (
- this.preview == 0 &&
- this.addonIsExist.discount &&
- this.goodsSkuDetail.promotion_type == 1 &&
- this.goodsSkuDetail.discountTimeMachine &&
- (!this.goodsSkuDetail.member_price || (this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) > Number(this.goodsSkuDetail.discount_price))
- )
- ) {
- flag = true;
- }
- return flag;
- },
- memberCardDiscount() {
- let discount = 0,
- showPrice = this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) < Number(this.goodsSkuDetail.discount_price) ? this.goodsSkuDetail.member_price : this.goodsSkuDetail.discount_price;
- if (this.membercard && this.membercard.member_price > 0 && (parseFloat(showPrice) > parseFloat(this.membercard.member_price))) {
- discount = parseFloat(showPrice) - parseFloat(this.membercard.member_price);
- }
- return discount.toFixed(2);
- },
- //表单高度
- FormHeight(){
- let height = 48;
- if (this.goodsForm && this.goodsForm.length) {
- height += this.goodsForm.length * 5;
- }
- height += 'vh';
- return height;
- }
- },
- onLoad(data) {
-
- // #ifdef MP-ALIPAY
- let options = my.getLaunchOptionsSync();
- options.query && Object.assign(data, options.query)
- // #endif
-
- this.skuId = data.sku_id || 0;
- this.goodsId = data.goods_id || 0;
-
- // 小程序扫码进入
- if (data.scene) {
- var sceneParams = decodeURIComponent(data.scene);
- sceneParams = sceneParams.split('&');
- if (sceneParams.length) {
- sceneParams.forEach(item => {
- if (item.indexOf('goods_id') != -1) this.goodsId = item.split('-')[1];
- });
- }
- }
-
- // #ifdef MP-WEIXIN
- this.getShareImg();
- // #endif
- },
- async onShow() {
- //同步获取商品详情
- await this.getGoodsSkuDetail();
- },
- onHide() {
- this.couponBtnSwitch = false;
- },
- methods: {
- //拨打电话
- phoneClick(mobile){
- uni.makePhoneCall({
- phoneNumber: mobile+'',
- success(){},
- fail(){}
- })
- },
- setSkuId(val) {
- if (val) {
- this.skuId = val;
- this.getBundling();
- }
- },
- // 获取商品详情
- async getGoodsSkuDetail() {
- let res = await this.$api.sendRequest({
- url: '/api/goodssku/detail',
- async: false,
- data: {
- sku_id: this.skuId,
- goods_id: this.goodsId,
- }
- });
- let data = res.data;
- if (data.goods_sku_detail != null) {
- if (data.goods_sku_detail.promotion_type == 'presale' && data.goods_sku_detail.presale_id) {
- this.$util.redirectTo('/pages_promotion/presale/detail', {
- id: data.goods_sku_detail.presale_id,
- sku_id: this.skuId
- }, 'reLaunch');
- return;
- }
- if(uni.getStorageSync('lang') == 'en-us') data.goods_sku_detail.goods_name = data.goods_sku_detail.en_goods_name
-
- this.goodsSkuDetail = data.goods_sku_detail;
- if (!this.skuId) this.skuId = this.goodsSkuDetail.sku_id;
- if (!this.goodsId) this.goodsId = this.goodsSkuDetail.goods_id;
- // 分享参数、链接
- this.shareQuery = 'goods_id=' + this.goodsSkuDetail.goods_id;
- this.shareUrl = this.goodsRoute + '?' + this.shareQuery;
-
- // 在线客服聊天参数
- this.chatRoomParams = {
- sku_id: this.goodsSkuDetail.sku_id
- };
- let typeId = this.goodsSkuDetail.goods_promotion[0];
- if (typeId) {
- // 限时折扣
- if (typeId.discount_id) {
- this.chatRoomParams.type = 'discount'
- this.chatRoomParams.type_id = typeId.discount_id
- }
- }
-
- // 海报参数
- this.posterParams = {
- goods_id: this.goodsId
- };
-
- // 处理商品数据
- this.handleGoodsSkuData();
-
- // 限时折扣
- if (this.goodsSkuDetail.promotion_type == 1 && this.addonIsExist.discount) {
- //检测倒计时
- if ((this.goodsSkuDetail.end_time - res.timestamp) > 0) {
- this.goodsSkuDetail.discountTimeMachine = this.$util.countDown(this.goodsSkuDetail.end_time - res.timestamp);
- } else {
- this.goodsSkuDetail.promotion_type = 0;
- }
- }
- if (this.goodsSkuDetail.promotion_type == 1 && this.goodsSkuDetail.discountTimeMachine) {
- if (this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) <= Number(this.goodsSkuDetail.discount_price)) {
- this.goodsSkuDetail.show_price = this.goodsSkuDetail.member_price;
- } else {
- this.goodsSkuDetail.show_price = this.goodsSkuDetail.discount_price;
- }
- } else {
- if (this.goodsSkuDetail.member_price > 0) {
- this.goodsSkuDetail.show_price = this.goodsSkuDetail.member_price;
- } else {
- this.goodsSkuDetail.show_price = this.goodsSkuDetail.price;
- }
- }
-
- // 满减
- if (this.goodsSkuDetail.manjian) {
- this.getManjian(this.goodsSkuDetail.manjian);
- }
-
- // 会员卡
- if (this.goodsSkuDetail.membercard) {
- this.membercard = this.goodsSkuDetail.membercard;
- }
-
- // 优惠券
- if (this.goodsSkuDetail.coupon_list) {
- this.couponList = this.goodsSkuDetail.coupon_list;
- this.couponList.forEach(v => {
- if (v.count == v.lead_count) v.useState = 2;
- else if (v.max_fetch != 0 && v.member_coupon_num && v.member_coupon_num >= v.max_fetch) v.useState = 1;
- else v.useState = 0;
- });
- this.couponList = this.couponList.sort(this.sortBy('useState'))
- }
-
- // 组合套餐
- // if (this.goodsSkuDetail.bundling_list) {
- // this.handleBundlingData(this.goodsSkuDetail.bundling_list);
- // }
-
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
-
- } else {
- this.$util.redirectTo('/pages_tool/goods/not_exist', {}, 'redirectTo');
- }
- },
- choiceSku() {
- this.$refs.goodsSku.show("buy_now", () => {
- this.$store.dispatch('getCartNumber');
- });
- },
-
- //商品留言打开
- showinformation(){
- this.informationform = this.goodsSkuDetail.goods_form
- this.$refs.informationPopup.open();
- },
- //商品留言关闭
- closeinformationPopup(){
- this.$refs.informationPopup.close();
- },
- //保存商品留言
- saveubfirnation(){
- //缺少
- if (!this.$refs.form.verify()) return;
-
- // uni.setStorageSync('goodFormData', {
- // goods_id: this.goodsSkuDetail.goods_id,
- // form_data: this.$refs.form.formData
- // });
- this.$api.sendRequest({
- url: '/api/goods/information',
- data: {
- goods_id: this.goodsSkuDetail.goods_id,
- form_data: JSON.stringify(this.$refs.form.formData)
- },
- success: res => {
- var data = res.data;
- if (res.code == 0) {
-
- }else{
- this.$util.showToast({
- title: res.msg
- });
- }
-
-
- },
- });
- },
- // 加入购物车
- joinCart() {
- if (!this.storeToken && this.preview == 0) {
- this.$refs.login.open(this.shareUrl);
- return;
- }
- if (this.goodsSkuDetail.is_virtual == 1) {
- this.$refs.goodsSku.show("buy_now", () => {
- this.$store.dispatch('getCartNumber');
- });
- } else {
- this.$refs.goodsSku.show("join_cart", () => {
- this.$store.dispatch('getCartNumber');
- });
- }
- },
- // 立即购买
- buyNow() {
- if (!this.storeToken && this.preview == 0) {
- this.$refs.login.open(this.shareUrl);
- return;
- }
- this.$refs.goodsSku.show("buy_now", () => {
- });
- },
-
- sortBy(field) {
- //根据传过来的字段进行排序,y-x 得分从高到低,x-y 从低到高
- return (y, x) => {
- return y[field] - x[field]
- }
- },
-
- // 打开优惠券弹出层
- openCouponPopup() {
- this.$refs.couponPopup.open();
- },
- // 关闭优惠券弹出层
- closeCouponPopup() {
- this.$refs.couponPopup.close();
- },
- // 领取优惠券
- receiveCoupon(item) {
- let that = this;
- if (this.preview) return; // 开启预览,禁止任何操作和跳转
- if (this.couponBtnSwitch) return;
- this.couponBtnSwitch = true;
- if (this.storeToken) {
- this.$api.sendRequest({
- url: '/coupon/api/coupon/receive',
- data: {
- coupon_type_id: item.coupon_type_id,
- get_type: 2 //获取方式:1订单2.直接领取3.活动领取
- },
- success: res => {
- var data = res.data;
-
- let msg = '';
-
- let list = this.couponList;
- if (res.data.is_exist == 1 && res.code < 0) {
- msg = $lang('goods.public.js.detail.l321');
- } else if (res.code == 0) {
- msg = $lang('goods.public.js.detail.l323');
- } else {
- msg = res.message;
- }
- if (res.data.is_exist == 1) {
- for (let i = 0; i < list.length; i++) {
- if (list[i].coupon_type_id == item.coupon_type_id) {
- that.$set(that.couponList[i], 'useState', 1);
- }
- }
- } else {
- for (let i = 0; i < list.length; i++) {
- if (list[i].coupon_type_id == item.coupon_type_id) {
- that.$set(that.couponList[i], 'useState', 2);
-
- }
-
- }
- }
- this.$util.showToast({
- title: msg
- });
- that.$forceUpdate()
- this.hackReset = false;
- this.$nextTick(() => {
- this.hackReset = true;
- })
-
- this.couponBtnSwitch = false;
- },
- });
- } else {
- this.$refs.login.open(this.shareUrl);
- this.couponBtnSwitch = false;
- }
- },
-
- //-------------------------------------满减-------------------------------------
-
- //获取满减信息
- getManjian(data) {
- this.manjian = data;
- let limit = data.type == 0 ? '元' : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0');
- Object.keys(data.rule_json).forEach((key) => {
- var item = data.rule_json[key];
- if (item.coupon_data) {
- for (var i = 0; i < item.coupon_data.length; i++) {
- item.coupon_data[i].coupon_num = item.coupon_num[i]
- }
- }
- item.limit = data.type == 0 ? parseFloat(item.limit).toFixed(2) : parseInt(item.limit);
- // 满减
- if (item.discount_money != undefined) {
- if (this.manjian.manjian == undefined) {
- this.manjian.manjian = $lang('diy.diy-coupon.l32.t0') + item.limit + limit + $lang('common.register-reward.l60.t2') + item.discount_money + $lang('common.register-reward.l45.t0');
- } else {
- this.manjian.manjian += $lang('goods.public.js.detail.l379') + item.limit + limit + $lang('common.register-reward.l60.t2') + item.discount_money + $lang('common.register-reward.l45.t0');
- }
- }
- // 满送
- if (item.point != undefined || item.coupon != undefined) {
- let text = '';
- if (item.point != undefined) {
- text = $lang('goods.public.js.detail.l386') + item.point + $lang('common.register-reward.l19.t0');
- }
- if (item.coupon != undefined && item.coupon_data != undefined) {
- item.coupon_data.forEach((couponItem, couponIndex) => {
- if (couponItem.type == 'discount') {
- if (text == '') text = '送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.discount) + '折优惠券';
- else text += $lang('goods.public.js.detail.l392') + item.coupon_num[couponIndex] + $lang('goods.public.js.detail.l392') + parseFloat(couponItem.discount) + $lang('goods.public.js.detail.l392');
- } else {
- if (text == '') text = '送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.money) + '元优惠券';
- else text += $lang('goods.public.js.detail.l392') + item.coupon_num[couponIndex] + $lang('goods.public.js.detail.l392') + parseFloat(couponItem.money) + $lang('goods.public.js.detail.l395');
- }
- })
- }
- if (this.manjian.mansong == undefined) {
- this.manjian.mansong = $lang('diy.diy-coupon.l32.t0') + item.limit + limit + text;
- } else {
- this.manjian.mansong += ';' + $lang('diy.diy-coupon.l32.t0') + item.limit + limit + text;
- }
- }
- // 包邮
- if (item.free_shipping != undefined) {
- if (this.manjian.free_shipping == undefined) {
- this.manjian.free_shipping = $lang('diy.diy-coupon.l32.t0') + item.limit + limit + $lang('goods.detail.l383');
- } else {
- this.manjian.free_shipping += $lang('goods.public.js.detail.l379') + item.limit + limit + $lang('goods.detail.l383');
- }
- }
- });
- },
- openManjianPopup() {
- this.$refs.manjianPopup.open();
- },
- closeManjianPopup() {
- this.$refs.manjianPopup.close();
- },
-
- //-------------------------------------组合套餐-------------------------------------
-
- //获取当前商品关联的组合套餐
- getBundling() {
- // 连锁门店没有营销活动
- if (this.globalStoreConfig && this.globalStoreConfig.store_business == 'store') return;
-
- this.$api.sendRequest({
- url: "/bundling/api/bundling/lists",
- data: {
- sku_id: this.skuId
- },
- success: res => {
- // this.handleBundlingData(res.data);
- }
- });
- },
- handleBundlingData(data) {
- this.bundling = data;
- if (this.bundling.length) {
-
- for (var i = 0; i < this.bundling[0].bundling_goods.length; i++) {
- if (this.bundling[0].bundling_goods[i].sku_id == this.skuId) {
- this.bundlingType = true;
- break;
- } else {
- this.bundlingType = false;
- }
- }
-
- for (var i = 0; i < this.bundling.length; i++) {
- for (var j = 0; j < this.bundling[i].bundling_goods.length; j++) {
- if (this.bundling[i].bundling_goods[j].sku_id == this.skuId) {
- this.bundling[i].bundling_goods.splice(j, 1);
- }
- }
- }
- }
- },
- // 打开组合套餐弹出层
- openBundlingPopup() {
- this.$refs.bundlingPopup.open();
- },
- // 关闭组合套餐弹出层
- closeBundlingPopup() {
- this.$refs.bundlingPopup.close();
- },
- imageError() {
- this.goodsSkuDetail.sku_image = this.$util.getDefaultImage().goods;
- this.$forceUpdate();
- },
- bundlingImageError(index, goods_index) {
- this.bundling[index].bundling_goods[goods_index].sku_image = this.$util.getDefaultImage().goods;
- this.$forceUpdate();
- },
- fenxiao() {
- this.$refs.fenxiaoPopup.show()
- },
- toGoodsDetail(item) {
- this.$util.redirectTo(this.goodsRoute, {
- sku_id: item
- });
- },
- toComoDetail(id) {
- this.$util.redirectTo('/pages_promotion/bundling/detail', {
- bl_id: id
- });
- },
- /**
- * 获取分享图
- */
- getShareImg() {
- let posterParams = {
- goods_id: this.goodsId
- };
- this.$api.sendRequest({
- url: '/api/goods/shareimg',
- data: {
- qrcode_param: JSON.stringify(posterParams)
- },
- success: res => {
- if (res.code == 0) this.shareImg = res.data.path + '?no=' + parseInt((new Date()).getTime() / 1000);
- }
- })
- },
- /**
- * 金额格式化输出
- * @param {Object} money
- */
- decimalPointFormat(money) {
- if (isNaN(parseFloat(money))) return money;
- let arr = money.toString().split(".");
- let arr1 = arr[1].split("").reverse();
- let arr2 = [];
- arr1.forEach((item, index) => {
- if (item > 1) {
- arr2 = arr1.splice(index);
- }
- });
- let str = arr2.length ? (arr[0] + "." + arr2.reverse().join("")) : arr[0];
- return str;
- }
- }
+export default {
+ data() {
+ return {
+ goodsRoute: '/pages_goods/detail',
+ couponList: [], //优惠券列表
+ couponBtnSwitch: false, //获取优惠券防止重复提交
+
+ posterApi: '/api/goods/poster',
+
+ //满减活动
+ manjian: {
+ type: 0,
+ manjian_name: "",
+ rule_json: null
+ },
+ //组合套餐
+ bundlingType: false,
+ bundling: [{
+ bundling_goods: {
+ bl_name: '',
+ sku_image: ''
+ }
+ }],
+
+ membercard: null, // 会员卡信息
+ hackReset: true,
+ cardOff: false,
+ informationform:[]//留言表单
+
+ }
+ },
+ computed: {
+ showDiscount() {
+ var flag = false;
+ if (
+ this.preview == 0 &&
+ this.addonIsExist.discount &&
+ this.goodsSkuDetail.promotion_type == 1 &&
+ this.goodsSkuDetail.discountTimeMachine &&
+ (!this.goodsSkuDetail.member_price || (this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) > Number(this.goodsSkuDetail.discount_price))
+ )
+ ) {
+ flag = true;
+ }
+ return flag;
+ },
+ memberCardDiscount() {
+ let discount = 0,
+ showPrice = this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) < Number(this.goodsSkuDetail.discount_price) ? this.goodsSkuDetail.member_price : this.goodsSkuDetail.discount_price;
+ if (this.membercard && this.membercard.member_price > 0 && (parseFloat(showPrice) > parseFloat(this.membercard.member_price))) {
+ discount = parseFloat(showPrice) - parseFloat(this.membercard.member_price);
+ }
+ return discount.toFixed(2);
+ },
+ //表单高度
+ FormHeight(){
+ let height = 48;
+ if (this.goodsForm && this.goodsForm.length) {
+ height += this.goodsForm.length * 5;
+ }
+ height += 'vh';
+ return height;
+ }
+ },
+ onLoad(data) {
+
+ // #ifdef MP-ALIPAY
+ let options = my.getLaunchOptionsSync();
+ options.query && Object.assign(data, options.query)
+ // #endif
+
+ this.skuId = data.sku_id || 0;
+ this.goodsId = data.goods_id || 0;
+
+ // 小程序扫码进入
+ if (data.scene) {
+ var sceneParams = decodeURIComponent(data.scene);
+ sceneParams = sceneParams.split('&');
+ if (sceneParams.length) {
+ sceneParams.forEach(item => {
+ if (item.indexOf('goods_id') != -1) this.goodsId = item.split('-')[1];
+ });
+ }
+ }
+
+ // #ifdef MP-WEIXIN
+ this.getShareImg();
+ // #endif
+ },
+ async onShow() {
+ //同步获取商品详情
+ await this.getGoodsSkuDetail();
+ },
+ onHide() {
+ this.couponBtnSwitch = false;
+ },
+ methods: {
+ //拨打电话
+ phoneClick(mobile){
+ uni.makePhoneCall({
+ phoneNumber: mobile+'',
+ success(){},
+ fail(){}
+ })
+ },
+ setSkuId(val) {
+ if (val) {
+ this.skuId = val;
+ this.getBundling();
+ }
+ },
+ // 获取商品详情
+ async getGoodsSkuDetail() {
+ let res = await this.$api.sendRequest({
+ url: '/api/goodssku/detail',
+ async: false,
+ data: {
+ sku_id: this.skuId,
+ goods_id: this.goodsId,
+ }
+ });
+ let data = res.data;
+ if (data.goods_sku_detail != null) {
+ if (data.goods_sku_detail.promotion_type == 'presale' && data.goods_sku_detail.presale_id) {
+ this.$util.redirectTo('/pages_promotion/presale/detail', {
+ id: data.goods_sku_detail.presale_id,
+ sku_id: this.skuId
+ }, 'reLaunch');
+ return;
+ }
+ if(uni.getStorageSync('lang') == 'en-us') data.goods_sku_detail.goods_name = data.goods_sku_detail.en_goods_name
+
+ this.goodsSkuDetail = data.goods_sku_detail;
+ if (!this.skuId) this.skuId = this.goodsSkuDetail.sku_id;
+ if (!this.goodsId) this.goodsId = this.goodsSkuDetail.goods_id;
+ // 分享参数、链接
+ this.shareQuery = 'goods_id=' + this.goodsSkuDetail.goods_id;
+ this.shareUrl = this.goodsRoute + '?' + this.shareQuery;
+
+ // 在线客服聊天参数
+ this.chatRoomParams = {
+ sku_id: this.goodsSkuDetail.sku_id
+ };
+ let typeId = this.goodsSkuDetail.goods_promotion[0];
+ if (typeId) {
+ // 限时折扣
+ if (typeId.discount_id) {
+ this.chatRoomParams.type = 'discount'
+ this.chatRoomParams.type_id = typeId.discount_id
+ }
+ }
+
+ // 海报参数
+ this.posterParams = {
+ goods_id: this.goodsId
+ };
+
+ // 处理商品数据
+ this.handleGoodsSkuData();
+
+ // 限时折扣
+ if (this.goodsSkuDetail.promotion_type == 1 && this.addonIsExist.discount) {
+ //检测倒计时
+ if ((this.goodsSkuDetail.end_time - res.timestamp) > 0) {
+ this.goodsSkuDetail.discountTimeMachine = this.$util.countDown(this.goodsSkuDetail.end_time - res.timestamp);
+ } else {
+ this.goodsSkuDetail.promotion_type = 0;
+ }
+ }
+ if (this.goodsSkuDetail.promotion_type == 1 && this.goodsSkuDetail.discountTimeMachine) {
+ if (this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) <= Number(this.goodsSkuDetail.discount_price)) {
+ this.goodsSkuDetail.show_price = this.goodsSkuDetail.member_price;
+ } else {
+ this.goodsSkuDetail.show_price = this.goodsSkuDetail.discount_price;
+ }
+ } else {
+ if (this.goodsSkuDetail.member_price > 0) {
+ this.goodsSkuDetail.show_price = this.goodsSkuDetail.member_price;
+ } else {
+ this.goodsSkuDetail.show_price = this.goodsSkuDetail.price;
+ }
+ }
+
+ // 满减
+ if (this.goodsSkuDetail.manjian) {
+ this.getManjian(this.goodsSkuDetail.manjian);
+ }
+
+ // 会员卡
+ if (this.goodsSkuDetail.membercard) {
+ this.membercard = this.goodsSkuDetail.membercard;
+ }
+
+ // 优惠券
+ if (this.goodsSkuDetail.coupon_list) {
+ this.couponList = this.goodsSkuDetail.coupon_list;
+ this.couponList.forEach(v => {
+ if (v.count == v.lead_count) v.useState = 2;
+ else if (v.max_fetch != 0 && v.member_coupon_num && v.member_coupon_num >= v.max_fetch) v.useState = 1;
+ else v.useState = 0;
+ });
+ this.couponList = this.couponList.sort(this.sortBy('useState'))
+ }
+
+ // 组合套餐
+ // if (this.goodsSkuDetail.bundling_list) {
+ // this.handleBundlingData(this.goodsSkuDetail.bundling_list);
+ // }
+
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+
+ } else {
+ this.$util.redirectTo('/pages_tool/goods/not_exist', {}, 'redirectTo');
+ }
+ },
+ choiceSku() {
+ this.$refs.goodsSku.show("buy_now", () => {
+ this.$store.dispatch('getCartNumber');
+ });
+ },
+
+ //商品留言打开
+ showinformation(){
+ this.informationform = this.goodsSkuDetail.goods_form
+ this.$refs.informationPopup.open();
+ },
+ //商品留言关闭
+ closeinformationPopup(){
+ this.$refs.informationPopup.close();
+ },
+ //保存商品留言
+ saveubfirnation(){
+ //缺少
+ if (!this.$refs.form.verify()) return;
+
+ // uni.setStorageSync('goodFormData', {
+ // goods_id: this.goodsSkuDetail.goods_id,
+ // form_data: this.$refs.form.formData
+ // });
+ this.$api.sendRequest({
+ url: '/api/goods/information',
+ data: {
+ goods_id: this.goodsSkuDetail.goods_id,
+ form_data: JSON.stringify(this.$refs.form.formData)
+ },
+ success: res => {
+ var data = res.data;
+ if (res.code == 0) {
+
+ }else{
+ this.$util.showToast({
+ title: res.msg
+ });
+ }
+
+
+ },
+ });
+ },
+ // 加入购物车
+ joinCart() {
+ if (!this.storeToken && this.preview == 0) {
+ this.$refs.login.open(this.shareUrl);
+ return;
+ }
+ if (this.goodsSkuDetail.is_virtual == 1) {
+ this.$refs.goodsSku.show("buy_now", () => {
+ this.$store.dispatch('getCartNumber');
+ });
+ } else {
+ this.$refs.goodsSku.show("join_cart", () => {
+ this.$store.dispatch('getCartNumber');
+ });
+ }
+ },
+ // 立即购买
+ buyNow() {
+ if (!this.storeToken && this.preview == 0) {
+ this.$refs.login.open(this.shareUrl);
+ return;
+ }
+ this.$refs.goodsSku.show("buy_now", () => {
+ });
+ },
+
+ sortBy(field) {
+ //根据传过来的字段进行排序,y-x 得分从高到低,x-y 从低到高
+ return (y, x) => {
+ return y[field] - x[field]
+ }
+ },
+
+ // 打开优惠券弹出层
+ openCouponPopup() {
+ this.$refs.couponPopup.open();
+ },
+ // 关闭优惠券弹出层
+ closeCouponPopup() {
+ this.$refs.couponPopup.close();
+ },
+ // 领取优惠券
+ receiveCoupon(item) {
+ let that = this;
+ if (this.preview) return; // 开启预览,禁止任何操作和跳转
+ if (this.couponBtnSwitch) return;
+ this.couponBtnSwitch = true;
+ if (this.storeToken) {
+ this.$api.sendRequest({
+ url: '/coupon/api/coupon/receive',
+ data: {
+ coupon_type_id: item.coupon_type_id,
+ get_type: 2 //获取方式:1订单2.直接领取3.活动领取
+ },
+ success: res => {
+ var data = res.data;
+
+ let msg = '';
+
+ let list = this.couponList;
+ if (res.data.is_exist == 1 && res.code < 0) {
+ msg = '您已领取过该优惠券,快去使用吧';
+ } else if (res.code == 0) {
+ msg = '领取成功,快去使用吧';
+ } else {
+ msg = res.message;
+ }
+ if (res.data.is_exist == 1) {
+ for (let i = 0; i < list.length; i++) {
+ if (list[i].coupon_type_id == item.coupon_type_id) {
+ that.$set(that.couponList[i], 'useState', 1);
+ }
+ }
+ } else {
+ for (let i = 0; i < list.length; i++) {
+ if (list[i].coupon_type_id == item.coupon_type_id) {
+ that.$set(that.couponList[i], 'useState', 2);
+
+ }
+
+ }
+ }
+ this.$util.showToast({
+ title: msg
+ });
+ that.$forceUpdate()
+ this.hackReset = false;
+ this.$nextTick(() => {
+ this.hackReset = true;
+ })
+
+ this.couponBtnSwitch = false;
+ },
+ });
+ } else {
+ this.$refs.login.open(this.shareUrl);
+ this.couponBtnSwitch = false;
+ }
+ },
+
+ //-------------------------------------满减-------------------------------------
+
+ //获取满减信息
+ getManjian(data) {
+ this.manjian = data;
+ let limit = data.type == 0 ? '元' : '件';
+ Object.keys(data.rule_json).forEach((key) => {
+ var item = data.rule_json[key];
+ if (item.coupon_data) {
+ for (var i = 0; i < item.coupon_data.length; i++) {
+ item.coupon_data[i].coupon_num = item.coupon_num[i]
+ }
+ }
+ item.limit = data.type == 0 ? parseFloat(item.limit).toFixed(2) : parseInt(item.limit);
+ // 满减
+ if (item.discount_money != undefined) {
+ if (this.manjian.manjian == undefined) {
+ this.manjian.manjian = '满' + item.limit + limit + '减' + item.discount_money + '元';
+ } else {
+ this.manjian.manjian += ';满' + item.limit + limit + '减' + item.discount_money + '元';
+ }
+ }
+ // 满送
+ if (item.point != undefined || item.coupon != undefined) {
+ let text = '';
+ if (item.point != undefined) {
+ text = '送' + item.point + '积分';
+ }
+ if (item.coupon != undefined && item.coupon_data != undefined) {
+ item.coupon_data.forEach((couponItem, couponIndex) => {
+ if (couponItem.type == 'discount') {
+ if (text == '') text = '送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.discount) + '折优惠券';
+ else text += '、送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.discount) + '折优惠券';
+ } else {
+ if (text == '') text = '送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.money) + '元优惠券';
+ else text += '、送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.money) + '元优惠券';
+ }
+ })
+ }
+ if (this.manjian.mansong == undefined) {
+ this.manjian.mansong = '满' + item.limit + limit + text;
+ } else {
+ this.manjian.mansong += ';' + '满' + item.limit + limit + text;
+ }
+ }
+ // 包邮
+ if (item.free_shipping != undefined) {
+ if (this.manjian.free_shipping == undefined) {
+ this.manjian.free_shipping = '满' + item.limit + limit + '包邮';
+ } else {
+ this.manjian.free_shipping += ';满' + item.limit + limit + '包邮';
+ }
+ }
+ });
+ },
+ openManjianPopup() {
+ this.$refs.manjianPopup.open();
+ },
+ closeManjianPopup() {
+ this.$refs.manjianPopup.close();
+ },
+
+ //-------------------------------------组合套餐-------------------------------------
+
+ //获取当前商品关联的组合套餐
+ getBundling() {
+ // 连锁门店没有营销活动
+ if (this.globalStoreConfig && this.globalStoreConfig.store_business == 'store') return;
+
+ this.$api.sendRequest({
+ url: "/bundling/api/bundling/lists",
+ data: {
+ sku_id: this.skuId
+ },
+ success: res => {
+ // this.handleBundlingData(res.data);
+ }
+ });
+ },
+ handleBundlingData(data) {
+ this.bundling = data;
+ if (this.bundling.length) {
+
+ for (var i = 0; i < this.bundling[0].bundling_goods.length; i++) {
+ if (this.bundling[0].bundling_goods[i].sku_id == this.skuId) {
+ this.bundlingType = true;
+ break;
+ } else {
+ this.bundlingType = false;
+ }
+ }
+
+ for (var i = 0; i < this.bundling.length; i++) {
+ for (var j = 0; j < this.bundling[i].bundling_goods.length; j++) {
+ if (this.bundling[i].bundling_goods[j].sku_id == this.skuId) {
+ this.bundling[i].bundling_goods.splice(j, 1);
+ }
+ }
+ }
+ }
+ },
+ // 打开组合套餐弹出层
+ openBundlingPopup() {
+ this.$refs.bundlingPopup.open();
+ },
+ // 关闭组合套餐弹出层
+ closeBundlingPopup() {
+ this.$refs.bundlingPopup.close();
+ },
+ imageError() {
+ this.goodsSkuDetail.sku_image = this.$util.getDefaultImage().goods;
+ this.$forceUpdate();
+ },
+ bundlingImageError(index, goods_index) {
+ this.bundling[index].bundling_goods[goods_index].sku_image = this.$util.getDefaultImage().goods;
+ this.$forceUpdate();
+ },
+ fenxiao() {
+ this.$refs.fenxiaoPopup.show()
+ },
+ toGoodsDetail(item) {
+ this.$util.redirectTo(this.goodsRoute, {
+ sku_id: item
+ });
+ },
+ toComoDetail(id) {
+ this.$util.redirectTo('/pages_promotion/bundling/detail', {
+ bl_id: id
+ });
+ },
+ /**
+ * 获取分享图
+ */
+ getShareImg() {
+ let posterParams = {
+ goods_id: this.goodsId
+ };
+ this.$api.sendRequest({
+ url: '/api/goods/shareimg',
+ data: {
+ qrcode_param: JSON.stringify(posterParams)
+ },
+ success: res => {
+ if (res.code == 0) this.shareImg = res.data.path + '?no=' + parseInt((new Date()).getTime() / 1000);
+ }
+ })
+ },
+ /**
+ * 金额格式化输出
+ * @param {Object} money
+ */
+ decimalPointFormat(money) {
+ if (isNaN(parseFloat(money))) return money;
+ let arr = money.toString().split(".");
+ let arr1 = arr[1].split("").reverse();
+ let arr2 = [];
+ arr1.forEach((item, index) => {
+ if (item > 1) {
+ arr2 = arr1.splice(index);
+ }
+ });
+ let str = arr2.length ? (arr[0] + "." + arr2.reverse().join("")) : arr[0];
+ return str;
+ }
+ }
}
\ No newline at end of file
diff --git a/pages_goods/public/js/list.js b/pages_goods/public/js/list.js
index 3762f02..137c5fd 100644
--- a/pages_goods/public/js/list.js
+++ b/pages_goods/public/js/list.js
@@ -1,502 +1,502 @@
-export default {
- data() {
- return {
- listStyle: '',
- loadingType: 'loading', //加载更多状态
- orderType: '',
- priceOrder: 'desc', //1 价格从低到高 2价格从高到低
- categoryList: [], //排序类型
- goodsList: [],
- order: '',
- sort: 'desc',
- showScreen: false,
- keyword: '',
- categoryId: 0,
- minPrice: '',
- maxPrice: '',
- isFreeShipping: false, //是否免邮
- isIphoneX: false,
- coupon: 0,
- emptyShow: false,
- isList: true, //列表样式
- //分享所需标题
- share_title: '',
- //搜索到多少件商品
- count: 0,
- //当前分类名称
- category_title: '',
- //优惠券数据
- coupon_name: '',
- //列表瀑布流数据
- listHeight: [],
- listPosition: [],
- debounce: null,
- brandId: 0,
- brandList: [], //品牌筛选项
- config: {
- fontWeight: false,
- padding: 0,
- cartEvent: "detail",
- text: $lang("common.ns-goods-recommend.l20.t0"),
- textColor: "#FFFFFF",
- theme: "default",
- aroundRadius: 25,
- control: true,
- bgColor: "#FF6A00",
- style: "button",
- iconDiy: {
- iconType: "icon",
- icon: "",
- style: {
- fontSize: "60",
- iconBgColor: [],
- iconBgColorDeg: 0,
- iconBgImg: "",
- bgRadius: 0,
- iconColor: [
- "#000000"
- ],
- iconColorDeg: 0
- }
- }
- },
-
- langstatus:0,
- lang:uni.getStorageSync('lang')
- }
- },
-
- onLoad(options) {
- this.$api.sendRequest({
- url: '/api/lucky/status',
- data: {},
- success: res => {
- this.langstatus = res.status
- if(this.langstatus == 1){
- // this.$langConfig.refresh();
- uni.setNavigationBarTitle({
- title:uni.getStorageSync('lang') == 'en-us'?'Goods List':$lang('goods.public.js.list.l78')
- })
- }
- }
- });
-
- this.categoryId = options.category_id || 0;
- this.keyword = options.keyword || '';
- this.coupon = options.coupon || 0;
- this.goods_id_arr = options.goods_id_arr || 0;
- this.brandId = options.brand_id || 0;
-
- this.loadCategoryList(this.categoryId);
- this.getBrandList();
- this.isIphoneX = this.$util.uniappIsIPhoneX();
-
- //小程序分享接收source_member
- if (options.source_member) {
- uni.setStorageSync('source_member', options.source_member);
- }
- // 小程序扫码进入,接收source_member
- if (options.scene) {
- var sceneParams = decodeURIComponent(options.scene);
- sceneParams = sceneParams.split('&');
- if (sceneParams.length) {
- sceneParams.forEach(item => {
- if (item.indexOf('sku_id') != -1) this.skuId = item.split('-')[1];
- if (item.indexOf('m') != -1) uni.setStorageSync('source_member', item.split('-')[1]);
- if (item.indexOf('is_test') != -1) uni.setStorageSync('is_test', 1);
- });
- }
- }
-
- uni.onWindowResize(res => {
- if (this.debounce) clearTimeout(this.debounce);
- this.waterfallflow(0);
- })
- },
- onShow() {
- //记录分享关系
- if (this.storeToken && uni.getStorageSync('source_member')) {
- this.$util.onSourceMember(uni.getStorageSync('source_member'));
- }
- },
- /**
- * 转发分享
- */
- onShareAppMessage(res) {
- var title = $lang('goods.public.js.list.l126') + this.count + $lang('goods.public.js.list.l126') + this.keyword + this.category_title + this.coupon_name + $lang('goods.public.js.list.l126');
- let route = this.$util.getCurrentShareRoute(this.memberInfo ? this.memberInfo.member_id : 0);
- var path = route.path;
- return {
- title: title,
- path: path,
- success: res => {
- },
- fail: res => {
- }
- };
- },
- // 分享到微信朋友圈
- onShareTimeline() {
- var title = $lang('goods.public.js.list.l126') + this.count + $lang('goods.public.js.list.l126') + this.keyword + this.category_title + this.coupon_name + $lang('goods.public.js.list.l126');
- let route = this.$util.getCurrentShareRoute(this.memberInfo ? this.memberInfo.member_id : 0);
- var query = route.query;
- return {
- title: title,
- query: query,
- imageUrl: ''
- };
- },
- methods: {
- /**
- * 获取优惠券数据
- */
- couponInfo(id) {
- return new Promise(resolve => {
- this.$api.sendRequest({
- url: '/coupon/api/coupon/typeinfo',
- data: {
- coupon_type_id: id
- },
- success: res => {
- if (res.code >= 0) {
- resolve(res.data.coupon_name);
- }
- }
- });
- })
- },
- /**
- * 获取分类名称
- */
- share_select(data, id) {
- return new Promise((resolve) => {
- data.forEach((item) => {
- if (item.category_id == id) {
- resolve(item.category_name)
- }
- if (item.child_list && item.child_list.length > 0) {
- item.child_list.forEach((v) => {
- if (v.category_id == id) {
- resolve(v.category_name)
- }
- if (v.child_list && v.child_list.length > 0) {
- v.forEach((m) => {
- if (m.category_id == id) {
- resolve(m.category_name)
- }
- })
-
- }
- })
- }
- })
- })
- },
- //加载分类
- loadCategoryList(fid, sid) {
- this.$api.sendRequest({
- url: '/api/goodscategory/tree',
- data: {},
- success: res => {
- if (res.data != null) {
- this.categoryList = res.data
- }
- }
- });
- },
- getGoodsList(mescroll) {
- // #ifdef MP-HARMONY
- // 鸿蒙元服务API响应极快,可能抢在scroll-view首次渲染完成之前返回数据
- // 导致mescroll测得内容高度为0,列表不可见。首次加载延迟300ms确保DOM就绪。
- if (!this._harmonyFirstLoadDone) {
- this._harmonyFirstLoadDone = true;
- setTimeout(() => {
- this._doGetGoodsList(mescroll);
- }, 300);
- return;
- }
- // #endif
- this._doGetGoodsList(mescroll);
- },
- _doGetGoodsList(mescroll) {
- this.$api.sendRequest({
- url: '/api/goodssku/page',
- data: {
- page: mescroll.num,
- page_size: mescroll.size,
- keyword: this.keyword,
- category_id: this.categoryId,
- brand_id: this.brandId,
- min_price: this.minPrice,
- max_price: this.maxPrice,
- is_free_shipping: (this.isFreeShipping ? 1 : 0),
- order: this.order,
- sort: this.sort,
- coupon: this.coupon,
- goods_id_arr: this.goods_id_arr
- },
- success: res => {
- let newArr = []
- let msg = res.message;
- if (res.code == 0 && res.data) {
- this.count = res.data.count;
- if (res.data.page_count == 0) {
- this.emptyShow = true
- }
- newArr = res.data.list;
- newArr = newArr.map(item => {
- item.id = this.genNonDuplicate();
- return item;
- });
- } else {
- this.$util.showToast({
- title: msg
- })
- }
- this.category_title = '';
- this.coupon_name = '';
- if (res.data.config) this.config = res.data.config;
- if (this.categoryId) {
- this.share_select(this.categoryList, this.categoryId).then(resolve => {
- this.category_title = resolve
- });
- }
- if (this.coupon) {
- this.couponInfo(this.coupon).then(resolve => {
- this.coupon_name = resolve
- });
- }
- mescroll.endSuccess(newArr.length);
- //设置列表数据
- if (mescroll.num == 1) this.goodsList = []; //如果是第一页需手动制空列表
- this.goodsList = this.goodsList.concat(newArr); //追加新数据
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
-
- // #ifdef MP-HARMONY
- // 鸿蒙下 mescroll 初始化时 setClientHeight 在 slot 内容渲染前执行,测得高度为 0
- // 数据加载后必须主动重新测量容器高度,否则 mescroll 认为容器高度为 0,列表不可见
- // 注:scrollTo(0,0) 只能重置滚动位置,scrollTop 已是 0 时不会触发 scroll 事件,不会重测
- // mounted 阶段的重试可能已经耗尽 5 次,这里主动重置 clientNum 让测量重新有机会
- this.$nextTick(() => {
- const mescrollUni = this.$refs.mescroll && (this.$refs.mescroll.mescroll || this.$refs.mescroll);
- if (mescrollUni && typeof mescrollUni.setClientHeight === 'function') {
- mescrollUni.clientNum = null;
- mescrollUni.isExec = false;
- mescrollUni.setClientHeight();
- }
- });
- // #endif
-
- this.waterfallflow((mescroll.num - 1) * 10);
- },
- fail: res => {
- //联网失败的回调
- mescroll.endErr();
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- }
- });
- },
- changeListStyle() {
- this.isList = !this.isList;
- // 鸿蒙下 isList 切换导致 :key 变化、DOM 重建,重建出来的 .goods-item @click 事件绑定会丢失
- // 主动触发 slot 重建,把事件绑定带回来
- // #ifdef MP-HARMONY
- const mescroll = this.$refs.mescroll;
- if (mescroll && typeof mescroll.forceSlotRebuild === 'function') {
- mescroll.forceSlotRebuild();
- }
- // #endif
- this.waterfallflow(0);
- },
- //筛选点击
- sortTabClick(tag) {
- if (tag == 'sale_num') {
- this.order = 'sale_num';
- this.sort = 'desc';
- } else if (tag == 'discount_price') {
- this.order = 'discount_price';
- this.sort = 'desc';
- } else if (tag == 'screen') {
- //筛选
- this.showScreen = true;
- return;
- } else {
- this.order = '';
- this.sort = '';
- }
-
- if (this.orderType === tag && tag !== 'discount_price') return;
-
- this.orderType = tag;
- if (tag === 'discount_price') {
- this.priceOrder = this.priceOrder === 'asc' ? 'desc' : 'asc';
- this.sort = this.priceOrder;
- } else {
- this.priceOrder = '';
- }
- this.emptyShow = false;
- this.goodsList = [];
- this.$refs.mescroll.refresh();
- },
- //商品详情
- toDetail(item) {
- this.$util.redirectTo('/pages_goods/detail', {
- goods_id: item.goods_id
- });
- },
- search() {
- this.emptyShow = false;
- this.goodsList = [];
- this.$refs.mescroll.refresh();
- },
- selectedCategory(categoryId) {
- this.categoryId = categoryId;
- },
- screenData() {
- if (this.minPrice != '' || this.maxPrice != '') {
- // if (!Number(this.minPrice) && this.minPrice) {
- // this.$util.showToast({
- // title: '请输入最低价'
- // });
- // return;
- // }
- if (!Number(this.maxPrice) && this.maxPrice) {
- this.$util.showToast({
- title: $lang('goods.public.js.list.l365')
- });
- return;
- }
- if (Number(this.minPrice) < 0 || Number(this.maxPrice) < 0) {
- this.$util.showToast({
- title: $lang('goods.public.js.list.l371')
- });
- return;
- }
- if (this.minPrice != '' && Number(this.minPrice) > Number(this.maxPrice) && this.maxPrice) {
-
- this.$util.showToast({
- title: $lang('goods.public.js.list.l378')
- });
- return;
- }
- if (this.maxPrice != '' && Number(this.maxPrice) < Number(this.minPrice)) {
- this.$util.showToast({
- title: $lang('goods.public.js.list.l384')
- });
- return;
- }
- }
- this.emptyShow = false;
- this.goodsList = [];
- this.$refs.mescroll.refresh();
- this.showScreen = false;
- },
- //重置数据
- resetData() {
- this.categoryId = 0
- this.minPrice = ''
- this.maxPrice = ''
- this.isFreeShipping = false
- },
- goodsImg(imgStr) {
- let imgs = imgStr.split(',');
- return imgs[0] ? this.$util.img(imgs[0], {
- size: 'mid'
- }) : this.$util.getDefaultImage().goods;
- },
- imgError(index) {
- this.goodsList[index].goods_image = this.$util.getDefaultImage().goods;
- },
- showPrice(data) {
- let price = data.discount_price;
- if (data.member_price && parseFloat(data.member_price) < parseFloat(price)) price = data.member_price;
- return price;
- },
- showMarketPrice(item) {
- if (item.market_price_show) {
- let price = this.showPrice(item);
- if (item.market_price > 0) {
- return item.market_price;
- } else if (parseFloat(item.price) > parseFloat(price)) {
- return item.price;
- }
- }
- return '';
- },
- goodsTag(data) {
- return data.label_name || '';
- },
- /**
- * 瀑布流
- */
- waterfallflow(start = 0) {
- if (!this.isList) {
- //页面渲染完成后的事件
- this.$nextTick(() => {
- setTimeout(() => {
- let listHeight = [];
- let listPosition = [];
- if (start != 0) {
- listHeight = this.listHeight;
- listPosition = this.listPosition;
- }
- let column = 2;
- const query = uni.createSelectorQuery().in(this);
- query.selectAll('.double-column .goods-item').boundingClientRect(data => {
- for (let i = start; i < data.length; i++) {
- if (i < column) {
- let position = {};
- position.top = uni.upx2px(20) + 'px';
- if (i % column == 0) {
- position.left = data[i].width * i + "px";
- } else {
- position.left = data[i].width * i + (i % column * uni
- .upx2px(30)) + "px";
- }
- listPosition[i] = position;
- listHeight[i] = data[i].height + uni.upx2px(20);
- } else {
- let minHeight = Math.min(...listHeight); // 找到第一列的最小高度
- let minIndex = listHeight.findIndex(item => item === minHeight) // 找到最小高度的索引
- //设置当前子元素项的位置
- let position = {};
- position.top = minHeight + uni.upx2px(20) + "px";
- position.left = listPosition[minIndex].left;
- listPosition[i] = position;
- //重新定义数组最小项的高度 进行累加
- listHeight[minIndex] += data[i].height + uni.upx2px(20);
- }
- }
- this.listHeight = listHeight;
- this.listPosition = listPosition;
- }).exec();
- }, 50)
- })
- }
- },
- getBrandList() {
- var data = {
- page: 1,
- page_size: 0
- };
- this.$api.sendRequest({
- url: '/api/goodsbrand/page',
- data: data,
- success: res => {
- if (res.code == 0 && res.data) {
- let data = res.data;
- this.brandList = data.list;
- }
- }
- });
- },
- /**
- * 添加购物车回调
- */
- addCart(id) {
- },
- genNonDuplicate(len = 6) {
- return Number(Math.random().toString().substr(3, len) + Date.now()).toString(36);
- }
- }
+export default {
+ data() {
+ return {
+ listStyle: '',
+ loadingType: 'loading', //加载更多状态
+ orderType: '',
+ priceOrder: 'desc', //1 价格从低到高 2价格从高到低
+ categoryList: [], //排序类型
+ goodsList: [],
+ order: '',
+ sort: 'desc',
+ showScreen: false,
+ keyword: '',
+ categoryId: 0,
+ minPrice: '',
+ maxPrice: '',
+ isFreeShipping: false, //是否免邮
+ isIphoneX: false,
+ coupon: 0,
+ emptyShow: false,
+ isList: true, //列表样式
+ //分享所需标题
+ share_title: '',
+ //搜索到多少件商品
+ count: 0,
+ //当前分类名称
+ category_title: '',
+ //优惠券数据
+ coupon_name: '',
+ //列表瀑布流数据
+ listHeight: [],
+ listPosition: [],
+ debounce: null,
+ brandId: 0,
+ brandList: [], //品牌筛选项
+ config: {
+ fontWeight: false,
+ padding: 0,
+ cartEvent: "detail",
+ text: "购买",
+ textColor: "#FFFFFF",
+ theme: "default",
+ aroundRadius: 25,
+ control: true,
+ bgColor: "#FF6A00",
+ style: "button",
+ iconDiy: {
+ iconType: "icon",
+ icon: "",
+ style: {
+ fontSize: "60",
+ iconBgColor: [],
+ iconBgColorDeg: 0,
+ iconBgImg: "",
+ bgRadius: 0,
+ iconColor: [
+ "#000000"
+ ],
+ iconColorDeg: 0
+ }
+ }
+ },
+
+ langstatus:0,
+ lang:uni.getStorageSync('lang')
+ }
+ },
+
+ onLoad(options) {
+ this.$api.sendRequest({
+ url: '/api/lucky/status',
+ data: {},
+ success: res => {
+ this.langstatus = res.status
+ if(this.langstatus == 1){
+ // this.$langConfig.refresh();
+ uni.setNavigationBarTitle({
+ title:uni.getStorageSync('lang') == 'en-us'?'Goods List':'商品列表'
+ })
+ }
+ }
+ });
+
+ this.categoryId = options.category_id || 0;
+ this.keyword = options.keyword || '';
+ this.coupon = options.coupon || 0;
+ this.goods_id_arr = options.goods_id_arr || 0;
+ this.brandId = options.brand_id || 0;
+
+ this.loadCategoryList(this.categoryId);
+ this.getBrandList();
+ this.isIphoneX = this.$util.uniappIsIPhoneX();
+
+ //小程序分享接收source_member
+ if (options.source_member) {
+ uni.setStorageSync('source_member', options.source_member);
+ }
+ // 小程序扫码进入,接收source_member
+ if (options.scene) {
+ var sceneParams = decodeURIComponent(options.scene);
+ sceneParams = sceneParams.split('&');
+ if (sceneParams.length) {
+ sceneParams.forEach(item => {
+ if (item.indexOf('sku_id') != -1) this.skuId = item.split('-')[1];
+ if (item.indexOf('m') != -1) uni.setStorageSync('source_member', item.split('-')[1]);
+ if (item.indexOf('is_test') != -1) uni.setStorageSync('is_test', 1);
+ });
+ }
+ }
+
+ uni.onWindowResize(res => {
+ if (this.debounce) clearTimeout(this.debounce);
+ this.waterfallflow(0);
+ })
+ },
+ onShow() {
+ //记录分享关系
+ if (this.storeToken && uni.getStorageSync('source_member')) {
+ this.$util.onSourceMember(uni.getStorageSync('source_member'));
+ }
+ },
+ /**
+ * 转发分享
+ */
+ onShareAppMessage(res) {
+ var title = '搜索到' + this.count + '件“' + this.keyword + this.category_title + this.coupon_name + '”相关的优质商品';
+ let route = this.$util.getCurrentShareRoute(this.memberInfo ? this.memberInfo.member_id : 0);
+ var path = route.path;
+ return {
+ title: title,
+ path: path,
+ success: res => {
+ },
+ fail: res => {
+ }
+ };
+ },
+ // 分享到微信朋友圈
+ onShareTimeline() {
+ var title = '搜索到' + this.count + '件“' + this.keyword + this.category_title + this.coupon_name + '”相关的优质商品';
+ let route = this.$util.getCurrentShareRoute(this.memberInfo ? this.memberInfo.member_id : 0);
+ var query = route.query;
+ return {
+ title: title,
+ query: query,
+ imageUrl: ''
+ };
+ },
+ methods: {
+ /**
+ * 获取优惠券数据
+ */
+ couponInfo(id) {
+ return new Promise(resolve => {
+ this.$api.sendRequest({
+ url: '/coupon/api/coupon/typeinfo',
+ data: {
+ coupon_type_id: id
+ },
+ success: res => {
+ if (res.code >= 0) {
+ resolve(res.data.coupon_name);
+ }
+ }
+ });
+ })
+ },
+ /**
+ * 获取分类名称
+ */
+ share_select(data, id) {
+ return new Promise((resolve) => {
+ data.forEach((item) => {
+ if (item.category_id == id) {
+ resolve(item.category_name)
+ }
+ if (item.child_list && item.child_list.length > 0) {
+ item.child_list.forEach((v) => {
+ if (v.category_id == id) {
+ resolve(v.category_name)
+ }
+ if (v.child_list && v.child_list.length > 0) {
+ v.forEach((m) => {
+ if (m.category_id == id) {
+ resolve(m.category_name)
+ }
+ })
+
+ }
+ })
+ }
+ })
+ })
+ },
+ //加载分类
+ loadCategoryList(fid, sid) {
+ this.$api.sendRequest({
+ url: '/api/goodscategory/tree',
+ data: {},
+ success: res => {
+ if (res.data != null) {
+ this.categoryList = res.data
+ }
+ }
+ });
+ },
+ getGoodsList(mescroll) {
+ // #ifdef MP-HARMONY
+ // 鸿蒙元服务API响应极快,可能抢在scroll-view首次渲染完成之前返回数据
+ // 导致mescroll测得内容高度为0,列表不可见。首次加载延迟300ms确保DOM就绪。
+ if (!this._harmonyFirstLoadDone) {
+ this._harmonyFirstLoadDone = true;
+ setTimeout(() => {
+ this._doGetGoodsList(mescroll);
+ }, 300);
+ return;
+ }
+ // #endif
+ this._doGetGoodsList(mescroll);
+ },
+ _doGetGoodsList(mescroll) {
+ this.$api.sendRequest({
+ url: '/api/goodssku/page',
+ data: {
+ page: mescroll.num,
+ page_size: mescroll.size,
+ keyword: this.keyword,
+ category_id: this.categoryId,
+ brand_id: this.brandId,
+ min_price: this.minPrice,
+ max_price: this.maxPrice,
+ is_free_shipping: (this.isFreeShipping ? 1 : 0),
+ order: this.order,
+ sort: this.sort,
+ coupon: this.coupon,
+ goods_id_arr: this.goods_id_arr
+ },
+ success: res => {
+ let newArr = []
+ let msg = res.message;
+ if (res.code == 0 && res.data) {
+ this.count = res.data.count;
+ if (res.data.page_count == 0) {
+ this.emptyShow = true
+ }
+ newArr = res.data.list;
+ newArr = newArr.map(item => {
+ item.id = this.genNonDuplicate();
+ return item;
+ });
+ } else {
+ this.$util.showToast({
+ title: msg
+ })
+ }
+ this.category_title = '';
+ this.coupon_name = '';
+ if (res.data.config) this.config = res.data.config;
+ if (this.categoryId) {
+ this.share_select(this.categoryList, this.categoryId).then(resolve => {
+ this.category_title = resolve
+ });
+ }
+ if (this.coupon) {
+ this.couponInfo(this.coupon).then(resolve => {
+ this.coupon_name = resolve
+ });
+ }
+ mescroll.endSuccess(newArr.length);
+ //设置列表数据
+ if (mescroll.num == 1) this.goodsList = []; //如果是第一页需手动制空列表
+ this.goodsList = this.goodsList.concat(newArr); //追加新数据
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+
+ // #ifdef MP-HARMONY
+ // 鸿蒙下 mescroll 初始化时 setClientHeight 在 slot 内容渲染前执行,测得高度为 0
+ // 数据加载后必须主动重新测量容器高度,否则 mescroll 认为容器高度为 0,列表不可见
+ // 注:scrollTo(0,0) 只能重置滚动位置,scrollTop 已是 0 时不会触发 scroll 事件,不会重测
+ // mounted 阶段的重试可能已经耗尽 5 次,这里主动重置 clientNum 让测量重新有机会
+ this.$nextTick(() => {
+ const mescrollUni = this.$refs.mescroll && (this.$refs.mescroll.mescroll || this.$refs.mescroll);
+ if (mescrollUni && typeof mescrollUni.setClientHeight === 'function') {
+ mescrollUni.clientNum = null;
+ mescrollUni.isExec = false;
+ mescrollUni.setClientHeight();
+ }
+ });
+ // #endif
+
+ this.waterfallflow((mescroll.num - 1) * 10);
+ },
+ fail: res => {
+ //联网失败的回调
+ mescroll.endErr();
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+ }
+ });
+ },
+ changeListStyle() {
+ this.isList = !this.isList;
+ // 鸿蒙下 isList 切换导致 :key 变化、DOM 重建,重建出来的 .goods-item @click 事件绑定会丢失
+ // 主动触发 slot 重建,把事件绑定带回来
+ // #ifdef MP-HARMONY
+ const mescroll = this.$refs.mescroll;
+ if (mescroll && typeof mescroll.forceSlotRebuild === 'function') {
+ mescroll.forceSlotRebuild();
+ }
+ // #endif
+ this.waterfallflow(0);
+ },
+ //筛选点击
+ sortTabClick(tag) {
+ if (tag == 'sale_num') {
+ this.order = 'sale_num';
+ this.sort = 'desc';
+ } else if (tag == 'discount_price') {
+ this.order = 'discount_price';
+ this.sort = 'desc';
+ } else if (tag == 'screen') {
+ //筛选
+ this.showScreen = true;
+ return;
+ } else {
+ this.order = '';
+ this.sort = '';
+ }
+
+ if (this.orderType === tag && tag !== 'discount_price') return;
+
+ this.orderType = tag;
+ if (tag === 'discount_price') {
+ this.priceOrder = this.priceOrder === 'asc' ? 'desc' : 'asc';
+ this.sort = this.priceOrder;
+ } else {
+ this.priceOrder = '';
+ }
+ this.emptyShow = false;
+ this.goodsList = [];
+ this.$refs.mescroll.refresh();
+ },
+ //商品详情
+ toDetail(item) {
+ this.$util.redirectTo('/pages_goods/detail', {
+ goods_id: item.goods_id
+ });
+ },
+ search() {
+ this.emptyShow = false;
+ this.goodsList = [];
+ this.$refs.mescroll.refresh();
+ },
+ selectedCategory(categoryId) {
+ this.categoryId = categoryId;
+ },
+ screenData() {
+ if (this.minPrice != '' || this.maxPrice != '') {
+ // if (!Number(this.minPrice) && this.minPrice) {
+ // this.$util.showToast({
+ // title: '请输入最低价'
+ // });
+ // return;
+ // }
+ if (!Number(this.maxPrice) && this.maxPrice) {
+ this.$util.showToast({
+ title: '请输入最高价'
+ });
+ return;
+ }
+ if (Number(this.minPrice) < 0 || Number(this.maxPrice) < 0) {
+ this.$util.showToast({
+ title: '筛选价格不能小于0'
+ });
+ return;
+ }
+ if (this.minPrice != '' && Number(this.minPrice) > Number(this.maxPrice) && this.maxPrice) {
+
+ this.$util.showToast({
+ title: '最低价不能大于最高价'
+ });
+ return;
+ }
+ if (this.maxPrice != '' && Number(this.maxPrice) < Number(this.minPrice)) {
+ this.$util.showToast({
+ title: '最高价不能小于最低价'
+ });
+ return;
+ }
+ }
+ this.emptyShow = false;
+ this.goodsList = [];
+ this.$refs.mescroll.refresh();
+ this.showScreen = false;
+ },
+ //重置数据
+ resetData() {
+ this.categoryId = 0
+ this.minPrice = ''
+ this.maxPrice = ''
+ this.isFreeShipping = false
+ },
+ goodsImg(imgStr) {
+ let imgs = imgStr.split(',');
+ return imgs[0] ? this.$util.img(imgs[0], {
+ size: 'mid'
+ }) : this.$util.getDefaultImage().goods;
+ },
+ imgError(index) {
+ this.goodsList[index].goods_image = this.$util.getDefaultImage().goods;
+ },
+ showPrice(data) {
+ let price = data.discount_price;
+ if (data.member_price && parseFloat(data.member_price) < parseFloat(price)) price = data.member_price;
+ return price;
+ },
+ showMarketPrice(item) {
+ if (item.market_price_show) {
+ let price = this.showPrice(item);
+ if (item.market_price > 0) {
+ return item.market_price;
+ } else if (parseFloat(item.price) > parseFloat(price)) {
+ return item.price;
+ }
+ }
+ return '';
+ },
+ goodsTag(data) {
+ return data.label_name || '';
+ },
+ /**
+ * 瀑布流
+ */
+ waterfallflow(start = 0) {
+ if (!this.isList) {
+ //页面渲染完成后的事件
+ this.$nextTick(() => {
+ setTimeout(() => {
+ let listHeight = [];
+ let listPosition = [];
+ if (start != 0) {
+ listHeight = this.listHeight;
+ listPosition = this.listPosition;
+ }
+ let column = 2;
+ const query = uni.createSelectorQuery().in(this);
+ query.selectAll('.double-column .goods-item').boundingClientRect(data => {
+ for (let i = start; i < data.length; i++) {
+ if (i < column) {
+ let position = {};
+ position.top = uni.upx2px(20) + 'px';
+ if (i % column == 0) {
+ position.left = data[i].width * i + "px";
+ } else {
+ position.left = data[i].width * i + (i % column * uni
+ .upx2px(30)) + "px";
+ }
+ listPosition[i] = position;
+ listHeight[i] = data[i].height + uni.upx2px(20);
+ } else {
+ let minHeight = Math.min(...listHeight); // 找到第一列的最小高度
+ let minIndex = listHeight.findIndex(item => item === minHeight) // 找到最小高度的索引
+ //设置当前子元素项的位置
+ let position = {};
+ position.top = minHeight + uni.upx2px(20) + "px";
+ position.left = listPosition[minIndex].left;
+ listPosition[i] = position;
+ //重新定义数组最小项的高度 进行累加
+ listHeight[minIndex] += data[i].height + uni.upx2px(20);
+ }
+ }
+ this.listHeight = listHeight;
+ this.listPosition = listPosition;
+ }).exec();
+ }, 50)
+ })
+ }
+ },
+ getBrandList() {
+ var data = {
+ page: 1,
+ page_size: 0
+ };
+ this.$api.sendRequest({
+ url: '/api/goodsbrand/page',
+ data: data,
+ success: res => {
+ if (res.code == 0 && res.data) {
+ let data = res.data;
+ this.brandList = data.list;
+ }
+ }
+ });
+ },
+ /**
+ * 添加购物车回调
+ */
+ addCart(id) {
+ },
+ genNonDuplicate(len = 6) {
+ return Number(Math.random().toString().substr(3, len) + Date.now()).toString(36);
+ }
+ }
}
\ No newline at end of file
diff --git a/pages_order/_components/common-payment/common-payment.vue b/pages_order/_components/common-payment/common-payment.vue
index 64c0705..d1eeffd 100644
--- a/pages_order/_components/common-payment/common-payment.vue
+++ b/pages_order/_components/common-payment/common-payment.vue
@@ -1,657 +1,657 @@
-
-
-
-
-
-
- {{ $lang("order._components.common-payment.l7.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- 购买虚拟类商品需填写手机号,方便商家与您联系
-
-
-
-
-
- {{ $lang("order._components.common-payment.l27.t0") }}
-
-
-
-
-
-
-
-
-
- {{ item.title }}
-
-
-
-
-
-
-
-
-
- {{ memberAddress.name ? memberAddress.name : '' }}
- {{ memberAddress.mobile ? memberAddress.mobile : '' }}
-
- {{ memberAddress.full_address ? memberAddress.full_address : '' }}
- {{ memberAddress.address ? memberAddress.address : '' }}
-
-
-
-
-
- {{ $lang("order._components.common-payment.l57.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
- 由
- {{ storeInfo.store_name }}
- 提供配送
-
-
- {{ $lang("order._components.common-payment.l75.t0") }}
-
-
-
-
-
- {{ $lang("order._components.common-payment.l81.t0") }}
-
-
-
-
-
- {{ localMemberAddress.name ? localMemberAddress.name : '' }}
-
- {{ localMemberAddress.mobile ? localMemberAddress.mobile : '' }}
-
-
- {{ localMemberAddress.full_address ? localMemberAddress.full_address : '' }}
- {{ localMemberAddress.address ? localMemberAddress.address : '' }}
-
-
-
-
-
-
- {{ $lang("order._components.common-payment.l100.t0") }}
-
- {{ deliveryTime ? deliveryTime : $lang('order._components.common-payment.l102.t0') }}
-
-
-
-
-
-
- {{ $lang("order._components.common-payment.l57.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ storeInfo.store_name }}
-
-
- { $lang("order._components.common-payment.l128.t0") } storeInfo.open_date }}
- {{ storeInfo.full_address }} {{ storeInfo.address }}
-
-
-
-
-
-
-
-
- {{ $lang("order._components.common-payment.l138.t0") }}
-
-
-
-
-
- {{ $lang("order._components.common-payment.l144.t0") }}
-
-
-
-
- {{ $lang("order._components.common-payment.l149.t0") }}
-
- {{ deliveryTime }}
-
-
-
-
- {{ $lang("order._components.common-payment.l156.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ goodsItem.sku_name }}
-
-
-
- {{ x.spec_value_name }}
-
-
-
-
-
-
- { $lang("order._components.common-payment.l192.t0") } orderCreateData.delivery.delivery_type_name }}
-
-
-
-
- {{ goodsItem.error.message }}
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ parseFloat(goodsItem.price).toFixed(2).split('.')[0] }}
- .{{ parseFloat(goodsItem.price).toFixed(2).split('.')[1] }}
-
-
- x
- {{ goodsItem.num }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("order._components.common-payment.l227.t0") }}
-
- {{ orderCreateData.buyer_message[calculateGoodsData.merch_id] }}
- {{ $lang("order._components.common-payment.l230.t0") }}
-
-
-
-
- {{ $lang("diy.diy-coupon.l209.t0") }}
-
-
- {{ $lang("order._components.common-payment.l238.t0") }}
-
-
- {{ $lang("order._components.common-payment.l242.t0") }}
-
-
-
-
-
-
-
- { $lang("goods.cart.l8") } calculateGoodsData.goods_num }}件
- {{ $lang("order._components.common-payment.l251.t0") }}
- {{ $lang('common.currency_symbol') }}
- {{ calculateGoodsData.goods_money | moneyFormat }}
-
-
-
-
-
-
-
-
-
-
-
- {{ paymentData.system_form.form_name }}
-
-
-
-
-
-
-
-
-
-
- 开通{{ paymentData.recommend_member_card.level_name }}
- {{ $lang("order._components.common-payment.l316.t0") }}
- {{ paymentData.recommend_member_card.discount_money | moneyFormat }}
- {{ $lang("common.register-reward.l45.t0") }}
-
-
-
-
-
- {{ item.title }}
- {{ $lang('common.currency_symbol') }}{{ parseFloat(item.value) }}/{{ item.unit }}
-
-
-
-
-
-
-
-
-
- {{ $lang("order._components.common-payment.l335.t0") }}
-
- {{ $lang('common.currency_symbol') }}
- {{ calculateData.goods_money | moneyFormat }}
-
-
-
- {{ $lang("order._components.common-payment.l342.t0") }}
-
- +
- {{ $lang('common.currency_symbol') }}
- {{ calculateData.delivery_money | moneyFormat }}
-
-
-
-
-
- {{ $lang("order._components.common-payment.l239.t0") }}
-
- -
- {{ $lang('common.currency_symbol') }}
- {{ calculateData.promotion_money | moneyFormat }}
-
-
-
- {{ $lang("diy.diy-coupon.l209.t0") }}
-
- -
- {{ $lang('common.currency_symbol') }}
- {{ calculateData.coupon_money | moneyFormat }}
-
-
-
- {{ $lang("order._components.common-payment.l385.t0") }}
-
- -
- {{ $lang('common.currency_symbol') }}
- {{ calculateData.point_money | moneyFormat }}
-
-
-
-
-
- {{ $lang("order._components.common-payment.l403.t0") }}《{{ transactionAgreement.title }}》{{ $lang("order._components.common-payment.l403.t1") }}
-
-
-
- { $lang("goods.cart.l8") } calculateData.goods_num }}件
- {{ $lang("order._components.common-payment.l408.t0") }}
- {{ $lang('common.currency_symbol') }}
- {{ parseFloat(calculateData.pay_money).toFixed(2).split('.')[0] }}
- .{{ parseFloat(calculateData.pay_money).toFixed(2).split('.')[1] }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ transactionAgreement.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_order/_components/common-payment/payment.js b/pages_order/_components/common-payment/payment.js
index 311e7c4..a6501ab 100644
--- a/pages_order/_components/common-payment/payment.js
+++ b/pages_order/_components/common-payment/payment.js
@@ -1,1075 +1,1075 @@
-import htmlParser from '@/common/js/html-parser';
-
-export default {
- options: {
- styleIsolation: 'shared'
- },
- data() {
- return {
- outTradeNo: '',
- isIphoneX: false,
- orderCreateData: {
- is_balance: 0,
- is_point: 1,
- is_invoice: 0, // 是否需要发票 0 无发票 1 有发票
- invoice_type: 0, // 发票类型 1 纸质 2 电子
- invoice_title_type: 1, // 抬头类型 1 个人 2 企业
- is_tax_invoice: 0, // 是否需要增值税专用发票 0 不需要 1 需要
- /*coupon: {
- coupon_id: 0
- },*/
- coupon: [],
- delivery: {},
- member_goods_card: {}, // 会员次卡
- order_key: '',
- buyer_message: ''
- },
- paymentData: null,
- calculateData: null,
- tempData: null,
- storeId: 0,
- deliveryTime: '', // 提货时间
- memberAddress: null, // 会员收货地址
- localMemberAddress: null, // 会员本地配送收货地址
- isRepeat: false,
- promotionInfo: null,
- transactionAgreement: {}, // 购买须知
- tempFormData: null,
- menuButtonBounding: {}, // 小程序胶囊属性
- storeConfig: null,
- localConfig: null,
- selectGoodsCard: {
- skuId: 0,
- itemId: 0,
- cardList: {}
- }, // 当前选择的次卡
- storeData: [],
- latitude: '',
- longitude: '',
- coupon_list: [],
- modules: [],
-
- //商户
- shop_goods_list:[],
- merchCoupon: {
- merch_id: 0,
- data: []
- },
- selectCouponId:0
- }
- },
- inject: ['promotion'],
- created() {
- // #ifdef MP
- this.menuButtonBounding = uni.getMenuButtonBoundingClientRect();
- // #endif
- this.isIphoneX = this.$util.uniappIsIPhoneX()
- if (this.storeToken) {
- Object.assign(this.orderCreateData, uni.getStorageSync(this.createDataKey))
- if (this.location) {
- this.orderCreateData.latitude = this.location.latitude;
- this.orderCreateData.longitude = this.location.longitude;
- this.latitude = this.location.latitude;
- this.longitude = this.location.longitude;
- }
- this.payment();
- } else {
- this.$nextTick(() => {
- this.$refs.loadingCover.hide();
- this.$refs.login.open(this.$util.getCurrentRoute().path)
- })
- }
- this.getTransactionAgreement();
- },
- computed: {
- goodsData() {
- if (this.paymentData) {
- this.paymentData.goods_list.forEach(item => {
- if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format);
- })
- return this.paymentData;
- }
- },
- calculateGoodsData() {
- if (this.calculateData) {
- this.calculateData.goods_list.forEach(item => {
- if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format);
- })
- return this.calculateData;
- }
- },
- // 余额可抵扣金额
- balanceDeduct() {
- if (this.calculateData) {
- if (this.calculateData.member_account && this.calculateData.member_account.balance_total <= parseFloat(this.calculateData.order_money).toFixed(2)) {
- return parseFloat(this.calculateData.member_account.balance_total).toFixed(2);
- } else {
- return parseFloat(this.calculateData.order_money).toFixed(2);
- }
- }
- },
- // 门店列表
- storeList() {
- return this.getStoreList();
- },
- // 门店信息
- storeInfo() {
- let storeList = this.getStoreList();
- if (storeList && this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type != 'express' && this.storeId) {
- return storeList[this.orderCreateData.delivery.store_id];
- }
- return null;
- },
- // 会员卡购买周期
- cardChargeType() {
- if (this.paymentData && this.paymentData.recommend_member_card && Object.keys(this.paymentData.recommend_member_card).length > 0) {
- let charge_rule_arr = [];
- let charge_rule = this.paymentData.recommend_member_card.charge_rule;
- Object.keys(charge_rule).forEach((key, index) => {
- switch (key) {
- case 'week':
- charge_rule_arr.push({
- 'key': key,
- 'value': charge_rule[key],
- 'title': $lang('order._components.common-payment.payment.l134.t0'),
- unit: $lang('order._components.common-payment.payment.l135.t0')
- });
- break;
- case 'month':
- charge_rule_arr.push({
- 'key': key,
- 'value': charge_rule[key],
- 'title': $lang('order._components.common-payment.payment.l142.t0'),
- unit: $lang('common.ns-select-time.l96.t0')
- });
- break;
- case 'quarter':
- charge_rule_arr.push({
- 'key': key,
- 'value': charge_rule[key],
- 'title': $lang('order._components.common-payment.payment.l150.t0'),
- unit: $lang('order._components.common-payment.payment.l151.t0')
- });
- break;
- case 'year':
- charge_rule_arr.push({
- 'key': key,
- 'value': charge_rule[key],
- 'title': $lang('order._components.common-payment.payment.l158.t0'),
- unit: $lang('order._components.common-payment.payment.l159.t0')
- });
- break;
- }
- })
- return charge_rule_arr;
- }
- }
- },
- watch: {
- storeToken: function (nVal, oVal) {
- this.payment();
- },
- deliveryTime: function (nVal) {
- if (!nVal) this.$refs.timePopup.refresh();
- },
- location: function (nVal) {
- if (nVal) {
- this.orderCreateData.latitude = nVal.latitude;
- this.orderCreateData.longitude = nVal.longitude;
- this.latitude = nVal.latitude;
- this.longitude = nVal.longitude;
- this.payment();
- }
- },
- calculateGoodsData(nVal) {
- if (nVal && nVal.local_config && nVal.local_config.info.time_is_open && !this.deliveryTime) this.localtime('no');
- }
- },
- methods: {
- //多商户商品分类
- goodsSpecFormat(goods_list){
- goods_list.forEach(item => {
- if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format);
- })
- return goods_list
- },
- /**
- * 父级页面onShow调用
- */
- pageShow() {
- if (uni.getStorageSync('addressBack')) {
- uni.removeStorageSync('addressBack');
- this.payment();
- }
- },
- /**
- * 获取订单结算数据
- */
- payment() {
- this.$api.sendRequest({
- url: this.api.payment,
- data: this.handleCreateData(),
- success: res => {
- if (res.code == 0 && res.data) {
- let data = res.data;
-
- // #ifdef MP-WEIXIN
- var scene = uni.getStorageSync('is_test') ? 1175 : wx.getLaunchOptionsSync().scene;
- if ([1175, 1176, 1177, 1191, 1195].indexOf(scene) != -1 && data.delivery.express_type) {
- data.delivery.express_type = data.delivery.express_type.filter(item => item.name == 'express');
- }
- // #endif
-
- if (data) {
- // 配送方式
- if (data.delivery.express_type && data.delivery.express_type.length) {
- let deliveryStorage = uni.getStorageSync('delivery');
- let delivery = data.delivery.express_type[0];
- data.delivery.express_type.forEach(item => {
- if (deliveryStorage && item.name == deliveryStorage.delivery_type) {
- delivery = item;
- }
- if (item.name == 'local') this.localConfig = item;
- if (item.name == 'store') this.storeConfig = item;
- })
- this.selectDeliveryType(delivery, false, data.member_account);
- }
- }
-
- // 地址、手机号
- if (data.is_virtual) {
- this.orderCreateData.member_address = {
- mobile: data.member_account.mobile ? data.member_account.mobile : ''
- }
- }
-
- //记录订单key
- this.orderCreateData.order_key = data.order_key;
-
- this.modules = data.modules;
-
- //记录多商户优惠券
- this.orderCreateData.coupon = data.coupon
-
- //查询优惠券
- this.getCouponList();
-
- // 处理表单数据
- data = this.handleGoodsFormData(data);
-
- // 该方法在父级组件中
- this.promotionInfo = this.promotion(data);
-
- this.paymentData = data;
-
- this.$forceUpdate();
- this.calculate();
- } else {
- this.$util.showToast({
- title: res.message
- });
-
- setTimeout(() => {
- this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
- }, 1000)
- }
- }
- })
- },
- //查询优惠券
- getCouponList() {
- //查询优惠券
- if (this.modules.indexOf('coupon') != -1) {
- this.$api.sendRequest({
- url: '/api/ordercreate/getcouponlist',
- data: this.orderCreateData,
- success: res => {
- if (res.code == 0 && res.data) {
- let data = res.data;
- this.coupon_list = data;
- this.$forceUpdate();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
-
- // this.orderCreateData.coupon.coupon_id = 0;
- }
-
- },
- /**
- * 处理商品表单数据
- * @param {Object} data
- */
- handleGoodsFormData(data) {
- let goodsFormData = uni.getStorageSync('goodFormData');
- data.goods_list.forEach(item => {
- if (item.goods_form) {
- let formData = {};
- if (item.form_data) {
- item.form_data.map(formIem => {
- formData[formIem.id] = formIem;
- })
- } else if (goodsFormData && goodsFormData.goods_id == item.goods_id) {
- goodsFormData.form_data.map(formIem => {
- formData[formIem.id] = formIem;
- })
- }
- if (Object.keys(formData).length) {
- item.goods_form.json_data.forEach(formIem => {
- if (formData[formIem.id]) {
- formIem.val = formData[formIem.id].val;
- }
- })
- }
- }
- });
- return data;
- },
- /**
- * 订单创建
- */
- calculate() {
- this.$api.sendRequest({
- url: this.api.calculate,
- data: this.handleCreateData(),
- success: res => {
- if (this.$refs.loadingCover && this.$refs.loadingCover.isShow) this.$refs.loadingCover.hide();
- if (res.code == 0 && res.data) {
-
- // 处理表单数据
- this.calculateData = this.handleGoodsFormData(res.data);
-
- //多商户商品
- this.shop_goods_list = res.data.shop_goods_list
- //---------
- this.calculateData.coupon_list = this.coupon_list;
- if (res.data.delivery) {
- if (res.data.delivery.delivery_type == 'express') this.memberAddress = res.data.delivery.member_address;
- if (res.data.delivery.delivery_type == 'local') {
- this.localMemberAddress = res.data.delivery.member_address;
- }
- }
- // 次卡
- res.data.goods_list.forEach(item => {
- if (item.member_card_list) {
- if (this.orderCreateData.member_goods_card[item.sku_id]) {
- let itemId = this.orderCreateData.member_goods_card[item.sku_id];
- if (!item.member_card_list[itemId]) delete this.orderCreateData.member_goods_card[item.sku_id];
- }
- } else if (this.orderCreateData.member_goods_card[item.sku_id]) {
- delete this.orderCreateData.member_goods_card[item.sku_id];
- }
- });
- //多商户
- this.orderCreateData.coupon = res.data.coupon
- // if (!res.data.coupon_id) this.orderCreateData.coupon.coupon_id = 0;
- // else this.orderCreateData.coupon.coupon_id = res.data.coupon_id;
-
- this.$forceUpdate();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- })
- },
- /**
- * 提交订单
- */
- create() {
- if (!this.verify() || this.isRepeat) return;
- this.isRepeat = true;
- uni.showLoading({
- title: ''
- });
- this.$api.sendRequest({
- url: this.api.create,
- data: this.handleCreateData(),
- success: res => {
- uni.hideLoading();
- if (res.code == 0) {
- this.outTradeNo = res.data;
- uni.removeStorageSync('deliveryTime');
- uni.removeStorageSync('goodFormData');
- uni.setStorageSync('paySource', '');
- if (this.calculateData.pay_money == 0) {
- // #ifdef MP
- if (this.paymentData.is_virtual || this.orderCreateData.delivery.delivery_type == 'store') {
- this.$util.subscribeMessage('ORDER_VERIFY_OUT_TIME,VERIFY_CODE_EXPIRE,VERIFY');
- }
- // #endif
- this.$util.redirectTo('/pages_tool/pay/result', {
- code: res.data
- }, 'redirectTo');
- } else {
- this.openChoosePayment();
- }
- // 更新购物车数量
- this.$store.dispatch('getCartNumber');
- } else {
- this.$util.showToast({
- title: res.message
- });
- this.isRepeat = false;
- }
- }
- })
- },
- /**
- * 处理订单计算、创建传参
- */
- handleCreateData() {
- let data = this.$util.deepClone(this.orderCreateData);
- // 订单表单
- if (this.$refs.form) {
- data.form_data = {
- form_id: this.paymentData.system_form.id,
- form_data: this.$util.deepClone(this.$refs.form.formData)
- };
- }
- // 商品表单
- if (this.$refs.goodsForm) {
- if (!data.form_data) data.form_data = {};
- data.form_data.goods_form = {};
- this.$refs.goodsForm.forEach(item => {
- data.form_data.goods_form[item._props.customAttr.sku_id] = {
- form_id: item._props.customAttr.form_id,
- form_data: this.$util.deepClone(item.formData)
- }
- })
- }
- Object.keys(data).forEach((key) => {
- let item = data[key];
- if (typeof item == 'object') data[key] = JSON.stringify(item);
- })
-
- if (this.paymentData && this.orderCreateData.is_virtual == 0) {
- if (data.member_address && this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type != 'store') {
- delete data.member_address;
- }
- }
-
- return data;
- },
- /**
- * 打开支付弹窗
- */
- openChoosePayment() {
- // #ifdef MP
- if (this.paymentData.is_virtual) {
- this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY');
- } else {
- switch (this.orderCreateData.delivery.delivery_type) {
- case 'express': //物流配送
- this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY,ORDER_DELIVERY');
- break;
- case 'store': //门店自提
- this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY');
- break;
- case 'local': //同城配送
- this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY,ORDER_DELIVERY');
- break;
- }
- }
- // #endif
-
- this.$refs.choosePaymentPopup.getPayInfo(this.outTradeNo);
- },
- verify() {
- if (this.paymentData.is_virtual == 1) {
- if (!this.orderCreateData.member_address.mobile) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l487.t0')
- });
- return false;
- }
- if (!this.$util.verifyMobile(this.orderCreateData.member_address.mobile)) {
- this.$util.showToast({
- title: $lang('common.ns-login.l393.t0')
- });
- return false;
- }
- } else {
- if (!this.orderCreateData.delivery || !this.orderCreateData.delivery.delivery_type) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l500.t0')
- });
- return false;
- }
- if (
- (this.orderCreateData.delivery.delivery_type == 'express' && !this.memberAddress) ||
- (this.orderCreateData.delivery.delivery_type == 'local' && !this.localMemberAddress)
- ) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l509.t0')
- });
- return false;
- }
-
- if (this.orderCreateData.delivery.delivery_type == 'store') {
- if (!this.orderCreateData.delivery.store_id) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l517.t0')
- });
- return false;
- }
- if (!this.orderCreateData.member_address.mobile) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l487.t0')
- });
- return false;
- }
- if (!this.$util.verifyMobile(this.orderCreateData.member_address.mobile)) {
- this.$util.showToast({
- title: $lang('common.ns-login.l393.t0')
- });
- return false;
- }
- if (!this.deliveryTime) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l535.t0')
- });
- return false;
- }
- }
-
- if (this.orderCreateData.delivery.delivery_type == 'local') {
- if (!this.orderCreateData.delivery.store_id) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l544.t0')
- });
- return false;
- }
- if (this.calculateGoodsData.config.local.is_use && this.calculateGoodsData.delivery.local.info.time_is_open == 1 && !this.deliveryTime) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.l102.t0')
- });
- return false;
- }
- }
- }
-
- if (this.$refs.goodsForm) {
- let formVerify = true;
- for (let i = 0; i < this.$refs.goodsForm.length; i++) {
- let item = this.$refs.goodsForm[i];
- formVerify = item.verify();
- if (!formVerify) {
- break;
- }
- }
- if (!formVerify) return false;
- }
- if (this.paymentData.system_form) {
- let formVerify = this.$refs.form.verify();
- if (!formVerify) return false;
- }
- return true;
- },
- /**
- * 选择收货地址
- */
- selectAddress() {
- var params = {
- back: this.$util.getCurrentRoute().path,
- local: 0,
- type: 1
- }
- // 外卖配送需要定位地址
- if (this.orderCreateData.delivery.delivery_type == 'local') {
- params.local = 1;
- params.type = 2;
- }
- this.$util.redirectTo('/pages_tool/member/address', params);
- },
- /**
- * 选择配送方式
- * @param data
- * @param calculate
- * @param member_account
- */
- selectDeliveryType(data, calculate = true, member_account = null) {
- if (this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type == data.name) return;
-
- this.orderCreateData.delivery.buyer_ask_delivery_time = {
- start_date: '',
- end_date: ''
- };
- this.deliveryTime = '';
-
- let delivery = {
- delivery_type: data.name,
- delivery_type_name: data.title
- }
- // 如果是门店配送
- if (data.name == 'store' || data.name == 'local') {
- if (data.store_list[0]) {
- delivery.store_id = data.store_list[0].store_id;
- }
- this.storeId = delivery.store_id ? delivery.store_id : 0;
-
- if (!this.orderCreateData.member_address) {
- if (this.paymentData) {
- this.orderCreateData.member_address = {
- name: this.paymentData.member_account.nickname,
- mobile: this.paymentData.member_account.mobile
- };
- } else if (member_account) {
- this.orderCreateData.member_address = {
- name: member_account.nickname,
- mobile: member_account.mobile
- };
-
- }
- }
- }
-
- this.$set(this.orderCreateData, 'delivery', delivery);
- uni.setStorageSync('delivery', delivery);
-
- // 配送方式不为门店配送时
- if (this.orderCreateData.delivery.delivery_type != 'express' && !this.location) this.$util.getLocation();
- if (calculate) this.payment();
-
- if (data.name == 'store') this.storetime('no');
- if (data.name == 'local') this.localtime('no');
- },
- /**
- * 图片错误
- * @param {Object} index
- */
- imageError(index) {
- this.paymentData.goods_list[index].sku_image = this.$util.getDefaultImage().goods;
- this.calculateData.goods_list[index].sku_image = this.$util.getDefaultImage().goods;
- this.$forceUpdate();
- },
- /**
- * 选择门店
- * @param {Object} data
- */
- selectPickupPoint(data) {
- if (data.store_id != this.storeId) {
- this.storeId = data.store_id;
- this.orderCreateData.delivery.store_id = data.store_id;
- this.payment();
- this.resetDeliveryTime();
- // 存储所选门店
- let delivery = uni.getStorageSync('delivery');
- delivery.store_id = data.store_id;
- uni.setStorageSync('delivery', delivery)
- }
- this.$refs.deliveryPopup.close();
- },
- /**
- * 重置提货时间
- */
- resetDeliveryTime() {
- this.orderCreateData.delivery.buyer_ask_delivery_time = {
- start_date: '',
- end_date: ''
- };
- this.deliveryTime = '';
- uni.removeStorageSync('deliveryTime');
- },
- /**
- * 门店
- */
- storetime(type = '') {
- if (this.storeInfo) {
- let data = this.$util.deepClone(this.storeInfo);
- data.delivery_time = typeof data.delivery_time == 'string' && data.delivery_time ? JSON.parse(data.delivery_time) : data.delivery_time;
- if (!data.delivery_time || data.delivery_time.length == undefined && !data.delivery_time.length) {
- data.delivery_time = [{
- start_time: data.start_time,
- end_time: data.end_time
- }]
- }
- let obj = {
- delivery: this.orderCreateData.delivery,
- dataTime: data
- }
- this.$refs.timePopup.open(obj, type);
- this.$forceUpdate();
- }
- },
- /**
- * 选择自提时间
- * @param {Object} data
- */
- selectPickupTime(data) {
- this.deliveryTime = data.data.month + '(' + data.data.time + ')';
-
- this.orderCreateData.delivery.buyer_ask_delivery_time = {
- start_date:data.data.start_date,
- end_date:data.data.end_date
- };
-
- //将时间缓存,避免切换地址时重置
- uni.setStorageSync('deliveryTime', {
- 'deliveryTime': this.deliveryTime,
- 'buyer_ask_delivery_time': this.orderCreateData.delivery.buyer_ask_delivery_time,
- 'delivery_type': this.orderCreateData.delivery.delivery_type
- });
-
- },
- storeImgError() {
- this.storeInfo.store_image = this.$util.getDefaultImage().store;
- },
- openPopup(ref) {
- if (ref == 'deliveryPopup' && (!this.storeList || Object.keys(this.storeList).length <= 1)) return;
- this.tempData = this.$util.deepClone(this.orderCreateData);
- this.$refs[ref].open();
- },
- closePopup(ref) {
- this.orderCreateData = this.$util.deepClone(this.tempData);
- this.$refs[ref].close();
- this.tempData = null;
- },
- //优惠券单独多商户
- /**
- * 显示店铺优惠券信息
- * @param {Object} siteId
- * @param {Object} couponData
- */
- openSiteCoupon(merch_id) {
-
- this.tempData = this.$util.deepClone(this.orderCreateData);
- this.merchCoupon.merch_id = merch_id;
- this.selectCouponId = this.orderCreateData.coupon[merch_id].coupon_id;
- // this.selectCouponMoney = this.orderCreateData.coupon[siteId].coupon_money;
-
- this.merchCoupon.data = this.coupon_list[merch_id];
- this.$refs.couponPopup.open();
- this.$forceUpdate();
- },
- /**商户选择券*/
- selectCoupon(data,merch_id) {
-
- // if (this.orderCreateData.coupon[merch_id].coupon_id == data.coupon_id){
- // this.orderCreateData.coupon[merch_id].coupon_id = 0
- // }else{
- // this.orderCreateData.coupon[merch_id].coupon_id = data.coupon_id
- // };
- if (this.selectCouponId != data.coupon_id) {
- this.selectCouponId = data.coupon_id;
- } else {
- this.selectCouponId = 0;
- }
- this.$forceUpdate();
- // this.orderCreateData.coupon[merch_id].coupon_id = data.coupon_id
- },
- //确定使用优惠券
- useCpopon() {
- this.orderCreateData.coupon[this.merchCoupon.merch_id].coupon_id = this.selectCouponId;
- this.$refs.couponPopup.close();
- this.calculate();
- },
-
- //-------------------
- /**
- * 选择优惠券
- * @param {Object} data
- */
- /*selectCoupon(data) {
- if (this.orderCreateData.coupon.coupon_id == data.coupon_id) this.orderCreateData.coupon = {
- coupon_id: 0
- };
- else this.orderCreateData.coupon = {
- coupon_id: data.coupon_id
- };
- },*/
- /**
- * 使用优惠券
- */
- // useCpopon() {
- // this.$refs.couponPopup.close();
- // this.calculate();
- // },
- /**
- * 切换发票开关
- */
- changeIsInvoice() {
- if (this.orderCreateData.is_invoice == 0) {
- this.orderCreateData.is_invoice = 1;
- if (!this.orderCreateData.invoice_type) this.orderCreateData.invoice_type = this.goodsData.invoice.invoice_type.split(',')[0];
- } else {
- this.orderCreateData.is_invoice = 0;
- }
- },
- /**
- * 切换发票类型
- * @param {Object} invoice_type
- */
- changeInvoiceType(invoice_type) {
- this.orderCreateData.invoice_type = invoice_type;
- },
- /**
- * 切换发票个人还是企业
- * @param {Object} invoice_title_type
- */
- changeInvoiceTitleType(invoice_title_type) {
- this.orderCreateData.invoice_title_type = invoice_title_type;
- },
- /**
- * 切换增值税专用发票开关
- */
- changeIsTaxInvoice() {
- if (this.orderCreateData.is_tax_invoice == 0) this.orderCreateData.is_tax_invoice = 1;
- else this.orderCreateData.is_tax_invoice = 0;
- this.$forceUpdate();
- },
- /**
- * 选择发票内容
- * @param {Object} invoice_content
- */
- changeInvoiceContent(invoice_content) {
- this.orderCreateData.invoice_content = invoice_content;
- this.$forceUpdate();
- },
- /**
- * 验证发票内容
- */
- invoiceVerify() {
- if (!this.orderCreateData.invoice_title) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l840.t0')
- });
- return false;
- }
- if (!this.orderCreateData.taxpayer_number && this.orderCreateData.invoice_title_type == 2) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l846.t0')
- });
- return false;
- }
- if (this.orderCreateData.invoice_type == 1 && !this.orderCreateData.invoice_full_address && this.paymentData.is_virtual == 1) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l852.t0')
- });
- return false;
- }
- if (this.orderCreateData.invoice_type == 2 && !this.orderCreateData.invoice_email) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l858.t0')
- });
- return false;
- }
- if (this.orderCreateData.invoice_type == 2) {
- var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
- if (!reg.test(this.orderCreateData.invoice_email)) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l866.t0')
- });
- return false;
- }
- }
- if (!this.orderCreateData.invoice_content) {
- this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l873.t0')
- });
- return false;
- }
- return true;
- },
- /**
- * 保存发票设置
- */
- saveInvoice() {
- if (this.orderCreateData.is_invoice == 1 && !this.invoiceVerify()) return;
- this.calculate();
- this.$refs.invoicePopup.close();
- },
- /**
- * 保存留言
- */
- saveBuyerMessage() {
- this.$refs.buyerMessagePopup.close();
- },
- /**
- * 选择会员卡
- */
- selectMemberCard() {
- this.orderCreateData.is_open_card = this.orderCreateData.is_open_card ? 0 : 1;
- if (!this.orderCreateData.member_card_unit) this.orderCreateData.member_card_unit = this.cardChargeType[0].key;
- this.payment();
- },
- /**
- * 选择会员卡充值类型
- * @param {Object} key
- */
- selectMembercardUnit(key) {
- this.orderCreateData.member_card_unit = key;
- this.calculate();
- },
- /**
- * 使用积分抵扣
- */
- usePoint() {
- this.orderCreateData.is_point = this.orderCreateData.is_point ? 0 : 1;
- this.calculate();
- },
- /**
- * 支付弹窗关闭
- */
- payClose() {
- // 更新购物车数量
- this.$store.dispatch('getCartNumber');
- this.$util.redirectTo('/pages_order/detail', {
- order_id: this.$refs.choosePaymentPopup.payInfo.order_id
- }, 'redirectTo');
- },
-
- /**
- * 同城配送送达时间
- */
- localtime(type = '') {
- if (this.calculateGoodsData && this.calculateGoodsData.config.local) {
- let data = this.$util.deepClone(this.calculateGoodsData.delivery.local.info);
- if (Object.keys(data).length) {
- if (data.delivery_time) {
- data.end_time = data.delivery_time[(data.delivery_time.length - 1)].end_time;
- }
-
- let obj = {
- delivery: this.orderCreateData.delivery,
- dataTime: data
- }
-
- this.$refs.timePopup.open(obj, type);
- }
-
- }
- },
- /**
- * 剩余起送价
- */
- surplusStartMoney() {
- let money = 0;
- if (this.calculateData && this.calculateData.delivery && this.calculateData.delivery.delivery_type == 'local') {
- let startDeliveryMoney = this.calculateGoodsData.delivery.start_money ?? 0;
- money = parseFloat(startDeliveryMoney) - parseFloat(this.calculateData.goods_money);
- money = money < 0 ? 0 : money;
- }
- return money;
- },
- /**
- * 交易协议
- */
- getTransactionAgreement() {
- this.$api.sendRequest({
- url: '/api/order/transactionagreement',
- success: res => {
- if (res.data) {
- this.transactionAgreement = res.data;
- if (this.transactionAgreement.content) this.transactionAgreement.content = htmlParser(this.transactionAgreement.content);
- }
- }
- })
- },
- editForm(index) {
- this.tempFormData = {
- index: index,
- json_data: this.$util.deepClone(this.goodsData.goods_list[index].goods_form.json_data)
- };
- this.$refs.editFormPopup.open();
- },
- saveForm() {
- if (this.$refs.tempForm.verify()) {
- this.$set(this.paymentData.goods_list[this.tempFormData.index].goods_form, 'json_data', this.$refs.tempForm.formData);
- this.$refs.editFormPopup.close();
- }
- },
- /**
- * 切换次卡
- * @param {Object} index
- */
- selectMemberGoodsCard(index) {
- let sku_id = this.goodsData.goods_list[index].sku_id;
- this.selectGoodsCard = {
- skuId: sku_id,
- itemId: this.orderCreateData.member_goods_card[sku_id] ? this.orderCreateData.member_goods_card[sku_id] : 0,
- cardList: this.$util.deepClone(this.calculateGoodsData.goods_list[index].member_card_list),
- click: (item_id) => {
- this.selectGoodsCard.itemId = this.selectGoodsCard.itemId == item_id ? 0 : item_id;
- }
- }
- this.$refs.memberGoodsCardPopup.open();
- },
- /**
- * 选择次卡
- */
- saveMemberGoodsCard() {
- this.orderCreateData.member_goods_card[this.selectGoodsCard.skuId] = this.selectGoodsCard.itemId || 0;
- this.$refs.memberGoodsCardPopup.close();
- this.payment();
- },
- back() {
- uni.navigateBack({
- delta: 1
- });
- },
- getStoreList() {
- let storeList = null;
- if (this.orderCreateData.delivery) {
- if (this.orderCreateData.delivery.delivery_type == 'local' && this.localConfig) {
- storeList = this.localConfig.store_list;
- storeList = storeList.reduce((res, item) => {
- return {
- ...res,
- [item.store_id]: item
- };
- }, {});
-
- }
- if (this.orderCreateData.delivery.delivery_type == 'store' && this.storeConfig) {
- storeList = this.storeConfig.store_list;
- storeList = storeList.reduce((res, item) => {
- return {
- ...res,
- [item.store_id]: item
- };
- }, {});
- }
- }
- return storeList;
- },
- getStore(mescroll) {
- this.$api.sendRequest({
- url: '/api/store/getStorePage',
- data: {
- page_size: mescroll.size,
- page: mescroll.num,
- latitude: this.latitude ?? '',
- longitude: this.longitude ?? '',
- type: this.orderCreateData.delivery.delivery_type
- },
- success: res => {
- let newArr = [];
- let msg = res.message;
- if (res.code == 0 && res.data) {
- newArr = res.data.list;
- }
- mescroll.endSuccess(newArr.length);
- //设置列表数据
-
- if (mescroll.num == 1) this.storeData = []; //如果是第一页需手动制空列表
- this.storeData = this.storeData.concat(newArr); //追加新数据
- },
- fail: res => {
- mescroll.endErr();
- }
- });
- }
- },
- filters: {
- // 金额格式化输出
- moneyFormat(money) {
- return parseFloat(money).toFixed(2);
- }
- }
+import htmlParser from '@/common/js/html-parser';
+
+export default {
+ options: {
+ styleIsolation: 'shared'
+ },
+ data() {
+ return {
+ outTradeNo: '',
+ isIphoneX: false,
+ orderCreateData: {
+ is_balance: 0,
+ is_point: 1,
+ is_invoice: 0, // 是否需要发票 0 无发票 1 有发票
+ invoice_type: 0, // 发票类型 1 纸质 2 电子
+ invoice_title_type: 1, // 抬头类型 1 个人 2 企业
+ is_tax_invoice: 0, // 是否需要增值税专用发票 0 不需要 1 需要
+ /*coupon: {
+ coupon_id: 0
+ },*/
+ coupon: [],
+ delivery: {},
+ member_goods_card: {}, // 会员次卡
+ order_key: '',
+ buyer_message: ''
+ },
+ paymentData: null,
+ calculateData: null,
+ tempData: null,
+ storeId: 0,
+ deliveryTime: '', // 提货时间
+ memberAddress: null, // 会员收货地址
+ localMemberAddress: null, // 会员本地配送收货地址
+ isRepeat: false,
+ promotionInfo: null,
+ transactionAgreement: {}, // 购买须知
+ tempFormData: null,
+ menuButtonBounding: {}, // 小程序胶囊属性
+ storeConfig: null,
+ localConfig: null,
+ selectGoodsCard: {
+ skuId: 0,
+ itemId: 0,
+ cardList: {}
+ }, // 当前选择的次卡
+ storeData: [],
+ latitude: '',
+ longitude: '',
+ coupon_list: [],
+ modules: [],
+
+ //商户
+ shop_goods_list:[],
+ merchCoupon: {
+ merch_id: 0,
+ data: []
+ },
+ selectCouponId:0
+ }
+ },
+ inject: ['promotion'],
+ created() {
+ // #ifdef MP
+ this.menuButtonBounding = uni.getMenuButtonBoundingClientRect();
+ // #endif
+ this.isIphoneX = this.$util.uniappIsIPhoneX()
+ if (this.storeToken) {
+ Object.assign(this.orderCreateData, uni.getStorageSync(this.createDataKey))
+ if (this.location) {
+ this.orderCreateData.latitude = this.location.latitude;
+ this.orderCreateData.longitude = this.location.longitude;
+ this.latitude = this.location.latitude;
+ this.longitude = this.location.longitude;
+ }
+ this.payment();
+ } else {
+ this.$nextTick(() => {
+ this.$refs.loadingCover.hide();
+ this.$refs.login.open(this.$util.getCurrentRoute().path)
+ })
+ }
+ this.getTransactionAgreement();
+ },
+ computed: {
+ goodsData() {
+ if (this.paymentData) {
+ this.paymentData.goods_list.forEach(item => {
+ if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format);
+ })
+ return this.paymentData;
+ }
+ },
+ calculateGoodsData() {
+ if (this.calculateData) {
+ this.calculateData.goods_list.forEach(item => {
+ if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format);
+ })
+ return this.calculateData;
+ }
+ },
+ // 余额可抵扣金额
+ balanceDeduct() {
+ if (this.calculateData) {
+ if (this.calculateData.member_account && this.calculateData.member_account.balance_total <= parseFloat(this.calculateData.order_money).toFixed(2)) {
+ return parseFloat(this.calculateData.member_account.balance_total).toFixed(2);
+ } else {
+ return parseFloat(this.calculateData.order_money).toFixed(2);
+ }
+ }
+ },
+ // 门店列表
+ storeList() {
+ return this.getStoreList();
+ },
+ // 门店信息
+ storeInfo() {
+ let storeList = this.getStoreList();
+ if (storeList && this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type != 'express' && this.storeId) {
+ return storeList[this.orderCreateData.delivery.store_id];
+ }
+ return null;
+ },
+ // 会员卡购买周期
+ cardChargeType() {
+ if (this.paymentData && this.paymentData.recommend_member_card && Object.keys(this.paymentData.recommend_member_card).length > 0) {
+ let charge_rule_arr = [];
+ let charge_rule = this.paymentData.recommend_member_card.charge_rule;
+ Object.keys(charge_rule).forEach((key, index) => {
+ switch (key) {
+ case 'week':
+ charge_rule_arr.push({
+ 'key': key,
+ 'value': charge_rule[key],
+ 'title': '周卡',
+ unit: '周'
+ });
+ break;
+ case 'month':
+ charge_rule_arr.push({
+ 'key': key,
+ 'value': charge_rule[key],
+ 'title': '月卡',
+ unit: '月'
+ });
+ break;
+ case 'quarter':
+ charge_rule_arr.push({
+ 'key': key,
+ 'value': charge_rule[key],
+ 'title': '季卡',
+ unit: '季'
+ });
+ break;
+ case 'year':
+ charge_rule_arr.push({
+ 'key': key,
+ 'value': charge_rule[key],
+ 'title': '年卡',
+ unit: '年'
+ });
+ break;
+ }
+ })
+ return charge_rule_arr;
+ }
+ }
+ },
+ watch: {
+ storeToken: function (nVal, oVal) {
+ this.payment();
+ },
+ deliveryTime: function (nVal) {
+ if (!nVal) this.$refs.timePopup.refresh();
+ },
+ location: function (nVal) {
+ if (nVal) {
+ this.orderCreateData.latitude = nVal.latitude;
+ this.orderCreateData.longitude = nVal.longitude;
+ this.latitude = nVal.latitude;
+ this.longitude = nVal.longitude;
+ this.payment();
+ }
+ },
+ calculateGoodsData(nVal) {
+ if (nVal && nVal.local_config && nVal.local_config.info.time_is_open && !this.deliveryTime) this.localtime('no');
+ }
+ },
+ methods: {
+ //多商户商品分类
+ goodsSpecFormat(goods_list){
+ goods_list.forEach(item => {
+ if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format);
+ })
+ return goods_list
+ },
+ /**
+ * 父级页面onShow调用
+ */
+ pageShow() {
+ if (uni.getStorageSync('addressBack')) {
+ uni.removeStorageSync('addressBack');
+ this.payment();
+ }
+ },
+ /**
+ * 获取订单结算数据
+ */
+ payment() {
+ this.$api.sendRequest({
+ url: this.api.payment,
+ data: this.handleCreateData(),
+ success: res => {
+ if (res.code == 0 && res.data) {
+ let data = res.data;
+
+ // #ifdef MP-WEIXIN
+ var scene = uni.getStorageSync('is_test') ? 1175 : wx.getLaunchOptionsSync().scene;
+ if ([1175, 1176, 1177, 1191, 1195].indexOf(scene) != -1 && data.delivery.express_type) {
+ data.delivery.express_type = data.delivery.express_type.filter(item => item.name == 'express');
+ }
+ // #endif
+
+ if (data) {
+ // 配送方式
+ if (data.delivery.express_type && data.delivery.express_type.length) {
+ let deliveryStorage = uni.getStorageSync('delivery');
+ let delivery = data.delivery.express_type[0];
+ data.delivery.express_type.forEach(item => {
+ if (deliveryStorage && item.name == deliveryStorage.delivery_type) {
+ delivery = item;
+ }
+ if (item.name == 'local') this.localConfig = item;
+ if (item.name == 'store') this.storeConfig = item;
+ })
+ this.selectDeliveryType(delivery, false, data.member_account);
+ }
+ }
+
+ // 地址、手机号
+ if (data.is_virtual) {
+ this.orderCreateData.member_address = {
+ mobile: data.member_account.mobile ? data.member_account.mobile : ''
+ }
+ }
+
+ //记录订单key
+ this.orderCreateData.order_key = data.order_key;
+
+ this.modules = data.modules;
+
+ //记录多商户优惠券
+ this.orderCreateData.coupon = data.coupon
+
+ //查询优惠券
+ this.getCouponList();
+
+ // 处理表单数据
+ data = this.handleGoodsFormData(data);
+
+ // 该方法在父级组件中
+ this.promotionInfo = this.promotion(data);
+
+ this.paymentData = data;
+
+ this.$forceUpdate();
+ this.calculate();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+
+ setTimeout(() => {
+ this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
+ }, 1000)
+ }
+ }
+ })
+ },
+ //查询优惠券
+ getCouponList() {
+ //查询优惠券
+ if (this.modules.indexOf('coupon') != -1) {
+ this.$api.sendRequest({
+ url: '/api/ordercreate/getcouponlist',
+ data: this.orderCreateData,
+ success: res => {
+ if (res.code == 0 && res.data) {
+ let data = res.data;
+ this.coupon_list = data;
+ this.$forceUpdate();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+
+ // this.orderCreateData.coupon.coupon_id = 0;
+ }
+
+ },
+ /**
+ * 处理商品表单数据
+ * @param {Object} data
+ */
+ handleGoodsFormData(data) {
+ let goodsFormData = uni.getStorageSync('goodFormData');
+ data.goods_list.forEach(item => {
+ if (item.goods_form) {
+ let formData = {};
+ if (item.form_data) {
+ item.form_data.map(formIem => {
+ formData[formIem.id] = formIem;
+ })
+ } else if (goodsFormData && goodsFormData.goods_id == item.goods_id) {
+ goodsFormData.form_data.map(formIem => {
+ formData[formIem.id] = formIem;
+ })
+ }
+ if (Object.keys(formData).length) {
+ item.goods_form.json_data.forEach(formIem => {
+ if (formData[formIem.id]) {
+ formIem.val = formData[formIem.id].val;
+ }
+ })
+ }
+ }
+ });
+ return data;
+ },
+ /**
+ * 订单创建
+ */
+ calculate() {
+ this.$api.sendRequest({
+ url: this.api.calculate,
+ data: this.handleCreateData(),
+ success: res => {
+ if (this.$refs.loadingCover && this.$refs.loadingCover.isShow) this.$refs.loadingCover.hide();
+ if (res.code == 0 && res.data) {
+
+ // 处理表单数据
+ this.calculateData = this.handleGoodsFormData(res.data);
+
+ //多商户商品
+ this.shop_goods_list = res.data.shop_goods_list
+ //---------
+ this.calculateData.coupon_list = this.coupon_list;
+ if (res.data.delivery) {
+ if (res.data.delivery.delivery_type == 'express') this.memberAddress = res.data.delivery.member_address;
+ if (res.data.delivery.delivery_type == 'local') {
+ this.localMemberAddress = res.data.delivery.member_address;
+ }
+ }
+ // 次卡
+ res.data.goods_list.forEach(item => {
+ if (item.member_card_list) {
+ if (this.orderCreateData.member_goods_card[item.sku_id]) {
+ let itemId = this.orderCreateData.member_goods_card[item.sku_id];
+ if (!item.member_card_list[itemId]) delete this.orderCreateData.member_goods_card[item.sku_id];
+ }
+ } else if (this.orderCreateData.member_goods_card[item.sku_id]) {
+ delete this.orderCreateData.member_goods_card[item.sku_id];
+ }
+ });
+ //多商户
+ this.orderCreateData.coupon = res.data.coupon
+ // if (!res.data.coupon_id) this.orderCreateData.coupon.coupon_id = 0;
+ // else this.orderCreateData.coupon.coupon_id = res.data.coupon_id;
+
+ this.$forceUpdate();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ })
+ },
+ /**
+ * 提交订单
+ */
+ create() {
+ if (!this.verify() || this.isRepeat) return;
+ this.isRepeat = true;
+ uni.showLoading({
+ title: ''
+ });
+ this.$api.sendRequest({
+ url: this.api.create,
+ data: this.handleCreateData(),
+ success: res => {
+ uni.hideLoading();
+ if (res.code == 0) {
+ this.outTradeNo = res.data;
+ uni.removeStorageSync('deliveryTime');
+ uni.removeStorageSync('goodFormData');
+ uni.setStorageSync('paySource', '');
+ if (this.calculateData.pay_money == 0) {
+ // #ifdef MP
+ if (this.paymentData.is_virtual || this.orderCreateData.delivery.delivery_type == 'store') {
+ this.$util.subscribeMessage('ORDER_VERIFY_OUT_TIME,VERIFY_CODE_EXPIRE,VERIFY');
+ }
+ // #endif
+ this.$util.redirectTo('/pages_tool/pay/result', {
+ code: res.data
+ }, 'redirectTo');
+ } else {
+ this.openChoosePayment();
+ }
+ // 更新购物车数量
+ this.$store.dispatch('getCartNumber');
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ this.isRepeat = false;
+ }
+ }
+ })
+ },
+ /**
+ * 处理订单计算、创建传参
+ */
+ handleCreateData() {
+ let data = this.$util.deepClone(this.orderCreateData);
+ // 订单表单
+ if (this.$refs.form) {
+ data.form_data = {
+ form_id: this.paymentData.system_form.id,
+ form_data: this.$util.deepClone(this.$refs.form.formData)
+ };
+ }
+ // 商品表单
+ if (this.$refs.goodsForm) {
+ if (!data.form_data) data.form_data = {};
+ data.form_data.goods_form = {};
+ this.$refs.goodsForm.forEach(item => {
+ data.form_data.goods_form[item._props.customAttr.sku_id] = {
+ form_id: item._props.customAttr.form_id,
+ form_data: this.$util.deepClone(item.formData)
+ }
+ })
+ }
+ Object.keys(data).forEach((key) => {
+ let item = data[key];
+ if (typeof item == 'object') data[key] = JSON.stringify(item);
+ })
+
+ if (this.paymentData && this.orderCreateData.is_virtual == 0) {
+ if (data.member_address && this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type != 'store') {
+ delete data.member_address;
+ }
+ }
+
+ return data;
+ },
+ /**
+ * 打开支付弹窗
+ */
+ openChoosePayment() {
+ // #ifdef MP
+ if (this.paymentData.is_virtual) {
+ this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY');
+ } else {
+ switch (this.orderCreateData.delivery.delivery_type) {
+ case 'express': //物流配送
+ this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY,ORDER_DELIVERY');
+ break;
+ case 'store': //门店自提
+ this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY');
+ break;
+ case 'local': //同城配送
+ this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY,ORDER_DELIVERY');
+ break;
+ }
+ }
+ // #endif
+
+ this.$refs.choosePaymentPopup.getPayInfo(this.outTradeNo);
+ },
+ verify() {
+ if (this.paymentData.is_virtual == 1) {
+ if (!this.orderCreateData.member_address.mobile) {
+ this.$util.showToast({
+ title: '请输入预留手机'
+ });
+ return false;
+ }
+ if (!this.$util.verifyMobile(this.orderCreateData.member_address.mobile)) {
+ this.$util.showToast({
+ title: '请输入正确的手机号'
+ });
+ return false;
+ }
+ } else {
+ if (!this.orderCreateData.delivery || !this.orderCreateData.delivery.delivery_type) {
+ this.$util.showToast({
+ title: '商家未设置配送方式'
+ });
+ return false;
+ }
+ if (
+ (this.orderCreateData.delivery.delivery_type == 'express' && !this.memberAddress) ||
+ (this.orderCreateData.delivery.delivery_type == 'local' && !this.localMemberAddress)
+ ) {
+ this.$util.showToast({
+ title: '请先选择您的收货地址'
+ });
+ return false;
+ }
+
+ if (this.orderCreateData.delivery.delivery_type == 'store') {
+ if (!this.orderCreateData.delivery.store_id) {
+ this.$util.showToast({
+ title: '没有可提货的门店,请选择其他配送方式'
+ });
+ return false;
+ }
+ if (!this.orderCreateData.member_address.mobile) {
+ this.$util.showToast({
+ title: '请输入预留手机'
+ });
+ return false;
+ }
+ if (!this.$util.verifyMobile(this.orderCreateData.member_address.mobile)) {
+ this.$util.showToast({
+ title: '请输入正确的手机号'
+ });
+ return false;
+ }
+ if (!this.deliveryTime) {
+ this.$util.showToast({
+ title: '请选择提货时间'
+ });
+ return false;
+ }
+ }
+
+ if (this.orderCreateData.delivery.delivery_type == 'local') {
+ if (!this.orderCreateData.delivery.store_id) {
+ this.$util.showToast({
+ title: '没有可配送的门店,请选择其他配送方式'
+ });
+ return false;
+ }
+ if (this.calculateGoodsData.config.local.is_use && this.calculateGoodsData.delivery.local.info.time_is_open == 1 && !this.deliveryTime) {
+ this.$util.showToast({
+ title: '请选择送达时间'
+ });
+ return false;
+ }
+ }
+ }
+
+ if (this.$refs.goodsForm) {
+ let formVerify = true;
+ for (let i = 0; i < this.$refs.goodsForm.length; i++) {
+ let item = this.$refs.goodsForm[i];
+ formVerify = item.verify();
+ if (!formVerify) {
+ break;
+ }
+ }
+ if (!formVerify) return false;
+ }
+ if (this.paymentData.system_form) {
+ let formVerify = this.$refs.form.verify();
+ if (!formVerify) return false;
+ }
+ return true;
+ },
+ /**
+ * 选择收货地址
+ */
+ selectAddress() {
+ var params = {
+ back: this.$util.getCurrentRoute().path,
+ local: 0,
+ type: 1
+ }
+ // 外卖配送需要定位地址
+ if (this.orderCreateData.delivery.delivery_type == 'local') {
+ params.local = 1;
+ params.type = 2;
+ }
+ this.$util.redirectTo('/pages_tool/member/address', params);
+ },
+ /**
+ * 选择配送方式
+ * @param data
+ * @param calculate
+ * @param member_account
+ */
+ selectDeliveryType(data, calculate = true, member_account = null) {
+ if (this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type == data.name) return;
+
+ this.orderCreateData.delivery.buyer_ask_delivery_time = {
+ start_date: '',
+ end_date: ''
+ };
+ this.deliveryTime = '';
+
+ let delivery = {
+ delivery_type: data.name,
+ delivery_type_name: data.title
+ }
+ // 如果是门店配送
+ if (data.name == 'store' || data.name == 'local') {
+ if (data.store_list[0]) {
+ delivery.store_id = data.store_list[0].store_id;
+ }
+ this.storeId = delivery.store_id ? delivery.store_id : 0;
+
+ if (!this.orderCreateData.member_address) {
+ if (this.paymentData) {
+ this.orderCreateData.member_address = {
+ name: this.paymentData.member_account.nickname,
+ mobile: this.paymentData.member_account.mobile
+ };
+ } else if (member_account) {
+ this.orderCreateData.member_address = {
+ name: member_account.nickname,
+ mobile: member_account.mobile
+ };
+
+ }
+ }
+ }
+
+ this.$set(this.orderCreateData, 'delivery', delivery);
+ uni.setStorageSync('delivery', delivery);
+
+ // 配送方式不为门店配送时
+ if (this.orderCreateData.delivery.delivery_type != 'express' && !this.location) this.$util.getLocation();
+ if (calculate) this.payment();
+
+ if (data.name == 'store') this.storetime('no');
+ if (data.name == 'local') this.localtime('no');
+ },
+ /**
+ * 图片错误
+ * @param {Object} index
+ */
+ imageError(index) {
+ this.paymentData.goods_list[index].sku_image = this.$util.getDefaultImage().goods;
+ this.calculateData.goods_list[index].sku_image = this.$util.getDefaultImage().goods;
+ this.$forceUpdate();
+ },
+ /**
+ * 选择门店
+ * @param {Object} data
+ */
+ selectPickupPoint(data) {
+ if (data.store_id != this.storeId) {
+ this.storeId = data.store_id;
+ this.orderCreateData.delivery.store_id = data.store_id;
+ this.payment();
+ this.resetDeliveryTime();
+ // 存储所选门店
+ let delivery = uni.getStorageSync('delivery');
+ delivery.store_id = data.store_id;
+ uni.setStorageSync('delivery', delivery)
+ }
+ this.$refs.deliveryPopup.close();
+ },
+ /**
+ * 重置提货时间
+ */
+ resetDeliveryTime() {
+ this.orderCreateData.delivery.buyer_ask_delivery_time = {
+ start_date: '',
+ end_date: ''
+ };
+ this.deliveryTime = '';
+ uni.removeStorageSync('deliveryTime');
+ },
+ /**
+ * 门店
+ */
+ storetime(type = '') {
+ if (this.storeInfo) {
+ let data = this.$util.deepClone(this.storeInfo);
+ data.delivery_time = typeof data.delivery_time == 'string' && data.delivery_time ? JSON.parse(data.delivery_time) : data.delivery_time;
+ if (!data.delivery_time || data.delivery_time.length == undefined && !data.delivery_time.length) {
+ data.delivery_time = [{
+ start_time: data.start_time,
+ end_time: data.end_time
+ }]
+ }
+ let obj = {
+ delivery: this.orderCreateData.delivery,
+ dataTime: data
+ }
+ this.$refs.timePopup.open(obj, type);
+ this.$forceUpdate();
+ }
+ },
+ /**
+ * 选择自提时间
+ * @param {Object} data
+ */
+ selectPickupTime(data) {
+ this.deliveryTime = data.data.month + '(' + data.data.time + ')';
+
+ this.orderCreateData.delivery.buyer_ask_delivery_time = {
+ start_date:data.data.start_date,
+ end_date:data.data.end_date
+ };
+
+ //将时间缓存,避免切换地址时重置
+ uni.setStorageSync('deliveryTime', {
+ 'deliveryTime': this.deliveryTime,
+ 'buyer_ask_delivery_time': this.orderCreateData.delivery.buyer_ask_delivery_time,
+ 'delivery_type': this.orderCreateData.delivery.delivery_type
+ });
+
+ },
+ storeImgError() {
+ this.storeInfo.store_image = this.$util.getDefaultImage().store;
+ },
+ openPopup(ref) {
+ if (ref == 'deliveryPopup' && (!this.storeList || Object.keys(this.storeList).length <= 1)) return;
+ this.tempData = this.$util.deepClone(this.orderCreateData);
+ this.$refs[ref].open();
+ },
+ closePopup(ref) {
+ this.orderCreateData = this.$util.deepClone(this.tempData);
+ this.$refs[ref].close();
+ this.tempData = null;
+ },
+ //优惠券单独多商户
+ /**
+ * 显示店铺优惠券信息
+ * @param {Object} siteId
+ * @param {Object} couponData
+ */
+ openSiteCoupon(merch_id) {
+
+ this.tempData = this.$util.deepClone(this.orderCreateData);
+ this.merchCoupon.merch_id = merch_id;
+ this.selectCouponId = this.orderCreateData.coupon[merch_id].coupon_id;
+ // this.selectCouponMoney = this.orderCreateData.coupon[siteId].coupon_money;
+
+ this.merchCoupon.data = this.coupon_list[merch_id];
+ this.$refs.couponPopup.open();
+ this.$forceUpdate();
+ },
+ /**商户选择券*/
+ selectCoupon(data,merch_id) {
+
+ // if (this.orderCreateData.coupon[merch_id].coupon_id == data.coupon_id){
+ // this.orderCreateData.coupon[merch_id].coupon_id = 0
+ // }else{
+ // this.orderCreateData.coupon[merch_id].coupon_id = data.coupon_id
+ // };
+ if (this.selectCouponId != data.coupon_id) {
+ this.selectCouponId = data.coupon_id;
+ } else {
+ this.selectCouponId = 0;
+ }
+ this.$forceUpdate();
+ // this.orderCreateData.coupon[merch_id].coupon_id = data.coupon_id
+ },
+ //确定使用优惠券
+ useCpopon() {
+ this.orderCreateData.coupon[this.merchCoupon.merch_id].coupon_id = this.selectCouponId;
+ this.$refs.couponPopup.close();
+ this.calculate();
+ },
+
+ //-------------------
+ /**
+ * 选择优惠券
+ * @param {Object} data
+ */
+ /*selectCoupon(data) {
+ if (this.orderCreateData.coupon.coupon_id == data.coupon_id) this.orderCreateData.coupon = {
+ coupon_id: 0
+ };
+ else this.orderCreateData.coupon = {
+ coupon_id: data.coupon_id
+ };
+ },*/
+ /**
+ * 使用优惠券
+ */
+ // useCpopon() {
+ // this.$refs.couponPopup.close();
+ // this.calculate();
+ // },
+ /**
+ * 切换发票开关
+ */
+ changeIsInvoice() {
+ if (this.orderCreateData.is_invoice == 0) {
+ this.orderCreateData.is_invoice = 1;
+ if (!this.orderCreateData.invoice_type) this.orderCreateData.invoice_type = this.goodsData.invoice.invoice_type.split(',')[0];
+ } else {
+ this.orderCreateData.is_invoice = 0;
+ }
+ },
+ /**
+ * 切换发票类型
+ * @param {Object} invoice_type
+ */
+ changeInvoiceType(invoice_type) {
+ this.orderCreateData.invoice_type = invoice_type;
+ },
+ /**
+ * 切换发票个人还是企业
+ * @param {Object} invoice_title_type
+ */
+ changeInvoiceTitleType(invoice_title_type) {
+ this.orderCreateData.invoice_title_type = invoice_title_type;
+ },
+ /**
+ * 切换增值税专用发票开关
+ */
+ changeIsTaxInvoice() {
+ if (this.orderCreateData.is_tax_invoice == 0) this.orderCreateData.is_tax_invoice = 1;
+ else this.orderCreateData.is_tax_invoice = 0;
+ this.$forceUpdate();
+ },
+ /**
+ * 选择发票内容
+ * @param {Object} invoice_content
+ */
+ changeInvoiceContent(invoice_content) {
+ this.orderCreateData.invoice_content = invoice_content;
+ this.$forceUpdate();
+ },
+ /**
+ * 验证发票内容
+ */
+ invoiceVerify() {
+ if (!this.orderCreateData.invoice_title) {
+ this.$util.showToast({
+ title: '请填写发票抬头'
+ });
+ return false;
+ }
+ if (!this.orderCreateData.taxpayer_number && this.orderCreateData.invoice_title_type == 2) {
+ this.$util.showToast({
+ title: '请填写纳税人识别号'
+ });
+ return false;
+ }
+ if (this.orderCreateData.invoice_type == 1 && !this.orderCreateData.invoice_full_address && this.paymentData.is_virtual == 1) {
+ this.$util.showToast({
+ title: '请填写发票邮寄地址'
+ });
+ return false;
+ }
+ if (this.orderCreateData.invoice_type == 2 && !this.orderCreateData.invoice_email) {
+ this.$util.showToast({
+ title: '请填写邮箱'
+ });
+ return false;
+ }
+ if (this.orderCreateData.invoice_type == 2) {
+ var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
+ if (!reg.test(this.orderCreateData.invoice_email)) {
+ this.$util.showToast({
+ title: '请填写正确的邮箱'
+ });
+ return false;
+ }
+ }
+ if (!this.orderCreateData.invoice_content) {
+ this.$util.showToast({
+ title: '请选择发票内容'
+ });
+ return false;
+ }
+ return true;
+ },
+ /**
+ * 保存发票设置
+ */
+ saveInvoice() {
+ if (this.orderCreateData.is_invoice == 1 && !this.invoiceVerify()) return;
+ this.calculate();
+ this.$refs.invoicePopup.close();
+ },
+ /**
+ * 保存留言
+ */
+ saveBuyerMessage() {
+ this.$refs.buyerMessagePopup.close();
+ },
+ /**
+ * 选择会员卡
+ */
+ selectMemberCard() {
+ this.orderCreateData.is_open_card = this.orderCreateData.is_open_card ? 0 : 1;
+ if (!this.orderCreateData.member_card_unit) this.orderCreateData.member_card_unit = this.cardChargeType[0].key;
+ this.payment();
+ },
+ /**
+ * 选择会员卡充值类型
+ * @param {Object} key
+ */
+ selectMembercardUnit(key) {
+ this.orderCreateData.member_card_unit = key;
+ this.calculate();
+ },
+ /**
+ * 使用积分抵扣
+ */
+ usePoint() {
+ this.orderCreateData.is_point = this.orderCreateData.is_point ? 0 : 1;
+ this.calculate();
+ },
+ /**
+ * 支付弹窗关闭
+ */
+ payClose() {
+ // 更新购物车数量
+ this.$store.dispatch('getCartNumber');
+ this.$util.redirectTo('/pages_order/detail', {
+ order_id: this.$refs.choosePaymentPopup.payInfo.order_id
+ }, 'redirectTo');
+ },
+
+ /**
+ * 同城配送送达时间
+ */
+ localtime(type = '') {
+ if (this.calculateGoodsData && this.calculateGoodsData.config.local) {
+ let data = this.$util.deepClone(this.calculateGoodsData.delivery.local.info);
+ if (Object.keys(data).length) {
+ if (data.delivery_time) {
+ data.end_time = data.delivery_time[(data.delivery_time.length - 1)].end_time;
+ }
+
+ let obj = {
+ delivery: this.orderCreateData.delivery,
+ dataTime: data
+ }
+
+ this.$refs.timePopup.open(obj, type);
+ }
+
+ }
+ },
+ /**
+ * 剩余起送价
+ */
+ surplusStartMoney() {
+ let money = 0;
+ if (this.calculateData && this.calculateData.delivery && this.calculateData.delivery.delivery_type == 'local') {
+ let startDeliveryMoney = this.calculateGoodsData.delivery.start_money ?? 0;
+ money = parseFloat(startDeliveryMoney) - parseFloat(this.calculateData.goods_money);
+ money = money < 0 ? 0 : money;
+ }
+ return money;
+ },
+ /**
+ * 交易协议
+ */
+ getTransactionAgreement() {
+ this.$api.sendRequest({
+ url: '/api/order/transactionagreement',
+ success: res => {
+ if (res.data) {
+ this.transactionAgreement = res.data;
+ if (this.transactionAgreement.content) this.transactionAgreement.content = htmlParser(this.transactionAgreement.content);
+ }
+ }
+ })
+ },
+ editForm(index) {
+ this.tempFormData = {
+ index: index,
+ json_data: this.$util.deepClone(this.goodsData.goods_list[index].goods_form.json_data)
+ };
+ this.$refs.editFormPopup.open();
+ },
+ saveForm() {
+ if (this.$refs.tempForm.verify()) {
+ this.$set(this.paymentData.goods_list[this.tempFormData.index].goods_form, 'json_data', this.$refs.tempForm.formData);
+ this.$refs.editFormPopup.close();
+ }
+ },
+ /**
+ * 切换次卡
+ * @param {Object} index
+ */
+ selectMemberGoodsCard(index) {
+ let sku_id = this.goodsData.goods_list[index].sku_id;
+ this.selectGoodsCard = {
+ skuId: sku_id,
+ itemId: this.orderCreateData.member_goods_card[sku_id] ? this.orderCreateData.member_goods_card[sku_id] : 0,
+ cardList: this.$util.deepClone(this.calculateGoodsData.goods_list[index].member_card_list),
+ click: (item_id) => {
+ this.selectGoodsCard.itemId = this.selectGoodsCard.itemId == item_id ? 0 : item_id;
+ }
+ }
+ this.$refs.memberGoodsCardPopup.open();
+ },
+ /**
+ * 选择次卡
+ */
+ saveMemberGoodsCard() {
+ this.orderCreateData.member_goods_card[this.selectGoodsCard.skuId] = this.selectGoodsCard.itemId || 0;
+ this.$refs.memberGoodsCardPopup.close();
+ this.payment();
+ },
+ back() {
+ uni.navigateBack({
+ delta: 1
+ });
+ },
+ getStoreList() {
+ let storeList = null;
+ if (this.orderCreateData.delivery) {
+ if (this.orderCreateData.delivery.delivery_type == 'local' && this.localConfig) {
+ storeList = this.localConfig.store_list;
+ storeList = storeList.reduce((res, item) => {
+ return {
+ ...res,
+ [item.store_id]: item
+ };
+ }, {});
+
+ }
+ if (this.orderCreateData.delivery.delivery_type == 'store' && this.storeConfig) {
+ storeList = this.storeConfig.store_list;
+ storeList = storeList.reduce((res, item) => {
+ return {
+ ...res,
+ [item.store_id]: item
+ };
+ }, {});
+ }
+ }
+ return storeList;
+ },
+ getStore(mescroll) {
+ this.$api.sendRequest({
+ url: '/api/store/getStorePage',
+ data: {
+ page_size: mescroll.size,
+ page: mescroll.num,
+ latitude: this.latitude ?? '',
+ longitude: this.longitude ?? '',
+ type: this.orderCreateData.delivery.delivery_type
+ },
+ success: res => {
+ let newArr = [];
+ let msg = res.message;
+ if (res.code == 0 && res.data) {
+ newArr = res.data.list;
+ }
+ mescroll.endSuccess(newArr.length);
+ //设置列表数据
+
+ if (mescroll.num == 1) this.storeData = []; //如果是第一页需手动制空列表
+ this.storeData = this.storeData.concat(newArr); //追加新数据
+ },
+ fail: res => {
+ mescroll.endErr();
+ }
+ });
+ }
+ },
+ filters: {
+ // 金额格式化输出
+ moneyFormat(money) {
+ return parseFloat(money).toFixed(2);
+ }
+ }
}
\ No newline at end of file
diff --git a/pages_order/detail.vue b/pages_order/detail.vue
index 0a2983b..0b578a0 100644
--- a/pages_order/detail.vue
+++ b/pages_order/detail.vue
@@ -1,841 +1,841 @@
-
-
-
-
-
-
-
-
- {{ orderData.order_status_name }}
- ({{ orderData.promotion_status_name }})
-
-
- 预计{{ $util.timeStampTurnTime(orderData.predict_delivery_time, true) }}日后发货
-
- { $lang("order.detail.l16") } orderData.close_cause }}
-
-
-
- 剩余时间:
-
-
-
-
-
-
-
-
-
-
-
- {{ orderData.name }} {{ orderData.mobile }}
-
-
- { $lang("order.detail.l37") } orderData.full_address }} {{ orderData.address }}
-
-
-
-
- {{ $lang("order.detail.l42") }}
- {{ orderData.buyer_ask_delivery_time }}
-
-
-
- {{ $lang("order.detail.l47") }}
- {{ orderData.package_list.deliverer }}
-
-
- {{ $lang("order.detail.l51") }}
- {{ orderData.package_list.deliverer_mobile }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ orderData.delivery_store_name }}
-
-
-
-
- 营业时间:{{ orderData.delivery_store_info.open_date }}
- { $lang("order._components.common-payment.l469.t0") } orderData.delivery_store_info.full_address }}
-
-
-
-
-
- {{ $lang("order.detail.l84") }}
-
-
-
-
- {{ $lang("order._components.common-payment.l138.t0") }}
-
-
-
- {{ $lang("order._components.common-payment.l144.t0") }}
-
-
-
- {{ $lang("order._components.common-payment.l149.t0") }}
-
-
-
-
-
-
-
-
- {{ $lang("order.detail.l106") }}
- {{ orderData.delivery_code }}
-
- {{ $lang("order.detail.l109") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ goodsItem.sku_name }}
-
-
-
- {{ x.spec_value_name }}
- {{ i < goodsItem.sku_spec_format.length - 1 ? '; ' : '' }}
-
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{
- parseFloat(goodsItem.price).toFixed(2).split('.')[0]
- }}
- .{{
- parseFloat(goodsItem.price).toFixed(2).split('.')[1] }}
-
-
-
-
-
- {{ goodsItem.num }}
-
-
-
-
- 次卡抵扣
-
- -{{ $lang('common.currency_symbol') }}
- {{
- parseFloat(goodsItem.card_promotion_money).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(goodsItem.card_promotion_money).toFixed(2).split('.')[1] }}
-
-
-
-
-
-
-
- {{ item.value.title }}:
-
-
-
-
-
-
- {{ item.val }}
- {{ $lang("order.detail.l109") }}
-
-
-
-
-
-
-
-
- {{ orderData.order_status == 10 ? '申请售后' : $lang('order.detail.l192') }}
-
-
-
-
- {{ orderData.order_status == 10 ? '查看售后' : $lang('order.detail.l198') }}
-
-
-
-
-
-
-
-
-
- {{ $lang("order.detail.l208") }}
-
- {{ orderData.order_type_name }}
-
-
-
- {{ $lang("order.detail.l214") }}
-
- {{ orderData.order_no }}
- {{ $lang("order.detail.l109") }}
-
-
-
- {{ $lang("order.detail.l221") }}
-
- {{ orderData.out_trade_no }}
-
-
-
- {{ $lang("order.detail.l227") }}
-
- {{ $util.timeStampTurnTime(orderData.create_time) }}
-
-
-
- {{ $lang("order.detail.l233") }}
-
- {{ $util.timeStampTurnTime(orderData.close_time) }}
-
-
-
-
-
- {{ $lang("order.detail.l241") }}
-
- {{ orderData.pay_type_name }}
-
-
-
- {{ $lang("order.detail.l247") }}
-
- {{ $util.timeStampTurnTime(orderData.pay_time) }}
-
-
-
-
- {{ $lang("order.detail.l254") }}
-
- {{ orderData.delivery_type_name }}
-
-
-
- {{ $lang("order.detail.l260") }}
-
- {{ orderData.buyer_message }}
-
-
-
- {{ $lang("order.detail.l266") }}
-
- {{ orderData.promotion_type_name }}
-
-
-
-
-
- {{ $lang("order.detail.l274") }}
-
- {{ orderData.invoice_type == 1 ? '纸质发票' : $lang('order.detail.l276') }}
-
-
-
- {{ $lang("order.detail.l280") }}
-
- {{ orderData.invoice_title_type == 1 ? '个人' : $lang('order.detail.l282') }}
-
-
-
- {{ $lang("order.detail.l286") }}
-
- {{ orderData.invoice_title }}
-
-
-
-
- {{ $lang("order.detail.l293") }}
-
- {{ orderData.invoice_content }}
-
-
-
- {{ $lang("order.detail.l299") }}
-
- {{ orderData.invoice_full_address }}
-
-
-
- {{ $lang("order.detail.l305") }}
-
- {{ orderData.invoice_email }}
-
-
-
-
-
-
- {{ item.value.title }}:
-
-
-
-
-
-
- {{ item.val }}
- {{ $lang("order.detail.l109") }}
-
-
-
-
-
-
- {{ $lang("order.detail.l329") }}
- {{ $lang("diy.diy-listmenu.l15.t0") }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("order.detail.l350") }}
-
-
-
- {{ orderData.virtual_code }}
- {{ $lang("order.detail.l109") }}
-
-
-
-
- {{ $lang("order.detail.l360") }}
-
- {{ $lang("order.detail.l362") }}
-
-
- 剩余{{ orderData.virtual_goods.verify_total_count - orderData.virtual_goods.verify_use_num
- }}次/共{{
- orderData.virtual_goods.verify_total_count }}次
-
-
-
-
- {{ $lang("order.detail.l372") }}
-
- {{
- $util.timeStampTurnTime(orderData.virtual_goods.expire_time) }}
- {{ $lang("order.detail.l376") }}
-
-
-
-
-
- {{ $lang("order.detail.l382") }}
-
-
-
- {{ $lang("order.detail.l387") }}
-
- {{ item.verifier_name }}
-
-
-
- {{ $lang("order.detail.l393") }}
-
- {{ $util.timeStampTurnTime(item.verify_time) }}
-
-
-
-
- {{ $lang("order.detail.l400") }}
-
-
-
-
-
- {{ $lang("order.detail.l406") }}
-
-
- {{ $lang("order.detail.l409") }}
-
- {{ item.card_info.cardno }}
- {{ $lang("order.detail.l109") }}
-
-
-
- {{ $lang("order.detail.l416") }}
-
- {{ item.card_info.password }}
- {{ $lang("order.detail.l109") }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("order.detail.l350") }}
-
-
-
- {{ orderData.virtual_code }}
- {{ $lang("order.detail.l109") }}
-
-
-
-
- {{ $lang("order.detail.l360") }}
-
- {{ $lang("order.detail.l362") }}
-
-
- 剩余{{ orderData.virtual_goods.verify_total_count - orderData.virtual_goods.verify_use_num
- }}次/共{{
- orderData.virtual_goods.verify_total_count }}次
-
-
-
-
- {{ $lang("order.detail.l372") }}
-
- {{
- $util.timeStampTurnTime(orderData.virtual_goods.expire_time) }}
- {{ $lang("order.detail.l376") }}
-
-
-
-
-
- {{ $lang("order.detail.l382") }}
-
-
-
- {{ $lang("order.detail.l387") }}
-
- {{ item.verifier_name }}
-
-
-
- {{ $lang("order.detail.l393") }}
-
- {{ $util.timeStampTurnTime(item.verify_time) }}
-
-
-
-
- {{ $lang("order.detail.l400") }}
-
-
-
-
-
- {{ $lang("order._components.common-payment.l335.t0") }}
-
-
- {{ $lang('common.currency_symbol') }}
- {{ orderData.goods_money }}
-
-
-
-
- {{ $lang("order._components.common-payment.l342.t0") }}
-
-
- {{ $lang('common.currency_symbol') }}
- {{ orderData.delivery_money }}
-
-
-
-
- {{ $lang("order._components.common-payment.l393.t0") }}
-
-
- {{ $lang('common.currency_symbol') }}
- {{ orderData.member_card_money }}
-
-
-
-
-
- 税费
- ({{ orderData.invoice_rate }}%)
-
-
-
- +
- {{ $lang('common.currency_symbol') }}
- {{ orderData.invoice_money }}
-
-
-
-
- {{ $lang("order._components.common-payment.l361.t0") }}
-
-
- +
- {{ $lang('common.currency_symbol') }}
- {{ orderData.invoice_delivery_money }}
-
-
-
-
- {{ $lang("order.detail.l537") }}
-
-
- -
- +
- {{ $lang('common.currency_symbol') }}
- {{ orderData.adjust_money | abs }}
-
-
-
-
- {{ $lang("order._components.common-payment.l239.t0") }}
-
-
- -
- {{ $lang('common.currency_symbol') }}
- {{ orderData.promotion_money }}
-
-
-
-
- {{ $lang("diy.diy-coupon.l209.t0") }}
-
-
- -
- {{ $lang('common.currency_symbol') }}
- {{ orderData.coupon_money }}
-
-
-
-
- {{ $lang("order.detail.l568") }}
-
-
- -
- {{ $lang('common.currency_symbol') }}
- {{ orderData.balance_money }}
-
-
-
-
- {{ $lang("order._components.common-payment.l385.t0") }}
-
-
- -
- {{ $lang('common.currency_symbol') }}
- {{ orderData.point_money }}
-
-
-
-
-
- {{ $lang("order.detail.l589") }}
-
- {{ $lang('common.currency_symbol') }}
- {{ orderData.order_money }}
-
-
-
-
-
-
- {{ $lang("order.detail.l601") }}
- {{ $lang("order.detail.l602") }}
-
-
-
- {{ operationItem.title }}
-
-
-
-
-
-
- {{ $lang("order.detail.l601") }}
- {{ $lang("order.detail.l602") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages_order/detail_point.vue b/pages_order/detail_point.vue
index df9fab9..2b816c4 100644
--- a/pages_order/detail_point.vue
+++ b/pages_order/detail_point.vue
@@ -1,302 +1,302 @@
-
-
-
-
-
-
-
-
-
-
- {{ orderData.order_status == 0 ? '待支付' : orderData.order_status == 1 ? '已完成' :
- orderData.order_status == -1 ? '已关闭' : '' }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ orderData.exchange_name }}
-
-
-
-
- {{ orderData.point }}积分
-
- +
- {{ $lang('common.currency_symbol') }}
- {{ orderData.price }}
-
-
-
-
-
-
-
- {{ orderData.num }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("order.detail.l214") }}
-
- {{ orderData.order_no }}
- {{ $lang("order.detail.l109") }}
-
-
-
- {{ $lang("order.detail.l221") }}
-
- {{ orderData.out_trade_no }}
-
-
-
- {{ $lang("order.detail.l227") }}
-
- {{ $util.timeStampTurnTime(orderData.create_time) }}
-
-
-
- {{ $lang("order.detail.l233") }}
-
- {{ $util.timeStampTurnTime(orderData.close_time) }}
-
-
-
-
-
-
-
-
-
- {{ $lang("order.detail_point.l99") }}
-
-
- {{ orderData.point }}
-
-
-
-
- {{ $lang("order._components.common-payment.l342.t0") }}
-
-
- {{ $lang('common.currency_symbol') }}
- {{ orderData.delivery_price }}
-
-
-
-
-
- {{ $lang("order.detail.l589") }}
-
- {{ $lang('common.currency_symbol') }}
- {{ orderData.order_money }}
-
-
-
-
-
- {{ $lang("order.detail_point.l126") }}
- {{ $lang("order.detail_point.l128") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages_order/list.vue b/pages_order/list.vue
index 69d3db6..6662903 100644
--- a/pages_order/list.vue
+++ b/pages_order/list.vue
@@ -1,475 +1,475 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ statusItem.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{
- goodsItem.goods_name }}
- {{ goodsItem.sku_name }}
-
-
-
- {{ x.spec_value_name }}
- {{ i < goodsItem.sku_spec_format.length - 1 ? '; ' : '' }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_order/payment.vue b/pages_order/payment.vue
index e6a42bb..d45e73e 100644
--- a/pages_order/payment.vue
+++ b/pages_order/payment.vue
@@ -1,109 +1,109 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/pages_order/public/js/orderMethod.js b/pages_order/public/js/orderMethod.js
index bbb30ff..8700e8c 100644
--- a/pages_order/public/js/orderMethod.js
+++ b/pages_order/public/js/orderMethod.js
@@ -1,261 +1,261 @@
-export default {
- methods: {
- /**
- * 订单支付
- * @param {Object} orderData
- */
- orderPay(orderData) {
- if (orderData.adjust_money == 0) {
- this.pay();
- } else {
- uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('order.public.js.order_method.l13') + orderData.pay_money + $lang('order.public.js.order_method.l13'),
- success: res => {
- if (res.confirm) {
- this.pay();
- }
- }
- })
- }
- },
- pay() {
- this.$api.sendRequest({
- url: '/api/order/pay',
- data: {
- order_ids: this.orderData.order_id
- },
- success: res => {
- if (res.code >= 0) {
- this.$refs.choosePaymentPopup.getPayInfo(res.data);
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- })
- },
- /**
- * 关闭订单
- * @param order_id
- * @param callback
- */
- orderClose(order_id, callback) {
- uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('order.public.js.order_method.l47'),
- success: res => {
- if (res.confirm) {
- this.$api.sendRequest({
- url: '/api/order/close',
- data: {
- order_id
- },
- success: res => {
- if (res.code >= 0) {
- typeof callback == 'function' && callback();
- } else {
- this.$util.showToast({
- title: $lang('order.public.js.order_method.l60') + res.message +
- $lang('order.public.js.order_method.l61'),
- duration: 2000
- })
- }
- }
- })
- }
- }
- })
- },
- /**
- * 订单收货
- * @param orderData
- * @param callback
- */
- orderDelivery(orderData, callback) {
- // 如果不在微信小程序中
- // #ifndef MP-WEIXIN
- uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('order.public.js.order_method.l81'),
- success: res => {
- if (res.confirm) {
- this.$api.sendRequest({
- url: '/api/order/takedelivery',
- data: {
- order_id: orderData.order_id
- },
- success: res => {
- this.$util.showToast({
- title: res.message
- })
- typeof callback == 'function' && callback();
- }
- })
- }
- }
- })
- // #endif
-
- // #ifdef MP-WEIXIN
- // 检测微信小程序是否已开通发货信息管理服务
- if (orderData.pay_type == 'wechatpay' && wx.openBusinessView && orderData.is_trade_managed) {
- wx.openBusinessView({
- businessType: 'weappOrderConfirm',
- extraData: {
- merchant_id: orderData.pay_config.mch_id,
- merchant_trade_no: orderData.out_trade_no
- },
- success: res => {
- if (res.extraData.status == 'success') {
- this.$api.sendRequest({
- url: '/api/order/takedelivery',
- data: {
- order_id: orderData.order_id
- },
- success: res => {
- this.$util.showToast({
- title: res.message
- })
- typeof callback == 'function' && callback();
- }
- })
- } else {
- this.$api.sendRequest({
- url: '/api/order/takedelivery',
- data: {
- order_id: orderData.order_id
- },
- success: res => {
- this.$util.showToast({
- title: res.message
- })
- typeof callback == 'function' && callback();
- }
- })
- }
- },
- fail: function(res) {
- }
- })
- } else {
- uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('order.public.js.order_method.l81'),
- success: res => {
- if (res.confirm) {
- this.$api.sendRequest({
- url: '/api/order/takedelivery',
- data: {
- order_id: orderData.order_id
- },
- success: res => {
- this.$util.showToast({
- title: res.message
- })
- typeof callback == 'function' && callback();
- }
- })
- }
- }
- })
- }
- // #endif
- },
- /**
- * 订单虚拟商品收货
- * @param orderData
- * @param callback
- */
- orderVirtualDelivery(orderData, callback) {
- // 如果不在微信小程序中
- // #ifndef MP-WEIXIN
- uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('order.public.js.order_method.l176'),
- success: res => {
- if (res.confirm) {
- this.$api.sendRequest({
- url: '/api/order/membervirtualtakedelivery',
- data: {
- order_id: orderData.order_id
- },
- success: res => {
- this.$util.showToast({
- title: res.message
- })
- typeof callback == 'function' && callback();
- }
- })
- }
- },
- })
- // #endif
-
- // #ifdef MP-WEIXIN
- // 检测微信小程序是否已开通发货信息管理服务
- if (orderData.pay_type == 'wechatpay' && wx.openBusinessView && orderData.is_trade_managed) {
- wx.openBusinessView({
- businessType: 'weappOrderConfirm',
- extraData: {
- merchant_id: orderData.pay_config.mch_id,
- merchant_trade_no: orderData.out_trade_no
- },
- success: res => {
- if (res.extraData.status == 'success') {
- this.$api.sendRequest({
- url: '/api/order/membervirtualtakedelivery',
- data: {
- order_id: orderData.order_id
- },
- success: res => {
- this.$util.showToast({
- title: res.message
- })
- typeof callback == 'function' && callback();
- }
- })
- } else {
- this.$api.sendRequest({
- url: '/api/order/membervirtualtakedelivery',
- data: {
- order_id: orderData.order_id
- },
- success: res => {
- this.$util.showToast({
- title: res.message
- })
- typeof callback == 'function' && callback();
- }
- })
- }
- },
- fail: function(res) {}
- })
- } else {
- uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('order.public.js.order_method.l176'),
- success: res => {
- if (res.confirm) {
- this.$api.sendRequest({
- url: '/api/order/membervirtualtakedelivery',
- data: {
- order_id: orderData.order_id
- },
- success: res => {
- this.$util.showToast({
- title: res.message
- })
- typeof callback == 'function' && callback();
- }
- })
- }
- },
- })
- }
- // #endif
- },
- }
+export default {
+ methods: {
+ /**
+ * 订单支付
+ * @param {Object} orderData
+ */
+ orderPay(orderData) {
+ if (orderData.adjust_money == 0) {
+ this.pay();
+ } else {
+ uni.showModal({
+ title: '提示',
+ content: '商家已将支付金额调整为' + orderData.pay_money + '元,是否继续支付?',
+ success: res => {
+ if (res.confirm) {
+ this.pay();
+ }
+ }
+ })
+ }
+ },
+ pay() {
+ this.$api.sendRequest({
+ url: '/api/order/pay',
+ data: {
+ order_ids: this.orderData.order_id
+ },
+ success: res => {
+ if (res.code >= 0) {
+ this.$refs.choosePaymentPopup.getPayInfo(res.data);
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ })
+ },
+ /**
+ * 关闭订单
+ * @param order_id
+ * @param callback
+ */
+ orderClose(order_id, callback) {
+ uni.showModal({
+ title: '提示',
+ content: '您确定要关闭该订单吗?',
+ success: res => {
+ if (res.confirm) {
+ this.$api.sendRequest({
+ url: '/api/order/close',
+ data: {
+ order_id
+ },
+ success: res => {
+ if (res.code >= 0) {
+ typeof callback == 'function' && callback();
+ } else {
+ this.$util.showToast({
+ title: '当前订单可能存在拼团,维权等操作,' + res.message +
+ '不可以关闭哦!',
+ duration: 2000
+ })
+ }
+ }
+ })
+ }
+ }
+ })
+ },
+ /**
+ * 订单收货
+ * @param orderData
+ * @param callback
+ */
+ orderDelivery(orderData, callback) {
+ // 如果不在微信小程序中
+ // #ifndef MP-WEIXIN
+ uni.showModal({
+ title: '提示',
+ content: '您确定已经收到货物了吗?',
+ success: res => {
+ if (res.confirm) {
+ this.$api.sendRequest({
+ url: '/api/order/takedelivery',
+ data: {
+ order_id: orderData.order_id
+ },
+ success: res => {
+ this.$util.showToast({
+ title: res.message
+ })
+ typeof callback == 'function' && callback();
+ }
+ })
+ }
+ }
+ })
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ // 检测微信小程序是否已开通发货信息管理服务
+ if (orderData.pay_type == 'wechatpay' && wx.openBusinessView && orderData.is_trade_managed) {
+ wx.openBusinessView({
+ businessType: 'weappOrderConfirm',
+ extraData: {
+ merchant_id: orderData.pay_config.mch_id,
+ merchant_trade_no: orderData.out_trade_no
+ },
+ success: res => {
+ if (res.extraData.status == 'success') {
+ this.$api.sendRequest({
+ url: '/api/order/takedelivery',
+ data: {
+ order_id: orderData.order_id
+ },
+ success: res => {
+ this.$util.showToast({
+ title: res.message
+ })
+ typeof callback == 'function' && callback();
+ }
+ })
+ } else {
+ this.$api.sendRequest({
+ url: '/api/order/takedelivery',
+ data: {
+ order_id: orderData.order_id
+ },
+ success: res => {
+ this.$util.showToast({
+ title: res.message
+ })
+ typeof callback == 'function' && callback();
+ }
+ })
+ }
+ },
+ fail: function(res) {
+ }
+ })
+ } else {
+ uni.showModal({
+ title: '提示',
+ content: '您确定已经收到货物了吗?',
+ success: res => {
+ if (res.confirm) {
+ this.$api.sendRequest({
+ url: '/api/order/takedelivery',
+ data: {
+ order_id: orderData.order_id
+ },
+ success: res => {
+ this.$util.showToast({
+ title: res.message
+ })
+ typeof callback == 'function' && callback();
+ }
+ })
+ }
+ }
+ })
+ }
+ // #endif
+ },
+ /**
+ * 订单虚拟商品收货
+ * @param orderData
+ * @param callback
+ */
+ orderVirtualDelivery(orderData, callback) {
+ // 如果不在微信小程序中
+ // #ifndef MP-WEIXIN
+ uni.showModal({
+ title: '提示',
+ content: '您确定要进行收货吗?',
+ success: res => {
+ if (res.confirm) {
+ this.$api.sendRequest({
+ url: '/api/order/membervirtualtakedelivery',
+ data: {
+ order_id: orderData.order_id
+ },
+ success: res => {
+ this.$util.showToast({
+ title: res.message
+ })
+ typeof callback == 'function' && callback();
+ }
+ })
+ }
+ },
+ })
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ // 检测微信小程序是否已开通发货信息管理服务
+ if (orderData.pay_type == 'wechatpay' && wx.openBusinessView && orderData.is_trade_managed) {
+ wx.openBusinessView({
+ businessType: 'weappOrderConfirm',
+ extraData: {
+ merchant_id: orderData.pay_config.mch_id,
+ merchant_trade_no: orderData.out_trade_no
+ },
+ success: res => {
+ if (res.extraData.status == 'success') {
+ this.$api.sendRequest({
+ url: '/api/order/membervirtualtakedelivery',
+ data: {
+ order_id: orderData.order_id
+ },
+ success: res => {
+ this.$util.showToast({
+ title: res.message
+ })
+ typeof callback == 'function' && callback();
+ }
+ })
+ } else {
+ this.$api.sendRequest({
+ url: '/api/order/membervirtualtakedelivery',
+ data: {
+ order_id: orderData.order_id
+ },
+ success: res => {
+ this.$util.showToast({
+ title: res.message
+ })
+ typeof callback == 'function' && callback();
+ }
+ })
+ }
+ },
+ fail: function(res) {}
+ })
+ } else {
+ uni.showModal({
+ title: '提示',
+ content: '您确定要进行收货吗?',
+ success: res => {
+ if (res.confirm) {
+ this.$api.sendRequest({
+ url: '/api/order/membervirtualtakedelivery',
+ data: {
+ order_id: orderData.order_id
+ },
+ success: res => {
+ this.$util.showToast({
+ title: res.message
+ })
+ typeof callback == 'function' && callback();
+ }
+ })
+ }
+ },
+ })
+ }
+ // #endif
+ },
+ }
}
\ No newline at end of file
diff --git a/pages_order/public/js/refundMethod.js b/pages_order/public/js/refundMethod.js
index f11d84d..2feb464 100644
--- a/pages_order/public/js/refundMethod.js
+++ b/pages_order/public/js/refundMethod.js
@@ -1,30 +1,30 @@
-export default {
- methods: {
- /**
- * 撤销退款申请
- * @param {Object} order_goods_id
- * @param {Object} callback
- */
- cancleRefund(order_goods_id, callback) {
- uni.showModal({
- content: $lang('order.public.js.refund_method.l10'),
- cancelText: $lang('order.public.js.refund_method.l11'),
- cancelColor: '#898989',
- success: res => {
- if (res.confirm) {
- this.$api.sendRequest({
- url: '/api/orderrefund/cancel',
- data: {
- order_goods_id
- },
- success: res => {
- typeof callback == 'function' && callback(res);
- }
- })
- }
- }
- })
- },
-
- }
-}
+export default {
+ methods: {
+ /**
+ * 撤销退款申请
+ * @param {Object} order_goods_id
+ * @param {Object} callback
+ */
+ cancleRefund(order_goods_id, callback) {
+ uni.showModal({
+ content: '撤销之后本次申请将会关闭,如后续仍有问题可再次发起申请。',
+ cancelText: '暂不撤销',
+ cancelColor: '#898989',
+ success: res => {
+ if (res.confirm) {
+ this.$api.sendRequest({
+ url: '/api/orderrefund/cancel',
+ data: {
+ order_goods_id
+ },
+ success: res => {
+ typeof callback == 'function' && callback(res);
+ }
+ })
+ }
+ }
+ })
+ },
+
+ }
+}
diff --git a/pages_promotion/fenxiao/apply.vue b/pages_promotion/fenxiao/apply.vue
index ec50ceb..9ce3892 100644
--- a/pages_promotion/fenxiao/apply.vue
+++ b/pages_promotion/fenxiao/apply.vue
@@ -13,7 +13,7 @@
- {{ $lang("fenxiao.apply.l16") }}
+ 请填写申请信息
@@ -24,16 +24,16 @@
- {{ $lang("fenxiao.apply.l27") }}
+ 邀请人
{{ sourceMemberInfo.fenxiao_name }}
{{ fenxiaoWords.fenxiao_name }}名称
-
+
- {{ $lang("common.ns-login.l15.t0") }}
-
+ 手机号
+
@@ -42,14 +42,14 @@
【{{ fenxiaoWords.fenxiao_name }}申请协议】
-
+
- {{ $lang("fenxiao.apply.l52") }}
+ 分销商申请条件
申请成为{{ fenxiaoWords.fenxiao_name }},需要您的消费次数需要达到{{ fenxiaoConfig.consume_count }}次
@@ -60,8 +60,8 @@
- {{ $lang("fenxiao.apply.l52") }}
- { $lang("fenxiao.apply.l45") } fenxiaoWords.fenxiao_name }},需要购买以下指定商品(任选其一)
+ 分销商申请条件
+ 申请成为{{ fenxiaoWords.fenxiao_name }},需要购买以下指定商品(任选其一)
@@ -72,14 +72,14 @@
{{ isEnEnv ? item.en_goods_name : item.goods_name }}
- {{ $lang('common.currency_symbol') }}
+ {{ $lang('common.currencySymbol') }}
{{ item.market_price > 0 ? item.market_price : item.price }}
- {{ isOpen ? '展开更多' : $lang('goods.detail.l152') }}
+ {{ isOpen ? '展开更多' : '收起' }}
@@ -89,7 +89,7 @@
- { $lang("fenxiao.apply.l45") } fenxiaoWords.fenxiao_name }},需要您的消费次数需要达到{{ fenxiaoConfig.consume_count }}次
+ 申请成为{{ fenxiaoWords.fenxiao_name }},需要您的消费次数需要达到{{ fenxiaoConfig.consume_count }}次
申请成为{{ fenxiaoWords.fenxiao_name }},需要您的消费金额需要达到{{ fenxiaoConfig.consume_money | moneyFormat }}元
@@ -97,8 +97,8 @@
- {{ $lang("fenxiao.apply.l100") }}
- { $lang("fenxiao.apply.l101") } fenxiaoWords.fenxiao_name }},需要购买以下指定商品(任选其一)
+ 成为分销商的条件
+ 成为{{ fenxiaoWords.fenxiao_name }},需要购买以下指定商品(任选其一)
@@ -108,13 +108,13 @@
{{ isEnEnv ? item.en_goods_name : item.goods_name }}
- {{ $lang('common.currency_symbol') }}
+ {{ $lang('common.currencySymbol') }}
{{ item.market_price > 0 ? item.market_price : item.price }}
- {{ isOpen ? '展开更多' : $lang('goods.detail.l152') }}
+ {{ isOpen ? '展开更多' : '收起' }}
@@ -123,15 +123,15 @@
- {{ $lang("fenxiao.apply.l126") }}
+ 您还不是分销商
- { $lang("fenxiao.apply.l131") } fenxiaoWords.fenxiao_name }}申请,等待平台审核
+ 您已提交{{ fenxiaoWords.fenxiao_name }}申请,等待平台审核
- { $lang("fenxiao.apply.l133") } fenxiaoWords.fenxiao_name }}申请,已被拒绝,请再接再厉
- {{ $lang("fenxiao.apply.l134") }}
+ 您提交的{{ fenxiaoWords.fenxiao_name }}申请,已被拒绝,请再接再厉
+ 重新申请
@@ -163,7 +163,7 @@
isIphoneX: false,
// 推荐人信息
sourceMemberInfo: {
- fenxiao_name: $lang('fenxiao.apply.l166')
+ fenxiao_name: '无'
},
formData: {
fenXiaoName: '',
@@ -191,7 +191,7 @@
setTimeout( () => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
@@ -207,7 +207,7 @@
async onShow() {
this.isIphoneX = this.$util.uniappIsIPhoneX();
- if (this.fenxiaoWords && this.fenxiaoWords.fenxiao_name) this.$langConfig.title(this.fenxiaoWords.fenxiao_name + $lang('fenxiao.apply.l210'));
+ if (this.fenxiaoWords && this.fenxiaoWords.fenxiao_name) this.$langConfig.title(this.fenxiaoWords.fenxiao_name + '申请');
if (this.storeToken) {
this.applyStatus();
@@ -275,7 +275,7 @@
if (!this.fenXiaoValidata()) return;
if (this.isAgreement && !this.isChecked) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l278')
+ title: '请仔细阅读协议,并勾选'
});
return;
}
@@ -330,17 +330,17 @@
let rule = [{
name: 'fenXiaoName',
checkType: 'required',
- errorMsg: $lang('common.ns-form.l368.t0') + this.fenxiaoWords.fenxiao_name + $lang('fenxiao.apply.l32')
+ errorMsg: '请输入' + this.fenxiaoWords.fenxiao_name + '名称'
},
{
name: 'mobile',
checkType: 'required',
- errorMsg: $lang('common.ns-login.l16.t0')
+ errorMsg: '请输入手机号'
},
{
name: 'mobile',
checkType: 'phoneno',
- errorMsg: $lang('common.ns-login.l393.t0')
+ errorMsg: '请输入正确的手机号'
}
];
var checkRes = validate.check(this.formData, rule);
diff --git a/pages_promotion/fenxiao/bill.vue b/pages_promotion/fenxiao/bill.vue
index 1f01f84..511e122 100644
--- a/pages_promotion/fenxiao/bill.vue
+++ b/pages_promotion/fenxiao/bill.vue
@@ -35,7 +35,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
diff --git a/pages_promotion/fenxiao/child_fenxiao.vue b/pages_promotion/fenxiao/child_fenxiao.vue
index 725f2dc..a7acb2c 100644
--- a/pages_promotion/fenxiao/child_fenxiao.vue
+++ b/pages_promotion/fenxiao/child_fenxiao.vue
@@ -54,7 +54,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
diff --git a/pages_promotion/fenxiao/goods_list.vue b/pages_promotion/fenxiao/goods_list.vue
index 58a6adb..e21d1be 100644
--- a/pages_promotion/fenxiao/goods_list.vue
+++ b/pages_promotion/fenxiao/goods_list.vue
@@ -1,440 +1,440 @@
-
-
-
-
-
-
-
-
-
- {{ $lang("diy.diy-category-item.l47.t0") }}
-
- {{ item.category_name }}
-
-
-
-
-
-
-
-
-
-
-
- {{ item.sku_name }}
-
- {{ item.label_name }}
-
-
-
-
- ¥
- {{ item.discount_price }}
-
-
-
- {{ $lang("goods._components.goods-detail-view.l411.t0") }}
- { $lang("fenxiao.goods_list.l43") } item.commission_money }}元
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
- {{ $lang("fenxiao.goods_list.l59") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("goods._components.goods-detail-view.l397.t0") }}
-
-
- {{ $lang("fenxiao.goods_list.l118") }}
-
-
-
-
- {{ posterMsg }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ 全部
+
+ {{ item.category_name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.sku_name }}
+
+ {{ item.label_name }}
+
+
+
+
+ ¥
+ {{ item.discount_price }}
+
+
+
+ 分享
+ 赚{{ item.commission_money }}元
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ 生成海报
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存图片
+
+
+ 长按保存图片
+
+
+
+
+ {{ posterMsg }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_promotion/fenxiao/index.vue b/pages_promotion/fenxiao/index.vue
index 79c81da..8381b7f 100644
--- a/pages_promotion/fenxiao/index.vue
+++ b/pages_promotion/fenxiao/index.vue
@@ -18,8 +18,8 @@
:src="$util.img('public/uniapp/fenxiao/index/commissionFission-level.png')"
alt="" class="level-icon">{{ info.level_name }}
- { $lang("fenxiao.index.l21") } info.parent_name ? info.parent_name : $lang('fenxiao.index.l21') }}
- { $lang("fenxiao.index.l22") } teamNum.num }}人上级代理商:{{ info.parent_name ? info.parent_name : '总店' }}
+ 已邀请成功:{{ teamNum.num }}人
- { $lang("fenxiao.index.l43") } fenxiaoWords.withdraw }}(元)
+ 可{{ fenxiaoWords.withdraw }}(元)
提现明细
@@ -52,22 +52,22 @@
- {{ $lang("fenxiao.index.l64") }}提现中(元)
{{ info.account_withdraw_apply | moneyFormat }}
- {{ $lang("fenxiao.index.l70") }}待入账(元)
{{ info.in_progress_money | moneyFormat }}
@@ -90,8 +90,8 @@
- {{ $lang("fenxiao.index.l93") }}
- {{ $lang("fenxiao.index.l94") }}
+ 我的粉丝
+ 邀请的用户
- {{ fenxiaoWords.concept + $lang('fenxiao.index.l114') }}
- {{ fenxiaoWords.concept + $lang('fenxiao.index.l114') }}明细
+ {{ fenxiaoWords.concept + '订单' }}
+ {{ fenxiaoWords.concept + '订单' }}明细
@@ -121,8 +121,8 @@
- {{ $lang("fenxiao.index.l124") }}
- {{ $lang("fenxiao.index.l125") }}
+ 我的邀请码
+ 邀好友赚好礼
@@ -190,7 +190,7 @@
- {{ $lang("fenxiao.index.l93") }}
+ 我的粉丝
{{ teamNum.num }}人
@@ -211,8 +211,8 @@
- { $lang("fenxiao.index.l214") } fenxiaoWords.fenxiao_name }},请先提交申请
- {{ $lang("fenxiao.index.l215") }}
+ 您还不是{{ fenxiaoWords.fenxiao_name }},请先提交申请
+ 立即加入
@@ -220,7 +220,7 @@
- {{ $lang("fenxiao.level.l20") }}
+ 一级分佣比率
{{ item.one_rate }}%
- {{ $lang("fenxiao.level.l24") }}
+ 二级分佣比率
{{ item.two_rate }}%
- {{ $lang("fenxiao.level.l28") }}
+ 三级分佣比率
{{ item.three_rate }}%
@@ -40,7 +40,7 @@
- {{ $lang("fenxiao.index.l223") }}
+ 快速升级技巧
{{ levelInfo.complete > levelInfo.task_num ? levelInfo.task_num : levelInfo.complete }}
/{{ levelInfo.task_num }}
@@ -54,7 +54,7 @@
- {{ item.progress == 100 ? '已完成' : $lang('fenxiao.index.l231') }}
+ {{ item.progress == 100 ? '已完成' : '未完成' }}
@@ -73,12 +73,12 @@
@@ -114,9 +114,9 @@
if (level.one_fenxiao_order_num > 0) {
let task = {
- title: $lang('fenxiao.index.l483'),
- desc: $lang('fenxiao.index.l484') + level.one_fenxiao_order_num + $lang('fenxiao.child_fenxiao.l24'),
- tips: $lang('fenxiao.level.l119')+ level.one_fenxiao_order_num + $lang('fenxiao.child_fenxiao.l24'),
+ title: '下级消费',
+ desc: '下级消费单数满' + level.one_fenxiao_order_num + '单',
+ tips: '分销商自己购买和自己推荐的直属会员购买的订单次数达到'+ level.one_fenxiao_order_num + '单',
condition: level.one_fenxiao_order_num,
value: this.fenxiaoInfo.one_fenxiao_order_num,
progress: parseFloat(this.fenxiaoInfo.one_fenxiao_order_num) > parseFloat(level.one_fenxiao_order_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_order_num) / parseFloat(level.one_fenxiao_order_num) * 100).toFixed(2)
@@ -126,9 +126,9 @@
}
if (level.one_fenxiao_total_order > 0) {
let task = {
- title: $lang('fenxiao.index.l483'),
- desc: $lang('fenxiao.index.l498') + this.moneyFormat(level.one_fenxiao_total_order) + $lang('common.register-reward.l45.t0'),
- tips: $lang('fenxiao.level.l131')+ this.moneyFormat(level.one_fenxiao_total_order) + $lang('common.register-reward.l45.t0'),
+ title: '下级消费',
+ desc: '下级消费金额满' + this.moneyFormat(level.one_fenxiao_total_order) + '元',
+ tips: '分销商自己购买和推荐的直属会员购买的订单的总额达到'+ this.moneyFormat(level.one_fenxiao_total_order) + '元',
condition: this.moneyFormat(level.one_fenxiao_total_order),
value: this.fenxiaoInfo.one_fenxiao_total_order,
progress: parseFloat(this.fenxiaoInfo.one_fenxiao_total_order) > parseFloat(level.one_fenxiao_total_order) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_total_order) / parseFloat(level.one_fenxiao_total_order) * 100)
@@ -139,9 +139,9 @@
}
if (level.one_fenxiao_order_money > 0) {
let task = {
- title: $lang('fenxiao.index.l483'),
- desc: $lang('fenxiao.level.l143') + this.moneyFormat(level.one_fenxiao_order_money) + $lang('common.register-reward.l45.t0'),
- tips: $lang('fenxiao.level.l144')+ this.moneyFormat(level.one_fenxiao_order_money) + $lang('common.register-reward.l45.t0'),
+ title: '下级消费',
+ desc: '下级消费产生佣金总额满' + this.moneyFormat(level.one_fenxiao_order_money) + '元',
+ tips: '分销商自己购买和自己推荐的直属会员购买的订单佣金总额达到'+ this.moneyFormat(level.one_fenxiao_order_money) + '元',
condition: this.moneyFormat(level.one_fenxiao_order_money),
value: this.fenxiaoInfo.one_fenxiao_order_money,
progress: parseFloat(this.fenxiaoInfo.one_fenxiao_order_money) > parseFloat(level.one_fenxiao_order_money) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_order_money) / parseFloat(level.one_fenxiao_order_money) * 100)
@@ -152,9 +152,9 @@
}
if (level.order_num > 0) {
let task = {
- title: $lang('fenxiao.index.l526'),
- desc: $lang('fenxiao.index.l527') + level.order_num + $lang('fenxiao.child_fenxiao.l24'),
- tips: $lang('fenxiao.level.l157')+ level.order_num + $lang('fenxiao.child_fenxiao.l24'),
+ title: '自身消费',
+ desc: '自身消费单数满' + level.order_num + '单',
+ tips: '分销商自己购买的订单次数达到'+ level.order_num + '单',
condition: level.order_num,
value: this.fenxiaoInfo.order_num,
progress: parseFloat(this.fenxiaoInfo.order_num) > parseFloat(level.order_num) ? 100 : (parseFloat(this.fenxiaoInfo.order_num) / parseFloat(level.order_num) * 100).toFixed(2)
@@ -164,9 +164,9 @@
}
if (level.order_money > 0) {
let task = {
- title: $lang('fenxiao.index.l526'),
- desc: $lang('fenxiao.index.l539') + this.moneyFormat(level.order_money) + $lang('common.register-reward.l45.t0'),
- tips: $lang('fenxiao.level.l169')+ this.moneyFormat(level.order_money) + $lang('common.register-reward.l45.t0'),
+ title: '自身消费',
+ desc: '自身消费金额满' + this.moneyFormat(level.order_money) + '元',
+ tips: '分销商自己购买的订单总额满足'+ this.moneyFormat(level.order_money) + '元',
condition: this.moneyFormat(level.order_money),
value: this.fenxiaoInfo.order_money,
progress: parseFloat(this.fenxiaoInfo.order_money) > parseFloat(level.order_money) ? 100 : (parseFloat(this.fenxiaoInfo.order_money) / parseFloat(level.order_money) * 100).toFixed(2)
@@ -176,9 +176,9 @@
}
if (level.one_child_num > 0) {
let task = {
- title: $lang('fenxiao.index.l133'),
- desc: $lang('fenxiao.index.l553') + level.one_child_num + $lang('fenxiao.child_fenxiao.l23'),
- tips: $lang('fenxiao.level.l181')+level.one_child_num+$lang('fenxiao.level.l181'),
+ title: '邀请好友',
+ desc: '邀请好友人数达到' + level.one_child_num + '人',
+ tips: '分销商的直属下级会员人数达到'+level.one_child_num+'人(包含已经申请成为分销商的)',
condition: level.one_child_num,
value: this.fenxiaoInfo.one_child_num,
progress: parseFloat(this.fenxiaoInfo.one_child_num) > parseFloat(level.one_child_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_child_num) / parseFloat(level.one_child_num) * 100).toFixed(2)
@@ -188,9 +188,9 @@
}
if (level.one_child_fenxiao_num > 0) {
let task = {
- title: $lang('fenxiao.index.l133'),
- desc: $lang('fenxiao.index.l567') + level.one_child_fenxiao_num + $lang('fenxiao.child_fenxiao.l23'),
- tips: $lang('fenxiao.level.l193')+ level.one_child_fenxiao_num + $lang('fenxiao.child_fenxiao.l23'),
+ title: '邀请好友',
+ desc: '邀请好友成为分销商人数达到' + level.one_child_fenxiao_num + '人',
+ tips: '分销商的直属下级分销商人数达到'+ level.one_child_fenxiao_num + '人',
condition: level.one_child_fenxiao_num,
value: this.fenxiaoInfo.one_child_fenxiao_num,
progress: parseFloat(this.fenxiaoInfo.one_child_fenxiao_num) > parseFloat(level.one_child_fenxiao_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_child_fenxiao_num) / parseFloat(level.one_child_fenxiao_num) * 100).toFixed(2)
@@ -208,7 +208,7 @@
setTimeout( () => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
@@ -218,7 +218,7 @@
}
},1000);
- if (this.fenxiaoWords && this.fenxiaoWords.fenxiao_name) this.$langConfig.title(this.fenxiaoWords.fenxiao_name + $lang('fenxiao.level.l221'));
+ if (this.fenxiaoWords && this.fenxiaoWords.fenxiao_name) this.$langConfig.title(this.fenxiaoWords.fenxiao_name + '等级');
if (this.storeToken) {
this.getFenxiaoInfo();
diff --git a/pages_promotion/fenxiao/order.vue b/pages_promotion/fenxiao/order.vue
index 008172e..2aef62a 100644
--- a/pages_promotion/fenxiao/order.vue
+++ b/pages_promotion/fenxiao/order.vue
@@ -14,10 +14,10 @@
@click="toDetail(orderItem.fenxiao_order_id)">
@@ -30,9 +30,9 @@
{{ orderItem.sku_name }}
- { $lang("diy.diy-pinfan.l52.t0") } fenxiaoWords.account }}
+ 返{{ fenxiaoWords.account }}
{{
- $lang('common.currency_symbol') }}
+ $lang('common.currencySymbol') }}
{{
parseFloat(orderItem.commission).toFixed(2).split(".")[0] }}
.{{
@@ -41,7 +41,7 @@
- {{ $lang('common.currency_symbol')
+ {{ $lang('common.currencySymbol')
}}
{{
parseFloat(orderItem.price).toFixed(2).split(".")[0] }}
@@ -62,12 +62,12 @@
{{ $util.timeStampTurnTime(orderItem.create_time) }}
-
+
- {{ $lang("order._components.common-payment.l408.t0") }}
- {{ $lang('common.currency_symbol') }}
+ 合计:
+ {{ $lang('common.currencySymbol') }}
{{
parseFloat(orderItem.real_goods_money).toFixed(2).split(".")[0] }}
.{{
@@ -108,22 +108,22 @@ export default {
category: [
{
id: 0,
- name: $lang('diy.diy-category-item.l47.t0'),
+ name: '全部',
number: 2
},
{
id: 1,
- name: $lang('fenxiao.order.l20'),
+ name: '待结算',
number: 0
},
{
id: 2,
- name: $lang('fenxiao.order.l19'),
+ name: '已结算',
number: 0
},
{
id: 3,
- name: $lang('fenxiao.order.l17'),
+ name: '已退款',
number: 0
}
],
@@ -142,7 +142,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
@@ -152,7 +152,7 @@ export default {
}
}, 1000);
- if (this.fenxiaoWords && this.fenxiaoWords.concept) this.$langConfig.title(this.fenxiaoWords.concept + $lang('fenxiao.index.l114'));
+ if (this.fenxiaoWords && this.fenxiaoWords.concept) this.$langConfig.title(this.fenxiaoWords.concept + '订单');
if (!this.storeToken) {
this.$nextTick(() => {
diff --git a/pages_promotion/fenxiao/order_detail.vue b/pages_promotion/fenxiao/order_detail.vue
index 477ee74..7c50602 100644
--- a/pages_promotion/fenxiao/order_detail.vue
+++ b/pages_promotion/fenxiao/order_detail.vue
@@ -4,11 +4,11 @@
@@ -37,27 +37,27 @@
- {{ $lang("order.detail.l214") }}
+ 订单编号:
{{ orderData.order_no }}
- {{ $lang("fenxiao.order_detail.l56") }}
+ 分佣层级:
{{ orderData.commission_level }}级
- {{ $lang("fenxiao.order_detail.l60") }}
+ 返佣金额:
¥
{{ parseFloat(orderData.commission).toFixed(2).split(".")[0] }}
@@ -100,7 +100,7 @@ export default {
setTimeout( () => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
@@ -133,7 +133,7 @@ export default {
this.orderData = res.data;
} else {
this.$util.showToast({
- title: $lang('order.detail.l737')
+ title: '未获取到订单信息!'
});
setTimeout(() => {
this.$util.redirectTo('/pages_promotion/fenxiao/order', {}, 'redirectTo');
diff --git a/pages_promotion/fenxiao/promote.vue b/pages_promotion/fenxiao/promote.vue
index 94cdff9..1b3255a 100644
--- a/pages_promotion/fenxiao/promote.vue
+++ b/pages_promotion/fenxiao/promote.vue
@@ -18,8 +18,8 @@
- {{ $lang("fenxiao.promote.l21") }}
- {{ $lang("fenxiao.promote.l22") }}
+ 已邀请好友
+ 已下单好友
@@ -32,7 +32,7 @@
- {{ $lang("fenxiao.promote.l35") }}
+ 暂无已邀请好友,快去邀请吧
@@ -41,9 +41,9 @@
mode="aspectFit" show-menu-by-longpress>
- {{ $lang("fenxiao.promote.l44") }}
+ 暂无活动规则
-
+
@@ -79,7 +79,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
diff --git a/pages_promotion/fenxiao/promote_code.vue b/pages_promotion/fenxiao/promote_code.vue
index cac11bd..7b032b9 100644
--- a/pages_promotion/fenxiao/promote_code.vue
+++ b/pages_promotion/fenxiao/promote_code.vue
@@ -11,22 +11,22 @@
- {{ $lang("fenxiao.promote_code.l14") }}
+ 长按识别图中二维码
- {{ $lang("fenxiao.promote_code.l18") }}
+ 保存海报
@@ -95,7 +95,7 @@ export default {
filePath: res.tempFilePath,
success: () => {
this.$util.showToast({
- title: $lang('goods._components.goods-detail-view.detail.l351.t0')
+ title: '保存成功'
});
},
fail: res => {
@@ -104,20 +104,20 @@ export default {
this.$refs.popupDialog.open();
} else {
this.$util.showToast({
- title: $lang('goods._components.goods-detail-view.detail.l356.t0')
+ title: '保存失败,请稍后重试'
});
}
}
});
} else {
this.$util.showToast({
- title: $lang('fenxiao.promote_code.l114')
+ title: '下载失败'
});
}
},
fail: res => {
this.$util.showToast({
- title: $lang('fenxiao.promote_code.l114')
+ title: '下载失败'
});
}
});
@@ -136,7 +136,7 @@ export default {
});
} catch {
this.$util.showToast({
- title: $lang('fenxiao.promote_code.l139')
+ title: '海报生成失败'
});
}
},
@@ -149,7 +149,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
diff --git a/pages_promotion/fenxiao/public/js/goods_list.js b/pages_promotion/fenxiao/public/js/goods_list.js
index 947b780..c2860ca 100644
--- a/pages_promotion/fenxiao/public/js/goods_list.js
+++ b/pages_promotion/fenxiao/public/js/goods_list.js
@@ -22,7 +22,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
@@ -48,7 +48,7 @@ export default {
return;
}
- if (this.fenxiaoWords && this.fenxiaoWords.concept) this.$langConfig.title(this.fenxiaoWords.concept + $lang('fenxiao.index.l293'));
+ if (this.fenxiaoWords && this.fenxiaoWords.concept) this.$langConfig.title(this.fenxiaoWords.concept + '中心');
this.is_fenxiao = Boolean(this.memberInfo.is_fenxiao);
},
methods: {
@@ -157,7 +157,7 @@ export default {
//生成海报
getGoodsPoster() {
uni.showLoading({
- 'title': $lang('goods._components.goods-detail-view.detail.l285.t0')
+ 'title': '海报生成中...'
});
let url = "";
let data = {};
@@ -204,12 +204,12 @@ export default {
filePath: res.tempFilePath,
success: () => {
this.$util.showToast({
- title: $lang("goods._components.goods-detail-view.detail.l351.t0")
+ title: "保存成功"
});
},
fail: () => {
this.$util.showToast({
- title: $lang("goods._components.goods-detail-view.detail.l356.t0")
+ title: "保存失败,请稍后重试"
});
}
});
diff --git a/pages_promotion/fenxiao/ranking_list.vue b/pages_promotion/fenxiao/ranking_list.vue
index a0e264e..8fa5d21 100644
--- a/pages_promotion/fenxiao/ranking_list.vue
+++ b/pages_promotion/fenxiao/ranking_list.vue
@@ -16,9 +16,9 @@
{{ $lang("fenxiao.ranking_list.l19") }}
+ v-if="type == 'profit'">点击提现
{{ $lang("fenxiao.ranking_list.l21") }}
+ v-if="type == 'invited_num'">我的团队
@@ -30,7 +30,7 @@
- {{ $lang("fenxiao.ranking_list.l33") }}
+ 分销佣金
{{ info.today_commission }}元
@@ -41,8 +41,8 @@
- {{ $lang("fenxiao.ranking_list.l44") }}
- { $lang("fenxiao.ranking_list.l45") } ranking }}名
+ 佣金排行
+ 您排行第{{ ranking }}名
@@ -54,7 +54,7 @@
- {{ $lang("fenxiao.ranking_list.l57") }}
+ 推广人数
{{ info.one_child_num }}人
@@ -65,15 +65,15 @@
- {{ $lang("fenxiao.ranking_list.l68") }}
- { $lang("fenxiao.ranking_list.l45") } ranking }}名
+ 推广排行
+ 您排行第{{ ranking }}名
- {{ $lang("fenxiao.ranking_list.l44") }}
- {{ $lang("fenxiao.ranking_list.l68") }}
+ 佣金排行
+ 推广排行
diff --git a/pages_promotion/fenxiao/relation.vue b/pages_promotion/fenxiao/relation.vue
index 6cb108e..b2d2272 100644
--- a/pages_promotion/fenxiao/relation.vue
+++ b/pages_promotion/fenxiao/relation.vue
@@ -7,10 +7,10 @@
@click="toDetail(orderItem.fenxiao_order_id)">
@@ -23,16 +23,16 @@
{{ orderItem.sku_name }}
- { $lang("diy.diy-pinfan.l52.t0") } fenxiaoWords.account }}
+ 返{{ fenxiaoWords.account }}
{{
- $lang('common.currency_symbol') }}
+ $lang('common.currencySymbol') }}
{{ orderItem.commission
}}
- {{ $lang('common.currency_symbol') }}
+ {{ $lang('common.currencySymbol') }}
{{ orderItem.price }}
@@ -49,12 +49,12 @@
{{ $util.timeStampTurnTime(orderItem.create_time) }}
-
+
- {{ $lang("order._components.common-payment.l408.t0") }}
- {{ $lang('common.currency_symbol') }}
+ 合计:
+ {{ $lang('common.currencySymbol') }}
{{ orderItem.real_goods_money }}
@@ -93,7 +93,7 @@ export default {
}
},
onShow() {
- if (this.fenxiaoWords && this.fenxiaoWords.concept) this.$langConfig.title(this.fenxiaoWords.concept + $lang('fenxiao.index.l114'));
+ if (this.fenxiaoWords && this.fenxiaoWords.concept) this.$langConfig.title(this.fenxiaoWords.concept + '订单');
},
methods: {
//获得列表数据
diff --git a/pages_promotion/fenxiao/team.vue b/pages_promotion/fenxiao/team.vue
index 08559b8..e7999c9 100644
--- a/pages_promotion/fenxiao/team.vue
+++ b/pages_promotion/fenxiao/team.vue
@@ -89,11 +89,11 @@ export default {
return {
levelList: [
{
- name: $lang('fenxiao.team.l92'),
+ name: '一级',
level: 1
},
{
- name: $lang('fenxiao.team.l96'),
+ name: '二级',
level: 2
}
],
@@ -108,7 +108,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
diff --git a/pages_promotion/fenxiao/withdraw_apply.vue b/pages_promotion/fenxiao/withdraw_apply.vue
index 31970ab..9301d95 100644
--- a/pages_promotion/fenxiao/withdraw_apply.vue
+++ b/pages_promotion/fenxiao/withdraw_apply.vue
@@ -1,518 +1,518 @@
-
-
-
-
- {{ $lang("fenxiao.withdraw_apply.l5") }}
- {{ $lang("fenxiao.withdraw_apply.l6") }}
- {{ bankAccountInfo.bank_account }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("fenxiao.withdraw_apply.l19") }}
-
- {{ $lang("fenxiao.withdraw_apply.l5") }}
- {{ $lang("diy.diy-member-info.l146.t0") }}
-
-
-
-
-
-
-
-
- {{ $lang("fenxiao.withdraw_apply.l31") }}
-
- {{ $lang('common.currency_symbol') }}
-
-
-
-
-
-
-
- { $lang("fenxiao.withdraw_apply.l41") } $lang('common.currency_symbol') }}{{ withdrawInfo.account | moneyFormat }}
- {{ $lang("fenxiao.withdraw_apply.l42") }}
-
-
-
- { $lang("fenxiao.withdraw_apply.l46") } $lang('common.currency_symbol') }}{{ withdrawConfigInfo.withdraw | moneyFormat }},
- 最大提现金额为{{ $lang('common.currency_symbol') }}{{ (withdrawConfigInfo.max > withdrawInfo.account ? withdrawInfo.account : withdrawConfigInfo.max) | moneyFormat }},
- { $lang("fenxiao.withdraw_apply.l48") } withdrawConfigInfo.withdraw_rate + '%' }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_promotion/fenxiao/withdraw_list.vue b/pages_promotion/fenxiao/withdraw_list.vue
index 2007e72..0e37783 100644
--- a/pages_promotion/fenxiao/withdraw_list.vue
+++ b/pages_promotion/fenxiao/withdraw_list.vue
@@ -8,9 +8,9 @@
- {{ item.transfer_type == 'balance' && $lang('diy.diy-member-info.l146.t0') ||
- item.transfer_type == 'alipay' && $lang('fenxiao.withdraw_list.l12') || item.transfer_type == 'bank' && $lang('fenxiao.withdraw_list.l12') ||
- item.transfer_type =='wechatpay'&&$lang('fenxiao.withdraw_list.l13') }}
+ {{ item.transfer_type == 'balance' && '余额' ||
+ item.transfer_type == 'alipay' && '支付宝' || item.transfer_type == 'bank' && '银行卡' ||
+ item.transfer_type =='wechatpay'&&'微信' }}
{{ $util.timeStampTurnTime(item.create_time) }}
@@ -25,7 +25,7 @@
-
+
@@ -42,19 +42,19 @@ export default {
withdrawState: {
'3': {
color: 'color: rgb(255, 69, 68)',
- text: $lang('fenxiao.withdraw_list.l45')
+ text: '已转账'
},
'1': {
color: 'color: rgb(255, 160, 68)',
- text: $lang('fenxiao.withdraw_list.l49')
+ text: '待审核'
},
'2': {
color: 'color: rgb(17, 189, 100)',
- text: $lang('fenxiao.withdraw_list.l53')
+ text: '已审核'
},
'-1': {
color: 'color: rgb(255, 69, 68)',
- text: $lang('fenxiao.withdraw_list.l57')
+ text: '已拒绝'
}
},
withdrawList: [],
@@ -65,7 +65,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.fenxiao) {
this.$util.showToast({
- title: $lang('fenxiao.apply.l194'),
+ title: '商家未开启分销',
mask: true,
duration: 2000
});
@@ -75,7 +75,7 @@ export default {
}
}, 1000);
- if (this.fenxiaoWords && this.fenxiaoWords.withdraw) this.$langConfig.title(this.fenxiaoWords.withdraw + $lang('fenxiao.withdraw_list.l78'));
+ if (this.fenxiaoWords && this.fenxiaoWords.withdraw) this.$langConfig.title(this.fenxiaoWords.withdraw + '明细');
if (!this.storeToken) {
this.$nextTick(() => {
diff --git a/pages_promotion/fenxiao/withdrawal_detail.vue b/pages_promotion/fenxiao/withdrawal_detail.vue
index f879578..e581f9b 100644
--- a/pages_promotion/fenxiao/withdrawal_detail.vue
+++ b/pages_promotion/fenxiao/withdrawal_detail.vue
@@ -7,43 +7,43 @@
- {{ $lang("fenxiao.withdrawal_detail.l10") }}
+ 当前状态
{{ detail.status_name }}
- {{ $lang("fenxiao.withdrawal_detail.l14") }}
+ 交易号
{{ detail.withdraw_no }}
- {{ $lang("fenxiao.withdrawal_detail.l18") }}
+ 手续费
¥{{ detail.withdraw_rate_money }}
- {{ $lang("fenxiao.withdrawal_detail.l22") }}
+ 申请时间
{{ $util.timeStampTurnTime(detail.create_time) }}
- {{ $lang("fenxiao.withdrawal_detail.l26") }}
+ 审核时间
{{ $util.timeStampTurnTime(detail.audit_time) }}
- {{ $lang("fenxiao.withdrawal_detail.l30") }}
+ 银行名称
{{ detail.bank_name }}
- {{ $lang("fenxiao.withdrawal_detail.l34") }}
+ 收款账号
{{ detail.account_number }}
- {{ $lang("fenxiao.withdrawal_detail.l38") }}
+ 拒绝理由
{{ detail.refuse_reason }}
- {{ $lang("fenxiao.withdrawal_detail.l42") }}
+ 转账方式名称
{{ detail.transfer_name }}
- {{ $lang("fenxiao.withdrawal_detail.l46") }}
+ 转账时间
{{ $util.timeStampTurnTime(detail.payment_time) }}
diff --git a/pages_promotion/merch/detail.vue b/pages_promotion/merch/detail.vue
index 5620cb3..444c30b 100644
--- a/pages_promotion/merch/detail.vue
+++ b/pages_promotion/merch/detail.vue
@@ -4,7 +4,7 @@
-
+
@@ -28,11 +28,11 @@
{{ merch.desc }}
↓
- {{ $lang("merch.detail.l31") }}
+ 上滑查看更多
- {{ isDescExpanded ? '↑ 收起' : $lang('merch.detail.l35') }}
+ {{ isDescExpanded ? '↑ 收起' : '↓ 展开' }}
@@ -42,14 +42,14 @@
- {{ $lang("goods.list.l19") }}
+ 综合
销量
- {{ $lang("goods.list.l28") }}
+ 价格
@@ -61,7 +61,7 @@
- {{ $lang("goods.list.l40") }}
+ 筛选
@@ -92,14 +92,14 @@
- {{ $lang('common.currency_symbol') }}
+ {{ $lang('common.currencySymbol') }}
{{
parseFloat(showPrice(item)).toFixed(2).split('.')[0] }}
.{{
parseFloat(showPrice(item)).toFixed(2).split('.')[1] }}
- {{ $lang('common.action.consult') ? $lang('common.action.consult') : $lang('merch.detail.l102')
+ {{ $lang('Make') ? $lang('Make') : '立即咨询'
}}
@@ -114,12 +114,12 @@
- {{ $lang('common.currency_symbol') }}
+ {{ $lang('common.currencySymbol') }}
{{ showMarketPrice(item) }}
已售{{ item.sale_num }}{{ item.unit
- ? item.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
+ ? item.unit : '件' }}
@@ -186,14 +186,14 @@
- {{ $lang('common.currency_symbol') }}
+ {{ $lang('common.currencySymbol') }}
{{
parseFloat(showPrice(item)).toFixed(2).split('.')[0] }}
.{{
parseFloat(showPrice(item)).toFixed(2).split('.')[1] }}
- {{ $lang('common.action.consult') ? $lang('common.action.consult') : $lang('merch.detail.l102')
+ {{ $lang('Make') ? $lang('Make') : '立即咨询'
}}
- {{ $lang('common.currency_symbol') }}
+ {{ $lang('common.currencySymbol') }}
{{ showMarketPrice(item) }}
已售{{ item.sale_num }}{{ item.unit
- ? item.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
+ ? item.unit : '件' }}
@@ -258,7 +258,7 @@
-
+
@@ -266,11 +266,11 @@
- {{ $lang("goods.list.l40") }}
+ 筛选
- {{ $lang("goods.list.l188") }}
+ 全部分类
- {{ $lang("diy.diy-category-item.l47.t0") }}
+ 全部
@@ -313,8 +313,8 @@
diff --git a/pages_promotion/merch/merchcategory.vue b/pages_promotion/merch/merchcategory.vue
index 0064490..db0de4c 100644
--- a/pages_promotion/merch/merchcategory.vue
+++ b/pages_promotion/merch/merchcategory.vue
@@ -1,268 +1,268 @@
-
-
-
-
-
-
-
-
-
-
- {{ item.category_name }}
-
-
-
-
-
-
-
-
-
- {{ item.category_name }}
-
-
-
-
-
- {{ one.merch_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_promotion/merch/public/edit.js b/pages_promotion/merch/public/edit.js
index e912c27..68198e0 100644
--- a/pages_promotion/merch/public/edit.js
+++ b/pages_promotion/merch/public/edit.js
@@ -53,54 +53,54 @@ export default {
begin_time:'',//团购开始时间
end_time:''//团购结束时间
},
- groundingArray: [$lang('merch.public.edit.l56'), $lang('merch.public.edit.l56')],
+ groundingArray: ['下架', '上架'],
- pickuptypeArray: [$lang('merch.public.edit.l58'), $lang('merch.public.edit.l58'), $lang('merch.public.edit.l58')],//, $lang('merch.public.edit.l58')
+ pickuptypeArray: ['当日达', '次日达', '隔日达'],//, '自定义'
currCategory: 0, // 当前所设置的商品分类
virtualDeliverArray: [{
- name: $lang('merch.public.edit.l63'),
+ name: '自动发货',
value: 'auto_deliver',
},
{
- name: $lang('merch.public.edit.l67'),
+ name: '手动发货',
value: 'artificial_deliver',
},
{
- name: $lang('merch.public.edit.l71'),
+ name: '到店核销',
value: 'verify',
}
],
virtualDeliverValue: {
- 'auto_deliver': $lang('merch.public.edit.l63'),
- 'artificial_deliver': $lang('merch.public.edit.l67'),
- 'verify': $lang('merch.public.edit.l71')
+ 'auto_deliver': '自动发货',
+ 'artificial_deliver': '手动发货',
+ 'verify': '到店核销'
},
virtualReceiveArray: [{
- name: $lang('merch.public.edit.l81'),
+ name: '自动收货',
value: 'auto_receive',
},
{
- name: $lang('merch.public.edit.l85'),
+ name: '买家确认收货',
value: 'artificial_receive',
},
],
virtualReceiveValue: {
- 'auto_receive': $lang('merch.public.edit.l81'),
- 'artificial_receive': $lang('merch.public.edit.l85'),
+ 'auto_receive': '自动收货',
+ 'artificial_receive': '买家确认收货',
},
- validityTypeArray: [$lang('goods.detail.l133'), $lang('merch.public.edit.l93'), $lang('merch.public.edit.l93')],
+ validityTypeArray: ['永久', '购买后几日有效', '指定过期日期'],
virtualIndate: 0,
minDate: '',
- carmiLength: $lang('merch.public.edit.l96'),
+ carmiLength: '添加卡密',
limitLength: [ //限购
{
- name: $lang('merch.public.edit.l99'),
+ name: '单次限购',
value: '1'
},
{
- name: $lang('merch.public.edit.l103'),
+ name: '长期限购',
value: '2'
}
],
@@ -123,14 +123,14 @@ export default {
if (this.goodsData.id) {
this.isAWait = true;
uni.setNavigationBarTitle({
- title: $lang('merch.public.edit.l126')
+ title: '编辑商品'
});
await this.editGetGoodsInfo();
} else {
this.isAWait = false;
uni.setNavigationBarTitle({
- title: $lang('merch.public.edit.l133')
+ title: '添加商品'
});
}
@@ -167,7 +167,7 @@ export default {
if(res.result.detail){
this.goodsData = res.result.detail
this.$util.showToast({
- title: $lang('merch.public.edit.l170'),
+ title: '商品不存在',
});
setTimeout(() => {
this.$util.redirectTo('/pages_goods/list', {}, 'redirectTo');
@@ -265,7 +265,7 @@ export default {
this.$forceUpdate();
} else {
this.$util.showToast({
- title: $lang('merch.public.edit.l170'),
+ title: '商品不存在',
});
setTimeout(() => {
this.$util.redirectTo('/pages_goods/list', {}, 'redirectTo');
@@ -493,7 +493,7 @@ export default {
addShopCategory() {
if (this.shopCategoryNumber == 10) {
this.$util.showToast({
- title: $lang('merch.public.edit.l496')
+ title: '商品可以属于多个分类,最多10个'
});
return;
}
@@ -530,7 +530,7 @@ export default {
this.goodsData.carmichael = uni.getStorageSync('editGoodsCarmichael') ? JSON.parse(uni.getStorageSync('editGoodsCarmichael')) : [];
if (this.goodsData.carmichael.length > 0) {
- this.carmiLength = $lang('merch.public.edit.l533') + this.goodsData.carmichael.length + '】'
+ this.carmiLength = '添加卡密【' + this.goodsData.carmichael.length + '】'
}
}
@@ -568,21 +568,21 @@ export default {
if (this.goodsData.goodsname.length == 0) {
this.$util.showToast({
- title: $lang('common.ns-navbar.l31.t0')
+ title: '请输入商品名称'
});
return false;
}
if (this.goodsData.subtitle.length > 100) {
this.$util.showToast({
- title: $lang('merch.public.edit.l578')
+ title: '商品简介不能超过100个字符'
});
return false;
}
if (this.goodsData.goods_image.length == 0) {
this.$util.showToast({
- title: $lang('merch.public.edit.l585')
+ title: '请上传商品图片'
});
return false;
}
@@ -632,20 +632,20 @@ export default {
if (this.goodsData.price == 0) {
this.$util.showToast({
- title: $lang('merch.public.edit.l635')
+ title: '请输入销售价'
});
return false;
}
if (isNaN(this.goodsData.price) || !this.$util.data().regExp.digit.test(this.goodsData.price)) {
this.$util.showToast({
- title: $lang('merch.public.edit.l641')
+ title: '[销售价]格式输入错误'
});
return false;
}
if (this.goodsData.productprice.length > 0 && (isNaN(this.goodsData.productprice) || !this.$util.data().regExp.digit.test(this.goodsData.productprice))) {
this.$util.showToast({
- title: $lang('merch.public.edit.l648')
+ title: '[原价价]格式输入错误'
});
return false;
}
@@ -655,26 +655,26 @@ export default {
// 总库存
if (this.goodsData.total == 0) {
this.$util.showToast({
- title: $lang('merch.public.edit.l658')
+ title: '请输入库存'
});
return false;
}
if (isNaN(this.goodsData.total) || !this.$util.data().regExp.number.test(this.goodsData.total)) {
this.$util.showToast({
- title: $lang('merch.public.edit.l665')
+ title: '[库存]格式输入错误'
});
return false;
}
if (isNaN(this.goodsData.goods_start_count) || !this.$util.data().regExp.number.test(this.goodsData.goods_start_count)) {
this.$util.showToast({
- title: $lang('merch.public.edit.l671')
+ title: '[起售]格式输入错误'
});
return false;
}
if (this.goodsData.goods_start_count < 0) {
this.$util.showToast({
- title: $lang('merch.public.edit.l677')
+ title: '起售数量不能小于0'
});
return false;
}
@@ -905,7 +905,7 @@ export default {
getGoodsForm() {
getOrderFormList().then(res=>{
if (res.data) {
- let goodsForm = [$lang('merch.public.edit.l908')];
+ let goodsForm = ['请选择商品表单'];
res.data.forEach((item, index) => {
goodsForm.push(item.form_name);
if (this.goodsData.form_id && this.goodsData.form_id == item.id) this.goodsData.goods_form_index = index + 1;
@@ -926,7 +926,7 @@ export default {
getSupplyList() {
getSupplyList().then(res=>{
if (res.data) {
- let supplyForm = [$lang('merch.public.edit.l929')];
+ let supplyForm = ['请选择供应商'];
res.data.forEach((item, index) => {
supplyForm.push(item.title);
if (this.goodsData.supplier_id && this.goodsData.supplier_id == item.supplier_id) this.goodsData.supply_index = index + 1;
diff --git a/pages_promotion/merch/public/js/list.js b/pages_promotion/merch/public/js/list.js
index f24957f..0d2c625 100644
--- a/pages_promotion/merch/public/js/list.js
+++ b/pages_promotion/merch/public/js/list.js
@@ -39,7 +39,7 @@ export default {
fontWeight: false,
padding: 0,
cartEvent: "detail",
- text: $lang("common.ns-goods-recommend.l20.t0"),
+ text: "购买",
textColor: "#FFFFFF",
theme: "default",
aroundRadius: 25,
@@ -76,8 +76,8 @@ export default {
this.getMerch()
}else{
uni.showModal({
- title:$lang('common.wxwork-contact.l202.t0'),
- content:$lang('merch.public.js.list.l80'),
+ title:'提示',
+ content:'商家不存在',
showCancel:false,
success(e){
uni.navigateBack({})
@@ -120,7 +120,7 @@ export default {
* 转发分享
*/
onShareAppMessage(res) {
- var title = $lang('goods.public.js.list.l126') + this.count + $lang('goods.public.js.list.l126') + this.keyword + this.category_title + this.coupon_name + $lang('goods.public.js.list.l126');
+ var title = '搜索到' + this.count + '件“' + this.keyword + this.category_title + this.coupon_name + '”相关的优质商品';
let route = this.$util.getCurrentShareRoute(this.memberInfo ? this.memberInfo.member_id : 0);
var path = route.path;
return {
@@ -134,7 +134,7 @@ export default {
},
// 分享到微信朋友圈
onShareTimeline() {
- var title = $lang('goods.public.js.list.l126') + this.count + $lang('goods.public.js.list.l126') + this.keyword + this.category_title + this.coupon_name + $lang('goods.public.js.list.l126');
+ var title = '搜索到' + this.count + '件“' + this.keyword + this.category_title + this.coupon_name + '”相关的优质商品';
let route = this.$util.getCurrentShareRoute(this.memberInfo ? this.memberInfo.member_id : 0);
var query = route.query;
return {
@@ -144,18 +144,18 @@ export default {
};
},
methods: {
- getMerch(){
- this.$api.sendRequest({
- url: '/merch/api/merch/merchinfo',
- data: {
- merch_id: this.merch_id
- },
- success: res => {
- if (res.code >= 0 && res.data) {
- this.merch = res.data;
- }
- }
- });
+ getMerch(){
+ this.$api.sendRequest({
+ url: '/merch/api/merch/merchinfo',
+ data: {
+ merch_id: this.merch_id
+ },
+ success: res => {
+ if (res.code >= 0 && res.data) {
+ this.merch = res.data;
+ }
+ }
+ });
},
/**
* 获取优惠券数据
@@ -336,26 +336,26 @@ export default {
// }
if (!Number(this.maxPrice) && this.maxPrice) {
this.$util.showToast({
- title: $lang('goods.public.js.list.l365')
+ title: '请输入最高价'
});
return;
}
if (Number(this.minPrice) < 0 || Number(this.maxPrice) < 0) {
this.$util.showToast({
- title: $lang('goods.public.js.list.l371')
+ title: '筛选价格不能小于0'
});
return;
}
if (this.minPrice != '' && Number(this.minPrice) > Number(this.maxPrice) && this.maxPrice) {
this.$util.showToast({
- title: $lang('goods.public.js.list.l378')
+ title: '最低价不能大于最高价'
});
return;
}
if (this.maxPrice != '' && Number(this.maxPrice) < Number(this.minPrice)) {
this.$util.showToast({
- title: $lang('goods.public.js.list.l384')
+ title: '最高价不能小于最低价'
});
return;
}
diff --git a/pages_promotion/point/detail.vue b/pages_promotion/point/detail.vue
index 90e9780..6b8f00d 100644
--- a/pages_promotion/point/detail.vue
+++ b/pages_promotion/point/detail.vue
@@ -37,12 +37,12 @@
{{ pointInfo.point }}积分
- +{{ $lang('common.currency_symbol') }}{{ pointInfo.exchange_price
+ +{{ $lang('common.currencySymbol') }}{{ pointInfo.exchange_price
}}
- {{ $lang('common.currency_symbol') }}
+ {{ $lang('common.currencySymbol') }}
{{ pointInfo.price }}
@@ -63,9 +63,9 @@
内含{{ pointInfo.balance
}}元
- {{ $lang("diy.diy-coupon.l32.t2") }}
+ 无门槛优惠券
{{ '满' + pointInfo.at_least +
- $lang('common.register-reward.l60.t2') + pointInfo.money
+ '减' + pointInfo.money
}}
满{{ pointInfo.at_least }}元
@@ -74,8 +74,8 @@
最多优惠{{
pointInfo.discount_limit }}元
- {{ pointInfo.validity_type == 1 ? $lang('point.detail.l77') + pointInfo.fixed_term + '天内有效' :
- $util.timeStampTurnTime(pointInfo.end_time) + $lang('point.detail.l78') }}
+ {{ pointInfo.validity_type == 1 ? '领取之日起' + pointInfo.fixed_term + '天内有效' :
+ $util.timeStampTurnTime(pointInfo.end_time) + '到期' }}
@@ -88,7 +88,7 @@
-
+
@@ -96,7 +96,7 @@
v-show="isCommunity">
@@ -161,7 +161,7 @@
+ @click="closeMerchantsServicePopup()">确定
@@ -184,7 +184,7 @@
- {{ $lang("point.detail.l187") }}
+ 兑换详情
@@ -192,7 +192,7 @@
- {{ $lang("point.detail.l195") }}
+ 暂无兑换详情!
@@ -205,14 +205,14 @@
+ type="primary">登录之后方可兑换
+ disabled>库存不足
+ disabled>积分不足
+ type="primary" hover-class="none">兑换
@@ -293,7 +293,7 @@ export default {
imageUrl = this.pointInfo.image;
break;
}
- title = $lang('point.detail.l296') + this.pointInfo.point + $lang('point.detail.l296') + title;
+ title = '仅需' + this.pointInfo.point + '积分即可兑换' + title;
imageUrl = this.$util.img(imageUrl);
var route = this.$util.getCurrentShareRoute(this.memberInfo ? this.memberInfo.member_id : 0);
var path = route.path;
@@ -322,7 +322,7 @@ export default {
imageUrl = this.pointInfo.image;
break;
}
- title = $lang('point.detail.l296') + this.pointInfo.point + $lang('point.detail.l296') + title;
+ title = '仅需' + this.pointInfo.point + '积分即可兑换' + title;
imageUrl = this.$util.img(imageUrl);
var route = this.$util.getCurrentShareRoute(this.memberInfo ? this.memberInfo.member_id : 0);
var query = route.query;
@@ -424,7 +424,7 @@ export default {
if (this.pointInfo.goods_spec_format) this.pointInfo.goods_spec_format = JSON.parse(this.pointInfo.goods_spec_format);
}
- this.pointInfo.unit = this.pointInfo.unit || $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0');
+ this.pointInfo.unit = this.pointInfo.unit || '件';
// 商品详情
if (this.pointInfo.content) this.pointInfo.content = htmlParser(this.pointInfo.content);
@@ -458,7 +458,7 @@ export default {
*/
refreshGoodsSkuDetail(pointInfo) {
Object.assign(this.pointInfo, pointInfo);
- this.pointInfo.unit = this.pointInfo.unit || $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0');
+ this.pointInfo.unit = this.pointInfo.unit || '件';
},
//服务
openMerchantsServicePopup() {
diff --git a/pages_promotion/point/goods_list.vue b/pages_promotion/point/goods_list.vue
index 6db08df..eb27ef9 100644
--- a/pages_promotion/point/goods_list.vue
+++ b/pages_promotion/point/goods_list.vue
@@ -14,10 +14,10 @@
- {{ isEnEnv ? 'Comprehensive' : $lang('goods.list.l19') }}
+ {{ isEnEnv ? 'Comprehensive' : '综合' }}
- {{ isEnEnv ? 'Points' : $lang('common.register-reward.l19.t0') }}
+ {{ isEnEnv ? 'Points' : '积分' }}
@@ -26,7 +26,7 @@
- {{ isEnEnv ? 'New Arrival' : $lang('point.goods_list.l29')
+ {{ isEnEnv ? 'New Arrival' : '上新时间'
}}
- {{ isEnEnv ? 'Filter' : $lang('goods.list.l40') }}
+ {{ isEnEnv ? 'Filter' : '筛选' }}
@@ -60,10 +60,10 @@
{{ item.point }}
- {{ isEnEnv ? 'Points' : $lang('common.register-reward.l19.t0') }}
+ {{ isEnEnv ? 'Points' : '积分' }}
+
- {{ $lang('common.currency_symbol')
+ {{ $lang('common.currencySymbol')
}}
{{
parseFloat(item.price).toFixed(2).split(".")[0] }}
@@ -73,10 +73,10 @@
- {{ isEnEnv ? 'Stock ' : $lang('common.ns-goods-sku.l120.t0') }}{{
+ {{ isEnEnv ? 'Stock ' : '库存' }}{{
item.stock }}
-
+
@@ -92,11 +92,11 @@
- {{ isEnEnv ? 'Filter' : $lang('goods.list.l40') }}
+ {{ isEnEnv ? 'Filter' : '筛选' }}
- {{ isEnEnv ? 'Point Range' : $lang('point.goods_list.l99') }}
+ {{ isEnEnv ? 'Point Range' : '积分区间' }}
@@ -107,11 +107,11 @@
- {{ isEnEnv ? 'All Categories' : $lang('goods.list.l188') }}
+ {{ isEnEnv ? 'All Categories' : '全部分类' }}
{{ isEnEnv ? 'All' :
- $lang('diy.diy-category-item.l47.t0') }}
+ '全部' }}
@@ -285,26 +285,26 @@ export default {
// }
if (!Number(this.maxPoint) && this.maxPoint) {
this.$util.showToast({
- title: this.isEnEnv ? 'Please enter the maximum price' : $lang('goods.public.js.list.l365')
+ title: this.isEnEnv ? 'Please enter the maximum price' : '请输入最高价'
});
return;
}
if (Number(this.minPoint) < 0 || Number(this.maxPoint) < 0) {
this.$util.showToast({
- title: this.isEnEnv ? 'Filter price cannot be less than 0' : $lang('goods.public.js.list.l371')
+ title: this.isEnEnv ? 'Filter price cannot be less than 0' : '筛选价格不能小于0'
});
return;
}
if (this.minPoint != '' && Number(this.minPoint) > Number(this.maxPoint) && this.maxPoint) {
this.$util.showToast({
- title: this.isEnEnv ? 'Minimum price cannot be greater than maximum price' : $lang('goods.public.js.list.l378')
+ title: this.isEnEnv ? 'Minimum price cannot be greater than maximum price' : '最低价不能大于最高价'
});
return;
}
if (this.maxPoint != '' && Number(this.maxPoint) < Number(this.minPoint)) {
this.$util.showToast({
- title: this.isEnEnv ? 'Maximum price cannot be less than minimum price' : $lang('goods.public.js.list.l384')
+ title: this.isEnEnv ? 'Maximum price cannot be less than minimum price' : '最高价不能小于最低价'
});
return;
}
diff --git a/pages_promotion/point/list.vue b/pages_promotion/point/list.vue
index 751460b..e27e159 100644
--- a/pages_promotion/point/list.vue
+++ b/pages_promotion/point/list.vue
@@ -1,607 +1,607 @@
-
-
-
-
-
-
-
-
-
-
- {{ $lang("point.list.l13") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("point.list.l31") }}
-
-
- {{ point }}
- {{ $lang("common.register-reward.l19.t0") }}
-
-
-
-
-
-
-
-
-
-
-
- { $lang("point.list.l84") } parseFloat(item.buy_price) }}元
- { $lang("order.payment.l73") } item.point }}积分
- {{ $lang("point.list.l86") }}
-
-
-
-
-
-
-
- {{ $lang("point.list.l94") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ¥
- {{ parseFloat(couponItem.money) }}
-
-
-
- {{ parseFloat(couponItem.discount) }}{{ $lang("common.register-reward.l60.t1") }}
-
-
-
-
-
- {{ couponItem.at_least == 0 ? '无门槛优惠券' : $lang('diy.diy-coupon.l32.t0') +
- parseFloat(couponItem.at_least).toFixed(0) + $lang('point.list.l125') }}
-
- {{ $lang("point.list.l128") }}
-
- 指定券
-
-
-
- {{ couponItem.point }}积分
- {{ $lang("common.ns-goods-sku.l185.t0") }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("point.list.l148") }}
-
-
-
-
-
-
-
-
-
-
-
-
- ¥
- {{ parseFloat(hongbaoItem.balance).toFixed(0) }}
-
-
-
-
- {{ hongbaoItem.point }}积分
- {{ $lang("common.ns-goods-sku.l185.t0") }}
-
-
-
-
-
-
-
-
-
-
- {{ $lang("point.list.l181") }}
-
-
-
-
-
-
-
-
-
-
-
- {{ item.name }}
-
-
-
-
- {{ item.point }}
- {{ $lang("common.register-reward.l19.t0") }}
-
-
- +
-
- {{
- parseFloat(item.price).toFixed(2).split(".")[0] }}
- .{{
- parseFloat(item.price).toFixed(2).split(".")[1] }}元
-
-
-
- {{ $lang("common.ns-goods-sku.l185.t0") }}
-
-
-
- 库存:{{ isNaN(parseInt(item.stock)) ? 0 : parseInt(item.stock) }}
-
- 已兑:{{ isNaN(parseInt(item.sale_num)) ? 0 : parseInt(item.sale_num) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ isEnEnv ? 'Integral Description' : $lang('point.list.l234') }}
-
-
-
-
- {{ isEnEnv ? 'Integral Acquisition' : $lang('point.list.l239') }}
- {{ $lang("point.list.l240") }}
- {{ $lang("point.list.l241") }}
- {{ isEnEnv ? 'Integral Use' : $lang('point.list.l242') }}
- {{ $lang("point.list.l243") }}
- {{ $lang("point.list.l244") }}
- {{ $lang("point.list.l245") }}
- {{ isEnEnv ? 'Integral Query' : $lang('point.list.l246') }}
- {{ $lang("point.list.l247") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages_promotion/point/order_list.vue b/pages_promotion/point/order_list.vue
index 77f6a21..13938c5 100644
--- a/pages_promotion/point/order_list.vue
+++ b/pages_promotion/point/order_list.vue
@@ -16,7 +16,7 @@
@@ -82,7 +82,7 @@
+ text="暂无积分兑换订单">
@@ -104,9 +104,9 @@ export default {
outTradeNo: '',
payMoney: 0,
statusList: [
- { status: 'all', id: 'all', name: $lang('diy.diy-category-item.l47.t0') },
- { status: 0, id: 'pay', name: $lang('order.detail_point.l14') },
- { status: 1, id: 'complete', name: $lang('order.detail_point.l14') },
+ { status: 'all', id: 'all', name: '全部' },
+ { status: 0, id: 'pay', name: '待支付' },
+ { status: 1, id: 'complete', name: '已完成' },
],
orderStatus: 'all',
};
@@ -115,7 +115,7 @@ export default {
setTimeout(() => {
if (!this.addonIsExist.pointexchange) {
this.$util.showToast({
- title: $lang('point.list.l305'),
+ title: '商家未开启积分商城',
mask: true,
duration: 2000
});
@@ -182,8 +182,8 @@ export default {
},
orderClose(order_id, index) {
uni.showModal({
- title: $lang('common.wxwork-contact.l202.t0'),
- content: $lang('order.detail_point.l225'),
+ title: '提示',
+ content: '确定关闭此次兑换?',
success: res => {
if (res.confirm) {
this.$api.sendRequest({
@@ -195,7 +195,7 @@ export default {
if (res.code >= 0) {
this.orderList[index].order_status = -1;
this.$util.showToast({
- title: $lang('order.detail_point.l236')
+ title: '关闭成功'
});
this.$forceUpdate();
}
diff --git a/pages_promotion/point/payment.vue b/pages_promotion/point/payment.vue
index 053c0ed..ea0cebf 100644
--- a/pages_promotion/point/payment.vue
+++ b/pages_promotion/point/payment.vue
@@ -7,7 +7,7 @@
}">
- {{ $lang("order._components.common-payment.l7.t0") }}
+ 确认订单
@@ -42,13 +42,13 @@
由 {{ storeInfo.currStore.store_name }} 提供配送
- {{ $lang("order._components.common-payment.l75.t0") }}
+ 点击切换
- {{ $lang("order._components.common-payment.l81.t0") }}
+ 您的附近没有可配送的门店,请选择其他配送方式
@@ -69,7 +69,7 @@
- {{ $lang("order._components.common-payment.l57.t0") }}
+ 请设置收货地址
@@ -80,11 +80,11 @@
- {{ $lang("order._components.common-payment.l100.t0") }}
+ 送达时间
{{
orderCreateData.buyer_ask_delivery_title ?
- orderCreateData.buyer_ask_delivery_title : $lang('order._components.common-payment.l102.t0') }}
+ orderCreateData.buyer_ask_delivery_title : '请选择送达时间' }}
@@ -116,28 +116,28 @@
- {{ $lang("order._components.common-payment.l138.t0") }}
+ 姓名
- {{ $lang("order._components.common-payment.l144.t0") }}
- 预留手机
+
- {{ $lang("point.payment.l133") }}
+ 自提时间
{{ orderCreateData.buyer_ask_delivery_title }}
- {{ $lang("order._components.common-payment.l156.t0") }}
+ 当前无自提门店,请选择其它配送方式
@@ -151,8 +151,8 @@
- {{ $lang("order._components.common-payment.l27.t0") }}
- 手机号码
+
@@ -188,9 +188,9 @@
{{ orderPaymentData.exchange_info.point }}
- {{ $lang("common.register-reward.l19.t0") }}
+ 积分
- +{{ $lang('common.currency_symbol') }}
+ +{{ $lang('common.currencySymbol') }}
{{ orderPaymentData.exchange_info.price }}
@@ -204,8 +204,8 @@
diff --git a/pages_promotion/point/public/js/payment.js b/pages_promotion/point/public/js/payment.js
index 1551ddb..c0d7cbd 100644
--- a/pages_promotion/point/public/js/payment.js
+++ b/pages_promotion/point/public/js/payment.js
@@ -92,7 +92,7 @@ export default {
uni.removeStorageSync("pay_flag");
} else {
this.$util.showToast({
- title: $lang('point.public.js.payment.l95')
+ title: '未获取到创建订单所需数据!'
});
setTimeout(() => {
this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
@@ -119,7 +119,7 @@ export default {
if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
} else {
this.$util.showToast({
- title: $lang('point.public.js.payment.l95')
+ title: '未获取到创建订单所需数据!'
});
setTimeout(() => {
this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
@@ -280,9 +280,9 @@ export default {
this.isSub = false;
if (res.data.error_code == 10 || res.data.error_code == 12) {
uni.showModal({
- title: $lang('point.public.js.payment.l283'),
+ title: '订单未创建',
content: res.message,
- confirmText: $lang('point.public.js.payment.l285'),
+ confirmText: '去设置',
success: res => {
if (res.confirm) {
this.selectAddress();
@@ -309,13 +309,13 @@ export default {
if (this.orderPaymentData.is_virtual == 1) {
if (!this.orderCreateData.member_address.mobile.length) {
this.$util.showToast({
- title: $lang('order._components.common-payment.l28.t0')
+ title: '请输入您的手机号码'
});
return false;
}
if (!this.$util.verifyMobile(this.orderCreateData.member_address.mobile)) {
this.$util.showToast({
- title: $lang('point.public.js.payment.l318')
+ title: '请输入正确的手机号码'
});
return false;
}
@@ -324,7 +324,7 @@ export default {
if (this.orderPaymentData.is_virtual == 0) {
if (!this.orderCreateData.delivery || !this.orderCreateData.delivery.delivery_type) {
this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l500.t0')
+ title: '商家未设置配送方式'
});
return false;
}
@@ -332,7 +332,7 @@ export default {
if (this.orderCreateData.delivery.delivery_type != 'store') {
if (!this.orderCreateData.member_address) {
this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l509.t0')
+ title: '请先选择您的收货地址'
});
return false;
}
@@ -341,26 +341,26 @@ export default {
if (this.orderCreateData.delivery.delivery_type == 'store') {
if (!this.orderCreateData.delivery.store_id) {
this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l517.t0')
+ title: '没有可提货的门店,请选择其他配送方式'
});
return false;
}
if (!this.member_address.mobile) {
this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l487.t0')
+ title: '请输入预留手机'
});
return false;
}
if (!this.$util.verifyMobile(this.member_address.mobile)) {
this.$util.showToast({
- title: $lang('point.public.js.payment.l356')
+ title: '请输入正确的预留手机'
});
return false;
}
if (!this.orderCreateData.delivery.buyer_ask_delivery_time.start_date || !this.orderCreateData.delivery.buyer_ask_delivery_time.end_date) {
this.$util.showToast({
- title: $lang('point.public.js.payment.l363')
+ title: '请选择自提时间'
});
return false;
}
@@ -369,13 +369,13 @@ export default {
if (this.orderCreateData.delivery.delivery_type == 'local') {
if (!this.orderCreateData.delivery.store_id) {
this.$util.showToast({
- title: $lang('order._components.common-payment.payment.l544.t0')
+ title: '没有可配送的门店,请选择其他配送方式'
});
return false;
}
if (this.orderPaymentData.config.local.is_use && this.orderPaymentData.delivery.local.info && this.orderPaymentData.delivery.local.info.time_is_open == 1 && (!this.orderCreateData.delivery.buyer_ask_delivery_time.start_date || !this.orderCreateData.delivery.buyer_ask_delivery_time.end_date)) {
this.$util.showToast({
- title: $lang('point.public.js.payment.l378')
+ title: '请选择配送时间'
});
return false;
}
@@ -526,7 +526,7 @@ export default {
start_date:data.data.start_date,
end_date:data.data.end_date
};
- if (data.data.title == $lang('common.ns-select-time.l173.t0') || data.data.title == $lang('common.ns-select-time.l185.t0')) {
+ if (data.data.title == '今天' || data.data.title == '明天') {
this.orderCreateData.buyer_ask_delivery_title = data.data.title + '(' + data.data.time + ')'
} else {
this.orderCreateData.buyer_ask_delivery_title = data.data.month + '(' + data.data.time + ')'
diff --git a/pages_promotion/point/result.vue b/pages_promotion/point/result.vue
index f6e1408..b98624f 100644
--- a/pages_promotion/point/result.vue
+++ b/pages_promotion/point/result.vue
@@ -3,10 +3,10 @@
- {{ $lang('point.list.exchange_success') }}
+ {{ $lang('exchangeSuccess') }}
- {{ $lang('common.list.see') }}
- {{ $lang('common.empty.goHome') }}
+ {{ $lang('see') }}
+ {{ $lang('goHome') }}
diff --git a/pages_tool/_components/img-cropping/img-cropping.vue b/pages_tool/_components/img-cropping/img-cropping.vue
index ca083db..0dac5d9 100644
--- a/pages_tool/_components/img-cropping/img-cropping.vue
+++ b/pages_tool/_components/img-cropping/img-cropping.vue
@@ -1,1484 +1,1484 @@
-
-
-
-
-
-
-
-
-
- {{ $lang("common.pick-regions.l17.t0") }}
-
-
-
- {{ $lang("tool._components.img-cropping.l23.t0") }}
-
-
-
- {{ $lang("tool._components.img-cropping.l23.t0") }}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ 取消
+
+
+
+ 上传
+
+
+
+ 上传
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/_components/ns-birthday-gift/ns-birthday-gift.vue b/pages_tool/_components/ns-birthday-gift/ns-birthday-gift.vue
index 4e5157e..4e21283 100644
--- a/pages_tool/_components/ns-birthday-gift/ns-birthday-gift.vue
+++ b/pages_tool/_components/ns-birthday-gift/ns-birthday-gift.vue
@@ -1,332 +1,332 @@
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_tool/_components/ns-new-gift/ns-new-gift.vue b/pages_tool/_components/ns-new-gift/ns-new-gift.vue
index e456b0e..b5e49cd 100644
--- a/pages_tool/_components/ns-new-gift/ns-new-gift.vue
+++ b/pages_tool/_components/ns-new-gift/ns-new-gift.vue
@@ -1,345 +1,345 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_tool/agreement/contenr.vue b/pages_tool/agreement/contenr.vue
index c3459cd..cbeb361 100644
--- a/pages_tool/agreement/contenr.vue
+++ b/pages_tool/agreement/contenr.vue
@@ -8,9 +8,9 @@
📄
- {{ $lang("tool.agreement.contenr.l11.t0") }}
- {{ $lang("tool.agreement.contenr.l12.t0") }}
-
+ 暂无内容
+ 该协议内容暂未设置
+
diff --git a/pages_tool/ai-chat/ai-chat-message.vue b/pages_tool/ai-chat/ai-chat-message.vue
index b7e5329..7850336 100644
--- a/pages_tool/ai-chat/ai-chat-message.vue
+++ b/pages_tool/ai-chat/ai-chat-message.vue
@@ -74,7 +74,7 @@
- {{ $lang('ai_chat.list.ai_nickname') }}
+ {{ $lang('aiNickname') }}
{{ formatTime(message.timestamp) }}
- {{ message.title || $lang('common.list.audio_message') }}
+ {{ message.title || $lang('audioMessage') }}
{{ formatDuration(message.duration) }}
@@ -157,7 +157,7 @@
@pause="onVideoPause(message)">
- {{ message.title || $lang('common.list.video_message') }}
+ {{ message.title || $lang('videoMessage') }}
{{ formatDuration(message.duration) }}
@@ -187,7 +187,7 @@
- {{ message.loadingText || $lang('ai_chat.list.ai_thinking') }}
+ {{ message.loadingText || $lang('aiThinking') }}
.
.
@@ -232,7 +232,7 @@
@@ -283,7 +283,7 @@
- {{ $lang('common.list.expand_editor_title') }}
+ {{ $lang('expandEditorTitle') }}
@@ -291,15 +291,15 @@
-
-
+
+
@@ -397,7 +397,7 @@ export default {
scrollTop: 0,
scrollIntoViewId: null,
hasMoreHistory: false,
- loadingText: this.$lang('common.list.load_more_history'),
+ loadingText: this.$lang('loadMoreHistory'),
voiceInputing: false,
audioContext: null,
currentAudio: null,
@@ -417,7 +417,7 @@ export default {
localUserAvatar: '',
showAvatarSelector: false, // 头像选择弹窗控制
localUserNickname: '', // 当前用户昵称
- defaultNickname: this.$lang('common.list.default_nickname'), // 默认昵称
+ defaultNickname: this.$lang('defaultNickname'), // 默认昵称
showNicknameEditor: false, // 昵称编辑弹窗控制
// AI头像错误状态
avatarError: false,
@@ -615,19 +615,19 @@ export default {
console.log('[AI Chat] loadHistoryIfNeeded | localConvId:', localConvId, '| currentConvId:', this.currentConversationId, '| shouldReload:', shouldReload, '| messages.length:', this.messages.length, '| initialMessages.length:', this.initialMessages.length);
if (localConvId && shouldReload) {
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l618.t0'));
+ console.log('[AI Chat] → 分支1: ID变化,加载历史');
this.currentConversationId = localConvId;
aiService.setConversationId(localConvId);
this.loadChatHistoryIfExist();
} else if (localConvId && !shouldReload && this.messages.length <= this.initialMessages.length) {
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l623.t0'));
+ console.log('[AI Chat] → 分支2: ID不变但只有初始消息,从服务端恢复');
this.currentConversationId = localConvId;
this.loadChatHistoryIfExist();
} else if (!localConvId && !this.currentConversationId) {
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l627.t0'));
+ console.log('[AI Chat] → 分支3: 全新会话');
this.historyOffset = this.messages.length;
} else {
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l630.t0'), this.messages.length);
+ console.log('[AI Chat] → 分支4: 跳过加载,保留当前消息, messages.length:', this.messages.length);
}
},
@@ -635,7 +635,7 @@ export default {
async _loadWelcomeMessage() {
// 仅全新会话才需要欢迎语
if (this.currentConversationId) {
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l638.t0'))
+ console.log('[AI Chat] 已有会话,跳过欢迎语')
return
}
@@ -646,7 +646,7 @@ export default {
// 1. 尝试从 API 获取远程欢迎语
try {
const config = await aiService.getServiceConfig()
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l649.t0'), JSON.stringify(config))
+ console.log('[AI Chat] API getServiceConfig 返回:', JSON.stringify(config))
if (config) {
const welcomeInfo = config.welcome_info
console.log('[AI Chat] welcomeInfo:', JSON.stringify(welcomeInfo))
@@ -657,11 +657,11 @@ export default {
welcomeText = remoteText
isMarkdown = true
welcomeLoaded = true
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l660.t0'), welcomeText.substring(0, 50))
+ console.log('[AI Chat] 使用远程欢迎语:', welcomeText.substring(0, 50))
}
}
} catch (e) {
- console.warn($lang('ai_chat.ai-chat.ai-chat-message.l664.t0'), e)
+ console.warn('[AI Chat] 获取服务配置失败:', e)
}
// 2. API 未返回有效欢迎语时,使用降级方案
@@ -669,9 +669,9 @@ export default {
welcomeText = this.fallbackWelcome
isMarkdown = false
if (welcomeText) {
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l672.t0'))
+ console.log('[AI Chat] 使用降级欢迎语')
} else {
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l674.t0'))
+ console.log('[AI Chat] 无可用欢迎语')
return
}
}
@@ -764,21 +764,21 @@ export default {
// 新增:加载历史记录
async loadChatHistoryIfExist() {
const convId = aiService.getConversationId();
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l767.t0'), convId);
+ console.log('[AI Chat] loadChatHistoryIfExist 被调用, convId:', convId);
if (convId) {
try {
// 调用正确的方法,并传入会话ID
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l771.t0'));
+ console.log('[AI Chat] 请求历史 API...');
const response = await aiService.getConversationHistory({
conversation_id: convId
});
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l775.t0'), JSON.stringify(response).substring(0, 200));
+ console.log('[AI Chat] 历史 API 返回:', JSON.stringify(response).substring(0, 200));
if (!response.success || !Array.isArray(response.messages)) {
- console.warn($lang('ai_chat.ai-chat.ai-chat-message.l778.t0'), response.success, 'messages:', Array.isArray(response.messages));
+ console.warn('[AI Chat] 历史记录为空或格式无效, success:', response.success, 'messages:', Array.isArray(response.messages));
return;
}
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l781.t0'), response.messages.length, 'total:', response.total);
+ console.log('[AI Chat] 原始消息数:', response.messages.length, 'total:', response.total);
// 需要根据实际返回的 response.data.messages 来映射
this.messages = response.messages.map(msg => {
let content = '';
@@ -798,13 +798,13 @@ async loadChatHistoryIfExist() {
actions: []
};
}).filter(msg => msg.content.trim() !== ''); // 过滤掉内容为空的消息
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l801.t0'), this.messages.length, $lang('ai_chat.ai-chat.ai-chat-message.l801.t1'), this.messages.map(m => ({role: m.role, content: m.content.substring(0, 30)})));
+ console.log('[AI Chat] 过滤后消息数:', this.messages.length, '内容摘要:', this.messages.map(m => ({role: m.role, content: m.content.substring(0, 30)})));
// 根据服务端 total 判断是否还有更多历史可加载
const msgCount = this.messages.length;
this.hasMoreHistory = response.total > msgCount;
this.historyOffset = msgCount;
} catch (error) {
- console.error($lang('ai_chat.ai-chat.ai-chat-message.l807.t0'), error.message, error.stack);
+ console.error('[AI Chat] 加载历史记录失败:', error.message, error.stack);
// 只需调用服务层的清除方法,它会处理本地存储
aiService.clearConversationId();
this.currentConversationId = null;
@@ -857,7 +857,7 @@ async loadChatHistoryIfExist() {
type: 'loading',
content: '',
timestamp: Date.now(),
- loadingText: this.$lang('ai_chat.list.ai_thinking'),
+ loadingText: this.$lang('aiThinking'),
_loadingIndex: 0
}
this.shouldScrollToBottom = true
@@ -881,7 +881,7 @@ async loadChatHistoryIfExist() {
}
} catch (error) {
- console.error($lang('ai_chat.ai-chat.ai-chat-message.l884.t0'), error)
+ console.error('AI服务调用失败:', error)
// 移除加载状态
this._removeLoadingMessages()
@@ -891,10 +891,10 @@ async loadChatHistoryIfExist() {
id: ++this.messageId,
role: 'ai',
type: 'text',
- content: this.$lang('chat.list.service_unavailable'),
+ content: this.$lang('serviceUnavailable'),
timestamp: Date.now(),
actions: [
- { id: 1, text: this.$lang('common.button.retry'), type: 'retry' }
+ { id: 1, text: this.$lang('retry'), type: 'retry' }
]
}
this.shouldScrollToBottom = true
@@ -975,7 +975,7 @@ async sendStreamMessage(userMessage) {
this.isStreaming = true
const loadingMsg = this.messages[loadingIdx]
this._stopLoadingTextRotation(loadingMsg)
- loadingMsg.loadingText = this.$lang('common.list.receiving_reply')
+ loadingMsg.loadingText = this.$lang('receivingReply')
let transformed = false
@@ -1023,7 +1023,7 @@ async sendStreamMessage(userMessage) {
)
// #endif
} catch (error) {
- console.error($lang('ai_chat.ai-chat.ai-chat-message.l1026.t0'), error)
+ console.error('流式请求失败:', error)
this.isStreaming = false
if (!transformed) {
@@ -1041,9 +1041,9 @@ async sendStreamMessage(userMessage) {
id: ++this.messageId,
role: 'ai',
type: 'text',
- content: this.$lang('chat.list.service_temporary_unavailable'),
+ content: this.$lang('serviceTemporaryUnavailable'),
timestamp: Date.now(),
- actions: [{ id: 1, text: this.$lang('common.button.retry'), type: 'retry' }]
+ actions: [{ id: 1, text: this.$lang('retry'), type: 'retry' }]
}
this.messages.push(errorMsg)
this.$emit('ai-response', errorMsg)
@@ -1079,7 +1079,7 @@ _finishStream(msg, result) {
// 流式请求出错处理
_handleStreamError(msg) {
- console.error($lang('ai_chat.ai-chat.ai-chat-message.l1082.t0'))
+ console.error('流式请求失败')
this.isStreaming = false
this.messages = this.messages.filter(m => m.id !== msg.id)
@@ -1087,9 +1087,9 @@ _handleStreamError(msg) {
id: ++this.messageId,
role: 'ai',
type: 'text',
- content: this.$lang('chat.list.service_temporary_unavailable'),
+ content: this.$lang('serviceTemporaryUnavailable'),
timestamp: Date.now(),
- actions: [{ id: 1, text: this.$lang('common.button.retry'), type: 'retry' }]
+ actions: [{ id: 1, text: this.$lang('retry'), type: 'retry' }]
}
this.messages.push(errorMsg)
this.$emit('ai-response', errorMsg)
@@ -1097,10 +1097,10 @@ _handleStreamError(msg) {
// 加载状态文字轮换 - 让AI看起来在处理不同阶段
_startLoadingTextRotation(loadingMsg) {
const statusTexts = [
- $lang('ai_chat.ai-chat.ai-chat-message.l1100.t0'),
- $lang('ai_chat.ai-chat.ai-chat-message.l1101.t0'),
- $lang('ai_chat.ai-chat.ai-chat-message.l1102.t0'),
- $lang('ai_chat.ai-chat.ai-chat-message.l1103.t0')
+ 'AI正在思考',
+ 'AI正在分析',
+ 'AI正在检索',
+ 'AI正在生成'
]
loadingMsg._rotationTimer = setInterval(() => {
loadingMsg._loadingIndex = (loadingMsg._loadingIndex + 1) % statusTexts.length
@@ -1125,11 +1125,11 @@ _handleStreamError(msg) {
generateAIResponse(userMessage) {
const responses = {
- '你好': $lang('ai_chat.ai-chat.ai-chat-message.l1128.t1'),
- '价格': $lang('ai_chat.ai-chat.ai-chat-message.l1129.t0'),
- '发货': $lang('ai_chat.ai-chat.ai-chat-message.l1130.t1'),
- '退货': $lang('ai_chat.ai-chat.ai-chat-message.l1131.t1'),
- '客服': $lang('ai_chat.ai-chat.ai-chat-message.l1132.t1')
+ '你好': '您好!我是AI智能客服,很高兴为您服务!有什么可以帮助您的吗?',
+ '价格': '我们的产品价格根据型号和配置有所不同,具体价格请查看商品详情页面。',
+ '发货': '一般情况下,订单会在24小时内发货,具体时效请查看物流信息。',
+ '退货': '支持7天无理由退货,请确保商品完好无损。',
+ '客服': '我们的客服工作时间是9:00-18:00,有问题可以随时联系我们。'
};
for (let key in responses) {
if (userMessage.includes(key)) {
@@ -1365,10 +1365,10 @@ _handleStreamError(msg) {
return timeStr;
}
if (msgDate.getTime() === yesterday.getTime()) {
- return `${this.$lang('common.list.time_format_yesterday')} ${timeStr}`;
+ return `${this.$lang('timeFormatYesterday')} ${timeStr}`;
}
if (msgDate.getTime() === beforeYesterday.getTime()) {
- return `${this.$lang('common.list.time_format_before_yesterday')} ${timeStr}`;
+ return `${this.$lang('timeFormatBeforeYesterday')} ${timeStr}`;
}
const isCurrentYear = date.getFullYear() === now.getFullYear();
@@ -1385,9 +1385,9 @@ _handleStreamError(msg) {
// 格式化文件大小
formatFileSize(bytes) {
- if (!bytes) return this.$lang('common.list.about')
+ if (!bytes) return this.$lang('about')
const k = 1024
- const sizes = [this.$lang('common.list.about'), 'KB', 'MB', 'GB']
+ const sizes = [this.$lang('about'), 'KB', 'MB', 'GB']
const i = Math.floor(Math.log(bytes) / Math.log(k))
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + sizes[i]
},
@@ -1426,7 +1426,7 @@ _handleStreamError(msg) {
}
this.isFetchingHistory = true;
this.isLoadingHistory = true;
- this.loadingText = $lang('ai_chat.ai-chat.ai-chat-message.l1429.t0');
+ this.loadingText = '加载历史消息中...';
try {
const response = await aiService.getConversationHistory({
@@ -1474,13 +1474,13 @@ _handleStreamError(msg) {
this.hasMoreHistory = false;
}
} catch (error) {
- console.error($lang('ai_chat.ai-chat.ai-chat-message.l1477.t0'), error);
- uni.showToast({ title: this.$lang('common.list.load_history_fail'), icon: 'none' });
+ console.error('加载历史失败:', error);
+ uni.showToast({ title: this.$lang('loadHistoryFail'), icon: 'none' });
this.hasMoreHistory = false;
} finally {
this.isLoadingHistory = false;
this.isFetchingHistory = false;
- this.loadingText = $lang('ai_chat.ai-chat.ai-chat-message.l1483.t0');
+ this.loadingText = '加载更多历史消息';
}
},
// 显示更多工具
@@ -1490,7 +1490,7 @@ _handleStreamError(msg) {
// 预览文件
previewFile(message) {
- uni.showLoading({ title: this.$lang('common.list.opening_file') })
+ uni.showLoading({ title: this.$lang('openingFile') })
// #ifdef H5
window.open(message.url, '_blank')
@@ -1500,7 +1500,7 @@ _handleStreamError(msg) {
plus.runtime.openFile(message.url, {
error: (e) => {
uni.showToast({
- title: this.$lang('common.list.file_open_fail'),
+ title: this.$lang('fileOpenFail'),
icon: 'none'
})
}
@@ -1674,7 +1674,7 @@ _handleStreamError(msg) {
copyText = message.content || ''
}
if (!copyText) {
- uni.showToast({ title: this.$lang('common.list.no_content_to_copy'), icon: 'none' })
+ uni.showToast({ title: this.$lang('noContentToCopy'), icon: 'none' })
return
}
@@ -1688,7 +1688,7 @@ _handleStreamError(msg) {
try {
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(finalText).then(() => {
- uni.showToast({ title: selectedText ? '已复制选中内容' : $lang('ai_chat.ai-chat.ai-chat-message.l1691.t1'), icon: 'success' })
+ uni.showToast({ title: selectedText ? '已复制选中内容' : '已复制', icon: 'success' })
}).catch(() => {
this._fallbackCopyH5(finalText)
})
@@ -1702,17 +1702,17 @@ _handleStreamError(msg) {
// #ifdef MP-WEIXIN
// 微信小程序专用(含小米等 Android 兼容)
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l1705.t0'), copyText.length, $lang('ai_chat.ai-chat.ai-chat-message.l1705.t1'), copyText.substring(0, 50))
+ console.log('[AI Chat] 开始复制, 内容长度:', copyText.length, '内容前50字:', copyText.substring(0, 50))
uni.setClipboardData({
data: copyText,
success: () => {
- console.log($lang('ai_chat.ai-chat.ai-chat-message.l1709.t0'))
- uni.showToast({ title: this.$lang('common.tip.copySuccess'), icon: 'success' })
+ console.log('[AI Chat] 复制成功')
+ uni.showToast({ title: this.$lang('copySuccess'), icon: 'success' })
},
fail: (err) => {
- console.error($lang('ai_chat.ai-chat.ai-chat-message.l1713.t0'), JSON.stringify(err))
- console.error($lang('ai_chat.ai-chat.ai-chat-message.l1714.t0'), err.errMsg || err.message || $lang('ai_chat.ai-chat.ai-chat-message.l1714.t1'))
- uni.showToast({ title: this.$lang('common.tip.copyFail') + ': ' + (err.errMsg || this.$lang('chat.list.service_unavailable')), icon: 'none', duration: 3000 })
+ console.error('[AI Chat] 复制失败, 详细错误:', JSON.stringify(err))
+ console.error('[AI Chat] 复制失败 errMsg:', err.errMsg || err.message || '无错误消息')
+ uni.showToast({ title: this.$lang('copyFail') + ': ' + (err.errMsg || this.$lang('serviceUnavailable')), icon: 'none', duration: 3000 })
}
})
// #endif
@@ -1733,12 +1733,12 @@ _handleStreamError(msg) {
const success = document.execCommand('copy')
document.body.removeChild(textarea)
if (success) {
- uni.showToast({ title: this.$lang('common.tip.copySuccess'), icon: 'success' })
+ uni.showToast({ title: this.$lang('copySuccess'), icon: 'success' })
} else {
- uni.showToast({ title: this.$lang('common.tip.copyFail'), icon: 'none' })
+ uni.showToast({ title: this.$lang('copyFail'), icon: 'none' })
}
} catch (e) {
- uni.showToast({ title: this.$lang('common.tip.copyFail'), icon: 'none' })
+ uni.showToast({ title: this.$lang('copyFail'), icon: 'none' })
}
},
@@ -1841,7 +1841,7 @@ _handleStreamError(msg) {
type: 'loading',
content: '',
timestamp: Date.now(),
- loadingText: this.$lang('ai_chat.list.ai_thinking'),
+ loadingText: this.$lang('aiThinking'),
_loadingIndex: 0
}
@@ -1862,7 +1862,7 @@ _handleStreamError(msg) {
}
} catch (error) {
- console.error($lang('ai_chat.ai-chat.ai-chat-message.l884.t0'), error)
+ console.error('AI服务调用失败:', error)
// 移除加载状态
this._removeLoadingMessages()
@@ -1872,10 +1872,10 @@ _handleStreamError(msg) {
id: ++this.messageId,
role: 'ai',
type: 'text',
- content: this.$lang('chat.list.service_unavailable'),
+ content: this.$lang('serviceUnavailable'),
timestamp: Date.now(),
actions: [
- { id: 1, text: this.$lang('common.button.retry'), type: 'retry' }
+ { id: 1, text: this.$lang('retry'), type: 'retry' }
]
}
@@ -1968,167 +1968,167 @@ _handleStreamError(msg) {
enhanceEmojiMessage(content) {
// 常见表情的含义映射
const emojiResponses = {
- '😀': $lang('ai_chat.ai-chat.ai-chat-message.l1971.t0'),
- '😂': $lang('ai_chat.ai-chat.ai-chat-message.l1972.t0'),
- '😊': $lang('ai_chat.ai-chat.ai-chat-message.l1973.t0'),
- '❤️': $lang('ai_chat.ai-chat.ai-chat-message.l1974.t0'),
- '👍': $lang('ai_chat.ai-chat.ai-chat-message.l1975.t0'),
- '😭': $lang('ai_chat.ai-chat.ai-chat-message.l1976.t0'),
- '🙏': $lang('ai_chat.ai-chat.ai-chat-message.l1977.t0'),
- '😍': $lang('ai_chat.ai-chat.ai-chat-message.l1978.t0'),
- '🎉': $lang('ai_chat.ai-chat.ai-chat-message.l1979.t0'),
- '🤔': $lang('ai_chat.ai-chat.ai-chat-message.l1980.t0'),
- '😅': $lang('ai_chat.ai-chat.ai-chat-message.l1981.t0'),
- '😁': $lang('ai_chat.ai-chat.ai-chat-message.l1971.t0'),
- '🥰': $lang('ai_chat.ai-chat.ai-chat-message.l1983.t0'),
- '😘': $lang('ai_chat.ai-chat.ai-chat-message.l1984.t0'),
- '😏': $lang('ai_chat.ai-chat.ai-chat-message.l1985.t0'),
- '🥳': $lang('ai_chat.ai-chat.ai-chat-message.l1979.t0'),
- '😔': $lang('ai_chat.ai-chat.ai-chat-message.l1987.t0'),
- '😢': $lang('ai_chat.ai-chat.ai-chat-message.l1976.t0'),
- '😤': $lang('ai_chat.ai-chat.ai-chat-message.l1989.t0'),
- '😴': $lang('ai_chat.ai-chat.ai-chat-message.l1990.t0'),
- '🤗': $lang('ai_chat.ai-chat.ai-chat-message.l1991.t0'),
- '🙂': $lang('ai_chat.ai-chat.ai-chat-message.l1973.t0'),
- '😃': $lang('ai_chat.ai-chat.ai-chat-message.l1971.t0'),
- '😄': $lang('ai_chat.ai-chat.ai-chat-message.l1972.t0'),
- '😆': $lang('ai_chat.ai-chat.ai-chat-message.l1971.t0'),
- '😇': $lang('ai_chat.ai-chat.ai-chat-message.l1996.t0'),
- '🤩': $lang('ai_chat.ai-chat.ai-chat-message.l1997.t0'),
- '😋': $lang('ai_chat.ai-chat.ai-chat-message.l1998.t0'),
- '😛': $lang('ai_chat.ai-chat.ai-chat-message.l1999.t0'),
- '😜': $lang('ai_chat.ai-chat.ai-chat-message.l1999.t0'),
- '🤪': $lang('ai_chat.ai-chat.ai-chat-message.l2001.t0'),
- '😝': $lang('ai_chat.ai-chat.ai-chat-message.l1971.t0'),
- '🤑': $lang('ai_chat.ai-chat.ai-chat-message.l2003.t0'),
- '🤭': $lang('ai_chat.ai-chat.ai-chat-message.l2004.t0'),
- '🤫': $lang('ai_chat.ai-chat.ai-chat-message.l2005.t0'),
- '🤐': $lang('ai_chat.ai-chat.ai-chat-message.l2006.t0'),
- '🤨': $lang('ai_chat.ai-chat.ai-chat-message.l2007.t0'),
- '😐': $lang('ai_chat.ai-chat.ai-chat-message.l2008.t0'),
- '😑': $lang('ai_chat.ai-chat.ai-chat-message.l2008.t0'),
- '😶': $lang('ai_chat.ai-chat.ai-chat-message.l2010.t0'),
- '😒': $lang('ai_chat.ai-chat.ai-chat-message.l2011.t0'),
- '🙄': $lang('ai_chat.ai-chat.ai-chat-message.l2012.t0'),
- '😬': $lang('ai_chat.ai-chat.ai-chat-message.l1981.t0'),
- '🤥': $lang('ai_chat.ai-chat.ai-chat-message.l2014.t0'),
- '😌': $lang('ai_chat.ai-chat.ai-chat-message.l2015.t0'),
- '😪': $lang('ai_chat.ai-chat.ai-chat-message.l1990.t0'),
- '🤤': $lang('ai_chat.ai-chat.ai-chat-message.l2017.t0'),
- '😷': $lang('ai_chat.ai-chat.ai-chat-message.l2018.t0'),
- '🤒': $lang('ai_chat.ai-chat.ai-chat-message.l2019.t0'),
- '🤕': $lang('ai_chat.ai-chat.ai-chat-message.l2020.t0'),
- '🤢': $lang('ai_chat.ai-chat.ai-chat-message.l2021.t0'),
- '🤮': $lang('ai_chat.ai-chat.ai-chat-message.l2022.t0'),
- '🤧': $lang('ai_chat.ai-chat.ai-chat-message.l2023.t0'),
- '🥵': $lang('ai_chat.ai-chat.ai-chat-message.l2024.t0'),
- '🥶': $lang('ai_chat.ai-chat.ai-chat-message.l2025.t0'),
- '🥴': $lang('ai_chat.ai-chat.ai-chat-message.l2026.t0'),
- '😵': $lang('ai_chat.ai-chat.ai-chat-message.l2027.t0'),
- '🤯': $lang('ai_chat.ai-chat.ai-chat-message.l2028.t0'),
- '🤠': $lang('ai_chat.ai-chat.ai-chat-message.l2029.t0'),
- '😎': $lang('ai_chat.ai-chat.ai-chat-message.l2029.t0'),
- '🤓': $lang('ai_chat.ai-chat.ai-chat-message.l2031.t0'),
- '🧐': $lang('ai_chat.ai-chat.ai-chat-message.l2007.t0'),
- '😕': $lang('ai_chat.ai-chat.ai-chat-message.l2033.t0'),
- '😟': $lang('ai_chat.ai-chat.ai-chat-message.l2034.t0'),
- '🙁': $lang('ai_chat.ai-chat.ai-chat-message.l1987.t0'),
- '😮': $lang('ai_chat.ai-chat.ai-chat-message.l2036.t0'),
- '😯': $lang('ai_chat.ai-chat.ai-chat-message.l2036.t0'),
- '😲': $lang('ai_chat.ai-chat.ai-chat-message.l2038.t0'),
- '😳': $lang('ai_chat.ai-chat.ai-chat-message.l2039.t0'),
- '🥺': $lang('ai_chat.ai-chat.ai-chat-message.l2040.t0'),
- '😦': $lang('ai_chat.ai-chat.ai-chat-message.l2036.t0'),
- '😧': $lang('ai_chat.ai-chat.ai-chat-message.l2036.t0'),
- '😨': $lang('ai_chat.ai-chat.ai-chat-message.l2043.t0'),
- '😰': $lang('ai_chat.ai-chat.ai-chat-message.l2044.t0'),
- '😥': $lang('ai_chat.ai-chat.ai-chat-message.l2045.t0'),
- '😱': $lang('ai_chat.ai-chat.ai-chat-message.l2046.t0'),
- '😖': $lang('ai_chat.ai-chat.ai-chat-message.l2047.t0'),
- '😣': $lang('ai_chat.ai-chat.ai-chat-message.l2048.t0'),
- '😞': $lang('ai_chat.ai-chat.ai-chat-message.l1987.t0'),
- '😓': $lang('ai_chat.ai-chat.ai-chat-message.l2050.t0'),
- '😩': $lang('ai_chat.ai-chat.ai-chat-message.l2051.t0'),
- '😫': $lang('ai_chat.ai-chat.ai-chat-message.l2051.t0'),
- '🥱': $lang('ai_chat.ai-chat.ai-chat-message.l1990.t0'),
- '😡': $lang('ai_chat.ai-chat.ai-chat-message.l2054.t0'),
- '😠': $lang('ai_chat.ai-chat.ai-chat-message.l1989.t0'),
- '🤬': $lang('ai_chat.ai-chat.ai-chat-message.l2056.t0'),
- '😈': $lang('ai_chat.ai-chat.ai-chat-message.l2057.t0'),
- '👿': $lang('ai_chat.ai-chat.ai-chat-message.l1989.t0'),
- '💀': $lang('ai_chat.ai-chat.ai-chat-message.l2059.t0'),
- '💩': $lang('ai_chat.ai-chat.ai-chat-message.l2060.t0'),
- '👻': $lang('ai_chat.ai-chat.ai-chat-message.l2061.t0'),
- '👽': $lang('ai_chat.ai-chat.ai-chat-message.l2062.t0'),
- '🤖': $lang('ai_chat.ai-chat.ai-chat-message.l2063.t0'),
- '🎃': $lang('ai_chat.ai-chat.ai-chat-message.l2064.t0'),
- '😺': $lang('ai_chat.ai-chat.ai-chat-message.l2065.t0'),
- '😸': $lang('ai_chat.ai-chat.ai-chat-message.l2066.t0'),
- '😹': $lang('ai_chat.ai-chat.ai-chat-message.l2067.t0'),
- '😻': $lang('ai_chat.ai-chat.ai-chat-message.l2068.t0'),
- '😼': $lang('ai_chat.ai-chat.ai-chat-message.l2069.t0'),
- '😽': $lang('ai_chat.ai-chat.ai-chat-message.l2070.t0'),
- '🙀': $lang('ai_chat.ai-chat.ai-chat-message.l2071.t0'),
- '😿': $lang('ai_chat.ai-chat.ai-chat-message.l2072.t0'),
- '😾': $lang('ai_chat.ai-chat.ai-chat-message.l2073.t0'),
- '👋': $lang('ai_chat.ai-chat.ai-chat-message.l2074.t0'),
- '🤚': $lang('ai_chat.ai-chat.ai-chat-message.l2075.t0'),
- '🖐': $lang('ai_chat.ai-chat.ai-chat-message.l2076.t0'),
- '✋': $lang('ai_chat.ai-chat.ai-chat-message.l2076.t0'),
+ '😀': '[开心]',
+ '😂': '[大笑]',
+ '😊': '[微笑]',
+ '❤️': '[爱心]',
+ '👍': '[点赞]',
+ '😭': '[哭泣]',
+ '🙏': '[感谢/拜托]',
+ '😍': '[喜欢]',
+ '🎉': '[庆祝]',
+ '🤔': '[思考]',
+ '😅': '[尴尬]',
+ '😁': '[开心]',
+ '🥰': '[喜爱]',
+ '😘': '[飞吻]',
+ '😏': '[坏笑]',
+ '🥳': '[庆祝]',
+ '😔': '[难过]',
+ '😢': '[哭泣]',
+ '😤': '[生气]',
+ '😴': '[困]',
+ '🤗': '[拥抱]',
+ '🙂': '[微笑]',
+ '😃': '[开心]',
+ '😄': '[大笑]',
+ '😆': '[开心]',
+ '😇': '[天使]',
+ '🤩': '[惊喜]',
+ '😋': '[好吃]',
+ '😛': '[调皮]',
+ '😜': '[调皮]',
+ '🤪': '[搞怪]',
+ '😝': '[开心]',
+ '🤑': '[发财]',
+ '🤭': '[害羞]',
+ '🤫': '[嘘]',
+ '🤐': '[闭嘴]',
+ '🤨': '[疑惑]',
+ '😐': '[无语]',
+ '😑': '[无语]',
+ '😶': '[沉默]',
+ '😒': '[不屑]',
+ '🙄': '[白眼]',
+ '😬': '[尴尬]',
+ '🤥': '[说谎]',
+ '😌': '[安心]',
+ '😪': '[困]',
+ '🤤': '[流口水]',
+ '😷': '[生病]',
+ '🤒': '[发烧]',
+ '🤕': '[受伤]',
+ '🤢': '[恶心]',
+ '🤮': '[呕吐]',
+ '🤧': '[感冒]',
+ '🥵': '[热]',
+ '🥶': '[冷]',
+ '🥴': '[头晕]',
+ '😵': '[晕]',
+ '🤯': '[爆炸]',
+ '🤠': '[酷]',
+ '😎': '[酷]',
+ '🤓': '[书呆子]',
+ '🧐': '[疑惑]',
+ '😕': '[困惑]',
+ '😟': '[担心]',
+ '🙁': '[难过]',
+ '😮': '[惊讶]',
+ '😯': '[惊讶]',
+ '😲': '[震惊]',
+ '😳': '[脸红]',
+ '🥺': '[恳求]',
+ '😦': '[惊讶]',
+ '😧': '[惊讶]',
+ '😨': '[害怕]',
+ '😰': '[紧张]',
+ '😥': '[失望]',
+ '😱': '[恐惧]',
+ '😖': '[困扰]',
+ '😣': '[痛苦]',
+ '😞': '[难过]',
+ '😓': '[汗]',
+ '😩': '[累]',
+ '😫': '[累]',
+ '🥱': '[困]',
+ '😡': '[愤怒]',
+ '😠': '[生气]',
+ '🤬': '[咒骂]',
+ '😈': '[恶魔]',
+ '👿': '[生气]',
+ '💀': '[骷髅]',
+ '💩': '[便便]',
+ '👻': '[鬼]',
+ '👽': '[外星人]',
+ '🤖': '[机器人]',
+ '🎃': '[万圣节]',
+ '😺': '[开心猫]',
+ '😸': '[微笑猫]',
+ '😹': '[大笑猫]',
+ '😻': '[花痴猫]',
+ '😼': '[得意猫]',
+ '😽': '[亲亲猫]',
+ '🙀': '[惊讶猫]',
+ '😿': '[哭泣猫]',
+ '😾': '[生气猫]',
+ '👋': '[挥手]',
+ '🤚': '[举手]',
+ '🖐': '[手掌]',
+ '✋': '[手掌]',
'🖖': '[V]',
'👌': '[OK]',
- '🤏': $lang('ai_chat.ai-chat.ai-chat-message.l2080.t0'),
- '✌️': $lang('ai_chat.ai-chat.ai-chat-message.l2081.t0'),
- '🤞': $lang('ai_chat.ai-chat.ai-chat-message.l2082.t0'),
- '🤟': $lang('ai_chat.ai-chat.ai-chat-message.l2083.t0'),
- '🤘': $lang('ai_chat.ai-chat.ai-chat-message.l2084.t0'),
- '🤙': $lang('ai_chat.ai-chat.ai-chat-message.l2085.t0'),
- '👈': $lang('ai_chat.ai-chat.ai-chat-message.l2086.t0'),
- '👉': $lang('ai_chat.ai-chat.ai-chat-message.l2087.t0'),
- '👆': $lang('ai_chat.ai-chat.ai-chat-message.l2088.t0'),
- '🖕': $lang('ai_chat.ai-chat.ai-chat-message.l2089.t0'),
- '👇': $lang('ai_chat.ai-chat.ai-chat-message.l2090.t0'),
- '☝': $lang('ai_chat.ai-chat.ai-chat-message.l2091.t0'),
- '👎': $lang('ai_chat.ai-chat.ai-chat-message.l2092.t0'),
- '✊': $lang('ai_chat.ai-chat.ai-chat-message.l2093.t0'),
- '👊': $lang('ai_chat.ai-chat.ai-chat-message.l2093.t0'),
- '🤛': $lang('ai_chat.ai-chat.ai-chat-message.l2095.t0'),
- '🤜': $lang('ai_chat.ai-chat.ai-chat-message.l2096.t0'),
- '👏': $lang('ai_chat.ai-chat.ai-chat-message.l2097.t0'),
- '🙌': $lang('ai_chat.ai-chat.ai-chat-message.l2098.t0'),
- '👐': $lang('ai_chat.ai-chat.ai-chat-message.l2099.t0'),
- '🤲': $lang('ai_chat.ai-chat.ai-chat-message.l2100.t0'),
- '🤝': $lang('ai_chat.ai-chat.ai-chat-message.l2101.t0'),
- '✍️': $lang('ai_chat.ai-chat.ai-chat-message.l2102.t0'),
- '💅': $lang('ai_chat.ai-chat.ai-chat-message.l2103.t0'),
- '🤳': $lang('ai_chat.ai-chat.ai-chat-message.l2104.t0'),
- '💪': $lang('ai_chat.ai-chat.ai-chat-message.l2105.t0'),
- '💗': $lang('ai_chat.ai-chat.ai-chat-message.l1974.t0'),
- '💓': $lang('ai_chat.ai-chat.ai-chat-message.l2107.t0'),
- '💕': $lang('ai_chat.ai-chat.ai-chat-message.l2108.t0'),
- '💖': $lang('ai_chat.ai-chat.ai-chat-message.l2109.t0'),
- '💝': $lang('ai_chat.ai-chat.ai-chat-message.l2110.t0'),
- '💞': $lang('ai_chat.ai-chat.ai-chat-message.l2111.t0'),
- '💘': $lang('ai_chat.ai-chat.ai-chat-message.l2112.t0'),
- '💌': $lang('ai_chat.ai-chat.ai-chat-message.l2113.t0'),
- '💟': $lang('ai_chat.ai-chat.ai-chat-message.l2114.t0'),
- '💛': $lang('ai_chat.ai-chat.ai-chat-message.l2115.t0'),
- '💙': $lang('ai_chat.ai-chat.ai-chat-message.l2116.t0'),
- '💜': $lang('ai_chat.ai-chat.ai-chat-message.l2117.t0'),
- '🖤': $lang('ai_chat.ai-chat.ai-chat-message.l2118.t0'),
- '💔': $lang('ai_chat.ai-chat.ai-chat-message.l2119.t0'),
- '💢': $lang('ai_chat.ai-chat.ai-chat-message.l2054.t0'),
- '💣': $lang('ai_chat.ai-chat.ai-chat-message.l2121.t0'),
- '💥': $lang('ai_chat.ai-chat.ai-chat-message.l2028.t0'),
- '💫': $lang('ai_chat.ai-chat.ai-chat-message.l2026.t0'),
- '💦': $lang('ai_chat.ai-chat.ai-chat-message.l2050.t0'),
- '💨': $lang('ai_chat.ai-chat.ai-chat-message.l2125.t0'),
- '👁️': $lang('ai_chat.ai-chat.ai-chat-message.l2126.t0'),
- '👀': $lang('ai_chat.ai-chat.ai-chat-message.l2127.t0'),
- '👅': $lang('ai_chat.ai-chat.ai-chat-message.l2128.t0'),
- '👄': $lang('ai_chat.ai-chat.ai-chat-message.l2129.t0'),
- '👂': $lang('ai_chat.ai-chat.ai-chat-message.l2130.t0'),
- '👃': $lang('ai_chat.ai-chat.ai-chat-message.l2131.t0')
+ '🤏': '[捏]',
+ '✌️': '[耶]',
+ '🤞': '[好运]',
+ '🤟': '[爱你]',
+ '🤘': '[摇滚]',
+ '🤙': '[打电话]',
+ '👈': '[左边]',
+ '👉': '[右边]',
+ '👆': '[上边]',
+ '🖕': '[竖中指]',
+ '👇': '[下边]',
+ '☝': '[向上]',
+ '👎': '[鄙视]',
+ '✊': '[拳头]',
+ '👊': '[拳头]',
+ '🤛': '[左拳]',
+ '🤜': '[右拳]',
+ '👏': '[鼓掌]',
+ '🙌': '[举手庆祝]',
+ '👐': '[张开手]',
+ '🤲': '[摊手]',
+ '🤝': '[握手]',
+ '✍️': '[写字]',
+ '💅': '[美甲]',
+ '🤳': '[自拍]',
+ '💪': '[肌肉]',
+ '💗': '[爱心]',
+ '💓': '[心跳]',
+ '💕': '[两颗心]',
+ '💖': '[闪亮心]',
+ '💝': '[礼物心]',
+ '💞': '[旋转心]',
+ '💘': '[丘比特]',
+ '💌': '[情书]',
+ '💟': '[心形]',
+ '💛': '[黄心]',
+ '💙': '[蓝心]',
+ '💜': '[紫心]',
+ '🖤': '[黑心]',
+ '💔': '[心碎]',
+ '💢': '[愤怒]',
+ '💣': '[炸弹]',
+ '💥': '[爆炸]',
+ '💫': '[头晕]',
+ '💦': '[汗]',
+ '💨': '[风]',
+ '👁️': '[眼睛]',
+ '👀': '[看]',
+ '👅': '[舌头]',
+ '👄': '[嘴巴]',
+ '👂': '[耳朵]',
+ '👃': '[鼻子]'
}
// 如果是纯表情消息,添加一些提示
diff --git a/pages_tool/ai-chat/components/ai-chat-avatar-selector.vue b/pages_tool/ai-chat/components/ai-chat-avatar-selector.vue
index 03d9c36..dd2adef 100644
--- a/pages_tool/ai-chat/components/ai-chat-avatar-selector.vue
+++ b/pages_tool/ai-chat/components/ai-chat-avatar-selector.vue
@@ -3,7 +3,7 @@
diff --git a/pages_tool/ai-chat/components/ai-chat-emoji-panel.vue b/pages_tool/ai-chat/components/ai-chat-emoji-panel.vue
index 946bcb7..9bba1a8 100644
--- a/pages_tool/ai-chat/components/ai-chat-emoji-panel.vue
+++ b/pages_tool/ai-chat/components/ai-chat-emoji-panel.vue
@@ -3,7 +3,7 @@
- {{ $lang('goods.list.search_close') }}
+ {{ $lang('searchClose') }}
!
- {{ $lang('common.list.no_match_result') }}
+ {{ $lang('noMatchResult') }}
@@ -43,7 +43,7 @@
*
* Props:
* messages: Array - 原始消息列表
- * showLabel: Boolean - (默认 true) 是否显示$lang("diy.diy-search.l31.t0")文字;设为 false 则只显示搜索图标
+ * showLabel: Boolean - (默认 true) 是否显示"搜索"文字;设为 false 则只显示搜索图标
*
* Events:
* scroll-to: (messageKey: string) => void - 请求父组件滚动到指定消息
@@ -187,7 +187,7 @@ export default {
if (idx >= 0) {
this.scrollToSearchResult(idx)
} else {
- uni.showToast({ title: this.$lang('goods.list.search_at_top'), icon: 'none' })
+ uni.showToast({ title: this.$lang('searchAtTop'), icon: 'none' })
}
},
@@ -196,7 +196,7 @@ export default {
if (idx < this.searchResults.length) {
this.scrollToSearchResult(idx)
} else {
- uni.showToast({ title: this.$lang('goods.list.search_at_bottom'), icon: 'none' })
+ uni.showToast({ title: this.$lang('searchAtBottom'), icon: 'none' })
}
},
diff --git a/pages_tool/ai-chat/components/ai-chat-tools-panel.vue b/pages_tool/ai-chat/components/ai-chat-tools-panel.vue
index 9eac948..e37536f 100644
--- a/pages_tool/ai-chat/components/ai-chat-tools-panel.vue
+++ b/pages_tool/ai-chat/components/ai-chat-tools-panel.vue
@@ -3,7 +3,7 @@
- {{ $lang('common.list.file') }}
+ {{ $lang('file') }}
- {{ $lang('common.list.voice') }}
+ {{ $lang('voice') }}
- {{ $lang('common.list.location') }}
+ {{ $lang('location') }}
diff --git a/pages_tool/ai-chat/components/ai-chat-voice-panel.vue b/pages_tool/ai-chat/components/ai-chat-voice-panel.vue
index 52c7033..7b0587f 100644
--- a/pages_tool/ai-chat/components/ai-chat-voice-panel.vue
+++ b/pages_tool/ai-chat/components/ai-chat-voice-panel.vue
@@ -3,7 +3,7 @@
- {{ voiceInputing ? $lang('common.list.recording_tip') : $lang('common.list.start_record_tip') }}
+ {{ voiceInputing ? $lang('recordingTip') : $lang('startRecordTip') }}
-
+
@@ -79,7 +79,7 @@ export default {
return {
goodsId: 0,
list: [],
- evaluateList: [{ name: $lang('diy.diy-category-item.l47.t0'), value: 0, count: 0 }, { name: $lang('tool.goods.evaluate.l82.t0'), value: 1, count: 0 }, { name: $lang('tool.goods.evaluate.l82.t1'), value: 2, count: 0 }, { name: $lang('tool.goods.evaluate.l82.t2'), value: 3, count: 0 }],
+ evaluateList: [{ name: '全部', value: 0, count: 0 }, { name: '好评', value: 1, count: 0 }, { name: '中评', value: 2, count: 0 }, { name: '差评', value: 3, count: 0 }],
evaluateTab: 0,
mescroll_type: {}
};
diff --git a/pages_tool/goods/not_exist.vue b/pages_tool/goods/not_exist.vue
index 257b271..a13d322 100644
--- a/pages_tool/goods/not_exist.vue
+++ b/pages_tool/goods/not_exist.vue
@@ -2,7 +2,7 @@
- {{ $lang("tool.goods.not_exist.l5.t0") }}
+ 您查看的商品不存在,可能已下架或被删除
diff --git a/pages_tool/goods/search.vue b/pages_tool/goods/search.vue
index c3161ed..1870587 100644
--- a/pages_tool/goods/search.vue
+++ b/pages_tool/goods/search.vue
@@ -1,345 +1,345 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("tool.goods.search.l15.t0") }}
-
-
-
-
- {{ item }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("tool.goods.search.l33.t0") }}
-
-
-
- {{ item }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/help/list.vue b/pages_tool/help/list.vue
index b45fd8c..479227c 100644
--- a/pages_tool/help/list.vue
+++ b/pages_tool/help/list.vue
@@ -1,132 +1,132 @@
-
-
-
-
- {{ item.class_name }}
- {{ s_item.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ {{ item.class_name }}
+ {{ s_item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/index/diy.vue b/pages_tool/index/diy.vue
index a1ad661..2bf6c87 100644
--- a/pages_tool/index/diy.vue
+++ b/pages_tool/index/diy.vue
@@ -43,7 +43,7 @@
diff --git a/pages_tool/login/find.vue b/pages_tool/login/find.vue
index 488c270..dd8d3b2 100644
--- a/pages_tool/login/find.vue
+++ b/pages_tool/login/find.vue
@@ -1,440 +1,440 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.button.next') }}
-
-
-
-
-
- {{ codeText }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.button.save') }}
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $lang('next') }}
+
+
+
+
+
+ {{ codeText }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $lang('save') }}
+
+
+
+
+
+
+
+
diff --git a/pages_tool/login/login.vue b/pages_tool/login/login.vue
index aa34ca1..0ec95de 100644
--- a/pages_tool/login/login.vue
+++ b/pages_tool/login/login.vue
@@ -1,500 +1,500 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('login.list.forget_password_text') }}
-
-
-
-
-
-
- {{ dynacodeData.codeText }}
-
-
-
-
-
- {{ $lang('login.list.login_button_text') }}
-
-
-
-
-
- {{
- $lang('login.list.register_agreement_text') }} {{ $lang('login.list.privacy_policy_text') }} {{ $lang('login.list.user_service_agreement_text') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_tool/member/account.vue b/pages_tool/member/account.vue
index 5efd028..2921673 100644
--- a/pages_tool/member/account.vue
+++ b/pages_tool/member/account.vue
@@ -1,453 +1,453 @@
-
-
-
-
-
-
-
-
- {{ $lang("member.account.l10") }}
-
-
-
-
-
-
-
- {{ item.withdraw_type_name }}
-
- {{ item.realname }}
- {{ item.mobile }}
-
-
-
- 提现账号:{{ item.bank_account }}
-
-
- 银行名称 :{{ item.branch_bank_name }}
-
-
-
- {{ $lang("member.account.l32") }}
-
-
-
-
- {{ $lang("member.account.l37") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.account.l55") }}
- {{ $lang('member.list.new_add_account')
- }}
-
-
-
-
- {{ $lang('member.list.new_add_account') }}
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_tool/member/account_edit.vue b/pages_tool/member/account_edit.vue
index acfc6a7..0225527 100644
--- a/pages_tool/member/account_edit.vue
+++ b/pages_tool/member/account_edit.vue
@@ -1,323 +1,323 @@
-
-
-
- {{ $lang('common.list.name') }}
-
-
-
- {{ $lang('login.list.mobile_phone') }}
-
-
-
- {{ $lang('member.list.account_type') }}
-
- {{ payList[index] }}
-
-
-
-
- {{ $lang("fenxiao.withdrawal_detail.l30") }}
-
-
-
- {{ $lang("member.account_edit.l23") }}
-
-
-
- {{ $lang('common.button.save') }}
-
-
-
-
-
-
-
-
+
+
+
+ {{ $lang('name') }}
+
+
+
+ {{ $lang('mobilePhone') }}
+
+
+
+ {{ $lang('accountType') }}
+
+ {{ payList[index] }}
+
+
+
+
+ 银行名称
+
+
+
+ 提现账号
+
+
+
+ {{ $lang('save') }}
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/address.vue b/pages_tool/member/address.vue
index f4503c0..b0a4f9f 100644
--- a/pages_tool/member/address.vue
+++ b/pages_tool/member/address.vue
@@ -1,607 +1,607 @@
-
-
-
-
-
-
-
-
-
-
- {{ item.name }}
- {{ item.mobile }}
- {{
- item.local_data }}
-
- {{ item.full_address }}{{ item.address }}
-
-
- {{ $lang('common.list.modify') }}
-
-
-
-
-
-
- {{ item.name }}
- {{ item.mobile }}
-
- {{ item.full_address }}{{ item.address }}
-
-
- {{ $lang('common.list.modify') }}
-
-
-
-
-
- {{ $lang("member.address.l38") }}
- {{ $lang("member.address.l38") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.address.l57") }}
-
- {{ $lang('member.list.new_add_address')
- }}
-
-
- {{
- $lang('member.list.get_address') }}
-
-
- {{
- $lang('member.list.get_address')
- }}
-
-
-
-
-
-
-
-
-
- {{ $lang('member.list.get_address') }}
-
-
-
- {{
- $lang('member.list.get_address') }}
-
-
-
- {{ $lang('member.list.new_add_address') }}
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages_tool/member/address_edit.vue b/pages_tool/member/address_edit.vue
index b17af22..7451fea 100644
--- a/pages_tool/member/address_edit.vue
+++ b/pages_tool/member/address_edit.vue
@@ -1,497 +1,497 @@
-
-
-
- {{ $lang("member.address_edit.l4") }}
-
-
- {{ $lang('member.list.consignee') }}
- *
-
-
-
-
-
- {{ $lang('login.list.mobile') }}
- *
-
-
-
-
- {{ $lang('login.list.telephone') }}
-
-
-
-
-
-
- {{ $lang('common.list.receiving_city') }}
- *
-
-
- {{ formData.full_address ? formData.full_address : $lang('member.address_edit.l44') }}
-
-
-
-
-
-
-
-
- {{ $lang('common.list.receiving_city') }}
- *
-
-
-
- {{ formData.full_address ? formData.full_address : $lang('member.address_edit.l44') }}
-
-
-
-
-
-
-
- {{ $lang('address') }}
- *
-
-
-
-
-
-
- {{ $lang('common.button.save') }}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/apply_withdrawal.vue b/pages_tool/member/apply_withdrawal.vue
index 609760a..6317eb6 100644
--- a/pages_tool/member/apply_withdrawal.vue
+++ b/pages_tool/member/apply_withdrawal.vue
@@ -1,424 +1,424 @@
-
-
-
-
- {{ $lang("fenxiao.withdraw_apply.l5") }}
- {{ $lang("fenxiao.withdraw_apply.l6") }}
- {{ bankAccountInfo.bank_account }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.apply_withdrawal.l19") }}
-
-
-
-
- {{ $lang("member.apply_withdrawal.l24") }}
-
- {{ $lang('common.currency_symbol') }}
-
-
-
-
-
-
-
- { $lang("member.apply_withdrawal.l34") } $lang('common.currency_symbol') }}{{ withdrawInfo.member_info.balance_money | moneyFormat }}
- {{ $lang("fenxiao.withdraw_apply.l42") }}
-
-
-
- { $lang("fenxiao.withdraw_apply.l46") } $lang('common.currency_symbol') }}{{ withdrawInfo.config.min | moneyFormat }}
- { $lang("member.apply_withdrawal.l40") } withdrawInfo.config.rate + '%' }}
-
-
-
-
- 提现
-
-
-
- {{ $lang("fenxiao.withdraw_apply.l64") }}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/assets.vue b/pages_tool/member/assets.vue
index b60fbd6..f5a7a8b 100644
--- a/pages_tool/member/assets.vue
+++ b/pages_tool/member/assets.vue
@@ -1,234 +1,234 @@
-
-
-
-
- {{ $lang("member.assets.l5") }}
-
-
-
- {{ $lang("member.assets.l9") }}
-
-
-
- {{ member_info.point }}
- {{ $lang("common.register-reward.l19.t0") }}
-
-
- ¥{{ member_info.balance_money }}
- {{ $lang("member.assets.l18") }}
-
-
- ¥{{ member_info.balance }}
- {{ $lang("member.assets.l22") }}
-
-
- {{ accountInfo.member_coupon_count }}
- {{ $lang("diy.diy-coupon.l209.t0") }}
-
-
-
-
-
-
- {{ $lang("member.assets.l33") }}
-
-
-
- {{ accountInfo.order_pay_count }}
- {{ $lang("order.list.l302") }}
-
-
- {{ accountInfo.order_delivery_count }}
- {{ $lang("order.list.l307") }}
-
-
- {{ accountInfo.order_refund_count }}
- {{ $lang("member.assets.l46") }}
-
-
-
-
-
-
-
- {{ $lang("member.assets.l54") }}
-
-
-
- ¥{{ fenxiao_info.account }}
- {{ $lang("member.assets.l59") }}
-
-
- ¥{{ fenxiao_info.account_withdraw_apply }}
- {{ $lang("member.assets.l63") }}
-
-
- {{ accountInfo.fenxiao_order_count }}
- {{ $lang("member.assets.l67") }}
-
-
-
-
-
- {{ $lang("member.assets.l73") }}
- {{ $lang("member.assets.l74") }}
-
-
-
-
-
-
-
-
+
+
+
+
+ 风险提示:确认申请后您的资产将被清空且不可找回!
+
+
+
+ 账户资产
+
+
+
+ {{ member_info.point }}
+ 积分
+
+
+ ¥{{ member_info.balance_money }}
+ 现金余额
+
+
+ ¥{{ member_info.balance }}
+ 储值余额
+
+
+ {{ accountInfo.member_coupon_count }}
+ 优惠券
+
+
+
+
+
+
+ 订单资产
+
+
+
+ {{ accountInfo.order_pay_count }}
+ 待发货
+
+
+ {{ accountInfo.order_delivery_count }}
+ 待收货
+
+
+ {{ accountInfo.order_refund_count }}
+ 退款中
+
+
+
+
+
+
+
+ 分销资产
+
+
+
+ ¥{{ fenxiao_info.account }}
+ 可提现佣金
+
+
+ ¥{{ fenxiao_info.account_withdraw_apply }}
+ 提现中佣金
+
+
+ {{ accountInfo.fenxiao_order_count }}
+ 待结算订单
+
+
+
+
+
+ 上一步
+ 确认申请
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/balance.vue b/pages_tool/member/balance.vue
index 997b62e..fa528b7 100644
--- a/pages_tool/member/balance.vue
+++ b/pages_tool/member/balance.vue
@@ -1,189 +1,189 @@
-
-
-
-
-
-
-
- 账户余额
-
-
-
-
-
-
-
- {{ $lang("member.balance.l19") }}
- {{ (parseFloat(balanceInfo.balance) + parseFloat(balanceInfo.balance_money)).toFixed(2) }}
-
-
- {{ $lang("fenxiao.withdraw_apply.l59") }}
- {{ $lang("member.balance.l33") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ 账户余额
+
+
+
+
+
+
+
+ 账户余额(元)
+ {{ (parseFloat(balanceInfo.balance) + parseFloat(balanceInfo.balance_money)).toFixed(2) }}
+
+
+ 提现
+ 充值
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/balance_detail.vue b/pages_tool/member/balance_detail.vue
index 5f0f2eb..ff5586c 100644
--- a/pages_tool/member/balance_detail.vue
+++ b/pages_tool/member/balance_detail.vue
@@ -1,362 +1,362 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.remark }}
-
- {{ $util.timeStampTurnTime(item.create_time) }}
-
-
- {{ item.account_data > 0 ?
- '+' + item.account_data : item.account_data }}元
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/cancellation.vue b/pages_tool/member/cancellation.vue
index 492ffbc..15d1e79 100644
--- a/pages_tool/member/cancellation.vue
+++ b/pages_tool/member/cancellation.vue
@@ -1,133 +1,133 @@
-
-
-
-
- {{ agreement.title }}
-
-
-
-
-
-
-
- {{ $lang("member.cancellation.l13") }}
-
- {{ $lang("member.cancellation.l15") }}
-
-
-
-
-
-
-
-
+
+
+
+
+ {{ agreement.title }}
+
+
+
+
+
+
+
+ 勾选即表示您已阅读并同意本协议
+
+ 下一步
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/cancelrefuse.vue b/pages_tool/member/cancelrefuse.vue
index 57df6ed..7ca4d77 100644
--- a/pages_tool/member/cancelrefuse.vue
+++ b/pages_tool/member/cancelrefuse.vue
@@ -1,117 +1,117 @@
-
-
-
-
- {{ $lang("member.cancelrefuse.l5") }}
- { $lang("member.cancelrefuse.l6") } reason }}
-
- {{ $lang("member.cancelrefuse.l8") }}
- {{ $lang("fenxiao.apply.l134") }}
-
-
-
-
-
-
-
-
+
+
+
+
+ 您的申请已拒绝
+ 拒绝理由:{{ reason }}
+
+ 返回
+ 重新申请
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/cancelstatus.vue b/pages_tool/member/cancelstatus.vue
index 31a148e..fc0e914 100644
--- a/pages_tool/member/cancelstatus.vue
+++ b/pages_tool/member/cancelstatus.vue
@@ -1,189 +1,189 @@
-
-
-
-
-
- 1
-
- {{ $lang("member.cancelstatus.l8") }}
- {{ $lang("member.cancelstatus.l9") }}
-
-
-
-
- 2
-
- {{ $lang("member.cancelstatus.l16") }}
- {{ $lang("member.cancelstatus.l17") }}
-
-
-
-
-
- 3
-
-
- {{ $lang("member.cancelstatus.l26") }}
- {{ $lang("member.cancelstatus.l27") }}
-
-
-
-
- {{ $lang("member.cancelrefuse.l8") }}
- {{ $lang("member.cancelstatus.l33") }}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/cancelsuccess.vue b/pages_tool/member/cancelsuccess.vue
index b1692c8..dca4284 100644
--- a/pages_tool/member/cancelsuccess.vue
+++ b/pages_tool/member/cancelsuccess.vue
@@ -1,104 +1,104 @@
-
-
-
-
-
-
- {{ $lang("member.cancelsuccess.l7") }}
- {{ $lang("member.cancelsuccess.l8") }}
- {{ $lang("common.pick-regions.l18.t0") }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/card.vue b/pages_tool/member/card.vue
index acdd3d6..f98f099 100644
--- a/pages_tool/member/card.vue
+++ b/pages_tool/member/card.vue
@@ -1,265 +1,265 @@
-
-
-
-
-
-
-
-
-
-
- {{ memberInfo.nickname }}
-
- 有效期至:{{ $util.timeStampTurnTime(memberInfo.level_expire_time, true) }}
-
-
-
-
-
-
-
-
- {{ levelInfo.level_name }}
- {{ levelInfo.level_name }}可享受消费折扣和
- {{ $lang("member.card.l25") }}
-
-
-
- {{ $lang("member.card.l31") }}
-
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l42") }}
-
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l52") }}
- {{ $lang("member.card.l53") }}
-
-
-
- {{ $lang("member.card.l57") }}
- { $lang("member.card.l58") } levelInfo.consume_discount / 10 }}折优惠
-
-
-
- {{ $lang("member.card.l62") }}
- { $lang("member.card.l63") } parseFloat(levelInfo.point_feedback) }}倍积分回馈
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l72") }}
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l81") }}
- { $lang("member.card.l82") } levelInfo.send_point }}积分
-
-
-
- {{ $lang("member.card.l86") }}
- { $lang("member.card.l82") } parseFloat(levelInfo.send_balance) }}元红包
-
-
-
- {{ $lang("member.card.l91") }}
- { $lang("member.card.l82") } levelInfo.send_coupon.split(',').length }}张优惠券
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l104") }}
-
-
-
-
-
- {{ $lang("member.card.l104") }}
- {{ levelInfo.remark }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_tool/member/card_buy.vue b/pages_tool/member/card_buy.vue
index ff677cc..bd4b526 100644
--- a/pages_tool/member/card_buy.vue
+++ b/pages_tool/member/card_buy.vue
@@ -1,429 +1,429 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ memberInfo.nickname }}
-
- 有效期至:{{ $util.timeStampTurnTime(memberInfo.level_expire_time, true) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ levelList[curIndex].level_name }}
- {{
- levelList[curIndex].level_name }}可享受消费折扣和
-
- 会员大礼包等权益
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.card_buy.l81") }}
-
-
-
-
-
-
-
-
-
- {{ cardType[item.key].name }}
-
- {{ $lang('common.currency_symbol') }}
- {{ item.value }}
- /{{ cardType[item.key].unit }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l42") }}
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l52") }}
- {{ $lang("member.card.l53") }}
-
-
-
- {{ $lang("member.card.l57") }}
- { $lang("member.card.l58") } currCard.consume_discount / 10 }}折优惠
-
-
-
- {{ $lang("member.card.l62") }}
- { $lang("member.card.l63") } parseFloat(currCard.point_feedback) }}倍积分回馈
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l72") }}
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l81") }}
- { $lang("member.card.l82") } currCard.send_point }}积分
-
-
-
- {{ $lang("member.card.l86") }}
- { $lang("member.card.l82") } parseFloat(currCard.send_balance) }}元红包
-
-
-
- {{ $lang("member.card.l91") }}
- 赠送{{ currCard.send_coupon.split(',').length }}张优惠券
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l31") }}
-
- {{ $lang("member.card_buy.l175") }}
- {{ $lang("diy.diy-member-info.l125.t0") }}
-
- {{ $lang('common.currency_symbol') }}
- {{ currCard.charge_rule_arr[choiceIndex].value }}
- /{{ cardType[currCard.charge_rule_arr[choiceIndex].key].unit }}
-
-
- 购买既视为同意
- 《{{ agreement.title
- }}》
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l104") }}
-
-
-
-
-
- {{ $lang("member.card.l104") }}
- {{ currCard.remark }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/collection.vue b/pages_tool/member/collection.vue
index 044a263..83e0458 100644
--- a/pages_tool/member/collection.vue
+++ b/pages_tool/member/collection.vue
@@ -1,92 +1,92 @@
-
-
-
-
-
-
-
-
-
-
- {{ item.sku_name }}
-
-
- ¥
- {{
- parseFloat(item.discount_price).toFixed(2).split('.')[0] }}
- .{{
- parseFloat(item.discount_price).toFixed(2).split('.')[1] }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('login.list.to_login') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_tool/member/contact.vue b/pages_tool/member/contact.vue
index 4fb4ff4..d3b7c6a 100644
--- a/pages_tool/member/contact.vue
+++ b/pages_tool/member/contact.vue
@@ -1,28 +1,28 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/coupon.vue b/pages_tool/member/coupon.vue
index 8a52290..08db353 100644
--- a/pages_tool/member/coupon.vue
+++ b/pages_tool/member/coupon.vue
@@ -1,401 +1,401 @@
-
-
-
-
- {{ $lang("member.coupon.l5") }}
- {{ $lang("member.coupon.l6") }}
- {{ $lang("tool.goods.coupon.l65.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
- ¥
- {{ parseFloat(item.money) }}
-
-
- ¥
- {{ parseFloat(item.money) }}
-
-
- {{ parseFloat(item.discount) }}
- {{ $lang("common.register-reward.l60.t1") }}
-
-
- 满{{ item.at_least }}元可用
- {{ $lang("diy.diy-coupon.l32.t2") }}
-
-
-
-
- {{ item.coupon_name }}
- {{ $lang("tool.goods.coupon.l44.t0") }}
- { $lang("member.coupon.l45") } item.discount_limit }}元)
- {{ item.use_channel_name }}
-
-
- 有效期:{{ $util.timeStampTurnTime(item.end_time) }}
-
- {{ $lang("goods.cart.l294") }}
-
-
- {{ $lang("diy.diy-coupon.l38.t0") }}
- {{ $lang("member.coupon.l6") }}
- {{ $lang("tool.goods.coupon.l65.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/footprint.vue b/pages_tool/member/footprint.vue
index 1f7a54c..01a4b54 100644
--- a/pages_tool/member/footprint.vue
+++ b/pages_tool/member/footprint.vue
@@ -1,255 +1,255 @@
-
-
-
- {{ manage ? '完成' : $lang('member.footprint.l4') }}
-
-
-
-
-
- {{ datetime(item) }}
-
-
-
-
-
-
- {{ goodsTag(item) }}
-
-
-
- {{ isEnEnv ? item.en_goods_name : item.goods_name }}
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ parseFloat(showPrice(item)).toFixed(2).split('.')[0] }}
- .{{ parseFloat(showPrice(item)).toFixed(2).split('.')[1] }}
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ showMarketPrice(item) }}
-
- { $lang("goods.detail.l18") } item.sale_num }}{{ item.unit ? item.unit : $lang('common.ns-goods-sku.ns-goods-sku-index.l150.t0') }}
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.footprint.l57") }}
-
- {{ $lang("member.footprint.l59") }}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {{ manage ? '完成' : '管理' }}
+
+
+
+
+
+ {{ datetime(item) }}
+
+
+
+
+
+
+ {{ goodsTag(item) }}
+
+
+
+ {{ isEnEnv ? item.en_goods_name : item.goods_name }}
+
+
+
+
+ {{ $lang('common.currencySymbol') }}
+ {{ parseFloat(showPrice(item)).toFixed(2).split('.')[0] }}
+ .{{ parseFloat(showPrice(item)).toFixed(2).split('.')[1] }}
+
+
+
+
+
+
+
+
+
+
+ {{ $lang('common.currencySymbol') }}
+ {{ showMarketPrice(item) }}
+
+ 已售{{ item.sale_num }}{{ item.unit ? item.unit : '件' }}
+
+
+
+
+
+
+
+
+
+
+ 全选
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/index.vue b/pages_tool/member/index.vue
index 5b48521..0eccc33 100644
--- a/pages_tool/member/index.vue
+++ b/pages_tool/member/index.vue
@@ -1,202 +1,205 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('member.list.cancellation') }}
- {{ $lang('login.button.logout') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_tool/member/info.vue b/pages_tool/member/info.vue
index 0f9596b..c36bd80 100644
--- a/pages_tool/member/info.vue
+++ b/pages_tool/member/info.vue
@@ -1,329 +1,329 @@
-
-
-
-
-
- {{ $lang("common.ns-login.l79.t0") }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("common.ns-login.l87.t0") }}
- {{ memberInfoformData.nickName }}
-
-
-
-
- {{ $lang("order._components.common-payment.l138.t0") }}
- {{ memberInfoformData.realName }}
-
-
-
-
- {{ $lang("member.info.l37") }}
- {{ memberInfoformData.sex }}
-
-
-
-
- {{ $lang("member.info.l43") }}
- {{ memberInfoformData.birthday }}
-
-
-
-
- {{ $lang("common.ns-login.l15.t0") }}
- {{ $lang("member.info.l50") }}
- {{ memberInfoformData.mobile }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.info.l75") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.info.l101") }}
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/info_edit.vue b/pages_tool/member/info_edit.vue
index 953af00..5d9ef29 100644
--- a/pages_tool/member/info_edit.vue
+++ b/pages_tool/member/info_edit.vue
@@ -1,387 +1,387 @@
-
-
-
-
-
-
- {{ $lang("member.info_edit.l7") }}
-
-
- {{ $lang("member.info_edit.l10") }}
-
- {{ $lang("common.ns-login.l30.t0") }}
-
-
-
-
-
- {{ $lang("common.ns-login.l87.t0") }}
-
-
-
- {{ $lang("common.ns-login.l30.t0") }}
-
-
-
-
-
- {{ $lang("order._components.common-payment.l138.t0") }}
-
-
-
- {{ $lang("common.ns-login.l30.t0") }}
-
-
-
-
-
- {{ $lang("member.info.l37") }}
-
-
-
-
-
- {{ $lang("common.ns-login.l30.t0") }}
-
-
-
-
-
- {{ $lang("member.info.l43") }}
-
- {{ formData.birthday ? formData.birthday : $lang('member.info_edit.l57') }}
-
-
-
- {{ $lang("common.ns-login.l30.t0") }}
-
-
-
-
-
-
-
-
-
- {{ $lang("member.info_edit.l71") }}
- {{ $lang("member.info_edit.l72") }}
-
-
-
-
- {{ $lang("member.info_edit.l77") }}
-
-
-
-
- {{ $lang("member.info_edit.l82") }}
-
-
-
-
- {{ $lang("member.info_edit.l87") }}
-
- {{ formData.mobileCodeText }}
-
-
- 点击“获取动态码”,将会向您已绑定的手机号{{ memberInfoformData.mobile | mobile }}发送验证码
-
-
- {{ $lang("member.info_edit.l82") }}
-
-
-
- {{ $lang("member.info_edit.l87") }}
-
-
-
-
- {{ $lang("common.ns-login.l30.t0") }}
-
-
-
-
-
-
- {{ $lang("common.ns-login.l15.t0") }}
-
-
-
- {{ $lang("common.ns-login.l19.t0") }}
-
-
-
-
- {{ $lang("member.info_edit.l120") }}
-
- {{ formData.mobileCodeText }}
-
-
- {{ $lang("common.ns-login.l30.t0") }}
-
-
-
-
-
- {{ $lang("member.info_edit.l131") }}
-
-
- {{ $lang("member.info_edit.l134") }}
-
-
-
-
- {{ $lang("member.info_edit.l139") }}
-
-
- {{ formData.fullAddress ? formData.fullAddress : $lang('member.address_edit.l44') }}
-
-
-
-
- {{ $lang("member.info_edit.l147") }}
-
-
-
- {{ $lang("common.ns-login.l30.t0") }}
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/invite_friends.vue b/pages_tool/member/invite_friends.vue
index 5d5b7b0..34c44bb 100644
--- a/pages_tool/member/invite_friends.vue
+++ b/pages_tool/member/invite_friends.vue
@@ -1,278 +1,278 @@
-
-
-
-
-
-
-
-
-
- 活动说明
-
-
-
- 活动时间:{{ $util.timeStampTurnTime(info.start_time, 1) }}至{{ $util.timeStampTurnTime(info.end_time, 1) }}
-
-
- {{ $lang("member.invite_friends.l17") }}
-
-
- {{ $lang("member.invite_friends.l20") }}
-
-
-
-
-
-
-
-
-
- {{ item.source_member_nickname }}
-
- {{ $util.timeStampTurnTime(item.create_time) }}
-
-
-
- {{ item.balance }}元现金红包
- +
- {{ parseInt(item.point) }}积分
- +
-
- {{ item.coupon_num }}张优惠券
-
-
-
-
-
- 查看更多
-
-
- {{ $lang("member.invite_friends.l50") }}
-
-
-
-
- {{ $lang("member.invite_friends.l55") }}
- {{ $lang("member.invite_friends.l56") }}
-
-
-
-
- {{ $lang("member.invite_friends.l61") }}
-
-
-
-
-
-
- {{ $lang('common.currency_symbol') }}
- {{ info.balance }}
-
- {{ $lang("member.invite_friends.l71") }}
-
-
-
-
-
-
-
- {{ parseInt(info.point) }}
-
- {{ $lang("common.register-reward.l19.t0") }}
-
-
-
-
-
-
-
-
- {{ info.coupon.split(',').length }}
- 张
-
- {{ $lang("diy.diy-coupon.l209.t0") }}
-
-
-
-
- {{ $lang("member.invite_friends.l98") }}
-
-
- ●
- 可得{{ info.balance }}元红包奖励
-
-
- ●
- 可得{{ info.point }}积分
-
-
- ●
- 可得{{ info.coupon.split(',').length }}张优惠券
-
-
-
- ●
- 可得奖励不受限制
-
-
- ●
- 奖励上限为{{ info.max_fetch }}人
-
-
-
-
-
-
- {{ $lang("member.invite_friends.l126") }}
-
-
-
-
-
-
- {{ $lang("member.invite_friends.l133") }}
-
-
-
-
-
-
-
-
- {{ $lang("member.invite_friends.l142") }}
-
-
-
-
-
-
-
-
- {{ $lang("member.invite_friends.l151") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("goods._components.goods-detail-view.l397.t0") }}
-
-
- {{ $lang("fenxiao.goods_list.l118") }}
-
-
-
-
- {{ posterMsg }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.invite_friends.l217") }}
-
-
-
- {{ info.remark }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ 活动说明
+
+
+
+ 活动时间:{{ $util.timeStampTurnTime(info.start_time, 1) }}至{{ $util.timeStampTurnTime(info.end_time, 1) }}
+
+
+ 立即邀请
+
+
+ 我的好友
+
+
+
+
+
+
+
+
+
+ {{ item.source_member_nickname }}
+
+ {{ $util.timeStampTurnTime(item.create_time) }}
+
+
+
+ {{ item.balance }}元现金红包
+ +
+ {{ parseInt(item.point) }}积分
+ +
+
+ {{ item.coupon_num }}张优惠券
+
+
+
+
+
+ 查看更多
+
+
+ 没有更多数据了
+
+
+
+
+ 您还没有邀请到新朋友哦
+ 邀请好友,赚取好礼。赶紧去试试吧~
+
+
+
+
+ 邀请好友奖励
+
+
+
+
+
+
+ {{ $lang('common.currencySymbol') }}
+ {{ info.balance }}
+
+ 现金红包
+
+
+
+
+
+
+
+ {{ parseInt(info.point) }}
+
+ 积分
+
+
+
+
+
+
+
+
+ {{ info.coupon.split(',').length }}
+ 张
+
+ 优惠券
+
+
+
+
+ 分享给好友,让好友通过你的分享链接进入并注册登录,可获得以下奖励:
+
+
+ ●
+ 可得{{ info.balance }}元红包奖励
+
+
+ ●
+ 可得{{ info.point }}积分
+
+
+ ●
+ 可得{{ info.coupon.split(',').length }}张优惠券
+
+
+
+ ●
+ 可得奖励不受限制
+
+
+ ●
+ 奖励上限为{{ info.max_fetch }}人
+
+
+
+
+
+
+ 如何邀请好友
+
+
+
+
+
+
+ 分享链接给好友
+
+
+
+
+
+
+
+
+ 好友进入
+
+
+
+
+
+
+
+
+ 好友注册成功获得奖励
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存图片
+
+
+ 长按保存图片
+
+
+
+
+ {{ posterMsg }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 活动说明
+
+
+
+ {{ info.remark }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/level.vue b/pages_tool/member/level.vue
index b019434..1eb6596 100644
--- a/pages_tool/member/level.vue
+++ b/pages_tool/member/level.vue
@@ -1,372 +1,372 @@
-
-
-
-
-
-
-
-
-
-
- {{ memberInfo.nickname }}
- { $lang("member.level.l12") } memberInfo.member_level_name }}
-
-
-
- 成长规则
-
-
-
-
-
-
-
-
-
-
-
- {{ levelList[curIndex].level_name }}
- {{ $lang("member.level.l57") }}
-
- {{ $lang("member.level.l59") }}
- {{ growth }}
-
-
-
-
- 再获得{{ levelList[curIndex + 1].needGrowth > 0 ? levelList[curIndex + 1].needGrowth : 0 }}成长值成为{{
- levelList[curIndex + 1].level_name
- }}
-
-
-
- {{ $lang("member.level.l72") }}
-
-
-
-
-
- 再获得{{ levelList[curIndex].needGrowth }}成长值成为{{ levelList[curIndex].level_name }}
-
-
-
-
-
-
-
-
- {{ $lang("member.card.l42") }}
-
-
-
- {{ $lang("member.level.l91") }}
- {{ $lang("member.level.l92") }}
-
-
-
-
-
- {{ $lang("member.level.l98") }}
- {{ $lang("member.level.l99") }}
- { $lang("member.level.l100") } levelList[curIndex].consume_discount }}折消费折扣
-
-
-
-
-
- {{ $lang("member.level.l106") }}
- { $lang("member.level.l100") } levelList[curIndex].point_feedback }}倍积分回馈倍率
-
-
-
-
-
- {{ $lang("member.level.l113") }}
-
-
-
- {{ $lang("member.card.l81") }}
- { $lang("member.card.l82") } levelList[curIndex].send_point }}积分
-
-
-
-
-
- {{ $lang("member.card.l86") }}
- { $lang("member.card.l82") } levelList[curIndex].send_balance }}元红包
-
-
-
-
-
- {{ $lang("member.card.l91") }}
- { $lang("member.card.l82") } levelList[curIndex].coupon_length }}张优惠券
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/level_growth_rules.vue b/pages_tool/member/level_growth_rules.vue
index 2ce653b..94309f0 100644
--- a/pages_tool/member/level_growth_rules.vue
+++ b/pages_tool/member/level_growth_rules.vue
@@ -8,8 +8,8 @@
- {{ $lang("fenxiao.level.l221") }}
- {{ $lang("common.register-reward.l27.t0") }}
+ 等级
+ 成长值
{{ item.level_name }}
@@ -20,20 +20,20 @@
- {{ $lang("member.level_growth_rules.l23") }}
+ 什么是成长值
- {{ $lang("member.level_growth_rules.l25") }}
+ 成长值是消费者在店铺成为会员后,通过消费计算出来的值。成长值决定会员等级,会员等级越高,所享受的会员权益和会员礼包就越多。
- {{ $lang("member.level_growth_rules.l30") }}
+ 如何获得成长值
- {{ $lang("member.level_growth_rules.l33") }}
- {{ $lang("member.level_growth_rules.l34") }}
- {{ $lang("member.level_growth_rules.l35") }}
- {{ $lang("member.level_growth_rules.l36") }}
+ 1、注册会员送x成长值。
+ 2、会员充值到余额送x成长值。
+ 3、会员签到送x成长值。
+ 4、会员消费x元,交易完成即可获得x个成长值。
@@ -118,7 +118,7 @@
},
getBannerDetail(index) {
uni.showLoading({
- title: $lang('member.level.l268'),
+ title: '将前往详情页面',
duration: 2000,
mask: true
});
diff --git a/pages_tool/member/modify_face.vue b/pages_tool/member/modify_face.vue
index e892d58..fece095 100644
--- a/pages_tool/member/modify_face.vue
+++ b/pages_tool/member/modify_face.vue
@@ -1,197 +1,197 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("member.modify_face.l14") }}
-
-
- {{ $lang("member.modify_face.l14") }}
-
-
-
-
- {{ $lang("member.modify_face.l22") }}
- {{ $lang("member.modify_face.l23") }}
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/pay_password.vue b/pages_tool/member/pay_password.vue
index 721c1ce..0511b4b 100644
--- a/pages_tool/member/pay_password.vue
+++ b/pages_tool/member/pay_password.vue
@@ -1,278 +1,278 @@
-
-
- {{ $lang("member.pay_password.l3") }}
- { $lang("member.pay_password.l4") } memberInfo.mobile | mobile }}请在下方输入4位数字验证码
-
-
-
- {{ dynacodeData.codeText }}
-
- {{ $lang("member.pay_password.l10") }}
- {{ $lang("member.pay_password.l11") }}
- {{ $lang("member.pay_password.l12") }}
- {{ $lang("common.ns-goods-sku.l196.t0") }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/member/point.vue b/pages_tool/member/point.vue
index 9c61231..172cbc8 100644
--- a/pages_tool/member/point.vue
+++ b/pages_tool/member/point.vue
@@ -1,161 +1,161 @@
-
-
-
-
-
-
-
- 我的积分
-
-
-
-
-
-
- {{ pointInfo.point }}
- {{ $lang("member.point.l20") }}
-
-
- {{ pointInfo.totalPoint }}
- {{ $lang("member.point.l24") }}
-
-
- {{ pointInfo.totalConsumePoint }}
- {{ $lang("member.point.l28") }}
-
-
- {{ pointInfo.todayPoint }}
- {{ $lang("member.point.l32") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ 我的积分
+
+
+
+
+
+
+ {{ pointInfo.point }}
+ 当前积分
+
+
+ {{ pointInfo.totalPoint }}
+ 累计积分
+
+
+ {{ pointInfo.totalConsumePoint }}
+ 累计消费
+
+
+ {{ pointInfo.todayPoint }}
+ 今日获得
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/point_detail.vue b/pages_tool/member/point_detail.vue
index f217931..7087667 100644
--- a/pages_tool/member/point_detail.vue
+++ b/pages_tool/member/point_detail.vue
@@ -1,342 +1,342 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ item.type_name }}
-
- {{ $util.timeStampTurnTime(item.create_time) }}
-
-
- +{{ parseInt(item.account_data) }}
- {{ parseInt(item.account_data) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.type_name }}
+
+ {{ $util.timeStampTurnTime(item.create_time) }}
+
+
+ +{{ parseInt(item.account_data) }}
+ {{ parseInt(item.account_data) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/public/js/collection.js b/pages_tool/member/public/js/collection.js
index f781f08..c941bc6 100644
--- a/pages_tool/member/public/js/collection.js
+++ b/pages_tool/member/public/js/collection.js
@@ -1,80 +1,80 @@
-export default {
- data() {
- return {
- collectionList: [],
- isShowEmpty: false
- };
- },
- methods: {
- //跳转至详情页
- toDetail(e) {
- this.$util.redirectTo("/pages_goods/detail", {
- goods_id: e.goods_id
- });
- },
- //请求数据
- getData(mescroll) {
- this.isShowEmpty = false;
- let url = "/api/goodscollect/page"
- let array = []
- this.$api.sendRequest({
- url: url,
- data: {
- page_size: mescroll.size,
- page: mescroll.num,
- },
- async: false,
- }).then((res) => {
- let newArr = res.data?.list || [];
- for (var i = 0; i < newArr.length; i++) {
- newArr[i].composite_score = Math.floor((parseFloat(newArr[i].shop_desccredit) + parseFloat(newArr[i].shop_servicecredit) + parseFloat(newArr[i].shop_deliverycredit)) / 3).toFixed(1);
- }
- array = array.concat(newArr);
- //设置列表数据
- if (mescroll.num == 1) this.collectionList = []; //如果是第一页需手动制空列表
- this.collectionList = this.collectionList.concat(newArr); //追加新数据
- mescroll.endSuccess(array.length);
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- this.isShowEmpty = true;
- })
-
- },
- //监听下拉刷新,初始化页面数据
- listenRefresh(e) {
- this.$refs.goodsRecommend.init();
- },
- //删除某一项
- deleteItem(e) {
- this.$api.sendRequest({
- url: "/api/goodscollect/delete",
- data: {
- goods_id: e
- },
- success: res => {
- if (res.code == 0) {
- this.$util.showToast({
- title: $lang("member.account.l118")
- })
- let array = this.collectionList;
- let newArray = array.filter((v) => {
- return v.goods_id != e;
- })
- this.collectionList = newArray;
- } else {
- this.$util.showToast({
- title: res.message
- })
- }
- }
- })
- },
- imageError(index) {
- this.collectionList[index].logo = this.$util.getDefaultImage().goods;
- this.$forceUpdate();
- },
- goodsImageError(index) {
- this.collectionList[index].sku_image = this.$util.getDefaultImage().goods;
- this.$forceUpdate();
- }
- }
-};
+export default {
+ data() {
+ return {
+ collectionList: [],
+ isShowEmpty: false
+ };
+ },
+ methods: {
+ //跳转至详情页
+ toDetail(e) {
+ this.$util.redirectTo("/pages_goods/detail", {
+ goods_id: e.goods_id
+ });
+ },
+ //请求数据
+ getData(mescroll) {
+ this.isShowEmpty = false;
+ let url = "/api/goodscollect/page"
+ let array = []
+ this.$api.sendRequest({
+ url: url,
+ data: {
+ page_size: mescroll.size,
+ page: mescroll.num,
+ },
+ async: false,
+ }).then((res) => {
+ let newArr = res.data?.list || [];
+ for (var i = 0; i < newArr.length; i++) {
+ newArr[i].composite_score = Math.floor((parseFloat(newArr[i].shop_desccredit) + parseFloat(newArr[i].shop_servicecredit) + parseFloat(newArr[i].shop_deliverycredit)) / 3).toFixed(1);
+ }
+ array = array.concat(newArr);
+ //设置列表数据
+ if (mescroll.num == 1) this.collectionList = []; //如果是第一页需手动制空列表
+ this.collectionList = this.collectionList.concat(newArr); //追加新数据
+ mescroll.endSuccess(array.length);
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+ this.isShowEmpty = true;
+ })
+
+ },
+ //监听下拉刷新,初始化页面数据
+ listenRefresh(e) {
+ this.$refs.goodsRecommend.init();
+ },
+ //删除某一项
+ deleteItem(e) {
+ this.$api.sendRequest({
+ url: "/api/goodscollect/delete",
+ data: {
+ goods_id: e
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.$util.showToast({
+ title: "删除成功"
+ })
+ let array = this.collectionList;
+ let newArray = array.filter((v) => {
+ return v.goods_id != e;
+ })
+ this.collectionList = newArray;
+ } else {
+ this.$util.showToast({
+ title: res.message
+ })
+ }
+ }
+ })
+ },
+ imageError(index) {
+ this.collectionList[index].logo = this.$util.getDefaultImage().goods;
+ this.$forceUpdate();
+ },
+ goodsImageError(index) {
+ this.collectionList[index].sku_image = this.$util.getDefaultImage().goods;
+ this.$forceUpdate();
+ }
+ }
+};
diff --git a/pages_tool/member/public/js/info.js b/pages_tool/member/public/js/info.js
index 009b9c5..b0764e4 100644
--- a/pages_tool/member/public/js/info.js
+++ b/pages_tool/member/public/js/info.js
@@ -1,962 +1,962 @@
-import validate from '@/common/js/validate.js';
-import memberPublic from './member-public.js';
-
-export default {
- data() {
- return {
- registerConfig: {},
- indent: 'all',
- customNavTitle: "",
- formData: {
- userHeadImg: '',
- number: '', //账号
- nickName: '', //昵称
- sex: '', //性别
- realName: '', //真实姓名
- birthday: '', //生日
- currentPassword: '', //当前密码
- newPassword: '', //新密码
- confirmPassword: '', //确认密码
- mobile: '', //手机号
- mobileVercode: '', //手机验证码
- mobileDynacode: '', //手机动态验证吗
- mobileCodeText: "",
- username: '',
- provinceId: 0,
- cityId: 0,
- districtId: 0,
- fullAddress: '',
- address: ''
- },
- memberInfoformData: {
- userHeadImg: '',
- number: '', //账号
- nickName: '', //昵称
- sex: '', //性别
- realName: '', //真实姓名
- birthday: '', //生日
- currentPassword: '', //当前密码
- newPassword: '', //新密码
- confirmPassword: '', //确认密码
- mobile: '', //手机号
- mobileVercode: '', //手机验证码
- mobileDynacode: '', //手机动态验证吗
- mobileCodeText: "",
- },
- langList: [],
- langIndex: 0,
- seconds: 120,
- timer: null,
- isSend: false,
- captcha: {
- id: '',
- img: ''
- },
- isIphoneX: false,
- items: [{
- value: '0',
- name: $lang('member.public.js.info.l58')
- },
- {
- value: '1',
- name: $lang('member.public.js.info.l62'),
- checked: 'true'
- },
- {
- value: '2',
- name: $lang('member.public.js.info.l67')
- }
- ],
- current: 0,
- memberConfig: {
- is_audit: 0,
- is_enable: 0
- },
- defaultRegions: [],
- };
- },
- onLoad(option) {
- this.isIphoneX = this.$util.uniappIsIPhoneX()
- this.formData.mobileCodeText = this.$lang('login.list.findanimate_code');
-
- if (option.back) {
- this.back = option.back;
- }
-
- this.getCaptcha();
-
- if (option.action) {
- this.indent = option.action;
- this.setNavbarTitle()
-
- // #ifdef MP-WEIXIN
- option.action == 'bind_mobile' && this.getCode()
- // #endif
- }
-
- this.getRegisterConfig();
- this.initLang();
- this.getMemberConfig();
- },
- onShow() {
- if (!this.storeToken) {
- this.$nextTick(() => {
- this.$refs.login.open('/pages_tool/member/info');
- });
- } else {
- this.getInfo();
- }
- },
- onHide() {
- this.seconds = 120;
- this.formData.mobileCodeText = $lang('common.ns-login.l169.t0');
- this.isSend = false;
- clearInterval(this.timer);
- },
- watch: {
- seconds(value) {
- if (value == 0) {
- this.seconds = 120;
- this.formData.mobileCodeText = $lang('common.ns-login.l169.t0');
- this.isSend = false;
- clearInterval(this.timer);
- }
- }
- },
- computed: {
- startDate() {
- return this.getDate('start');
- },
- endDate() {
- return this.getDate('end');
- }
- },
- filters: {
- mobile(mobile) {
- return mobile.substring(0, 4 - 1) + '****' + mobile.substring(6 + 1);
- }
- },
- methods: {
- ...memberPublic.methods,
- // 初始化语言
- initLang() {
- //获取语言列表
- this.langList = this.$langConfig.list();
- if (!uni.getStorageSync("lang")) {
- this.langIndex = 0;
- } else {
- for (let i = 0; i < this.langList.length; i++) {
- if (this.langList[i].value == uni.getStorageSync("lang")) {
- this.langIndex = i;
- break;
- }
- }
- }
- },
- setNavbarTitle() {
- let title = $lang('member.public.js.info.l157');
- switch (this.indent) {
- case 'name':
- title = this.$lang('common.list.modify_nickname');
- break;
- case 'realName':
- title = this.$lang('common.list.real_name');
- break;
- case 'sex':
- title = this.$lang('common.list.sex');
- break;
- case 'birthday':
- title = this.$lang('birthday');
- break;
- case 'password':
- title = this.$lang('login.list.password');
- break;
- case 'mobile':
- title = this.$lang('login.list.mobile');
- break;
- }
- uni.setNavigationBarTitle({
- title: title
- });
- },
- // 初始化用户信息
- getInfo() {
- this.memberInfoformData.userHeadImg = this.memberInfo.headimg;
- this.memberInfoformData.number = this.memberInfo.username; //账号
- this.memberInfoformData.nickName = this.memberInfo.nickname; //昵称
- this.memberInfoformData.realName = this.memberInfo.realname ? this.memberInfo.realname : $lang('member.account_edit.l5'); //真实姓名
- this.memberInfoformData.sex = this.memberInfo.sex == 0 ? '未知' : this.memberInfo.sex == 1 ? '男' : $lang('member.public.js.info.l67'); //性别
- this.memberInfoformData.birthday = this.memberInfo.birthday ? this.$util.timeStampTurnTime(this.memberInfo.birthday, 'YYYY-MM-DD') : $lang('member.info_edit.l57'); //生日
- this.memberInfoformData.mobile = this.memberInfo.mobile; //手机号
-
- this.formData.username = this.memberInfo.username; //用户名
- this.formData.nickName = this.memberInfo.nickname; //昵称
- this.formData.realName = this.memberInfo.realname; //真实姓名
- this.formData.sex = this.memberInfo.sex; //性别
- this.formData.birthday = this.memberInfo.birthday ? this.$util.timeStampTurnTime(this.memberInfo.birthday, 'YYYY-MM-DD') : ''; //生日
- this.formData.provinceId = this.memberInfo.province_id;
- this.formData.cityId = this.memberInfo.city_id;
- this.formData.districtId = this.memberInfo.district_id;
- this.formData.fullAddress = this.memberInfo.full_address;
- this.formData.address = this.memberInfo.address;
- if (this.memberInfo.full_address) this.defaultRegions = [this.memberInfo
- .province_id, this.memberInfo.city_id, this.memberInfo.district_id
- ];
- },
- // 切换编辑项
- modifyInfo(action) {
- switch (action) {
- case 'cancellation':
- this.getCancelStatus();
- break;
- case 'language':
- let newArray = [];
- for (let i = 0; i < this.langList.length; i++) {
- newArray.push(this.langList[i].name)
- }
- uni.showActionSheet({
- itemList: newArray,
- success: function (res) {
- if (vm.langIndex != res.tapIndex) {
- vm.$langConfig.change(vm.langList[res.tapIndex].value)
- }
- }
- });
- break;
- case 'mobile':
- // #ifdef MP
- this.$util.redirectTo('/pages_tool/member/info_edit', {
- action: 'bind_mobile'
- });
- // #endif
- // #ifndef MP
- this.$util.redirectTo('/pages_tool/member/info_edit', {
- action
- });
- // #endif
- break;
- default:
- this.$util.redirectTo('/pages_tool/member/info_edit', {
- action
- });
- }
- },
- // 导航返回
- NavReturn() {
- uni.navigateBack({
- delta: 1
- })
- },
- // 获取验证码
- getCaptcha() {
- this.$api.sendRequest({
- url: '/api/captcha/captcha',
- data: {
- captcha_id: this.captcha.id
- },
- success: res => {
- if (res.code >= 0) {
- this.captcha = res.data;
- this.captcha.img = this.captcha.img.replace(/\r\n/g, '');
- }
- }
- });
- },
- headImage() {
- this.$util.redirectTo("/pages_tool/member/modify_face");
- },
- // 检测手机是否已绑定
- async testBinding(type) {
- var res = await this.checkMobile();
- return res;
- },
- //获取注销的配置信息
- getMemberConfig() {
- this.$api.sendRequest({
- url: '/membercancel/api/membercancel/config',
- success: res => {
- if (res.code >= 0) {
- this.memberConfig = res.data
- }
- }
- });
-
- },
- save(type) {
- switch (type) {
- case 'username':
- this.modifyUserName();
- break;
- case 'name':
- this.modifyNickName();
- break;
- case 'realName':
- this.modifyRealName();
- break;
- case 'sex':
- this.modifySex();
- break;
- case 'birthday':
- this.modifyBirthday();
- break;
- case 'password':
- this.modifyPassword();
- break;
- case 'mobile':
- this.modifyMobile();
- break;
- case 'address':
- this.modifyAddress();
- break;
- }
- },
-
- // ------------------------修改用户名------------------------------
- modifyUserName() {
- if (this.formData.username == this.memberInfo.username) {
- this.$util.showToast({
- title: this.$lang('login.list.alikeusername')
- });
- return;
- }
- var rule = [{
- name: 'username',
- checkType: 'required',
- errorMsg: this.$lang('login.list.no_emity_username')
- }];
- if (!rule.length) return;
- var checkRes = validate.check(this.formData, rule);
- if (checkRes) {
- this.$api.sendRequest({
- url: '/api/member/modifyusername',
- data: {
- username: this.formData.username
- },
- success: res => {
- if (res.code == 0) {
- this.memberInfo.username = this.formData.username;
- this.$store.commit('setMemberInfo', this.memberInfo);
- this.$util.showToast({
- title: this.$lang("common.list.update_success")
- });
- this.NavReturn();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- } else {
- this.$util.showToast({
- title: validate.error
- });
- }
- },
- // ------------------------修改昵称------------------------------
-
- modifyNickName() {
- if (this.formData.nickName == this.memberInfo.nickname) {
- this.$util.showToast({
- title: this.$lang('common.list.alike_nickname')
- });
- return;
- }
- var rule = [{
- name: 'nickName',
- checkType: 'required',
- errorMsg: this.$lang('common.list.no_emity_nickname')
- }];
- if (!rule.length) return;
- var checkRes = validate.check(this.formData, rule);
- if (checkRes) {
- this.$api.sendRequest({
- url: '/api/member/modifynickname',
- data: {
- nickname: this.formData.nickName
- },
- success: res => {
- if (res.code == 0) {
- this.memberInfo.nickname = this.formData.nickName;
- this.$store.commit('setMemberInfo', this.memberInfo);
- this.$util.showToast({
- title: this.$lang("common.list.update_success")
- });
- this.NavReturn();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- } else {
- this.$util.showToast({
- title: validate.error
- });
- }
- },
-
- // ------------------------修改真实姓名------------------------------
- modifyRealName() {
- if (this.formData.realName == this.memberInfo.realname && this.memberInfo.realname) {
- this.$util.showToast({
- title: $lang('member.public.js.info.l404')
- });
- return;
- }
- var rule = [{
- name: 'realName',
- checkType: 'required',
- errorMsg: $lang('member.public.js.info.l411')
- }];
- if (!rule.length) return;
- var checkRes = validate.check(this.formData, rule);
- if (checkRes) {
- this.$api.sendRequest({
- url: '/api/member/modifyrealname',
- data: {
- realname: this.formData.realName
- },
- success: res => {
- if (res.code == 0) {
- this.memberInfo.realname = this.formData.realName;
- this.$store.commit('setMemberInfo', this.memberInfo);
- this.$util.showToast({
- title: this.$lang("common.list.update_success")
- });
- this.NavReturn();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- } else {
- this.$util.showToast({
- title: validate.error
- });
- }
- },
-
- // ------------------------修改性别------------------------------
- radioChange: function (evt) {
- for (let i = 0; i < this.items.length; i++) {
- if (this.items[i].value === evt.target.value) {
- this.formData.sex = i;
- break;
- }
- }
- },
-
- modifySex() {
- this.$api.sendRequest({
- url: '/api/member/modifysex',
- data: {
- sex: this.formData.sex
- },
- success: res => {
- if (res.code == 0) {
- this.memberInfo.sex = this.formData.sex;
- this.$store.commit('setMemberInfo', this.memberInfo);
- this.$util.showToast({
- title: this.$lang("common.list.update_success")
- });
- this.NavReturn();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- },
-
- // ------------------------修改生日------------------------------
-
- bindDateChange: function (e) {
- this.formData.birthday = e.target.value
- },
-
- getDate(type) {
- const date = new Date();
- let year = date.getFullYear();
- let month = date.getMonth() + 1;
- let day = date.getDate();
-
- if (type === 'start') {
- year = year - 60;
- } else if (type === 'end') {
- year = year + 2;
- }
- month = month > 9 ? month : '0' + month;
- day = day > 9 ? day : '0' + day;
- return `${year}-${month}-${day}`;
- },
-
- modifyBirthday() {
- if (this.formData.birthday.length == 0) {
- this.$util.showToast({
- title: $lang('member.info_edit.l57')
- });
- return;
- }
- this.$api.sendRequest({
- url: '/api/member/modifybirthday',
- data: {
- birthday: this.$util.timeTurnTimeStamp(this.formData.birthday)
- },
- success: res => {
- if (res.code == 0) {
- this.memberInfo.birthday = this.$util.timeTurnTimeStamp(this.formData.birthday);
- this.$store.commit('setMemberInfo', this.memberInfo);
- this.$util.showToast({
- title: this.$lang("common.list.update_success")
- });
- this.NavReturn();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- },
-
- // ------------------------修改密码------------------------------
- /**
- * 获取注册配置
- */
- getRegisterConfig() {
- this.$api.sendRequest({
- url: '/api/register/config',
- success: res => {
- if (res.code >= 0) {
- this.registerConfig = res.data.value;
- }
- }
- });
- },
- modifyPassword() {
- if (this.memberInfo.password) {
- var rule = [{
- name: 'currentPassword',
- checkType: 'required',
- errorMsg: this.$lang("login.list.please_input_old_password")
- },
- {
- name: 'newPassword',
- checkType: 'required',
- errorMsg: this.$lang("login.list.please_input_new_password")
- }
- ];
- } else {
- var rule = [{
- name: 'mobileVercode',
- checkType: 'required',
- errorMsg: this.$lang("common.list.confirm_code_input")
- },
- {
- name: 'mobileDynacode',
- checkType: 'required',
- errorMsg: this.$lang("login.list.animate_code_input")
- },
- {
- name: 'newPassword',
- checkType: 'required',
- errorMsg: this.$lang("login.list.please_input_new_password")
- }
- ];
- }
-
- let regConfig = this.registerConfig;
- if (regConfig.pwd_len > 0) {
- rule.push({
- name: 'newPassword',
- checkType: 'lengthMin',
- checkRule: regConfig.pwd_len,
- errorMsg: $lang('member.public.js.info.l579') + regConfig.pwd_len + $lang('login.find.l196')
- });
- }
- if (regConfig.pwd_complexity) {
- let passwordErrorMsg = $lang('login.find.l200'),
- reg = '';
- if (regConfig.pwd_complexity.indexOf('number') != -1) {
- reg += '(?=.*?[0-9])';
- passwordErrorMsg += $lang('login.find.l204');
- }
- if (regConfig.pwd_complexity.indexOf('letter') != -1) {
- reg += '(?=.*?[a-z])';
- passwordErrorMsg += $lang('login.find.l208');
- }
- if (regConfig.pwd_complexity.indexOf('upper_case') != -1) {
- reg += '(?=.*?[A-Z])';
- passwordErrorMsg += $lang('login.find.l212');
- }
- if (regConfig.pwd_complexity.indexOf('symbol') != -1) {
- reg += '(?=.*?[#?!@$%^&*-])';
- passwordErrorMsg += $lang('login.find.l216');
- }
- rule.push({
- name: 'newPassword',
- checkType: 'reg',
- checkRule: reg,
- errorMsg: passwordErrorMsg
- });
- }
- var checkRes = validate.check(this.formData, rule);
- if (checkRes) {
- if (this.formData.currentPassword == this.formData.newPassword) {
- this.$util.showToast({
- title: $lang('member.public.js.info.l612')
- });
- return;
- }
- if (this.formData.newPassword != this.formData.confirmPassword) {
- this.$util.showToast({
- title: $lang('login.find.l230')
- });
- return;
- }
- this.$api.sendRequest({
- url: '/api/member/modifypassword',
- data: {
- new_password: this.formData.newPassword,
- old_password: this.formData.currentPassword,
- code: this.formData.mobileDynacode,
- key: uni.getStorageSync("password_mobile_key"),
- },
- success: res => {
- if (res.code == 0) {
- this.memberInfo.password = 1;
- this.$store.commit('setMemberInfo', this.memberInfo);
- this.$util.showToast({
- title: this.$lang('common.list.update_success')
- });
- this.NavReturn();
- uni.removeStorageSync('password_mobile_key');
- } else {
- this.$util.showToast({
- title: res.message
- });
- this.getCaptcha();
- }
- }
- });
- } else {
- this.$util.showToast({
- title: validate.error
- });
- }
- },
-
- // ------------------------修改手机号------------------------------
- // 验证手机号
- vertifyMobile() {
- var rule = [{
- name: 'mobile',
- checkType: 'required',
- errorMsg: $lang('common.ns-login.l16.t0')
- }, {
- name: 'mobile',
- checkType: 'phoneno',
- errorMsg: $lang('common.ns-login.l393.t0')
- }];
- var checkRes = validate.check(this.formData, rule);
- if (!checkRes) {
- this.$util.showToast({
- title: validate.error
- });
- return false;
- }
- return true;
- },
- // 检测手机号是否存在
- async checkMobile() {
- if (!this.vertifyMobile()) return;
- let res = await this.$api.sendRequest({
- url: '/api/member/checkmobile',
- data: {
- mobile: this.formData.mobile
- },
- async: false
- });
- if (res.code != 0) {
- this.$util.showToast({
- title: res.message
- });
- return false;
- }
- return true;
- },
-
- // 发送短信动态码
- async bindMoblieCode() {
- if (this.seconds != 120) return;
- var rule = [{
- name: 'mobile',
- checkType: 'phoneno',
- errorMsg: this.$lang("login.list.sure_phone_number")
- },
- {
- name: 'mobileVercode',
- checkType: 'required',
- errorMsg: this.$lang("common.list.confirm_code_input")
- },
- ];
-
- var checkRes = validate.check(this.formData, rule);
-
- if (checkRes && !this.isSend) {
- this.isSend = true;
- this.$api.sendRequest({
- url: '/api/member/bindmobliecode',
- data: {
- mobile: this.formData.mobile,
- captcha_id: this.captcha.id,
- captcha_code: this.formData.mobileVercode
- },
- success: res => {
- let data = res.data;
- if (data.key) {
- if (this.seconds == 120 && this.timer == null) {
- this.timer = setInterval(() => {
- this.seconds--;
- this.formData.mobileCodeText = $lang('member.public.js.info.l726') + this.seconds + 's)';
- }, 1000);
- }
- uni.setStorageSync('mobile_key', data.key);
- } else {
- this.$util.showToast({
- title: res.message
- });
- this.isSend = false;
- }
- },
- fail: res => {
- this.isSend = false;
- this.getCaptcha();
- }
- });
- } else {
- this.$util.showToast({
- title: validate.error ? validate.error : $lang('member.public.js.info.l744')
- });
- }
- },
- async modifyMobile() {
-
- var mobileRule = [{
- name: 'mobile',
- checkType: 'phoneno',
- errorMsg: this.$lang("login.list.sure_phone_number")
- },
- {
- name: 'mobileVercode',
- checkType: 'required',
- errorMsg: this.$lang("common.list.confirm_code_input")
- },
- {
- name: 'mobileDynacode',
- checkType: 'required',
- errorMsg: this.$lang("login.list.animate_code_input")
- },
- ];
- var checkRes = validate.check(this.formData, mobileRule);
-
- if (checkRes) {
- if (this.formData.mobile == this.memberInfo.mobile) {
- this.$util.showToast({
- title: this.$lang("login.list.alike_phone")
- });
- return;
- }
- this.$api.sendRequest({
- url: '/api/member/modifymobile',
- data: {
- mobile: this.formData.mobile,
- captcha_id: this.captcha.id,
- captcha_code: this.formData.mobileVercode,
- code: this.formData.mobileDynacode,
- key: uni.getStorageSync("mobile_key"),
- },
- success: res => {
- if (res.code == 0) {
- this.memberInfo.mobile = this.formData.mobile;
- this.$store.commit('setMemberInfo', this.memberInfo);
- this.$util.showToast({
- title: this.$lang("common.list.update_success")
- });
- if (this.back) {
- this.$util.redirectTo('/pages_tool/member/pay_password', {
- 'back': this.back
- }, 'redirectTo')
- } else {
- this.NavReturn();
- }
- } else {
- this.$util.showToast({
- title: res.message
- });
- this.getCaptcha();
- }
- },
- fail: res => {
- this.isSend = false;
- this.getCaptcha();
- }
- });
- } else {
- this.$util.showToast({
- title: validate.error
- });
- }
- },
- /**
- * 修改密码发送动态码
- */
- passwordMoblieCode() {
- if (this.seconds != 120) return;
-
- if (this.formData.mobileVercode == '') {
- this.$util.showToast({
- title: this.$lang("common.list.confirm_code_input")
- });
- return;
- }
-
- if (!this.isSend) {
- this.isSend = true;
- this.$api.sendRequest({
- url: '/api/member/pwdmobliecode',
- data: {
- captcha_id: this.captcha.id,
- captcha_code: this.formData.mobileVercode
- },
- success: res => {
- let data = res.data;
- if (data.key) {
- if (this.seconds == 120 && this.timer == null) {
- this.timer = setInterval(() => {
- this.seconds--;
- this.formData.mobileCodeText = $lang('member.public.js.info.l726') + this.seconds + 's)';
- }, 1000);
- }
- uni.setStorageSync('password_mobile_key', data.key);
- } else {
- this.$util.showToast({
- title: res.message
- });
- this.isSend = false;
- }
- },
- fail: res => {
- this.isSend = false;
- this.getCaptcha();
- }
- });
- } else {
- this.$util.showToast({
- title: $lang('member.public.js.info.l744')
- });
- }
- },
- modifyAddress() {
- var rule = [{
- name: 'fullAddress',
- checkType: 'required',
- errorMsg: $lang('member.public.js.info.l869')
- },
- {
- name: 'address',
- checkType: 'required',
- errorMsg: $lang('member.public.js.info.l874')
- }
- ];
- if (!rule.length) return;
- var checkRes = validate.check(this.formData, rule);
- if (checkRes) {
- this.$api.sendRequest({
- url: '/api/member/modifyaddress',
- data: {
- province_id: this.formData.provinceId,
- city_id: this.formData.cityId,
- district_id: this.formData.districtId,
- address: this.formData.address,
- full_address: this.formData.fullAddress
- },
- success: res => {
- if (res.code == 0) {
- this.memberInfo.province_id = this.formData.provinceId;
- this.memberInfo.city_id = this.formData.cityId;
- this.memberInfo.district_id = this.formData.districtId;
- this.memberInfo.address = this.formData.address;
- this.memberInfo.full_address = this.formData.fullAddress;
- this.$store.commit('setMemberInfo', this.memberInfo);
- this.$util.showToast({
- title: this.$lang("common.list.update_success")
- });
- this.NavReturn();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- } else {
- this.$util.showToast({
- title: validate.error
- });
- }
- },
- initFormData() {
- this.formData.currentPassword = '';
- this.formData.newPassword = '';
- this.formData.confirmPassword = '';
- this.formData.mobileVercode = '';
- this.formData.mobileDynacode = '';
- this.formData.mobile = '';
- },
- handleGetRegions(regions) {
- this.formData.fullAddress = '';
- this.formData.fullAddress += regions[0] != undefined ? regions[0].label : '';
- this.formData.fullAddress += regions[1] != undefined ? '-' + regions[1].label : '';
- this.formData.fullAddress += regions[2] != undefined ? '-' + regions[2].label : '';
- this.formData.provinceId = regions[0] ? regions[0].value : 0;
- this.formData.cityId = regions[1] ? regions[1].value : 0;
- this.formData.districtId = regions[2] ? regions[2].value : 0;
- },
- /**
- * 手动绑定手机号
- */
- manualBinding() {
- this.indent = 'mobile';
- },
- mobileAuth(e) {
- if (e.detail.errMsg == 'getPhoneNumber:ok') {
- let data = e.detail
- // #ifdef MP-WEIXIN
- Object.assign(data, this.authInfo)
- // #endif
- this.$api.sendRequest({
- url: '/api/member/mobileauth',
- data,
- success: res => {
- if (res.code == 0) {
- this.$util.showToast({
- title: this.$lang("common.list.update_success")
- });
- this.NavReturn();
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- })
- }
- }
- }
+import validate from '@/common/js/validate.js';
+import memberPublic from './member-public.js';
+
+export default {
+ data() {
+ return {
+ registerConfig: {},
+ indent: 'all',
+ customNavTitle: "",
+ formData: {
+ userHeadImg: '',
+ number: '', //账号
+ nickName: '', //昵称
+ sex: '', //性别
+ realName: '', //真实姓名
+ birthday: '', //生日
+ currentPassword: '', //当前密码
+ newPassword: '', //新密码
+ confirmPassword: '', //确认密码
+ mobile: '', //手机号
+ mobileVercode: '', //手机验证码
+ mobileDynacode: '', //手机动态验证吗
+ mobileCodeText: "",
+ username: '',
+ provinceId: 0,
+ cityId: 0,
+ districtId: 0,
+ fullAddress: '',
+ address: ''
+ },
+ memberInfoformData: {
+ userHeadImg: '',
+ number: '', //账号
+ nickName: '', //昵称
+ sex: '', //性别
+ realName: '', //真实姓名
+ birthday: '', //生日
+ currentPassword: '', //当前密码
+ newPassword: '', //新密码
+ confirmPassword: '', //确认密码
+ mobile: '', //手机号
+ mobileVercode: '', //手机验证码
+ mobileDynacode: '', //手机动态验证吗
+ mobileCodeText: "",
+ },
+ langList: [],
+ langIndex: 0,
+ seconds: 120,
+ timer: null,
+ isSend: false,
+ captcha: {
+ id: '',
+ img: ''
+ },
+ isIphoneX: false,
+ items: [{
+ value: '0',
+ name: '未知'
+ },
+ {
+ value: '1',
+ name: '男',
+ checked: 'true'
+ },
+ {
+ value: '2',
+ name: '女'
+ }
+ ],
+ current: 0,
+ memberConfig: {
+ is_audit: 0,
+ is_enable: 0
+ },
+ defaultRegions: [],
+ };
+ },
+ onLoad(option) {
+ this.isIphoneX = this.$util.uniappIsIPhoneX()
+ this.formData.mobileCodeText = this.$lang('findanimateCode');
+
+ if (option.back) {
+ this.back = option.back;
+ }
+
+ this.getCaptcha();
+
+ if (option.action) {
+ this.indent = option.action;
+ this.setNavbarTitle()
+
+ // #ifdef MP-WEIXIN
+ option.action == 'bind_mobile' && this.getCode()
+ // #endif
+ }
+
+ this.getRegisterConfig();
+ this.initLang();
+ this.getMemberConfig();
+ },
+ onShow() {
+ if (!this.storeToken) {
+ this.$nextTick(() => {
+ this.$refs.login.open('/pages_tool/member/info');
+ });
+ } else {
+ this.getInfo();
+ }
+ },
+ onHide() {
+ this.seconds = 120;
+ this.formData.mobileCodeText = '获取动态码';
+ this.isSend = false;
+ clearInterval(this.timer);
+ },
+ watch: {
+ seconds(value) {
+ if (value == 0) {
+ this.seconds = 120;
+ this.formData.mobileCodeText = '获取动态码';
+ this.isSend = false;
+ clearInterval(this.timer);
+ }
+ }
+ },
+ computed: {
+ startDate() {
+ return this.getDate('start');
+ },
+ endDate() {
+ return this.getDate('end');
+ }
+ },
+ filters: {
+ mobile(mobile) {
+ return mobile.substring(0, 4 - 1) + '****' + mobile.substring(6 + 1);
+ }
+ },
+ methods: {
+ ...memberPublic.methods,
+ // 初始化语言
+ initLang() {
+ //获取语言列表
+ this.langList = this.$langConfig.list();
+ if (!uni.getStorageSync("lang")) {
+ this.langIndex = 0;
+ } else {
+ for (let i = 0; i < this.langList.length; i++) {
+ if (this.langList[i].value == uni.getStorageSync("lang")) {
+ this.langIndex = i;
+ break;
+ }
+ }
+ }
+ },
+ setNavbarTitle() {
+ let title = '个人资料';
+ switch (this.indent) {
+ case 'name':
+ title = this.$lang('modifyNickname');
+ break;
+ case 'realName':
+ title = this.$lang('realName');
+ break;
+ case 'sex':
+ title = this.$lang('sex');
+ break;
+ case 'birthday':
+ title = this.$lang('birthday');
+ break;
+ case 'password':
+ title = this.$lang('password');
+ break;
+ case 'mobile':
+ title = this.$lang('mobile');
+ break;
+ }
+ uni.setNavigationBarTitle({
+ title: title
+ });
+ },
+ // 初始化用户信息
+ getInfo() {
+ this.memberInfoformData.userHeadImg = this.memberInfo.headimg;
+ this.memberInfoformData.number = this.memberInfo.username; //账号
+ this.memberInfoformData.nickName = this.memberInfo.nickname; //昵称
+ this.memberInfoformData.realName = this.memberInfo.realname ? this.memberInfo.realname : '请输入真实姓名'; //真实姓名
+ this.memberInfoformData.sex = this.memberInfo.sex == 0 ? '未知' : this.memberInfo.sex == 1 ? '男' : '女'; //性别
+ this.memberInfoformData.birthday = this.memberInfo.birthday ? this.$util.timeStampTurnTime(this.memberInfo.birthday, 'YYYY-MM-DD') : '请选择生日'; //生日
+ this.memberInfoformData.mobile = this.memberInfo.mobile; //手机号
+
+ this.formData.username = this.memberInfo.username; //用户名
+ this.formData.nickName = this.memberInfo.nickname; //昵称
+ this.formData.realName = this.memberInfo.realname; //真实姓名
+ this.formData.sex = this.memberInfo.sex; //性别
+ this.formData.birthday = this.memberInfo.birthday ? this.$util.timeStampTurnTime(this.memberInfo.birthday, 'YYYY-MM-DD') : ''; //生日
+ this.formData.provinceId = this.memberInfo.province_id;
+ this.formData.cityId = this.memberInfo.city_id;
+ this.formData.districtId = this.memberInfo.district_id;
+ this.formData.fullAddress = this.memberInfo.full_address;
+ this.formData.address = this.memberInfo.address;
+ if (this.memberInfo.full_address) this.defaultRegions = [this.memberInfo
+ .province_id, this.memberInfo.city_id, this.memberInfo.district_id
+ ];
+ },
+ // 切换编辑项
+ modifyInfo(action) {
+ switch (action) {
+ case 'cancellation':
+ this.getCancelStatus();
+ break;
+ case 'language':
+ let newArray = [];
+ for (let i = 0; i < this.langList.length; i++) {
+ newArray.push(this.langList[i].name)
+ }
+ uni.showActionSheet({
+ itemList: newArray,
+ success: function (res) {
+ if (vm.langIndex != res.tapIndex) {
+ vm.$langConfig.change(vm.langList[res.tapIndex].value)
+ }
+ }
+ });
+ break;
+ case 'mobile':
+ // #ifdef MP
+ this.$util.redirectTo('/pages_tool/member/info_edit', {
+ action: 'bind_mobile'
+ });
+ // #endif
+ // #ifndef MP
+ this.$util.redirectTo('/pages_tool/member/info_edit', {
+ action
+ });
+ // #endif
+ break;
+ default:
+ this.$util.redirectTo('/pages_tool/member/info_edit', {
+ action
+ });
+ }
+ },
+ // 导航返回
+ NavReturn() {
+ uni.navigateBack({
+ delta: 1
+ })
+ },
+ // 获取验证码
+ getCaptcha() {
+ this.$api.sendRequest({
+ url: '/api/captcha/captcha',
+ data: {
+ captcha_id: this.captcha.id
+ },
+ success: res => {
+ if (res.code >= 0) {
+ this.captcha = res.data;
+ this.captcha.img = this.captcha.img.replace(/\r\n/g, '');
+ }
+ }
+ });
+ },
+ headImage() {
+ this.$util.redirectTo("/pages_tool/member/modify_face");
+ },
+ // 检测手机是否已绑定
+ async testBinding(type) {
+ var res = await this.checkMobile();
+ return res;
+ },
+ //获取注销的配置信息
+ getMemberConfig() {
+ this.$api.sendRequest({
+ url: '/membercancel/api/membercancel/config',
+ success: res => {
+ if (res.code >= 0) {
+ this.memberConfig = res.data
+ }
+ }
+ });
+
+ },
+ save(type) {
+ switch (type) {
+ case 'username':
+ this.modifyUserName();
+ break;
+ case 'name':
+ this.modifyNickName();
+ break;
+ case 'realName':
+ this.modifyRealName();
+ break;
+ case 'sex':
+ this.modifySex();
+ break;
+ case 'birthday':
+ this.modifyBirthday();
+ break;
+ case 'password':
+ this.modifyPassword();
+ break;
+ case 'mobile':
+ this.modifyMobile();
+ break;
+ case 'address':
+ this.modifyAddress();
+ break;
+ }
+ },
+
+ // ------------------------修改用户名------------------------------
+ modifyUserName() {
+ if (this.formData.username == this.memberInfo.username) {
+ this.$util.showToast({
+ title: this.$lang('alikeusername')
+ });
+ return;
+ }
+ var rule = [{
+ name: 'username',
+ checkType: 'required',
+ errorMsg: this.$lang('noEmityUsername')
+ }];
+ if (!rule.length) return;
+ var checkRes = validate.check(this.formData, rule);
+ if (checkRes) {
+ this.$api.sendRequest({
+ url: '/api/member/modifyusername',
+ data: {
+ username: this.formData.username
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.memberInfo.username = this.formData.username;
+ this.$store.commit('setMemberInfo', this.memberInfo);
+ this.$util.showToast({
+ title: this.$lang("updateSuccess")
+ });
+ this.NavReturn();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ } else {
+ this.$util.showToast({
+ title: validate.error
+ });
+ }
+ },
+ // ------------------------修改昵称------------------------------
+
+ modifyNickName() {
+ if (this.formData.nickName == this.memberInfo.nickname) {
+ this.$util.showToast({
+ title: this.$lang('alikeNickname')
+ });
+ return;
+ }
+ var rule = [{
+ name: 'nickName',
+ checkType: 'required',
+ errorMsg: this.$lang('noEmityNickname')
+ }];
+ if (!rule.length) return;
+ var checkRes = validate.check(this.formData, rule);
+ if (checkRes) {
+ this.$api.sendRequest({
+ url: '/api/member/modifynickname',
+ data: {
+ nickname: this.formData.nickName
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.memberInfo.nickname = this.formData.nickName;
+ this.$store.commit('setMemberInfo', this.memberInfo);
+ this.$util.showToast({
+ title: this.$lang("updateSuccess")
+ });
+ this.NavReturn();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ } else {
+ this.$util.showToast({
+ title: validate.error
+ });
+ }
+ },
+
+ // ------------------------修改真实姓名------------------------------
+ modifyRealName() {
+ if (this.formData.realName == this.memberInfo.realname && this.memberInfo.realname) {
+ this.$util.showToast({
+ title: '与原真实姓名一致,无需修改'
+ });
+ return;
+ }
+ var rule = [{
+ name: 'realName',
+ checkType: 'required',
+ errorMsg: '真实姓名不能为空'
+ }];
+ if (!rule.length) return;
+ var checkRes = validate.check(this.formData, rule);
+ if (checkRes) {
+ this.$api.sendRequest({
+ url: '/api/member/modifyrealname',
+ data: {
+ realname: this.formData.realName
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.memberInfo.realname = this.formData.realName;
+ this.$store.commit('setMemberInfo', this.memberInfo);
+ this.$util.showToast({
+ title: this.$lang("updateSuccess")
+ });
+ this.NavReturn();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ } else {
+ this.$util.showToast({
+ title: validate.error
+ });
+ }
+ },
+
+ // ------------------------修改性别------------------------------
+ radioChange: function (evt) {
+ for (let i = 0; i < this.items.length; i++) {
+ if (this.items[i].value === evt.target.value) {
+ this.formData.sex = i;
+ break;
+ }
+ }
+ },
+
+ modifySex() {
+ this.$api.sendRequest({
+ url: '/api/member/modifysex',
+ data: {
+ sex: this.formData.sex
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.memberInfo.sex = this.formData.sex;
+ this.$store.commit('setMemberInfo', this.memberInfo);
+ this.$util.showToast({
+ title: this.$lang("updateSuccess")
+ });
+ this.NavReturn();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ },
+
+ // ------------------------修改生日------------------------------
+
+ bindDateChange: function (e) {
+ this.formData.birthday = e.target.value
+ },
+
+ getDate(type) {
+ const date = new Date();
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+
+ if (type === 'start') {
+ year = year - 60;
+ } else if (type === 'end') {
+ year = year + 2;
+ }
+ month = month > 9 ? month : '0' + month;
+ day = day > 9 ? day : '0' + day;
+ return `${year}-${month}-${day}`;
+ },
+
+ modifyBirthday() {
+ if (this.formData.birthday.length == 0) {
+ this.$util.showToast({
+ title: '请选择生日'
+ });
+ return;
+ }
+ this.$api.sendRequest({
+ url: '/api/member/modifybirthday',
+ data: {
+ birthday: this.$util.timeTurnTimeStamp(this.formData.birthday)
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.memberInfo.birthday = this.$util.timeTurnTimeStamp(this.formData.birthday);
+ this.$store.commit('setMemberInfo', this.memberInfo);
+ this.$util.showToast({
+ title: this.$lang("updateSuccess")
+ });
+ this.NavReturn();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ },
+
+ // ------------------------修改密码------------------------------
+ /**
+ * 获取注册配置
+ */
+ getRegisterConfig() {
+ this.$api.sendRequest({
+ url: '/api/register/config',
+ success: res => {
+ if (res.code >= 0) {
+ this.registerConfig = res.data.value;
+ }
+ }
+ });
+ },
+ modifyPassword() {
+ if (this.memberInfo.password) {
+ var rule = [{
+ name: 'currentPassword',
+ checkType: 'required',
+ errorMsg: this.$lang("pleaseInputOldPassword")
+ },
+ {
+ name: 'newPassword',
+ checkType: 'required',
+ errorMsg: this.$lang("pleaseInputNewPassword")
+ }
+ ];
+ } else {
+ var rule = [{
+ name: 'mobileVercode',
+ checkType: 'required',
+ errorMsg: this.$lang("confirmCodeInput")
+ },
+ {
+ name: 'mobileDynacode',
+ checkType: 'required',
+ errorMsg: this.$lang("animateCodeInput")
+ },
+ {
+ name: 'newPassword',
+ checkType: 'required',
+ errorMsg: this.$lang("pleaseInputNewPassword")
+ }
+ ];
+ }
+
+ let regConfig = this.registerConfig;
+ if (regConfig.pwd_len > 0) {
+ rule.push({
+ name: 'newPassword',
+ checkType: 'lengthMin',
+ checkRule: regConfig.pwd_len,
+ errorMsg: '新密码长度不能小于' + regConfig.pwd_len + '位'
+ });
+ }
+ if (regConfig.pwd_complexity) {
+ let passwordErrorMsg = '密码需包含',
+ reg = '';
+ if (regConfig.pwd_complexity.indexOf('number') != -1) {
+ reg += '(?=.*?[0-9])';
+ passwordErrorMsg += '数字';
+ }
+ if (regConfig.pwd_complexity.indexOf('letter') != -1) {
+ reg += '(?=.*?[a-z])';
+ passwordErrorMsg += '、小写字母';
+ }
+ if (regConfig.pwd_complexity.indexOf('upper_case') != -1) {
+ reg += '(?=.*?[A-Z])';
+ passwordErrorMsg += '、大写字母';
+ }
+ if (regConfig.pwd_complexity.indexOf('symbol') != -1) {
+ reg += '(?=.*?[#?!@$%^&*-])';
+ passwordErrorMsg += '、特殊字符';
+ }
+ rule.push({
+ name: 'newPassword',
+ checkType: 'reg',
+ checkRule: reg,
+ errorMsg: passwordErrorMsg
+ });
+ }
+ var checkRes = validate.check(this.formData, rule);
+ if (checkRes) {
+ if (this.formData.currentPassword == this.formData.newPassword) {
+ this.$util.showToast({
+ title: '新密码不能与原密码相同'
+ });
+ return;
+ }
+ if (this.formData.newPassword != this.formData.confirmPassword) {
+ this.$util.showToast({
+ title: '两次密码不一致'
+ });
+ return;
+ }
+ this.$api.sendRequest({
+ url: '/api/member/modifypassword',
+ data: {
+ new_password: this.formData.newPassword,
+ old_password: this.formData.currentPassword,
+ code: this.formData.mobileDynacode,
+ key: uni.getStorageSync("password_mobile_key"),
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.memberInfo.password = 1;
+ this.$store.commit('setMemberInfo', this.memberInfo);
+ this.$util.showToast({
+ title: this.$lang('updateSuccess')
+ });
+ this.NavReturn();
+ uni.removeStorageSync('password_mobile_key');
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ this.getCaptcha();
+ }
+ }
+ });
+ } else {
+ this.$util.showToast({
+ title: validate.error
+ });
+ }
+ },
+
+ // ------------------------修改手机号------------------------------
+ // 验证手机号
+ vertifyMobile() {
+ var rule = [{
+ name: 'mobile',
+ checkType: 'required',
+ errorMsg: '请输入手机号'
+ }, {
+ name: 'mobile',
+ checkType: 'phoneno',
+ errorMsg: '请输入正确的手机号'
+ }];
+ var checkRes = validate.check(this.formData, rule);
+ if (!checkRes) {
+ this.$util.showToast({
+ title: validate.error
+ });
+ return false;
+ }
+ return true;
+ },
+ // 检测手机号是否存在
+ async checkMobile() {
+ if (!this.vertifyMobile()) return;
+ let res = await this.$api.sendRequest({
+ url: '/api/member/checkmobile',
+ data: {
+ mobile: this.formData.mobile
+ },
+ async: false
+ });
+ if (res.code != 0) {
+ this.$util.showToast({
+ title: res.message
+ });
+ return false;
+ }
+ return true;
+ },
+
+ // 发送短信动态码
+ async bindMoblieCode() {
+ if (this.seconds != 120) return;
+ var rule = [{
+ name: 'mobile',
+ checkType: 'phoneno',
+ errorMsg: this.$lang("surePhoneNumber")
+ },
+ {
+ name: 'mobileVercode',
+ checkType: 'required',
+ errorMsg: this.$lang("confirmCodeInput")
+ },
+ ];
+
+ var checkRes = validate.check(this.formData, rule);
+
+ if (checkRes && !this.isSend) {
+ this.isSend = true;
+ this.$api.sendRequest({
+ url: '/api/member/bindmobliecode',
+ data: {
+ mobile: this.formData.mobile,
+ captcha_id: this.captcha.id,
+ captcha_code: this.formData.mobileVercode
+ },
+ success: res => {
+ let data = res.data;
+ if (data.key) {
+ if (this.seconds == 120 && this.timer == null) {
+ this.timer = setInterval(() => {
+ this.seconds--;
+ this.formData.mobileCodeText = '已发送(' + this.seconds + 's)';
+ }, 1000);
+ }
+ uni.setStorageSync('mobile_key', data.key);
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ this.isSend = false;
+ }
+ },
+ fail: res => {
+ this.isSend = false;
+ this.getCaptcha();
+ }
+ });
+ } else {
+ this.$util.showToast({
+ title: validate.error ? validate.error : '请勿重复点击'
+ });
+ }
+ },
+ async modifyMobile() {
+
+ var mobileRule = [{
+ name: 'mobile',
+ checkType: 'phoneno',
+ errorMsg: this.$lang("surePhoneNumber")
+ },
+ {
+ name: 'mobileVercode',
+ checkType: 'required',
+ errorMsg: this.$lang("confirmCodeInput")
+ },
+ {
+ name: 'mobileDynacode',
+ checkType: 'required',
+ errorMsg: this.$lang("animateCodeInput")
+ },
+ ];
+ var checkRes = validate.check(this.formData, mobileRule);
+
+ if (checkRes) {
+ if (this.formData.mobile == this.memberInfo.mobile) {
+ this.$util.showToast({
+ title: this.$lang("alikePhone")
+ });
+ return;
+ }
+ this.$api.sendRequest({
+ url: '/api/member/modifymobile',
+ data: {
+ mobile: this.formData.mobile,
+ captcha_id: this.captcha.id,
+ captcha_code: this.formData.mobileVercode,
+ code: this.formData.mobileDynacode,
+ key: uni.getStorageSync("mobile_key"),
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.memberInfo.mobile = this.formData.mobile;
+ this.$store.commit('setMemberInfo', this.memberInfo);
+ this.$util.showToast({
+ title: this.$lang("updateSuccess")
+ });
+ if (this.back) {
+ this.$util.redirectTo('/pages_tool/member/pay_password', {
+ 'back': this.back
+ }, 'redirectTo')
+ } else {
+ this.NavReturn();
+ }
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ this.getCaptcha();
+ }
+ },
+ fail: res => {
+ this.isSend = false;
+ this.getCaptcha();
+ }
+ });
+ } else {
+ this.$util.showToast({
+ title: validate.error
+ });
+ }
+ },
+ /**
+ * 修改密码发送动态码
+ */
+ passwordMoblieCode() {
+ if (this.seconds != 120) return;
+
+ if (this.formData.mobileVercode == '') {
+ this.$util.showToast({
+ title: this.$lang("confirmCodeInput")
+ });
+ return;
+ }
+
+ if (!this.isSend) {
+ this.isSend = true;
+ this.$api.sendRequest({
+ url: '/api/member/pwdmobliecode',
+ data: {
+ captcha_id: this.captcha.id,
+ captcha_code: this.formData.mobileVercode
+ },
+ success: res => {
+ let data = res.data;
+ if (data.key) {
+ if (this.seconds == 120 && this.timer == null) {
+ this.timer = setInterval(() => {
+ this.seconds--;
+ this.formData.mobileCodeText = '已发送(' + this.seconds + 's)';
+ }, 1000);
+ }
+ uni.setStorageSync('password_mobile_key', data.key);
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ this.isSend = false;
+ }
+ },
+ fail: res => {
+ this.isSend = false;
+ this.getCaptcha();
+ }
+ });
+ } else {
+ this.$util.showToast({
+ title: '请勿重复点击'
+ });
+ }
+ },
+ modifyAddress() {
+ var rule = [{
+ name: 'fullAddress',
+ checkType: 'required',
+ errorMsg: '请选择所在地区'
+ },
+ {
+ name: 'address',
+ checkType: 'required',
+ errorMsg: '请输入详细地址'
+ }
+ ];
+ if (!rule.length) return;
+ var checkRes = validate.check(this.formData, rule);
+ if (checkRes) {
+ this.$api.sendRequest({
+ url: '/api/member/modifyaddress',
+ data: {
+ province_id: this.formData.provinceId,
+ city_id: this.formData.cityId,
+ district_id: this.formData.districtId,
+ address: this.formData.address,
+ full_address: this.formData.fullAddress
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.memberInfo.province_id = this.formData.provinceId;
+ this.memberInfo.city_id = this.formData.cityId;
+ this.memberInfo.district_id = this.formData.districtId;
+ this.memberInfo.address = this.formData.address;
+ this.memberInfo.full_address = this.formData.fullAddress;
+ this.$store.commit('setMemberInfo', this.memberInfo);
+ this.$util.showToast({
+ title: this.$lang("updateSuccess")
+ });
+ this.NavReturn();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ });
+ } else {
+ this.$util.showToast({
+ title: validate.error
+ });
+ }
+ },
+ initFormData() {
+ this.formData.currentPassword = '';
+ this.formData.newPassword = '';
+ this.formData.confirmPassword = '';
+ this.formData.mobileVercode = '';
+ this.formData.mobileDynacode = '';
+ this.formData.mobile = '';
+ },
+ handleGetRegions(regions) {
+ this.formData.fullAddress = '';
+ this.formData.fullAddress += regions[0] != undefined ? regions[0].label : '';
+ this.formData.fullAddress += regions[1] != undefined ? '-' + regions[1].label : '';
+ this.formData.fullAddress += regions[2] != undefined ? '-' + regions[2].label : '';
+ this.formData.provinceId = regions[0] ? regions[0].value : 0;
+ this.formData.cityId = regions[1] ? regions[1].value : 0;
+ this.formData.districtId = regions[2] ? regions[2].value : 0;
+ },
+ /**
+ * 手动绑定手机号
+ */
+ manualBinding() {
+ this.indent = 'mobile';
+ },
+ mobileAuth(e) {
+ if (e.detail.errMsg == 'getPhoneNumber:ok') {
+ let data = e.detail
+ // #ifdef MP-WEIXIN
+ Object.assign(data, this.authInfo)
+ // #endif
+ this.$api.sendRequest({
+ url: '/api/member/mobileauth',
+ data,
+ success: res => {
+ if (res.code == 0) {
+ this.$util.showToast({
+ title: this.$lang("updateSuccess")
+ });
+ this.NavReturn();
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ }
+ }
+ })
+ }
+ }
+ }
};
\ No newline at end of file
diff --git a/pages_tool/member/public/js/invite_friends.js b/pages_tool/member/public/js/invite_friends.js
index 2de14bb..12e5a86 100644
--- a/pages_tool/member/public/js/invite_friends.js
+++ b/pages_tool/member/public/js/invite_friends.js
@@ -1,115 +1,115 @@
-export default {
- methods: {
- //获取邀请列表
- getList() {
- this.$api.sendRequest({
- url: '/memberrecommend/api/memberrecommend/lists',
- data: {
- page: this.page,
- page_size: this.page_size
- },
- success: res => {
- this.inviteList = this.inviteList.concat(res.data.list);
- this.total_num = res.data.page_count;
- }
- });
- },
- moreList() {
- this.page++;
- this.isClick = false;
- if (this.page < this.total_num) {
- this.getList();
- this.isClick = true;
- } else if (this.page == this.total_num) {
- this.getList();
- }
- },
- getBaseInfo() {
- this.$api.sendRequest({
- url: '/memberrecommend/api/memberrecommend/info',
- success: res => {
- if (res.code == 0) {
- this.info = res.data;
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- }
- }
- });
- },
- openSharePopup() {
- this.$refs.sharePopup.open();
- },
- // 关闭分享弹出层
- closeSharePopup() {
- this.$refs.sharePopup.close();
- },
- // 打开规则说明弹出层
- openRulePopup() {
- this.$refs.rulePopup.open();
- },
- // 打开规则说明弹出层
- closeRulePopup() {
- this.$refs.rulePopup.close();
- },
- copyUrl() {
- let text = this.$config.h5Domain + this.$util.INDEX_PAGE_URL;
- if (this.memberInf && this.memberInfo.member_id) text += '?source_member=' + this.memberInfo.member_id;
- this.$util.copy(text, () => {
- this.closeSharePopup();
- });
- },
- // 打开海报弹出层
- openPosterPopup() {
- this.getPoster();
- this.$refs.sharePopup.close();
- this.$refs.posterPopup.open();
- },
- // 关闭海报弹出层
- closePosterPopup() {
- this.$refs.posterPopup.close();
- },
- //生成海报
- getPoster() {
- //活动海报信息
- let qrcode_param = {
- source_member: this.memberInfo.member_id
- };
- this.$api.sendRequest({
- url: "/memberrecommend/api/memberrecommend/poster",
- data: {
- page: this.$util.INDEX_PAGE_URL,
- qrcode_param: JSON.stringify(qrcode_param)
- },
- success: res => {
- if (res.code == 0) {
- this.poster = res.data.path + "?time=" + new Date().getTime();
- } else {
- this.posterMsg = res.message;
- }
- }
- });
- },
- savePoster() {
- let url = this.$util.img(this.poster);
- uni.downloadFile({
- url: url,
- success: (res) => {
- if (res.statusCode === 200) {
- uni.saveImageToPhotosAlbum({
- filePath: res.tempFilePath,
- success: () => {
- this.$util.showToast({
- title: $lang("goods._components.goods-detail-view.detail.l351.t0")
- });
- },
- fail: () => {
- this.$util.showToast({
- title: $lang("goods._components.goods-detail-view.detail.l356.t0")
- });
- }
- });
- }
- }
- });
- }
- }
+export default {
+ methods: {
+ //获取邀请列表
+ getList() {
+ this.$api.sendRequest({
+ url: '/memberrecommend/api/memberrecommend/lists',
+ data: {
+ page: this.page,
+ page_size: this.page_size
+ },
+ success: res => {
+ this.inviteList = this.inviteList.concat(res.data.list);
+ this.total_num = res.data.page_count;
+ }
+ });
+ },
+ moreList() {
+ this.page++;
+ this.isClick = false;
+ if (this.page < this.total_num) {
+ this.getList();
+ this.isClick = true;
+ } else if (this.page == this.total_num) {
+ this.getList();
+ }
+ },
+ getBaseInfo() {
+ this.$api.sendRequest({
+ url: '/memberrecommend/api/memberrecommend/info',
+ success: res => {
+ if (res.code == 0) {
+ this.info = res.data;
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+ }
+ }
+ });
+ },
+ openSharePopup() {
+ this.$refs.sharePopup.open();
+ },
+ // 关闭分享弹出层
+ closeSharePopup() {
+ this.$refs.sharePopup.close();
+ },
+ // 打开规则说明弹出层
+ openRulePopup() {
+ this.$refs.rulePopup.open();
+ },
+ // 打开规则说明弹出层
+ closeRulePopup() {
+ this.$refs.rulePopup.close();
+ },
+ copyUrl() {
+ let text = this.$config.h5Domain + this.$util.INDEX_PAGE_URL;
+ if (this.memberInf && this.memberInfo.member_id) text += '?source_member=' + this.memberInfo.member_id;
+ this.$util.copy(text, () => {
+ this.closeSharePopup();
+ });
+ },
+ // 打开海报弹出层
+ openPosterPopup() {
+ this.getPoster();
+ this.$refs.sharePopup.close();
+ this.$refs.posterPopup.open();
+ },
+ // 关闭海报弹出层
+ closePosterPopup() {
+ this.$refs.posterPopup.close();
+ },
+ //生成海报
+ getPoster() {
+ //活动海报信息
+ let qrcode_param = {
+ source_member: this.memberInfo.member_id
+ };
+ this.$api.sendRequest({
+ url: "/memberrecommend/api/memberrecommend/poster",
+ data: {
+ page: this.$util.INDEX_PAGE_URL,
+ qrcode_param: JSON.stringify(qrcode_param)
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.poster = res.data.path + "?time=" + new Date().getTime();
+ } else {
+ this.posterMsg = res.message;
+ }
+ }
+ });
+ },
+ savePoster() {
+ let url = this.$util.img(this.poster);
+ uni.downloadFile({
+ url: url,
+ success: (res) => {
+ if (res.statusCode === 200) {
+ uni.saveImageToPhotosAlbum({
+ filePath: res.tempFilePath,
+ success: () => {
+ this.$util.showToast({
+ title: "保存成功"
+ });
+ },
+ fail: () => {
+ this.$util.showToast({
+ title: "保存失败,请稍后重试"
+ });
+ }
+ });
+ }
+ }
+ });
+ }
+ }
}
\ No newline at end of file
diff --git a/pages_tool/member/public/js/member-public.js b/pages_tool/member/public/js/member-public.js
index 2ecccbf..5a736b4 100644
--- a/pages_tool/member/public/js/member-public.js
+++ b/pages_tool/member/public/js/member-public.js
@@ -1,90 +1,90 @@
-export default {
- methods: {
- // 清除登录态(token / 用户信息 / 购物车 / 本地存储)
- clearLoginState() {
- this.$store.commit('setToken', '');
- this.$store.commit('setMemberInfo', '');
- this.$store.dispatch('emptyCart');
- uni.removeStorageSync('authInfo');
- uni.removeStorageSync('privacyAgreed');
- },
-
- // 退出登录
- logout() {
- uni.showModal({
- title: this.$lang('login.list.logout_title'),
- content: this.$lang('login.list.logout_content'),
- success: (res) => {
- if (res.confirm) {
- this.clearLoginState();
- this.$util.redirectTo(this.$util.LOGIN_PAGE_URL);
- }
- }
- });
- },
-
- // 账号注销入口:先查状态,根据状态分流
- cancellation() {
- this.getCancelStatus();
- },
-
- // 查询注销状态并跳转对应页面
- // status: undefined/null → 未申请 → 协议页 cancellation.vue
- // status: 0 → 审核中 → 状态页 cancelstatus.vue
- // status: 1 → 通过 → 成功页 cancelsuccess.vue
- // status: -1 → 拒绝 → 拒绝页 cancelrefuse.vue
- getCancelStatus() {
- this.$api.sendRequest({
- url: '/membercancel/api/membercancel/info',
- success: res => {
- if (res.code >= 0) {
- if (res.data) {
- if (res.data.status == 0) {
- this.$util.redirectTo('/pages_tool/member/cancelstatus');
- } else if (res.data.status == 1) {
- this.$util.redirectTo('/pages_tool/member/cancelsuccess');
- } else {
- this.$util.redirectTo('/pages_tool/member/cancelrefuse');
- }
- } else {
- this.$util.redirectTo('/pages_tool/member/cancellation');
- }
- } else if (res.code == -1) {
- this.clearLoginState();
- this.$util.redirectTo(this.$util.LOGIN_PAGE_URL);
- }
- }
- });
- },
-
- // 提交注销申请并清理登录态(供 assets.vue 等页面调用)
- submitCancelApply(options = {}) {
- uni.showModal({
- title: options.title || $lang('member.cancelstatus.l84'),
- content: options.content || $lang('member.public.js.member-public.l64.t0'),
- confirmColor: '#000000',
- success: res => {
- if (res.confirm) {
- this.$api.sendRequest({
- url: '/membercancel/api/membercancel/apply',
- success: rres => {
- if (rres.code >= 0) {
- if (options.clearStateAndRedirect) {
- this.clearLoginState();
- this.$util.redirectTo(this.$util.LOGIN_PAGE_URL);
- } else {
- this.$util.redirectTo('/pages_tool/member/cancelstatus');
- }
- } else {
- this.$util.showToast({
- title: rres.message
- });
- }
- }
- });
- }
- }
- });
- }
- }
-};
+export default {
+ methods: {
+ // 清除登录态(token / 用户信息 / 购物车 / 本地存储)
+ clearLoginState() {
+ this.$store.commit('setToken', '');
+ this.$store.commit('setMemberInfo', '');
+ this.$store.dispatch('emptyCart');
+ uni.removeStorageSync('authInfo');
+ uni.removeStorageSync('privacyAgreed');
+ },
+
+ // 退出登录
+ logout() {
+ uni.showModal({
+ title: this.$lang('logoutTitle'),
+ content: this.$lang('logoutContent'),
+ success: (res) => {
+ if (res.confirm) {
+ this.clearLoginState();
+ this.$util.redirectTo(this.$util.LOGIN_PAGE_URL);
+ }
+ }
+ });
+ },
+
+ // 账号注销入口:先查状态,根据状态分流
+ cancellation() {
+ this.getCancelStatus();
+ },
+
+ // 查询注销状态并跳转对应页面
+ // status: undefined/null → 未申请 → 协议页 cancellation.vue
+ // status: 0 → 审核中 → 状态页 cancelstatus.vue
+ // status: 1 → 通过 → 成功页 cancelsuccess.vue
+ // status: -1 → 拒绝 → 拒绝页 cancelrefuse.vue
+ getCancelStatus() {
+ this.$api.sendRequest({
+ url: '/membercancel/api/membercancel/info',
+ success: res => {
+ if (res.code >= 0) {
+ if (res.data) {
+ if (res.data.status == 0) {
+ this.$util.redirectTo('/pages_tool/member/cancelstatus');
+ } else if (res.data.status == 1) {
+ this.$util.redirectTo('/pages_tool/member/cancelsuccess');
+ } else {
+ this.$util.redirectTo('/pages_tool/member/cancelrefuse');
+ }
+ } else {
+ this.$util.redirectTo('/pages_tool/member/cancellation');
+ }
+ } else if (res.code == -1) {
+ this.clearLoginState();
+ this.$util.redirectTo(this.$util.LOGIN_PAGE_URL);
+ }
+ }
+ });
+ },
+
+ // 提交注销申请并清理登录态(供 assets.vue 等页面调用)
+ submitCancelApply(options = {}) {
+ uni.showModal({
+ title: options.title || '风险提示',
+ content: options.content || '确定要注销当前账号吗?',
+ confirmColor: '#000000',
+ success: res => {
+ if (res.confirm) {
+ this.$api.sendRequest({
+ url: '/membercancel/api/membercancel/apply',
+ success: rres => {
+ if (rres.code >= 0) {
+ if (options.clearStateAndRedirect) {
+ this.clearLoginState();
+ this.$util.redirectTo(this.$util.LOGIN_PAGE_URL);
+ } else {
+ this.$util.redirectTo('/pages_tool/member/cancelstatus');
+ }
+ } else {
+ this.$util.showToast({
+ title: rres.message
+ });
+ }
+ }
+ });
+ }
+ }
+ });
+ }
+ }
+};
diff --git a/pages_tool/member/public/js/signin.js b/pages_tool/member/public/js/signin.js
index 62cff91..94d2f11 100644
--- a/pages_tool/member/public/js/signin.js
+++ b/pages_tool/member/public/js/signin.js
@@ -1,276 +1,276 @@
-export default {
- data() {
- return {
- showSignDays: [], // 一共展示的天数
- rule: [{}],
- hasSign: 0, //今天是否签到
- signDaysSeries: 0, //连续签到次数
- MonthData: [], //本月日期信息
- signList: [],
- back: '', //返回页
- redirect: '', //返回方式
- successTip: {},
- startDate: null,
- endDate: null,
- isActive: "", //判断点击
- signState: 1,
- headimg: '',
- point: 0,
- growth: 0,
- signPoint: 0,
- signGrowth: 0,
- rewardRuleDay: [],
- cycle: 0,
- reward: {}
- };
- },
- onLoad(option) {
- setTimeout( () => {
- if (!this.addonIsExist.membersignin) {
- this.$util.showToast({
- title: $lang('member.public.js.signin.l31'),
- mask: true,
- duration: 2000
- });
- setTimeout(() => {
- this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
- }, 2000);
- }
- },1000);
-
- if (option.back) this.back = option.back;
- if (option.redirect) this.redirect = option.redirect;
-
- this.getSignState();
- },
- onShow() {
- if (!this.storeToken) {
- this.$nextTick(() => {
- this.$refs.login.open('/pages_tool/member/signin');
- });
- return;
- }
-
- this.headimg = this.memberInfo.headimg;
- this.signDaysSeries = this.memberInfo.sign_days_series;
-
- this.getSignPointData();
- this.getSignGrowthData();
- this.setPublicShare();
-
- this.getIsSign();
- },
- methods: {
- // 获取签到累积积分
- getSignPointData() {
- this.$api.sendRequest({
- url: '/api/memberaccount/sum',
- data: {
- account_type: 'point',
- from_type: 'signin'
- },
- success: res => {
- if (res.code == 0) {
- this.signPoint = res.data;
- }
- }
- });
- },
- // 获取签到累积成长值
- getSignGrowthData() {
- this.$api.sendRequest({
- url: '/api/memberaccount/sum',
- data: {
- account_type: 'growth',
- from_type: 'signin'
- },
- success: res => {
- if (res.code == 0) {
- this.signGrowth = res.data;
- }
- }
- });
- },
- // 签到是否开启
- getSignState() {
- this.$api.sendRequest({
- url: '/api/membersignin/getSignStatus',
- success: res => {
- if (res.code == 0) {
- this.signState = res.data.is_use;
- }
- }
- });
- },
- navigateBack() {
- if (this.back != '') {
- this.$util.redirectTo(this.back, {}, this.redirect);
- } else {
- this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
- }
- },
- //获取rule
- getRule() {
- this.rewardRuleDay = [];
- this.$api.sendRequest({
- url: '/api/membersignin/award',
- success: res => {
- if (res.code == 0) {
-
- this.cycle = res.data.cycle || 0;
- this.rule = res.data.reward || [];
- let default_point = 0;
- if (this.rule.length > 0) {
- this.rule.forEach((item, index) => {
- if (item.day == 1) {
- default_point = item.point;
- } else {
- this.rewardRuleDay.push(parseInt(item.day));
- this.reward[item.day] = item.point;
- }
- });
- }
- //展示7天
- var showSignDays = [];
- var start_day = 1;
- var end_day = 7;
- var total_day = res.data.cycle;
- if (this.signDaysSeries > 5) {
- start_day = this.signDaysSeries - 5;
- }
- if (total_day >= (this.signDaysSeries + 1)) {
- end_day = this.signDaysSeries + 1;
- }
- if (this.signDaysSeries <= 5) {
- end_day = 8 - start_day;
- }
-
- if ((end_day - start_day) < 7 && total_day >= start_day + 6) {
- end_day = start_day + 6;
- }
- if (total_day == this.signDaysSeries) {
- start_day = this.signDaysSeries - 6;
- end_day = this.signDaysSeries;
- }
-
- for (let i = 1; i <= res.data.cycle; i++) {
- if (i >= start_day && i <= end_day) {
- showSignDays.push({
- day: i,
- is_last: 0,
- point: default_point
- })
- }
- }
-
- if (showSignDays && showSignDays.length) {
- showSignDays[showSignDays.length - 1]['is_last'] = 1;
- }
-
- for (let i in showSignDays) {
- let item = showSignDays[i];
- if (this.$util.inArray(item.day, this.rewardRuleDay) != -1) {
- showSignDays[i]['point'] = parseInt(this.reward[item.day]) + parseInt(default_point);
- }
- }
-
- this.showSignDays = showSignDays;
- this.$refs.loadingCover.hide();
- }
- }
- });
- },
- //判断当前是否签到
- getIsSign() {
- this.$api.sendRequest({
- url: '/api/membersignin/issign',
- success: res => {
- if (res.code == 0) {
- this.hasSign = res.data;
- this.getRule();
- this.getSignPointData();
- this.getSignGrowthData();
- }
- }
- });
- },
- //签到
- sign() {
- if (this.signState == 0) {
- this.$util.showToast({
- title: $lang('member.public.js.signin.l201')
- })
- }
-
- if (!this.hasSign && this.signState == 1) {
- this.$api.sendRequest({
- url: '/api/membersignin/signin',
- success: res => {
- if (res.code == 0) {
- this.successTip = res.data;
- this.$refs.uniPopup.open()
- this.getRule();
- this.getSignPointData();
- this.getSignGrowthData();
- this.hasSign = 1;
- this.signDaysSeries = this.signDaysSeries + 1;
- } else {
- this.$util.showToast({
- title: res.message
- })
- }
- }
- });
- }
- },
- close() {
- this.$refs.uniPopup.close()
- },
- /**
- * 设置公众号分享
- */
- setPublicShare() {
- let shareUrl = this.$config.h5Domain + '/pages_tool/member/signin';
-
- this.$util.setPublicShare({
- title: $lang('member.public.js.signin.l236'),
- desc: $lang('member.public.js.signin.l237'),
- link: shareUrl,
- imgUrl: ''
- },
- res => {
- // console.log('公众号分享成功');
- // this.share();
- }
- );
- },
- },
- computed: {
- pointTomorrow: function() {
- var signDaysSeries = this.signDaysSeries + 1;
- var point = this.rule[0].point ? parseInt(this.rule[0].point) : 0;
- for (let i = 1; i < this.rule.length; i++) {
- let reward = this.rule[i];
- if (reward.day == signDaysSeries && reward.point) point += parseInt(reward.point);
- }
- return point;
- },
- showDay: function() {
- return parseInt(this.signDaysSeries / 7) * 7 + 1;
- }
- },
- /**
- * 自定义分享内容
- */
- onShareAppMessage() {
- var path = '/pages_tool/member/signin';
- return {
- title: $lang('member.public.js.signin.l268'),
- imageUrl: '',
- path: path,
- success: res => {},
- fail: res => {},
- complete: res => {}
- };
- }
+export default {
+ data() {
+ return {
+ showSignDays: [], // 一共展示的天数
+ rule: [{}],
+ hasSign: 0, //今天是否签到
+ signDaysSeries: 0, //连续签到次数
+ MonthData: [], //本月日期信息
+ signList: [],
+ back: '', //返回页
+ redirect: '', //返回方式
+ successTip: {},
+ startDate: null,
+ endDate: null,
+ isActive: "", //判断点击
+ signState: 1,
+ headimg: '',
+ point: 0,
+ growth: 0,
+ signPoint: 0,
+ signGrowth: 0,
+ rewardRuleDay: [],
+ cycle: 0,
+ reward: {}
+ };
+ },
+ onLoad(option) {
+ setTimeout( () => {
+ if (!this.addonIsExist.membersignin) {
+ this.$util.showToast({
+ title: '商家未开启会员签到',
+ mask: true,
+ duration: 2000
+ });
+ setTimeout(() => {
+ this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
+ }, 2000);
+ }
+ },1000);
+
+ if (option.back) this.back = option.back;
+ if (option.redirect) this.redirect = option.redirect;
+
+ this.getSignState();
+ },
+ onShow() {
+ if (!this.storeToken) {
+ this.$nextTick(() => {
+ this.$refs.login.open('/pages_tool/member/signin');
+ });
+ return;
+ }
+
+ this.headimg = this.memberInfo.headimg;
+ this.signDaysSeries = this.memberInfo.sign_days_series;
+
+ this.getSignPointData();
+ this.getSignGrowthData();
+ this.setPublicShare();
+
+ this.getIsSign();
+ },
+ methods: {
+ // 获取签到累积积分
+ getSignPointData() {
+ this.$api.sendRequest({
+ url: '/api/memberaccount/sum',
+ data: {
+ account_type: 'point',
+ from_type: 'signin'
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.signPoint = res.data;
+ }
+ }
+ });
+ },
+ // 获取签到累积成长值
+ getSignGrowthData() {
+ this.$api.sendRequest({
+ url: '/api/memberaccount/sum',
+ data: {
+ account_type: 'growth',
+ from_type: 'signin'
+ },
+ success: res => {
+ if (res.code == 0) {
+ this.signGrowth = res.data;
+ }
+ }
+ });
+ },
+ // 签到是否开启
+ getSignState() {
+ this.$api.sendRequest({
+ url: '/api/membersignin/getSignStatus',
+ success: res => {
+ if (res.code == 0) {
+ this.signState = res.data.is_use;
+ }
+ }
+ });
+ },
+ navigateBack() {
+ if (this.back != '') {
+ this.$util.redirectTo(this.back, {}, this.redirect);
+ } else {
+ this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
+ }
+ },
+ //获取rule
+ getRule() {
+ this.rewardRuleDay = [];
+ this.$api.sendRequest({
+ url: '/api/membersignin/award',
+ success: res => {
+ if (res.code == 0) {
+
+ this.cycle = res.data.cycle || 0;
+ this.rule = res.data.reward || [];
+ let default_point = 0;
+ if (this.rule.length > 0) {
+ this.rule.forEach((item, index) => {
+ if (item.day == 1) {
+ default_point = item.point;
+ } else {
+ this.rewardRuleDay.push(parseInt(item.day));
+ this.reward[item.day] = item.point;
+ }
+ });
+ }
+ //展示7天
+ var showSignDays = [];
+ var start_day = 1;
+ var end_day = 7;
+ var total_day = res.data.cycle;
+ if (this.signDaysSeries > 5) {
+ start_day = this.signDaysSeries - 5;
+ }
+ if (total_day >= (this.signDaysSeries + 1)) {
+ end_day = this.signDaysSeries + 1;
+ }
+ if (this.signDaysSeries <= 5) {
+ end_day = 8 - start_day;
+ }
+
+ if ((end_day - start_day) < 7 && total_day >= start_day + 6) {
+ end_day = start_day + 6;
+ }
+ if (total_day == this.signDaysSeries) {
+ start_day = this.signDaysSeries - 6;
+ end_day = this.signDaysSeries;
+ }
+
+ for (let i = 1; i <= res.data.cycle; i++) {
+ if (i >= start_day && i <= end_day) {
+ showSignDays.push({
+ day: i,
+ is_last: 0,
+ point: default_point
+ })
+ }
+ }
+
+ if (showSignDays && showSignDays.length) {
+ showSignDays[showSignDays.length - 1]['is_last'] = 1;
+ }
+
+ for (let i in showSignDays) {
+ let item = showSignDays[i];
+ if (this.$util.inArray(item.day, this.rewardRuleDay) != -1) {
+ showSignDays[i]['point'] = parseInt(this.reward[item.day]) + parseInt(default_point);
+ }
+ }
+
+ this.showSignDays = showSignDays;
+ this.$refs.loadingCover.hide();
+ }
+ }
+ });
+ },
+ //判断当前是否签到
+ getIsSign() {
+ this.$api.sendRequest({
+ url: '/api/membersignin/issign',
+ success: res => {
+ if (res.code == 0) {
+ this.hasSign = res.data;
+ this.getRule();
+ this.getSignPointData();
+ this.getSignGrowthData();
+ }
+ }
+ });
+ },
+ //签到
+ sign() {
+ if (this.signState == 0) {
+ this.$util.showToast({
+ title: '签到未开启'
+ })
+ }
+
+ if (!this.hasSign && this.signState == 1) {
+ this.$api.sendRequest({
+ url: '/api/membersignin/signin',
+ success: res => {
+ if (res.code == 0) {
+ this.successTip = res.data;
+ this.$refs.uniPopup.open()
+ this.getRule();
+ this.getSignPointData();
+ this.getSignGrowthData();
+ this.hasSign = 1;
+ this.signDaysSeries = this.signDaysSeries + 1;
+ } else {
+ this.$util.showToast({
+ title: res.message
+ })
+ }
+ }
+ });
+ }
+ },
+ close() {
+ this.$refs.uniPopup.close()
+ },
+ /**
+ * 设置公众号分享
+ */
+ setPublicShare() {
+ let shareUrl = this.$config.h5Domain + '/pages_tool/member/signin';
+
+ this.$util.setPublicShare({
+ title: '签到有礼',
+ desc: '天天签到,积分好礼送不停',
+ link: shareUrl,
+ imgUrl: ''
+ },
+ res => {
+ // console.log('公众号分享成功');
+ // this.share();
+ }
+ );
+ },
+ },
+ computed: {
+ pointTomorrow: function() {
+ var signDaysSeries = this.signDaysSeries + 1;
+ var point = this.rule[0].point ? parseInt(this.rule[0].point) : 0;
+ for (let i = 1; i < this.rule.length; i++) {
+ let reward = this.rule[i];
+ if (reward.day == signDaysSeries && reward.point) point += parseInt(reward.point);
+ }
+ return point;
+ },
+ showDay: function() {
+ return parseInt(this.signDaysSeries / 7) * 7 + 1;
+ }
+ },
+ /**
+ * 自定义分享内容
+ */
+ onShareAppMessage() {
+ var path = '/pages_tool/member/signin';
+ return {
+ title: '签到有礼,天天签到,积分好礼送不停',
+ imageUrl: '',
+ path: path,
+ success: res => {},
+ fail: res => {},
+ complete: res => {}
+ };
+ }
};
\ No newline at end of file
diff --git a/pages_tool/member/withdrawal.vue b/pages_tool/member/withdrawal.vue
index dc08d48..380d22e 100644
--- a/pages_tool/member/withdrawal.vue
+++ b/pages_tool/member/withdrawal.vue
@@ -1,171 +1,171 @@
-
-
-
-
-
-
-
-
-
- {{ item.transfer_type_name }}
-
- {{ $util.timeStampTurnTime(item.apply_time) }}
-
-
-
- ¥{{ item.apply_money }}
- {{ item.status_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {{ item.transfer_type_name }}
+
+ {{ $util.timeStampTurnTime(item.apply_time) }}
+
+
+
+ ¥{{ item.apply_money }}
+ {{ item.status_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/member/withdrawal_detail.vue b/pages_tool/member/withdrawal_detail.vue
index 9aafc4d..ab035de 100644
--- a/pages_tool/member/withdrawal_detail.vue
+++ b/pages_tool/member/withdrawal_detail.vue
@@ -1,131 +1,131 @@
-
-
-
- -{{ detail.apply_money }}
-
-
-
-
-
- {{ $lang("fenxiao.withdrawal_detail.l10") }}
- {{ detail.status_name }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l14") }}
- {{ detail.withdraw_no }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l18") }}
- ¥{{ detail.service_money }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l22") }}
- {{ $util.timeStampTurnTime(detail.apply_time) }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l26") }}
- {{ $util.timeStampTurnTime(detail.audit_time) }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l30") }}
- {{ detail.bank_name }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l34") }}
- {{ detail.account_number }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l38") }}
- {{ detail.refuse_reason }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l42") }}
- {{ detail.transfer_type_name }}
-
-
- {{ $lang("fenxiao.withdrawal_detail.l46") }}
- {{ $util.timeStampTurnTime(detail.payment_time) }}
-
-
-
-
-
-
-
-
-
-
+
+
+
+ -{{ detail.apply_money }}
+
+
+
+
+
+ 当前状态
+ {{ detail.status_name }}
+
+
+ 交易号
+ {{ detail.withdraw_no }}
+
+
+ 手续费
+ ¥{{ detail.service_money }}
+
+
+ 申请时间
+ {{ $util.timeStampTurnTime(detail.apply_time) }}
+
+
+ 审核时间
+ {{ $util.timeStampTurnTime(detail.audit_time) }}
+
+
+ 银行名称
+ {{ detail.bank_name }}
+
+
+ 收款账号
+ {{ detail.account_number }}
+
+
+ 拒绝理由
+ {{ detail.refuse_reason }}
+
+
+ 转账方式名称
+ {{ detail.transfer_type_name }}
+
+
+ 转账时间
+ {{ $util.timeStampTurnTime(detail.payment_time) }}
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/notice/detail.vue b/pages_tool/notice/detail.vue
index bcccdb2..a2b25a4 100644
--- a/pages_tool/notice/detail.vue
+++ b/pages_tool/notice/detail.vue
@@ -1,139 +1,139 @@
-
-
- {{ detail.title }}
-
- 发表时间: {{ $util.timeStampTurnTime(detail.create_time) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/notice/list.vue b/pages_tool/notice/list.vue
index cffb48e..91b484b 100644
--- a/pages_tool/notice/list.vue
+++ b/pages_tool/notice/list.vue
@@ -1,182 +1,182 @@
-
-
-
-
-
-
-
-
- {{ $lang("notice.list.l10") }}
- {{ item.title }}
-
- {{ $util.timeStampTurnTime(item.create_time, 1) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/order/activist.vue b/pages_tool/order/activist.vue
index 83e3bc1..3eb7fba 100644
--- a/pages_tool/order/activist.vue
+++ b/pages_tool/order/activist.vue
@@ -1,151 +1,151 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ item.sku_name }}
-
- {{ item.refund_status_name }}
-
- ¥{{ item.price }}
- ×{{ item.num }}
-
-
-
-
-
-
- { $lang("goods.cart.l8") } item.num }}件商品
- { $lang("tool.order.activist.l30.t0") } item.refund_status == 3 ? item.refund_real_money : item.refund_apply_money }}
-
-
- {{ $lang("order.list.l141") }}
-
-
- {{ actionItem.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.sku_name }}
+
+ {{ item.refund_status_name }}
+
+ ¥{{ item.price }}
+ ×{{ item.num }}
+
+
+
+
+
+
+ 共{{ item.num }}件商品
+ 退款:¥{{ item.refund_status == 3 ? item.refund_real_money : item.refund_apply_money }}
+
+
+ 查看详情
+
+
+ {{ actionItem.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/order/evaluate.vue b/pages_tool/order/evaluate.vue
index e89558f..6f0df14 100644
--- a/pages_tool/order/evaluate.vue
+++ b/pages_tool/order/evaluate.vue
@@ -13,7 +13,7 @@
- {{ $lang("tool.order.evaluate.l16.t0") }}
+ 描述相符
@@ -26,11 +26,11 @@
: ''
">
{{ $lang("tool.goods.evaluate.l82.t0") }}
+ v-if="goodsEvalList[index].explain_type == '1'">好评
{{ $lang("tool.goods.evaluate.l82.t1") }}
+ v-if="goodsEvalList[index].explain_type == '2'">中评
{{ $lang("tool.goods.evaluate.l82.t2") }}
+ v-if="goodsEvalList[index].explain_type == '3'">差评
@@ -39,12 +39,12 @@
-
{{ goodsEvalList[index].content.length }}/200
-
{{ goodsEvalList[index].again_content.length }}/200
@@ -69,9 +69,9 @@
- {{ $lang("tool.order.evaluate.l72.t0") }}
+ 匿名
- {{ $lang("diy.diy-form.l142.t0") }}
+ 提交
diff --git a/pages_tool/order/logistics.vue b/pages_tool/order/logistics.vue
index 411cd79..f4222ae 100644
--- a/pages_tool/order/logistics.vue
+++ b/pages_tool/order/logistics.vue
@@ -1,170 +1,170 @@
-
-
-
-
-
- {{ packageItem.package_name }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ goodsItem.sku_name }}
-
-
-
-
- {{ goodsItem.num }}
-
-
-
-
-
-
-
-
-
-
-
-
- 承运公司: {{ packageItem.express_company_name }}
-
-
-
- 运单号:
- {{ packageItem.delivery_no }}
-
-
-
-
-
-
-
-
-
-
-
- {{ traceItem.remark }}
- {{ traceItem.datetime }}
-
-
-
-
- {{ packageItem.trace.reason }}
-
-
- {{ packageItem.trace.reason }}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ {{ packageItem.package_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ goodsItem.sku_name }}
+
+
+
+
+ {{ goodsItem.num }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 承运公司: {{ packageItem.express_company_name }}
+
+
+
+ 运单号:
+ {{ packageItem.delivery_no }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ traceItem.remark }}
+ {{ traceItem.datetime }}
+
+
+
+
+ {{ packageItem.trace.reason }}
+
+
+ {{ packageItem.trace.reason }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/order/public/js/evaluate.js b/pages_tool/order/public/js/evaluate.js
index 7abfd00..c15a1f8 100644
--- a/pages_tool/order/public/js/evaluate.js
+++ b/pages_tool/order/public/js/evaluate.js
@@ -1,233 +1,233 @@
-export default {
- data() {
- return {
- orderId: null,
- orderNo: "",
- isAnonymous: 1, //是否匿名发布 1.匿名,0.公开
-
- goodsList: [], //订单列表
- goodsEvalList: [], //评价列表
-
- imgList: [],
- isEvaluate: 0, //判断是否为追评
-
- flag: false, //防止重复点击 ,
- evaluateConfig: {
- evaluate_audit: 1,
- evaluate_show: 0,
- evaluate_status: 1
- },
-
- isIphoneX: false //判断手机是否是iphoneX以上
- };
- },
- onLoad(options) {
- //接收订单号,订单是否是追评等信息
- options.order_id ? (this.orderId = options.order_id) : this.$util.redirectTo('/pages_order/list');
-
- this.isIphoneX = this.$util.uniappIsIPhoneX();
- if (!this.storeToken) {
- this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, {
- back: '/pages_tool/order/evaluate?order_id=' + this.orderId
- }, 'redirectTo');
- }
- this.getEvaluateConfig();
- this.getOrderInfo();
- },
- onShow() {
- //初始化重复点击
- this.flag = false;
- },
- methods: {
- //获取订单信息
- getOrderInfo() {
- //获取订单信息
- let data = {
- order_id: this.orderId
- };
- this.$api.sendRequest({
- url: '/api/order/evluateinfo',
- data: data,
- success: res => {
- if (res.code == 0) {
- this.isEvaluate = res.data.evaluate_status
- this.goodsList = res.data.list;
- if (this.goodsList.length) {
- this.orderNo = res.data.list[0].order_no;
- }
- if (this.isEvaluate) {
- for (let i = 0; i < res.data.list.length; i++) {
- let array = [];
- this.imgList.push(array)
- this.goodsEvalList.push({
- order_goods_id: res.data.list[i].order_goods_id,
- goods_id: res.data.list[i].goods_id,
- sku_id: res.data.list[i].sku_id,
- again_content: "",
- again_images: ""
- });
- }
- } else {
- for (let i = 0; i < res.data.list.length; i++) {
- let array = [];
- this.imgList.push(array)
- this.goodsEvalList.push({
- content: '', // 评价内容
- images: "", //图片数组
- scores: 5, // 评分
- explain_type: 1, // 评价类型
- order_goods_id: res.data.list[i].order_goods_id,
- goods_id: res.data.list[i].goods_id,
- sku_id: res.data.list[i].sku_id,
- sku_name: res.data.list[i].sku_name,
- sku_price: res.data.list[i].price,
- sku_image: res.data.list[i].sku_image
- });
- }
- }
- } else {
- this.$util.showToast({
- title: $lang("tool.order.public.js.evaluate.l90.t0")
- })
- setTimeout(() => {
- this.$util.redirectTo('/pages_order/list', {}, "redirectTo");
- }, 1000)
- }
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- },
- fail() {
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- }
- });
- },
- //监听评分变化
- setStar(e) {
- this.goodsEvalList[e.index].scores = e.value;
- if (e.value >= 4) {
- this.goodsEvalList[e.index].explain_type = 1;
- } else if (1 < e.value && e.value < 4) {
- this.goodsEvalList[e.index].explain_type = 2
- } else {
- this.goodsEvalList[e.index].explain_type = 3
- }
- },
- //切换,是否匿名
- isAll() {
- this.isAnonymous ? this.isAnonymous = 0 : this.isAnonymous = 1
- },
- //添加图片
- addImg(e) {
- let size = this.imgList[e].length ? this.imgList[e].length : 0
- this.$util.upload(6 - size, {
- path: 'evaluateimg'
- }, res => {
- let arr = this.imgList[e]
- arr = arr.concat(res);
- this.imgList[e] = [];
- this.$set(this.imgList, e, arr)
- if (this.isEvaluate) {
- this.goodsEvalList[e].again_images = this.imgList[e].toString()
- } else {
- this.goodsEvalList[e].images = this.imgList[e].toString()
- }
- });
- },
- //删除图片
- deleteImg(i, index, j) {
- this.imgList[index].splice(j, 1);
- if (this.isEvaluate) {
- this.goodsEvalList[index].again_images = this.imgList[index].toString()
- } else {
- this.goodsEvalList[index].images = this.imgList[index].toString()
- }
- },
- // 图片预览
- preview(i, j) {
- let urls = this.imgList[j];
- for (let k = 0; k < urls.length; k++) {
- urls[k] = this.$util.img(urls[k])
- }
- uni.previewImage({
- urls: urls,
- current: i
- });
- },
-
- //提交评价
- save() {
- if (this.evaluateConfig.evaluate_status == 0) {
- this.$util.showToast({
- title: $lang("tool.order.public.js.evaluate.l160.t0")
- });
- return;
- }
- for (let i = 0; i < this.goodsEvalList.length; i++) {
- if (this.isEvaluate) {
- if (!this.goodsEvalList[i].again_content.trim().length) {
- this.$util.showToast({
- title: $lang("tool.order.public.js.evaluate.l168.t0")
- });
- return;
- }
- } else {
- if (!this.goodsEvalList[i].content.trim().length) {
- this.$util.showToast({
- title: $lang("tool.order.public.js.evaluate.l168.t0")
- });
- return;
- }
- }
- }
- let goodsEvaluate = JSON.stringify(this.goodsEvalList)
- let data = {
- order_id: this.orderId,
- goods_evaluate: goodsEvaluate,
- };
- if (!this.isEvaluate) {
- data.order_no = this.orderNo;
- data.member_name = this.memberInfo.nickname;
- data.member_headimg = this.memberInfo.headimg;
- data.is_anonymous = this.isAnonymous;
- }
- if (this.flag) return;
- this.flag = true;
- this.$api.sendRequest({
- url: this.isEvaluate ? '/api/goodsevaluate/again' : '/api/goodsevaluate/add',
- data: data,
- success: res => {
- if (res.code == 0) {
- this.$util.showToast({
- title: $lang("tool.order.public.js.evaluate.l200.t0")
- });
- setTimeout(() => {
- this.$util.redirectTo('/pages_order/list', {}, "redirectTo");
- }, 1000);
- } else {
- this.$util.showToast({
- title: res.message
- });
- this.flag = false;
- }
- },
- fail: res => {
- this.flag = false;
- }
- });
- },
- imageError(index) {
- this.goodsList[index].sku_image = this.$util.getDefaultImage().goods;
- this.$forceUpdate();
- },
- getEvaluateConfig() {
- this.$api.sendRequest({
- url: '/api/goodsevaluate/config',
- success: res => {
- if (res.code == 0) {
- var data = res.data;
- this.evaluateConfig = data;
- }
- }
- });
- }
- }
+export default {
+ data() {
+ return {
+ orderId: null,
+ orderNo: "",
+ isAnonymous: 1, //是否匿名发布 1.匿名,0.公开
+
+ goodsList: [], //订单列表
+ goodsEvalList: [], //评价列表
+
+ imgList: [],
+ isEvaluate: 0, //判断是否为追评
+
+ flag: false, //防止重复点击 ,
+ evaluateConfig: {
+ evaluate_audit: 1,
+ evaluate_show: 0,
+ evaluate_status: 1
+ },
+
+ isIphoneX: false //判断手机是否是iphoneX以上
+ };
+ },
+ onLoad(options) {
+ //接收订单号,订单是否是追评等信息
+ options.order_id ? (this.orderId = options.order_id) : this.$util.redirectTo('/pages_order/list');
+
+ this.isIphoneX = this.$util.uniappIsIPhoneX();
+ if (!this.storeToken) {
+ this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, {
+ back: '/pages_tool/order/evaluate?order_id=' + this.orderId
+ }, 'redirectTo');
+ }
+ this.getEvaluateConfig();
+ this.getOrderInfo();
+ },
+ onShow() {
+ //初始化重复点击
+ this.flag = false;
+ },
+ methods: {
+ //获取订单信息
+ getOrderInfo() {
+ //获取订单信息
+ let data = {
+ order_id: this.orderId
+ };
+ this.$api.sendRequest({
+ url: '/api/order/evluateinfo',
+ data: data,
+ success: res => {
+ if (res.code == 0) {
+ this.isEvaluate = res.data.evaluate_status
+ this.goodsList = res.data.list;
+ if (this.goodsList.length) {
+ this.orderNo = res.data.list[0].order_no;
+ }
+ if (this.isEvaluate) {
+ for (let i = 0; i < res.data.list.length; i++) {
+ let array = [];
+ this.imgList.push(array)
+ this.goodsEvalList.push({
+ order_goods_id: res.data.list[i].order_goods_id,
+ goods_id: res.data.list[i].goods_id,
+ sku_id: res.data.list[i].sku_id,
+ again_content: "",
+ again_images: ""
+ });
+ }
+ } else {
+ for (let i = 0; i < res.data.list.length; i++) {
+ let array = [];
+ this.imgList.push(array)
+ this.goodsEvalList.push({
+ content: '', // 评价内容
+ images: "", //图片数组
+ scores: 5, // 评分
+ explain_type: 1, // 评价类型
+ order_goods_id: res.data.list[i].order_goods_id,
+ goods_id: res.data.list[i].goods_id,
+ sku_id: res.data.list[i].sku_id,
+ sku_name: res.data.list[i].sku_name,
+ sku_price: res.data.list[i].price,
+ sku_image: res.data.list[i].sku_image
+ });
+ }
+ }
+ } else {
+ this.$util.showToast({
+ title: "未获取到订单数据"
+ })
+ setTimeout(() => {
+ this.$util.redirectTo('/pages_order/list', {}, "redirectTo");
+ }, 1000)
+ }
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+ },
+ fail() {
+ if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
+ }
+ });
+ },
+ //监听评分变化
+ setStar(e) {
+ this.goodsEvalList[e.index].scores = e.value;
+ if (e.value >= 4) {
+ this.goodsEvalList[e.index].explain_type = 1;
+ } else if (1 < e.value && e.value < 4) {
+ this.goodsEvalList[e.index].explain_type = 2
+ } else {
+ this.goodsEvalList[e.index].explain_type = 3
+ }
+ },
+ //切换,是否匿名
+ isAll() {
+ this.isAnonymous ? this.isAnonymous = 0 : this.isAnonymous = 1
+ },
+ //添加图片
+ addImg(e) {
+ let size = this.imgList[e].length ? this.imgList[e].length : 0
+ this.$util.upload(6 - size, {
+ path: 'evaluateimg'
+ }, res => {
+ let arr = this.imgList[e]
+ arr = arr.concat(res);
+ this.imgList[e] = [];
+ this.$set(this.imgList, e, arr)
+ if (this.isEvaluate) {
+ this.goodsEvalList[e].again_images = this.imgList[e].toString()
+ } else {
+ this.goodsEvalList[e].images = this.imgList[e].toString()
+ }
+ });
+ },
+ //删除图片
+ deleteImg(i, index, j) {
+ this.imgList[index].splice(j, 1);
+ if (this.isEvaluate) {
+ this.goodsEvalList[index].again_images = this.imgList[index].toString()
+ } else {
+ this.goodsEvalList[index].images = this.imgList[index].toString()
+ }
+ },
+ // 图片预览
+ preview(i, j) {
+ let urls = this.imgList[j];
+ for (let k = 0; k < urls.length; k++) {
+ urls[k] = this.$util.img(urls[k])
+ }
+ uni.previewImage({
+ urls: urls,
+ current: i
+ });
+ },
+
+ //提交评价
+ save() {
+ if (this.evaluateConfig.evaluate_status == 0) {
+ this.$util.showToast({
+ title: "商家未开启商品评价功能"
+ });
+ return;
+ }
+ for (let i = 0; i < this.goodsEvalList.length; i++) {
+ if (this.isEvaluate) {
+ if (!this.goodsEvalList[i].again_content.trim().length) {
+ this.$util.showToast({
+ title: "商品的评价不能为空哦"
+ });
+ return;
+ }
+ } else {
+ if (!this.goodsEvalList[i].content.trim().length) {
+ this.$util.showToast({
+ title: "商品的评价不能为空哦"
+ });
+ return;
+ }
+ }
+ }
+ let goodsEvaluate = JSON.stringify(this.goodsEvalList)
+ let data = {
+ order_id: this.orderId,
+ goods_evaluate: goodsEvaluate,
+ };
+ if (!this.isEvaluate) {
+ data.order_no = this.orderNo;
+ data.member_name = this.memberInfo.nickname;
+ data.member_headimg = this.memberInfo.headimg;
+ data.is_anonymous = this.isAnonymous;
+ }
+ if (this.flag) return;
+ this.flag = true;
+ this.$api.sendRequest({
+ url: this.isEvaluate ? '/api/goodsevaluate/again' : '/api/goodsevaluate/add',
+ data: data,
+ success: res => {
+ if (res.code == 0) {
+ this.$util.showToast({
+ title: "评价成功"
+ });
+ setTimeout(() => {
+ this.$util.redirectTo('/pages_order/list', {}, "redirectTo");
+ }, 1000);
+ } else {
+ this.$util.showToast({
+ title: res.message
+ });
+ this.flag = false;
+ }
+ },
+ fail: res => {
+ this.flag = false;
+ }
+ });
+ },
+ imageError(index) {
+ this.goodsList[index].sku_image = this.$util.getDefaultImage().goods;
+ this.$forceUpdate();
+ },
+ getEvaluateConfig() {
+ this.$api.sendRequest({
+ url: '/api/goodsevaluate/config',
+ success: res => {
+ if (res.code == 0) {
+ var data = res.data;
+ this.evaluateConfig = data;
+ }
+ }
+ });
+ }
+ }
};
\ No newline at end of file
diff --git a/pages_tool/order/public/js/refundMethod.js b/pages_tool/order/public/js/refundMethod.js
index f11d84d..2feb464 100644
--- a/pages_tool/order/public/js/refundMethod.js
+++ b/pages_tool/order/public/js/refundMethod.js
@@ -1,30 +1,30 @@
-export default {
- methods: {
- /**
- * 撤销退款申请
- * @param {Object} order_goods_id
- * @param {Object} callback
- */
- cancleRefund(order_goods_id, callback) {
- uni.showModal({
- content: $lang('order.public.js.refund_method.l10'),
- cancelText: $lang('order.public.js.refund_method.l11'),
- cancelColor: '#898989',
- success: res => {
- if (res.confirm) {
- this.$api.sendRequest({
- url: '/api/orderrefund/cancel',
- data: {
- order_goods_id
- },
- success: res => {
- typeof callback == 'function' && callback(res);
- }
- })
- }
- }
- })
- },
-
- }
-}
+export default {
+ methods: {
+ /**
+ * 撤销退款申请
+ * @param {Object} order_goods_id
+ * @param {Object} callback
+ */
+ cancleRefund(order_goods_id, callback) {
+ uni.showModal({
+ content: '撤销之后本次申请将会关闭,如后续仍有问题可再次发起申请。',
+ cancelText: '暂不撤销',
+ cancelColor: '#898989',
+ success: res => {
+ if (res.confirm) {
+ this.$api.sendRequest({
+ url: '/api/orderrefund/cancel',
+ data: {
+ order_goods_id
+ },
+ success: res => {
+ typeof callback == 'function' && callback(res);
+ }
+ })
+ }
+ }
+ })
+ },
+
+ }
+}
diff --git a/pages_tool/order/refund.vue b/pages_tool/order/refund.vue
index e6acf10..d81cb38 100644
--- a/pages_tool/order/refund.vue
+++ b/pages_tool/order/refund.vue
@@ -1,300 +1,300 @@
-
-
-
-
-
-
-
-
-
- {{ refund_data.order_goods_info.sku_name }}
-
-
-
-
-
-
- {{ $lang("tool.order.refund.l17.t0") }}
- {{ $lang("tool.order.refund.l18.t0") }}
-
-
-
-
-
- {{ $lang("tool.order.refund.l24.t0") }}
- {{ $lang("tool.order.refund.l25.t0") }}
-
-
-
-
-
-
-
-
- {{ $lang("tool.order.refund.l34.t0") }}
-
- {{ $lang("common.ns-form.l37.t0") }}
- {{ refund_reason }}
-
-
-
-
- {{ $lang("tool.order.refund.l42.t0") }}
- {{ $lang('common.currency_symbol') }}{{ refund_data.refund_money }}
-
-
-
-
- {{ $lang("tool.order.refund.l48.t0") }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.submit') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {{ refund_data.order_goods_info.sku_name }}
+
+
+
+
+
+
+ 退款无需退货
+ 没收到货,或与卖家协商同意无需退货只退款
+
+
+
+
+
+ 退货退款
+ 已收到货,需退还收到的货物
+
+
+
+
+
+
+
+
+ 退款原因:
+
+ 请选择
+ {{ refund_reason }}
+
+
+
+
+ 退款金额:
+ {{ $lang('common.currencySymbol') }}{{ refund_data.refund_money }}
+
+
+
+
+ 退款说明
+
+
+
+
+
+
+
+
+
+
+
+ {{ $lang('common.submit') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/order/refund_batch.vue b/pages_tool/order/refund_batch.vue
index dc0ed52..e745b94 100644
--- a/pages_tool/order/refund_batch.vue
+++ b/pages_tool/order/refund_batch.vue
@@ -1,306 +1,306 @@
-
-
-
-
-
-
-
-
-
- {{ item.sku_name }}
-
-
-
-
-
-
-
- {{ $lang("tool.order.refund.l34.t0") }}
-
- {{ $lang("common.ns-form.l37.t0") }}
- {{ refund_reason }}
-
-
-
-
- {{ $lang("tool.order.refund_batch.l26.t0") }}
- {{ $lang("tool.order.refund.l17.t0") }}
- {{ $lang("tool.order.refund.l24.t0") }}
-
-
- {{ $lang("tool.order.refund.l42.t0") }}
- {{ $lang('common.currency_symbol') }}{{ refund_data.refund_money }}
-
-
-
-
- {{ $lang("tool.order.refund.l48.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang('common.submit') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {{ item.sku_name }}
+
+
+
+
+
+
+
+ 退款原因:
+
+ 请选择
+ {{ refund_reason }}
+
+
+
+
+ 退款方式:
+ 退款无需退货
+ 退货退款
+
+
+ 退款金额:
+ {{ $lang('common.currencySymbol') }}{{ refund_data.refund_money }}
+
+
+
+
+ 退款说明
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $lang('common.submit') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/order/refund_detail.vue b/pages_tool/order/refund_detail.vue
index f75b53b..eed0847 100644
--- a/pages_tool/order/refund_detail.vue
+++ b/pages_tool/order/refund_detail.vue
@@ -1,272 +1,272 @@
-
-
-
-
-
- {{ detail.refund_status_name }}
-
- {{ $lang("tool.order.refund_detail.l8.t0") }}
- {{ $lang("tool.order.refund_detail.l9.t0") }}
-
-
-
- {{ $lang("tool.order.refund_detail.l13.t0") }}
- {{ $lang("tool.order.refund_detail.l14.t0") }}
-
-
-
-
- {{ $lang("tool.order.refund_detail.l19.t0") }}
-
-
-
-
-
-
- { $lang("tool.order.refund_detail.l26.t0") } detail.shop_contacts }}
-
-
- { $lang("tool.order.refund_detail.l29.t0") } detail.shop_mobile }}
-
-
- { $lang("tool.order.refund_detail.l32.t0") } detail.shop_address }}
- {{ $lang("order.detail.l109") }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ detail.sku_name }}
-
-
-
-
- { $lang("tool.order.refund_batch.l26.t0") } detail.refund_type == 1 ? '仅退款' : $lang('tool.order.refund_detail.l51.t1') }}
- { $lang("tool.order.refund_detail.l52.t3") } detail.refund_money_type == 1 ? '原路退款' : detail.refund_money_type == 2 ? '线下退款' : $lang('tool.order.refund_detail.l52.t2') }}
- { $lang("tool.order.refund.l34.t0") } detail.refund_reason }}
- { $lang("tool.order.refund.l42.t0") } $lang('common.currency_symbol') }}{{ detail.refund_real_money }}
- { $lang("tool.order.refund.l42.t0") } $lang('common.currency_symbol') }}{{ detail.refund_apply_money }}
- { $lang("tool.order.refund_detail.l56.t0") } detail.refund_no }}
- { $lang("tool.order.refund_detail.l57.t0") } $util.timeStampTurnTime(detail.refund_action_time) }}
- { $lang("tool.order.refund_detail.l58.t0") } $util.timeStampTurnTime(detail.refund_time) }}
- { $lang("tool.order.refund_detail.l59.t0") } detail.refund_remark }}
- { $lang("tool.order.refund_detail.l60.t0") } detail.use_point }}
-
-
-
-
-
-
- {{ actionItem.title }}
-
-
-
-
-
-
-
-
- {{ $lang("tool.order.refund_detail.l76.t0") }}
-
-
-
-
-
- {{ $lang("tool.order.refund_detail.l88.t0") }}
-
-
-
-
-
- {{ $lang("tool.order.refund_detail.l100.t0") }}
-
-
-
-
-
- {{ $lang("diy.diy-form.l142.t0") }}
-
-
-
-
-
-
-
-
- {{ logItem.action_way == 1 ? '买家' : $lang('tool.order.refund_detail.l121.t1') }}
- {{ $util.timeStampTurnTime(logItem.action_time) }}
-
-
- {{ logItem.action }}
- {{ logItem.desc }}
-
-
-
-
-
-
-
- {{ $lang("tool.order.refund_detail.l139.t0") }}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ {{ detail.refund_status_name }}
+
+ 如果商家拒绝,你可重新发起申请
+ 如果商家同意,将通过申请并退款给你
+
+
+
+ 如果商家确认收货将会退款给你
+ 如果商家拒绝收货,该次退款将会关闭,你可以重新发起退款
+
+
+
+
+ 协商记录
+
+
+
+
+
+
+ 收货人:{{ detail.shop_contacts }}
+
+
+ 联系方式:{{ detail.shop_mobile }}
+
+
+ 退货地址:{{ detail.shop_address }}
+ 复制
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ detail.sku_name }}
+
+
+
+
+ 退款方式:{{ detail.refund_type == 1 ? '仅退款' : '退款退货' }}
+ 退款途径:{{ detail.refund_money_type == 1 ? '原路退款' : detail.refund_money_type == 2 ? '线下退款' : '退款到余额' }}
+ 退款原因:{{ detail.refund_reason }}
+ 退款金额:{{ $lang('common.currencySymbol') }}{{ detail.refund_real_money }}
+ 退款金额:{{ $lang('common.currencySymbol') }}{{ detail.refund_apply_money }}
+ 退款编号:{{ detail.refund_no }}
+ 申请时间:{{ $util.timeStampTurnTime(detail.refund_action_time) }}
+ 退款时间:{{ $util.timeStampTurnTime(detail.refund_time) }}
+ 退款说明:{{ detail.refund_remark }}
+ 退款积分:{{ detail.use_point }}
+
+
+
+
+
+
+ {{ actionItem.title }}
+
+
+
+
+
+
+
+
+ 物流公司
+
+
+
+
+
+ 物流单号
+
+
+
+
+
+ 物流说明
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+
+ {{ logItem.action_way == 1 ? '买家' : '卖家' }}
+ {{ $util.timeStampTurnTime(logItem.action_time) }}
+
+
+ {{ logItem.action }}
+ {{ logItem.desc }}
+
+
+
+
+
+
+
+ 返回详情
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/order/refund_goods_select.vue b/pages_tool/order/refund_goods_select.vue
index 77e9d77..8703c63 100644
--- a/pages_tool/order/refund_goods_select.vue
+++ b/pages_tool/order/refund_goods_select.vue
@@ -1,225 +1,225 @@
-
-
-
- 共{{refund_data.length}}件商品
-
-
-
-
-
-
-
-
-
-
- {{item.sku_name}}
-
-
-
-
-
-
-
-
-
- {{ $lang("member.cancellation.l15") }}
- {{ $lang("tool.order.refund_goods_select.l28.t0") }}
-
-
-
-
-
-
-
-
-
+
+
+
+ 共{{refund_data.length}}件商品
+
+
+
+
+
+
+
+
+
+
+ {{item.sku_name}}
+
+
+
+
+
+
+
+
+
+ 下一步
+ 请选择商品
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/order/refund_type_select.vue b/pages_tool/order/refund_type_select.vue
index 7fdb26c..50b62e9 100644
--- a/pages_tool/order/refund_type_select.vue
+++ b/pages_tool/order/refund_type_select.vue
@@ -1,116 +1,116 @@
-
-
-
-
-
-
- {{ $lang("tool.order.refund.l17.t0") }}
- {{ $lang("tool.order.refund.l18.t0") }}
-
-
-
-
-
- {{ $lang("tool.order.refund.l24.t0") }}
- {{ $lang("tool.order.refund.l25.t0") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages_tool/pay/cashier.vue b/pages_tool/pay/cashier.vue
index 113b4af..0846451 100644
--- a/pages_tool/pay/cashier.vue
+++ b/pages_tool/pay/cashier.vue
@@ -18,9 +18,9 @@
- {{ $lang("common.ns-payment.l39.t0") }}
+ 确认支付
- {{ $lang("tool.pay.cashier.l23.t0") }}
+ 店铺尚未配置支付方式!
@@ -40,12 +40,12 @@ export default {
// #ifdef H5
payTypeList: [
{
- name: $lang('common.ns-payment.l75.t0'),
+ name: '支付宝支付',
icon: 'icon-zhifubaozhifu-',
type: 'alipay'
},
{
- name: $lang('common.ns-payment.l80.t0'),
+ name: '微信支付',
icon: 'icon-weixin1',
type: 'wechatpay'
}
@@ -54,7 +54,7 @@ export default {
// #endif
// #ifdef MP-WEIXIN
payTypeList: [{
- name: $lang('common.ns-payment.l80.t0'),
+ name: '微信支付',
provider: 'wxpay',
icon: 'icon-weixin1',
type: 'wechatpay'
@@ -131,12 +131,12 @@ export default {
}
if (this.payTypeList.length == 0 && this.payInfo.pay_money > 0) {
this.$util.showToast({
- title: $lang('common.ns-payment.l161.t0')
+ title: '请选择支付方式!'
});
return;
}
uni.showLoading({
- title: $lang('common.ns-payment.l166.t0'),
+ title: '支付中...',
mask: true
});
this.pay();
@@ -265,7 +265,7 @@ export default {
fail: res => {
this.flag = false;
if (res.errMsg == 'requestPayment:fail cancel') {
- this.$util.showToast({ title: $lang('common.ns-payment.l298.t0') });
+ this.$util.showToast({ title: '您已取消支付' });
} else {
uni.showModal({ content: '支付失败,失败原因: ' + res.errMsg, showCancel: false });
}
diff --git a/pages_tool/pay/index.vue b/pages_tool/pay/index.vue
index bfc373f..8e63c97 100644
--- a/pages_tool/pay/index.vue
+++ b/pages_tool/pay/index.vue
@@ -1,143 +1,143 @@
-
-
-
-
- {{ $lang('order.list.payment_amount') }}
-
- {{ $lang('common.currency_symbol') }}
- {{ payInfo.pay_money }}
-
- {{ payInfo.pay_body }}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ {{ $lang('paymentAmount') }}
+
+ {{ $lang('common.currencySymbol') }}
+ {{ payInfo.pay_money }}
+
+ {{ payInfo.pay_body }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/pay/result.vue b/pages_tool/pay/result.vue
index 1da6d2e..53a1973 100644
--- a/pages_tool/pay/result.vue
+++ b/pages_tool/pay/result.vue
@@ -1,345 +1,345 @@
-
-
-
-
-
-
- {{ $lang('order.list.payment_success') }}
-
- {{ $lang('common.currency_symbol') }}
- {{ parseFloat(payInfo.pay_money).toFixed(2).split(".")[0] }}
- .{{ parseFloat(payInfo.pay_money).toFixed(2).split(".")[1] }}
-
-
-
-
- {{ $lang('order.list.payment_fail') }}
-
-
-
-
- {{ $lang("tool.pay.result.l21.t0") }}
-
-
-
-
- {{ consumeInfo.point_num }}
- {{ $lang("common.register-reward.l19.t0") }}
-
-
-
- {{ consumeInfo.growth_num }}
- {{ $lang("common.register-reward.l27.t0") }}
-
-
-
- {{ consumeInfo.coupon_list.length }}
- {{ $lang("tool.pay.result.l37.t0") }}
-
-
-
-
-
-
- {{ $lang("member.balance.l56") }}
- {{ $lang("order._components.common-payment.l393.t0") }}
- {{ $lang("tool.pay.result.l46.t0") }}
- {{ $lang("tool.pay.result.l46.t0") }}
- 查看订单
-
- {{ $lang("tool.pay.result.l46.t0") }}
-
- {{ $lang('common.empty.goHome') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_tool/pay/wx_pay.vue b/pages_tool/pay/wx_pay.vue
index a1892cf..298e4d2 100644
--- a/pages_tool/pay/wx_pay.vue
+++ b/pages_tool/pay/wx_pay.vue
@@ -3,7 +3,7 @@
- {{ $lang("tool.pay.wx_pay.l6.t0") }}
+ 点击右上角跳转到浏览器打开
-
-
+
+
+
+
+
+
+
+ 充值金额
+ 充值记录
+
+
+
+
+ ¥
+
+
+
+
+
+
+
+ {{ parseFloat(item.face_value).toFixed(0) }}
+ 元
+
+ 售价 {{ item.buy_price }} 元
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 请输入充值金额
+
+ {{keywordsInfo.price?keywordsInfo.price:'金额'}}元
+
+
+ 售价{{payMoney}}元
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+
+ 0
+
+
+
+
+ 确认充值
+
+
+
+
+
+
+
+ 充值
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/recharge/order_list.vue b/pages_tool/recharge/order_list.vue
index ab20fe4..e12aaf1 100644
--- a/pages_tool/recharge/order_list.vue
+++ b/pages_tool/recharge/order_list.vue
@@ -1,177 +1,177 @@
-
-
-
-
-
-
-
-
- {{ $lang("tool.recharge.order_list.l16.t0") }}
-
-
- ¥
- {{ orderItem.buy_price }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ 充值成功
+
+
+ ¥
+ {{ orderItem.buy_price }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages_tool/seal/medium/detail.vue b/pages_tool/seal/medium/detail.vue
index b9e0ef8..0437e56 100644
--- a/pages_tool/seal/medium/detail.vue
+++ b/pages_tool/seal/medium/detail.vue
@@ -1,199 +1,199 @@
-
-
-
-
- {{title}}
-
-
-
- {{item.text}}
- {{item.value}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/seal/medium/search.vue b/pages_tool/seal/medium/search.vue
index ac08bf3..cbc1dda 100644
--- a/pages_tool/seal/medium/search.vue
+++ b/pages_tool/seal/medium/search.vue
@@ -1,240 +1,240 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $lang("seal.medium.detail.l29") }}
-
-
-
-
- {{item.name}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/seal/structure.vue b/pages_tool/seal/structure.vue
index 943e68c..ecf1017 100644
--- a/pages_tool/seal/structure.vue
+++ b/pages_tool/seal/structure.vue
@@ -1,114 +1,114 @@
-
-
-
-
-
- { $lang("seal.structure.l6") }item.range[item.value].name || $lang('common.ns-form.l37.t0')}}
-
-
-
-
-
- {{ $lang("seal.structure.l12") }}{{answerName}}
-
-
-
-
-
-
-
-
-
-
- {{ $lang("seal.structure.l23") }}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages_tool/storeclose/storeclose.vue b/pages_tool/storeclose/storeclose.vue
index 3b63964..1dfb9b1 100644
--- a/pages_tool/storeclose/storeclose.vue
+++ b/pages_tool/storeclose/storeclose.vue
@@ -38,13 +38,13 @@ export default {
},
computed: {
textVal() {
- return $lang('tool.storeclose.l41.t0');
+ return '该店铺已打烊...';
},
pageVal() {
if (this.$store.state.siteState == -2) {
- return $lang('tool.storeclose.l45.t0');
+ return '店铺不存在';
} else if (this.$store.state.siteState == -3) {
- return $lang('tool.storeclose.l47.t0');
+ return '店铺打烊';
}
}
},
diff --git a/pages_tool/vr/index.vue b/pages_tool/vr/index.vue
index c79d884..e326e6a 100644
--- a/pages_tool/vr/index.vue
+++ b/pages_tool/vr/index.vue
@@ -3,9 +3,9 @@
-
+
diff --git a/pages_tool/weapp/order_shipping.vue b/pages_tool/weapp/order_shipping.vue
index 69884de..f63a3ad 100644
--- a/pages_tool/weapp/order_shipping.vue
+++ b/pages_tool/weapp/order_shipping.vue
@@ -1,48 +1,48 @@
-
-
- {{errorMsg}}
-
-
-
-
-
-
+
+
+ {{errorMsg}}
+
+
+
+
+
+
diff --git a/scripts/analyze_i18n_keys.py b/scripts/analyze_i18n_keys.py
deleted file mode 100644
index 1e022ef..0000000
--- a/scripts/analyze_i18n_keys.py
+++ /dev/null
@@ -1,172 +0,0 @@
-import re
-
-# 读取 zh-cn.js
-with open('lang/zh-cn.js', 'r', encoding='utf-8') as f:
- content = f.read()
-
-# 提取所有 "key": "value" 模式(考虑嵌套)
-# 先提取 lang 对象内部的内容
-match = re.search(r'export const lang = \{(.*?)\n\};', content, re.DOTALL)
-if not match:
- print("Cannot find lang object")
- exit(1)
-
-lang_body = match.group(1)
-
-# 提取所有 key-value 对
-pattern = r'"([^"]+)"\s*:\s*"([^"]*)"'
-matches = re.findall(pattern, lang_body)
-
-print(f'Total key-value pairs found: {len(matches)}')
-
-# 因为是嵌套结构,key 可能重复(不同层级),我们需要完整路径
-# 让我们用另一种方式:计算缩进层级来构建完整路径
-lines = lang_body.split('\n')
-stack = [] # 当前路径栈
-full_keys = {} # 完整路径 -> 值
-
-for line in lines:
- stripped = line.strip()
- if not stripped:
- continue
-
- # 计算缩进
- indent = len(line) - len(line.lstrip())
-
- # 计算当前层级 (每 4 个空格一级,或者根据 tab)
- level = indent // 4 + 1 # 假设最外层是第 1 级
-
- # 收缩栈到当前层级
- while len(stack) >= level:
- stack.pop()
-
- # 检查是否是对象 key
- obj_match = re.match(r'"([^"]+)"\s*:\s*\{', stripped)
- if obj_match:
- stack.append(obj_match.group(1))
- continue
-
- # 检查是否是字符串值
- val_match = re.match(r'"([^"]+)"\s*:\s*"([^"]*)"', stripped)
- if val_match:
- key = val_match.group(1)
- value = val_match.group(2)
- full_path = '.'.join(stack + [key])
- full_keys[full_path] = value
-
-print(f'Full-path keys: {len(full_keys)}')
-
-# 统计按一级命名空间分类
-namespaces = {}
-for k in full_keys.keys():
- ns = k.split('.')[0]
- namespaces[ns] = namespaces.get(ns, 0) + 1
-
-print('\n=== Namespace distribution ===')
-for ns, count in sorted(namespaces.items(), key=lambda x: -x[1]):
- print(f' {ns}: {count} keys')
-
-# 找包含 .l数字.t 的机器生成 key
-machine_keys = [k for k in full_keys.keys() if re.search(r'\.l\d+\.t\d+', k)]
-print(f'\n=== Machine-generated keys (lXX.tY pattern): {len(machine_keys)} ===')
-print(f' Percentage: {len(machine_keys)/len(full_keys)*100:.1f}%')
-
-# 常见词重复统计
-common_words = {
- '确定': [],
- '取消': [],
- '保存': [],
- '删除': [],
- '确认': [],
- '关闭': [],
- '加载中': [],
- '暂无相关数据': [],
- '去逛逛': [],
- '联系客服': [],
- '立即购买': [],
- '加入购物车': [],
- '搜索': [],
-}
-
-for k, v in full_keys.items():
- for word in common_words:
- if v == word:
- common_words[word].append(k)
-
-print('\n=== Common word duplicates ===')
-for word, keys in common_words.items():
- if len(keys) > 1:
- print(f' "{word}" -> {len(keys)} keys:')
- for k in keys[:8]:
- print(f' - {k}')
-
-# 同值不同 key 统计
-value_to_keys = {}
-for k, v in full_keys.items():
- if v and len(v) >= 2:
- if v not in value_to_keys:
- value_to_keys[v] = []
- value_to_keys[v].append(k)
-
-duplicate_values = {v: ks for v, ks in value_to_keys.items() if len(ks) > 1}
-print(f'\n=== Total same-translation-different-key: {len(duplicate_values)} ===')
-
-# Top 20 最多重复的翻译
-print('\n=== Top 20 most duplicated translations ===')
-sorted_dups = sorted(duplicate_values.items(), key=lambda x: -len(x[1]))[:20]
-for v, ks in sorted_dups:
- print(f' "{v}" ({len(ks)}x):')
- for k in ks[:6]:
- print(f' - {k}')
-
-# 读取 en-us.js 对比
-with open('lang/en-us.js', 'r', encoding='utf-8') as f:
- en_content = f.read()
-
-en_match = re.search(r'export const lang = \{(.*?)\n\};', en_content, re.DOTALL)
-if en_match:
- en_body = en_match.group(1)
- en_lines = en_body.split('\n')
- en_stack = []
- en_full_keys = {}
-
- for line in en_lines:
- stripped = line.strip()
- if not stripped:
- continue
- indent = len(line) - len(line.lstrip())
- level = indent // 4 + 1
-
- while len(en_stack) >= level:
- en_stack.pop()
-
- obj_match = re.match(r'"([^"]+)"\s*:\s*\{', stripped)
- if obj_match:
- en_stack.append(obj_match.group(1))
- continue
-
- val_match = re.match(r'"([^"]+)"\s*:\s*"([^"]*)"', stripped)
- if val_match:
- key = val_match.group(1)
- value = val_match.group(2)
- full_path = '.'.join(en_stack + [key])
- en_full_keys[full_path] = value
-
- print(f'\n=== en-us stats ===')
- print(f' Total keys: {len(en_full_keys)}')
- empty_en = sum(1 for v in en_full_keys.values() if not v)
- print(f' Empty translations: {empty_en} ({empty_en/len(en_full_keys)*100:.1f}%)')
-
-# 示例:语义不清的 key
-print('\n=== Example machine keys (semantic-less) ===')
-examples = machine_keys[:20]
-for k in examples:
- print(f' {k} -> "{full_keys[k]}"')
-
-# 扁平 key 列表
-flat_keys = [k for k in full_keys.keys() if k.count('.') == 2 and k.startswith('common.')]
-# 不对,应该找只有一级的
-top_level = [k for k in full_keys.keys() if '.' not in k]
-print(f'\n=== Top-level keys (no namespace): {len(top_level)} ===')
-for k in top_level[:30]:
- print(f' {k}: "{full_keys[k]}"')
diff --git a/scripts/analyze_modules.py b/scripts/analyze_modules.py
deleted file mode 100644
index ae15a8c..0000000
--- a/scripts/analyze_modules.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python3
-"""
-分析各业务模块的 key,生成迁移映射表
-"""
-import os
-import re
-import json
-
-PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-LANG_FILE = os.path.join(PROJECT_ROOT, 'lang', 'zh-cn.js')
-
-def parse_lang_file(filepath):
- with open(filepath, 'r', encoding='utf-8') as f:
- content = f.read()
- match = re.search(r'export const lang = \{(.*?)\n\};', content, re.DOTALL)
- if not match:
- return {}
- body = match.group(1)
- lines = body.split('\n')
- stack = []
- result = {}
- for line in lines:
- stripped = line.strip()
- if not stripped:
- continue
- indent = len(line) - len(line.lstrip())
- level = indent // 4 + 1
- while len(stack) >= level:
- stack.pop()
- obj_match = re.match(r'"([^"]+)"\s*:\s*\{', stripped)
- if obj_match:
- stack.append(obj_match.group(1))
- continue
- val_match = re.match(r'"([^"]+)"\s*:\s*"([^"]*)"', stripped)
- if val_match:
- key = val_match.group(1)
- value = val_match.group(2)
- full_path = '.'.join(stack + [key])
- result[full_path] = value
- return result
-
-def main():
- data = parse_lang_file(LANG_FILE)
-
- # 按一级命名空间分组
- groups = {}
- for k, v in data.items():
- parts = k.split('.')
- ns = parts[0]
- if ns not in groups:
- groups[ns] = []
- groups[ns].append((k, v))
-
- print("=" * 80)
- print("各业务模块 key 数量统计")
- print("=" * 80)
- for ns, items in sorted(groups.items(), key=lambda x: -len(x[1])):
- machine_count = sum(1 for k, v in items if re.search(r'\.l\d+\.t\d+', k))
- print(f"\n{ns}: {len(items)} 个 key (机器生成: {machine_count})")
- # 打印前 10 个示例
- for k, v in items[:10]:
- print(f" {k} -> \"{v}\"")
- if len(items) > 10:
- print(f" ... 还有 {len(items) - 10} 个")
-
- # 特别关注 goods 相关的
- print("\n" + "=" * 80)
- print("GOODS 相关 key 详情")
- print("=" * 80)
- goods_keys = [(k, v) for k, v in data.items() if k.startswith('goods') or 'goods' in k.lower()]
- print(f"共 {len(goods_keys)} 个 goods 相关 key")
- for k, v in goods_keys[:30]:
- print(f" {k} -> \"{v}\"")
-
-if __name__ == '__main__':
- main()
diff --git a/scripts/find_i18n_key.py b/scripts/find_i18n_key.py
deleted file mode 100644
index 509a22c..0000000
--- a/scripts/find_i18n_key.py
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/usr/bin/env python3
-"""
-i18n key 定位工具
-用法:
- python scripts/find_i18n_key.py # 按 key 搜索调用位置
- python scripts/find_i18n_key.py -v # 按翻译值反向搜索 key
- python scripts/find_i18n_key.py -f # 列出某文件中使用的所有 key
- python scripts/find_i18n_key.py --unused # 找出未被使用的 key
- python scripts/find_i18n_key.py --duplicate # 找出同翻译不同 key 的重复项
-"""
-
-import os
-import re
-import sys
-import json
-
-PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-LANG_FILE = os.path.join(PROJECT_ROOT, 'lang', 'zh-cn.js')
-
-SEARCH_DIRS = [
- 'common',
- 'components',
- 'components-diy',
- 'pages',
- 'pages_goods',
- 'pages_order',
- 'pages_promotion',
- 'pages_tool',
-]
-
-def parse_lang_file(filepath):
- """解析语言包文件,返回展平的 key-value 字典"""
- with open(filepath, 'r', encoding='utf-8') as f:
- content = f.read()
-
- match = re.search(r'export const lang = \{(.*?)\n\};', content, re.DOTALL)
- if not match:
- return {}
-
- body = match.group(1)
- lines = body.split('\n')
- stack = []
- result = {}
-
- for line in lines:
- stripped = line.strip()
- if not stripped:
- continue
- indent = len(line) - len(line.lstrip())
- level = indent // 4 + 1
-
- while len(stack) >= level:
- stack.pop()
-
- obj_match = re.match(r'"([^"]+)"\s*:\s*\{', stripped)
- if obj_match:
- stack.append(obj_match.group(1))
- continue
-
- val_match = re.match(r'"([^"]+)"\s*:\s*"([^"]*)"', stripped)
- if val_match:
- key = val_match.group(1)
- value = val_match.group(2)
- full_path = '.'.join(stack + [key])
- result[full_path] = value
-
- return result
-
-def find_key_usage(key_pattern):
- """搜索 key 在哪些文件中被使用"""
- pattern = re.compile(rf'\$lang\([\'"]({re.escape(key_pattern)})[\'"]')
- results = []
-
- for dirname in SEARCH_DIRS:
- dirpath = os.path.join(PROJECT_ROOT, dirname)
- if not os.path.isdir(dirpath):
- continue
- for root, dirs, files in os.walk(dirpath):
- for fname in files:
- if not fname.endswith(('.vue', '.js')):
- continue
- fpath = os.path.join(root, fname)
- try:
- with open(fpath, 'r', encoding='utf-8') as f:
- content = f.read()
- for i, line in enumerate(content.split('\n'), 1):
- if pattern.search(line):
- rel_path = os.path.relpath(fpath, PROJECT_ROOT)
- results.append((rel_path, i, line.strip()))
- except:
- pass
-
- return results
-
-def find_value_in_lang(value_substr, lang_data):
- """按翻译值反向搜索 key"""
- results = []
- for k, v in lang_data.items():
- if value_substr in v:
- results.append((k, v))
- return results
-
-def list_file_keys(filepath):
- """列出某个文件中使用的所有 $lang key"""
- full_path = os.path.join(PROJECT_ROOT, filepath)
- if not os.path.exists(full_path):
- print(f"文件不存在: {filepath}")
- return []
-
- pattern = re.compile(r'\$lang\([\'"]([^\'"]+)[\'"]')
- keys = []
- with open(full_path, 'r', encoding='utf-8') as f:
- for i, line in enumerate(f, 1):
- m = pattern.findall(line)
- for k in m:
- keys.append((k, i))
- return keys
-
-def find_all_used_keys():
- """找出所有被使用的 key"""
- pattern = re.compile(r'\$lang\([\'"]([^\'"]+)[\'"]')
- used = set()
-
- for dirname in SEARCH_DIRS:
- dirpath = os.path.join(PROJECT_ROOT, dirname)
- if not os.path.isdir(dirpath):
- continue
- for root, dirs, files in os.walk(dirpath):
- for fname in files:
- if not fname.endswith(('.vue', '.js')):
- continue
- fpath = os.path.join(root, fname)
- try:
- with open(fpath, 'r', encoding='utf-8') as f:
- content = f.read()
- matches = pattern.findall(content)
- used.update(matches)
- except:
- pass
- return used
-
-def find_duplicate_values(lang_data):
- """找出同翻译不同 key 的重复项"""
- value_to_keys = {}
- for k, v in lang_data.items():
- if v and len(v) >= 2:
- if v not in value_to_keys:
- value_to_keys[v] = []
- value_to_keys[v].append(k)
- return {v: ks for v, ks in value_to_keys.items() if len(ks) > 1}
-
-def main():
- if len(sys.argv) < 2:
- print(__doc__)
- return
-
- lang_data = parse_lang_file(LANG_FILE)
-
- if sys.argv[1] == '--unused':
- used = find_all_used_keys()
- all_keys = set(lang_data.keys())
- unused = all_keys - used
- print(f"总 key 数: {len(all_keys)}")
- print(f"被使用的 key 数: {len(used)}")
- print(f"未使用的 key 数: {len(unused)}")
- print("\n未使用的 key:")
- for k in sorted(unused)[:50]:
- print(f" {k} -> \"{lang_data.get(k, '')}\"")
- if len(unused) > 50:
- print(f" ... 还有 {len(unused) - 50} 个")
- return
-
- if sys.argv[1] == '--duplicate':
- dups = find_duplicate_values(lang_data)
- print(f"同翻译不同 key 的组数: {len(dups)}")
- print("\n重复最多的翻译 Top 20:")
- sorted_dups = sorted(dups.items(), key=lambda x: -len(x[1]))[:20]
- for v, ks in sorted_dups:
- print(f'\n "{v}" ({len(ks)} 个 key):')
- for k in ks[:8]:
- print(f" - {k}")
- return
-
- if sys.argv[1] == '-f' and len(sys.argv) > 2:
- filepath = sys.argv[2]
- keys = list_file_keys(filepath)
- print(f"文件 {filepath} 中使用的 key ({len(keys)} 个):")
- for k, line in keys:
- val = lang_data.get(k, '【未找到】')
- print(f" L{line}: {k} -> \"{val}\"")
- return
-
- if sys.argv[1] == '-v' and len(sys.argv) > 2:
- value = sys.argv[2]
- results = find_value_in_lang(value, lang_data)
- print(f"包含 \"{value}\" 的翻译 ({len(results)} 个):")
- for k, v in results[:30]:
- print(f" {k} -> \"{v}\"")
- if len(results) > 30:
- print(f" ... 还有 {len(results) - 30} 个")
- return
-
- # 默认:按 key 搜索
- key = sys.argv[1]
- usages = find_key_usage(key)
- print(f'搜索 key: "{key}"')
- print(f"找到 {len(usages)} 处使用:")
- for fpath, line, content in usages[:30]:
- print(f" {fpath}:{line} {content[:80]}")
- if len(usages) > 30:
- print(f" ... 还有 {len(usages) - 30} 处")
-
-if __name__ == '__main__':
- main()
diff --git a/scripts/i18n_audit.py b/scripts/i18n_audit.py
deleted file mode 100644
index b2b8efe..0000000
--- a/scripts/i18n_audit.py
+++ /dev/null
@@ -1,160 +0,0 @@
-"""
-i18n audit script - scans lang/ for duplicate keys + cross-references with call sites.
-Run: python scripts/i18n_audit.py
-"""
-import os
-import re
-from collections import defaultdict
-from pathlib import Path
-
-ROOT = Path(__file__).resolve().parent.parent
-# 自 2026-06-24 起:lang 包按业务域拆分到 lang//.js
-# 运行时同时加载旧单文件 (lang/.js) 和新多文件 (lang//index.js)
-# 所以审计也要同时扫两边,否则会漏掉 60%+ 的 key
-LANG_FILES = [ROOT / 'lang' / 'en-us.js', ROOT / 'lang' / 'zh-cn.js']
-LANG_DIRS = [ROOT / 'lang' / 'en-us', ROOT / 'lang' / 'zh-cn']
-# 跳过 lang/ 目录下的子目录扫描(已经被 LANG_DIRS 覆盖)
-SKIP_LANG_SUBPATHS = True
-SRC_GLOBS = ['**/*.vue', '**/*.js']
-
-KEY_RE = re.compile(r'^\s*([A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*)\s*[:=]')
-CALL_RE = re.compile(r'\$lang\(\s*[\'"]([^\'"]+)[\'"]')
-LANG_CALL_RE = re.compile(r'\$lang\(|\$t\(')
-
-def walk_files(files):
- """扫所有 lang 源:旧单文件 + 新多文件聚合目录(lang//.js)
- 跳过 index.js 本身(它是聚合入口,导入的内容已被各模块文件覆盖)"""
- out = []
- for f in files:
- if f.exists():
- out.append(f)
- for d in LANG_DIRS:
- if not d.exists():
- continue
- for f in sorted(d.glob('*.js')):
- # 跳过聚合入口,避免重复扫描(聚合内容 = 各模块 spread)
- if f.name == 'index.js':
- continue
- out.append(f)
- return out
-
-def defined_keys(files):
- """Returns (per_file_keys, all_keys_set, in_file_dup, cross_file_dup).
- Properly tracks nesting via indentation so 'common.activist' vs 'login.activist' are distinct keys."""
- per_file = {}
- in_file_dup = defaultdict(list)
- key_to_files = defaultdict(set)
-
- for f in files:
- seen = set()
- text = f.read_text(encoding='utf-8', errors='ignore')
- indent_stack = [(-1, '')]
- for ln in text.splitlines():
- if ln.strip().startswith('//'):
- continue
- if not ln.strip():
- continue
- indent = len(ln) - len(ln.lstrip())
- stripped = ln.lstrip()
- m = re.match(r"""^['\"]?([A-Za-z_][A-Za-z0-9_]*)['\"]?\s*[:=]\s*(.*)$""", stripped)
- if not m:
- continue
- key, rest = m.group(1), m.group(2).strip().rstrip(',')
- while len(indent_stack) > 1 and indent_stack[-1][0] >= indent:
- indent_stack.pop()
- parent = indent_stack[-1][1]
- full_key = f'{parent}.{key}' if parent else key
- if rest.endswith('{'):
- indent_stack.append((indent, full_key))
- if rest.endswith('{'):
- continue # 不把 object 容器当 key
- if full_key in seen:
- in_file_dup[str(f)].append(full_key)
- seen.add(full_key)
- key_to_files[full_key].add(str(f.relative_to(ROOT)))
- per_file[str(f.relative_to(ROOT))] = seen
-
- cross = {k: sorted(v) for k, v in key_to_files.items() if len(v) > 1}
- return per_file, set(key_to_files.keys()), in_file_dup, cross
-
-
-def called_keys():
- used = set()
- for f in ROOT.rglob('*'):
- if not f.is_file():
- continue
- if not (str(f).endswith('.vue') or str(f).endswith('.js')):
- continue
- # 跳过整个 lang 目录(lang 文件不是调用方;它们的 key 在别处被消费)
- if 'lang' in f.parts:
- continue
- if 'node_modules' in f.parts or 'unpackage' in f.parts:
- continue
- try:
- text = f.read_text(encoding='utf-8')
- except UnicodeDecodeError:
- continue
- if not LANG_CALL_RE.search(text):
- continue
- for m in CALL_RE.finditer(text):
- used.add(m.group(1))
- return used
-
-
-def main():
- files = walk_files(LANG_FILES)
- print(f'Lang files scanned: {len(files)} (旧单文件 + 新多文件模块目录)')
- print(f' - 旧单文件: lang/en-us.js + lang/zh-cn.js')
- print(f' - 新多文件: lang//.js × {len(LANG_DIRS)} 个目录')
-
- per_file, all_keys, in_file_dup, cross_dup = defined_keys(files)
- used = called_keys()
-
- print(f'\n=== Aggregate ===')
- print(f' Defined keys (unique paths): {len(all_keys)}')
- print(f' Called keys (unique paths): {len(used)}')
-
- orphans_called = used - all_keys
- orphans_defined = all_keys - used
- print(f' Called but not defined (orphan calls): {len(orphans_called)}')
- print(f' Defined but not called (dead keys): {len(orphans_defined)}')
-
- print(f'\n=== In-file duplicates (top 30) ===')
- flat = []
- for f, ks in in_file_dup.items():
- for k in ks:
- flat.append((f, k))
- for f, k in flat[:30]:
- print(f' {f}: {k}')
-
- print(f'\n=== Cross-file duplicates (defined in N files, top 40) ===')
- cross_sorted = sorted(cross_dup.items(), key=lambda x: -len(x[1]))
- for k, fs in cross_sorted[:40]:
- print(f' {k} <- {len(fs)} files: {", ".join(fs[:3])}{" ..." if len(fs)>3 else ""}')
- print(f'\n TOTAL cross-file duplicate keys: {len(cross_dup)}')
-
- print('\n=== Orphan call keys (top 30 of %d) ===' % len(orphans_called))
- for k in sorted(orphans_called)[:30]:
- print(f' {k}')
-
- print('\n=== Dead defined keys (top 30 of %d) ===' % len(orphans_defined))
- for k in sorted(orphans_defined)[:30]:
- print(f' {k}')
-
- # Write machine-readable output
- out = ROOT / 'docs' / 'i18n-audit.json'
- out.parent.mkdir(exist_ok=True)
- import json
- out.write_text(json.dumps({
- 'defined_count': len(all_keys),
- 'called_count': len(used),
- 'orphan_calls': sorted(orphans_called),
- 'dead_keys': sorted(orphans_defined),
- 'in_file_dup': {f: ks for f, ks in in_file_dup.items()},
- 'cross_file_dup': cross_dup,
- }, ensure_ascii=False, indent=2), encoding='utf-8')
- print(f'\nFull report -> {out.relative_to(ROOT)}')
-
-
-if __name__ == '__main__':
- main()
\ No newline at end of file
diff --git a/scripts/i18n_build_zhcn.py b/scripts/i18n_build_zhcn.py
deleted file mode 100644
index 6fc80c6..0000000
--- a/scripts/i18n_build_zhcn.py
+++ /dev/null
@@ -1,169 +0,0 @@
-"""
-i18n_build_zhcn.py - 用真实中文 (docs/i18n-real-zh.json) 重建 lang/zh-cn.js
-
-- key -> 真实中文 (来自 f258987 .vue 硬编码)
-- 保留现有 pageTitles (用户说 pageTitles 用现在值即可)
-- en-us 端留空 stub 保持对称
-"""
-import re
-import json
-import sys
-from pathlib import Path
-from collections import defaultdict
-
-ROOT = Path(__file__).resolve().parent.parent
-EN_FILE = ROOT / 'lang' / 'en-us.js'
-ZH_FILE = ROOT / 'lang' / 'zh-cn.js'
-REAL_ZH = ROOT / 'docs' / 'i18n-real-zh.json'
-EXISTING_ZH = ROOT / 'docs' / 'i18n-existing-zh.json'
-
-
-def parse_existing_keys(path):
- """读现有 lang/.js 的所有 key -> value 映射"""
- if not path.exists():
- return {}
- text = path.read_bytes().decode('utf-8', errors='ignore')
- out = {}
- indent_stack = [(-1, '')]
- for ln in text.split('\n'):
- if ln.strip().startswith('//') or not ln.strip(): continue
- indent = len(ln) - len(ln.lstrip())
- m = re.match(r"""^['\"]?([A-Za-z_][A-Za-z0-9_.]*)['\"]?\s*:\s*(.*)$""", ln.lstrip())
- if not m: continue
- key, rest = m.group(1), m.group(2).strip().rstrip(',')
- while len(indent_stack) > 1 and indent_stack[-1][0] >= indent: indent_stack.pop()
- parent = indent_stack[-1][1]
- full_key = f'{parent}.{key}' if parent else key
- if rest.endswith('{'): indent_stack.append((indent, full_key)); continue
- v = rest
- if (v.startswith('"') and v.endswith('"')) or (v.startswith("'") and v.endswith("'")):
- if len(v) >= 2: v = v[1:-1]
- out[full_key] = v
- return out
-
-
-def write_lang(path, d, locale):
- """写带双引号 key 的 lang/.js, UTF-8"""
- grouped = defaultdict(dict)
- top_level = {}
- for k, v in d.items():
- parts = k.split('.')
- if len(parts) == 1:
- top_level[k] = v
- else:
- ns = parts[0]
- sub = '.'.join(parts[1:])
- grouped[ns][sub] = v
-
- lines = [
- f'// Auto-generated by i18n_build_zhcn.py',
- f'// Single authoritative lang source. Do not edit manually.',
- f'// locale: {locale}',
- f'// Generated: 2026-06-23',
- '',
- 'export const lang = {',
- ]
- written = set()
- nested_ns = {'pageTitles', 'common', 'tabBar', 'customer'}
- for ns in sorted(set(grouped.keys()) | set(top_level.keys())):
- if ns in nested_ns and ns in grouped:
- lines.append(f'\t"{ns}": {{')
- for sub_k in sorted(grouped[ns].keys()):
- sub_v = grouped[ns][sub_k]
- escaped = sub_v.replace('\\', '\\\\').replace('"', '\\"')
- lines.append(f'\t\t"{sub_k}": "{escaped}",')
- lines.append('\t},')
- written.add(ns)
- for ns in sorted(grouped.keys()):
- if ns in written: continue
- lines.append(f'\t"{ns}": {{')
- for sub_k in sorted(grouped[ns].keys()):
- sub_v = grouped[ns][sub_k]
- escaped = sub_v.replace('\\', '\\\\').replace('"', '\\"')
- lines.append(f'\t\t"{sub_k}": "{escaped}",')
- lines.append('\t},')
- written.add(ns)
- for k in sorted(top_level.keys()):
- if k in written: continue
- v = top_level[k]
- escaped = v.replace('\\', '\\\\').replace('"', '\\"')
- lines.append(f'\t"{k}": "{escaped}",')
-
- lines.append('};')
- lines.append('')
- content = '\n'.join(lines)
- path.write_bytes(content.encode('utf-8'))
-
-
-def main():
- # 1. 真实中文 (从 f258987 .vue 硬编码提取)
- real_zh = json.loads(REAL_ZH.read_text(encoding='utf-8'))
- print(f'真实中文: {len(real_zh)} 条')
-
- # 2. 现有 pageTitles 保留 (用户要求)
- # 解析当前 zh-cn.js, 取 pageTitles 部分
- current_zh = parse_existing_keys(ZH_FILE)
- page_titles = {k: v for k, v in current_zh.items() if k.startswith('pageTitles.')}
- print(f'pageTitles 保留: {len(page_titles)} 条')
-
- # 3. 现有 en-us 端英文 (用作 en-us 基础, 保留已有的英文翻译)
- current_en = parse_existing_keys(EN_FILE)
- print(f'现有 en-us keys: {len(current_en)}')
-
- # 4. 构造新的 zh-cn
- new_zh = {}
- # 先 pageTitles
- for k, v in page_titles.items():
- new_zh[k] = v
- # 再真实中文 (新 key) - 来自 f258987 硬编码
- for text, new_key in real_zh.items():
- new_zh[new_key] = text
- # 再补充: f258987 时 .vue 已有的 $lang 调用 (key 直接用原始 key)
- if EXISTING_ZH.exists():
- existing = json.loads(EXISTING_ZH.read_text(encoding='utf-8'))
- for k, v in existing.items():
- if k not in new_zh:
- new_zh[k] = v
- print(f'已补 {len(existing)} 个 f258987 已有的 $lang 值')
- # 保留现有 zh-cn 里非 pageTitles 的 key
- for k, v in current_zh.items():
- if k.startswith('pageTitles.'): continue
- if k not in new_zh:
- new_zh[k] = v
- print(f'new zh-cn keys: {len(new_zh)}')
-
- # 5. 构造新的 en-us: 保留已有, 缺中文对应的留空
- new_en = {}
- for k, v in current_en.items():
- if k.startswith('pageTitles.'): continue
- new_en[k] = v
- # 真实中文对应的 key, 英文侧: 优先保留已有, 缺则空
- for new_key in real_zh.values():
- if new_key not in new_en:
- new_en[new_key] = ''
- # 已有 $lang 对应的 key 留空 (中文侧已有, en 端缺)
- if EXISTING_ZH.exists():
- existing = json.loads(EXISTING_ZH.read_text(encoding='utf-8'))
- for k in existing.keys():
- if k not in new_en:
- new_en[k] = ''
- # pageTitles 保留
- for k, v in page_titles.items():
- new_en[k] = v
- print(f'new en-us keys: {len(new_en)}')
-
- # 6. 写
- apply = '--apply' in sys.argv
- if not apply:
- print('\n[DRY-RUN] 加 --apply 真写文件')
- return 0
-
- write_lang(ZH_FILE, new_zh, 'zh-cn')
- print(f'[OK] {ZH_FILE.relative_to(ROOT)}: {len(new_zh)} keys')
- write_lang(EN_FILE, new_en, 'en-us')
- print(f'[OK] {EN_FILE.relative_to(ROOT)}: {len(new_en)} keys')
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
\ No newline at end of file
diff --git a/scripts/i18n_check.bat b/scripts/i18n_check.bat
deleted file mode 100644
index c2ba872..0000000
--- a/scripts/i18n_check.bat
+++ /dev/null
@@ -1,17 +0,0 @@
-@echo off
-REM i18n_check.bat - Windows 一键审计(等价于 npm run i18n:check)
-
-setlocal
-
-cd /d "%~dp0\.."
-python scripts\i18n_check.py %*
-
-if %ERRORLEVEL% NEQ 0 (
- echo.
- echo [FAIL] i18n audits failed - see docs\i18n-*-audit.json
- exit /b 1
-)
-
-echo.
-echo [OK] i18n audits passed
-exit /b 0
\ No newline at end of file
diff --git a/scripts/i18n_check.py b/scripts/i18n_check.py
deleted file mode 100644
index 864bb56..0000000
--- a/scripts/i18n_check.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env python3
-"""
-i18n_check.py - i18n 审计一键入口
-
-用法:
- python scripts/i18n_check.py # 全部审计(audit + strict + class_c)
- python scripts/i18n_check.py basic # 只跑基础 audit
- python scripts/i18n_check.py strict # 跑 strict + class_c
- python scripts/i18n_check.py shadow # 只跑 class_c(page 覆盖 common)
- python scripts/i18n_check.py clean # 清理死 key(带 --apply 才会真删)
-
-退出码:
- 0 = 通过
- 非 0 = 失败
-
-设计为可以直接被 git hook / CI / 本地命令行任意调用。
-"""
-import sys
-import subprocess
-from pathlib import Path
-
-ROOT = Path(__file__).resolve().parent.parent
-
-SCRIPTS = {
- 'basic': 'scripts/i18n_audit.py',
- 'strict': 'scripts/i18n_strict_audit.py',
- 'shadow': 'scripts/i18n_class_c.py',
- 'symmetry': 'scripts/i18n_check_symmetry.py',
- 'naming': 'scripts/i18n_check_naming.py',
-}
-
-
-def run(script_name):
- """Run a python audit script, return its exit code"""
- script_path = ROOT / SCRIPTS[script_name]
- if not script_path.exists():
- print(f'[ERROR] {script_path} not found', file=sys.stderr)
- return 1
- print(f'\n>> Running {script_name}: {script_path.relative_to(ROOT)}')
- result = subprocess.run(
- ['python', str(script_path)],
- cwd=str(ROOT),
- )
- return result.returncode
-
-
-def main():
- args = sys.argv[1:]
- if not args or args[0] == 'all':
- # Run all audits
- rc = 0
- for name in ['basic', 'symmetry', 'strict', 'shadow', 'naming']:
- if run(name) != 0:
- rc = 1
- print()
- if rc == 0:
- print('[OK] All i18n audits passed')
- else:
- print('[FAIL] i18n audits reported issues - see docs/i18n-*-audit.json')
- return rc
-
- if args[0] in SCRIPTS:
- return run(args[0])
-
- print(__doc__)
- return 1
-
-
-if __name__ == '__main__':
- sys.exit(main())
\ No newline at end of file
diff --git a/scripts/i18n_check.sh b/scripts/i18n_check.sh
deleted file mode 100644
index 81a7da7..0000000
--- a/scripts/i18n_check.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-# i18n_check.sh - bash 一键审计(等价于 npm run i18n:check)
-set -e
-
-cd "$(dirname "$0")/.."
-python scripts/i18n_check.py "$@"
-
-if [ $? -ne 0 ]; then
- echo ""
- echo "[FAIL] i18n audits failed - see docs/i18n-*-audit.json"
- exit 1
-fi
-
-echo ""
-echo "[OK] i18n audits passed"
\ No newline at end of file
diff --git a/scripts/i18n_check_naming.py b/scripts/i18n_check_naming.py
deleted file mode 100644
index fc14fea..0000000
--- a/scripts/i18n_check_naming.py
+++ /dev/null
@@ -1,257 +0,0 @@
-#!/usr/bin/env python3
-"""
-i18n_check_naming.py - 检测 i18n key 命名规范违规
-
-检测 4 类问题:
-A. 中文 key(key 段是中文,违反 CLAUDE.md 1.2 铁律)
-B. 扁平 key(无业务域前缀,如 `save` / `buy`,违反 1.2)
-C. 行号式 locational key(如 `chat-message.l60.t0`,违反目标 4 长期维护)
-D. 跨业务域同名(不同业务域下定义相同语义路径,应收敛到 common)
-
-退出码:0 = 通过 / 非 0 = 有违规
-
-用法:
- python scripts/i18n_check_naming.py
- python scripts/i18n_check_naming.py --strict # 任何 1 个违规即返回非 0
-"""
-import re
-import sys
-import json
-from pathlib import Path
-from collections import defaultdict
-
-ROOT = Path(__file__).resolve().parent.parent
-
-# 同时扫旧单文件 + 新多文件
-LANG_FILES = [ROOT / 'lang' / 'en-us.js', ROOT / 'lang' / 'zh-cn.js']
-LANG_DIRS = [ROOT / 'lang' / 'en-us', ROOT / 'lang' / 'zh-cn']
-
-# 业务域白名单(一级 namespace)
-NAMESPACES = {
- 'common', 'tabBar', 'customer', 'goods', 'cart', 'order', 'pay',
- 'member', 'coupon', 'point', 'hongbao', 'fenxiao', 'merch',
- 'login', 'register', 'find', 'article', 'topics', 'notice', 'help',
- 'chat', 'ai_chat', 'verification', 'recharge', 'diy',
- 'bargain', 'pintuan', 'groupbuy', 'seckill', 'combo', 'presale', 'bale',
- 'seal', 'storeclose', 'store', 'index', 'mall', 'public', 'vr',
- 'pageTitles', 'title',
- # 历史命名空间(保留识别,不再推荐)
- 'img', 'photo', 'share', 'nav', 'tab',
-}
-
-# 已知特殊顶层 key(不需要业务域前缀的常量/函数名等)
-TOP_LEVEL_ALLOWLIST = {
- 'currencySymbol', 'defaultLang', 'langList',
- 'title', # 兼容旧的根 title key
-}
-
-# 检测中文 key 段(含中文的正则)
-CHINESE_RE = re.compile(r'[一-鿿]')
-
-# 检测行号式 locational key(如 chat-message.l60.t0 或 ns-goods-sku.l100.t0)
-LOCATIONAL_RE = re.compile(r'\.l\d+\.t\d+$')
-
-# 检测合理 snake_case 段(仅允许英文数字下划线)
-SNAKE_CASE_RE = re.compile(r'^[a-z][a-z0-9_]*$')
-
-
-def parse_lang_file(path):
- """解析 lang 文件,返回 [(full_key, value, line_no), ...],支持嵌套 + 中文 key"""
- items = []
- text = path.read_bytes().decode('utf-8', errors='ignore')
- stack = []
- indent_stack = [-1]
- for i, ln in enumerate(text.split('\n'), 1):
- stripped = ln.lstrip()
- if not stripped or stripped.startswith('//'):
- continue
- indent = len(ln) - len(stripped)
- while len(indent_stack) > 1 and indent <= indent_stack[-1]:
- indent_stack.pop()
- stack.pop()
- # 允许 key 含中文(含中文命名空间或纯中文 key 都需要检测出来)
- m = re.match(r"""^['\"]?([\w一-鿿][\w一-鿿\.]*)['\"]?\s*:\s*(.*)$""", stripped)
- if not m:
- continue
- key, rest = m.group(1), m.group(2).rstrip(',').rstrip()
- full_key = '.'.join(stack + [key]) if stack else key
- if rest.endswith('{'):
- stack.append(key)
- indent_stack.append(indent)
- items.append((full_key, '