MrShi
2024-01-31 938c6104cada47e87b32e954095b0ca5af93e753
company/src/components/business/OperaCompanyWindow.vue
@@ -13,26 +13,30 @@
            <el-form-item label="统一信用代码" prop="code">
                <el-input v-model="form.code" placeholder="请输入" v-trim/>
            </el-form-item>
            <el-form-item label="绑定手机号" prop="phone">
            <el-form-item label="法人姓名" prop="legalName">
                <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" style="flex: 1;" placeholder="请输入" v-trim/>
                    <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;">发送验证码</el-button>
                    <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="code">
                <el-input v-model="form.code" placeholder="请输入" v-trim/>
            <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="taxAccount">
                <el-input v-model="form.taxAccount" placeholder="请输入" v-trim/>
            <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">
            <el-form-item label="认证邮箱" prop="email" >
                <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="taxBank">
                <el-input v-model="form.taxBank" placeholder="请输入" v-trim/>
            <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/>
@@ -46,34 +50,24 @@
            <el-form-item label="纸质发票接收地址" prop="invoiceAddr">
                <el-input v-model="form.invoiceAddr" placeholder="请输入" v-trim/>
            </el-form-item>
            <el-form-item label="营业执照" prop="invoiceAddr">
                <el-upload
                    action="https://jsonplaceholder.typicode.com/posts/"
                    list-type="picture-card"
                    :on-remove="handleRemove">
                    <i class="el-icon-plus"></i>
                </el-upload>
            <el-form-item label="营业执照" prop="businessImg">
                <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file" @uploadSuccess="result" />
            </el-form-item>
            <el-form-item label="法人身份证" prop="invoiceAddr">
                <el-upload
                    action="https://jsonplaceholder.typicode.com/posts/"
                    list-type="picture-card"
                    :on-remove="handleRemove">
                    <i class="el-icon-plus"></i>
                </el-upload>
            <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="invoiceAddr">
                <el-upload
                    action="https://jsonplaceholder.typicode.com/posts/"
                    list-type="picture-card"
                    :on-remove="handleRemove">
                    <i class="el-icon-plus"></i>
                </el-upload>
            <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;">添加</el-button>
        <el-button type="primary" style="margin-bottom: 15px;" @click="add" v-if="form.type !== 1">添加</el-button>
        <el-table
            :data="tableData"
            v-if="form.type !== 1"
            :data="form.solutionList"
            border
            style="width: 100%">
            <el-table-column
@@ -88,12 +82,12 @@
                align="center"
                label="保险方案">
                <template slot-scope="{row}">
                    <el-select v-model="row.info" placeholder="请选择">
                    <el-select v-model="row.solutionBaseId" placeholder="请选择">
                        <el-option
                            v-for="item in options"
                            :key="item.value"
                            :label="item.label"
                            :value="item.value">
                            v-for="item in programme"
                            :key="item.id"
                            :label="item.name"
                            :value="item.id">
                        </el-option>
                    </el-select>
                </template>
@@ -102,10 +96,8 @@
                align="center"
                label="加减保功能">
                <template slot-scope="{row}">
                    <el-checkbox-group v-model="row.type">
                        <el-checkbox label="1">加保</el-checkbox>
                        <el-checkbox label="2">减保</el-checkbox>
                    </el-checkbox-group>
                    <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
@@ -113,7 +105,7 @@
                align="center"
                width="100">
                <template slot-scope="scope">
                    <el-button type="text" size="small" style="color: red;">删除</el-button>
                    <el-button type="text" size="small" style="color: red;" @click="dele(scope.$index)">删除</el-button>
                </template>
            </el-table-column>
        </el-table>
@@ -124,6 +116,8 @@
    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,
@@ -135,23 +129,91 @@
                    id: null,
                    name: '',
                    code: '',
                    legalName: '',
                    taxCode: '',
                    taxAccount: '',
                    username: '',
                    taxBank: '',
                    taxAddr: '',
                    invoiceEmail: '',
                    invoiceAddr: '',
                    phone: '',
                    email: ''
                    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: '请输入公司账号' }
                    ]
                },
                options: [],
                tableData: [{
                    type: [],
                    info: ''
                }]
                programme: []
            }
        },
        created () {
@@ -160,9 +222,113 @@
                '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
            }
        }
    }