[Improvement] Sku: support i18n (#439)

This commit is contained in:
neverland
2017-12-15 15:38:32 +08:00
committed by GitHub
parent 2db9b12816
commit f43b496333
13 changed files with 846 additions and 507 deletions
+513 -232
View File
@@ -1,236 +1,517 @@
/* eslint-disable */
var _global = {
"kdt_id": 55,
"user_id": 4674509,
"offline_id": 0,
"activity_alias": "",
"sku": {
"tree": [{
"k": "\u989c\u8272",
"k_id": "1",
"v": [{
"id": "30349",
"name": "\u5929\u84dd\u8272",
"imgUrl": "https:\/\/img.yzcdn.cn\/upload_files\/2017\/02\/21\/FjKTOxjVgnUuPmHJRdunvYky9OHP.jpg!100x100.jpg"
}],
"k_s": "s1",
"count": 2
}, {
"k": "\u5c3a\u5bf8",
"k_id": "2",
"v": [{
"id": "1193",
"name": "1"
}, {
"id": "1194",
"name": "2"
}],
"k_s": "s2",
"count": 2
}],
"list": [{
"id": 2259,
"price": 100,
"discount": 100,
"code": "",
"s1": "1215",
"s2": "1193",
"s3": "0",
"s4": "0",
"s5": "0",
"extend": null,
"kdt_id": 55,
"discount_price": 0,
"stock_num": 110,
"stock_mode": 0,
"is_sell": null,
"combin_sku": false,
"goods_id": 946755
}, {
"id": 2260,
"price": 100,
"discount": 100,
"code": "",
"s1": "1215",
"s2": "1194",
"s3": "0",
"s4": "0",
"s5": "0",
"extend": null,
"kdt_id": 55,
"discount_price": 0,
"stock_num": 0,
"stock_mode": 0,
"is_sell": null,
"combin_sku": false,
"goods_id": 946755
}, {
"id": 2257,
"price": 100,
"discount": 100,
"code": "",
"s1": "30349",
"s2": "1193",
"s3": "0",
"s4": "0",
"s5": "0",
"extend": null,
"kdt_id": 55,
"discount_price": 0,
"stock_num": 111,
"stock_mode": 0,
"is_sell": null,
"combin_sku": false,
"goods_id": 946755
}, {
"id": 2258,
"price": 100,
"discount": 100,
"code": "",
"s1": "30349",
"s2": "1194",
"s3": "0",
"s4": "0",
"s5": "0",
"extend": null,
"kdt_id": 55,
"discount_price": 0,
"stock_num": 6,
"stock_mode": 0,
"is_sell": null,
"combin_sku": false,
"goods_id": 946755
}],
"price": "1.00",
"stock_num": 227,
"collection_id": 2261,
"collection_price": 0,
"none_sku": false,
"sold_num": 0,
"min_price": "1.00",
"max_price": "1.00",
"messages": [{
"datetime": "0",
"disable_multiple": false,
"disable": false,
"multiple": "0",
"name": "\u7559\u8a001",
"disable_required": false,
"disable_edit_name": false,
"type": "text",
"disable_delete": false,
"disable_type": false,
"required": "1"
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"multiple": 0,
"name": "\u7559\u8a002",
"disable_required": false,
"disable_edit_name": false,
"type": "id_no",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"multiple": 0,
"name": "\u7559\u8a003",
"disable_required": false,
"disable_edit_name": false,
"type": "image",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"multiple": 1,
"name": "\u7559\u8a004",
"disable_required": false,
"disable_edit_name": false,
"type": "text",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u6570\u5b57",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "tel",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u90ae\u4ef6",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "email",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u65e5\u671f",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "date",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u65f6\u95f4\u542b\u65e5\u671f",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "time",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u65f6\u95f4",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "time",
"disable_delete": false,
"disable_type": false,
"required": 0
}],
"hide_stock": false
export default {
'zh-CN': {
kdt_id: 55,
user_id: 4674509,
offline_id: 0,
activity_alias: '',
sku: {
tree: [
{
k: '颜色',
k_id: '1',
v: [
{
id: '30349',
name: '天蓝色',
imgUrl:
'https://img.yzcdn.cn/upload_files/2017/02/21/FjKTOxjVgnUuPmHJRdunvYky9OHP.jpg!100x100.jpg'
}
],
k_s: 's1',
count: 2
},
{
k: '尺寸',
k_id: '2',
v: [
{
id: '1193',
name: '1'
},
{
id: '1194',
name: '2'
}
],
k_s: 's2',
count: 2
}
],
list: [
{
id: 2259,
price: 100,
discount: 100,
code: '',
s1: '1215',
s2: '1193',
s3: '0',
s4: '0',
s5: '0',
extend: null,
kdt_id: 55,
discount_price: 0,
stock_num: 110,
stock_mode: 0,
is_sell: null,
combin_sku: false,
goods_id: 946755
},
{
id: 2260,
price: 100,
discount: 100,
code: '',
s1: '1215',
s2: '1194',
s3: '0',
s4: '0',
s5: '0',
extend: null,
kdt_id: 55,
discount_price: 0,
stock_num: 0,
stock_mode: 0,
is_sell: null,
combin_sku: false,
goods_id: 946755
},
{
id: 2257,
price: 100,
discount: 100,
code: '',
s1: '30349',
s2: '1193',
s3: '0',
s4: '0',
s5: '0',
extend: null,
kdt_id: 55,
discount_price: 0,
stock_num: 111,
stock_mode: 0,
is_sell: null,
combin_sku: false,
goods_id: 946755
},
{
id: 2258,
price: 100,
discount: 100,
code: '',
s1: '30349',
s2: '1194',
s3: '0',
s4: '0',
s5: '0',
extend: null,
kdt_id: 55,
discount_price: 0,
stock_num: 6,
stock_mode: 0,
is_sell: null,
combin_sku: false,
goods_id: 946755
}
],
price: '1.00',
stock_num: 227,
collection_id: 2261,
collection_price: 0,
none_sku: false,
sold_num: 0,
min_price: '1.00',
max_price: '1.00',
messages: [
{
datetime: '0',
disable_multiple: false,
disable: false,
multiple: '0',
name: '留言1',
disable_required: false,
disable_edit_name: false,
type: 'text',
disable_delete: false,
disable_type: false,
required: '1'
},
{
datetime: '0',
disable_multiple: false,
disable: false,
multiple: 0,
name: '留言2',
disable_required: false,
disable_edit_name: false,
type: 'id_no',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
multiple: 0,
name: '留言3',
disable_required: false,
disable_edit_name: false,
type: 'image',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
multiple: 1,
name: '留言4',
disable_required: false,
disable_edit_name: false,
type: 'text',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: '数字',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'tel',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: '邮件',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'email',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: '日期',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'date',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: '时间含日期',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'time',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: '时间',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'time',
disable_delete: false,
disable_type: false,
required: 0
}
],
hide_stock: false
},
"goods_id": "946755",
"alias": "2oml0r0n5vytj",
"quota": 15,
"is_virtual": "0",
"quota_used": 0,
"goods_info": {
"title": "测试商品",
"picture": ["https:\/\/img.yzcdn.cn\/upload_files\/2017\/03\/16\/Fs_OMbSFPa183sBwvG_94llUYiLa.jpeg?imageView2\/2\/w\/100\/h\/100\/q\/75\/format\/jpg"],
"price": 1,
"origin": ""
goods_id: '946755',
alias: '2oml0r0n5vytj',
quota: 15,
is_virtual: '0',
quota_used: 0,
goods_info: {
title: '测试商品',
picture: 'https://img.yzcdn.cn/upload_files/2017/03/16/Fs_OMbSFPa183sBwvG_94llUYiLa.jpeg?imageView2/2/w/100/h/100/q/75/format/jpg',
price: 1,
origin: ''
}
},
'en-US': {
kdt_id: 55,
user_id: 4674509,
offline_id: 0,
activity_alias: '',
sku: {
tree: [
{
k: 'Color',
k_id: '1',
v: [
{
id: '30349',
name: 'Blue',
imgUrl:
'https://img.yzcdn.cn/upload_files/2017/02/21/FjKTOxjVgnUuPmHJRdunvYky9OHP.jpg!100x100.jpg'
}
],
k_s: 's1',
count: 2
},
{
k: 'Size',
k_id: '2',
v: [
{
id: '1193',
name: '1'
},
{
id: '1194',
name: '2'
}
],
k_s: 's2',
count: 2
}
],
list: [
{
id: 2259,
price: 100,
discount: 100,
code: '',
s1: '1215',
s2: '1193',
s3: '0',
s4: '0',
s5: '0',
extend: null,
kdt_id: 55,
discount_price: 0,
stock_num: 110,
stock_mode: 0,
is_sell: null,
combin_sku: false,
goods_id: 946755
},
{
id: 2260,
price: 100,
discount: 100,
code: '',
s1: '1215',
s2: '1194',
s3: '0',
s4: '0',
s5: '0',
extend: null,
kdt_id: 55,
discount_price: 0,
stock_num: 0,
stock_mode: 0,
is_sell: null,
combin_sku: false,
goods_id: 946755
},
{
id: 2257,
price: 100,
discount: 100,
code: '',
s1: '30349',
s2: '1193',
s3: '0',
s4: '0',
s5: '0',
extend: null,
kdt_id: 55,
discount_price: 0,
stock_num: 111,
stock_mode: 0,
is_sell: null,
combin_sku: false,
goods_id: 946755
},
{
id: 2258,
price: 100,
discount: 100,
code: '',
s1: '30349',
s2: '1194',
s3: '0',
s4: '0',
s5: '0',
extend: null,
kdt_id: 55,
discount_price: 0,
stock_num: 6,
stock_mode: 0,
is_sell: null,
combin_sku: false,
goods_id: 946755
}
],
price: '1.00',
stock_num: 227,
collection_id: 2261,
collection_price: 0,
none_sku: false,
sold_num: 0,
min_price: '1.00',
max_price: '1.00',
messages: [
{
datetime: '0',
disable_multiple: false,
disable: false,
multiple: '0',
name: 'Messsage 1',
disable_required: false,
disable_edit_name: false,
type: 'text',
disable_delete: false,
disable_type: false,
required: '1'
},
{
datetime: '0',
disable_multiple: false,
disable: false,
multiple: 0,
name: 'Messsage 2',
disable_required: false,
disable_edit_name: false,
type: 'id_no',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
multiple: 0,
name: 'Messsage 3',
disable_required: false,
disable_edit_name: false,
type: 'image',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
multiple: 1,
name: 'Messsage 4',
disable_required: false,
disable_edit_name: false,
type: 'text',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: 'Number',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'tel',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: 'Email',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'email',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: 'Date',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'date',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: 'Datetime',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'time',
disable_delete: false,
disable_type: false,
required: 0
},
{
datetime: '0',
disable_multiple: false,
disable: false,
name: 'Time',
multiple: 0,
disable_required: false,
disable_edit_name: false,
type: 'time',
disable_delete: false,
disable_type: false,
required: 0
}
],
hide_stock: false
},
goods_id: '946755',
alias: '2oml0r0n5vytj',
quota: 15,
is_virtual: '0',
quota_used: 0,
goods_info: {
title: 'Goods Name',
picture: 'https://img.yzcdn.cn/upload_files/2017/03/16/Fs_OMbSFPa183sBwvG_94llUYiLa.jpeg?imageView2/2/w/100/h/100/q/75/format/jpg',
price: 1,
origin: ''
}
}
};
export default _global;
+27 -34
View File
@@ -4,19 +4,19 @@
<div class="sku-container">
<van-sku
v-model="showBase"
:sku="sku"
:goods="goods"
:goodsId="goodsId"
:hideStock="sku.hide_stock"
:quota="quota"
:quotaUsed="quotaUsed"
:resetStepperOnHide="resetStepperOnHide"
:disableStepperInput="disableStepperInput"
:sku="$t('sku').sku"
:goods="$t('sku').goods_info"
:goodsId="$t('sku').goods_id"
:hideStock="$t('sku').sku.hide_stock"
:quota="$t('sku').quota"
:quotaUsed="$t('sku').quota_used"
:resetStepperOnHide="true"
:disableStepperInput="true"
@buy-clicked="handleBuyClicked"
@add-cart="handleAddCartClicked"
>
</van-sku>
<van-button type="primary" @click="showBase = true" block>基础用法</van-button>
<van-button type="primary" @click="showBase = true" block>{{ $t('basicUsage') }}</van-button>
</div>
</demo-block>
@@ -24,31 +24,28 @@
<div class="sku-container">
<van-sku
v-model="showCustomAction"
stepperTitle="我要买"
:sku="sku"
:goods="goods"
:goodsId="goodsId"
:hideStock="sku.hide_stock"
:stepperTitle="$t('stepperTitle')"
:sku="$t('sku').sku"
:goods="$t('sku').goods_info"
:goodsId="$t('sku').goods_id"
:hideStock="$t('sku').sku.hide_stock"
:showAddCartBtn="true"
:quota="quota"
:quotaUsed="quotaUsed"
:quota="$t('sku').quota"
:quotaUsed="$t('sku').quota_used"
:resetStepperOnHide="true"
:initialSku="initialSku"
@buy-clicked="handleBuyClicked"
@add-cart="handleAddCartClicked"
>
<!-- 隐藏sku messages -->
<template slot="sku-messages"></template>
<!-- 自定义sku actions -->
<template slot="sku-actions" slot-scope="props">
<div class="van-sku-actions">
<van-button bottomAction @click="handlePointClicked">积分兑换</van-button>
<!-- 直接触发sku内部事件通过内部事件执行handleBuyClicked回调 -->
<van-button type="primary" bottomAction @click="props.skuEventBus.$emit('sku:buy')">买买买</van-button>
<van-button bottomAction @click="handlePointClicked">{{ $t('button1') }}</van-button>
<van-button type="primary" bottomAction @click="props.skuEventBus.$emit('sku:buy')">{{ $t('button2') }}</van-button>
</div>
</template>
</van-sku>
<van-button type="primary" @click="showCustomAction = true" block>自定义sku actions</van-button>
<van-button type="primary" @click="showCustomAction = true" block>{{ $t('advancedUsage') }}</van-button>
</div>
</demo-block>
</demo-section>
@@ -57,16 +54,19 @@
<script>
import data from '../mock/sku';
const goods = data.goods_info;
goods.picture = goods.picture[0];
export default {
i18n: {
'zh-CN': {
sku: data['zh-CN'],
stepperTitle: '我要买',
button1: '积分兑换',
button2: '买买买'
},
'en-US': {
sku: data['en-US'],
stepperTitle: 'Stepper title',
button1: 'Button',
button2: 'Button'
}
},
@@ -74,13 +74,6 @@ export default {
return {
showBase: false,
showCustomAction: false,
sku: data.sku,
goods: goods,
goodsId: data.goods_id,
quota: data.quota,
quotaUsed: data.quota_used,
disableStepperInput: true,
resetStepperOnHide: true,
initialSku: {
s1: '30349',
s2: '1193'