|
|
@@ -2,37 +2,45 @@
|
|
|
<div class="app-content">
|
|
|
<div class="form-wrap">
|
|
|
<el-form ref="form" :model="ruleForm" :rules="rules" label-width="120px">
|
|
|
- <el-form-item label="名称" prop="name">
|
|
|
- <el-input v-model="ruleForm.name"></el-input>
|
|
|
+ <el-form-item label="名称" prop="goodsName">
|
|
|
+ <el-input v-model="ruleForm.goodsName"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="已售" prop="name">
|
|
|
- <el-input v-model="ruleForm.name"></el-input>
|
|
|
+ <el-form-item label="已售" prop="sold">
|
|
|
+ <el-input v-model="ruleForm.sold"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="库存" prop="name">
|
|
|
- <el-input v-model="ruleForm.name"></el-input>
|
|
|
+ <el-form-item label="库存" prop="stock">
|
|
|
+ <el-input v-model="ruleForm.stock"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="分类">
|
|
|
- <el-checkbox-group v-model="ruleForm.type">
|
|
|
- <el-checkbox label="M" name="type"></el-checkbox>
|
|
|
- <el-checkbox label="X" name="type"></el-checkbox>
|
|
|
- <el-checkbox label="XL" name="type"></el-checkbox>
|
|
|
- <el-checkbox label="2XL" name="type"></el-checkbox>
|
|
|
- <el-checkbox label="3XL" name="type"></el-checkbox>
|
|
|
- <el-checkbox label="4XL" name="type"></el-checkbox>
|
|
|
+ <el-checkbox-group v-model="ruleForm.categoryIdList">
|
|
|
+ <el-checkbox
|
|
|
+ border
|
|
|
+ v-for="(item, index) in categoryData"
|
|
|
+ :label="item.id"
|
|
|
+ :key="index"
|
|
|
+ size="small"
|
|
|
+ @change="selChangeDialogFn($event, item)"
|
|
|
+ >{{ item.categoryName }}</el-checkbox
|
|
|
+ >
|
|
|
</el-checkbox-group>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="款式">
|
|
|
- <el-checkbox-group v-model="ruleForm.type">
|
|
|
- <el-checkbox label="多款式" name="type"></el-checkbox>
|
|
|
+ <el-checkbox-group v-model="ruleForm.goodsStyle" @change="changeStyleFn">
|
|
|
+ <el-checkbox label="1" name="goodsStyle" true-label="1" false-label="0">
|
|
|
+ <span>多款式</span>
|
|
|
+ </el-checkbox>
|
|
|
</el-checkbox-group>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="价格" prop="price">
|
|
|
+ <el-input v-model="ruleForm.price"></el-input>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="图片">
|
|
|
<div class="list-wrap">
|
|
|
- <cl-upload v-model="ruleForm.goodsImg"></cl-upload>
|
|
|
- <div>
|
|
|
+ <cl-upload v-model="ruleForm.shopImg"></cl-upload>
|
|
|
+ <!-- <div>
|
|
|
<el-button type="primary" size="small">商品主图</el-button>
|
|
|
<el-button type="warning" size="small">删除</el-button>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
<div>
|
|
|
<el-button type="primary" size="small" @click="imgStoreModal = true"
|
|
|
@@ -43,13 +51,13 @@
|
|
|
<img width="100%" :src="dialogImageUrl" alt />
|
|
|
</el-dialog>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="活动形式">
|
|
|
- <cl-editor-quill v-model="ruleForm.desc" @load="editor"></cl-editor-quill>
|
|
|
+ <el-form-item label="商品简介">
|
|
|
+ <cl-editor-quill v-model="ruleForm.content" @load="editor"></cl-editor-quill>
|
|
|
<!-- <el-input type="textarea" v-model="ruleForm.desc"></el-input> -->
|
|
|
</el-form-item>
|
|
|
<el-form-item label="节假日自动涨价">
|
|
|
- <el-checkbox-group v-model="ruleForm.type">
|
|
|
- <el-checkbox label="需要" name="type">
|
|
|
+ <el-checkbox-group v-model="ruleForm.autoRise">
|
|
|
+ <el-checkbox label="1" name="autoRise" true-label="1" false-label="0">
|
|
|
<span>需要</span>
|
|
|
</el-checkbox>
|
|
|
<el-popover
|
|
|
@@ -77,13 +85,15 @@
|
|
|
</el-checkbox-group>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="配送方式">
|
|
|
- <el-checkbox-group v-model="ruleForm.type">
|
|
|
- <el-checkbox label="到店自提" name="type"></el-checkbox>
|
|
|
+ <el-checkbox-group v-model="ruleForm.needSend">
|
|
|
+ <el-checkbox label="1" name="type" true-label="1" false-label="0">
|
|
|
+ <span>到店自提</span>
|
|
|
+ </el-checkbox>
|
|
|
</el-checkbox-group>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="配送方式">
|
|
|
- <el-radio-group v-model="ruleForm.resource">
|
|
|
- <el-radio label="按距离收费">
|
|
|
+ <el-form-item label="运费">
|
|
|
+ <el-radio-group v-model="ruleForm.freightType">
|
|
|
+ <el-radio label="0">
|
|
|
<span>按距离收费</span>
|
|
|
</el-radio>
|
|
|
<el-popover
|
|
|
@@ -106,7 +116,9 @@
|
|
|
></el-button>
|
|
|
<!-- <el-button slot="reference">删除</el-button> -->
|
|
|
</el-popover>
|
|
|
- <el-radio label="免运费"></el-radio>
|
|
|
+ <el-radio label="1">
|
|
|
+ <span>免运费</span>
|
|
|
+ </el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
@@ -119,7 +131,24 @@
|
|
|
<el-dialog title="从图库选择" :visible.sync="imgStoreModal" width="600px">
|
|
|
<div class="store-modal-content">
|
|
|
<div class="select-wrap flex-center-start">
|
|
|
- <div style="width: 80px">全部图片</div>
|
|
|
+ <div style="width: 80px">选择分类</div>
|
|
|
+ <el-select
|
|
|
+ v-model="imgStoreVal"
|
|
|
+ placeholder="选择分类"
|
|
|
+ size="mini"
|
|
|
+ :clearable="true"
|
|
|
+ style="width: 200px"
|
|
|
+ @change="selChangeFn"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in categoryData"
|
|
|
+ :key="index"
|
|
|
+ :label="item.id"
|
|
|
+ :value="item.id"
|
|
|
+ >{{ item.categoryName }}</el-option
|
|
|
+ >
|
|
|
+ </el-select>
|
|
|
+ <!-- <div style="width: 80px">选择分类</div>
|
|
|
<el-select
|
|
|
v-model="imgStoreVal"
|
|
|
size="small"
|
|
|
@@ -133,28 +162,25 @@
|
|
|
:value="item.value"
|
|
|
>
|
|
|
</el-option>
|
|
|
- </el-select>
|
|
|
+ </el-select> -->
|
|
|
</div>
|
|
|
<div class="img-store-wrap">
|
|
|
<el-checkbox-group v-model="imgStoreArr" class="list-store">
|
|
|
<div
|
|
|
class="list-checkbox"
|
|
|
- v-for="(item, index) in 10"
|
|
|
+ v-for="(item, index) in imgStoreData"
|
|
|
:label="index"
|
|
|
:key="index"
|
|
|
>
|
|
|
<el-checkbox>
|
|
|
<div class="list-img">
|
|
|
- <img
|
|
|
- src="https://pic.qqtn.com/up/2019-11/2019110209212070747.jpg"
|
|
|
- alt="图库图片"
|
|
|
- />
|
|
|
+ <img :src="item.imgUrl" alt="图库图片" />
|
|
|
</div>
|
|
|
</el-checkbox>
|
|
|
</div>
|
|
|
</el-checkbox-group>
|
|
|
</div>
|
|
|
- <el-pagination
|
|
|
+ <!-- <el-pagination
|
|
|
@size-change="handleSizeChange"
|
|
|
@current-change="handleCurrentChange"
|
|
|
:current-page.sync="currentPage"
|
|
|
@@ -162,7 +188,7 @@
|
|
|
layout="total, prev, pager, next"
|
|
|
:total="1000"
|
|
|
>
|
|
|
- </el-pagination>
|
|
|
+ </el-pagination> -->
|
|
|
</div>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button size="small" @click="imgStoreModal = false">取 消</el-button>
|
|
|
@@ -174,22 +200,23 @@
|
|
|
<!-- 选择款式 -->
|
|
|
<el-dialog title="选择款式" :visible.sync="styleStoreModal" width="800px">
|
|
|
<div class="style-modal-content">
|
|
|
- <el-form :inline="true" :model="styleForm" class="demo-form-inline">
|
|
|
- <div class="flex-center-between" v-for="(item, index) in 4" :key="index">
|
|
|
+ <el-form :inline="true" :model="styleStoreData" class="demo-form-inline">
|
|
|
+ <div
|
|
|
+ class="flex-center-between"
|
|
|
+ v-for="(item, index) in styleStoreData"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
<el-form-item label="款式名称">
|
|
|
- <el-input
|
|
|
- v-model="styleForm.styleName"
|
|
|
- placeholder="款式名称"
|
|
|
- ></el-input>
|
|
|
+ <el-input v-model="item.styleName" placeholder="款式名称"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="价格">
|
|
|
- <el-input v-model="styleForm.price" placeholder="价格"></el-input>
|
|
|
+ <el-input v-model="item.price" placeholder="价格"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="图片" class="flex-center">
|
|
|
- <cl-upload v-model="styleForm.goodsImg"></cl-upload>
|
|
|
+ <cl-upload v-model="item.shopImg"></cl-upload>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" size="small" @click="styleSubmit"
|
|
|
+ <el-button type="primary" size="small" @click="styleDelFn(index)"
|
|
|
>删除</el-button
|
|
|
>
|
|
|
</el-form-item>
|
|
|
@@ -208,26 +235,25 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { mapGetters } from 'vuex';
|
|
|
export default {
|
|
|
name: 'goods-add',
|
|
|
data() {
|
|
|
return {
|
|
|
ruleForm: {
|
|
|
- name: '',
|
|
|
- region: '',
|
|
|
- date1: '',
|
|
|
- date2: '',
|
|
|
- delivery: false,
|
|
|
- type: [],
|
|
|
- resource: '',
|
|
|
- desc: '',
|
|
|
- goodsImg: ''
|
|
|
+ goodsName: '',
|
|
|
+ sold: '',
|
|
|
+ stock: '',
|
|
|
+ categoryIdList: [],
|
|
|
+ goodsStyle: '0',
|
|
|
+ price: '',
|
|
|
+ autoRise: '1',
|
|
|
+ needSend: '0',
|
|
|
+ shopImg: '',
|
|
|
+ freightType: '0'
|
|
|
},
|
|
|
rules: {
|
|
|
- name: [
|
|
|
- { required: true, message: '请输入活动名称', trigger: 'blur' },
|
|
|
- { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
|
|
|
- ]
|
|
|
+ name: [{ required: true, message: '请输入名称', trigger: 'blur' }]
|
|
|
},
|
|
|
// 图片
|
|
|
dialogImageUrl: '',
|
|
|
@@ -237,6 +263,7 @@ export default {
|
|
|
// 距离收费
|
|
|
chargePopover: false,
|
|
|
// 从图库中选择
|
|
|
+ imgStoreData: [],
|
|
|
imgStoreModal: false,
|
|
|
imgStoreVal: '',
|
|
|
imgStoreOpt: [],
|
|
|
@@ -244,6 +271,7 @@ export default {
|
|
|
currentPage: 1,
|
|
|
// 款式选择
|
|
|
styleStoreModal: false,
|
|
|
+ styleStoreData: [],
|
|
|
styleForm: {
|
|
|
styleName: '',
|
|
|
price: '',
|
|
|
@@ -251,11 +279,57 @@ export default {
|
|
|
}
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ ...mapGetters({ categoryData: 'category' })
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.init();
|
|
|
+ },
|
|
|
methods: {
|
|
|
+ init() {
|
|
|
+ this.$store.dispatch('getCategory');
|
|
|
+ this._getImgStore();
|
|
|
+ },
|
|
|
+ _getImgStore() {
|
|
|
+ return this.$service.imgStore
|
|
|
+ .list({
|
|
|
+ page: 1,
|
|
|
+ categoryId: this.imgStoreVal
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ this.imgStoreData = res.list;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // api
|
|
|
+ addFn() {
|
|
|
+ let form = JSON.parse(JSON.stringify(this.ruleForm));
|
|
|
+ form.shopImg = [form.shopImg];
|
|
|
+ this.$service.goods
|
|
|
+ .add({
|
|
|
+ ...form,
|
|
|
+ goodsStyleList: this.styleStoreData
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ this.resetForm();
|
|
|
+ this.$message.success('添加成功!');
|
|
|
+ this.$router.push('/goods/list');
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // operate
|
|
|
+ changeStyleFn(val) {
|
|
|
+ console.log(val);
|
|
|
+ if (val) {
|
|
|
+ // this.styleFormAddFn()
|
|
|
+ this.styleStoreModal = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ selChangeDialogFn(status, item) {
|
|
|
+ console.log(status, item);
|
|
|
+ },
|
|
|
submitForm(formName) {
|
|
|
this.$refs[formName].validate(valid => {
|
|
|
if (valid) {
|
|
|
- alert('submit!');
|
|
|
+ this.addFn();
|
|
|
} else {
|
|
|
console.log('error submit!!');
|
|
|
return false;
|
|
|
@@ -283,9 +357,18 @@ export default {
|
|
|
handleCurrentChange(val) {
|
|
|
console.log(`当前页: ${val}`);
|
|
|
},
|
|
|
+ // 图库选择
|
|
|
+ selChangeFn(e) {
|
|
|
+ this.imgStoreVal = e;
|
|
|
+ },
|
|
|
// 款式选择弹窗
|
|
|
- styleSubmit() {},
|
|
|
- styleFormAddFn() {}
|
|
|
+ styleDelFn(index) {
|
|
|
+ this.styleStoreData.splice(index, 1);
|
|
|
+ },
|
|
|
+ styleFormAddFn() {
|
|
|
+ let form = JSON.parse(JSON.stringify(this.styleForm));
|
|
|
+ this.styleStoreData.push(form);
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
</script>
|