Forráskód Böngészése

bug上线前的bug代码修改

yuwenjun 4 éve
szülő
commit
9874a8a70f

+ 9 - 9
src/layout/components/Navbar.vue

@@ -6,9 +6,9 @@
 
     <div class="right-menu">
       <template v-if="device!=='mobile'">
-        <search id="header-search" class="right-menu-item" />
+        <!-- <search id="header-search" class="right-menu-item" /> -->
 
-        <error-log class="errLog-container right-menu-item hover-effect" />
+        <!-- <error-log class="errLog-container right-menu-item hover-effect" /> -->
 
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
 
@@ -16,7 +16,7 @@
 
       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
         <div class="avatar-wrapper">
-          <img src="https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif" class="user-avatar">
+          <!-- <img src="https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif" class="user-avatar"> -->
           <span>{{ userName }}</span>
           <i class="el-icon-caret-bottom" />
         </div>
@@ -37,17 +37,17 @@
 import { mapGetters } from 'vuex'
 import Breadcrumb from '@/components/Breadcrumb'
 import Hamburger from '@/components/Hamburger'
-import ErrorLog from '@/components/ErrorLog'
+// import ErrorLog from '@/components/ErrorLog'
 import Screenfull from '@/components/Screenfull'
-import Search from '@/components/HeaderSearch'
+// import Search from '@/components/HeaderSearch'
 
 export default {
   components: {
     Breadcrumb,
     Hamburger,
-    ErrorLog,
-    Screenfull,
-    Search
+    // ErrorLog,
+    Screenfull
+    // Search
   },
   computed: {
     ...mapGetters([
@@ -67,8 +67,8 @@ export default {
     async logout() {
       await this.$store.dispatch('user/logout')
       await this.$store.commit('permission/SET_INITROUTER', false)
-      this.$router.replace('/login')
       this.$message.success('已退出当前账号')
+      window.location.replace('/#/login')
     }
   }
 }

+ 6 - 2
src/layout/components/Sidebar/Logo.vue

@@ -1,11 +1,11 @@
 <template>
   <div class="sidebar-logo-container" :class="{'collapse':collapse}">
     <transition name="sidebarLogoFade">
-      <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
+      <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" :to="url">
         <img v-if="logo" :src="logo" class="sidebar-logo">
         <h1 v-else class="sidebar-title">{{ title }} </h1>
       </router-link>
-      <router-link v-else key="expand" class="sidebar-logo-link" to="/">
+      <router-link v-else key="expand" class="sidebar-logo-link" :to="url">
         <img v-if="logo" :src="logo" class="sidebar-logo">
         <h1 class="sidebar-title">{{ title }} </h1>
       </router-link>
@@ -20,6 +20,10 @@ export default {
     collapse: {
       type: Boolean,
       required: true
+    },
+    url: {
+      type: String,
+      default: '/'
     }
   },
   data() {

+ 6 - 2
src/layout/components/Sidebar/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div :class="{'has-logo':showLogo}">
-    <logo v-if="showLogo" :collapse="isCollapse" />
+    <logo v-if="showLogo" :collapse="isCollapse" :url="setUrl" />
     <el-scrollbar wrap-class="scrollbar-wrapper">
       <el-menu
         :default-active="activeMenu"
@@ -29,7 +29,8 @@ export default {
   computed: {
     ...mapGetters([
       'permission_routes',
-      'sidebar'
+      'sidebar',
+      'userIdentity'
     ]),
     activeMenu() {
       const route = this.$route
@@ -48,6 +49,9 @@ export default {
     },
     isCollapse() {
       return !this.sidebar.opened
+    },
+    setUrl() {
+      return this.userIdentity === 1 ? '/supplier' : '/auth'
     }
   }
 }

+ 4 - 4
src/layout/components/TagsView/index.vue

@@ -17,10 +17,10 @@
       </router-link>
     </scroll-pane>
     <ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
-      <li @click="refreshSelectedTag(selectedTag)">Refresh</li>
-      <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">Close</li>
-      <li @click="closeOthersTags">Close Others</li>
-      <li @click="closeAllTags(selectedTag)">Close All</li>
+      <li @click="refreshSelectedTag(selectedTag)">刷新当前页面</li>
+      <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">关闭当前页面</li>
+      <li @click="closeOthersTags">关闭其他页面</li>
+      <li @click="closeAllTags(selectedTag)">关闭所有页面</li>
     </ul>
   </div>
 </template>

+ 4 - 5
src/styles/index.css

@@ -647,11 +647,6 @@ aside a:hover {
   z-index: 1000 !important;
 }
 
-.status {
-  font-size: 26px;
-  cursor: pointer;
-}
-
 .status.success {
   color: #67C23A;
 }
@@ -663,3 +658,7 @@ aside a:hover {
 .hidden .el-upload {
   display: none !important;
 }
+
+.tableHeader th {
+  background-color: #f7f7f7 !important;
+}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
src/styles/index.min.css


+ 6 - 2
src/styles/index.scss

@@ -191,8 +191,6 @@ aside {
 }
 
 .status{
-  font-size: 26px;
-  cursor: pointer;
   &.success{
     color: #67C23A;
   }
@@ -206,4 +204,10 @@ aside {
   .el-upload {
     display: none !important;
   }
+}
+
+.tableHeader{
+  th{
+    background-color: #f7f7f7 !important;
+  }
 }

+ 19 - 0
src/utils/tools.js

@@ -0,0 +1,19 @@
+/**
+ * 节流
+ * @param {Function} func 回调函数
+ * @param {Number} wait 时间限制
+ * @returns
+ */
+export function throttle(func, wait) {
+  let timeout
+  return function() {
+    const context = this
+    const args = arguments
+    if (!timeout) {
+      timeout = setTimeout(function() {
+        timeout = null
+        func.apply(context, args)
+      }, wait)
+    }
+  }
+}

+ 1 - 1
src/views/login/index.vue

@@ -63,7 +63,7 @@ export default {
         password: ''
       },
       loginRules: {
-        username: [{ required: true, trigger: 'blur', message: '请输入登录账号(英文+数字)' }],
+        username: [{ required: true, trigger: 'blur', message: '请输入登录账号' }],
         password: [{ required: true, trigger: 'blur', message: '请输入登录密码' }]
       },
       passwordType: 'password',

+ 10 - 6
src/views/password/index.vue

@@ -33,7 +33,9 @@ export default {
       }
     }
     var validPwd = (rule, value, callback) => {
-      if (!validPassword(value)) {
+      if (this.formData.oldPassword === value) {
+        callback(new Error('新密码与旧密码相同'))
+      } else if (!validPassword(value)) {
         callback(new Error('请输入字母与数字组合的8-12位密码'))
       } else {
         callback()
@@ -47,12 +49,13 @@ export default {
       },
       formRules: {
         oldPassword: [
-          { required: true, message: '请输入原来的密码', trigger: 'change' }
+          { required: true, message: '请输入原来的密码', trigger: 'blur' }
         ],
         newPassword: [
-          { required: true, trigger: 'change', validator: validPwd }
+          { required: true, trigger: ['change', 'blur'], validator: validPwd }
         ],
         confirmPwd: [
+          { required: true, message: '请再次输入密码' },
           { validator: confirmPassword, trigger: 'change' }
         ]
       }
@@ -75,9 +78,10 @@ export default {
         })
       })
     },
-    logout() {
-      this.$store.dispatch('user/logout')
-      this.$router.replace('/login')
+    async logout() {
+      await this.$store.dispatch('user/logout')
+      await this.$store.commit('permission/SET_INITROUTER', false)
+      window.location.replace('/#/login')
     }
   }
 }

+ 38 - 15
src/views/supplier/auth/index.vue

@@ -15,23 +15,23 @@
       fit
       highlight-current-row
       style="width: 100%;"
+      header-row-class-name="tableHeader"
     >
-      <el-table-column label="序号" prop="id" sortable="custom" align="center" width="80">
-        <template>
-          <span>1</span>
-        </template>
-      </el-table-column>
+      <el-table-column label="序号" align="center" width="80" type="index" />
 
       <el-table-column label="授权机构" align="center" prop="authParty" />
 
       <el-table-column v-if="userIdentity===2 || proxyInfo!==null" label="上线状态" width="140px" align="center">
         <template slot-scope="{row}">
-          <i v-if="row.status === 1" class="el-icon-circle-check status success" @click="handleChangeStatus(row)" />
-          <i v-if="row.status === 0" class="el-icon-circle-close status danger" @click="handleChangeStatus(row)" />
+          <template v-if="row.status === 0">
+            <span style="margin-right:10px;" class="status danger">已下线</span>
+            <el-button type="primary" size="mini" @click="handleChangeStatus(row)">上线</el-button>
+          </template>
+          <template v-else>
+            <span style="margin-right:10px;" class="status success ">已上线</span>
+            <el-button type="info" size="mini" plain @click="handleChangeStatus(row)">下线</el-button>
+          </template>
         </template>
-        <!-- <template v-slot="{row}">
-          <el-switch v-model="row.status" @change="handleChangeStatus(row)" />
-        </template> -->
       </el-table-column>
 
       <el-table-column label="创建时间" class-name="status-col" width="360px">
@@ -73,10 +73,10 @@
         <el-form-item label="授权机构:" prop="authParty">
           <el-input v-model="addAuthFormData.authParty" placeholder="请输入授权机构名称" />
         </el-form-item>
-        <el-form-item label="上状态:">
+        <el-form-item label="上线状态:">
           <el-select v-model="addAuthFormData.status">
-            <el-option label="上" :value="1" />
-            <el-option label="下" :value="0" />
+            <el-option label="上线" :value="1" />
+            <el-option label="下线" :value="0" />
           </el-select>
         </el-form-item>
       </el-form>
@@ -106,6 +106,7 @@ export default {
   },
   data() {
     return {
+      dialogFlag: true, // 对话框状态
       tableKey: 0,
       list: null,
       total: 0,
@@ -166,8 +167,22 @@ export default {
         this.listLoading = false
       })
     },
+    // 检查机构名是否存在 true:存在  false:不存在
+    handleCheckAuthName(name) {
+      const flag = this.list.some(item => item.authParty === name)
+      console.log(flag)
+      return flag
+    },
     // 添加授权
     handleUpdateBrandAuth() {
+      if (this.handleCheckAuthName(this.addAuthFormData.authParty) && this.dialogFlag) {
+        this.$message({
+          message: '该授权机构已存在',
+          duration: 1000,
+          type: 'warning'
+        })
+        return
+      }
       this.$refs.addAuthForm.validate(valide => {
         if (valide) {
           this.disabled = true
@@ -191,7 +206,7 @@ export default {
     },
     // 删除品牌授权
     async handleRemoveAuth(item) {
-      const text = await this.$confirm('此操作将删除该授权机构, 是否继续?', '提示', {
+      const text = await this.$confirm('确认删除该数据吗?删除后,对应的商品数据也将全部删除', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
@@ -230,7 +245,12 @@ export default {
         status: item.status === 1 ? 0 : 1
       }
       changeAuthStatus(params).then(res => {
-        this.$message.success(res.data)
+        // this.$message.success(res.data)
+        this.$message({
+          message: res.data,
+          duration: 500,
+          type: 'success'
+        })
         this.getList()
       }).catch(err => {
         console.log(err)
@@ -265,6 +285,9 @@ export default {
         this.addAuthFormData.authParty = data.authParty
         this.addAuthFormData.createBy = data.createBy
         this.status = data.status
+        this.dialogFlag = false
+      } else {
+        this.dialogFlag = true
       }
       this.showAddAuthDialog = true
     }

+ 14 - 2
src/views/supplier/components/uploadImage.vue

@@ -15,6 +15,7 @@
       :file-list="fileList"
     >
       <!-- :class="{hidden:(hasUpload && fileList===[]) || !hasUpload}" -->
+      <div slot="tip" class="el-upload__tip">建议尺寸:{{ tipTitle }}</div>
       <i class="el-icon-plus" />
     </el-upload>
     <el-dialog :visible.sync="dialogVisible">
@@ -31,6 +32,10 @@ export default {
     fileList: {
       type: Array,
       default: () => []
+    },
+    tipTitle: {
+      type: String,
+      default: '128px*88px'
     }
   },
   data() {
@@ -80,10 +85,17 @@ export default {
 }
 </script>
 
-<style lang="scss" scoped>
+<style lang="scss">
 .img-upload-box{
   width:150px;
-  height:150px;
+  height:180px;
   overflow: hidden
 }
+.img-upload-box>div{
+  white-space: nowrap;
+}
+.img-upload-box .el-upload-list{
+  height: 150px;
+  display: inline-block;
+}
 </style>

+ 27 - 14
src/views/supplier/product/add.vue

@@ -8,8 +8,13 @@
       :rules="rules"
     >
       <el-form-item label="商品名称:" prop="productName">
-        <el-input v-model="formData.productName" placeholder="请输入商品名称" />
+        <el-input v-model="formData.productName" placeholder="建议输入30个字符效果最佳" />
       </el-form-item>
+
+      <el-form-item label="商品SN码:" prop="snCode">
+        <el-input v-model="formData.snCode" placeholder="请输入商品SN码" />
+      </el-form-item>
+
       <el-form-item v-if="shopType === 2" label="所属品牌:" prop="brandId">
         <el-select
           v-model="formData.brandId"
@@ -21,15 +26,13 @@
           <el-option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id" />
         </el-select>
       </el-form-item>
-      <el-form-item label="商品SN码:" prop="snCode">
-        <el-input v-model="formData.snCode" placeholder="请输入商品SN码" />
-      </el-form-item>
+
       <el-form-item label="商品图片:" prop="productImage">
-        <upload-image ref="uploadImageRef2" @success="imageUploadSuccess1" />
+        <upload-image ref="uploadImageRef2" tip-title="542px*542px" @success="imageUploadSuccess1" />
         <el-input v-model="formData.productImage" class="hiddenInput" />
       </el-form-item>
       <el-form-item label="授权牌:" prop="certificateImage">
-        <upload-image ref="uploadImageRef2" @success="imageUploadSuccess2" />
+        <upload-image ref="uploadImageRef2" tip-title="150px*112px" @success="imageUploadSuccess2" />
         <el-input v-model="formData.certificateImage" class="hiddenInput" />
       </el-form-item>
       <el-form-item label="相关参数:" prop="paramList">
@@ -41,7 +44,7 @@
           <el-input
             v-model="item.paramName"
             class="param-title"
-            placeholder="例如:品牌"
+            :placeholder="item.tip.first"
             maxlength="10"
           />
           <el-input
@@ -58,14 +61,14 @@
           @click="handleAddParam"
         >添加参数</el-button>
       </el-form-item>
-      <el-form-item label="上状态:">
+      <el-form-item label="上线状态:">
         <el-select
           v-model="formData.status"
-          placeholder="上状态"
+          placeholder="上线状态"
           style="width: 100%"
         >
-          <el-option label="上" :value="1" />
-          <el-option label="下" :value="0" />
+          <el-option label="上线" :value="1" />
+          <el-option label="下线" :value="0" />
         </el-select>
       </el-form-item>
     </el-form>
@@ -122,7 +125,9 @@ export default {
         snCode: [{ required: true, message: 'SN码不能为空' }, { validator: valideSNcode }],
         productName: [{ required: true, message: '商品名称不能为空' }, { max: 50, message: '字数在50字符以内' }],
         brandId: [{ required: true, validator: valideBrandId, tigger: 'change' }]
-      }
+      },
+      // 参数框的提示语
+      tipList: ['例如:品牌', '例如:尺寸', '例如:功率', '例如:重量']
     }
   },
   computed: {
@@ -176,7 +181,11 @@ export default {
       for (let i = 0; i < this.paramsCount; i++) {
         this.formData.paramList.push({
           paramContent: '',
-          paramName: ''
+          paramName: '',
+          tip: {
+            first: this.tipList[i],
+            second: '请输入参数信息'
+          }
         })
       }
     },
@@ -193,7 +202,11 @@ export default {
       this.paramsCount += 1
       this.formData.paramList.push({
         paramContent: '',
-        paramName: ''
+        paramName: '',
+        tip: {
+          first: '参数名称',
+          second: '请输入参数信息'
+        }
       })
     },
     // 删除一栏参数

+ 11 - 7
src/views/supplier/product/edit.vue

@@ -10,6 +10,11 @@
       <el-form-item label="商品名称:" prop="productName">
         <el-input v-model="formData.productName" placeholder="请输入商品名称" />
       </el-form-item>
+
+      <el-form-item label="商品SN码:" prop="snCode">
+        <el-input v-model="formData.snCode" placeholder="请输入商品SN码" />
+      </el-form-item>
+
       <el-form-item v-if="shopType === 2" label="所属品牌:" prop="brandId">
         <el-select
           v-model="formData.brandId"
@@ -20,9 +25,7 @@
           <el-option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id" />
         </el-select>
       </el-form-item>
-      <el-form-item label="商品SN码:" prop="snCode">
-        <el-input v-model="formData.snCode" placeholder="请输入商品SN码" />
-      </el-form-item>
+
       <el-form-item label="商品图片:" prop="productImage">
         <upload-image ref="uploadImageRef2" :file-list="fileList1" @success="imageUploadSuccess1" />
         <el-input v-model="formData.productImage" class="hiddenInput" />
@@ -40,7 +43,7 @@
           <el-input
             v-model="item.paramName"
             class="param-title"
-            placeholder="例如:品牌"
+            placeholder="参数名称"
             maxlength="10"
           />
           <el-input
@@ -57,14 +60,14 @@
           @click="handleAddParam"
         >添加参数</el-button>
       </el-form-item>
-      <el-form-item label="上状态:">
+      <el-form-item label="上线状态:">
         <el-select
           v-model="formData.status"
           placeholder="上架状态"
           style="width: 100%"
         >
-          <el-option label="上" :value="1" />
-          <el-option label="下" :value="0" />
+          <el-option label="上线" :value="1" />
+          <el-option label="下线" :value="0" />
         </el-select>
       </el-form-item>
     </el-form>
@@ -183,6 +186,7 @@ export default {
       saveProduct(this.formData).then(res => {
         console.log(res)
         this.$message.success(res.data)
+        this.$router.back()
       }).finally(() => {
         this.isLoading = false
       })

+ 17 - 9
src/views/supplier/product/index.vue

@@ -17,18 +17,21 @@
       fit
       highlight-current-row
       style="width: 100%;"
+      header-row-class-name="tableHeader"
     >
-      <el-table-column label="序号" prop="id" sortable="custom" align="center" width="80">
-        <template>
-          <span>1</span>
-        </template>
-      </el-table-column>
+      <el-table-column label="序号" type="index" align="center" width="80" />
       <el-table-column label="商品名称" align="center" prop="productName" />
       <el-table-column label="商品SN码" align="center" prop="snCode" />
-      <el-table-column v-if="userIdentity===2 || proxyInfo !== null" label="上状态" width="140px" align="center">
+      <el-table-column v-if="userIdentity===2 || proxyInfo !== null" label="上线状态" width="140px" align="center">
         <template slot-scope="{row}">
-          <i v-if="row.status === 1" class="el-icon-circle-check status success" @click="handleChangeStatus(row)" />
-          <i v-if="row.status === 0" class="el-icon-circle-close status danger" @click="handleChangeStatus(row)" />
+          <template v-if="row.status === 0">
+            <span style="margin-right:10px;" class="status danger">已下线</span>
+            <el-button type="primary" size="mini" @click="handleChangeStatus(row)">上线</el-button>
+          </template>
+          <template v-else>
+            <span style="margin-right:10px;" class="status success ">已上线</span>
+            <el-button type="info" size="mini" plain @click="handleChangeStatus(row)">下线</el-button>
+          </template>
         </template>
       </el-table-column>
       <el-table-column label="创建时间" class-name="status-col" width="300px" align="center">
@@ -135,7 +138,12 @@ export default {
         const { status,	productId } = item
         const newStatus = status === 0 ? 1 : 0
         setProductStatus({ status: newStatus, productId }).then(res => {
-          this.$message.success(res.data)
+          // this.$message.success(res.data)
+          this.$message({
+            message: '操作成功',
+            duration: 500,
+            type: 'success'
+          })
           this.listLoading = false
         }).finally(() => {
           this.getList()

+ 23 - 5
src/views/supplier/user/add.vue

@@ -32,7 +32,7 @@
       <!-- 供应商名称END -->
 
       <el-form-item label="手机号:" prop="mobile">
-        <el-input v-model="addFromData.mobile" placeholder="请输入手机号" maxlength="11" show-word-limit />
+        <el-input v-model="addFromData.mobile" placeholder="请输入手机号" maxlength="11" show-word-limit @input="handleInput" />
       </el-form-item>
 
       <el-form-item label="联系人:" prop="linkMan">
@@ -44,6 +44,7 @@
           <el-tag v-for="(brand , index) in supplierBrands" :key="index" closable type="success" @close="handleRemove(index)" @click="handleShowInfo(index)">{{ brand.brandName }}</el-tag>
         </template>
         <el-tag type="primary" @click="handleShowDialog">添加品牌<span class="el-icon-plus" /></el-tag>
+        <!-- <el-input v-model="addFromData.shopInfo" class="hiddenInput" /> -->
       </el-form-item>
 
       <template v-if="addFromData.shopType === 1">
@@ -155,6 +156,7 @@
             v-if="brandData.statementType === 3"
             ref="uploadImageRef2"
             :file-list="fileList2"
+            tip-title="宽760px"
             @success="imageUploadSuccess2"
             @error="imageUploadFaild2"
             @remove="imageRemove2"
@@ -202,13 +204,21 @@ import { addSupplier } from '@/api/supplier'
 export default {
   components: { UploadImage, UploadFile },
   data() {
-    var valideMobile = (rule, value, callback) => {
+    const valideMobile = (rule, value, callback) => {
       if (!isMobile(value)) {
         callback(new Error('手机号格式不正确'))
       } else {
         callback()
       }
     }
+
+    const valideShopInfo = (rule, value, callback) => {
+      if (value.length <= 0) {
+        callback(new Error('品牌不能为空'))
+      } else {
+        callback()
+      }
+    }
     return {
       dialogLoading: false,
       isLoading: false,
@@ -266,7 +276,8 @@ export default {
         ],
         linkMan: { required: true, message: '联系人不能为空', trigger: 'blur' },
         countryId: { required: true, message: '产地不能为空', trigger: 'change' },
-        brandAuthLogo: { required: true, message: '品牌logo不能为空', trigger: 'change' }
+        brandAuthLogo: { required: true, message: '品牌logo不能为空', trigger: 'change' },
+        shopInfo: { validator: valideShopInfo, trigger: 'change', required: true }
       },
       // 表单校验规则2
       brandDataRules: {
@@ -325,6 +336,9 @@ export default {
       this.isLoading = true
       addSupplier(this.createAddData())
         .then(res => {
+          if (res.code !== 0) {
+            return
+          }
           console.log(res)
           this.$message.success('添加成功')
           this.$router.replace('/supplier')
@@ -456,8 +470,8 @@ export default {
     },
     // 保存品牌信息
     saveBrand() {
-      this.$refs.brandDataRef.validate(valide => {
-        if (valide) {
+      this.$refs.brandDataRef.validate(valid => {
+        if (valid) {
           const brandInfo = this.clone(this.brandData)
           console.log(brandInfo)
           if (brandInfo.isNew) {
@@ -579,6 +593,10 @@ export default {
         }
       }
       return result
+    },
+    // 输入框输入时
+    handleInput() {
+      this.addFromData.mobile = this.addFromData.mobile.replace(/[^\w\.\/]/ig, '')
     }
   }
 }

+ 33 - 4
src/views/supplier/user/edit.vue

@@ -2,11 +2,14 @@
   <div v-loading="isLoading" class="addSupplier">
     <el-form ref="addFromDataRef" :model="addFromData" :rules="addFromDataRules" label-width="120px" class="addForm">
       <el-form-item label="供应商类型:" prop="shopType">
+        <el-input v-if="addFromData.shopType===1" placeholder="请输入供应商名称" disabled value="品牌方" />
+        <el-input v-if="addFromData.shopType===2" placeholder="请输入供应商名称" disabled value="代理商" />
         <el-select
           v-model="addFromData.shopType"
           placeholder="请选择供应商类型"
           style="width: 100%"
           disabled
+          class="hiddenInput"
           @change="handleTypeChange"
         >
           <el-option label="品牌方" :value="1" />
@@ -20,12 +23,14 @@
       </el-form-item>
 
       <el-form-item v-if="addFromData.shopType === 1" label="供应商名称:" prop="brandId">
+        <el-input v-model="addFromData.shopName" placeholder="请输入供应商名称" disabled />
         <el-select
           v-model="addFromData.brandId"
           disabled
           placeholder="请选择品牌"
           style="width: 100%"
           filterable
+          class="hiddenInput"
           @change="setShopName"
         >
           <el-option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id" />
@@ -34,7 +39,7 @@
       <!-- 供应商名称END -->
 
       <el-form-item label="手机号:" prop="mobile">
-        <el-input v-model="addFromData.mobile" placeholder="请输入手机号" maxlength="11" show-word-limit />
+        <el-input v-model="addFromData.mobile" placeholder="请输入手机号" maxlength="11" show-word-limit @input="handleInput" />
       </el-form-item>
 
       <el-form-item label="联系人:" prop="linkMan">
@@ -156,6 +161,7 @@
             v-if="brandData.statementType === 3"
             ref="uploadImageRef2"
             :file-list="fileList2"
+            tip-title="宽760px"
             @success="imageUploadSuccess2"
             @error="imageUploadFaild2"
             @remove="imageRemove2"
@@ -210,7 +216,15 @@ export default {
         callback()
       }
     }
+    const valideShopInfo = (rule, value, callback) => {
+      if (value.length <= 0) {
+        callback(new Error('品牌不能为空'))
+      } else {
+        callback()
+      }
+    }
     return {
+      supplierId: '',
       dialogLoading: false,
       isLoading: false,
       // 是否显示对话框
@@ -267,7 +281,8 @@ export default {
         ],
         linkMan: { required: true, message: '联系人不能为空', trigger: 'blur' },
         countryId: { required: true, message: '产地不能为空', trigger: 'change' },
-        brandAuthLogo: { required: true, message: '品牌logo不能为空', trigger: 'change' }
+        brandAuthLogo: { required: true, message: '品牌logo不能为空', trigger: 'change' },
+        shopInfo: { validator: valideShopInfo, trigger: 'change', required: true }
       },
       // 表单校验规则2
       brandDataRules: {
@@ -297,6 +312,7 @@ export default {
   created() {
     this.getSupplierData()
     this.initAddForm()
+    this.supplierId = this.addFromData.authUserId
   },
   methods: {
     // 初始添加供应商时的表单数据
@@ -488,7 +504,15 @@ export default {
       if (this.brandData.statementType === 4 && (this.brandData.statementFileId === null || this.brandData.statementFileId === '')) {
         this.brandData.statementFileId = this.brandData.statementFileId === null ? '' : null
         this.$refs.uploadFileRef.$refs.upload.submit()
+        // if (this.brandData.isNew) {
+        //   this.addFromData.authUserId = -1
+        //   this.$refs.uploadFileRef.$refs.upload.submit()
+        // } else {
+        //   this.addFromData.authUserId = this.supplierId
+        //   this.$refs.uploadFileRef.$refs.upload.submit()
+        // }
       } else {
+        // this.addFromData.authUserId = this.supplierId
         this.saveBrand()
       }
     },
@@ -510,8 +534,8 @@ export default {
             this.prevBrandId = -1
             console.log('添加:' + this.excludeBrand)
           }
+          this.showDialog = false
         }
-        this.showDialog = false
       })
     },
     // 修改
@@ -571,7 +595,9 @@ export default {
     // 文件上传成功
     fileUploadSuccess(data) {
       this.brandData.statementFileId = data.data
-      this.saveBrand()
+      setTimeout(() => {
+        this.saveBrand()
+      }, 500)
     },
     fileUploadFaild(err, file, fileList) {
       console.log(err)
@@ -622,6 +648,9 @@ export default {
         }
       }
       return result
+    },
+    handleInput() {
+      this.addFromData.mobile = this.addFromData.mobile.replace(/[^\w\.\/]/ig, '')
     }
   }
 }

+ 15 - 4
src/views/supplier/user/index.vue

@@ -35,6 +35,7 @@
       fit
       highlight-current-row
       style="width: 100%;"
+      header-row-class-name="tableHeader"
     >
       <el-table-column label="序号" type="index" sortable="custom" align="center" width="80" />
       <el-table-column label="供应商名称" align="center" prop="name" />
@@ -44,10 +45,9 @@
           <span v-if="row.shopType === 2">代理商</span>
         </template>
       </el-table-column>
-      <!-- <el-table-column label="所属品牌" width="150px" align="center" prop="brandName" /> -->
       <el-table-column label="手机号" width="120px" align="center" prop="mobile" />
       <el-table-column label="联系人" width="100px" align="center" prop="linkMan" />
-      <el-table-column label="供应商状态" align="center" width="100px">
+      <el-table-column label="供应商状态" align="center" width="140px">
         <template v-slot="{row}">
           <el-switch v-model="row.shopStatus" @change="handleChangeStatus(row)" />
         </template>
@@ -192,10 +192,20 @@ export default {
       supplierStatusChange(params)
         .then(res => {
           if (res.code === 0) {
-            this.$message.success('操作成功')
+            this.getList()
+            this.$message({
+              message: '操作成功',
+              duration: 500,
+              type: 'success'
+            })
           }
         }).catch(() => {
-          this.$message.danger('操作失败')
+          this.getList()
+          this.$message({
+            message: '操作失败',
+            duration: 500,
+            type: 'danger'
+          })
         })
     },
     // 重置密码
@@ -255,4 +265,5 @@ export default {
     margin-left: 10px;
   }
 }
+
 </style>

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott