|
|
@@ -0,0 +1,392 @@
|
|
|
+<template>
|
|
|
+ <el-dialog append-to-body :title="title" :visible.sync="dialogFormVisible" @close="close">
|
|
|
+ <el-form ref="form" :model="form" :rules="dist">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="代理商名称" prop="distName">
|
|
|
+ <el-input v-model="form.distName" placeholder="请输入代理商名称" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="助记名" prop="abbrName">
|
|
|
+ <el-input v-model="form.abbrName" placeholder="请输入助记名" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="选择省份" prop="provinceDesc">
|
|
|
+ <el-select
|
|
|
+ ref="optionRef"
|
|
|
+ v-model="form.provinceDesc"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 100%"
|
|
|
+ @change="selectDistrict">
|
|
|
+ <el-option
|
|
|
+ v-for="item in district"
|
|
|
+ :key="item.regionCode"
|
|
|
+ :label="item.regionDesc"
|
|
|
+ :value="item.regionCode" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="省份" prop="provinceId" style="display: none">
|
|
|
+ <el-input v-model.trim="form.provinceId" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <select-user
|
|
|
+ ref="selectUser"
|
|
|
+ :query-params="{ roles: ['SalesEngineer', 'ProductLineManager'] }"
|
|
|
+ @save="selectUser" />
|
|
|
+ <el-form-item label="销售人员" prop="belongSale">
|
|
|
+ <el-input v-model="form.belongSale" readonly suffix-icon="el-icon-search" @focus="choose" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="注册资金/万元" prop="capital">
|
|
|
+ <el-input v-model.number="form.capital" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="注册地" prop="registerDistrict">
|
|
|
+ <el-input v-model.trim="form.registerDistrict" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="业务范围" prop="businessScope">
|
|
|
+ <el-input v-model.trim="form.businessScope" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="现有销售人数" prop="saleNum">
|
|
|
+ <el-input v-model.number="form.saleNum" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="授权客户类型" prop="customerType">
|
|
|
+ <el-select v-model="form.customerType" multiple placeholder="授权客户类型" style="width: 100%">
|
|
|
+ <el-option v-for="item in customerOptions" :key="item.value" :label="item.value" :value="item.key" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="授权代理区域" prop="proxyDistrict">
|
|
|
+ <el-input v-model="form.proxyDistrict" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="代理签约有效期" prop="date">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="form.date"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ style="width: 100%"
|
|
|
+ type="daterange"
|
|
|
+ value-format="yyyy-MM-dd" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="代理合同" prop="contractUrl">
|
|
|
+ <div style="width: 100%">
|
|
|
+ <span style="color: #999">支持格式:.rar .zip .doc .docx .pdf ,单个文件不能超过20MB</span>
|
|
|
+ <el-upload
|
|
|
+ ref="uploadRef"
|
|
|
+ action="#"
|
|
|
+ :before-upload="
|
|
|
+ (file) => {
|
|
|
+ return beforeAvatarUpload(file)
|
|
|
+ }
|
|
|
+ "
|
|
|
+ :file-list="fileList"
|
|
|
+ :http-request="uploadrequest"
|
|
|
+ :limit="1"
|
|
|
+ :on-exceed="handleExceed"
|
|
|
+ :on-remove="handleRemove">
|
|
|
+ <el-button size="mini" type="primary">点击上传</el-button>
|
|
|
+ </el-upload>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item label="已有代理品牌和产品" prop="existedProduct">
|
|
|
+ <el-input
|
|
|
+ v-model="form.existedProduct"
|
|
|
+ maxlength="500"
|
|
|
+ placeholder="请输入备注"
|
|
|
+ resize="none"
|
|
|
+ :rows="5"
|
|
|
+ show-word-limit
|
|
|
+ type="textarea" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="历史合作的终端客户名称" prop="historyCustomer">
|
|
|
+ <el-input
|
|
|
+ v-model="form.historyCustomer"
|
|
|
+ maxlength="500"
|
|
|
+ placeholder="请输入备注"
|
|
|
+ resize="none"
|
|
|
+ :rows="5"
|
|
|
+ show-word-limit
|
|
|
+ type="textarea" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <span slot="footer">
|
|
|
+ <el-button @click="close">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="save">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+ import distrApi from '@/api/base/distr'
|
|
|
+ import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
|
|
+ import regionAuthApi from '@/api/base/regionAuth'
|
|
|
+ import SelectUser from '@/components/select/SelectUser'
|
|
|
+ import asyncUploadFile from '@/utils/uploadajax'
|
|
|
+ import axios from 'axios'
|
|
|
+
|
|
|
+ export default {
|
|
|
+ name: 'UserEdit',
|
|
|
+ components: {
|
|
|
+ SelectUser,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ form: {
|
|
|
+ distName: '',
|
|
|
+ abbrName: '',
|
|
|
+ provinceDesc: '',
|
|
|
+ provinceId: 0,
|
|
|
+ belongSale: '',
|
|
|
+ belongSaleId: 0,
|
|
|
+ capital: 0,
|
|
|
+ registerDistrict: '',
|
|
|
+ businessScope: '',
|
|
|
+ saleNum: 0,
|
|
|
+ customerType: '',
|
|
|
+ existedProduct: '',
|
|
|
+ historyCustomer: '',
|
|
|
+ proxyDistrict: '',
|
|
|
+ date: [],
|
|
|
+ proxyEndTime: '',
|
|
|
+ proxyStartTime: '',
|
|
|
+ contractUrl: '',
|
|
|
+ },
|
|
|
+ dist: {
|
|
|
+ distName: [{ required: true, trigger: 'blur', message: '请输入经销商名称' }],
|
|
|
+ provinceDesc: [{ required: true, trigger: 'blur', message: '请输入省份' }],
|
|
|
+ provinceId: [{ required: true, trigger: 'blur', message: '请输入省份' }],
|
|
|
+ belongSale: [{ required: true, trigger: 'blur', message: '请输入销售人员' }],
|
|
|
+ capital: [{ required: true, trigger: 'blur', message: '请输入注册资金' }],
|
|
|
+ registerDistrict: [{ required: true, trigger: 'blur', message: '请输入注册地' }],
|
|
|
+ businessScope: [{ required: true, trigger: 'blur', message: '请输入业务范围' }],
|
|
|
+ saleNum: [{ required: true, trigger: 'blur', message: '请输入现有销售人数' }],
|
|
|
+ customerType: [{ required: true, trigger: 'blur', message: '请输入授权客户类型' }],
|
|
|
+ proxyDistrict: [{ required: true, trigger: 'blur', message: '请输入授权代理区域' }],
|
|
|
+ date: [{ required: true, trigger: 'blur', message: '请选择代理签约有效期' }],
|
|
|
+ existedProduct: [{ required: true, trigger: 'blur', message: '请输入已有代理品牌和产品' }],
|
|
|
+ historyCustomer: [{ required: true, trigger: 'blur', message: '请输入历史合作的终端客户名称' }],
|
|
|
+ },
|
|
|
+ //省份
|
|
|
+ district: [],
|
|
|
+ title: '',
|
|
|
+ dialogFormVisible: false,
|
|
|
+ customerOptions: [],
|
|
|
+ fileList: [],
|
|
|
+ fileSettings: {
|
|
|
+ // 文件配置信息
|
|
|
+ fileSize: 20971520,
|
|
|
+ fileTypes: '.rar,.zip,.doc,.docx,.pdf',
|
|
|
+ pictureSize: 20971520,
|
|
|
+ pictureTypes: '.jpg,.jpeg,.gif,.png,.jfif,.txt',
|
|
|
+ types: '.rar,.zip,.doc,.docx,.pdf',
|
|
|
+ videoSize: 104857600,
|
|
|
+ videoType: '.mp4',
|
|
|
+ },
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ //省份
|
|
|
+ // this.getProvinceInfo()
|
|
|
+ this.getUserSalesProvince()
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.getOptions()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getOptions() {
|
|
|
+ Promise.all([this.getDicts('cust_idy')])
|
|
|
+ .then(([data]) => {
|
|
|
+ this.customerOptions = data.data.values || []
|
|
|
+ })
|
|
|
+ .catch((err) => console.log(err))
|
|
|
+ },
|
|
|
+ showEdit(row) {
|
|
|
+ if (!row) {
|
|
|
+ this.title = '新建'
|
|
|
+ } else {
|
|
|
+ this.title = '编辑'
|
|
|
+ this.form = Object.assign({}, row)
|
|
|
+ this.form.customerType = row.customerType.split(',')
|
|
|
+ this.form.date = [this.form.proxyStartTime, this.form.proxyEndTime]
|
|
|
+ if (row.contractUrl) {
|
|
|
+ this.fileList = [{ name: '代理合同', url: row.contractUrl }]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.dialogFormVisible = true
|
|
|
+ },
|
|
|
+ close() {
|
|
|
+ this.$refs['form'].resetFields()
|
|
|
+ this.form = {
|
|
|
+ distName: '',
|
|
|
+ abbrName: '',
|
|
|
+ provinceDesc: '',
|
|
|
+ provinceId: 0,
|
|
|
+ belongSale: '',
|
|
|
+ belongSaleId: 0,
|
|
|
+ capital: 0,
|
|
|
+ registerDistrict: '',
|
|
|
+ businessScope: '',
|
|
|
+ saleNum: 0,
|
|
|
+ customerType: '',
|
|
|
+ existedProduct: '',
|
|
|
+ historyCustomer: '',
|
|
|
+ proxyDistrict: '',
|
|
|
+ date: [],
|
|
|
+ proxyEndTime: '',
|
|
|
+ proxyStartTime: '',
|
|
|
+ contractUrl: '',
|
|
|
+ }
|
|
|
+ this.fileList = []
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ },
|
|
|
+ choose() {
|
|
|
+ // this.$refs.transfer.innerVisible = true
|
|
|
+ this.$refs.selectUser.open()
|
|
|
+ },
|
|
|
+ async getProvinceInfo() {
|
|
|
+ const { data: data } = await distrApi.getProvinceInfo({})
|
|
|
+ this.district = data.list
|
|
|
+ },
|
|
|
+ async getUserSalesProvince() {
|
|
|
+ const { data: data } = await regionAuthApi.getUserSalesProvince({})
|
|
|
+ if (data && data.list) {
|
|
|
+ this.district = data.list.children
|
|
|
+ }
|
|
|
+ },
|
|
|
+ selectDistrict(code) {
|
|
|
+ let obj = {}
|
|
|
+ obj = this.district.find((item) => {
|
|
|
+ return item.regionCode === code //筛选出匹配数据
|
|
|
+ })
|
|
|
+ console.log('省份名称', obj)
|
|
|
+ this.provinceDesc = obj.regionDesc
|
|
|
+ this.form.provinceId = obj.regionCode
|
|
|
+ this.form.provinceDesc = obj.regionDesc
|
|
|
+ },
|
|
|
+ save() {
|
|
|
+ this.$refs['form'].validate(async (valid) => {
|
|
|
+ if (valid) {
|
|
|
+ console.log(this.form)
|
|
|
+ let params = { ...this.form }
|
|
|
+ params.provinceId = parseInt(params.provinceId)
|
|
|
+ params.distType = '20'
|
|
|
+ params.proxyStartTime = params.date[0]
|
|
|
+ params.proxyEndTime = params.date[1]
|
|
|
+ params.customerType = params.customerType.join(',')
|
|
|
+ if (this.form.id) {
|
|
|
+ console.log('表单修改提交内容:', params)
|
|
|
+ const { msg } = await distrApi.doEdit(params)
|
|
|
+ this.$baseMessage(msg, 'success', 'vab-hey-message-success')
|
|
|
+ } else {
|
|
|
+ console.log('表单提交内容:', params)
|
|
|
+ const { msg } = await distrApi.doAdd(params)
|
|
|
+ this.$baseMessage(msg, 'success', 'vab-hey-message-success')
|
|
|
+ }
|
|
|
+ this.$emit('fetch-data')
|
|
|
+ this.close()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ selectUser(userList) {
|
|
|
+ this.userList = userList
|
|
|
+ if (userList && userList.length > 0) {
|
|
|
+ this.form.belongSaleId = userList[0].id
|
|
|
+ }
|
|
|
+ this.form.belongSale = userList.map((item) => item.nickName).join()
|
|
|
+ },
|
|
|
+ async handleSubmit() {
|
|
|
+ this.form.belongSaleId = this.userList[0].id
|
|
|
+ this.form.belongSale = this.userList[0].nickName
|
|
|
+ },
|
|
|
+ // 上传图片
|
|
|
+ beforeAvatarUpload(file) {
|
|
|
+ let flag1 = file.size < this.fileSettings.fileSize
|
|
|
+ if (!flag1) {
|
|
|
+ this.$message.warning('文件过大,请重新选择!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ let flag2 = this.fileSettings.fileTypes.split(',').includes('.' + file.name.split('.').pop())
|
|
|
+ if (!flag2) {
|
|
|
+ this.$message.warning('文件类型不符合,请重新选择!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ // 图片删除
|
|
|
+ handleRemove() {
|
|
|
+ this.form.curmCover = ''
|
|
|
+ this.fileList = []
|
|
|
+ },
|
|
|
+ handleExceed() {
|
|
|
+ this.$message.warning(`当前限制只能上传一个附件`)
|
|
|
+ },
|
|
|
+ // 上传
|
|
|
+ uploadrequest(option) {
|
|
|
+ let _this = this
|
|
|
+ let url = process.env.VUE_APP_UPLOAD_WEED
|
|
|
+ axios
|
|
|
+ .post(url)
|
|
|
+ .then(function (res) {
|
|
|
+ if (res.data && res.data.fid && res.data.fid !== '') {
|
|
|
+ option.action = `${process.env.VUE_APP_PROTOCOL}${res.data.publicUrl}/${res.data.fid}`
|
|
|
+ let file_name = option.file.name
|
|
|
+ let index = file_name.lastIndexOf('.')
|
|
|
+ let file_extend = ''
|
|
|
+ if (index > 0) {
|
|
|
+ // 截取名称中的扩展名
|
|
|
+ file_extend = file_name.substr(index + 1)
|
|
|
+ }
|
|
|
+ let uploadform = {
|
|
|
+ fileName: file_name, // 资料名称
|
|
|
+ fileUrl: `${process.env.VUE_APP_PROTOCOL}${res.data.publicUrl}/${res.data.fid}`, // 资料存储url
|
|
|
+ size: option.file.size.toString(), // 资料大小
|
|
|
+ fileType: file_extend, // 资料文件类型
|
|
|
+ }
|
|
|
+ asyncUploadFile(option).then(() => {
|
|
|
+ _this.form.contractUrl = uploadform.fileUrl
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '未上传成功!请刷新界面重新上传!',
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function () {
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '未上传成功!请重新上传!',
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+</script>
|