mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
fix: 去除大部分lodash依赖
This commit is contained in:
parent
f9dde211e3
commit
485452cc97
@ -23,7 +23,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import isEmpty from 'lodash/isEmpty';
|
|
||||||
import Field from '../../field';
|
import Field from '../../field';
|
||||||
import CellGroup from '../../cell-group';
|
import CellGroup from '../../cell-group';
|
||||||
import validateEmail from 'zan-utils/validate/email';
|
import validateEmail from 'zan-utils/validate/email';
|
||||||
@ -117,7 +116,7 @@ export default {
|
|||||||
const value = values[i];
|
const value = values[i];
|
||||||
const message = this.internalMessages[i];
|
const message = this.internalMessages[i];
|
||||||
|
|
||||||
if (isEmpty(value)) {
|
if (value === '') {
|
||||||
// 必填字段的校验
|
// 必填字段的校验
|
||||||
if (message.required == '1') { // eslint-disable-line
|
if (message.required == '1') { // eslint-disable-line
|
||||||
if (message.type === 'image') {
|
if (message.type === 'image') {
|
||||||
|
@ -2,33 +2,15 @@
|
|||||||
<div class="van-sku-row">
|
<div class="van-sku-row">
|
||||||
<div class="van-sku-row__title">{{ skuRow.k }}:</div>
|
<div class="van-sku-row__title">{{ skuRow.k }}:</div>
|
||||||
<div class="van-sku-row__items">
|
<div class="van-sku-row__items">
|
||||||
<slot name="sku-row-items">
|
<slot></slot>
|
||||||
<van-sku-row-item
|
|
||||||
v-for="(skuValue, index) in skuRow.v"
|
|
||||||
:key="index"
|
|
||||||
:skuKeyStr="skuRow.k_s"
|
|
||||||
:skuValue="skuValue"
|
|
||||||
:skuEventBus="$attrs.skuEventBus"
|
|
||||||
:selectedSku="$attrs.selectedSku"
|
|
||||||
:skuList="$attrs.skuList">
|
|
||||||
</van-sku-row-item>
|
|
||||||
</slot>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import SkuRowItem from './SkuRowItem';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'van-sku-row',
|
name: 'van-sku-row',
|
||||||
|
|
||||||
inheritAttrs: false,
|
|
||||||
|
|
||||||
components: {
|
|
||||||
[SkuRowItem.name]: SkuRowItem
|
|
||||||
},
|
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
skuRow: Object
|
skuRow: Object
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import assign from 'lodash/assign';
|
|
||||||
import filter from 'lodash/filter';
|
|
||||||
import keys from 'lodash/keys';
|
|
||||||
import every from 'lodash/every';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'van-sku-row-item',
|
name: 'van-sku-row-item',
|
||||||
|
|
||||||
@ -29,12 +24,12 @@ export default {
|
|||||||
return this.skuValue.id === this.selectedSku[this.skuKeyStr];
|
return this.skuValue.id === this.selectedSku[this.skuKeyStr];
|
||||||
},
|
},
|
||||||
isChoosable() {
|
isChoosable() {
|
||||||
const matchedSku = assign({}, this.selectedSku, {
|
const matchedSku = Object.assign({}, this.selectedSku, {
|
||||||
[this.skuKeyStr]: this.skuValue.id
|
[this.skuKeyStr]: this.skuValue.id
|
||||||
});
|
});
|
||||||
const skusToCheck = filter(keys(matchedSku), skuKey => matchedSku[skuKey] !== '');
|
const skusToCheck = Object.keys(matchedSku).filter(skuKey => matchedSku[skuKey] !== '');
|
||||||
const filteredSku = filter(this.skuList, sku => {
|
const filteredSku = this.skuList.filter(sku => {
|
||||||
return every(skusToCheck, function(skuKey) {
|
return skusToCheck.every(skuKey => {
|
||||||
// 后端给的skuValue.id有时候是数字有时候是字符串,全等会匹配不上
|
// 后端给的skuValue.id有时候是数字有时候是字符串,全等会匹配不上
|
||||||
return matchedSku[skuKey] == sku[skuKey]; // eslint-disable-line
|
return matchedSku[skuKey] == sku[skuKey]; // eslint-disable-line
|
||||||
});
|
});
|
||||||
@ -47,7 +42,7 @@ export default {
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onSkuSelected() {
|
onSkuSelected() {
|
||||||
this.skuEventBus.$emit('sku:select', assign({}, this.skuValue, { skuKeyStr: this.skuKeyStr }));
|
this.skuEventBus.$emit('sku:select', Object.assign({}, this.skuValue, { skuKeyStr: this.skuKeyStr }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -14,15 +14,21 @@
|
|||||||
<div class="van-sku-body scroller" :style="bodyStyle">
|
<div class="van-sku-body scroller" :style="bodyStyle">
|
||||||
<slot name="sku-group" :selectedSku="selectedSku">
|
<slot name="sku-group" :selectedSku="selectedSku">
|
||||||
<div v-if="hasSku" class="van-sku-group-container">
|
<div v-if="hasSku" class="van-sku-group-container">
|
||||||
<div v-for="(skutreeItem, index) in skuTree"
|
<div v-for="(skuTreeItem, index) in skuTree"
|
||||||
class="van-sku-row-group"
|
class="van-sku-row-group"
|
||||||
:key="index">
|
:key="index">
|
||||||
<van-sku-row
|
<van-sku-row
|
||||||
v-bind="$attrs"
|
|
||||||
:skuEventBus="skuEventBus"
|
:skuEventBus="skuEventBus"
|
||||||
:skuRow="skutreeItem"
|
:skuRow="skuTreeItem">
|
||||||
:skuList="sku.list"
|
<van-sku-row-item
|
||||||
:selectedSku="selectedSku">
|
v-for="(skuValue, index) in skuTreeItem.v"
|
||||||
|
:key="index"
|
||||||
|
:skuKeyStr="skuTreeItem.k_s"
|
||||||
|
:skuValue="skuValue"
|
||||||
|
:skuEventBus="skuEventBus"
|
||||||
|
:selectedSku="selectedSku"
|
||||||
|
:skuList="sku.list">
|
||||||
|
</van-sku-row-item>
|
||||||
</van-sku-row>
|
</van-sku-row>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -67,6 +73,7 @@ import Popup from '../../popup';
|
|||||||
import Toast from '../../toast';
|
import Toast from '../../toast';
|
||||||
import SkuHeader from '../components/SkuHeader';
|
import SkuHeader from '../components/SkuHeader';
|
||||||
import SkuRow from '../components/SkuRow';
|
import SkuRow from '../components/SkuRow';
|
||||||
|
import SkuRowItem from '../components/SkuRowItem';
|
||||||
import SkuStepper from '../components/SkuStepper';
|
import SkuStepper from '../components/SkuStepper';
|
||||||
import SkuMessages from '../components/SkuMessages';
|
import SkuMessages from '../components/SkuMessages';
|
||||||
import SkuActions from '../components/SkuActions';
|
import SkuActions from '../components/SkuActions';
|
||||||
@ -82,6 +89,7 @@ export default {
|
|||||||
[Popup.name]: Popup,
|
[Popup.name]: Popup,
|
||||||
[SkuHeader.name]: SkuHeader,
|
[SkuHeader.name]: SkuHeader,
|
||||||
[SkuRow.name]: SkuRow,
|
[SkuRow.name]: SkuRow,
|
||||||
|
[SkuRowItem.name]: SkuRowItem,
|
||||||
[SkuStepper.name]: SkuStepper,
|
[SkuStepper.name]: SkuStepper,
|
||||||
[SkuMessages.name]: SkuMessages,
|
[SkuMessages.name]: SkuMessages,
|
||||||
[SkuActions.name]: SkuActions
|
[SkuActions.name]: SkuActions
|
||||||
|
@ -1,10 +1,4 @@
|
|||||||
import isArray from 'lodash/isArray';
|
|
||||||
import keys from 'lodash/keys';
|
|
||||||
import filter from 'lodash/filter';
|
|
||||||
import find from 'lodash/find';
|
import find from 'lodash/find';
|
||||||
import isObject from 'lodash/isObject';
|
|
||||||
import every from 'lodash/every';
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
normalize sku tree
|
normalize sku tree
|
||||||
|
|
||||||
@ -49,21 +43,15 @@ export const normalizeSkuTree = (skuTree) => {
|
|||||||
|
|
||||||
// 判断是否所有的sku都已经选中
|
// 判断是否所有的sku都已经选中
|
||||||
export const isAllSelected = (skuTree, selectedSku) => {
|
export const isAllSelected = (skuTree, selectedSku) => {
|
||||||
if (!isArray(skuTree)) {
|
// 筛选selectedSku对象中key值不为空的值
|
||||||
throw new Error('skuTree must be array');
|
const selected = Object.keys(selectedSku).filter(skuKeyStr => selectedSku[skuKeyStr] !== '');
|
||||||
}
|
|
||||||
if (!isObject(selectedSku)) {
|
|
||||||
throw new Error('selectedSku must be object');
|
|
||||||
}
|
|
||||||
|
|
||||||
const selected = filter(keys(selectedSku), skuKeyStr => selectedSku[skuKeyStr] !== '');
|
|
||||||
return skuTree.length === selected.length;
|
return skuTree.length === selected.length;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 根据已选择的sku获取skuComb
|
// 根据已选择的sku获取skuComb
|
||||||
export const getSkuComb = (skuList, selectedSku) => {
|
export const getSkuComb = (skuList, selectedSku) => {
|
||||||
const skuComb = find(skuList, (skuComb) => {
|
const skuComb = find(skuList, skuComb => {
|
||||||
return every(keys(selectedSku), skuKeyStr => {
|
return Object.keys(selectedSku).every(skuKeyStr => {
|
||||||
// 后端给的key有时数字有时字符串,需要兼容=。=
|
// 后端给的key有时数字有时字符串,需要兼容=。=
|
||||||
return skuComb[skuKeyStr] == selectedSku[skuKeyStr]; // eslint-disable-line
|
return skuComb[skuKeyStr] == selectedSku[skuKeyStr]; // eslint-disable-line
|
||||||
});
|
});
|
||||||
@ -74,7 +62,7 @@ export const getSkuComb = (skuList, selectedSku) => {
|
|||||||
// 获取已选择的sku名称
|
// 获取已选择的sku名称
|
||||||
export const getSelectedSkuValues = (skuTree, selectedSku) => {
|
export const getSelectedSkuValues = (skuTree, selectedSku) => {
|
||||||
const normalizedTree = normalizeSkuTree(skuTree);
|
const normalizedTree = normalizeSkuTree(skuTree);
|
||||||
return keys(selectedSku).reduce((selectedValues, skuKeyStr) => {
|
return Object.keys(selectedSku).reduce((selectedValues, skuKeyStr) => {
|
||||||
const skuValues = normalizedTree[skuKeyStr];
|
const skuValues = normalizedTree[skuKeyStr];
|
||||||
const skuValueId = selectedSku[skuKeyStr];
|
const skuValueId = selectedSku[skuKeyStr];
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user