|
@@ -1,22 +1,26 @@
|
|
<template>
|
|
<template>
|
|
- <div class="addSupplier">
|
|
|
|
|
|
+ <div v-loading="isLoading" class="addSupplier">
|
|
<el-form ref="addFormRef" :model="addData" :rules="rules" label-width="120px" class="addForm">
|
|
<el-form ref="addFormRef" :model="addData" :rules="rules" label-width="120px" class="addForm">
|
|
<el-form-item label="供应商类型:" prop="shopType">
|
|
<el-form-item label="供应商类型:" prop="shopType">
|
|
- <el-select v-model="addData.shopType" placeholder="请选择供应商类型" style="width: 100%">
|
|
|
|
- <el-option label="代理商" :value="1" />
|
|
|
|
- <el-option label="品牌方" :value="2" />
|
|
|
|
|
|
+ <el-select v-model="addData.shopType" placeholder="请选择供应商类型" style="width: 100%" @change="getBrandList">
|
|
|
|
+ <el-option label="品牌方" :value="1" />
|
|
|
|
+ <el-option label="代理商" :value="2" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<!-- 供应商名称 -->
|
|
<!-- 供应商名称 -->
|
|
- <el-form-item v-if="addData.shopType===1" label="供应商名称:" prop="shopName">
|
|
|
|
|
|
+ <el-form-item v-if="addData.shopType===2" label="供应商名称:" prop="shopName">
|
|
<el-input v-model="addData.shopName" placeholder="请输入供应商名称" />
|
|
<el-input v-model="addData.shopName" placeholder="请输入供应商名称" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item v-if="addData.shopType===2" label="供应商名称:" prop="shopName">
|
|
|
|
- <el-select v-model="addData.shopName" placeholder="请选择供应商类型" style="width: 100%">
|
|
|
|
- <el-option label="供应商名称1" value="1" />
|
|
|
|
- <el-option label="供应商名称2" value="2" />
|
|
|
|
|
|
+ <el-form-item v-if="addData.shopType===1" label="供应商名称:" prop="shopName">
|
|
|
|
+ <el-select v-model="selectedBrandIndex" placeholder="请选择品牌" style="width: 100%" filterable @change="setShopName">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="(item,index) in brandList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.name"
|
|
|
|
+ :value="index"
|
|
|
|
+ />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 供应商名称END -->
|
|
<!-- 供应商名称END -->
|
|
@@ -27,30 +31,34 @@
|
|
<el-form-item label="联系人:" prop="linkMan">
|
|
<el-form-item label="联系人:" prop="linkMan">
|
|
<el-input v-model="addData.linkMan" placeholder="请输入联系人" />
|
|
<el-input v-model="addData.linkMan" placeholder="请输入联系人" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="所属品牌:" prop="brandId">
|
|
|
|
- <el-select v-model="addData.brandId" placeholder="请选择所属品牌" style="width: 100%">
|
|
|
|
|
|
+ <el-form-item v-if="addData.shopType===2" label="所属品牌:" prop="brandId">
|
|
|
|
+ <el-select v-model="addData.brandId" placeholder="请选择所属品牌" style="width: 100%" filterable @change="setShopName">
|
|
<el-option
|
|
<el-option
|
|
- v-for="item in brand"
|
|
|
|
|
|
+ v-for="item in brandList"
|
|
:key="item.id"
|
|
:key="item.id"
|
|
- :label="item.label"
|
|
|
|
|
|
+ :label="item.name"
|
|
:value="item.id"
|
|
:value="item.id"
|
|
/>
|
|
/>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="产地:" prop="countryId">
|
|
<el-form-item label="产地:" prop="countryId">
|
|
- <el-select v-model="addData.countryId" placeholder="产地" style="width: 100%">
|
|
|
|
- <el-option label="中国" value="1" />
|
|
|
|
- <el-option label="法国" value="2" />
|
|
|
|
|
|
+ <el-select v-model="addData.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-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="品牌logo:" class="no-input" prop="brandAuthLogo">
|
|
<el-form-item label="品牌logo:" class="no-input" prop="brandAuthLogo">
|
|
- <upload-image @success="imageUploadSuccess" @error="imageUploadFaild" />
|
|
|
|
- <el-input v-model="addData.brandAuthLogo" type="hidden" />
|
|
|
|
|
|
+ <upload-image ref="uploadImageRef1" :file-list="fileList1" @success="imageUploadSuccess1" @error="imageUploadFaild1" />
|
|
|
|
+ <el-input v-model="addData.brandAuthLogo" type="hidden" class="hiddenInput" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="官网认证链接:">
|
|
<el-form-item label="官网认证链接:">
|
|
<el-input v-model="addData.securityLink" placeholder="请输入官网认证链接" />
|
|
<el-input v-model="addData.securityLink" placeholder="请输入官网认证链接" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <template v-if="addData.shopType===1">
|
|
|
|
|
|
+ <template v-if="addData.shopType===2">
|
|
<el-form-item label="代理声明:">
|
|
<el-form-item label="代理声明:">
|
|
<el-radio v-model="addData.statementType" :label="1">弹窗</el-radio>
|
|
<el-radio v-model="addData.statementType" :label="1">弹窗</el-radio>
|
|
<el-radio v-model="addData.statementType" :label="2">链接</el-radio>
|
|
<el-radio v-model="addData.statementType" :label="2">链接</el-radio>
|
|
@@ -65,12 +73,12 @@
|
|
<el-input v-if="addData.statementType === 2" v-model="addData.statementLink" />
|
|
<el-input v-if="addData.statementType === 2" v-model="addData.statementLink" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item v-else-if="addData.statementType === 3" label="图片:" class="no-input" prop="statementImage">
|
|
<el-form-item v-else-if="addData.statementType === 3" label="图片:" class="no-input" prop="statementImage">
|
|
- <upload-image v-if="addData.statementType === 3" />
|
|
|
|
- <el-input v-model="addData.statementImage" type="statementFileId" />
|
|
|
|
|
|
+ <upload-image v-if="addData.statementType === 3" ref="uploadImageRef2" @success="imageUploadSuccess2" @error="imageUploadFaild2" />
|
|
|
|
+ <el-input v-model="addData.statementImage" type="hidden" class="hiddenInput" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item v-else label="文件:" prop="statementImage">
|
|
|
|
- <upload-file v-if="addData.statementType === 4" @success="fileUploadSuccess" @error="fileUploadFaild" />
|
|
|
|
- <el-input v-model="addData.statementFileId" type="hidden" />
|
|
|
|
|
|
+ <el-form-item v-else label="文件:" prop="statementFileId">
|
|
|
|
+ <upload-file v-if="addData.statementType === 4" ref="uploadFileRef" @success="fileUploadSuccess" @error="fileUploadFaild" />
|
|
|
|
+ <el-input v-model="addData.statementFileId" type="hidden" class="hiddenInput" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
</template>
|
|
</template>
|
|
@@ -93,40 +101,42 @@ import UploadImage from '../components/uploadImage'
|
|
import UploadFile from '../components/uploadFile'
|
|
import UploadFile from '../components/uploadFile'
|
|
import { mapGetters } from 'vuex'
|
|
import { mapGetters } from 'vuex'
|
|
import { isMobile } from '@/utils/validate'
|
|
import { isMobile } from '@/utils/validate'
|
|
|
|
+import { fetchBrandList } from '@/api/brand'
|
|
|
|
+import { addSupplier } from '@/api/supplier'
|
|
|
|
+
|
|
export default {
|
|
export default {
|
|
components: { UploadImage, UploadFile },
|
|
components: { UploadImage, UploadFile },
|
|
data() {
|
|
data() {
|
|
var valideMobile = (rule, value, callback) => {
|
|
var valideMobile = (rule, value, callback) => {
|
|
if (!isMobile(value)) {
|
|
if (!isMobile(value)) {
|
|
- console.log(isMobile(value))
|
|
|
|
callback(new Error('手机号格式不正确'))
|
|
callback(new Error('手机号格式不正确'))
|
|
} else {
|
|
} else {
|
|
callback()
|
|
callback()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return {
|
|
return {
|
|
|
|
+ isLoading: false,
|
|
|
|
+
|
|
addData: {
|
|
addData: {
|
|
authUserId: '', // 供应商id
|
|
authUserId: '', // 供应商id
|
|
- brandAuthLogo: 'brandAuthLogo.png', // 品牌授权logo
|
|
|
|
|
|
+ brandAuthLogo: '', // 品牌授权logo
|
|
brandId: '', // 品牌id
|
|
brandId: '', // 品牌id
|
|
- countryId: '', // 产地国家id
|
|
|
|
|
|
+ countryId: 1, // 产地国家id
|
|
createBy: '', // 创建人用户id
|
|
createBy: '', // 创建人用户id
|
|
linkMan: '', // 联系人
|
|
linkMan: '', // 联系人
|
|
mobile: '', // 手机号
|
|
mobile: '', // 手机号
|
|
securityLink: '', // 官网认证链接
|
|
securityLink: '', // 官网认证链接
|
|
shopName: '', // 供应商名称
|
|
shopName: '', // 供应商名称
|
|
shopStatus: 1, // 供应商状态:0停用 1启用
|
|
shopStatus: 1, // 供应商状态:0停用 1启用
|
|
- shopType: 2, // 供应商类型:1代理商,2品牌方
|
|
|
|
|
|
+ shopType: 1, // 供应商类型:1品牌方,2代理商
|
|
statementContent: '', // 声明弹窗内容
|
|
statementContent: '', // 声明弹窗内容
|
|
statementLink: '', // 声明链接
|
|
statementLink: '', // 声明链接
|
|
statementFileId: '', // 声明文件id
|
|
statementFileId: '', // 声明文件id
|
|
- statementImage: 'statement.png', // 声明图片
|
|
|
|
|
|
+ statementImage: '', // 声明图片
|
|
statementType: 1 // 代理声明类型:1弹窗 2链接 3图片 4文件(.doc .ppt .pdf)
|
|
statementType: 1 // 代理声明类型:1弹窗 2链接 3图片 4文件(.doc .ppt .pdf)
|
|
},
|
|
},
|
|
- brand: [
|
|
|
|
- { id: 1, label: '品牌1' },
|
|
|
|
- { id: 2, label: '品牌2' }
|
|
|
|
- ],
|
|
|
|
|
|
+ selectedBrandIndex: '',
|
|
|
|
+ brandList: [], // 品牌列表
|
|
rules: {
|
|
rules: {
|
|
shopType: [{ required: true, message: '供应商类型不能为空', trigger: 'change' }],
|
|
shopType: [{ required: true, message: '供应商类型不能为空', trigger: 'change' }],
|
|
shopName: [{ required: true, message: '供应商名称不能为空', trigger: ['blur', 'change'] }],
|
|
shopName: [{ required: true, message: '供应商名称不能为空', trigger: ['blur', 'change'] }],
|
|
@@ -136,34 +146,102 @@ export default {
|
|
], // 手机号格式校验
|
|
], // 手机号格式校验
|
|
linkMan: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
|
|
linkMan: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
|
|
countryId: [{ required: true, message: '产地不能为空', trigger: 'change' }],
|
|
countryId: [{ required: true, message: '产地不能为空', trigger: 'change' }],
|
|
- brandAuthLogo: [{ required: true }],
|
|
|
|
|
|
+ brandAuthLogo: [{ required: true, message: '品牌logo不能为空' }],
|
|
brandId: [{ required: true, message: '所属品牌不能为空', trigger: 'change' }],
|
|
brandId: [{ required: true, message: '所属品牌不能为空', trigger: 'change' }],
|
|
statementContent: [{ required: true, message: '声明不能为空', trigger: 'blur' }],
|
|
statementContent: [{ required: true, message: '声明不能为空', trigger: 'blur' }],
|
|
statementLink: [{ required: true, message: '声明链接不能为空', trigger: 'blur' }],
|
|
statementLink: [{ required: true, message: '声明链接不能为空', trigger: 'blur' }],
|
|
- statementImage: [{ required: true }],
|
|
|
|
- statementFileId: [{ required: true }]
|
|
|
|
- }
|
|
|
|
|
|
+ statementImage: [{ required: true, message: '声明图片不能为空' }],
|
|
|
|
+ statementFileId: [{ required: true, message: '声明文件不能为空' }]
|
|
|
|
+ },
|
|
|
|
+ fileList1: [], // 已上传的图片列表 品牌logo
|
|
|
|
+ fileList2: [], // 已上传的图片列表 声明图片
|
|
|
|
+ fileList3: [] // 已上传的图片列表 声明文件
|
|
|
|
+ // countryList: []
|
|
}
|
|
}
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
- ...mapGetters(['userIdentity', 'authUserId'])
|
|
|
|
|
|
+ ...mapGetters(['userIdentity', 'name', 'countryList', 'authUserId'])
|
|
|
|
+ },
|
|
|
|
+ created() {
|
|
|
|
+ this.initAddForm()
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
- // 保存
|
|
|
|
- save() {
|
|
|
|
- this.$refs.addFormRef.validate(valide => {
|
|
|
|
- console.log(valide)
|
|
|
|
|
|
+ // 初始添加供应商时的表单数据
|
|
|
|
+ initAddForm() {
|
|
|
|
+ // this.addData.authUserId = this.authUserId
|
|
|
|
+ this.getBrandList()
|
|
|
|
+ },
|
|
|
|
+ // 获取品牌列表
|
|
|
|
+ getBrandList() {
|
|
|
|
+ // 获取品牌列表
|
|
|
|
+ fetchBrandList({ type: this.addData.shopType }).then(res => {
|
|
|
|
+ console.log(res)
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
+ this.brandList = res.data
|
|
|
|
+ }
|
|
|
|
+ }).catch(err => console.log(err))
|
|
|
|
+ },
|
|
|
|
+ // 保存表单数据
|
|
|
|
+ async save() {
|
|
|
|
+ this.isLoading = true
|
|
|
|
+ this.addData.createBy = this.authUserId
|
|
|
|
+ const that = this
|
|
|
|
+ // this.uploadFile()
|
|
|
|
+ await this.$refs.addFormRef.validate(valide => {
|
|
|
|
+ if (!valide) {
|
|
|
|
+ this.isLoading = false
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ addSupplier(that.addData).then(res => {
|
|
|
|
+ console.log(res)
|
|
|
|
+ this.$message.success('添加成功')
|
|
|
|
+ // this.$refs.addFormRef.resetFields()
|
|
|
|
+ }).finally(() => {
|
|
|
|
+ this.isLoading = false
|
|
|
|
+ this.$refs.addFormRef.resetFields()
|
|
|
|
+ this.addData.securityLink = ''
|
|
|
|
+ })
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
+ // 设置品牌名称
|
|
|
|
+ setShopName(index) {
|
|
|
|
+ const fileList = []
|
|
|
|
+ if (this.addData.shopType === 1) {
|
|
|
|
+ this.addData.shopName = this.brandList[index]?.name
|
|
|
|
+ }
|
|
|
|
+ this.addData.brandAuthLogo = this.brandList[index]?.authLogo || ''
|
|
|
|
+ if (this.brandList[index]?.authLogo) {
|
|
|
|
+ fileList.push({ name: this.addData.shopName, url: this.brandList[index]?.authLogo || '' })
|
|
|
|
+ }
|
|
|
|
+ this.fileList1 = fileList
|
|
|
|
+ },
|
|
|
|
+ // 手动提交上传图片
|
|
|
|
+ // uploadFile() {
|
|
|
|
+ // this.$refs.uploadImageRef1?.$refs.upload.submit()
|
|
|
|
+ // this.$refs.uploadImageRef2?.$refs.upload.submit()
|
|
|
|
+ // this.$refs.uploadfileRef?.$refs.upload.submit()
|
|
|
|
+ // },
|
|
// 文件上传成功
|
|
// 文件上传成功
|
|
- fileUploadSuccess(response, file, fileList) {},
|
|
|
|
|
|
+ fileUploadSuccess(data) {
|
|
|
|
+ this.addData.statementFileId = data.data
|
|
|
|
+ },
|
|
fileUploadFaild(err, file, fileList) {
|
|
fileUploadFaild(err, file, fileList) {
|
|
console.log(err)
|
|
console.log(err)
|
|
},
|
|
},
|
|
|
|
|
|
- // 图片上传成功
|
|
|
|
- imageUploadSuccess(response, file, fileList) {},
|
|
|
|
- imageUploadFaild(err, file, fileList) {
|
|
|
|
|
|
+ // 图片上传成功 品牌logo
|
|
|
|
+ imageUploadSuccess1(data) {
|
|
|
|
+ this.addData.brandAuthLogo = data.data
|
|
|
|
+ },
|
|
|
|
+ imageUploadFaild1(err, file, fileList) {
|
|
|
|
+ console.log(err)
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 图片上传成功 声明图片
|
|
|
|
+ imageUploadSuccess2(data) {
|
|
|
|
+ this.addData.statementImage = data.data
|
|
|
|
+ },
|
|
|
|
+ imageUploadFaild2(err, file, fileList) {
|
|
console.log(err)
|
|
console.log(err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -185,8 +263,7 @@ export default {
|
|
width: 140px;
|
|
width: 140px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-.no-input{
|
|
|
|
- height: 148px !important;
|
|
|
|
- overflow: hidden;
|
|
|
|
|
|
+.hiddenInput{
|
|
|
|
+ display: none;
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|