zhaolf 3 years ago
parent
commit
7b05d3edee

+ 7 - 5
package-lock.json

@@ -10198,11 +10198,6 @@
         "is-plain-obj": "^1.0.0"
       }
     },
-    "sortablejs": {
-      "version": "1.10.2",
-      "resolved": "https://registry.npmmirror.com/sortablejs/download/sortablejs-1.10.2.tgz",
-      "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
-    },
     "source-list-map": {
       "version": "2.0.1",
       "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz",
@@ -11445,6 +11440,13 @@
       "integrity": "sha1-Q8k4SbdGokzlA+Ej1bJZxwG6DRk=",
       "requires": {
         "sortablejs": "1.10.2"
+      },
+      "dependencies": {
+        "sortablejs": {
+          "version": "1.10.2",
+          "resolved": "https://registry.npmmirror.com/sortablejs/download/sortablejs-1.10.2.tgz",
+          "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+        }
       }
     },
     "vuex": {

+ 8 - 8
package.json

@@ -9,23 +9,23 @@
   },
   "dependencies": {
     "axios": "^0.21.1",
+    "clipboard": "2.0.6",
     "core-js": "^3.6.5",
     "echarts": "^5.1.2",
     "element-ui": "^2.13.2",
+    "file-saver": "2.0.4",
+    "js-md5": "^0.7.3",
+    "jsencrypt": "3.0.0-rc.1",
     "less": "^3.12.2",
     "less-loader": "^7.0.0",
+    "quill": "1.3.7",
+    "vkbeautify": "^0.99.3",
     "vue": "^2.6.11",
-    "js-md5": "^0.7.3",
     "vue-router": "^3.4.3",
-    "workflow-bpmn-modeler": "^0.2.8",
-    "vkbeautify": "^0.99.3",
-    "quill": "1.3.7",
-    "clipboard": "2.0.6",
     "vuedraggable": "2.24.3",
-    "file-saver": "2.0.4",
-    "jsencrypt": "3.0.0-rc.1",
     "vuex": "^3.4.0",
-    "vuex-persistedstate": "^4.1.0"
+    "vuex-persistedstate": "^4.1.0",
+    "workflow-bpmn-modeler": "^0.2.8"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "^4.5.0",

+ 7 - 3
src/App.vue

@@ -120,13 +120,17 @@
     },
     methods: {
       remove(item,index){
-        // this.nowindex--
-        store.commit("SET_TABINDEX",index-1)
+        if(this.nowindex!=index){
+          if(this.nowindex>index){
+            store.commit("SET_TABINDEX",this.nowindex-1)
+          }
+        }else{
+          store.commit("SET_TABINDEX",index-1)
+        }
         this.editableTabs.splice(index,1)
         store.commit("SET_TABLIST",this.editableTabs)
       },
       itemclick(item,index){
-        // this.nowindex=index
         store.commit("SET_TABINDEX",index)
       },
     }

+ 107 - 56
src/components/tabbar.vue

@@ -3,13 +3,18 @@
         <div v-for="(item,index) in dataList" :key="index">
             <div :class="clickIndex==index?'chooseitem':'item'" @click="click(item,index)">
                 <div class="content">
-                    <div class="leftdiv"><div class="leftdivcongtent"></div></div>
+                    <div class="leftdiv">
+                        <div class="leftdivcongtent"></div>
+                    </div>
                     <div class="mid">
                         <i :class="[pageicon, 'iconfont']"></i>
                         <span>{{item.name}}</span>
-                        <i class="el-icon-close close" v-if="clickIndex==index&&index!=0" @click.stop="deleteTab(item,index)"></i>
+                        <i :class="['el-icon-close', (clickIndex==index&&index!=0)?'close':(index!=0?'closenone':'closeforever')]"
+                            @click.stop="deleteTab(item,index)"></i>
+                    </div>
+                    <div class="rightdiv">
+                        <div class="rightdivcongtent"></div>
                     </div>
-                    <div class="rightdiv"><div class="rightdivcongtent"></div></div>
                 </div>
             </div>
         </div>
@@ -24,20 +29,20 @@
             dataList: {
                 type: Array,
             },
-            clickIndex:{
-                type:Number,
-                default:0
+            clickIndex: {
+                type: Number,
+                default: 0
             }
         },
         data() {
             return {
-                
+
             };
         },
         watch: {},
         computed: {
             pageicon() {
-                if (store.getters ?.getMenuInfo ?.meta ?.icon) {
+                if (store.getters?.getMenuInfo?.meta?.icon) {
                     return store.getters.getMenuInfo.meta.icon
                 } else {
                     return "icon-shangpinguanli"
@@ -46,14 +51,15 @@
         },
         methods: {
             click(item, index) {
-                this.$emit("itemclick",item,index)
+                this.$emit("itemclick", item, index)
+            },
+            deleteTab(item, index) {
+                this.$emit("remove", item, index)
             },
-            deleteTab(item,index){
-                this.$emit("remove",item,index)
-            }
         },
         created() {},
-        mounted() {}
+        mounted() {
+        }
     };
 </script>
 <style lang="less" scoped>
@@ -63,16 +69,19 @@
         align-items: center;
         box-shadow: 0px 6px 6px 0px rgba(174, 174, 174, 0.09);
         z-index: 1;
+
         .item {
-                .content{
+            .content {
                 border-radius: 5px;
                 display: flex;
                 height: 40px;
                 flex-direction: row;
                 align-items: center;
             }
-            .mid{
+
+            .mid {
                 background: white;
+                width: 100px;
                 height: 40px;
                 border-radius: 5px 5px 0px 0px;
                 display: flex;
@@ -80,50 +89,76 @@
                 padding-left: 10px;
                 padding-right: 10px;
                 font-size: 14px;
-                .close{
+
+                .close {
+                    margin-left: 5px;
+                }
+
+                .closenone {
                     margin-left: 5px;
+                    display: none
                 }
-                .iconfont{
+
+                .closeforever {
+                    margin-left: 5px;
+                    display: none
+                }
+
+                .iconfont {
                     margin-right: 5px;
                 }
+
+                &:hover {
+                    color: #328DFF;
+
+                    .closenone {
+                        margin-left: 5px;
+                        display: block
+                    }
+                }
             }
-            .rightdiv{
-              width: 10px;
-              height: 40px;
-              background: white;
-              .rightdivcongtent{
-                border-radius: 0px 0px 0px 10px;
+
+            .rightdiv {
                 width: 10px;
                 height: 40px;
-                background:white;
-              }
+                background: white;
+
+                .rightdivcongtent {
+                    border-radius: 0px 0px 0px 10px;
+                    width: 10px;
+                    height: 40px;
+                    background: white;
+                }
             }
-            .leftdiv{
-              width: 10px;
-              height: 40px;
-              background: white;
-              .leftdivcongtent{
-                border-radius: 0px 0px 10px 0px;
+
+            .leftdiv {
                 width: 10px;
                 height: 40px;
-                background:white;
-              }
-            }
-            &:hover{
-                color: #328DFF;
+                background: white;
+
+                .leftdivcongtent {
+                    border-radius: 0px 0px 10px 0px;
+                    width: 10px;
+                    height: 40px;
+                    background: white;
+                }
             }
+
         }
+
         .chooseitem {
-            .content{
+            .content {
                 border-radius: 5px;
                 display: flex;
                 height: 40px;
                 flex-direction: row;
                 align-items: center;
             }
-            .mid{
+
+            .mid {
                 background: #E8F4FF;
                 height: 40px;
+                width: 100px;
                 border-radius: 5px 5px 0px 0px;
                 display: flex;
                 align-items: center;
@@ -131,34 +166,50 @@
                 padding-right: 10px;
                 color: #328DFF;
                 font-size: 14px;
-                .close{
+
+                .close {
+                    margin-left: 5px;
+                }
+
+                .closenone {
                     margin-left: 5px;
+                    display: none
                 }
-                .iconfont{
+
+                .closeforever {
+                    margin-left: 5px;
+                    display: none
+                }
+
+                .iconfont {
                     margin-right: 5px;
                 }
             }
-            .rightdiv{
-              width: 10px;
-              height: 40px;
-              background: #E8F4FF;
-              .rightdivcongtent{
-                border-radius: 0px 0px 0px 10px;
+
+            .rightdiv {
                 width: 10px;
                 height: 40px;
-                background:white;
-              }
+                background: #E8F4FF;
+
+                .rightdivcongtent {
+                    border-radius: 0px 0px 0px 10px;
+                    width: 10px;
+                    height: 40px;
+                    background: white;
+                }
             }
-            .leftdiv{
-              width: 10px;
-              height: 40px;
-              background: #E8F4FF;
-              .leftdivcongtent{
-                border-radius: 0px 0px 10px 0px;
+
+            .leftdiv {
                 width: 10px;
                 height: 40px;
-                background:white;
-              }
+                background: #E8F4FF;
+
+                .leftdivcongtent {
+                    border-radius: 0px 0px 10px 0px;
+                    width: 10px;
+                    height: 40px;
+                    background: white;
+                }
             }
         }
 

+ 147 - 118
src/pages/brand/brandDetail/index.vue

@@ -11,8 +11,8 @@
                 </div>
             </div>
             <el-divider></el-divider>
-            <el-form size="small" class="form" ref="form" :model="form" label-width="140px">
-                <el-form-item label="认证审核类型:">
+            <el-form size="small" class="form" ref="form" :model="form" label-width="140px" :rules="rules">
+                <el-form-item label="认证审核类型:" prop="brand_audit_type">
                     <el-select v-model="form.brand_audit_type" placeholder="请选择" :disabled="isdisable" clearable
                         filterable>
                         <el-option label="国内品牌申请-R标" value="1"></el-option>
@@ -21,11 +21,11 @@
                         <el-option label="海外品牌申请-TM标" value="4"></el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="商标分类:" label-width="100px">
+                <el-form-item label="商标分类:" label-width="100px" prop="trademark_type">
                     <el-input placeholder="请输入" v-model="form.trademark_type" :disabled="isdisable" maxlength="25">
                     </el-input>
                 </el-form-item>
-                <el-form-item label="选择品牌经营类型:">
+                <el-form-item label="选择品牌经营类型:" prop="brand_management_type">
                     <el-select v-model="form.brand_management_type" placeholder="请选择" :disabled="isdisable" clearable
                         filterable>
                         <el-option label="自有品牌" value="1"></el-option>
@@ -33,27 +33,30 @@
                         <el-option label="无品牌" value="3"></el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="商品产地是否进口:" label-width="140px">
+                <el-form-item label="商品产地是否进口:" label-width="140px" prop="commodity_origin_type">
                     <el-select v-model="form.commodity_origin_type" placeholder="请选择" :disabled="isdisable" clearable
                         filterable>
                         <el-option label="是" value="1"></el-option>
                         <el-option label="否" value="2"></el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="商标/品牌词:">
-                    <el-input placeholder="请输入" v-model="form.trademark_registrant" :disabled="isdisable" maxlength="25">
+                <el-form-item label="商标/品牌词:" prop="trademark_registrant">
+                    <el-input placeholder="请输入" v-model="form.trademark_registrant" :disabled="isdisable"
+                        maxlength="25">
                     </el-input>
                 </el-form-item>
                 <!-- <el-form-item label="商标注册人姓名:" label-width="140px">
                     <el-input placeholder="请输入" v-model="form.trademark_applicant" maxlength="25">
                     </el-input>
                 </el-form-item> -->
-                <el-form-item label="商标注册号/申请号:">
-                    <el-input placeholder="请输入" v-model="form.trademark_registrant_nu" :disabled="isdisable" maxlength="25">
+                <el-form-item label="商标注册号/申请号:" prop="trademark_registrant_nu">
+                    <el-input placeholder="请输入" v-model="form.trademark_registrant_nu" :disabled="isdisable"
+                        maxlength="25">
                     </el-input>
                 </el-form-item>
                 <el-form-item label="商标有效期:">
-                    <el-date-picker v-model="form.trademark_authorization_period" type="date" :disabled="isdisable" placeholder="选择日期">
+                    <el-date-picker v-model="form.trademark_authorization_period" type="date" :disabled="isdisable"
+                        placeholder="选择日期">
                     </el-date-picker>
                 </el-form-item>
                 <el-form-item label="商标申请人姓名:">
@@ -61,23 +64,28 @@
                     </el-input>
                 </el-form-item>
                 <el-form-item label="商标申请时间:">
-                    <el-date-picker v-model="form.trademark_application_time" type="date" :disabled="isdisable" placeholder="选择日期">
+                    <el-date-picker v-model="form.trademark_application_time" type="date" :disabled="isdisable"
+                        placeholder="选择日期">
                     </el-date-picker>
                 </el-form-item>
                 <el-form-item class="single" label="营业执照或组织机构代码证:">
-                    <upload v-if="updatePic" :file="org_code_certificateList" :disabled="isdisable" limitNum="10"></upload>
+                    <upload v-if="updatePic" :file="org_code_certificateList" :disabled="isdisable" limitNum="10">
+                    </upload>
                 </el-form-item>
                 <el-form-item class="single" label="销售授权书(如商持人为自然人,还需提供:">
                     <upload v-if="updatePic" :file="authorizationList" :disabled="isdisable" limitNum="10"></upload>
                 </el-form-item>
                 <el-form-item class="single" label="商标注册证书:">
-                    <upload v-if="updatePic" :file="registration_certificateList" :disabled="isdisable" limitNum="10"></upload>
+                    <upload v-if="updatePic" :file="registration_certificateList" :disabled="isdisable" limitNum="10">
+                    </upload>
                 </el-form-item>
                 <el-form-item class="single" label="商标变更证明:">
-                    <upload v-if="updatePic" :file="change_certificateList" :disabled="isdisable" limitNum="10"></upload>
+                    <upload v-if="updatePic" :file="change_certificateList" :disabled="isdisable" limitNum="10">
+                    </upload>
                 </el-form-item>
                 <el-form-item class="single" label="商标注册申请受理通知书:">
-                    <upload v-if="updatePic" :file="registration_applicationList" :disabled="isdisable" limitNum="10"></upload>
+                    <upload v-if="updatePic" :file="registration_applicationList" :disabled="isdisable" limitNum="10">
+                    </upload>
                 </el-form-item>
                 <el-form-item class="single" label="中华人民共和国海关进口货物报关单:">
                     <upload v-if="updatePic" :file="goods_formList" limitNum="10" :disabled="isdisable"></upload>
@@ -104,7 +112,8 @@
     import upload from '@/components/upload'
     import showtable from '../components/showtable.vue'
     import {
-        add,detail
+        add,
+        detail
     } from '@/api/brand'
     export default {
         name: 'brandDetail',
@@ -115,7 +124,7 @@
         props: {},
         data() {
             return {
-                isdisable:false,
+                isdisable: false,
                 categoryList: [],
                 brandList: [],
                 org_code_certificateList: [],
@@ -138,120 +147,138 @@
                     trademark_application_time: '',
                     remark: ''
                 },
-                loading: false
+                loading: false,
+                rules: {
+                    brand_audit_type: [{
+                        required: true,
+                        message: '请输入必填项',
+                        trigger: 'blur'
+                    }],
+                    trademark_type: [{
+                        required: true,
+                        message: '请选择必填项',
+                        trigger: 'blur'
+                    }],
+                    brand_management_type: [{
+                        required: true,
+                        message: '请选择必填项',
+                        trigger: 'blur'
+                    }],
+                    commodity_origin_type: [{
+                        required: true,
+                        message: '请选择必填项',
+                        trigger: 'blur'
+                    }],
+                    trademark_registrant: [{
+                        required: true,
+                        message: '请选择必填项',
+                        trigger: 'blur'
+                    }],
+                    trademark_registrant_nu: [{
+                        required: true,
+                        message: '请输入必填项',
+                        trigger: 'blur'
+                    }],
+                },
             };
         },
         watch: {},
         computed: {},
         methods: {
             commit() {
-                if (this.org_code_certificateList.length == 0) {
-                    this.$message.error('请选择营业执照或组织机构代码证');
-                    return
-                }
-                if (this.authorizationList.length == 0) {
-                    this.$message.error('请选择销售授权书');
-                    return
-                }
-                if (this.registration_certificateList.length == 0) {
-                    this.$message.error('请选择商标注册证书');
-                    return
-                }
-                if (this.change_certificateList.length == 0) {
-                    this.$message.error('请选择商标变更证明');
-                    return
-                }
-                if (this.registration_applicationList.length == 0) {
-                    this.$message.error('请选择商标注册申请受理通知书');
-                    return
-                }
-                if (this.goods_formList.length == 0) {
-                    this.$message.error('请选择中华人民共和国海关进口货物报关单');
-                    return
-                }
-                let imgDtoList = []
-                this.org_code_certificateList.forEach(element => {
-                    imgDtoList.push({
-                        type: "org_code_certificate",
-                        url: element.url
-                    })
-                });
-                this.authorizationList.forEach(element => {
-                    imgDtoList.push({
-                        type: "authorization",
-                        url: element.url
-                    })
-                });
-                this.registration_certificateList.forEach(element => {
-                    imgDtoList.push({
-                        type: "registration_certificate",
-                        url: element.url
-                    })
-                });
-                this.change_certificateList.forEach(element => {
-                    imgDtoList.push({
-                        type: "change_certificate",
-                        url: element.url
-                    })
-                });
-                this.registration_applicationList.forEach(element => {
-                    imgDtoList.push({
-                        type: "registration_application",
-                        url: element.url
-                    })
-                });
-                this.goods_formList.forEach(element => {
-                    imgDtoList.push({
-                        type: "goods_form",
-                        url: element.url
-                    })
-                });
-                let params = {
-                    brand_audit_type: this.form.brand_audit_type,
-                    brand_management_type: this.form.brand_management_type,
-                    commodity_origin_type: this.form.commodity_origin_type,
-                    imgDtoList: imgDtoList,
-                    remark: this.form.remark,
-                    trademark_applicant: this.form.trademark_applicant,
-                    trademark_application_time: this.form.trademark_application_time,
-                    trademark_authorization_period: this.form.trademark_authorization_period,
-                    trademark_registrant: this.form.trademark_registrant,
-                    trademark_registrant_nu: this.form.trademark_registrant_nu,
-                    trademark_type: this.form.trademark_type
-                }
-                this.loading = true
-                add(params).then(() => {
-                    this.$message.success('申请成功');
-                    store.commit('REMOVETAB', '品牌申请')
-                    this.$router.go(-1)
-                }).catch(() => {
-                    this.loading = false
-                });
+                this.$refs.form.validate(valid => {
+                    if (valid) {
+                        if (this.org_code_certificateList.length == 0) {
+                            this.$message.error('请选择营业执照或组织机构代码证');
+                            return
+                        }
+                        let imgDtoList = []
+                        this.org_code_certificateList.forEach(element => {
+                            imgDtoList.push({
+                                type: "org_code_certificate",
+                                url: element.url
+                            })
+                        });
+                        this.authorizationList.forEach(element => {
+                            imgDtoList.push({
+                                type: "authorization",
+                                url: element.url
+                            })
+                        });
+                        this.registration_certificateList.forEach(element => {
+                            imgDtoList.push({
+                                type: "registration_certificate",
+                                url: element.url
+                            })
+                        });
+                        this.change_certificateList.forEach(element => {
+                            imgDtoList.push({
+                                type: "change_certificate",
+                                url: element.url
+                            })
+                        });
+                        this.registration_applicationList.forEach(element => {
+                            imgDtoList.push({
+                                type: "registration_application",
+                                url: element.url
+                            })
+                        });
+                        this.goods_formList.forEach(element => {
+                            imgDtoList.push({
+                                type: "goods_form",
+                                url: element.url
+                            })
+                        });
+                        let params = {
+                            brand_audit_type: this.form.brand_audit_type,
+                            brand_management_type: this.form.brand_management_type,
+                            commodity_origin_type: this.form.commodity_origin_type,
+                            imgDtoList: imgDtoList,
+                            remark: this.form.remark,
+                            trademark_applicant: this.form.trademark_applicant,
+                            trademark_application_time: this.form.trademark_application_time,
+                            trademark_authorization_period: this.form.trademark_authorization_period,
+                            trademark_registrant: this.form.trademark_registrant,
+                            trademark_registrant_nu: this.form.trademark_registrant_nu,
+                            trademark_type: this.form.trademark_type
+                        }
+                        this.loading = true
+                        add(params).then(() => {
+                            this.$message.success('申请成功');
+                            store.commit('REMOVETAB', '品牌申请')
+                            this.$router.go(-1)
+                        }).catch(() => {
+                            this.loading = false
+                        });
+                    }
+                })
             },
             getDetail() {
-                detail({brandInfoId:this.brand_info_id}).then(res=>{
+                detail({
+                    brandInfoId: this.brand_info_id
+                }).then(res => {
                     this.status = res.data.status
-                    if (this.status == 0||this.status==1) { //审核中 通过全不可编辑
+                    if (this.status == 0 || this.status == 1) { //审核中 通过全不可编辑
                         this.isdisable = true
                     }
                     this.reject_reason = res.data.reject_reason
                     this.statusName = res.data.statusName
-                    this.form.brand_audit_type=res.data.brand_audit_type
-                    this.form.brand_management_type=res.data.brand_management_type
-                    this.form.commodity_origin_type=res.data.commodity_origin_type
-                    this.form.remark=res.data.remark
-                    this.form.trademark_applicant=res.data.trademark_applicant
-                    this.form.trademark_application_time=res.data.trademark_application_time
-                    this.form.trademark_authorization_period=res.data.trademark_authorization_period
-                    this.form.trademark_registrant=res.data.trademark_registrant
-                    this.form.trademark_registrant_nu=res.data.trademark_registrant_nu
-                    this.form.trademark_type=res.data.trademark_type
-                    this.org_code_certificateList=res.data.imgMap.org_code_certificate
-                    this.authorizationList= res.data.imgMap.authorization
-                    this.registration_certificateList=res.data.imgMap.registration_certificate
-                    this.change_certificateList=res.data.imgMap.change_certificate
-                    this.registration_applicationList=res.data.imgMap.registration_application
-                    this.goods_formList=res.data.imgMap.goods_form
+                    this.form.brand_audit_type = res.data.brand_audit_type
+                    this.form.brand_management_type = res.data.brand_management_type
+                    this.form.commodity_origin_type = res.data.commodity_origin_type
+                    this.form.remark = res.data.remark
+                    this.form.trademark_applicant = res.data.trademark_applicant
+                    this.form.trademark_application_time = res.data.trademark_application_time
+                    this.form.trademark_authorization_period = res.data.trademark_authorization_period
+                    this.form.trademark_registrant = res.data.trademark_registrant
+                    this.form.trademark_registrant_nu = res.data.trademark_registrant_nu
+                    this.form.trademark_type = res.data.trademark_type
+                    this.org_code_certificateList = res.data.imgMap.org_code_certificate
+                    this.authorizationList = res.data.imgMap.authorization
+                    this.registration_certificateList = res.data.imgMap.registration_certificate
+                    this.change_certificateList = res.data.imgMap.change_certificate
+                    this.registration_applicationList = res.data.imgMap.registration_application
+                    this.goods_formList = res.data.imgMap.goods_form
                     //刷新子组件
                     this.updatePic = false
                     this.$nextTick(() => {
@@ -329,9 +356,11 @@
                     margin-top: 20px;
                     align-items: center;
                 }
+
                 .commitnew {
                     margin-left: 40px;
                 }
+
                 .label {
                     width: 100px;
                     text-align: right;

+ 4 - 3
src/pages/goods/addGoods/index.vue

@@ -152,12 +152,12 @@
                     }],
                     sale_price: [{
                         required: true,
-                        validator: validPrice,
+                        validator: validnumber,
                         trigger: 'blur'
                     }],
                     market_price: [{
                         required: true,
-                        validator: validPrice,
+                        validator: validnumber,
                         trigger: 'blur'
                     }],
                     path: [{
@@ -211,7 +211,8 @@
                             edit(params).then(() => {
                                 this.$message.success('修改成功');
                                 store.commit('REMOVETAB', '新增商品')
-                                this.$router.go(-1)
+                                store.commit('REMOVETAB', '商品详情')
+                                this.$router.push('/goods')
                             }).catch(() => {
                                 this.loading = false
                             });

+ 0 - 1
src/pages/goods/index.vue

@@ -59,7 +59,6 @@
             prop: 'title',
             isShow: true,
           },
-
           {
             label: '商品ID',
             prop: 'out_product_id',

+ 68 - 45
src/pages/qualification/categoryDetail/index.vue

@@ -10,17 +10,17 @@
             </div>
         </div>
         <el-divider></el-divider>
-        <el-form class="form" ref="form" :model="form" label-width="200px">
-            <el-form-item label="一级类目:">
-                <el-input placeholder="请输入" :disabled="isDisable" v-model="form.level1" maxlength="25">
+        <el-form class="form" ref="form" :model="form" label-width="200px" :rules="rules">
+            <el-form-item label="一级类目:" prop="level1">
+                <el-input placeholder="请输入" type='number' :disabled="isDisable" v-model="form.level1" maxlength="25">
                 </el-input>
             </el-form-item>
-            <el-form-item label="二级类目:" label-width="100px">
-                <el-input placeholder="请输入" :disabled="isDisable" v-model="form.level2" maxlength="25">
+            <el-form-item label="二级类目:" label-width="100px" prop="level2">
+                <el-input placeholder="请输入" type='number' :disabled="isDisable" v-model="form.level2" maxlength="25">
                 </el-input>
             </el-form-item>
-            <el-form-item label="三级类目:">
-                <el-input placeholder="请输入" :disabled="isDisable" v-model="form.level3" maxlength="25">
+            <el-form-item label="三级类目:" prop="level3">
+                <el-input placeholder="请输入" type='number' :disabled="isDisable" v-model="form.level3" maxlength="25">
                 </el-input>
             </el-form-item>
             <el-form-item label="三级类目名称:" label-width="100px">
@@ -56,6 +56,9 @@
         edit,
         authedEdit
     } from "@/api/category";
+    import {
+        validnumber,
+    } from '@/utils/validate'
     export default {
         name: 'categoryDetail',
         components: {
@@ -80,33 +83,34 @@
                     level3_name: '',
                     remark: ''
                 },
-                loading: false
+                loading: false,
+                rules: {
+                    level1: [{
+                        required: true,
+                        validator: validnumber,
+                        trigger: 'blur'
+                    }],
+                    level2: [{
+                        required: true,
+                        validator: validnumber,
+                        trigger: 'blur'
+                    }],
+                    level3: [{
+                        required: true,
+                        validator: validnumber,
+                        trigger: 'blur'
+                    }],
+                }
             };
         },
         watch: {},
         computed: {},
         methods: {
             commit() {
-                if (this.licenseImgs.length == 0) {
-                    this.$message.error('请选择营业执照或组织机构代码证');
-                    return
-                }
-                if (this.certificateImgs.length == 0) {
-                    this.$message.error('请选择资质材料');
-                    return
-                }
-                let licenseImgs_temp = []
-                this.licenseImgs.forEach(element => {
-                    licenseImgs_temp.push(element.url)
-                });
-                let certificateImgs_temp = []
-                this.certificateImgs.forEach(element => {
-                    certificateImgs_temp.push(element.url)
-                });
                 if (this.status == 1) {
                     //通过时修改
                     let params = {
-                        category_info_id:this.category_info_id,
+                        category_info_id: this.category_info_id,
                         level3_name: this.form.level3_name,
                         remark: this.form.remark,
                     }
@@ -119,25 +123,44 @@
                         this.loading = false
                     });
                 } else {
-                    let params = {
-                        category_info_id:this.category_info_id,
-                        certificateImgs: certificateImgs_temp.join(","),
-                        level1: this.form.level1,
-                        level2: this.form.level2,
-                        level3: this.form.level3,
-                        licenseImgs: licenseImgs_temp.join(","),
-                        level3_name: this.form.level3_name,
-                        remark: this.form.remark,
-                    }
-                    this.loading = true
-                    edit(params).then(() => {
-                        this.$message.success('修改成功');
-                        store.commit('REMOVETAB', '类目详情')
-                        this.$router.go(-1)
-                    }).catch(() => {
-                        this.loading = false
-                    });
-
+                    this.$refs.form.validate(valid => {
+                        if (valid) {
+                            if (this.licenseImgs.length == 0) {
+                                this.$message.error('请选择营业执照或组织机构代码证');
+                                return
+                            }
+                            if (this.certificateImgs.length == 0) {
+                                this.$message.error('请选择资质材料');
+                                return
+                            }
+                            let licenseImgs_temp = []
+                            this.licenseImgs.forEach(element => {
+                                licenseImgs_temp.push(element.url)
+                            });
+                            let certificateImgs_temp = []
+                            this.certificateImgs.forEach(element => {
+                                certificateImgs_temp.push(element.url)
+                            });
+                            let params = {
+                                category_info_id: this.category_info_id,
+                                certificateImgs: certificateImgs_temp.join(","),
+                                level1: this.form.level1,
+                                level2: this.form.level2,
+                                level3: this.form.level3,
+                                licenseImgs: licenseImgs_temp.join(","),
+                                level3_name: this.form.level3_name,
+                                remark: this.form.remark,
+                            }
+                            this.loading = true
+                            edit(params).then(() => {
+                                this.$message.success('修改成功');
+                                store.commit('REMOVETAB', '类目详情')
+                                this.$router.go(-1)
+                            }).catch(() => {
+                                this.loading = false
+                            });
+                        }
+                    })
                 }
             },
             getDetail() {
@@ -158,7 +181,7 @@
                     this.form.level2 = res.data.level2
                     this.form.level3 = res.data.level3
                     this.form.level3_name = res.data.level3_name
-                    this.category_info_id=res.data.category_info_id
+                    this.category_info_id = res.data.category_info_id
                     this.licenseImgs = []
                     if (res.data.licenseImgs ?.length > 0) {
                         res.data.licenseImgs.forEach(element => {