fix: 去除大部分lodash依赖

This commit is contained in:
niunai 2017-09-16 21:46:39 +08:00
parent f9dde211e3
commit 485452cc97
5 changed files with 25 additions and 53 deletions

View File

@ -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') {

View File

@ -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
} }

View File

@ -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 }));
} }
} }
}; };

View File

@ -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

View File

@ -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];