yuwenjun 4 år sedan
förälder
incheckning
4aecdcee4c

+ 1 - 2
src/permission.js

@@ -62,7 +62,6 @@ router.beforeEach(async(to, from, next) => {
     }
   } else {
     /* has no token*/
-
     if (whiteList.indexOf(to.path) !== -1) {
       // in the free login whitelist, go directly
       next()
@@ -70,7 +69,7 @@ router.beforeEach(async(to, from, next) => {
       // other pages that do not have permission to access are redirected to the login page.
       next(`/login`)
       // Message.error('登录失效,请重新登录!')
-      Message({ message: '登录失效,请重新登录!' })
+      // Message({ message: '登录失效,请重新登录!' })
       // router.replace('/login')
       NProgress.done()
       return

+ 2 - 1
src/store/getters.js

@@ -14,6 +14,7 @@ const getters = {
   permission_routes: state => state.permission.routes,
   errorLogs: state => state.errorLog.logs,
   initRouter: state => state.permission.initRouter,
-  proxyInfo: state => state.user.proxyInfo
+  proxyInfo: state => state.user.proxyInfo,
+  shopType: state => state.user.shopType
 }
 export default getters

+ 8 - 3
src/store/modules/user.js

@@ -23,7 +23,8 @@ const state = {
   shopStatus: userInfo?.shopStatus || '',
   authUserId: userInfo?.authUserId || '',
   userIdentity: userInfo?.userIdentity || '',
-  proxyInfo: null
+  proxyInfo: null,
+  shopType: userInfo?.shopType || ''
 }
 
 const mutations = {
@@ -40,9 +41,13 @@ const mutations = {
     state.shopStatus = userInfo.shopStatus
     state.authUserId = userInfo.authUserId
     state.userIdentity = userInfo.userIdentity
+    state.shopType = userInfo.shopType
   },
   SET_PROXY_INFO: (state, proxyInfo) => {
     state.proxyInfo = proxyInfo
+  },
+  SET_SHOP_TYPE: (state, shopType) => {
+    state.shopType = shopType
   }
 }
 
@@ -52,10 +57,10 @@ const actions = {
     const { username, password } = userInfo
     return new Promise((resolve, reject) => {
       login({ mobileOrName: username.trim(), password: password }).then(response => {
-        const { shopStatus, token, authUserId, userIdentity, name } = response.data
+        const { shopStatus, token, authUserId, userIdentity, name, shopType } = response.data
         const roles = formatRoles(userIdentity)
         commit('SET_TOKEN', token) // 保存token
-        commit('SET_USERINFO', { shopStatus, authUserId, userIdentity }) // 保存用户信息
+        commit('SET_USERINFO', { shopStatus, authUserId, userIdentity, shopType }) // 保存用户信息
         commit('SET_ROLES', roles) // 根据用户类型生成角色列表
         commit('SET_NAME', name) // 保存用户名称
         // commit('app/SET_IS_REFRESH', false)

+ 5 - 0
src/views/supplier/auth/index.vue

@@ -140,6 +140,11 @@ export default {
   },
   created() {
     this.listQuery.authUserId = this.$route.query.id || this.proxyInfo?.authUserId || this.authUserId
+    const type = this.$route.query.type
+    // 如果是通过路由参数传递的type,则需要同步到store
+    if (type) {
+      this.$store.commit('user/SET_SHOP_TYPE', parseInt(type))
+    }
     this.getList()
   },
   methods: {

+ 42 - 3
src/views/supplier/product/add.vue

@@ -10,6 +10,17 @@
       <el-form-item label="商品名称:" prop="productName">
         <el-input v-model="formData.productName" placeholder="请输入商品名称" />
       </el-form-item>
+      <el-form-item v-if="shopType === 2" label="所属品牌:" prop="brandId">
+        <el-select
+          v-model="formData.brandId"
+          placeholder="请选择品牌"
+          style="width: 100%"
+          filterable
+          @change="handleChange"
+        >
+          <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>
@@ -68,6 +79,7 @@
 <script>
 import UploadImage from '../components/uploadImage'
 import { saveProduct } from '@/api/product'
+import { fetchBrandList } from '@/api/brand'
 import { mapGetters } from 'vuex'
 import { isSnCode } from '@/utils/validate'
 export default {
@@ -79,10 +91,18 @@ export default {
       }
       callback()
     }
+    const valideBrandId = (rules, value, callback) => {
+      if (!value) {
+        return callback(new Error('所属品牌不能为空'))
+      }
+      callback()
+    }
     return {
       isLoading: false,
       paramsCount: 4,
+      brandList: [],
       formData: {
+        authUserId: '',
         authId: '', //	授权id
         certificateImage: '', //	授权牌照
         createBy: '', //	创建人id
@@ -92,25 +112,34 @@ export default {
         productImage: '', //	商品图片
         productName: '', //	商品名称
         snCode: '', //	商品SN码
-        status: 1 //	上架状态:0下架,1上架
+        status: 1, //	上架状态:0下架,1上架
+        brandId: ''
       },
       rules: {
         certificateImage: [{ required: true, message: '授权牌照不能为空' }],
         paramList: [{ required: true, message: '参数不能为空' }],
         productImage: [{ required: true, message: '商品图片不能为空' }],
         snCode: [{ required: true, message: 'SN码不能为空' }, { validator: valideSNcode }],
-        productName: [{ required: true, message: '商品名称不能为空' }, { max: 50, message: '字数在50字符以内' }]
+        productName: [{ required: true, message: '商品名称不能为空' }, { max: 50, message: '字数在50字符以内' }],
+        brandId: [{ required: true, validator: valideBrandId, tigger: 'change' }]
       }
     }
   },
   computed: {
-    ...mapGetters(['authUserId', 'proxyInfo'])
+    ...mapGetters(['authUserId', 'proxyInfo', 'shopType'])
   },
   created() {
     this.formData.authId = this.$route.query.id
+    this.formData.authUserId = this.proxyInfo?.authUserId || this.authUserId
     this.initParamList()
+    if (this.shopType === 2) {
+      this.getBrandList()
+    }
   },
   methods: {
+    handleChange() {
+      console.log(this.formData)
+    },
     // 提交
     submit() {
       this.$refs.addFormRef.validate(valide => {
@@ -124,10 +153,12 @@ export default {
       this.isLoading = true
       // createBy先判断是否为代理操作,是就从代理数据中获取,否则直接获取当前登录用户的信息
       this.formData.createBy = this.proxyInfo?.authUserId || this.authUserId
+      this.formData.authUserId = this.proxyInfo?.authUserId || this.authUserId
       saveProduct(this.formData).then(res => {
         this.$message.success(res.data)
         this.$refs.addFormRef.resetFields()
         this.clearFormData()
+        this.$router.replace(`/product/list?id=${this.formData.authId}`)
       }).finally(() => {
         this.isLoading = false
       })
@@ -141,6 +172,14 @@ export default {
         })
       }
     },
+    // 获取品牌信息
+    getBrandList() {
+      fetchBrandList({ type: 3, authUserId: this.formData.authUserId }).then(res => {
+        console.log(res)
+
+        this.brandList = res.data
+      })
+    },
     // 添加一栏参数
     handleAddParam() {
       this.paramsCount += 1

+ 29 - 3
src/views/supplier/product/edit.vue

@@ -10,6 +10,16 @@
       <el-form-item label="商品名称:" prop="productName">
         <el-input v-model="formData.productName" placeholder="请输入商品名称" />
       </el-form-item>
+      <el-form-item v-if="shopType === 2" label="所属品牌:" prop="brandId">
+        <el-select
+          v-model="formData.brandId"
+          placeholder="请选择品牌"
+          style="width: 100%"
+          filterable
+        >
+          <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>
@@ -68,6 +78,7 @@
 <script>
 import UploadImage from '../components/uploadImage'
 import { saveProduct, getProductById } from '@/api/product'
+import { fetchBrandList } from '@/api/brand'
 import { mapGetters } from 'vuex'
 export default {
   components: { UploadImage },
@@ -76,6 +87,7 @@ export default {
       isLoading: false,
       paramsCount: 4,
       formData: {
+        authUserId: '',
         authId: '', //	授权id
         certificateImage: '', //	授权牌照
         createBy: '', //	创建人id
@@ -85,8 +97,10 @@ export default {
         productImage: '', //	商品图片
         productName: '', //	商品名称
         snCode: '', //	商品SN码
-        status: 1 //	上架状态:0下架,1上架
+        status: 1, //	上架状态:0下架,1上架
+        brandId: ''
       },
+      brandList: [],
       rules: {
         certificateImage: [{ required: true, message: '授权牌照不能为空' }],
         paramList: [{ required: true, message: '参数不能为空' }],
@@ -99,11 +113,15 @@ export default {
     }
   },
   computed: {
-    ...mapGetters(['authUserId'])
+    ...mapGetters(['authUserId', 'proxyInfo', 'shopType'])
   },
   created() {
     this.formData.productId = this.$route.query.id
+    this.formData.authUserId = this.proxyInfo?.authUserId || this.authUserId
     this.initFormData()
+    if (this.shopType === 2) {
+      this.getBrandList()
+    }
   },
   methods: {
     // 提交
@@ -133,6 +151,13 @@ export default {
         this.isLoading = false
       })
     },
+    // 获取品牌信息
+    getBrandList() {
+      fetchBrandList({ type: 3, authUserId: this.formData.authUserId }).then(res => {
+        console.log(res)
+        this.brandList = res.data
+      })
+    },
     // 初始化上传图片列表
     initImageList() {
       setTimeout(() => {
@@ -149,7 +174,8 @@ export default {
     // 保存表单数据
     save() {
       this.isLoading = true
-      this.formData.createBy = this.authUserId
+      this.formData.createBy = this.proxyInfo?.authUserId || this.authUserId
+      this.formData.authUserId = this.proxyInfo?.authUserId || this.authUserId
       saveProduct(this.formData).then(res => {
         console.log(res)
         this.$message.success(res.data)

+ 11 - 11
src/views/supplier/user/add.vue

@@ -89,17 +89,6 @@
     <!-- 供应商添加品牌的对话框 -->
     <el-dialog v-loading="dialogLoading" title="添加代理品牌" :visible.sync="showDialog" width="width" @closed="dialogClosed">
       <el-form ref="brandDataRef" :model="brandData" :rules="brandDataRules" label-width="100px">
-        <el-form-item label="产地:" prop="countryId">
-          <el-select v-model="brandData.countryId" placeholder="产地" style="width: 100%" filterable>
-            <el-option
-              v-for="item in countryList"
-              :key="item.countryId"
-              :label="item.countryName"
-              :value="item.countryId"
-            />
-          </el-select>
-        </el-form-item>
-
         <el-form-item label="选择品牌:" prop="brandId">
           <el-select
             v-model="brandData.brandId"
@@ -112,6 +101,17 @@
           </el-select>
         </el-form-item>
 
+        <el-form-item label="产地:" prop="countryId">
+          <el-select v-model="brandData.countryId" placeholder="产地" style="width: 100%" filterable>
+            <el-option
+              v-for="item in countryList"
+              :key="item.countryId"
+              :label="item.countryName"
+              :value="item.countryId"
+            />
+          </el-select>
+        </el-form-item>
+
         <el-form-item label="品牌logo:" class="no-input" prop="brandAuthLogo">
           <upload-image
             ref="uploadImageRef1"

+ 12 - 12
src/views/supplier/user/edit.vue

@@ -91,17 +91,6 @@
     <!-- 供应商添加品牌的对话框 -->
     <el-dialog v-loading="dialogLoading" title="添加代理品牌" :visible.sync="showDialog" width="width" @closed="dialogClosed">
       <el-form ref="brandDataRef" :model="brandData" :rules="brandDataRules" label-width="100px">
-        <el-form-item label="产地:" prop="countryId">
-          <el-select v-model="brandData.countryId" placeholder="产地" style="width: 100%" filterable>
-            <el-option
-              v-for="item in countryList"
-              :key="item.countryId"
-              :label="item.countryName"
-              :value="item.countryId"
-            />
-          </el-select>
-        </el-form-item>
-
         <el-form-item label="选择品牌:" prop="brandId">
           <el-select
             v-model="brandData.brandId"
@@ -114,6 +103,17 @@
           </el-select>
         </el-form-item>
 
+        <el-form-item label="产地:" prop="countryId">
+          <el-select v-model="brandData.countryId" placeholder="产地" style="width: 100%" filterable>
+            <el-option
+              v-for="item in countryList"
+              :key="item.countryId"
+              :label="item.countryName"
+              :value="item.countryId"
+            />
+          </el-select>
+        </el-form-item>
+
         <el-form-item label="品牌logo:" class="no-input" prop="brandAuthLogo">
           <upload-image
             ref="uploadImageRef1"
@@ -167,7 +167,7 @@
           <upload-file
             v-if="brandData.statementType === 4"
             ref="uploadFileRef"
-            :auth-user-id="brandData.authUserId"
+            :auth-user-id="addFromData.authUserId"
             :brand-id="brandData.brandId"
             :file-list="fileList3"
             @success="fileUploadSuccess"

+ 3 - 3
src/views/supplier/user/index.vue

@@ -4,13 +4,13 @@
       <span>供应商名称:</span>
       <el-input v-model="listQuery.shopName" placeholder="供应商名称" style="width: 200px;" class="filter-item" @keyup.enter.native="handleFilter" />
       <span>供应商类型:</span>
-      <el-select v-model="listQuery.shopType" placeholder="供应商类型" clearable style="width: 200px" class="filter-item">
+      <el-select v-model="listQuery.shopType" placeholder="供应商类型" clearable style="width: 200px" class="filter-item" @change="getList()">
         <el-option label="所有类型" value="" />
         <el-option label="代理商" :value="2" />
         <el-option label="品牌方" :value="1" />
       </el-select>
       <span>所属品牌:</span>
-      <el-select v-model="listQuery.brandId" placeholder="所属品牌" clearable class="filter-item" style="width: 200px">
+      <el-select v-model="listQuery.brandId" placeholder="所属品牌" clearable class="filter-item" style="width: 200px" @change="getList()">
         <el-option label="所有品牌" value="" />
         <el-option
           v-for="item in brandList"
@@ -225,7 +225,7 @@ export default {
       // 要执行的操作
       console.log(item)
       this.$store.commit('user/SET_PROXY_INFO', item)
-      this.$router.push(`/auth/list`)
+      this.$router.push(`/auth/list?type=${item.shopType}`)
     },
     // 过滤列表
     handleFilter() {