xieruidong il y a 2 ans
Parent
commit
9c4f4b155c
2 fichiers modifiés avec 83 ajouts et 67 suppressions
  1. 29 29
      application/admin/view/goods/add.html
  2. 54 38
      public/assets/js/backend/goods.js

+ 29 - 29
application/admin/view/goods/add.html

@@ -129,47 +129,47 @@
                     </div>
                 </div>
             </el-form-item>
-            <el-form-item label="尺寸" prop="size">
-                <el-button size="mini" @click="addSize('size')">添加</el-button>
-                <div style="padding-left: 1px;">
-                    <div v-for="(item,idx) in form.size" :key="idx" class="sizeSpecItem">
-                        <el-input class="sInput" v-model="item.name" placeholder="输入尺寸"></el-input>
-                        <el-button @click="delSize('size',idx)" size="mini" type="danger">删除</el-button>
+            <el-form-item label="规格" prop="size">
+                <el-button size="mini" @click="addMain()">添加规格</el-button>
+                <div v-for="(spec,idx) in form.size" :key="idx" style="margin-top: 10px;background: #F2F6FC;">
+                    <div>
+                        规格名:<el-input v-model="spec.type" class="smInput" placeholder="规格名"></el-input>
+                        <el-button @click="delMain(idx)" size="mini" type="text">删除</el-button>
                     </div>
-                </div>
-            </el-form-item>
-            <el-form-item label="规格" prop="spec">
-                <el-button size="mini" @click="addSize('spec')">添加</el-button>
-                <div style="padding-left: 1px;">
-                    <div v-for="(item,idx) in form.spec" :key="idx" class="sizeSpecItem">
-                        <el-input class="sInput" v-model="item.name" placeholder="输入规格"></el-input>
-                        <el-button @click="delSize('spec',idx)" size="mini" type="danger">删除</el-button>
+                    <el-button size="mini" @click="addName(spec)">添加规格值</el-button>
+                    <div style="padding-left: 1px;">
+                        <div v-for="(item,idx) in spec.names" :key="idx" class="sizeSpecItem">
+                            <el-input class="sInput" v-model="item.name" placeholder="输入规格值" @input="nameChange(idx)"></el-input>
+                            <el-button @click="delSize(spec,idx)" size="mini" type="text">删除</el-button>
+                        </div>
                     </div>
                 </div>
             </el-form-item>
             <el-form-item label="参数" prop="sku">
                 <div>
-                    <div v-for="(size,sizeIdx) in form.sku" :key="sizeIdx">
+                    <div v-for="(sku,sizeIdx) in form.sku" :key="sizeIdx">
                         <div>
-                            <div class="name">{{size.size.name}}&{{size.spec.name}}</div>
-                            <el-input :controls="false" :min="0" :step="1" v-model="size.num_stock" class="sInput" placeholder="库存"></el-input>
-                            <el-input :controls="false" :min="0" :step="1" v-model="size.num_stock_kill" class="sInput" placeholder="秒杀库存"></el-input>
-                            <el-input :controls="false" :min="0" v-model="size.amount_cost" class="sInput" placeholder="成本价"></el-input>
+                            <div class="name">
+                                <el-tag v-for="(item,idx) in sku.key" :key="idx">{{item.size.type}}:{{item.name.name}}</el-tag>
+                            </div>
+                            <el-input :controls="false" :min="0" :step="1" v-model="sku.num_stock" class="sInput" placeholder="库存"></el-input>
+                            <el-input :controls="false" :min="0" :step="1" v-model="sku.num_stock_kill" class="sInput" placeholder="秒杀库存"></el-input>
+                            <el-input :controls="false" :min="0" v-model="sku.amount_cost" class="sInput" placeholder="成本价"></el-input>
                         </div>
                     </div>
                 </div>
             </el-form-item>
            <el-form-item label="售价">
                 <div>
-                    <div v-for="(size,sizeIdx) in form.sku" :key="sizeIdx">
+                    <div v-for="(sku,sizeIdx) in form.sku" :key="sizeIdx">
                         <div>
-                            <div class="name">{{size.size.name}}&{{size.spec.name}}</div>
-                            <el-button size="mini" @click="addLadder(size.amount_ladder)">添加</el-button>
-                            <div v-for="(item,ladderIdx) in size.amount_ladder">
+                            <div class="name">{{sku.key|showName}}</div>
+                            <el-button size="mini" @click="addLadder(sku.amount_ladder)">添加</el-button>
+                            <div v-for="(item,ladderIdx) in sku.amount_ladder">
                                 <el-input :controls="false" :min="0" :step="1" v-model="item.min" class="smInput" placeholder="数量区间"></el-input>
                                 <el-input :controls="false" :min="0" :step="1" v-model="item.max" class="smInput" placeholder="数量区间"></el-input>
                                 <el-input :controls="false" :min="0" v-model="item.amount" class="smInput" placeholder="价格"></el-input>
-                                <el-button @click="delLadder(size.amount_ladder,ladderIdx)" size="mini" type="danger">删除</el-button>
+                                <el-button @click="delLadder(sku.amount_ladder,ladderIdx)" size="mini" type="link">删除</el-button>
                             </div>
                         </div>
                     </div>
@@ -177,15 +177,15 @@
             </el-form-item>
             <el-form-item label="秒杀价" v-show="form.is_kill===1">
                 <div>
-                    <div v-for="(size,sizeIdx) in form.sku" :key="sizeIdx">
+                    <div v-for="(sku,sizeIdx) in form.sku" :key="sizeIdx">
                         <div>
-                            <div class="name">{{size.size.name}}&{{size.spec.name}}</div>
-                            <el-button size="mini" @click="addLadder(size.amount_kill_ladder)">添加</el-button>
-                            <div v-for="(item,ladderIdx) in size.amount_kill_ladder">
+                            <div class="name">{{sku.key|showName}}</div>
+                            <el-button size="mini" @click="addLadder(sku.amount_kill_ladder)">添加</el-button>
+                            <div v-for="(item,ladderIdx) in sku.amount_kill_ladder">
                                 <el-input :controls="false" :min="0" :step="1" v-model="item.min" class="smInput" placeholder="数量区间"></el-input>
                                 <el-input :controls="false" :min="0" :step="1" v-model="item.max" class="smInput" placeholder="数量区间"></el-input>
                                 <el-input :controls="false" :min="0" v-model="item.amount" class="smInput" placeholder="价格"></el-input>
-                                <el-button @click="delLadder(size.amount_kill_ladder,ladderIdx)" size="mini" type="danger">删除</el-button>
+                                <el-button @click="delLadder(sku.amount_kill_ladder,ladderIdx)" size="mini" type="link">删除</el-button>
                             </div>
                         </div>
                     </div>

+ 54 - 38
public/assets/js/backend/goods.js

@@ -230,7 +230,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                             logo:[],
                             video:null,
                             size:{},
-                            spec:{},
                             sku:{},
                             detail:{},
                             service:[{name:null,value:null}],
@@ -247,7 +246,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                             describe:[{required:true,message:'此项必须'}],
                             logo:[{required:true,message:'此项必须'},{type:'array',min:1,message: '请上传'}],
                             size:[{required:true,message:'此项必须'}],
-                            spec:[{required:true,message:'此项必须'}],
                             sku:[{required:true,message:'此项必须'}],
                         }
                     }
@@ -255,6 +253,10 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 mounted(){
                     Controller.api.bindevent();
                 },
+                filters:{
+                    showName(key){
+                    }
+                },
                 methods:{
                     addImg(type, index, multiple) {
                         let that = this;
@@ -288,51 +290,65 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     delVideo(){
                         this.form.video=null
                     },
-                    addSize(type){
-                        this.idx++
-                        this.$set(this.form[type],this.idx,{
-                            type,
+                    addMain(){
+                        let idx=Date.now()
+                        this.$set(this.form.size,idx,{
+                            type:null,
+                            names:{},
+                        })
+                    },
+                    delMain(idx){
+                        this.$delete(this.form.size,idx)
+                    },
+                    addName(spec){
+                        let idx=Date.now()
+                        this.$set(spec.names,idx,{
                             name:null
                         })
-                        Object.keys(this.form.size).forEach(sizeIdx=>{
-                            let size=this.form.size[sizeIdx]
-                            Object.keys(this.form.spec).forEach((spec_idx)=>{
-                                let spec=this.form.spec[spec_idx],key=`${sizeIdx}_${spec_idx}`
-                                if(!this.form.sku[key]){
-                                    this.$set(this.form.sku,key,{
-                                        size,
-                                        spec,
+                        let size=this.form.size
+                        let sizeLen=Object.keys(size).length
+                        let k=Object.keys(size)[0]
+                        let thisNames=size[k].names
+                        Object.keys(thisNames).forEach((_k)=>{
+                            let key={},show=false
+                            key[_k]={
+                                size:size[k],
+                                name:thisNames[_k]
+                            }
+                            Object.keys(size).forEach((kk)=>{
+                                if(k===kk){
+                                    return
+                                }
+                                show=true
+                                let nameKeys=Object.keys(size[kk].names)
+                                for (let i=0;i<nameKeys.length;i++){
+                                    let kkk=nameKeys[i]
+                                    key[kkk]={
+                                        size:size[kk],
+                                        name:size[kk].names[kkk]
+                                    }
+                                }
+                            })
+                            if(show && Object.keys(key).length>1){
+                                let keyStr=Object.keys(key).join(',')
+                                if(!this.form.sku[keyStr]){
+                                    this.$set(this.form.sku,keyStr,{
+                                        key,
                                         num_stock:null,
                                         num_stock_kill:null,
                                         amount_cost:null,
-                                        amount_ladder:[{min:null,max:null,amount:null}],
-                                        amount_kill_ladder:[{min:null,max:null,amount:null}],
-                                    })
-                                }
-                                if(!this.form.detail[key]){
-                                    this.$set(this.form.detail,key,{
-                                        arr:[],
-                                        size,
-                                        spec,
+                                        amount_ladder:[],
+                                        amount_kill_ladder:[],
                                     })
                                 }
-                            })
+                            }
                         })
                     },
-                    delSize(type,idx){
-                        if(type==='size'){
-                            Object.keys(this.form.spec).forEach((spec_idx)=>{
-                                let key=`${idx}_${spec_idx}`
-                                this.$delete(this.form.sku,key)
-                            })
-                        }else{
-                            Object.keys(this.form.size).forEach((size_idx)=>{
-                                let key=`${size_idx}_${idx}`
-                                this.$delete(this.form.sku,key)
-                            })
-                        }
-                        this.$delete(this.form[type],idx)
-                        this.$delete(this.form.detail,idx)
+                    nameChange(idx,name){
+                        console.log(this.form.sku,this.sku)
+                    },
+                    delSize(spec,idx){
+                        this.$delete(spec.names,idx)
                     },
                     addLadder(ladder){
                         ladder.push({min:null,max:null,amount:null})