...
|
...
|
@@ -9,10 +9,6 @@ |
|
|
<Input v-model.trim="filters.prodCode.model"
|
|
|
:placeholder="filters.prodCode.holder"></Input>
|
|
|
</FilterItem>
|
|
|
<FilterItem :label="filters.prodCode.label">
|
|
|
<Input v-model.trim="filters.prodCode.model"
|
|
|
:placeholder="filters.prodCode.holder"></Input>
|
|
|
</FilterItem>
|
|
|
<FilterItem :label="filters.prodName.label">
|
|
|
<Input v-model.trim="filters.prodName.model"
|
|
|
:placeholder="filters.prodName.holder"></Input>
|
...
|
...
|
@@ -21,6 +17,11 @@ |
|
|
<Input v-model.trim="filters.prodBarCode.model"
|
|
|
:placeholder="filters.prodBarCode.holder"></Input>
|
|
|
</FilterItem>
|
|
|
|
|
|
<FilterItem label="选择类目">
|
|
|
<SelectCategory :value="categoryValue" @select-change="sortChange"></SelectCategory>
|
|
|
</FilterItem>
|
|
|
|
|
|
<FilterItem label="选择品牌">
|
|
|
<SelectBrand @on-change="brandChange"
|
|
|
:field-label="filters.brand.label"
|
...
|
...
|
@@ -30,13 +31,6 @@ |
|
|
:option-list="filters.brand.options">
|
|
|
</SelectBrand>
|
|
|
</FilterItem>
|
|
|
<FilterItem :label="filters.verifyStatus.label">
|
|
|
<Select v-model.trim="filters.verifyStatus.model">
|
|
|
<Option v-for="option in filters.verifyStatus.options"
|
|
|
:value="option.value"
|
|
|
:key="option.value">{{option.label}}</Option>
|
|
|
</Select>
|
|
|
</FilterItem>
|
|
|
<FilterItem :label="filters.stockStatus.label">
|
|
|
<Select v-model.trim="filters.stockStatus.model">
|
|
|
<Option v-for="option in filters.stockStatus.options"
|
...
|
...
|
@@ -44,59 +38,49 @@ |
|
|
:key="option.value">{{option.label}}</Option>
|
|
|
</Select>
|
|
|
</FilterItem>
|
|
|
<FilterItem label="选择类目">
|
|
|
<SelectCategory :value="categoryValue" @select-change="sortChange"></SelectCategory>
|
|
|
</FilterItem>
|
|
|
<FilterItem>
|
|
|
<Button type="primary" @click="filterSearch">筛选</Button>
|
|
|
<Button @click="clearFilter">清空条件</Button>
|
|
|
</FilterItem>
|
|
|
</LayoutFilter>
|
|
|
|
|
|
<LayoutAction>
|
|
|
<Button type="error" @click="batchSetOffSale">下架</Button>
|
|
|
</LayoutAction>
|
|
|
|
|
|
<LayoutList>
|
|
|
<Table border :context="self" :columns="tableCols" :data="tableData" @on-selection-change="selectChange"></Table>
|
|
|
<Page :total="pageData.total" :current="pageData.current"
|
|
|
@on-change="pageChange" :page-size="20" show-total></Page>
|
|
|
</LayoutList>
|
|
|
|
|
|
<SizeEdit ref="showSizeEdit" :show="showSizeEdit"></SizeEdit>
|
|
|
<EditStore ref="showStoreEdit"></EditStore>
|
|
|
</LayoutBody>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import Vue from 'vue';
|
|
|
import _ from 'lodash';
|
|
|
import service from 'product-service';
|
|
|
import {SizeEdit} from 'product/size-edit';
|
|
|
import service from 'jit-service';
|
|
|
import {SelectBrand, SelectCategory} from 'product/filter-select';
|
|
|
import {CellImage, CellInfo, CellPrice} from 'product/table-cell';
|
|
|
import {CellImage, CellInfo} from 'product/table-cell';
|
|
|
import EditStore from './views/edit-store';
|
|
|
import {filterFields, initialFields, tableCols, tableData, pageData} from './store';
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
self: this,
|
|
|
showSizeEdit: false,
|
|
|
tableCols,
|
|
|
tableData,
|
|
|
pageData,
|
|
|
filters: '',
|
|
|
batchOffSale: [],
|
|
|
useFilterSign: false,
|
|
|
categoryValue: []
|
|
|
categoryValue: [],
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
this.productList();
|
|
|
this.filters = JSON.parse(initialFields);
|
|
|
},
|
|
|
methods: {
|
|
|
editSize(skn) {
|
|
|
this.$refs.showSizeEdit.show(skn);
|
|
|
editStore(skn) {
|
|
|
this.$refs.showStoreEdit.show(skn);
|
|
|
},
|
|
|
filterParams() {
|
|
|
const fts = this.filters;
|
...
|
...
|
@@ -109,7 +93,6 @@ |
|
|
middleSortId: fts.sort.second.model,
|
|
|
smallSortId: fts.sort.third.model,
|
|
|
brandId: fts.brand.model != -1 ? fts.brand.model : null,
|
|
|
auditStatus: fts.verifyStatus.model != -1 ? fts.verifyStatus.model : null,
|
|
|
stock: fts.stockStatus.model != -1 ? this.filters.stockStatus.model : null
|
|
|
};
|
|
|
|
...
|
...
|
@@ -119,37 +102,15 @@ |
|
|
const params = this.filterParams();
|
|
|
|
|
|
this.useFilterSign = true;
|
|
|
this.productList(params);
|
|
|
this.pageData.current = 1;
|
|
|
|
|
|
},
|
|
|
clearFilter() {
|
|
|
this.filters = JSON.parse(initialFields);
|
|
|
this.productList();
|
|
|
this.useFilterSign = false;
|
|
|
this.pageData.current = 1;
|
|
|
this.categoryValue = [];
|
|
|
},
|
|
|
productList(params) {
|
|
|
|
|
|
if(_.isObject(params) &&
|
|
|
params.productSkn !== undefined &&
|
|
|
!_.isFinite(+params.productSkn)) {
|
|
|
this.$Message.error('SKN编码只能是数字', 3);
|
|
|
return;
|
|
|
};
|
|
|
|
|
|
service.productList(
|
|
|
_.merge(params || {}, {
|
|
|
shelfStatus: 1,
|
|
|
size: 20
|
|
|
}))
|
|
|
.then(res => {
|
|
|
if(res.code === 200) {
|
|
|
this.updateStore(res.data);
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
reloadList() {
|
|
|
let params = {};
|
|
|
|
...
|
...
|
@@ -163,7 +124,6 @@ |
|
|
productStatusStr: 1
|
|
|
});
|
|
|
|
|
|
this.productList(params);
|
|
|
this.pageData.current = 1;
|
|
|
},
|
|
|
updateStore(data) {
|
...
|
...
|
@@ -197,71 +157,6 @@ |
|
|
size: 20,
|
|
|
productStatusStr: 1
|
|
|
});
|
|
|
|
|
|
this.productList(params);
|
|
|
},
|
|
|
setOffSale(skns) {
|
|
|
const params = {
|
|
|
targetStatus: 0
|
|
|
};
|
|
|
|
|
|
if(_.isArray(skns)) {
|
|
|
params['productSkns'] = `[${skns.join(',')}]`;
|
|
|
} else {
|
|
|
params['productSkns'] = `[${skns}]`
|
|
|
}
|
|
|
|
|
|
service.setOffSale(params)
|
|
|
.then(res => {
|
|
|
this.$Message.success(res.data.message);
|
|
|
this.reloadList();
|
|
|
});
|
|
|
},
|
|
|
batchSetOffSale() {
|
|
|
if(!this.batchOffSale.length) {
|
|
|
return this.$Message.error('请选择要下架的商品');
|
|
|
}
|
|
|
|
|
|
let skns = [];
|
|
|
|
|
|
_.each(this.batchOffSale, (item) => {
|
|
|
skns.push(item.productSkn);
|
|
|
});
|
|
|
|
|
|
this.setOffSale(skns);
|
|
|
},
|
|
|
editPrice(row) {
|
|
|
row.changePrice = true;
|
|
|
},
|
|
|
updatePrice(row, newSalesPrice) {
|
|
|
const index = row.lineIndex;
|
|
|
const salesPrice = newSalesPrice;
|
|
|
const productSkn = row.productSkn;
|
|
|
|
|
|
if(newSalesPrice === row.salesPrice) {
|
|
|
row.changePrice = false;
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
const params = {
|
|
|
salesPrice,
|
|
|
productSkn
|
|
|
};
|
|
|
|
|
|
service.updateSalesPrice(params)
|
|
|
.then(res => {
|
|
|
this.tableData[index].salesPrice = salesPrice;
|
|
|
row.changePrice = false;
|
|
|
this.$Message.success(res.data.message);
|
|
|
});
|
|
|
},
|
|
|
editProduct(skn) {
|
|
|
this.$router.push({
|
|
|
name: 'product.edit',
|
|
|
params: {
|
|
|
id: skn
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
selectChange(selection) {
|
|
|
this.batchOffSale = selection;
|
...
|
...
|
@@ -270,10 +165,9 @@ |
|
|
components: {
|
|
|
SelectBrand,
|
|
|
SelectCategory,
|
|
|
SizeEdit,
|
|
|
CellImage,
|
|
|
CellInfo,
|
|
|
CellPrice
|
|
|
EditStore
|
|
|
}
|
|
|
}
|
|
|
</script>
|
...
|
...
|
|