|
@@ -1,20 +1,20 @@
|
|
|
<template>
|
|
|
<div v-loading="isLoading" class="addSupplier">
|
|
|
- <el-form ref="addFormRef" :model="addData" :rules="rules" label-width="120px" class="addForm">
|
|
|
+ <el-form ref="addFormRef" :model="addFromData" :rules="addFromDataRules" label-width="120px" class="addForm">
|
|
|
<el-form-item label="供应商类型:" prop="shopType">
|
|
|
- <el-select v-model="addData.shopType" placeholder="请选择供应商类型" style="width: 100%" disabled @change="getBrandList">
|
|
|
+ <el-select v-model="addFromData.shopType" placeholder="请选择供应商类型" style="width: 100%" disabled @change="reGetBrandList">
|
|
|
<el-option label="品牌方" :value="1" />
|
|
|
<el-option label="代理商" :value="2" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
|
|
|
<!-- 供应商名称 -->
|
|
|
- <el-form-item v-if="addData.shopType===2" label="供应商名称:" prop="shopName">
|
|
|
- <el-input v-model="addData.shopName" placeholder="请输入供应商名称" disabled />
|
|
|
+ <el-form-item v-if="addFromData.shopType===2" label="供应商名称:" prop="shopName">
|
|
|
+ <el-input v-model="addFromData.shopName" placeholder="请输入供应商名称" disabled />
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item v-if="addData.shopType===1" label="供应商名称:" prop="shopName">
|
|
|
- <el-select v-model="addData.brandId" placeholder="请选择品牌" style="width: 100%" filterable disabled>
|
|
|
+ <el-form-item v-if="addFromData.shopType===1" label="供应商名称:" prop="brandId">
|
|
|
+ <el-select v-model="addFromData.brandId" placeholder="请选择品牌" style="width: 100%" filterable disabled @change="setShopName">
|
|
|
<el-option
|
|
|
v-for="(item) in brandList"
|
|
|
:key="item.id"
|
|
@@ -26,64 +26,41 @@
|
|
|
<!-- 供应商名称END -->
|
|
|
|
|
|
<el-form-item label="手机号:" prop="mobile">
|
|
|
- <el-input v-model="addData.mobile" placeholder="请输入手机号" />
|
|
|
+ <el-input v-model="addFromData.mobile" placeholder="请输入手机号" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="联系人:" prop="linkMan">
|
|
|
- <el-input v-model="addData.linkMan" placeholder="请输入联系人" />
|
|
|
+ <el-input v-model="addFromData.linkMan" placeholder="请输入联系人" />
|
|
|
</el-form-item>
|
|
|
- <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
|
|
|
- v-for="(item) in brandList"
|
|
|
- :key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="产地:" prop="countryId">
|
|
|
- <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-form-item>
|
|
|
- <el-form-item label="品牌logo:" class="no-input" prop="brandAuthLogo">
|
|
|
- <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 label="官网认证链接:">
|
|
|
- <el-input v-model="addData.securityLink" placeholder="请输入官网认证链接" />
|
|
|
+
|
|
|
+ <el-form-item v-if="addFromData.shopType === 2" label="代理品牌:" class="brand-box">
|
|
|
+ <template v-if="supplierBrands">
|
|
|
+ <el-tag v-for="(brand,index) in supplierBrands" :key="index" type="success" closable @click="handleTagClick(index)" @close="handleTagClose(index)">{{ brand.brandName }}</el-tag>
|
|
|
+ </template>
|
|
|
+ <el-tag @click="handleAddBrand()">添加品牌<span class="el-icon-plus" /></el-tag>
|
|
|
</el-form-item>
|
|
|
- <template v-if="addData.shopType===2">
|
|
|
- <el-form-item label="代理声明:">
|
|
|
- <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="3">图片</el-radio>
|
|
|
- <el-radio v-model="addData.statementType" :label="4">文件</el-radio>
|
|
|
- </el-form-item>
|
|
|
|
|
|
- <el-form-item v-if="addData.statementType === 1" label="弹窗:" prop="statementContent">
|
|
|
- <el-input v-if="addData.statementType === 1" v-model="addData.statementContent" type="textarea" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item v-else-if="addData.statementType === 2" label="链接:" prop="statementLink">
|
|
|
- <el-input v-if="addData.statementType === 2" v-model="addData.statementLink" />
|
|
|
+ <template v-if="addFromData.shopType===1">
|
|
|
+ <el-form-item label="产地:" prop="countryId">
|
|
|
+ <el-select v-model="addFromData.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 v-else-if="addData.statementType === 3" label="图片:" class="no-input" prop="statementImage">
|
|
|
- <upload-image v-if="addData.statementType === 3" ref="uploadImageRef2" :file-list="fileList2" @success="imageUploadSuccess2" @error="imageUploadFaild2" />
|
|
|
- <el-input v-model="addData.statementImage" type="hidden" class="hiddenInput" />
|
|
|
+ <el-form-item label="品牌logo:" class="no-input" prop="brandAuthLogo">
|
|
|
+ <upload-image ref="uploadImageRef1" :file-list="fileList1" @success="imageUploadSuccess1" @error="imageUploadFaild1" />
|
|
|
+ <el-input v-model="addFromData.brandAuthLogo" type="hidden" class="hiddenInput" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item v-else label="文件:" prop="statementFileId">
|
|
|
- <upload-file v-if="addData.statementType === 4" ref="uploadFileRef" :auth-user-id="addData.authUserId" :file-list="fileList3" @success="fileUploadSuccess" @error="fileUploadFaild" />
|
|
|
- <el-input v-model="addData.statementFileId" type="hidden" class="hiddenInput" />
|
|
|
+ <el-form-item label="官网认证链接:">
|
|
|
+ <el-input v-model="addFromData.securityLink" placeholder="请输入官网认证链接" />
|
|
|
</el-form-item>
|
|
|
-
|
|
|
</template>
|
|
|
+
|
|
|
<el-form-item label="供应商状态:">
|
|
|
- <el-select v-model="addData.shopStatus" placeholder="请选择供应商状态" style="width: 100%">
|
|
|
+ <el-select v-model="addFromData.shopStatus" placeholder="请选择供应商状态" style="width: 100%">
|
|
|
<el-option label="启用" :value="1" />
|
|
|
<el-option label="禁用" :value="0" />
|
|
|
</el-select>
|
|
@@ -93,6 +70,79 @@
|
|
|
<el-button type="primary" @click="submit">保存</el-button>
|
|
|
<el-button type="warning" @click="$_back()">返回</el-button>
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 添加代理商品牌dialog -->
|
|
|
+ <el-dialog
|
|
|
+ title="添加品牌信息"
|
|
|
+ :visible.sync="showAddDialog"
|
|
|
+ @closed="addBrandDialogClosed"
|
|
|
+ >
|
|
|
+ <el-form v-if="addFromData.shopType===2" ref="addBrandFormRef" :model="brandData" :rules="brandDataRules" label-width="120px">
|
|
|
+ <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" placeholder="请选择所属品牌" style="width: 100%" filterable @change="handleSetName">
|
|
|
+ <el-option
|
|
|
+ v-for="item in brandList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item ref="brandAuthLogo" label="品牌logo:" class="no-input" prop="brandAuthLogo">
|
|
|
+ <upload-image ref="uploadImageRef1" :file-list="fileList1" @success="imageUploadSuccess1" @error="imageUploadFaild1" />
|
|
|
+ <el-input v-model="brandData.brandAuthLogo" type="hidden" class="hiddenInput" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="官网认证链接:">
|
|
|
+ <el-input v-model="brandData.securityLink" placeholder="请输入官网认证链接" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="代理声明:">
|
|
|
+ <el-radio-group v-model="brandData.statementType" @change="handleRadioChange">
|
|
|
+ <el-radio :label="1">弹窗</el-radio>
|
|
|
+ <el-radio :label="2">链接</el-radio>
|
|
|
+ <el-radio :label="3">图片</el-radio>
|
|
|
+ <el-radio :label="4">文件</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item v-if="brandData.statementType === 1" ref="statementContent" label="弹窗:" prop="statementContent">
|
|
|
+ <el-input v-model="brandData.statementContent" type="textarea" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item v-if="brandData.statementType === 2" ref="statementLink" label="链接:" prop="statementLink">
|
|
|
+ <el-input v-model="brandData.statementLink" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item v-if="brandData.statementType === 3" ref="statementImage" label="图片:" class="no-input" prop="statementImage">
|
|
|
+ <upload-image ref="uploadImageRef2" :file-list="fileList2" @success="imageUploadSuccess2" />
|
|
|
+ <el-input v-model="brandData.statementImage" type="hidden" class="hiddenInput" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item v-if="brandData.statementType === 4" ref="statementFileId" label="文件:" prop="statementFileId">
|
|
|
+ <upload-file ref="uploadFileRef" :brand-id="brandData.brandId" :file-list="fileList3" :auth-user-id="addFromData.authUserId" @success="fileUploadSuccess" @error="fileUploadFaild" @remove="removeFile" />
|
|
|
+ <el-input v-model="brandData.statementFileId" type="hidden" class="hiddenInput" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button @click="showAddDialog = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="handleSaveBrandInfo">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -116,48 +166,73 @@ export default {
|
|
|
}
|
|
|
return {
|
|
|
isLoading: false,
|
|
|
-
|
|
|
- addData: {
|
|
|
- authUserId: null, // 供应商id
|
|
|
- brandAuthLogo: '', // 品牌授权logo
|
|
|
+ // 是否显示代理商商添加品牌
|
|
|
+ showAddDialog: false,
|
|
|
+ // 品牌列表
|
|
|
+ brandList: [],
|
|
|
+ selectBrandIndex: '',
|
|
|
+ // 品牌表单校验数据
|
|
|
+ brandData: {
|
|
|
+ isNew: true, // 是否是新添加的
|
|
|
+ index: '', // 当前元素的索引
|
|
|
brandId: '', // 品牌id
|
|
|
countryId: 1, // 产地国家id
|
|
|
- createBy: '', // 创建人用户id
|
|
|
- linkMan: '', // 联系人
|
|
|
- mobile: '', // 手机号
|
|
|
+ brandAuthLogo: '', // 品牌授权logo
|
|
|
securityLink: '', // 官网认证链接
|
|
|
- shopName: '', // 供应商名称
|
|
|
- shopStatus: 1, // 供应商状态:0停用 1启用
|
|
|
- shopType: 1, // 供应商类型:1品牌方,2代理商
|
|
|
statementContent: '', // 声明弹窗内容
|
|
|
statementLink: '', // 声明链接
|
|
|
- statementFileId: 'no file', // 声明文件id
|
|
|
+ statementFileId: -1, // 声明文件id
|
|
|
statementImage: '', // 声明图片
|
|
|
statementType: 1 // 代理声明类型:1弹窗 2链接 3图片 4文件(.doc .ppt .pdf)
|
|
|
},
|
|
|
- selectedBrandIndex: '',
|
|
|
- brandList: [], // 品牌列表
|
|
|
- // 表单校验规则
|
|
|
- rules: {
|
|
|
- shopType: [{ required: true, message: '供应商类型不能为空', trigger: 'change' }],
|
|
|
- shopName: [{ required: true, message: '供应商名称不能为空', trigger: ['blur', 'change'] }],
|
|
|
+ // 品牌集合
|
|
|
+ supplierBrands: [],
|
|
|
+ // 表单校验的数据
|
|
|
+ addFromData: {
|
|
|
+ authUserId: null, // 供应商id
|
|
|
+ shopType: 1, // 供应商类型:1品牌方,2代理商
|
|
|
+ createBy: '', // 创建人用户id
|
|
|
+ brandId: '', // 品牌id
|
|
|
+ shopName: '', // 供应商名称
|
|
|
+ mobile: '', // 手机号
|
|
|
+ linkMan: '', // 联系人
|
|
|
+ countryId: 1, // 产地国家id
|
|
|
+ brandAuthLogo: '', // 品牌授权logo
|
|
|
+ securityLink: '', // 官网认证链接
|
|
|
+ shopStatus: 1, // 供应商状态:0停用 1启用
|
|
|
+ shopInfo: []
|
|
|
+ },
|
|
|
+
|
|
|
+ // 表单数据校验规则
|
|
|
+ addFromDataRules: {
|
|
|
+ shopType: { required: true, message: '请选择供应商类型', trigger: 'change' },
|
|
|
+ brandId: { required: true, message: '请选择品牌', trigger: 'change' },
|
|
|
+ shopName: [
|
|
|
+ { required: true, message: '请输入供应商名称', trigger: 'blur' },
|
|
|
+ { maxLength: 50, message: '最大字符长度为50个字符', trigger: 'blur' }
|
|
|
+ ],
|
|
|
mobile: [
|
|
|
- { required: true, message: '手机号不能为空', trigger: 'blur' },
|
|
|
+ { required: true, message: '请输入手机号', trigger: 'blur' },
|
|
|
{ validator: valideMobile, trigger: 'blur' }
|
|
|
- ], // 手机号格式校验
|
|
|
- linkMan: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
|
|
|
- countryId: [{ required: true, message: '产地不能为空', trigger: 'change' }],
|
|
|
- brandAuthLogo: [{ required: true, message: '品牌logo不能为空' }],
|
|
|
- brandId: [{ required: true, message: '所属品牌不能为空', trigger: 'change' }],
|
|
|
- statementContent: [{ required: true, message: '声明不能为空', trigger: 'blur' }],
|
|
|
- statementLink: [{ required: true, message: '声明链接不能为空', trigger: 'blur' }],
|
|
|
- statementImage: [{ required: false, message: '声明图片不能为空' }],
|
|
|
- statementFileId: [{ required: false, message: '声明文件不能为空' }]
|
|
|
+ ],
|
|
|
+ linkMan: { required: true, message: '请输入联系人', trigger: 'blur' },
|
|
|
+ countryId: { required: true, message: '请选择国家', trigger: 'change' },
|
|
|
+ brandAuthLogo: { required: true, message: '请上传品牌logo图片', trigger: 'change' }
|
|
|
+ },
|
|
|
+ brandDataRules: {
|
|
|
+ brandId: { required: true, message: '请选择品牌', trigger: 'change' },
|
|
|
+ countryId: { required: true, message: '请选择国家', trigger: 'change' },
|
|
|
+ brandAuthLogo: { required: true, message: '请上传品牌logo图片', trigger: 'change' },
|
|
|
+ statementContent: { required: true, message: '请输入声明内容', trigger: 'blur' },
|
|
|
+ statementLink: { required: true, message: '请输入声明链接', trigger: 'blur' },
|
|
|
+ statementImage: { required: true, message: '请上传声明图片', trigger: 'change' },
|
|
|
+ statementFileId: { required: true, message: '请上传声明文件', trigger: 'change' }
|
|
|
},
|
|
|
- fileList1: [], // 已上传的图片列表 品牌logo
|
|
|
+
|
|
|
+ // 上传的图片列表
|
|
|
+ fileList1: [], // 已上传的图片列表 品牌logo图片
|
|
|
fileList2: [], // 已上传的图片列表 声明图片
|
|
|
fileList3: [] // 已上传的图片列表 声明文件
|
|
|
- // countryList: []
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -165,14 +240,14 @@ export default {
|
|
|
},
|
|
|
created() {
|
|
|
// 获取供应商id
|
|
|
- this.addData.authUserId = this.$route.query.id
|
|
|
- this.getInfoById(this.addData.authUserId)
|
|
|
+ this.addFromData.authUserId = this.$route.query.id
|
|
|
+ this.getInfoById(this.addFromData.authUserId)
|
|
|
},
|
|
|
methods: {
|
|
|
// 初始添加供应商时的表单数据
|
|
|
initAddForm(data) {
|
|
|
+ this.getBrandList(data.shopType)
|
|
|
this.setFormData(data)
|
|
|
- this.getBrandList(data.type)
|
|
|
},
|
|
|
// 查询供应商信息
|
|
|
getInfoById(id) {
|
|
@@ -180,7 +255,6 @@ export default {
|
|
|
getSupplierById({ authUserId: id })
|
|
|
.then(res => {
|
|
|
if (res.code === 0) {
|
|
|
- console.log(res.data)
|
|
|
this.initAddForm(res.data)
|
|
|
}
|
|
|
})
|
|
@@ -191,16 +265,33 @@ export default {
|
|
|
},
|
|
|
// 为表单设置数据
|
|
|
setFormData(data) {
|
|
|
- for (const key in this.addData) {
|
|
|
- if (Object.hasOwnProperty.call(data, key)) {
|
|
|
- this.addData[key] = data[key] || ''
|
|
|
+ // 如果返回的是品牌方信息
|
|
|
+ if (data.shopType === 1) {
|
|
|
+ this.addFromData = {
|
|
|
+ ...data,
|
|
|
+ ...data.shopInfo[0]
|
|
|
}
|
|
|
}
|
|
|
- if (this.addData.brandAuthLogo) {
|
|
|
- this.fileList1.push({ name: 'authLogo', url: this.addData.brandAuthLogo })
|
|
|
+ if (data.shopType === 2) {
|
|
|
+ this.addFromData = {
|
|
|
+ ...data,
|
|
|
+ shopInfo: []
|
|
|
+ }
|
|
|
+ data.shopInfo.forEach((item, index) => {
|
|
|
+ item.index = index
|
|
|
+ item.isNew = false
|
|
|
+ if (item.statementFileId === null) {
|
|
|
+ item.statementFileId = -1
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.supplierBrands = data.shopInfo
|
|
|
}
|
|
|
- if (this.addData.statementImage) {
|
|
|
- this.fileList2.push({ name: '声明图片', url: this.addData.statementImage })
|
|
|
+ console.log(this.addFromData)
|
|
|
+ if (this.addFromData.brandAuthLogo) {
|
|
|
+ this.fileList1.push({ name: 'authLogo', url: this.addFromData.brandAuthLogo })
|
|
|
+ }
|
|
|
+ if (this.addFromData.statementImage) {
|
|
|
+ this.fileList2.push({ name: '声明图片', url: this.addFromData.statementImage })
|
|
|
}
|
|
|
if (data.statementFileName) {
|
|
|
// this.fileList3.push({ name: '您已上传文件,不支持预览,可删除后重新上传', url: '' })
|
|
@@ -208,68 +299,76 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
// 获取品牌列表
|
|
|
- getBrandList(type) {
|
|
|
- fetchBrandList({ type }).then(res => {
|
|
|
+ getBrandList(shopType) {
|
|
|
+ fetchBrandList({ type: shopType }).then(res => {
|
|
|
if (res.code === 0) {
|
|
|
this.brandList = res.data
|
|
|
}
|
|
|
}).catch(err => console.log(err))
|
|
|
},
|
|
|
|
|
|
- // 保存表单数据
|
|
|
- // async save() {
|
|
|
- // this.isLoading = true
|
|
|
- // this.addData.createBy = this.authUserId
|
|
|
- // // this.uploadFile()
|
|
|
- // await this.$refs.addFormRef.validate(valide => {
|
|
|
- // if (!valide) {
|
|
|
- // this.isLoading = false
|
|
|
- // return
|
|
|
- // }
|
|
|
- // if (this.addData.statementFileId === 'no file') {
|
|
|
- // this.addData.statementFileId = null
|
|
|
- // }
|
|
|
- // addSupplier(this.addData).then(res => {
|
|
|
- // this.$message.success('修改成功')
|
|
|
- // // this.$refs.addFormRef.resetFields()
|
|
|
- // }).catch(err => {
|
|
|
- // console.log(err)
|
|
|
- // this.$message.danger('修改失败')
|
|
|
- // }).finally(() => {
|
|
|
- // this.isLoading = false
|
|
|
- // // this.addData.securityLink = ''
|
|
|
- // })
|
|
|
- // })
|
|
|
- // },
|
|
|
// 提交表单数据
|
|
|
- async submit() {
|
|
|
- this.isLoading = true
|
|
|
- if (this.addData.statementType === 4 && this.addData.statementFileId !== 'no file') {
|
|
|
- console.log(this.$refs)
|
|
|
- this.$refs.uploadFileRef.$refs.upload.submit()
|
|
|
- } else {
|
|
|
- this.addData.statementFileId = null
|
|
|
- await this.$refs.addFormRef.validate(valide => {
|
|
|
- if (!valide) {
|
|
|
- this.isLoading = false
|
|
|
- return
|
|
|
- }
|
|
|
- this.save()
|
|
|
+ submit() {
|
|
|
+ this.$refs.addFormRef.validate(valide => {
|
|
|
+ if (!valide) {
|
|
|
+ this.isLoading = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // this.addFromData.shopInfo = [this.brandData]
|
|
|
+ // console.log(this.addFromData)
|
|
|
+ // return
|
|
|
+ this.save()
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 创建添加数据对象
|
|
|
+ createAddData() {
|
|
|
+ const addData = {
|
|
|
+ authUserId: null, // 供应商id
|
|
|
+ createBy: '', // 创建人用户id
|
|
|
+ linkMan: '', // 联系人
|
|
|
+ mobile: '', // 手机号
|
|
|
+ shopName: '设置', // 供应商名称
|
|
|
+ shopStatus: 1, // 供应商状态:0停用 1启用
|
|
|
+ shopType: 1, // 供应商类型:1品牌方,2代理商
|
|
|
+ shopInfo: []
|
|
|
+ }
|
|
|
+
|
|
|
+ // 循环赋值
|
|
|
+ for (const key in addData) {
|
|
|
+ if (Object.hasOwnProperty.call(addData, key)) {
|
|
|
+ addData[key] = this.addFromData[key]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 添加品牌方 shopInfo 里面只有一个对象
|
|
|
+ if (this.addFromData.shopType === 1) {
|
|
|
+ addData.shopInfo.push({
|
|
|
+ brandId: this.addFromData.brandId, // 品牌id
|
|
|
+ countryId: this.addFromData.countryId, // 产地国家id
|
|
|
+ brandAuthLogo: this.addFromData.brandAuthLogo, // 品牌授权logo
|
|
|
+ securityLink: this.addFromData.securityLink, // 官网认证链接
|
|
|
+ statementContent: '', // 声明弹窗内容
|
|
|
+ statementLink: '', // 声明链接
|
|
|
+ statementFileId: -1, // 声明文件id
|
|
|
+ statementImage: '', // 声明图片
|
|
|
+ statementType: 1 // 代理声明类型:1弹窗 2链接 3图片 4文件(.doc .ppt .pdf)
|
|
|
})
|
|
|
}
|
|
|
+ // 添加代理商
|
|
|
+ if (this.addFromData.shopType === 2) {
|
|
|
+ addData.shopInfo = this.supplierBrands
|
|
|
+ }
|
|
|
+ addData.createBy = this.authUserId
|
|
|
+ return addData
|
|
|
},
|
|
|
// 保存
|
|
|
- async save() {
|
|
|
- this.addData.createBy = this.authUserId
|
|
|
- addSupplier(this.addData).then(res => {
|
|
|
+ save() {
|
|
|
+ addSupplier(this.createAddData()).then(res => {
|
|
|
console.log(res)
|
|
|
- this.$message.success('修改成功')
|
|
|
- // this.$refs.addFormRef.resetFields()
|
|
|
- // this.clearFormData()
|
|
|
+ this.$message.success('保存成功')
|
|
|
+ this.$router.replace('/supplier')
|
|
|
}).finally(() => {
|
|
|
this.isLoading = false
|
|
|
- // this.$refs.addFormRef.resetFields()
|
|
|
- this.addData.securityLink = ''
|
|
|
+ this.addFromData.securityLink = ''
|
|
|
})
|
|
|
},
|
|
|
// 设置品牌名称
|
|
@@ -283,55 +382,177 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
console.log(selectBrand)
|
|
|
- if (this.addData.shopType === 1) {
|
|
|
- this.addData.shopName = selectBrand.name
|
|
|
+ if (this.addFromData.shopType === 1) {
|
|
|
+ this.addFromData.shopName = selectBrand.name
|
|
|
}
|
|
|
- this.addData.brandAuthLogo = selectBrand.authLogo
|
|
|
+ this.addFromData.brandAuthLogo = selectBrand.authLogo
|
|
|
if (selectBrand.authLogo) {
|
|
|
- fileList.push({ name: this.addData.shopName, url: selectBrand.authLogo || '' })
|
|
|
+ fileList.push({ name: this.addFromData.shopName, url: selectBrand.authLogo || '' })
|
|
|
}
|
|
|
this.fileList1 = fileList
|
|
|
// const fileList = []
|
|
|
- // if (this.addData.shopType === 1) {
|
|
|
- // this.addData.shopName = this.brandList[index]?.name
|
|
|
+ // if (this.addFromData.shopType === 1) {
|
|
|
+ // this.addFromData.shopName = this.brandList[index]?.name
|
|
|
// }
|
|
|
- // this.addData.brandAuthLogo = this.brandList[index]?.authLogo || ''
|
|
|
+ // this.addFromData.brandAuthLogo = this.brandList[index]?.authLogo || ''
|
|
|
// if (this.brandList[index]?.authLogo) {
|
|
|
- // fileList.push({ name: this.addData.shopName, url: this.brandList[index]?.authLogo || '' })
|
|
|
+ // fileList.push({ name: this.addFromData.shopName, url: this.brandList[index]?.authLogo || '' })
|
|
|
// }
|
|
|
// this.fileList1 = fileList
|
|
|
},
|
|
|
- // 文件上传成功
|
|
|
- fileUploadSuccess(data) {
|
|
|
- this.addData.statementFileId = data.data
|
|
|
- console.log(data)
|
|
|
- this.$refs.addFormRef.validate(valide => {
|
|
|
- if (!valide) {
|
|
|
- this.isLoading = false
|
|
|
+ // 重新获取品牌列表
|
|
|
+ reGetBrandList(id) {
|
|
|
+ const shopType = id
|
|
|
+ this.fileList2 = []
|
|
|
+ this.fileList1 = []
|
|
|
+ this.fileList3 = []
|
|
|
+ this.addFromData = {
|
|
|
+ authUserId: null, // 供应商id
|
|
|
+ brandAuthLogo: '', // 品牌授权logo
|
|
|
+ brandId: '', // 品牌id
|
|
|
+ countryId: 1, // 产地国家id
|
|
|
+ createBy: '', // 创建人用户id
|
|
|
+ linkMan: '', // 联系人
|
|
|
+ mobile: '', // 手机号
|
|
|
+ securityLink: '', // 官网认证链接
|
|
|
+ shopName: '', // 供应商名称
|
|
|
+ shopStatus: 1, // 供应商状态:0停用 1启用
|
|
|
+ shopType: 1 // 供应商类型:1品牌方,2代理商
|
|
|
+ }
|
|
|
+ this.$refs.addFormRef?.clearValidate()
|
|
|
+ this.addFromData.shopType = shopType
|
|
|
+ this.getBrandList()
|
|
|
+ },
|
|
|
+ // 添加品牌信息对话框关闭事件
|
|
|
+ addBrandDialogClosed() {
|
|
|
+ this.fileList1 = []
|
|
|
+ this.fileList2 = []
|
|
|
+ this.fileList3 = []
|
|
|
+ this.$refs.addBrandFormRef.resetFields()
|
|
|
+ },
|
|
|
+ // 添加品牌
|
|
|
+ handleAddBrand() {
|
|
|
+ this.brandData.isNew = true
|
|
|
+ this.showAddDialog = true
|
|
|
+ },
|
|
|
+ handleSaveBrandInfo() {
|
|
|
+ // 如果为代理商 && 声明类型为文件
|
|
|
+ console.log(this.brandData)
|
|
|
+ debugger
|
|
|
+ if (this.addFromData.shopType === 2 && this.brandData.statementType === 4) {
|
|
|
+ // this.$refs.uploadFileRef.$refs.upload.submit()
|
|
|
+ if (this.brandData.statementFileId !== -1) {
|
|
|
+ this.saveBrandInfo()
|
|
|
+ } else {
|
|
|
+ this.$refs.uploadFileRef.$refs.upload.submit()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.saveBrandInfo()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleSetName(id) {
|
|
|
+ const fileList = []
|
|
|
+ let brandInfo = null
|
|
|
+ this.brandList.forEach(item => {
|
|
|
+ if (item.id === id) {
|
|
|
+ brandInfo = item
|
|
|
return
|
|
|
}
|
|
|
- console.log(2)
|
|
|
- this.save()
|
|
|
+ })
|
|
|
+ this.brandData.brandName = brandInfo.name
|
|
|
+ this.brandData.brandId = brandInfo.id
|
|
|
+ this.brandData.brandAuthLogo = brandInfo.authLogo
|
|
|
+ fileList.push({ name: brandInfo.name, url: brandInfo.authLogo })
|
|
|
+ this.fileList1 = fileList
|
|
|
+ },
|
|
|
+ // 重置表单项
|
|
|
+ handleRadioChange() {
|
|
|
+ this.$refs.statementContent?.clearValidate()
|
|
|
+ this.$refs.statementLink?.clearValidate()
|
|
|
+ this.$refs.statementFileId?.clearValidate()
|
|
|
+ this.$refs.statementImage?.clearValidate()
|
|
|
+ },
|
|
|
+ // 供应商代理品牌标签关闭时间
|
|
|
+ handleTagClose(index) {
|
|
|
+ this.supplierBrands.splice(index, 1)
|
|
|
+ },
|
|
|
+
|
|
|
+ // 查看品牌信息
|
|
|
+ handleTagClick(index) {
|
|
|
+ this.selectBrandIndex = index
|
|
|
+ this.brandData = this.cloneData(this.supplierBrands[index])
|
|
|
+ this.brandData.isNew = false
|
|
|
+ this.brandData.index = index
|
|
|
+ this.showAddDialog = true
|
|
|
+ console.log(this.brandData)
|
|
|
+ if (this.brandData.statementFileName) {
|
|
|
+ this.fileList3 = [{ name: this.brandData.statementFileName, url: '' }]
|
|
|
+ }
|
|
|
+ if (this.brandData.statementImage !== '') {
|
|
|
+ this.fileList2 = [{ name: '文件已上传', url: this.brandData.statementImage }]
|
|
|
+ }
|
|
|
+ if (this.brandData.brandAuthLogo !== '') {
|
|
|
+ this.fileList1 = [{ name: '', url: this.brandData.brandAuthLogo }]
|
|
|
+ }
|
|
|
+ console.log(this.brandData)
|
|
|
+ },
|
|
|
+ // 代理商保存品牌信息
|
|
|
+ saveBrandInfo() {
|
|
|
+ this.$refs.addBrandFormRef.validate(valide => {
|
|
|
+ if (!valide) return
|
|
|
+ // 提交保存
|
|
|
+ if (this.brandData.isNew) {
|
|
|
+ this.supplierBrands.push(this.cloneData(this.brandData))
|
|
|
+ } else {
|
|
|
+ this.supplierBrands.splice(this.brandData.index, 1, this.cloneData(this.brandData))
|
|
|
+ }
|
|
|
+ this.showAddDialog = false
|
|
|
})
|
|
|
},
|
|
|
+ // 文件上传成功
|
|
|
+ fileUploadSuccess(data) {
|
|
|
+ this.brandData.statementFileId = data.data
|
|
|
+ console.log(data)
|
|
|
+ this.saveBrandInfo()
|
|
|
+ },
|
|
|
fileUploadFaild(err, file, fileList) {
|
|
|
console.log(err)
|
|
|
},
|
|
|
-
|
|
|
+ removeFile() {
|
|
|
+ console.log('删除上传的文件')
|
|
|
+ this.brandData.statementFileId = -1
|
|
|
+ console.log(this.brandData.statementFileId)
|
|
|
+ },
|
|
|
// 图片上传成功 品牌logo
|
|
|
imageUploadSuccess1(data) {
|
|
|
- this.addData.brandAuthLogo = data.data
|
|
|
+ if (this.addFromData.shopType === 1) {
|
|
|
+ this.addFromData.brandAuthLogo = data.data
|
|
|
+ } else if (this.addFromData.shopType === 2) {
|
|
|
+ this.brandData.brandAuthLogo = data.data
|
|
|
+ }
|
|
|
},
|
|
|
imageUploadFaild1(err, file, fileList) {
|
|
|
console.log(err)
|
|
|
},
|
|
|
-
|
|
|
// 图片上传成功 声明图片
|
|
|
imageUploadSuccess2(data) {
|
|
|
- this.addData.statementImage = data.data
|
|
|
+ this.addFromData.statementImage = data.data
|
|
|
},
|
|
|
imageUploadFaild2(err, file, fileList) {
|
|
|
console.log(err)
|
|
|
+ },
|
|
|
+ removeImage() {
|
|
|
+ this.addFromData.statementImage = ''
|
|
|
+ },
|
|
|
+ // 克隆
|
|
|
+ cloneData(data) {
|
|
|
+ const resutl = {}
|
|
|
+ for (const key in data) {
|
|
|
+ if (Object.hasOwnProperty.call(data, key)) {
|
|
|
+ resutl[key] = data[key]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return resutl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -345,6 +566,12 @@ export default {
|
|
|
width: 500px;
|
|
|
margin: 0 auto;
|
|
|
margin-top: 80px;
|
|
|
+ .brand-box{
|
|
|
+ .el-tag{
|
|
|
+ margin-left: 10px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
.submit-btn {
|
|
|
text-align: center;
|