| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="50%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules" style="width: 50%;"> |
| | | <el-form-item label="公司名称" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="统一信用代码" prop="code"> |
| | | <el-input v-model="form.code" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="法人姓名" prop="legalName" v-if="form.type !== 1"> |
| | | <el-input v-model="form.legalName" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="绑定手机号" prop="phone" v-if="form.type !== 1"> |
| | | <div style="width: 100%; display: flex; align-items: center;"> |
| | | <el-input v-model="form.phone" maxlength="11" type="number" style="flex: 1;" placeholder="请输入" v-trim/> |
| | | <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" @click="send" v-if="num === 0">发送验证码</el-button> |
| | | <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" v-else>{{num}}s</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="验证码" prop="captche" v-if="form.type !== 1"> |
| | | <el-input v-model="form.captche" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="公司账号" prop="username" v-if="form.type !== 1"> |
| | | <el-input v-model="form.username" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="认证邮箱" prop="email" v-if="form.type !== 1"> |
| | | <el-input v-model="form.email" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="纳税人识别号" prop="taxCode"> |
| | | <el-input v-model="form.taxCode" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="银行账号" prop="taxAccount"> |
| | | <el-input v-model="form.taxAccount" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="开户行" prop="taxBank"> |
| | | <el-input v-model="form.taxBank" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="地址、电话" prop="taxAddr"> |
| | | <el-input v-model="form.taxAddr" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="电子发票接收地址" prop="invoiceEmail"> |
| | | <el-input v-model="form.invoiceEmail" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="纸质发票接收地址" prop="invoiceAddr"> |
| | | <el-input v-model="form.invoiceAddr" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="营业执照" prop="businessImg"> |
| | | <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file" @uploadSuccess="result" /> |
| | | </el-form-item> |
| | | <el-form-item label="法人身份证" prop="idcardImgList"> |
| | | <div style="width: 100%; display: flex; align-items: center;"> |
| | | <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file1" @uploadSuccess="result1" /> |
| | | <div style="width: 15px;height: 100%;"></div> |
| | | <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file2" @uploadSuccess="result2" /> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="电子签章" prop="signImg"> |
| | | <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file3" @uploadSuccess="result3" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-button type="primary" style="margin-bottom: 15px;" @click="add" v-if="form.type !== 1">添加</el-button> |
| | | <el-table |
| | | v-if="form.type !== 1" |
| | | :data="form.solutionList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | label="序号" |
| | | align="center" |
| | | width="80"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="保险方案"> |
| | | <template slot-scope="{row}"> |
| | | <el-select v-model="row.solutionBaseId" placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in programme" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="加减保功能"> |
| | | <template slot-scope="{row}"> |
| | | <el-checkbox :true-label="1" :false-label="0" v-model="row.canAdd">加保</el-checkbox> |
| | | <el-checkbox :true-label="1" :false-label="0" v-model="row.canReduce">减保</el-checkbox> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | align="center" |
| | | width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" style="color: red;" @click="dele(scope.$index)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </GlobalWindow> |
| | | <GlobalAlertWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | width="750px" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" label-width="125px" :rules="rules"> |
| | | <el-form-item label="企业全称" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请输入客户企业全称,不超过30字" v-trim/> |
| | | 企业名称需与工商部门登记信息一致 |
| | | </el-form-item> |
| | | <el-form-item label="客户简称" prop="shortName"> |
| | | <el-input v-model="form.shortName" placeholder="请输入客户简称" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="统一信用代码" prop="creditCode"> |
| | | <el-input v-model="form.creditCode" placeholder="请输入统一信用代码" v-trim/> |
| | | 统一信用代码需与工商部门登记信息一致 |
| | | </el-form-item> |
| | | <el-form-item label="登录账号" prop="managerUserName"> |
| | | <el-input v-model="form.managerUserName" :disabled="!!this.form.id" placeholder="请输入登录账号" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="系统使用有效期" prop="oepnValidDate"> |
| | | <el-date-picker v-model="form.oepnValidDate" value-format="yyyy-MM-dd" :disabled="!!this.form.id" placeholder="请输入系统使用有效期"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="主播数量限制" prop="userNum"> |
| | | <el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="请输入主播数量限制" v-trim/> |
| | | 输入0表示不限制 |
| | | </el-form-item> |
| | | <el-form-item label="销售人员" prop="salesmanId"> |
| | | <!-- <el-input v-model="form.salesmanId" placeholder="请输入销售人员编码" v-trim/> --> |
| | | <el-select v-model="form.salesmanId" clearable placeholder="请选择" filterable > |
| | | <el-option v-for="item in sales" :label="item.realname" :key="item.id" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <div class="more"> |
| | | <div class="more-title">更多设置</div> |
| | | <el-form-item label="联系人" prop="linkname"> |
| | | <el-input v-model="form.linkname" placeholder="请输入联系人" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="联系人电话" prop="linkephone"> |
| | | <el-input v-model="form.linkephone" placeholder="请输入联系人电话" v-trim/> |
| | | </el-form-item> |
| | | </div> |
| | | |
| | | |
| | | |
| | | </el-form> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import UploadAvatarImage from '@/components/common/UploadAvatarImage' |
| | | import { all } from '@/api/business/solutions' |
| | | import { sendSms } from '@/api/business/smsEmail' |
| | | export default { |
| | | name: 'OperaCompanyWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, UploadAvatarImage }, |
| | | data () { |
| | | return { |
| | | // 表单数据 |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | code: '', |
| | | legalName: '', |
| | | taxCode: '', |
| | | taxAccount: '', |
| | | username: '', |
| | | taxBank: '', |
| | | taxAddr: '', |
| | | invoiceEmail: '', |
| | | invoiceAddr: '', |
| | | phone: '', |
| | | email: '', |
| | | captche: '', |
| | | businessImg: { |
| | | fileurl: '', |
| | | name: '' |
| | | }, |
| | | idcardImgList: [], |
| | | signImg: { |
| | | fileurl: '', |
| | | name: '' |
| | | }, |
| | | solutionList: [ |
| | | { |
| | | solutionBaseId: '', |
| | | canAdd: 0, |
| | | canReduce: 0 |
| | | } |
| | | ], |
| | | type: '', |
| | | file: { |
| | | imgurl: '', |
| | | imgurlfull: '' |
| | | }, |
| | | file1: { |
| | | imgurl: '', |
| | | imgurlfull: '' |
| | | }, |
| | | file2: { |
| | | imgurl: '', |
| | | imgurlfull: '' |
| | | }, |
| | | file3: { |
| | | imgurl: '', |
| | | imgurlfull: '' |
| | | }, |
| | | }, |
| | | timer: null, |
| | | num: 0, |
| | | // 验证规则 |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: '请输入公司名称' } |
| | | ], |
| | | code: [ |
| | | { required: true, message: '请输入统一信用代码' } |
| | | ], |
| | | captche: [ |
| | | { required: true, message: '请输入验证码' } |
| | | ], |
| | | legalName: [ |
| | | { required: true, message: '请输入法人姓名' } |
| | | ], |
| | | phone: [ |
| | | { required: true, message: '请输入手机号' } |
| | | ], |
| | | taxAccount: [ |
| | | { required: true, message: '请输入手机号' } |
| | | ], |
| | | email: [ |
| | | { required: true, message: '请输入认证邮箱' } |
| | | ], |
| | | businessImg: [ |
| | | { required: true, message: '请上传营业执照' } |
| | | ], |
| | | idcardImgList: [ |
| | | { required: true, message: '请上传法人身份证' } |
| | | ], |
| | | signImg: [ |
| | | { required: true, message: '请上传电子签章' } |
| | | ], |
| | | username: [ |
| | | { required: true, message: '请输入公司账号' } |
| | | ] |
| | | }, |
| | | |
| | | programme: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/company', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | watch: { |
| | | visible: { |
| | | handler(news) { |
| | | if (news) { |
| | | clearInterval(this.timer) |
| | | this.num = 0 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | send() { |
| | | if (!this.form.phone) { |
| | | this.$message.warning('请输入手机号') |
| | | return |
| | | } |
| | | sendSms({ phone: this.form.phone }) |
| | | .then(res => { |
| | | this.num = 60 |
| | | this.setTime() |
| | | }) |
| | | }, |
| | | setTime() { |
| | | this.timer = setInterval(() => { |
| | | this.num -= 1 |
| | | if (this.num === 0) { |
| | | clearInterval(this.timer) |
| | | this.num = 0 |
| | | } |
| | | }, 1000) |
| | | }, |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.getAll() |
| | | // 新建 |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // 编辑 |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | }, |
| | | // 获取全部方案 |
| | | getAll() { |
| | | all({}) |
| | | .then(res => { |
| | | this.programme = res |
| | | }) |
| | | }, |
| | | dele(index) { |
| | | if (this.form.solutionList.length === 1) { |
| | | this.$message.warning('至少保留一项') |
| | | return |
| | | } |
| | | this.form.solutionList.splice(index, 1) |
| | | }, |
| | | add() { |
| | | this.form.solutionList.push({ |
| | | solutionName: '', |
| | | canAdd: '', |
| | | canReduce: '' |
| | | }) |
| | | }, |
| | | handleRemove(file, fileList) { |
| | | console.log(file, fileList); |
| | | }, |
| | | // 接收营业执照数据 |
| | | result(data) { |
| | | this.form.businessImg = { |
| | | fileurl: '', |
| | | name: '' |
| | | } |
| | | this.form.businessImg.fileurl = data.imgurl |
| | | this.form.businessImg.name = data.name |
| | | }, |
| | | // 身份证照片1 |
| | | result1(data) { |
| | | this.form.idcardImgList[0] = { |
| | | fileurl: '', |
| | | name: '' |
| | | } |
| | | this.form.idcardImgList[0] = { fileurl: data.imgurl, name: data.name } |
| | | }, |
| | | // 身份证照片2 |
| | | result2(data) { |
| | | this.form.idcardImgList[1] = { |
| | | fileurl: '', |
| | | name: '' |
| | | } |
| | | this.form.idcardImgList[1] = { fileurl: data.imgurl, name: data.name } |
| | | }, |
| | | // 电子签章 |
| | | result3(data) { |
| | | this.form.signImg = { |
| | | fileurl: '', |
| | | name: '' |
| | | } |
| | | this.form.signImg.fileurl = data.imgurl |
| | | this.form.signImg.name = data.name |
| | | } |
| | | } |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import { findAllList } from '@/api/system/user' |
| | | import { loginNameRule, creditCode } from '@/utils/form' |
| | | export default { |
| | | name: 'OperaCompanyWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow }, |
| | | data () { |
| | | return { |
| | | // 表单数据 |
| | | form: { |
| | | id: null, |
| | | managerUserName: '', |
| | | name: '', |
| | | shortName: '', |
| | | remark: '', |
| | | managerId: '', |
| | | linkname: '', |
| | | linkephone: '', |
| | | creditCode: '', |
| | | userNum: '5', |
| | | oepnValidDate: '', |
| | | salesmanId: '' |
| | | }, |
| | | sales: [], |
| | | // 验证规则 |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: '请输入客户企业全称', tigger: 'blur'} |
| | | ], |
| | | managerUserName: [ |
| | | { required: true, validator: loginNameRule, message: '请输入登录账号', tigger: 'blur'} |
| | | ], |
| | | creditCode: [ |
| | | { validator: creditCode, trigger: 'blur' } |
| | | ], |
| | | openUserNum: [ |
| | | { pattern: /^[0-9]+$/, message: '只可以输入数字', trigger: 'change' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/company', |
| | | 'field.id': 'id' |
| | | }) |
| | | findAllList({ type: 0 }) |
| | | .then(res => { |
| | | this.sales = res |
| | | }) |
| | | }, |
| | | methods: { |
| | | open(title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | // 新建 |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | let data = new Date(new Date().getTime() + 31536000000) |
| | | this.form.oepnValidDate = `${data.getFullYear()}-${data.getMonth() +1}-${data.getDate()}` |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // 编辑 |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | this.form.multifileList.forEach(item => { |
| | | item.url = item.filefullurl |
| | | }) |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .more { |
| | | margin-top: 40px; |
| | | |
| | | .more-title { |
| | | font-weight: 600; |
| | | font-size: 18px; |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | ::v-deep .el-input { |
| | | width: 300px; |
| | | margin-right: 10px; |
| | | } |
| | | </style> |