ソースを参照

fix:商品上线限制只能选择贵金属和非贵金属商品

snow 1 年間 前
コミット
f81660f304

+ 22 - 1
src/components/search-good-modal/main.vue

@@ -168,7 +168,7 @@ export default {
   computed: {
     ...mapGetters(['tablebtnSize', 'searchSize', 'size'])
   },
-  props: ['showModel', 'once', 'isonline', 'is_stock'],
+  props: ['showModel', 'once', 'isonline', 'is_stock', 'isNoble', 'checkType'],
 
   /**
    * 属性集合
@@ -357,6 +357,27 @@ export default {
         this.$message.warning('只能选择一条商品信息!')
         return
       }
+
+      if (this.checkType) {
+        const categoryIds = selection.map(({ cat_info }) => String(cat_info[0].id))
+        const nobleMetalIds = categoryIds.filter(id => id === '6')
+        if (nobleMetalIds.length > 0 && categoryIds.length !== nobleMetalIds.length) {
+          this.$message.warning('勾选商品的分类必须全部为"贵金属"或全部为"非贵金属"')
+          return
+        }
+
+        const isNoble = nobleMetalIds.length > 0 && categoryIds.length === nobleMetalIds.length
+        if ((isNoble && !this.isNoble) && this.isNoble !== null) {
+          this.$message.warning('如需添加 "贵金属商品",请将已添加的所有 "非贵金属商品" 删除!')
+          return
+        }
+
+        if ((!isNoble && this.isNoble) && this.isNoble !== null) {
+          this.$message.warning('如需添加 "非贵金属商品",请将已添加的所有 "贵金属商品" 删除!')
+          return
+        }
+      }
+
       this.showModelThis = false
       this.$emit('resultList', selection)
     }

+ 86 - 71
src/views/goodStore/goodsCost/components/addEdit.vue

@@ -37,7 +37,7 @@
                     :src="scope.row.good_thumb_img"
                     style="display: inline-block; width: 100%; height: 100%"
                     alt
-                  />
+                  >
                 </div>
               </template>
             </el-table-column>
@@ -51,7 +51,7 @@
                   :type="scope.row.good_type == '1' ? '' : 'warning'"
                   v-text="
                     (options1.find((item) => item.id == scope.row.status) || {}).name ||
-                    '--'
+                      '--'
                   "
                 />
               </template>
@@ -86,8 +86,12 @@
 
                 <el-form-item label="定价模式" prop="is_fixed">
                   <el-select v-model="ruleForm.is_fixed" style="width:100%">
-                    <el-option label="一口价" value="1" />
-                    <el-option label="实时金价" value="0" />
+                    <el-option
+                      v-for="p in pricingOptions"
+                      :key="p.value"
+                      :value="p.value"
+                      :label="p.label"
+                    />
                   </el-select>
                 </el-form-item>
 
@@ -115,7 +119,7 @@
                 <el-button v-if="id !== '007'" type="primary" :size="'mini'" @click="submitForm">保 存</el-button>
                 <el-button :size="'mini'" @click="showModelThis = false">
                   {{
-                  id == "007" ? "关 闭" : "取 消"
+                    id == "007" ? "关 闭" : "取 消"
                   }}
                 </el-button>
               </el-col>
@@ -127,163 +131,174 @@
   </el-dialog>
 </template>
 <script>
-import asyncRequest from "@/apis/service/goodStore/goodsCost";
-import resToken from "@/mixins/resToken";
-import { replaceTextWrapAndSpace } from "@/utils";
+import asyncRequest from '@/apis/service/goodStore/goodsCost'
+import resToken from '@/mixins/resToken'
+import { replaceTextWrapAndSpace } from '@/utils'
 export default {
-  name: "Brand",
+  name: 'Brand',
   mixins: [resToken],
-  props: ["showModel", "id", "sitem"],
+  props: ['showModel', 'id', 'sitem', 'isNobleMetal'],
   data() {
     return {
       loading: false,
       showModelThis: this.showModel,
       ruleForm: {
-        platform: "", // string	平台id
-        is_fixed: "", // string 定价模式
-        online_reason: "", // string	上线原因
-        online_remark: "" // string	上线备注
+        platform: '', // string	平台id
+        is_fixed: '', // string 定价模式
+        online_reason: '', // string	上线原因
+        online_remark: '' // string	上线备注
       },
       // 是否定制
       options1: [
-        { id: "0", name: "否" },
-        { id: "1", name: "是" }
+        { id: '0', name: '否' },
+        { id: '1', name: '是' }
       ],
       rulesThis: this.rules,
       rules: {
         platform: [
           {
             required: true,
-            message: "请选择所属平台",
-            trigger: "change"
+            message: '请选择所属平台',
+            trigger: 'change'
           }
         ],
         is_fixed: [
           {
             required: true,
-            message: "请选择定价模式",
-            trigger: "change"
+            message: '请选择定价模式',
+            trigger: 'change'
           }
         ],
         online_reason: [
           {
             required: true,
-            message: "上线原因不能为空",
-            trigger: "blur"
+            message: '上线原因不能为空',
+            trigger: 'blur'
           }
         ],
         online_remark: [
           {
             required: true,
-            message: "上线备注不能为空",
-            trigger: "blur"
+            message: '上线备注不能为空',
+            trigger: 'blur'
           }
         ]
       }
-    };
+    }
+  },
+  computed: {
+    pricingOptions() {
+      const inm = this.isNobleMetal
+      return ([
+        { value: '1', label: '一口价' },
+        ...(inm ? [{ value: '0', label: '实时金价' }] : [])
+      ])
+    }
   },
   watch: {
     showModel: function(val) {
-      this.showModelThis = val;
+      this.showModelThis = val
       if (val) {
-        this.initForm();
+        this.initForm()
       }
     },
     showModelThis(val) {
       if (!val) {
-        this.$emit("cancel");
+        this.$emit('cancel')
       }
     }
   },
   methods: {
     async initForm() {
-      this.loading = true;
-      this.rulesThis = this.rules;
-      await this.resetForm();
-      this.loading = false;
+      this.loading = true
+      this.rulesThis = this.rules
+      await this.resetForm()
+      this.loading = false
     },
     async resetForm() {
       // 重置
       await this.$nextTick(() => {
         if (this.$refs.ruleForm) {
-          this.$refs.ruleForm.resetFields();
-          this.$refs.ruleForm.clearValidate();
+          this.$refs.ruleForm.resetFields()
+          this.$refs.ruleForm.clearValidate()
           this.ruleForm = {
-            platform: "", // string	平台id
-            online_reason: "", // string	上线原因
-            online_remark: "" // string	上线备注
-          };
+            platform: '', // string	平台id
+            online_reason: '', // string	上线原因
+            online_remark: '' // string	上线备注
+          }
         }
-      });
+      })
     },
     platform_codesearchChange(e) {
-      const { id, code, label } = e;
-      this.ruleForm.platform = id || "";
-      this.$refs.ruleForm.validateField("platform");
+      const { id, code, label } = e
+      this.ruleForm.platform = id || ''
+      this.$refs.ruleForm.validateField('platform')
     },
     async submitForm() {
       this.ruleForm.online_remark = replaceTextWrapAndSpace(
         this.ruleForm.online_remark
-      );
+      )
       await this.$refs.ruleForm.validate(async valid => {
         if (valid) {
           if (!this.loading) {
-            this.loading = true;
-            const model = JSON.parse(JSON.stringify(this.ruleForm));
+            this.loading = true
+            const model = JSON.parse(JSON.stringify(this.ruleForm))
             // model.platform = model.platform.toString();
-            model.codes = [];
-            const list = JSON.parse(JSON.stringify(this.sitem));
+            model.codes = []
+            const list = JSON.parse(JSON.stringify(this.sitem))
             list.forEach(e => {
-              model.codes.push(e.spuCode);
-            });
+              model.codes.push(e.spuCode)
+            })
             const { code, data, message } = await asyncRequest.online_add(
               model
-            );
-            this.loading = false;
+            )
+            this.loading = false
             if (code === 0) {
               this.$notify.success({
-                title: "已成功添加至上线流程!",
-                message: ""
-              });
-              this.showModelThis = false;
+                title: '已成功添加至上线流程!',
+                message: ''
+              })
+              this.showModelThis = false
               // 刷新
-              this.$emit("refresh");
+              this.$emit('refresh')
             } else if (code >= 100 && code <= 104) {
-              await this.logout();
+              await this.logout()
+            } else if (message === '一口价商品请先完善商品成本单价') {
+              this.$message.warning(message)
             } else if (code === 1004) {
               this.open_show(
                 data,
-                "以下商品的业务公司和平台支付渠道中的业务公司重复,不允许上线"
-              );
+                '以下商品的业务公司和平台支付渠道中的业务公司重复,不允许上线'
+              )
             } else if (code === 1009) {
-              this.open_show(data, "以下商品已申请过商品上线!");
+              this.open_show(data, '以下商品已申请过商品上线!')
             } else if (code === 1010) {
-              this.open_show(data, "该平台要求商品必须要有一件的成本!");
+              this.open_show(data, '该平台要求商品必须要有一件的成本!')
             } else {
-              this.$message.warning(message);
+              this.$message.warning(message)
             }
           }
         } else {
-          return false;
+          return false
         }
-      });
+      })
     },
     open_show(data, title) {
-      const resList = JSON.parse(JSON.stringify(data));
-      let htmlList = "<ul>";
+      const resList = JSON.parse(JSON.stringify(data))
+      let htmlList = '<ul>'
       resList.forEach(v => {
         htmlList += `<li>
-                  <span>${v.good_name}</span></li>`;
-      });
-      htmlList += "</ul>";
+                  <span>${v.good_name}</span></li>`
+      })
+      htmlList += '</ul>'
       this.$notify({
         title: title,
         dangerouslyUseHTMLString: true,
         message: htmlList
-      });
+      })
     }
   }
-};
+}
 </script>
 
 <style lang="scss" scoped>

+ 9 - 15
src/views/goodStore/goodsCost/components/baseForm.vue

@@ -214,8 +214,8 @@
                     :name="'ruleForm.noble_weight'"
                     :min="0"
                     :disabled="
-                      type === 'view' || 
-                      type === 'editBase' || 
+                      type === 'view' ||
+                      type === 'editBase' ||
                       type === 'editCoin'
                     "
                     :max="100000000000"
@@ -271,8 +271,8 @@
                     filterable
                     clearable
                     :disabled="
-                      type === 'view' || 
-                      type === 'editBase' || 
+                      type === 'view' ||
+                      type === 'editBase' ||
                       type === 'editCoin'
                     "
                     style="width: 100%"
@@ -1259,9 +1259,6 @@ export default {
 
       this.editIndex = -1;
     },
-    onCompanyChange() {
-      this.supplierNosearchChange({ code: this.currentCompany });
-    },
     onChildProdChange(index = null, type = "view") {
       this.modalType = type;
 
@@ -1298,15 +1295,12 @@ export default {
     handleProductSelected(evt) {
       const { childCode, child_name } = evt;
       const item = { childCode, child_name, child_num: 1 };
-      this.childTableData.push(item);
+      const childCodes = this.childTableData.map(({childCode}) => childCode)
+
+      if(!childCodes.includes(childCode)){
+        this.childTableData.push(item);
+      }
     },
-    // handleChildProductChange(product, index) {
-    // if (index === -1) {
-    // this.childTableData.push(product);
-    // return;
-    // }
-    // this.$set(this.childTableData, index, product);
-    // },
     onCompanyChange() {
       if (this.type === "add") {
         this.ruleForm.company_id = this.currentCompany;

+ 13 - 0
src/views/goodStore/goodsCost/index.vue

@@ -483,6 +483,7 @@
     </el-dialog>
     <add-edit
       :id="''"
+      :isNobleMetal="isNobleMetal"
       :sitem="changeList"
       :show-model="showModel"
       :is-detail="false"
@@ -535,6 +536,7 @@ export default {
       }
     };
     return {
+      isNobleMetal:false,
       dialogFormVisible: false,
       has_account_list,
       donline_formStOps: [],
@@ -970,6 +972,17 @@ export default {
         this.$message.warning("商品数量不能超过100!");
         return;
       }
+
+      const categoryIds = this.changeList.map(({cat_info}) => String(cat_info[0].id))
+      const nobleMetalIds = categoryIds.filter(id => id === '6')
+
+      if(nobleMetalIds.length > 0 && categoryIds.length !== nobleMetalIds.length){
+        this.$message.warning('勾选商品的分类必须全部为"贵金属"或全部为"非贵金属"')
+        return
+      }
+
+      this.isNobleMetal = nobleMetalIds.length > 0 && categoryIds.length === nobleMetalIds.length;
+
       let isok = true;
       this.changeList.forEach(e => {
         if (String(e.status) !== "1") {

+ 35 - 3
src/views/goodStore/goodsOnline/add.vue

@@ -27,8 +27,12 @@
 
             <el-form-item label="定价模式" prop="is_fixed">
               <el-select v-model="ruleForm.is_fixed" style="width:100%" placeholder="定价模式">
-                <el-option value="0" label="实时金价" />
-                <el-option value="1" label="一口价" />
+                <el-option
+                  v-for="f in fixedOptions"
+                  :key="f.value"
+                  :value="f.value"
+                  :label="f.label"
+                />
               </el-select>
             </el-form-item>
 
@@ -123,6 +127,8 @@
             </el-table>
             <!--添加商品-->
             <search-good-modal
+              :is-noble="isNoble"
+              :check-type="true"
               :showModel="showModel"
               :once="false"
               @resultList="resultList"
@@ -163,6 +169,12 @@ export default {
         ) || {};
       const { action } = tran ?? {};
       return action ?? [];
+    },
+    fixedOptions(){
+      return [
+        {value:'1',label:'一口价'},
+        ...(this.isNoble ? [{ value: '0', label: '实时金价' }] : [])
+      ]
     }
   },
   watch: {
@@ -170,10 +182,16 @@ export default {
       if (val) {
         this.initForm();
       }
+    },
+    isNoble(){
+      if(this.ruleForm.is_fixed === '0'){
+        this.ruleForm.is_fixed = ""
+      }
     }
   },
   data() {
     return {
+      isNoble: null,
       tableData: [],
       costshowModel: false,
       costmodelIndex: "",
@@ -203,18 +221,30 @@ export default {
 
     openDel(index) {
       this.tableData.splice(index, 1);
+      if(this.tableData.length === 0){
+        this.isNoble = null
+      }
     },
     resultList(e) {
       this.showModel = false;
       let list = JSON.parse(JSON.stringify(e));
       let oldList = JSON.parse(JSON.stringify(this.tableData));
+      const categoryIds = list.map(({ cat_info }) => String(cat_info[0].id))
+      const nobleIds = categoryIds.filter(id => id === '6')
+      this.isNoble = nobleIds.length > 0 && categoryIds.length === nobleIds.length;
+
       list.forEach((e, ei) => {
-        let index = oldList.findIndex(a => e.spucode === a.spucode);
+        let index = oldList.findIndex(a => {
+          return e.spuCode === a.spuCode
+        });
+
         if (index === -1) {
           let item = JSON.parse(JSON.stringify(list[ei]));
           this.tableData.push(item);
         }
       });
+
+      console.log(this.tableData)
     },
     async submitForm() {
       this.ruleForm.online_remark = replaceTextWrapAndSpace(
@@ -251,6 +281,8 @@ export default {
               this.routeReGoto("goodsOnline", {});
             } else if (code >= 100 && code <= 104) {
               await this.logout(code <= 104);
+            } else if (message === '一口价商品请先完善商品成本单价') {
+              this.$message.warning(message)
             } else if (code === 1004) {
               this.open_show(
                 data,

+ 8 - 12
src/views/goodStore/supplierGoodsCost/components/baseForm.vue

@@ -218,8 +218,8 @@
                     :name="'ruleForm.noble_weight'"
                     :min="0"
                     :disabled="
-                      type === 'view' || 
-                      type === 'editBase' || 
+                      type === 'view' ||
+                      type === 'editBase' ||
                       type === 'editCoin'
                     "
                     :max="100000000000"
@@ -275,8 +275,8 @@
                     filterable
                     clearable
                     :disabled="
-                      type === 'view' || 
-                      type === 'editBase' || 
+                      type === 'view' ||
+                      type === 'editBase' ||
                       type === 'editCoin'
                     "
                     style="width: 100%"
@@ -1302,15 +1302,11 @@ export default {
     handleProductSelected(evt) {
       const { childCode, child_name } = evt;
       const item = { childCode, child_name, child_num: 1 };
-      this.childTableData.push(item);
+      const childCodes = this.childTableData.map(({childCode}) => childCode)
+      if(!childCodes.includes(childCode)){
+        this.childTableData.push(item);
+      }
     },
-    // handleChildProductChange(product, index) {
-    // if (index === -1) {
-    // this.childTableData.push(product);
-    // return;
-    // }
-    // this.$set(this.childTableData, index, product);
-    // },
     onCompanyChange() {
       if (this.type === "add") {
         this.ruleForm.company_id = this.currentCompany;

+ 6 - 0
src/views/sellOut/combinedAdd/components/baseForm.vue

@@ -35,6 +35,12 @@
             }}
           </template>
 
+          <template slot="is_combind">
+            {{
+              String(productinfo.is_combind) === '1' ? '组合商品' : '非组合商品'
+            }}
+          </template>
+
           <template slot="good_name">
             <img
               v-if="productinfo.good_thumb_img"

+ 276 - 273
src/views/sellOut/combinedAdd/components/columnsForm.js

@@ -1,278 +1,281 @@
 export default [
-    {
-        prop: "orderCode",
-        label: "竞价订单编号",
-        col: "8",
-    },
-    {
-        prop: "class_cat",
-        label: "商品分类",
-        col: "16",
-    },
-    {
-        prop: "good_code",
-        label: "商品编号",
-        col: "8",
-    },
-    {
-        prop: "good_name",
-        label: "商品名称",
-        col: "16",
-    },
-
-
-    {
-        prop: "diff_price",
-        label: "工差总金额",
-        col: "8",
-    },
-    {
-        prop: "diff_weight",
-        label: "工差总重量",
-        col: "8",
-    },
-    {
-        prop: "gold_price",
-        label: "金价",
-        col: "8",
-    },
-]
-
+  {
+    prop: "orderCode",
+    label: "竞价订单编号",
+    col: "8",
+  },
+  {
+    prop: "class_cat",
+    label: "商品分类",
+    col: "16",
+  },
+  {
+    prop: "good_code",
+    label: "商品编号",
+    col: "8",
+  },
+  {
+    prop: "good_name",
+    label: "商品名称",
+    col: "16",
+  },
+  {
+    prop: "diff_price",
+    label: "工差总金额",
+    col: "8",
+  },
+  {
+    prop: "diff_weight",
+    label: "工差总重量",
+    col: "8",
+  },
+  {
+    prop: "gold_price",
+    label: "金价",
+    col: "8",
+  },
+];
 
 export const stockColumns = [
-    {
-        label:'仓库名称',
-        prop:'name',
-        span:'12'
-    },
-    {
-        label:'仓库负责人',
-        prop:'contactor_name',
-        span:'6'
-    },
-    {
-        label:'负责人电话',
-        prop:'mobile',
-        span:'6'
-    },
-    {
-        label:'所在业务公司',
-        prop:'companyName',
-        span:'12'
-    },
-    {
-        label:'所在供应商公司',
-        prop:'supplierName',
-        span:'12'
-    },
-    {
-        label:'仓库所在省市区',
-        prop:'source',
-        span:12
-    },
-    {
-        label:'仓库所在详细地址',
-        prop:'addr',
-        span:6
-    },
-    {
-        label:'仓库类型',
-        prop:'type_name',
-        span:6
-    },
-    {
-      label:'收发货省市区',
-      prop:'target',
-      span:12
-    },
-    {
-        label:'收发货详细地址',
-        prop:'wsm_addr',
-        span:12
-    },
-    {
-        label:'收发货联系人',
-        prop:'wsm_name',
-        span:6
-    },
-    {
-        label:'联系人职位',
-        prop:'position',
-        span:6
-    },
-    {
-        label:'联系人电话',
-        prop:'wsm_mobile',
-        span:12
-    },
-]
+  {
+    label: "仓库名称",
+    prop: "name",
+    span: "12",
+  },
+  {
+    label: "仓库负责人",
+    prop: "contactor_name",
+    span: "6",
+  },
+  {
+    label: "负责人电话",
+    prop: "mobile",
+    span: "6",
+  },
+  {
+    label: "所在业务公司",
+    prop: "companyName",
+    span: "12",
+  },
+  {
+    label: "所在供应商公司",
+    prop: "supplierName",
+    span: "12",
+  },
+  {
+    label: "仓库所在省市区",
+    prop: "source",
+    span: 12,
+  },
+  {
+    label: "仓库所在详细地址",
+    prop: "addr",
+    span: 6,
+  },
+  {
+    label: "仓库类型",
+    prop: "type_name",
+    span: 6,
+  },
+  {
+    label: "收发货省市区",
+    prop: "target",
+    span: 12,
+  },
+  {
+    label: "收发货详细地址",
+    prop: "wsm_addr",
+    span: 12,
+  },
+  {
+    label: "收发货联系人",
+    prop: "wsm_name",
+    span: 6,
+  },
+  {
+    label: "联系人职位",
+    prop: "position",
+    span: 6,
+  },
+  {
+    label: "联系人电话",
+    prop: "wsm_mobile",
+    span: 12,
+  },
+];
 
 export const productColumns = [
-    {
-      prop: 'cat_info',
-      label: '商品分类',
-      span: 8,
-      _slot_: 'cat_info'
-    },
-    {
-      prop: 'good_img',
-      label: '商品主图',
-      _slot_: 'good_img',
-      span: 8
-    },
-    {
-      prop: 'good_info_img',
-      _slot_: 'good_info_img',
-      label: '详情图片',
-      span: 8
-    },
-    {
-      prop: 'good_name',
-      label: '商品名称',
-      _slot_: 'good_name',
-      span: 24
-    },
-    {
-      prop: 'company',
-      label: '业务公司',
-      span: 12
-    },
-    {
-      prop: 'supplierName',
-      label: '供应商',
-      span: 12
-    },
-    {
-      prop: 'brand_name',
-      label: '商品品牌',
-      span: 6
-    },
-    {
-      prop: 'is_auth',
-      label: '销售权限',
-      _slot_: 'is_auth',
-      span: 6
-    },
-    {
-      prop: 'unit',
-      label: '单位',
-      span: 6
-    },
-    {
-      prop: 'tax',
-      label: '税点',
-      _slot_: 'tax',
-      span: 6
-    },
-    {
-      prop: 'is_exclusive',
-      label: '专属类型',
-      _slot_: 'is_exclusive',
-      span: 8
-    },
-    {
-      prop: 'weight',
-      label: '商品总重量',
-      _slot_: 'weight',
-      span: 8
-    },
-    {
-      prop: 'is_stock',
-      label: '是否库存品',
-      _slot_: 'is_stock',
-      span: 8
-    },
-    {
-      prop: 'noble',
-      _slot_: 'noble',
-      label: '贵金属信息',
-      span: 24
-    },
-    {
-      prop: 'after_sales',
-      label: '售后说明',
-      span: 24
-    },
-    {
-      prop: 'good_remark',
-      label: '商品备注',
-      span: 24
-    },
-    {
-      prop: 'craft_desc',
-      label: '工艺说明',
-      span: 24
-    },
-    {
-      prop: 'packing_way',
-      label: '包装方式',
-      span: 6
-    },
-    {
-      prop: 'packing_spec',
-      label: '装箱规格',
-      span: 6
-    },
-    {
-      prop: 'packing_weight',
-      label: '装箱重量',
-      _slot_: 'packing_weight',
-      span: 6
-    },
-    {
-      prop: 'packing_size',
-      label: '装箱尺寸',
-      span: 6
-    },
-    {
-      prop: 'good_size',
-      label: '装箱尺寸',
-      span: 6
-    },
-    {
-      prop: 'good_bar',
-      label: '商品条形码',
-      span: 6
-    },
-    {
-      prop: 'packing_list',
-      label: '商品清单',
-      span: 12
-    },
-    {
-      prop: 'packing_spec',
-      label: '供货区域',
-      span: 6,
-      _slot_: 'packing_spec'
-    },
-    {
-      prop: 'delivery_day',
-      label: '物流天数',
-      _slot_: 'delivery_day',
-      span: 6
-    },
-    {
-      prop: 'lead_time',
-      label: '供货周期',
-      _slot_: 'lead_time',
-      span: 6
-    },
-    {
-      prop: 'sample_day',
-      label: '调样周期',
-      _slot_: 'sample_day',
-      span: 6
-    },
-    {
-      prop: 'delivery_place',
-      label: '发货地',
-      span: 12,
-      _slot_: 'delivery_place'
-    },
-    {
-      prop: 'origin_place',
-      label: '产地',
-      span: 12,
-      _slot_: 'origin_place'
-    }
-  ]
+  {
+    prop: "cat_info",
+    label: "商品分类",
+    span: 8,
+    _slot_: "cat_info",
+  },
+  {
+    prop: "good_img",
+    label: "商品主图",
+    _slot_: "good_img",
+    span: 8,
+  },
+  {
+    prop: "good_info_img",
+    _slot_: "good_info_img",
+    label: "详情图片",
+    span: 8,
+  },
+  {
+    prop: "good_name",
+    label: "商品名称",
+    _slot_: "good_name",
+    span: 24,
+  },
+  {
+    prop: "company",
+    label: "业务公司",
+    span: 12,
+  },
+  {
+    prop: "supplierName",
+    label: "供应商",
+    span: 12,
+  },
+  {
+    prop: "brand_name",
+    label: "商品品牌",
+    span: 6,
+  },
+  {
+    prop: "is_auth",
+    label: "销售权限",
+    _slot_: "is_auth",
+    span: 6,
+  },
+  {
+    prop: "unit",
+    label: "单位",
+    span: 6,
+  },
+  {
+    prop: "tax",
+    label: "税点",
+    _slot_: "tax",
+    span: 6,
+  },
+  {
+    prop: "is_exclusive",
+    label: "专属类型",
+    _slot_: "is_exclusive",
+    span: 6,
+  },
+  {
+    prop: "weight",
+    label: "商品总重量",
+    _slot_: "weight",
+    span: 6,
+  },
+  {
+    prop: "is_stock",
+    label: "是否库存品",
+    _slot_: "is_stock",
+    span: 6,
+  },
+  {
+    prop: "is_combind",
+    label: "组合类型",
+    _slot_: "is_combind",
+    span: 6,
+  },
+  {
+    prop: "noble",
+    _slot_: "noble",
+    label: "贵金属信息",
+    span: 24,
+  },
+  {
+    prop: "after_sales",
+    label: "售后说明",
+    span: 24,
+  },
+  {
+    prop: "good_remark",
+    label: "商品备注",
+    span: 24,
+  },
+  {
+    prop: "craft_desc",
+    label: "工艺说明",
+    span: 24,
+  },
+  {
+    prop: "packing_way",
+    label: "包装方式",
+    span: 6,
+  },
+  {
+    prop: "packing_spec",
+    label: "装箱规格",
+    span: 6,
+  },
+  {
+    prop: "packing_weight",
+    label: "装箱重量",
+    _slot_: "packing_weight",
+    span: 6,
+  },
+  {
+    prop: "packing_size",
+    label: "装箱尺寸",
+    span: 6,
+  },
+  {
+    prop: "good_size",
+    label: "装箱尺寸",
+    span: 6,
+  },
+  {
+    prop: "good_bar",
+    label: "商品条形码",
+    span: 6,
+  },
+  {
+    prop: "packing_list",
+    label: "商品清单",
+    span: 12,
+  },
+  {
+    prop: "packing_spec",
+    label: "供货区域",
+    span: 6,
+    _slot_: "packing_spec",
+  },
+  {
+    prop: "delivery_day",
+    label: "物流天数",
+    _slot_: "delivery_day",
+    span: 6,
+  },
+  {
+    prop: "lead_time",
+    label: "供货周期",
+    _slot_: "lead_time",
+    span: 6,
+  },
+  {
+    prop: "sample_day",
+    label: "调样周期",
+    _slot_: "sample_day",
+    span: 6,
+  },
+  {
+    prop: "delivery_place",
+    label: "发货地",
+    span: 12,
+    _slot_: "delivery_place",
+  },
+  {
+    prop: "origin_place",
+    label: "产地",
+    span: 12,
+    _slot_: "origin_place",
+  },
+];