feat(Sku): add stockThreshold prop (#4444)

This commit is contained in:
codpoe 2019-09-12 17:56:17 +08:00 committed by neverland
parent 927bf464bf
commit 54353f4210
5 changed files with 20 additions and 4 deletions

View File

@ -126,6 +126,7 @@ export default {
| hide-stock | Whether to hide stock | *boolean* | `false` | - | | hide-stock | Whether to hide stock | *boolean* | `false` | - |
| hide-quota-text | Whether to hide quota text | *boolean* | `false` | - | | hide-quota-text | Whether to hide quota text | *boolean* | `false` | - |
| hide-selected-text | Whether to hide selected text | *boolean* | `false` | - | | hide-selected-text | Whether to hide selected text | *boolean* | `false` | - |
| stock-threshold | stock threshold | *boolean* | `50` | - |
| show-add-cart-btn | Whether to show cart button | *boolean* | `true` | - | | show-add-cart-btn | Whether to show cart button | *boolean* | `true` | - |
| buy-text | Buy button text | *string* | - | - | - | | buy-text | Buy button text | *string* | - | - | - |
| add-cart-text | Add cart button text | *string* | - | - | - | | add-cart-text | Add cart button text | *string* | - | - | - |

View File

@ -128,6 +128,7 @@ export default {
| hide-stock | 是否显示商品剩余库存 | *boolean* | `false` | - | | hide-stock | 是否显示商品剩余库存 | *boolean* | `false` | - |
| hide-quota-text | 是否显示限购提示 | *boolean* | `false` | - | | hide-quota-text | 是否显示限购提示 | *boolean* | `false` | - |
| hide-selected-text | 是否隐藏已选提示 | *boolean* | `false` | - | | hide-selected-text | 是否隐藏已选提示 | *boolean* | `false` | - |
| stock-threshold | 库存阈值。低于这个值会把库存数高亮显示 | *boolean* | `50` | - |
| show-add-cart-btn | 是否显示加入购物车按钮 | *boolean* | `true` | - | | show-add-cart-btn | 是否显示加入购物车按钮 | *boolean* | `true` | - |
| buy-text | 购买按钮文字 | *string* | `立即购买` | - | | buy-text | 购买按钮文字 | *string* | `立即购买` | - |
| add-cart-text | 加入购物车按钮文字 | *string* | `加入购物车` | - | | add-cart-text | 加入购物车按钮文字 | *string* | `加入购物车` | - |

View File

@ -14,8 +14,7 @@ import { isAllSelected, isSkuChoosable, getSkuComb, getSelectedSkuValues } from
import { LIMIT_TYPE, UNSELECTED_SKU_VALUE_ID } from './constants'; import { LIMIT_TYPE, UNSELECTED_SKU_VALUE_ID } from './constants';
const namespace = createNamespace('sku'); const namespace = createNamespace('sku');
const createComponent = namespace[0]; const [createComponent, bem, t] = namespace;
const t = namespace[2];
const { QUOTA_LIMIT } = LIMIT_TYPE; const { QUOTA_LIMIT } = LIMIT_TYPE;
export default createComponent({ export default createComponent({
@ -50,6 +49,10 @@ export default createComponent({
type: Object, type: Object,
default: () => ({}) default: () => ({})
}, },
stockThreshold: {
type: Number,
default: 50,
},
showSoldoutSku: { showSoldoutSku: {
type: Boolean, type: Boolean,
default: true default: true
@ -224,7 +227,13 @@ export default createComponent({
const { stockFormatter } = this.customStepperConfig; const { stockFormatter } = this.customStepperConfig;
if (stockFormatter) return stockFormatter(this.stock); if (stockFormatter) return stockFormatter(this.stock);
return t('stock', this.stock); return [
`${t('stock')} `,
<span class={bem('stock-num', { highlight: this.stock < this.stockThreshold })}>
{this.stock}
</span>,
` ${t('stockUnit')}`
];
}, },
quotaText() { quotaText() {

View File

@ -213,6 +213,10 @@
margin-right: @padding-xs; margin-right: @padding-xs;
color: @gray-dark; color: @gray-dark;
font-size: @font-size-sm; font-size: @font-size-sm;
&-num--highlight {
color: @red;
}
} }
&__quota { &__quota {

View File

@ -12,7 +12,8 @@ export default {
originPrice: '原价', originPrice: '原价',
minusTip: '至少选择一件', minusTip: '至少选择一件',
unavailable: '商品已经无法购买啦', unavailable: '商品已经无法购买啦',
stock: (stock: number) => `剩余 ${stock}`, stock: '剩余',
stockUnit: '件',
quotaLimit: (quota: number) => `每人限购${quota}`, quotaLimit: (quota: number) => `每人限购${quota}`,
quotaCount: (count: number) => `你已购买${count}` quotaCount: (count: number) => `你已购买${count}`
}, },