Browse Source

修改商品列表

王新雷 4 years ago
parent
commit
66ae295c27

+ 122 - 0
src/components/Upload/index.vue

@@ -0,0 +1,122 @@
+
+<template>
+    <div class="upload">
+        <el-upload class="avatar-uploader"
+                     style="line-height: 0;display: inline-block"
+                     action="/api-web/uploadFile"
+                     :headers="headers"
+                     :show-file-list="false"
+                     v-loading="uploadImgLoading"
+                     accept=".jpg, .jpeg, .png"
+                     :on-success="handleImgSuccess"
+                     :on-error="handleUploadImgError"
+                     :before-upload="beforeImgUpload">
+            <img v-if="imgUrl"
+                 :src="imgUrl"
+                 class="avatar" />
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+        </el-upload>
+    </div>
+</template>
+
+<script>
+import load from "@/utils/loading";
+import { getToken } from "@/utils/auth";
+export default {
+    data() {
+        return {
+            headers: {
+                Authorization: getToken()
+            },
+            uploadImgLoading: false,
+            imgUrl: null,
+        };
+    },
+    props: {
+        value: {
+            // 组件状态
+            type: String,
+        },
+        imageSizeM: { // 默认2M
+            type: Number,
+            default() {
+                return 2
+            }
+        },
+        imageType: { // 检测类型
+            type: Object,
+            default() {
+                return {
+                    "image/png": true,
+                    "image/jpeg": true,
+                    "image/jpg": true,
+                }
+            }
+        }
+    },
+    mounted() {},
+    methods: {
+        beforeImgUpload (file) {
+            const isImage = this.imageType[file.type];
+            const isLt2M = file.size / 1024 / 1024 < this.imageSizeM;
+            console.log(isImage, isLt2M)
+            if (!isImage) {
+                this.$message.error("只能上传图片格式!");
+            }
+            if (!isLt2M) {
+                this.$message.error("上传图片大小不能超过 2MB!");
+            }
+            if (isImage && isLt2M) {
+                this.uploadImgLoading = true
+            }
+            return isImage && isLt2M;
+        },
+        handleUploadImgError (file) {
+            this.uploadImgLoading = false
+            this.$message.error('上传失败')
+        },
+        handleImgSuccess (res, file) {
+            this.uploadImgLoading = false
+            this.imgUrl = res.data.url
+        },
+    },
+    watch: {
+        value(newValue) {
+            console.log(newValue);
+            this.imgUrl = newValue
+        },
+    },
+    beforeDestroy() {
+    },
+};
+</script>
+
+<style lang="scss">
+/deep/.avatar-uploader .el-upload,
+/deep/.upload-demo .el-upload {
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+}
+.avatar-uploader .el-upload:hover {
+    border-color: #409eff;
+}
+.avatar-uploader-icon {
+    border: 1px dashed #d9d9d9;
+    font-size: 28px;
+    color: #8c939d;
+    width: 120px;
+    height: 120px;
+    line-height: 120px;
+    text-align: center;
+}
+.avatar {
+    width: 120px;
+    height: 120px;
+    display: block;
+}
+.ivu-upload {
+  display: none;
+}
+</style>

+ 8 - 1
src/utils/searchArray.js

@@ -172,6 +172,12 @@ const classStatus = [
   { value: '11', label: '高二' },
   { value: '12', label: '高三' },
 ]
+// 库存类型
+const stockType = [
+  { value: 'INTERNAL', label: '内部' },
+  { value: 'EXTERNAL', label: '外部' },
+  { value: 'ALL', label: '全部' }
+]
 
 export {
   courseType,
@@ -193,5 +199,6 @@ export {
   paymentChannelStatus,
   saleStatus,
   goodsType,
-  classStatus
+  classStatus,
+  stockType
 }

+ 9 - 0
src/utils/vueFilter.js

@@ -610,3 +610,12 @@ Vue.filter('teamPayStatus', value => {
 Vue.filter('moneyFormat', value => {
   return numeral(value).format('0,0.00')
 })
+
+Vue.filter('stockTypeStatus', value => {
+  const template = {
+    INTERNAL: '内部',
+    EXTERNAL: '外部',
+    ALL: '全部',
+  }
+  return template[value]
+})

+ 304 - 22
src/views/businessManager/shopManager/shopList.vue

@@ -5,13 +5,13 @@
     </h2>
     <div class="m-core">
       <el-button class="btn-primary" @click="onShopOperation('create')" v-permission="'/shopOperation'">添加</el-button>
-      <el-upload v-permission="'import/goods'" style="display: inline-block;" action="/api-web/import/goods"
+      <el-upload v-permission="'import/goods'" style="display: inline-block; margin: 0 10px;" action="/api-web/import/goods"
         :show-file-list="false" :before-upload="beforeUpload" accept=".xlsx,.xls" :headers="headers" :on-error="handleError"
         :on-success="handleSuccess">
         <el-button class="btn-primary">商品导入</el-button>
       </el-upload>
       <el-button class="btn-primary" @click="onDownload" v-permission="'import/downloadTemplate'">下载模板</el-button>
-      <el-button class="btn-primary">添加组合商品</el-button>
+      <el-button class="btn-primary" @click="routeShopStatus = true">添加组合商品</el-button>
       <!-- 搜索类型 -->
       <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
         <el-form-item>
@@ -35,8 +35,8 @@
         </el-form-item>
         <el-form-item>
           <el-date-picker v-model.trim="orderDate" style="width:410px;" type="daterange" value-format="yyyy-MM-dd"
-            @change="searchOrderDate" range-separator="至" :picker-options="{ firstDayOfWeek: 1 }"
-            start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+            @change="searchOrderDate" range-separator="至" :picker-options="{ firstDayOfWeek: 1 }" start-placeholder="开始日期"
+            end-placeholder="结束日期"></el-date-picker>
         </el-form-item>
         <el-form-item>
           <el-button type="danger" @click="getList">搜索</el-button>
@@ -81,15 +81,18 @@
           <el-table-column align='center' prop="taxStockCount" label="税务库存">
           </el-table-column>
           <el-table-column align='center' prop="stockType" label="库存类型">
+            <template slot-scope="scope">
+              {{ scope.row.stockType | stockTypeStatus }}
+            </template>
           </el-table-column>
           <el-table-column align='center' prop="marketPrice" label="商品价格(元)">
             <template slot-scope="scope">
-                {{scope.row.marketPrice|moneyFormat}}
+              {{scope.row.marketPrice|moneyFormat}}
             </template>
           </el-table-column>
           <el-table-column align='center' prop="groupPurchasePrice" label="商品团购价(元)">
             <template slot-scope="scope">
-                {{scope.row.groupPurchasePrice|moneyFormat}}
+              {{scope.row.groupPurchasePrice|moneyFormat}}
             </template>
           </el-table-column>
           <el-table-column align='center' cell-style="padding: 0" label="商品缩略图">
@@ -126,13 +129,89 @@
           @pagination="getList" />
       </div>
     </div>
+
+    <el-dialog :title="isAdd?'添加组合商品':'查看组合商品'" destroy-on-close :visible.sync="routeShopStatus" @close="onFormClose('ruleForm')"
+      width="600px">
+      <el-form :model="form" :rules="rules" ref="ruleForm">
+        <el-form-item label="商品名称" prop="name" :label-width="formLabelWidth">
+          <el-input placeholder="请输入商品名称" type="text" :disabled="!isAdd" v-model.trim="form.name"></el-input>
+        </el-form-item>
+        <el-form-item label="货号" prop="sn" :label-width="formLabelWidth">
+          <el-input placeholder="请输入货号户" type="text" :disabled="!isAdd" v-model.trim="form.sn"></el-input>
+        </el-form-item>
+        <el-form-item label="品牌" prop="brand" :label-width="formLabelWidth">
+          <el-input v-model.trim="form.brand" placeholder="请输入品牌"></el-input>
+        </el-form-item>
+        <el-form-item label="商品类型" prop="type" :label-width="formLabelWidth">
+          <el-select v-model.trim="form.type" placeholder="请选择商品类型">
+            <el-option v-for="(item, index) in goodsType" :key="index" :label="item.label" :value="item.value"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="商品分类" prop="goodsCategoryId" :label-width="formLabelWidth">
+          <el-select v-model.trim="form.goodsCategoryId" placeholder="请选择商品分类" filterable>
+            <el-option v-for="item in categoryList" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="商品型号" prop="specification" :label-width="formLabelWidth">
+          <el-input v-model.trim="form.specification" placeholder="请输入商品型号"></el-input>
+        </el-form-item>
+
+        <div v-for="(goodsList, index) in form.goodsList" :key="index">
+          <el-form-item :label="'商品' + (index + 1)" :label-width="formLabelWidth" style="display: inline-block;" :prop="'goodsList.' + index + '.id'"
+            :rules="[{ required: true, message: '请选择商品', trigger: 'change' }]">
+            <el-select v-model.trim="goodsList.id" :disabled="!isAdd" placeholder="请选择商品">
+              <el-option v-for="(item,index) in goodsTree" :key="index" :label="item.name" :value="item.id"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-button icon="el-icon-minus" :disabled="!isAdd" v-if="form.goodsList.length > 1" @click.prevent="removeGoodsList(goodsList)"
+            circle></el-button>
+          <el-button icon="el-icon-plus" :disabled="!isAdd" @click.prevent="addGoodsList" circle style="margin-left: 5px;"></el-button>
+        </div>
+
+        <el-form-item label="商品价格" prop="marketPrice" :label-width="formLabelWidth">
+          <el-input type="number" placeholder="请输入商品价格" @mousewheel.native.prevent v-model.trim="form.marketPrice"></el-input>
+        </el-form-item>
+        <el-form-item label="商品团购价" prop="groupPurchasePrice" :label-width="formLabelWidth">
+          <el-input type="number" placeholder="请输入商品团购价" @mousewheel.native.prevent v-model.trim="form.groupPurchasePrice"></el-input>
+        </el-form-item>
+        <el-form-item label="是否APP展示" prop="clientShow" :label-width="formLabelWidth">
+          <el-select v-model="form.clientShow" placeholder="请选择是否APP展示">
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否库存预警" prop="stockWarning" :label-width="formLabelWidth">
+          <el-select v-model="form.stockWarning" placeholder="请选择是否库存预警">
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="商品图片" prop="image" :label-width="formLabelWidth">
+          <upload v-model="form.image"></upload>
+        </el-form-item>
+
+        <el-form-item label="商品描述" prop="brief" :label-width="formLabelWidth">
+          <el-input type="textarea" v-model.trim="form.brief"></el-input>
+        </el-form-item>
+        <el-form-item label="商品详情" prop="desc" :label-width="formLabelWidth">
+          <el-input type="textarea" v-model.trim="form.desc"></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="routeShopStatus = false">取 消</el-button>
+        <el-button @click="onShopSubmit('ruleForm')" type="primary">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
   import pagination from '@/components/Pagination/index'
+  import Upload from '@/components/Upload/index'
   import {
     categoryListTree,
     goodsQuery,
+    goodsAdd,
     goodsUpdate,
     goodsDelete
   } from '@/api/businessManager'
@@ -148,10 +227,31 @@
     goodsType
   } from '@/utils/searchArray'
   import load from '@/utils/loading'
+  let validPrice = (rule, value, callback) => {
+    if (value == '' && typeof value == 'string' || value == null) {
+      callback(new Error('请输入金额'))
+    } else if (value < 0) {
+      callback(new Error('输入金额必须大于或等于0'))
+    } else if (value >= 100000) {
+      callback(new Error('输入金额必须小于100000'))
+    } else {
+      callback()
+    }
+  }
+  let validStock = (rule, value, callback) => {
+    if (value == '' && typeof value == 'string' || value == null) {
+      callback(new Error('请输入库存'))
+    } else if (value < 0) {
+      callback(new Error('库存数量必须大于或等于0'))
+    } else {
+      callback()
+    }
+  }
   export default {
     components: {
       pagination,
-      Tooltip
+      Tooltip,
+      Upload
     },
     name: 'shopList',
     data() {
@@ -181,6 +281,141 @@
           total: 0, // 总条数
           page_size: [10, 20, 40, 50] // 选择限制显示条数
         },
+        formLabelWidth: "120px",
+        routeShopStatus: false,
+        isAdd: true,
+        form: {
+          sn: null,
+          brand: null,
+          supplyChannel: null,
+          name: null,
+          type: null,
+          goodsCategoryId: null,
+          specification: null,
+          stockCount: null,
+          taxStockCount: null,
+          stockType: null,
+          marketPrice: null,
+          groupPurchasePrice: null,
+          clientShow: null,
+          stockWarning: null,
+          image: null,
+          complementGoodsIdList: null,
+          goodsList: [{
+            id: null
+          }],
+          brief: null,
+          desc: null
+        },
+        goodsTree: [], // 选择商品列表
+        rules: {
+          sn: [{
+            required: true,
+            message: '请输入商品货号',
+            trigger: 'blur'
+          }],
+          brand: [{
+              required: true,
+              message: '请输入品牌',
+              trigger: 'blur'
+            },
+            {
+              min: 2,
+              max: 30,
+              message: '长度在 2 到 30 个字符',
+              trigger: 'blur'
+            }
+          ],
+          supplyChannel: [{
+            required: true,
+            message: '请输入备查货号',
+            trigger: 'blur'
+          }],
+          name: [{
+              required: true,
+              message: '请输入商品名称',
+              trigger: 'blur'
+            },
+            {
+              min: 2,
+              max: 30,
+              message: '长度在 2 到 30 个字符',
+              trigger: 'blur'
+            }
+          ],
+          type: [{
+            required: true,
+            message: '请选择商品分类',
+            trigger: 'change'
+          }],
+          goodsCategoryId: [{
+            required: true,
+            message: '请选择商品类型',
+            trigger: 'change'
+          }],
+          specification: [{
+              required: true,
+              message: '请输入商品型号',
+              trigger: 'blur'
+            },
+            {
+              min: 2,
+              max: 30,
+              message: '长度在 2 到 30 个字符',
+              trigger: 'blur'
+            }
+          ],
+          stockCount: [{
+            required: true,
+            validator: validStock,
+            trigger: 'blur'
+          }],
+          taxStockCount: [{
+            required: true,
+            validator: validStock,
+            trigger: 'blur'
+          }],
+          stockType: [{
+            required: true,
+            message: '请选择库存类型',
+            trigger: 'change'
+          }],
+          marketPrice: [{
+            required: true,
+            validator: validPrice,
+            trigger: 'blur'
+          }],
+          groupPurchasePrice: [{
+            required: true,
+            validator: validPrice,
+            trigger: 'blur'
+          }],
+          clientShow: [{
+            required: true,
+            message: '请选择是否APP展示',
+            trigger: 'change'
+          }],
+          stockWarning: [{
+            required: true,
+            message: '请选择是否库存预警',
+            trigger: 'change'
+          }],
+          image: [{
+            required: true,
+            message: '请选择图片',
+            trigger: 'blur'
+          }],
+          brief: [{
+            required: true,
+            message: '请输入商品描述',
+            trigger: 'blur'
+          }],
+          desc: [{
+            required: true,
+            message: '请输入商品详情',
+            trigger: 'blur'
+          }]
+        }
       }
     },
     created() {
@@ -203,13 +438,14 @@
             JSON.parse(this.$route.query.pageInfo);
         }
         this.getList()
-        this.getCatagory()
+        this.getCategory()
       },
-      getCatagory() {
-        categoryListTree({
+      getCategory() {
+        let params = {
           delFlag: 0,
           rows: 9999
-        }).then(res => {
+        }
+        categoryListTree(params).then(res => {
           let result = res.data
           if (res.code == 200) {
             let tempArray = []
@@ -243,7 +479,7 @@
         }).catch(() => {})
 
       },
-      searchOrderDate (value) {
+      searchOrderDate(value) {
         if (value) {
           this.searchForm.startTime = value[0];
           this.searchForm.endTime = value[1];
@@ -274,15 +510,15 @@
         })
       },
       onReset() { // 重置
-         this.searchForm = {
-           search: null,
-           status: null,
-           type: null,
-           goodsCategoryId: null,
-           startTime: null,
-           endTime: null
-         }
-         this.getList()
+        this.searchForm = {
+          search: null,
+          status: null,
+          type: null,
+          goodsCategoryId: null,
+          startTime: null,
+          endTime: null
+        }
+        this.getList()
       },
       onShopOperation(type, row) { // 添加或修改
         let params = {
@@ -335,7 +571,53 @@
           },
           fileName: '商品导入模板.xlsx'
         })
-      }
+      },
+      onFormClose(formName) {
+        // 关闭弹窗重置验证
+        this.$refs[formName].resetFields();
+      },
+      removeGoodsList(item) {
+        const index = this.form.goodsList.indexOf(item)
+        if (index !== -1) {
+          this.form.goodsList.splice(index, 1)
+        }
+      },
+      addGoodsList() {
+        this.form.goodsList.push({
+          id: null,
+          number: null
+        })
+      },
+      onShopSubmit(formName) {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            console.log(this.form)
+            // if (this.pageType == 'create') {
+            //   if (this.form.id) { // 判断有没有Id,如果有则删除
+            //     delete this.form.id
+            //   }
+            //   this.form.status = 'YES' // 默认上架
+            //   goodsAdd(this.form).then(res => {
+            //     this.messageTips('添加', res)
+            //   })
+            // } else if (this.pageType == 'update') {
+            //   goodsUpdate(this.form).then(res => {
+            //     this.messageTips('修改', res)
+            //   })
+            // }
+          } else {
+            return false
+          }
+        })
+      },
+      messageTips(title, res) {
+        if (res.code == 200) {
+          this.$message.success(title + '成功')
+          this.getList()
+        } else {
+          this.$message.error(res.msg)
+        }
+      },
     }
   }
 </script>

+ 65 - 20
src/views/businessManager/shopManager/shopOperation.vue

@@ -12,7 +12,7 @@
         <el-form-item label="品牌" prop="brand">
           <el-input v-model.trim="form.brand" placeholder="请输入品牌" style="width: 400px"></el-input>
         </el-form-item>
-        <el-form-item label="备查货号" prop="supplyChannel">
+        <el-form-item label="备查货号" prop="supplyChannel" v-if="pageType == 'create'">
           <el-input v-model.trim="form.supplyChannel" placeholder="请输入备查货号" style="width: 400px"></el-input>
         </el-form-item>
         <el-form-item label="商品名称" prop="name">
@@ -36,15 +36,17 @@
           <el-input v-model.trim="form.specification" placeholder="请输入商品型号" style="width: 400px"></el-input>
         </el-form-item>
         <el-form-item label="内部库存" prop="stockCount">
-          <el-input type="number" v-model.trim="form.stockCount" placeholder="请输入内部库存" style="width: 400px"></el-input>
+          <el-input type="number" :disabled="pageType != 'create'" v-model.trim="form.stockCount" placeholder="请输入内部库存" style="width: 400px"></el-input>
         </el-form-item>
         <el-form-item label="税务库存" prop="taxStockCount">
-          <el-input type="number" v-model.trim="form.taxStockCount" placeholder="请输入税务库存" style="width: 400px"></el-input>
+          <el-input type="number" :disabled="pageType != 'create'" v-model.trim="form.taxStockCount" placeholder="请输入税务库存" style="width: 400px"></el-input>
         </el-form-item>
         <el-form-item label="库存类型" prop="stockType">
-          <el-select v-model="form.stockType" placeholder="请选择库存类型" style="width: 400px !important;" multiple>
-            <el-option label="内部" value="INTERNAL"></el-option>
-            <el-option label="外部" value="EXTERNAL"></el-option>
+          <el-select v-model="form.stockType" :disabled="pageType != 'create'" placeholder="请选择库存类型" style="width: 400px !important;">
+            <el-option v-for="(item, index) in stockType"
+                       :key="index"
+                       :label="item.label"
+                       :value="item.value"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="商品价格" prop="marketPrice">
@@ -54,9 +56,15 @@
           <el-input type="number" placeholder="请输入商品团购价" @mousewheel.native.prevent v-model.trim="form.groupPurchasePrice" style="width: 400px"></el-input>
         </el-form-item>
         <el-form-item label="是否APP展示" prop="clientShow">
-          <el-select v-model="form.clientShow" placeholder="请选择库存类型" style="width: 400px !important;">
-            <el-option label="是" value="1"></el-option>
-            <el-option label="否" value="0"></el-option>
+          <el-select v-model="form.clientShow" placeholder="请选择是否APP展示" style="width: 400px !important;">
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否库存预警" prop="stockWarning">
+          <el-select v-model="form.stockWarning" placeholder="请选择库存预警" style="width: 400px !important;">
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="商品图片" prop="image">
@@ -70,7 +78,7 @@
           <el-input type="textarea" v-model.trim="form.brief" style="width: 400px"></el-input>
         </el-form-item>
         <el-form-item label="商品详情" prop="desc">
-		  <el-input type="textarea" v-model.trim="form.desc" style="width: 400px"></el-input>
+		      <el-input type="textarea" v-model.trim="form.desc" style="width: 400px"></el-input>
         </el-form-item>
         <el-form-item>
           <el-button @click="onSubmit('form')" type="primary">立即{{ pageType == "create" ? '创建' : '修改' }}</el-button>
@@ -90,7 +98,7 @@
   import {
     getToken
   } from '@/utils/auth'
-  import { goodsType } from '@/utils/searchArray'
+  import { goodsType, stockType } from '@/utils/searchArray'
   let validPrice = (rule, value, callback) => {
     if (value == '' && typeof value == 'string' || value == null) {
       callback(new Error('请输入金额'))
@@ -102,11 +110,21 @@
       callback()
     }
   }
+  let validStock = (rule, value, callback) => {
+    if(value == '' && typeof value == 'string' || value == null) {
+      callback(new Error('请输入库存'))
+    } else if(value < 0) {
+      callback(new Error('库存数量必须大于或等于0'))
+    } else {
+      callback()
+    }
+  }
   export default {
     name: 'shopOperation',
     data() {
       return {
         goodsType: goodsType,
+        stockType: stockType,
         categoryList: [],
         pageType: null,
         headers: {
@@ -120,9 +138,13 @@
           type: null,
           goodsCategoryId: null,
           specification: null,
+          stockCount: null,
+          taxStockCount: null,
+          stockType: null,
           marketPrice: null,
           groupPurchasePrice: null,
-          discountPrice: null,
+          clientShow: null,
+          stockWarning: null,
           image: null,
           brief: null,
           desc: null
@@ -141,6 +163,9 @@
               trigger: 'blur'
             }
           ],
+          supplyChannel: [
+            {required: true, message:'请输入备查货号', trigger: 'blur'}
+          ],
           name: [{
               required: true,
               message: '请输入商品名称',
@@ -175,6 +200,15 @@
               trigger: 'blur'
             }
           ],
+          stockCount: [
+            {required: true, validator: validStock, trigger: 'blur'}
+          ],
+          taxStockCount: [
+            {required: true, validator: validStock, trigger: 'blur'}
+          ],
+          stockType: [
+            {required: true, message: '请选择库存类型', trigger: 'change' }
+          ],
           marketPrice: [{
             required: true,
             validator: validPrice,
@@ -185,11 +219,12 @@
             validator: validPrice,
             trigger: 'blur'
           }],
-          discountPrice: [{
-            required: true,
-            validator: validPrice,
-            trigger: 'blur'
-          }],
+          clientShow: [
+            {required: true, message: '请选择是否APP展示', trigger: 'change' }
+          ],
+          stockWarning: [
+            {required: true, message: '请选择是否库存预警', trigger: 'change' }
+          ],
           image: [{
             required: true,
             message: '请选择图片',
@@ -288,16 +323,21 @@
           this.form = {
             sn: null,
             brand: null,
+            supplyChannel: null,
             name: null,
             type: null,
             goodsCategoryId: null,
             specification: null,
+            stockCount: null,
+            taxStockCount: null,
+            stockType: null,
             marketPrice: null,
             groupPurchasePrice: null,
-            discountPrice: null,
+            clientShow: null,
+            stockWarning: null,
             image: null,
             brief: null,
-            desc: null,
+            desc: null
           }
           if (this.$refs['form']) {
             this.$refs['form'].resetFields();
@@ -311,13 +351,18 @@
                 id: result.id,
                 sn: result.sn,
                 brand: result.brand,
+                supplyChannel: result.supplyChannel,
                 name: result.name,
                 type: result.type,
                 goodsCategoryId: result.goodsCategoryId,
                 specification: result.specification,
+                stockCount: result.stockCount,
+                taxStockCount: result.taxStockCount,
+                stockType: result.stockType,
                 marketPrice: result.marketPrice,
                 groupPurchasePrice: result.groupPurchasePrice,
-                discountPrice: result.discountPrice,
+                clientShow: result.clientShow,
+                stockWarning: result.stockWarning,
                 image: result.image,
                 brief: result.brief,
                 desc: result.desc