Skip to content

Commit

Permalink
添加编辑商品逻辑拆分
Browse files Browse the repository at this point in the history
  • Loading branch information
zhh committed Jun 4, 2018
1 parent 234d23d commit 75b5f54
Show file tree
Hide file tree
Showing 9 changed files with 199 additions and 159 deletions.
7 changes: 7 additions & 0 deletions src/router/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ export const constantRouterMap = [
component: () => import('@/views/pms/product/add'),
meta: {title: '添加商品', icon: 'product-add'}
},
{
path: 'updateProduct',
name: 'updateProduct',
component: () => import('@/views/pms/product/update'),
meta: {title: '修改商品', icon: 'product-add'},
hidden:true
},
{
path: 'productRecycle',
name: 'productRecycle',
Expand Down
154 changes: 3 additions & 151 deletions src/views/pms/product/add.vue
Original file line number Diff line number Diff line change
@@ -1,160 +1,12 @@
<template
<el-card class="form-container" shadow="never">
<el-steps :active="active" finish-status="success" align-center>
<el-step title="填写商品信息"></el-step>
<el-step title="填写商品促销"></el-step>
<el-step title="填写商品属性"></el-step>
<el-step title="选择商品关联"></el-step>
</el-steps>
<add-product-info
v-show="showStatus[0]"
v-model="productParam"
@nextStep="nextStep">
</add-product-info>
<add-product-sale
v-show="showStatus[1]"
v-model="productParam"
@nextStep="nextStep"
@prevStep="prevStep"
>
</add-product-sale>
<add-product-attr
v-show="showStatus[2]"
v-model="productParam"
@nextStep="nextStep"
@prevStep="prevStep"
>
</add-product-attr>
<add-product-relation
v-show="showStatus[3]"
v-model="productParam"
@prevStep="prevStep"
@finishCommit="finishCommit"
>
</add-product-relation>
</el-card>
<product-detail :is-edit='false'></product-detail>
</template>
<script>
import AddProductInfo from './components/addProductInfo';
import AddProductSale from './components/addProductSale';
import AddProductAttr from './components/addProductAttr';
import AddProductRelation from './components/addProductRelation';
import {createProduct} from '@/api/product';
const defaultProductParam = {
albumPics: '',
brandId: null,
brandName: '',
deleteStatus: 0,
description: '',
detailDesc: '',
detailHtml: '',
detailMobileHtml: '',
detailTitle: '',
feightTemplateId: 0,
flashPromotionCount: 0,
flashPromotionId: 0,
flashPromotionPrice: 0,
flashPromotionSort: 0,
giftPoint: 0,
giftGrowth: 0,
keywords: '',
lowStock: 0,
name: '',
newStatus: 0,
note: '',
originalPrice: 0,
pic: '',
//会员价格{memberLevelId: 0,memberPrice: 0,memberLevelName: null}
memberPriceList: [],
//商品满减
productFullReductionList: [{fullPrice: 0, reducePrice: 0}],
//商品阶梯价格
productLadderList: [{count: 0,discount: 0,price: 0}],
previewStatus: 0,
price: 0,
productAttributeCategoryId: null,
//商品属性相关{productAttributeId: 0, value: ''}
productAttributeValueList: [],
//商品sku库存信息{lowStock: 0, pic: '', price: 0, sale: 0, skuCode: '', sp1: '', sp2: '', sp3: '', stock: 0}
skuStockList: [],
//商品相关专题{subjectId: 0}
subjectProductRelationList: [],
//商品相关优选{prefrenceAreaId: 0}
prefrenceAreaProductRelationList: [],
productCategoryId: null,
productCategoryName: '',
productSn: '',
promotionEndTime: '',
promotionPerLimit: 0,
promotionPrice: null,
promotionStartTime: '',
promotionType: 0,
publishStatus: 0,
recommandStatus: 0,
sale: 0,
serviceIds: '',
sort: 0,
stock: 0,
subTitle: '',
unit: '',
usePointLimit: 0,
verifyStatus: 0,
weight: 0
};
import ProductDetail from './components/ProductDetail'
export default {
name: 'addProduct',
components: {AddProductInfo, AddProductSale, AddProductAttr, AddProductRelation},
data() {
return {
active: 0,
productParam: Object.assign({}, defaultProductParam),
showStatus: [true, false, false, false]
}
},
methods: {
hideAll() {
for (let i = 0; i < this.showStatus.length; i++) {
this.showStatus[i] = false;
}
},
prevStep() {
if (this.active > 0 && this.active < this.showStatus.length) {
this.active--;
this.hideAll();
this.showStatus[this.active] = true;
}
},
nextStep() {
if (this.active < this.showStatus.length - 1) {
this.active++;
this.hideAll();
this.showStatus[this.active] = true;
}
},
finishCommit() {
this.$confirm('是否要提交该产品', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
createProduct(this.productParam).then(response=>{
this.$message({
type: 'success',
message: '提交成功',
duration:1000
});
location.reload();
});
})
}
}
components: { ProductDetail }
}
</script>
<style>
.form-container {
width: 800px;
}
</style>


Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@
import Tinymce from '@/components/Tinymce'
export default {
name: "addProductAttr",
name: "ProductAttrDetail",
components: {SingleUpload, MultiUpload, Tinymce},
props: {
value: Object
Expand Down
166 changes: 166 additions & 0 deletions src/views/pms/product/components/ProductDetail.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
<template
<el-card class="form-container" shadow="never">
<el-steps :active="active" finish-status="success" align-center>
<el-step title="填写商品信息"></el-step>
<el-step title="填写商品促销"></el-step>
<el-step title="填写商品属性"></el-step>
<el-step title="选择商品关联"></el-step>
</el-steps>
<product-info-detail
v-show="showStatus[0]"
v-model="productParam"
@nextStep="nextStep">
</product-info-detail>
<product-sale-detail
v-show="showStatus[1]"
v-model="productParam"
@nextStep="nextStep"
@prevStep="prevStep"
>
</product-sale-detail>
<product-attr-detail
v-show="showStatus[2]"
v-model="productParam"
@nextStep="nextStep"
@prevStep="prevStep"
>
</product-attr-detail>
<product-relation-detail
v-show="showStatus[3]"
v-model="productParam"
@prevStep="prevStep"
@finishCommit="finishCommit"
>
</product-relation-detail>
</el-card>
</template>
<script>
import ProductInfoDetail from './ProductInfoDetail';
import ProductSaleDetail from './ProductSaleDetail';
import ProductAttrDetail from './ProductAttrDetail';
import ProductRelationDetail from './ProductRelationDetail';
import {createProduct} from '@/api/product';
const defaultProductParam = {
albumPics: '',
brandId: null,
brandName: '',
deleteStatus: 0,
description: '',
detailDesc: '',
detailHtml: '',
detailMobileHtml: '',
detailTitle: '',
feightTemplateId: 0,
flashPromotionCount: 0,
flashPromotionId: 0,
flashPromotionPrice: 0,
flashPromotionSort: 0,
giftPoint: 0,
giftGrowth: 0,
keywords: '',
lowStock: 0,
name: '',
newStatus: 0,
note: '',
originalPrice: 0,
pic: '',
//会员价格{memberLevelId: 0,memberPrice: 0,memberLevelName: null}
memberPriceList: [],
//商品满减
productFullReductionList: [{fullPrice: 0, reducePrice: 0}],
//商品阶梯价格
productLadderList: [{count: 0,discount: 0,price: 0}],
previewStatus: 0,
price: 0,
productAttributeCategoryId: null,
//商品属性相关{productAttributeId: 0, value: ''}
productAttributeValueList: [],
//商品sku库存信息{lowStock: 0, pic: '', price: 0, sale: 0, skuCode: '', sp1: '', sp2: '', sp3: '', stock: 0}
skuStockList: [],
//商品相关专题{subjectId: 0}
subjectProductRelationList: [],
//商品相关优选{prefrenceAreaId: 0}
prefrenceAreaProductRelationList: [],
productCategoryId: null,
productCategoryName: '',
productSn: '',
promotionEndTime: '',
promotionPerLimit: 0,
promotionPrice: null,
promotionStartTime: '',
promotionType: 0,
publishStatus: 0,
recommandStatus: 0,
sale: 0,
serviceIds: '',
sort: 0,
stock: 0,
subTitle: '',
unit: '',
usePointLimit: 0,
verifyStatus: 0,
weight: 0
};
export default {
name: 'ProductDetail',
components: {ProductInfoDetail, ProductSaleDetail, ProductAttrDetail, ProductRelationDetail},
props: {
isEdit: {
type: Boolean,
default: false
}
},
data() {
return {
active: 0,
productParam: Object.assign({}, defaultProductParam),
showStatus: [true, false, false, false]
}
},
methods: {
hideAll() {
for (let i = 0; i < this.showStatus.length; i++) {
this.showStatus[i] = false;
}
},
prevStep() {
if (this.active > 0 && this.active < this.showStatus.length) {
this.active--;
this.hideAll();
this.showStatus[this.active] = true;
}
},
nextStep() {
if (this.active < this.showStatus.length - 1) {
this.active++;
this.hideAll();
this.showStatus[this.active] = true;
}
},
finishCommit() {
this.$confirm('是否要提交该产品', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
createProduct(this.productParam).then(response=>{
this.$message({
type: 'success',
message: '提交成功',
duration:1000
});
location.reload();
});
})
}
}
}
</script>
<style>
.form-container {
width: 800px;
}
</style>


Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
import {fetchList as fetchBrandList} from '@/api/brand'
export default {
name: "addProductInfo",
name: "ProductInfoDetail",
props: {
value: Object
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
import {fetchList as fetchPrefrenceAreaList} from '@/api/prefrenceArea'
export default {
name: "addProductRelation",
name: "ProductRelationDetail",
props: {
value: Object
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@
<script>
import {fetchList as fetchMemberLevelList} from '@/api/memberLevel'
export default {
name: "addProductSale",
name: "ProductSaleDetail",
props: {
value: Object
},
Expand Down
Loading

0 comments on commit 75b5f54

Please sign in to comment.