MrShi
2024-03-08 d2bc6e096f0806b78ea92d4b90a21d3627d406c7
company/src/components/business/OperaCompanyWindow.vue
@@ -1,7 +1,7 @@
<template>
    <GlobalWindow
        :title="title"
        width="50%"
        width="60%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
@@ -13,10 +13,10 @@
            <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-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">
            <el-form-item label="绑定手机号" prop="phone" v-if="!form.id">
                <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>
@@ -29,7 +29,7 @@
            <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-form-item label="认证邮箱" prop="email" >
                <el-input v-model="form.email" placeholder="请输入" v-trim/>
            </el-form-item>
            <el-form-item label="纳税人识别号" prop="taxCode">
@@ -51,18 +51,22 @@
                <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" />
                <div style="width: 100%; height: 100px; display: flex; align-items: center;">
                    <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file" @uploadSuccess="result" />
                </div>
            </el-form-item>
            <el-form-item label="法人身份证" prop="idcardImgList">
            <el-form-item label="法人身份证" prop="idcardImgList"  style="height: 120px">
                <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-item label="电子签章" prop="signImg">-->
<!--                <div style="width: 100%; height: 100px; display: flex; align-items: center;">-->
<!--                    <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file3" @uploadSuccess="result3" />-->
<!--                </div>-->
<!--            </el-form-item>-->
        </el-form>
        <el-button type="primary" style="margin-bottom: 15px;" @click="add" v-if="form.type !== 1">添加</el-button>
        <el-table
@@ -81,15 +85,15 @@
            <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 slot-scope="scope">
                  <el-select  v-model="scope.row.solution"  value-key="id" placeholder="请选择" change="changeSolution($event,scope.$index)">
                    <el-option
                        v-for="item in programme"
                        :key="item.id"
                        :label="item.name"
                        :value="item">
                    </el-option>
                  </el-select>
                </template>
            </el-table-column>
            <el-table-column
@@ -113,223 +117,230 @@
</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: '请输入公司账号' }
                    ]
                },
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 {
      // 表单数据
      initParam:{
        id: null,
        name: '',
        code: '',
        legalName: '',
        taxCode: '',
        taxAccount: '',
        username: '',
        taxBank: '',
        taxAddr: '',
        invoiceEmail: '',
        invoiceAddr: '',
        phone: '',
        email: '',
        captche: '',
        businessImg: {
          fileurl: '',
          name: ''
        },
        idcardImgList: [],
        signImg: {
          fileurl: '',
          name: ''
        },
        solutionList: [
          {
            solution: null,
            canAdd: 0,
            canReduce: 0
          }
        ],
        type: '0',
        file: {
          imgurl: '',
          imgurlfull: ''
        },
        file1: {
          imgurl: '',
          imgurlfull: ''
        },
        file2: {
          imgurl: '',
          imgurlfull: ''
        },
        file3: {
          imgurl: '',
          imgurlfull: ''
        },
      },
      form: {},
      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
            }
        }
      programme: []
    }
  },
  created () {
    this.config({
      api: '/business/company',
      'field.id': 'id'
    })
  },
  watch: {
    visible: {
      handler (news) {
        if (news) {
          clearInterval(this.timer)
          this.num = 0
        }
      }
    }
  },
  methods: {
    changeSolution(row,index){
     this.form.solutionList[index].solution=row
   //   console.log(this.form.solutionList)
    },
    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,type) {
      this.title = title
      this.visible = true
      this.form = this.initParam
      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({
        solutionId:null,
        solution: {},
        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
    }
  }
}
</script>